From adfbb74699ebb75b2ad2cbd3620239dbe809257b Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Mon, 18 Aug 2025 09:45:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4sql=E5=92=8Cmd=E6=96=87?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E5=87=8F=E8=BD=BB=E5=B9=B2=E6=89=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../script/sql/CHANGELOG-学生数据导入脚本.md | 130 - backend/script/sql/add-head-teacher-role.sql | 48 - backend/script/sql/class-basic-data.sql | 115 - backend/script/sql/create-missing-tables.sql | 150 - .../cw-budget-approval-menu-fixed-path.sql | 77 - .../sql/cw-budget-approval-menu-fixed.sql | 99 - .../script/sql/cw-budget-approval-menu.sql | 92 - .../sql/fix-college-vs-collage-fields.sql | 100 - .../sql/fix-enrollment-college-fields.sql | 78 - .../script/sql/fix-enrollment-dict-data.sql | 56 - ...x-zsjy-graduate-info-create-dept-field.sql | 12 - backend/script/sql/fix_all_graduate_dicts.sql | 85 - .../script/sql/fix_education_level_dict.sql | 39 - .../sql/fix_graduate_menu_structure.sql | 84 - backend/script/sql/import-student-data.sh | 96 - .../sql/insert-zsjy-major-dict-data.sql | 27 - .../scholarship-review-menu-permissions.sql | 75 - backend/script/sql/test-import.sh | 79 - backend/script/sql/xg-dict-data.sql | 35 - backend/script/sql/xg_dorm_manager.sql | 29 - .../script/sql/zsjy-enrollment-dict-data.sql | 75 - .../script/sql/zsjy_graduate_dict_data.sql | 61 - backend/script/sql/zsjy_graduate_info.sql | 129 - .../script/sql/zsjy_graduate_info_menu.sql | 60 - backend/sql/add_create_dept.sql | 1 - backend/sql/add_create_dept_field.sql | 6 - .../sql/add_family_economy_summary_field.sql | 41 - ...add_missing_fields_to_scholarship_type.sql | 28 - backend/sql/database_fix_assistance_types.sql | 21 - .../database_fix_jcbt_poverty_application.sql | 189 - ..._fix_jcbt_poverty_application_complete.sql | 98 - backend/sql/database_fix_teacher_name.sql | 131 - .../sql/database_fix_teacher_name_field.sql | 75 - backend/sql/debug_compatibility_type.sql | 30 - backend/sql/debug_quota_delete_issue.sql | 134 - backend/sql/diagnose_quota_display_issue.sql | 249 - .../diagnose_quota_display_issue_correct.sql | 245 - ...diagnose_quota_display_issue_corrected.sql | 353 - .../diagnose_quota_display_issue_final.sql | 306 - backend/sql/fix_audit_field_names.sql | 45 - backend/sql/fix_compatibility_create_dept.sql | 36 - backend/sql/fix_compatibility_type_field.sql | 56 - ...bt_scholarship_application_create_dept.sql | 33 - .../sql/fix_poverty_application_status.sql | 27 - backend/sql/fix_quota_unique_constraint.sql | 101 - .../fix_work_study_position_create_dept.sql | 20 - backend/sql/insert_test_data_simple.sql | 71 - backend/sql/jcbt_poverty_application_menu.sql | 119 - .../sql/jcbt_poverty_application_table.sql | 311 - ...holarship_application_menu_permissions.sql | 141 - backend/sql/jcbt_scholarship_management.sql | 42 - .../sql/jcbt_scholarship_quota_management.sql | 98 - ...cbt_scholarship_quota_menu_permissions.sql | 134 - backend/sql/scholarship_test_data.sql | 224 - backend/sql/test_assistance_types_fix.sql | 43 - backend/sql/test_audit_fields_fix.sql | 35 - backend/sql/test_fix_result.sql | 52 - backend/sql/test_missing_fields_fix.sql | 105 - backend/sql/test_scholarship_basic_data.sql | 131 - backend/sql/test_work_study_data.sql | 95 - backend/sql/wechat_config_init.sql | 246 - backend/sql/勤工俭学字典数据.sql | 92 - backend/sql/勤工俭学完整字典数据.sql | 211 - backend/sql/勤工俭学数据库建表脚本.sql | 269 - backend/sql/勤工俭学测试数据.sql | 193 - docs/add_create_dept.sql | 1 - docs/debug_compatibility_type.sql | 30 - docs/fix_compatibility_create_dept.sql | 36 - docs/quota_diagnosis_results.txt | 37 - ...code-adjust-record-2025-01-27-assistant.md | 326 - .../code-adjust-record-2025-01-27-cursor.md | 9433 ----------------- ...ode-adjust-record-2025-01-27-statistics.md | 231 - .../code-adjust-record-2025-01-27-wuzhen.md | 582 - .../code-adjust-record-2025-01-28-wuzhen.md | 79 - docs/开发文档/招生统计菜单.sql | 27 - docs/数据库优化/假期留宿状态过滤索引优化.sql | 238 - .../maintenance-category-e2e.js | 690 -- .../test-data/category-test-data.json | 318 - docs/设计文档/database/01-workflow-module.sql | 237 - .../database/02-code-generator-module.sql | 81 - .../设计文档/database/03-logistics-module.sql | 320 - .../database/04-job-scheduler-module.sql | 286 - .../database/05-system-management-module.sql | 539 - docs/设计文档/database/06-test-module.sql | 62 - .../07-property-maintenance-module.sql | 426 - .../08-property-maintenance-table-rename.sql | 166 - .../database/09-overseas-application-menu.sql | 155 - .../09-overseas-application-module.sql | 131 - .../database/alter-rs-application-table.sql | 7 - docs/设计文档/database/alter-rs-job-table.sql | 2 - .../batch-type-association-2025-01-27.md | 133 - .../code-adjust-record-2024-12-19-cursor.md | 231 - ...code-adjust-record-2025-01-01-assistant.md | 68 - .../code-adjust-record-2025-01-01-wuzhen.md | 165 - .../code-adjust-record-2025-01-07-cursor.md | 186 - .../code-adjust-record-2025-01-07-wuzhen.md | 216 - ...ord-2025-01-26-cursor-form-improvements.md | 1 - ...d-2025-01-26-cursor-poverty-class-first.md | 1 - ...ord-2025-01-26-cursor-poverty-index-fix.md | 1 - .../code-adjust-record-2025-01-26-cursor.md | 1 - ...ecord-2025-01-26-奖学金申请列表显示修复.md | 210 - ...just-record-2025-01-27-batch-management.md | 240 - ...cord-2025-01-27-fix-batch-apply-display.md | 140 - ...025-01-27-fix-quota-batch-type-relation.md | 244 - ...just-record-2025-01-27-fix-quota-fields.md | 220 - ...adjust-record-2025-01-27-frontend-batch.md | 247 - .../code-adjust-record-2025-01-27-frontend.md | 253 - ...rd-2025-01-27-hide-auto-allocate-button.md | 113 - ...e-adjust-record-2025-01-27-quota-module.md | 300 - ...rd-2025-01-27-scholarship-compatibility.md | 193 - ...cholarship-quota-display-implementation.md | 413 - ...rd-2025-01-27-scholarship-quota-display.md | 245 - .../code-adjust-record-2025-01-27-system.md | 183 - ...adjust-record-2025-01-27-ui-enhancement.md | 219 - ...rd-2025-01-28-fix-scholarship-quota-log.md | 1 - ...st-record-2025-08-04-missing-fields-fix.md | 286 - ...4-scholarship-compatibility-display-fix.md | 514 - ...djust-record-2025-08-05-API对接准备就绪.md | 186 - ...d-2025-08-05-scholarship-add-button-fix.md | 214 - ...-08-05-scholarship-application-redesign.md | 205 - ...-08-05-scholarship-batch-apply-redesign.md | 347 - ...-2025-08-05-scholarship-edit-button-fix.md | 121 - ...-record-2025-08-05-scholarship-edit-fix.md | 156 - ...d-2025-08-05-scholarship-quota-frontend.md | 266 - .../code-adjust-record-2025-08-05-wuzhen.md | 170 - ...st-record-2025-08-05-奖学金申请重构完成.md | 229 - ...ecord-2025-08-05-奖学金申请重构状态总结.md | 174 - ...adjust-record-2025-08-06-fix-class-info.md | 187 - ...record-2025-08-06-fix-scholarship-types.md | 154 - .../code-adjust-record-2025-08-07-wuzhen.md | 92 - .../code-adjust-record-2025-08-08-wuzhen.md | 112 - docs/设计文档/database/menu-fix-duplicate.sql | 442 - docs/设计文档/database/menu_fix_script.sql | 30 - docs/设计文档/database/rs-dictionary.sql | 33 - docs/设计文档/database/rs-menu-merged.sql | 186 - .../设计文档/database/rs-menu-mysql-fixed.sql | 174 - docs/设计文档/database/rs-menu-mysql.sql | 102 - docs/设计文档/database/rs-menu.sql | 101 - docs/设计文档/database/rs-recruitment.sql | 105 - .../rs-role-permissions-mysql-fixed.sql | 166 - .../rs-role-permissions-mysql-fixed2.sql | 166 - .../database/rs-role-permissions-mysql.sql | 170 - .../设计文档/database/rs-role-permissions.sql | 169 - ...larship-database-model-check-2025-08-05.md | 182 - ...student-info-management-menu-structure.sql | 1 - .../database/zsjy-menu-permissions.sql | 200 - .../database/勤工俭学数据库建表完成报告.md | 186 - .../设计文档/database/勤工俭学数据模型设计.md | 390 - .../database/后勤管理/03-logistics-module.sql | 320 - .../后勤管理/04-hq-sat-survey-job.sql | 41 - .../后勤管理/04-venue-reservation-data.sql | 36 - .../04-venue-reservation-menu-fix.sql | 1 - .../后勤管理/04-venue-reservation-menu.sql | 75 - .../后勤管理/04-venue-reservation-module.sql | 207 - .../07-property-maintenance-module.sql | 426 - .../08-property-maintenance-table-rename.sql | 166 - .../后勤管理/add-college-fields-mysql.sql | 19 - .../add-college-fields-to-enrollment.sql | 20 - .../后勤管理/hall-audit-permission.sql | 36 - .../patch_2025-07-11_hq_hall_info_deleted.sql | 16 - ..._2025-07-11_hq_pm_repair_order_deleted.sql | 16 - .../后勤管理/venue-menu-component-fix-v2.sql | 1 - .../后勤管理/venue-menu-component-fix.sql | 1 - .../database/后勤管理/venue-menu-icon-fix.sql | 1 - .../后勤管理/venue-menu-structure-update.sql | 1 - .../database/奖学金v2.0数据字典配置.sql | 75 - .../database/奖学金申请列表数据修复脚本.sql | 64 - .../database/奖学金申请数据检查脚本.sql | 70 - ...学金申请管理v2.0数据库升级脚本-修复版.sql | 423 - .../奖学金申请管理v2.0数据库升级脚本.sql | 273 - .../01-batch-table-enhancement.sql | 26 - .../02-batch-student-relation.sql | 47 - .../02-code-generator-module.sql | 81 - .../03-batch-log-table.sql | 31 - .../04-job-scheduler-module.sql | 286 - .../05-system-management-module.sql | 539 - .../06-data-migration-phase1.sql | 336 - .../学工管理-学生信息管理/06-test-module.sql | 62 - .../07-permission-data-migration.sql | 262 - .../09-student-management-dict.sql | 138 - .../09-student-management-menu.sql | 165 - .../11-class-cadre-management.sql | 382 - .../12-class-cadre-management-menu.sql | 123 - .../17-add-student-dict-data.sql | 172 - .../19-college-major-tables.sql | 334 - .../20-college-major-dict-solution.sql | 208 - .../21-create-college-major-simple.sql | 254 - .../22-class-cadre-dict-tables-README.md | 294 - .../execute-data-migration.sql | 283 - .../init-statistics-analysis-data.sql | 360 - .../menu-fix-duplicate.sql | 1 - .../verify-migration.sql | 477 - .../xg-student-management-dict-fixed.sql | 178 - .../xg-student-management-dict.sql | 258 - .../xg-student-management-menu.sql | 181 - .../22-class-cadre-dict-tables 班级职务表.sql | 103 - .../xg_class_msg 班级信息表.sql | 98 - ...r_counselor_rel 班级班主任辅导员关联表.sql | 51 - .../xg_student_manager 学生管理员信息表.sql | 46 - ...nt_manager_source 学生管理员授权关系表.sql | 44 - .../xg_student_msg 学生信息表.sql | 150 - .../学生信息收集批次管理表设计.sql | 61 - ...r_counselor_rel 班级班主任辅导员关联表.sql | 55 - .../学工管理-宿舍管理/xg_holiday_stay.sql | 105 - .../xg_holiday_stay_dict_data.sql | 40 - .../xg_holiday_stay_sample_data.sql | 259 - .../宿舍卫生检查数据库建表脚本.sql | 187 - .../宿舍卫生检查设计验证清单.md | 210 - .../宿舍管理数据库建表脚本.sql | 274 - .../宿舍违纪管理数据字典配置.sql | 65 - .../宿舍违纪管理数据库建表脚本.sql | 96 - .../宿舍违纪管理数据模型设计.md | 363 - .../学工管理-宿舍管理/菜单授权列表.sql | 60 - .../学生请假/xg_leave_type_config.sql | 48 - .../database/学生请假/xg_student_leave.sql | 101 - .../学生请假/xg_student_leave_sample_data.sql | 91 - .../database/工作流/01-workflow-module.sql | 237 - .../database/心理健康测评/upload/README.md | 56 - .../心理健康测评/upload/table_schemas.txt | 4 - .../心理健康测评/upload/xljk_complete.sql | 108 - .../心理健康测评/upload/xljk_data.sql | 74 - .../upload/xljk_evaluation_tables.sql | 142 - .../心理健康测评/upload/xljk_tables.sql | 70 - .../心理健康测评/upload/导入完成报告.md | 72 - .../database/心理健康测评/upload/导入说明.md | 48 - .../xljk_add_department_fields.sql | 27 - .../database/心理健康测评/xljk_evaluation.sql | 81 - .../心理健康测评/xljk_field_update.sql | 26 - .../心理健康测评/xljk_menu_config.sql | 90 - .../心理咨询预约/add_batch_id_column.sql | 2 - .../心理咨询预约/add_detail_time_column.sql | 2 - .../cleanup_consultation_tables.sql | 26 - .../心理咨询预约/consultation_dict_data.sql | 29 - .../consultation_menu_permission.sql | 59 - .../consultation_role_permission.sql | 45 - .../心理咨询预约/fix_appointment_table.sql | 38 - .../database/心理咨询预约/fix_dict_data.sql | 29 - .../心理咨询预约/fix_schedule_table.sql | 42 - .../update_consultation_tables.sql | 46 - .../心理咨询预约/update_menu_permissions.sql | 86 - .../xljk_consultation_data_model.sql | 100 - .../database/心理咨询预约/预约限制功能设计.md | 515 - .../招生就业/zsjy_enterprise_dict.sql | 48 - .../招生就业/zsjy_enterprise_menu.sql | 54 - .../招生就业/zsjy_enterprise_tables.sql | 74 - .../database/招生迎新/create-test-users.sql | 178 - .../updates/v_enrollment_process_combined.sql | 85 - .../database/招生迎新/zsjy-dict-config.sql | 29 - .../zsjy-enrollment-database-core.sql | 405 - .../招生迎新/zsjy-enrollment-database.sql | 572 - .../招生迎新/zsjy-menu-permissions-fixed.sql | 319 - .../招生迎新/zsjy-menu-permissions.sql | 798 -- .../招生迎新/新生录取流程菜单权限.sql | 53 - docs/设计文档/database/招生迎新数据库设计.md | 537 - .../database/新生录取管理菜单权限.sql | 55 - .../database/班主任考核管理/README.md | 183 + .../bzr_assessment_sample_data.sql | 121 + .../班主任考核管理/bzr_assessment_tables.sql | 487 + .../班主任考核管理系统设计说明.md | 364 + .../database/财务项目预算审批数据模型设计.md | 670 -- .../奖学金管理基础数据-兼得关系增强-增量.sql | 138 - ...奖学金管理基础数据-兼得关系增强-安全版.sql | 107 - .../奖学金管理基础数据-兼得关系增强.sql | 134 - .../奖惩补贴需求/奖学金管理基础数据.sql | 212 - .../奖惩补贴需求/奖学金管理建表脚本.sql | 366 - 本地prompt/前端提示词模板-勤工俭学岗位申请.md | 208 - 266 files changed, 1155 insertions(+), 48917 deletions(-) delete mode 100644 backend/script/sql/CHANGELOG-学生数据导入脚本.md delete mode 100644 backend/script/sql/add-head-teacher-role.sql delete mode 100644 backend/script/sql/class-basic-data.sql delete mode 100644 backend/script/sql/create-missing-tables.sql delete mode 100644 backend/script/sql/cw-budget-approval-menu-fixed-path.sql delete mode 100644 backend/script/sql/cw-budget-approval-menu-fixed.sql delete mode 100644 backend/script/sql/cw-budget-approval-menu.sql delete mode 100644 backend/script/sql/fix-college-vs-collage-fields.sql delete mode 100644 backend/script/sql/fix-enrollment-college-fields.sql delete mode 100644 backend/script/sql/fix-enrollment-dict-data.sql delete mode 100644 backend/script/sql/fix-zsjy-graduate-info-create-dept-field.sql delete mode 100644 backend/script/sql/fix_all_graduate_dicts.sql delete mode 100644 backend/script/sql/fix_education_level_dict.sql delete mode 100644 backend/script/sql/fix_graduate_menu_structure.sql delete mode 100755 backend/script/sql/import-student-data.sh delete mode 100644 backend/script/sql/insert-zsjy-major-dict-data.sql delete mode 100644 backend/script/sql/scholarship-review-menu-permissions.sql delete mode 100755 backend/script/sql/test-import.sh delete mode 100644 backend/script/sql/xg-dict-data.sql delete mode 100644 backend/script/sql/xg_dorm_manager.sql delete mode 100644 backend/script/sql/zsjy-enrollment-dict-data.sql delete mode 100644 backend/script/sql/zsjy_graduate_dict_data.sql delete mode 100644 backend/script/sql/zsjy_graduate_info.sql delete mode 100644 backend/script/sql/zsjy_graduate_info_menu.sql delete mode 100644 backend/sql/add_create_dept.sql delete mode 100644 backend/sql/add_create_dept_field.sql delete mode 100644 backend/sql/add_family_economy_summary_field.sql delete mode 100644 backend/sql/add_missing_fields_to_scholarship_type.sql delete mode 100644 backend/sql/database_fix_assistance_types.sql delete mode 100644 backend/sql/database_fix_jcbt_poverty_application.sql delete mode 100644 backend/sql/database_fix_jcbt_poverty_application_complete.sql delete mode 100644 backend/sql/database_fix_teacher_name.sql delete mode 100644 backend/sql/database_fix_teacher_name_field.sql delete mode 100644 backend/sql/debug_compatibility_type.sql delete mode 100644 backend/sql/debug_quota_delete_issue.sql delete mode 100644 backend/sql/diagnose_quota_display_issue.sql delete mode 100644 backend/sql/diagnose_quota_display_issue_correct.sql delete mode 100644 backend/sql/diagnose_quota_display_issue_corrected.sql delete mode 100644 backend/sql/diagnose_quota_display_issue_final.sql delete mode 100644 backend/sql/fix_audit_field_names.sql delete mode 100644 backend/sql/fix_compatibility_create_dept.sql delete mode 100644 backend/sql/fix_compatibility_type_field.sql delete mode 100644 backend/sql/fix_jcbt_scholarship_application_create_dept.sql delete mode 100644 backend/sql/fix_poverty_application_status.sql delete mode 100644 backend/sql/fix_quota_unique_constraint.sql delete mode 100644 backend/sql/fix_work_study_position_create_dept.sql delete mode 100644 backend/sql/insert_test_data_simple.sql delete mode 100644 backend/sql/jcbt_poverty_application_menu.sql delete mode 100644 backend/sql/jcbt_poverty_application_table.sql delete mode 100644 backend/sql/jcbt_scholarship_application_menu_permissions.sql delete mode 100644 backend/sql/jcbt_scholarship_management.sql delete mode 100644 backend/sql/jcbt_scholarship_quota_management.sql delete mode 100644 backend/sql/jcbt_scholarship_quota_menu_permissions.sql delete mode 100644 backend/sql/scholarship_test_data.sql delete mode 100644 backend/sql/test_assistance_types_fix.sql delete mode 100644 backend/sql/test_audit_fields_fix.sql delete mode 100644 backend/sql/test_fix_result.sql delete mode 100644 backend/sql/test_missing_fields_fix.sql delete mode 100644 backend/sql/test_scholarship_basic_data.sql delete mode 100644 backend/sql/test_work_study_data.sql delete mode 100644 backend/sql/wechat_config_init.sql delete mode 100644 backend/sql/勤工俭学字典数据.sql delete mode 100644 backend/sql/勤工俭学完整字典数据.sql delete mode 100644 backend/sql/勤工俭学数据库建表脚本.sql delete mode 100644 backend/sql/勤工俭学测试数据.sql delete mode 100644 docs/add_create_dept.sql delete mode 100644 docs/debug_compatibility_type.sql delete mode 100644 docs/fix_compatibility_create_dept.sql delete mode 100644 docs/quota_diagnosis_results.txt delete mode 100644 docs/变更管理/code-adjust-record-2025-01-27-assistant.md delete mode 100644 docs/变更管理/code-adjust-record-2025-01-27-cursor.md delete mode 100644 docs/变更管理/code-adjust-record-2025-01-27-statistics.md delete mode 100644 docs/变更管理/code-adjust-record-2025-01-27-wuzhen.md delete mode 100644 docs/变更管理/code-adjust-record-2025-01-28-wuzhen.md delete mode 100644 docs/开发文档/招生统计菜单.sql delete mode 100644 docs/数据库优化/假期留宿状态过滤索引优化.sql delete mode 100644 docs/测试文档/后勤管理/物业管理/维修分类/playwright-scripts/maintenance-category-e2e.js delete mode 100644 docs/测试文档/后勤管理/物业管理/维修分类/test-data/category-test-data.json delete mode 100644 docs/设计文档/database/01-workflow-module.sql delete mode 100644 docs/设计文档/database/02-code-generator-module.sql delete mode 100644 docs/设计文档/database/03-logistics-module.sql delete mode 100644 docs/设计文档/database/04-job-scheduler-module.sql delete mode 100644 docs/设计文档/database/05-system-management-module.sql delete mode 100644 docs/设计文档/database/06-test-module.sql delete mode 100644 docs/设计文档/database/07-property-maintenance-module.sql delete mode 100644 docs/设计文档/database/08-property-maintenance-table-rename.sql delete mode 100644 docs/设计文档/database/09-overseas-application-menu.sql delete mode 100644 docs/设计文档/database/09-overseas-application-module.sql delete mode 100644 docs/设计文档/database/alter-rs-application-table.sql delete mode 100644 docs/设计文档/database/alter-rs-job-table.sql delete mode 100644 docs/设计文档/database/batch-type-association-2025-01-27.md delete mode 100644 docs/设计文档/database/code-adjust-record-2024-12-19-cursor.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-01-01-assistant.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-01-01-wuzhen.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-01-07-cursor.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-01-07-wuzhen.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-01-26-cursor-form-improvements.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-01-26-cursor-poverty-class-first.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-01-26-cursor-poverty-index-fix.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-01-26-cursor.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-01-26-奖学金申请列表显示修复.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-01-27-batch-management.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-01-27-fix-batch-apply-display.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-01-27-fix-quota-batch-type-relation.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-01-27-fix-quota-fields.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-01-27-frontend-batch.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-01-27-frontend.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-01-27-hide-auto-allocate-button.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-01-27-quota-module.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-01-27-scholarship-compatibility.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-01-27-scholarship-quota-display-implementation.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-01-27-scholarship-quota-display.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-01-27-system.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-01-27-ui-enhancement.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-01-28-fix-scholarship-quota-log.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-08-04-missing-fields-fix.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-08-04-scholarship-compatibility-display-fix.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-08-05-API对接准备就绪.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-08-05-scholarship-add-button-fix.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-08-05-scholarship-application-redesign.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-08-05-scholarship-batch-apply-redesign.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-08-05-scholarship-edit-button-fix.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-08-05-scholarship-edit-fix.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-08-05-scholarship-quota-frontend.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-08-05-wuzhen.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-08-05-奖学金申请重构完成.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-08-05-奖学金申请重构状态总结.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-08-06-fix-class-info.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-08-06-fix-scholarship-types.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-08-07-wuzhen.md delete mode 100644 docs/设计文档/database/code-adjust-record-2025-08-08-wuzhen.md delete mode 100644 docs/设计文档/database/menu-fix-duplicate.sql delete mode 100644 docs/设计文档/database/menu_fix_script.sql delete mode 100644 docs/设计文档/database/rs-dictionary.sql delete mode 100644 docs/设计文档/database/rs-menu-merged.sql delete mode 100644 docs/设计文档/database/rs-menu-mysql-fixed.sql delete mode 100644 docs/设计文档/database/rs-menu-mysql.sql delete mode 100644 docs/设计文档/database/rs-menu.sql delete mode 100644 docs/设计文档/database/rs-recruitment.sql delete mode 100644 docs/设计文档/database/rs-role-permissions-mysql-fixed.sql delete mode 100644 docs/设计文档/database/rs-role-permissions-mysql-fixed2.sql delete mode 100644 docs/设计文档/database/rs-role-permissions-mysql.sql delete mode 100644 docs/设计文档/database/rs-role-permissions.sql delete mode 100644 docs/设计文档/database/scholarship-database-model-check-2025-08-05.md delete mode 100644 docs/设计文档/database/student-info-management-menu-structure.sql delete mode 100644 docs/设计文档/database/zsjy-menu-permissions.sql delete mode 100644 docs/设计文档/database/勤工俭学数据库建表完成报告.md delete mode 100644 docs/设计文档/database/勤工俭学数据模型设计.md delete mode 100644 docs/设计文档/database/后勤管理/03-logistics-module.sql delete mode 100644 docs/设计文档/database/后勤管理/04-hq-sat-survey-job.sql delete mode 100644 docs/设计文档/database/后勤管理/04-venue-reservation-data.sql delete mode 100644 docs/设计文档/database/后勤管理/04-venue-reservation-menu-fix.sql delete mode 100644 docs/设计文档/database/后勤管理/04-venue-reservation-menu.sql delete mode 100644 docs/设计文档/database/后勤管理/04-venue-reservation-module.sql delete mode 100644 docs/设计文档/database/后勤管理/07-property-maintenance-module.sql delete mode 100644 docs/设计文档/database/后勤管理/08-property-maintenance-table-rename.sql delete mode 100644 docs/设计文档/database/后勤管理/add-college-fields-mysql.sql delete mode 100644 docs/设计文档/database/后勤管理/add-college-fields-to-enrollment.sql delete mode 100644 docs/设计文档/database/后勤管理/hall-audit-permission.sql delete mode 100644 docs/设计文档/database/后勤管理/patch_2025-07-11_hq_hall_info_deleted.sql delete mode 100644 docs/设计文档/database/后勤管理/patch_2025-07-11_hq_pm_repair_order_deleted.sql delete mode 100644 docs/设计文档/database/后勤管理/venue-menu-component-fix-v2.sql delete mode 100644 docs/设计文档/database/后勤管理/venue-menu-component-fix.sql delete mode 100644 docs/设计文档/database/后勤管理/venue-menu-icon-fix.sql delete mode 100644 docs/设计文档/database/后勤管理/venue-menu-structure-update.sql delete mode 100644 docs/设计文档/database/奖学金v2.0数据字典配置.sql delete mode 100644 docs/设计文档/database/奖学金申请列表数据修复脚本.sql delete mode 100644 docs/设计文档/database/奖学金申请数据检查脚本.sql delete mode 100644 docs/设计文档/database/奖学金申请管理v2.0数据库升级脚本-修复版.sql delete mode 100644 docs/设计文档/database/奖学金申请管理v2.0数据库升级脚本.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/01-batch-table-enhancement.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/02-batch-student-relation.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/02-code-generator-module.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/03-batch-log-table.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/04-job-scheduler-module.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/05-system-management-module.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/06-data-migration-phase1.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/06-test-module.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/07-permission-data-migration.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/09-student-management-dict.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/09-student-management-menu.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/11-class-cadre-management.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/12-class-cadre-management-menu.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/17-add-student-dict-data.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/19-college-major-tables.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/20-college-major-dict-solution.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/21-create-college-major-simple.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/22-class-cadre-dict-tables-README.md delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/execute-data-migration.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/init-statistics-analysis-data.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/menu-fix-duplicate.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/verify-migration.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/xg-student-management-dict-fixed.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/xg-student-management-dict.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理/xg-student-management-menu.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理新版/22-class-cadre-dict-tables 班级职务表.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理新版/xg_class_msg 班级信息表.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理新版/xg_class_teacher_counselor_rel 班级班主任辅导员关联表.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理新版/xg_student_manager 学生管理员信息表.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理新版/xg_student_manager_source 学生管理员授权关系表.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理新版/xg_student_msg 学生信息表.sql delete mode 100644 docs/设计文档/database/学工管理-学生信息管理新版/学生信息收集批次管理表设计.sql delete mode 100644 docs/设计文档/database/学工管理-宿舍管理/xg_class_teacher_counselor_rel 班级班主任辅导员关联表.sql delete mode 100644 docs/设计文档/database/学工管理-宿舍管理/xg_holiday_stay.sql delete mode 100644 docs/设计文档/database/学工管理-宿舍管理/xg_holiday_stay_dict_data.sql delete mode 100644 docs/设计文档/database/学工管理-宿舍管理/xg_holiday_stay_sample_data.sql delete mode 100644 docs/设计文档/database/学工管理-宿舍管理/宿舍卫生检查数据库建表脚本.sql delete mode 100644 docs/设计文档/database/学工管理-宿舍管理/宿舍卫生检查设计验证清单.md delete mode 100644 docs/设计文档/database/学工管理-宿舍管理/宿舍管理数据库建表脚本.sql delete mode 100644 docs/设计文档/database/学工管理-宿舍管理/宿舍违纪管理数据字典配置.sql delete mode 100644 docs/设计文档/database/学工管理-宿舍管理/宿舍违纪管理数据库建表脚本.sql delete mode 100644 docs/设计文档/database/学工管理-宿舍管理/宿舍违纪管理数据模型设计.md delete mode 100644 docs/设计文档/database/学工管理-宿舍管理/菜单授权列表.sql delete mode 100644 docs/设计文档/database/学生请假/xg_leave_type_config.sql delete mode 100644 docs/设计文档/database/学生请假/xg_student_leave.sql delete mode 100644 docs/设计文档/database/学生请假/xg_student_leave_sample_data.sql delete mode 100644 docs/设计文档/database/工作流/01-workflow-module.sql delete mode 100644 docs/设计文档/database/心理健康测评/upload/README.md delete mode 100644 docs/设计文档/database/心理健康测评/upload/table_schemas.txt delete mode 100644 docs/设计文档/database/心理健康测评/upload/xljk_complete.sql delete mode 100644 docs/设计文档/database/心理健康测评/upload/xljk_data.sql delete mode 100644 docs/设计文档/database/心理健康测评/upload/xljk_evaluation_tables.sql delete mode 100644 docs/设计文档/database/心理健康测评/upload/xljk_tables.sql delete mode 100644 docs/设计文档/database/心理健康测评/upload/导入完成报告.md delete mode 100644 docs/设计文档/database/心理健康测评/upload/导入说明.md delete mode 100644 docs/设计文档/database/心理健康测评/xljk_add_department_fields.sql delete mode 100644 docs/设计文档/database/心理健康测评/xljk_evaluation.sql delete mode 100644 docs/设计文档/database/心理健康测评/xljk_field_update.sql delete mode 100644 docs/设计文档/database/心理健康测评/xljk_menu_config.sql delete mode 100644 docs/设计文档/database/心理咨询预约/add_batch_id_column.sql delete mode 100644 docs/设计文档/database/心理咨询预约/add_detail_time_column.sql delete mode 100644 docs/设计文档/database/心理咨询预约/cleanup_consultation_tables.sql delete mode 100644 docs/设计文档/database/心理咨询预约/consultation_dict_data.sql delete mode 100644 docs/设计文档/database/心理咨询预约/consultation_menu_permission.sql delete mode 100644 docs/设计文档/database/心理咨询预约/consultation_role_permission.sql delete mode 100644 docs/设计文档/database/心理咨询预约/fix_appointment_table.sql delete mode 100644 docs/设计文档/database/心理咨询预约/fix_dict_data.sql delete mode 100644 docs/设计文档/database/心理咨询预约/fix_schedule_table.sql delete mode 100644 docs/设计文档/database/心理咨询预约/update_consultation_tables.sql delete mode 100644 docs/设计文档/database/心理咨询预约/update_menu_permissions.sql delete mode 100644 docs/设计文档/database/心理咨询预约/xljk_consultation_data_model.sql delete mode 100644 docs/设计文档/database/心理咨询预约/预约限制功能设计.md delete mode 100644 docs/设计文档/database/招生就业/zsjy_enterprise_dict.sql delete mode 100644 docs/设计文档/database/招生就业/zsjy_enterprise_menu.sql delete mode 100644 docs/设计文档/database/招生就业/zsjy_enterprise_tables.sql delete mode 100644 docs/设计文档/database/招生迎新/create-test-users.sql delete mode 100644 docs/设计文档/database/招生迎新/updates/v_enrollment_process_combined.sql delete mode 100644 docs/设计文档/database/招生迎新/zsjy-dict-config.sql delete mode 100644 docs/设计文档/database/招生迎新/zsjy-enrollment-database-core.sql delete mode 100644 docs/设计文档/database/招生迎新/zsjy-enrollment-database.sql delete mode 100644 docs/设计文档/database/招生迎新/zsjy-menu-permissions-fixed.sql delete mode 100644 docs/设计文档/database/招生迎新/zsjy-menu-permissions.sql delete mode 100644 docs/设计文档/database/招生迎新/新生录取流程菜单权限.sql delete mode 100644 docs/设计文档/database/招生迎新数据库设计.md delete mode 100644 docs/设计文档/database/新生录取管理菜单权限.sql create mode 100644 docs/设计文档/database/班主任考核管理/README.md create mode 100644 docs/设计文档/database/班主任考核管理/bzr_assessment_sample_data.sql create mode 100644 docs/设计文档/database/班主任考核管理/bzr_assessment_tables.sql create mode 100644 docs/设计文档/database/班主任考核管理/班主任考核管理系统设计说明.md delete mode 100644 docs/设计文档/database/财务项目预算审批数据模型设计.md delete mode 100644 docs/需求文档/奖惩补贴需求/奖学金管理基础数据-兼得关系增强-增量.sql delete mode 100644 docs/需求文档/奖惩补贴需求/奖学金管理基础数据-兼得关系增强-安全版.sql delete mode 100644 docs/需求文档/奖惩补贴需求/奖学金管理基础数据-兼得关系增强.sql delete mode 100644 docs/需求文档/奖惩补贴需求/奖学金管理基础数据.sql delete mode 100644 docs/需求文档/奖惩补贴需求/奖学金管理建表脚本.sql delete mode 100644 本地prompt/前端提示词模板-勤工俭学岗位申请.md diff --git a/backend/script/sql/CHANGELOG-学生数据导入脚本.md b/backend/script/sql/CHANGELOG-学生数据导入脚本.md deleted file mode 100644 index f79c0517..00000000 --- a/backend/script/sql/CHANGELOG-学生数据导入脚本.md +++ /dev/null @@ -1,130 +0,0 @@ -# 学生数据导入脚本更改日志 - -## 📋 版本历史 - -### V1.1.0 - 2025-01-14 16:15:00 - -#### 🚀 新增功能 -- **自动配置获取**: 从项目配置文件自动读取数据库连接信息 -- **简化用户交互**: 移除繁琐的数据库参数输入流程 -- **安全密码显示**: 密码部分隐藏显示(hn0***KLD格式) - -#### 🔧 改进优化 -- **减少操作步骤**: 从原来的6个输入步骤简化为1个确认步骤 -- **降低出错概率**: 避免手动输入导致的连接参数错误 -- **提升使用体验**: 一键确认即可完成数据导入 - -#### 📊 技术变更 -- **配置来源**: `application-dev.yml` → 脚本硬编码配置 -- **连接参数**: 自动设置为项目开发环境配置 -- **执行方式**: 简化MySQL命令执行逻辑 - -#### 🗂️ 文件变更 -``` -backend/script/sql/ -├── import-student-data.sh (修改 - 主要脚本逻辑) -├── README-学生数据生成.md (修改 - 使用说明更新) -├── test-import.sh (新增 - 测试演示脚本) -└── CHANGELOG-学生数据导入脚本.md (新增 - 本文件) -``` - -#### 🔗 数据库连接配置 -```bash -DB_HOST="47.99.164.66" -DB_PORT="3306" -DB_NAME="hzdyjs_xg" -DB_USER="root" -DB_PASSWORD="hn02le.34lkdLKD" -``` - -#### 💡 使用方式对比 - -**V1.0.0 (旧版本)**: -```bash -./import-student-data.sh -# 数据库主机 (默认: localhost): 47.99.164.66 -# 数据库端口 (默认: 3306): 3306 -# 数据库名称 (默认: hzdyjs_xg): hzdyjs_xg -# 数据库用户名 (默认: root): root -# 数据库密码: hn02le.34lkdLKD -# 确认导入数据?(y/N): y -``` - -**V1.1.0 (新版本)**: -```bash -./import-student-data.sh -# 确认导入数据?(y/N): y -``` - -#### ✅ 测试验证 -- 文件完整性检查通过 -- 权限设置正确 (-rwxr-xr-x) -- 功能演示脚本运行正常 -- 用户体验显著提升 - ---- - -### V1.0.0 - 2025-01-14 15:30:00 - -#### 🎯 初始功能 -- **数据导入**: 支持150条学生信息和3个班级的完整导入 -- **交互式配置**: 用户手动输入数据库连接参数 -- **错误处理**: 完整的错误检查和友好提示 -- **结果验证**: 详细的导入结果展示 - -#### 📊 初始特性 -- 支持MySQL数据库连接 -- 彩色输出界面 -- 完整的错误处理机制 -- 详细的成功结果展示 - -#### 🗂️ 初始文件 -``` -backend/script/sql/ -├── generate_student_data.py (数据生成脚本) -├── complete-student-data.sql (完整数据SQL文件) -├── import-student-data.sh (数据导入脚本) -└── README-学生数据生成.md (使用说明文档) -``` - ---- - -## 🎯 未来规划 - -### V1.2.0 (计划中) -- [ ] 支持多环境配置切换(dev/test/prod) -- [ ] 添加数据备份功能 -- [ ] 支持增量数据导入 -- [ ] 添加导入进度显示 - -### V1.3.0 (计划中) -- [ ] 支持配置文件自动解析 -- [ ] 添加数据验证功能 -- [ ] 支持回滚操作 -- [ ] 添加日志记录功能 - ---- - -## 📞 技术支持 - -### 使用问题 -- 确保MySQL客户端已安装 -- 确保网络连接到数据库服务器 -- 确保数据库用户权限正确 - -### 错误排查 -1. **连接失败**: 检查网络和数据库服务状态 -2. **权限不足**: 确认用户具有数据库写入权限 -3. **表不存在**: 确保数据库表结构已创建 -4. **数据冲突**: 检查主键和唯一约束冲突 - -### 联系方式 -- 项目文档: `docs/开发文档/API/` -- 变更记录: `docs/变更管理/` -- 测试文档: `docs/测试文档/` - ---- - -**维护团队**: Cursor AI 辅助开发 -**最后更新**: 2025-01-14 -**文档版本**: 1.0 \ No newline at end of file diff --git a/backend/script/sql/add-head-teacher-role.sql b/backend/script/sql/add-head-teacher-role.sql deleted file mode 100644 index 8531393f..00000000 --- a/backend/script/sql/add-head-teacher-role.sql +++ /dev/null @@ -1,48 +0,0 @@ --- 添加班主任角色 -INSERT INTO sys_role (role_id, role_name, role_key, role_sort, data_scope, menu_check_strictly, dept_check_strictly, status, del_flag, create_by, create_time, update_by, update_time, remark, tenant_id) -VALUES (1947639680473493505, '班主任', 'head_teacher', 3, '1', 1, 1, '0', '0', 1, NOW(), 1, NOW(), '班主任角色', '000000'); - --- 为班主任角色添加菜单权限 -INSERT INTO sys_role_menu (role_id, menu_id, tenant_id) -SELECT 1947639680473493505, menu_id, '000000' FROM sys_menu WHERE perms LIKE 'xg:%' AND status = '0' AND del_flag = '0'; - --- 为智控学院张三用户分配班主任角色 -INSERT INTO sys_user_role (user_id, role_id, tenant_id) -VALUES (2001, 1947639680473493505, '000000'); - --- 为信息学院李四用户分配班主任角色 -INSERT INTO sys_user_role (user_id, role_id, tenant_id) -VALUES (2002, 1947639680473493505, '000000'); - --- 为机电学院王五用户分配班主任角色 -INSERT INTO sys_user_role (user_id, role_id, tenant_id) -VALUES (2003, 1947639680473493505, '000000'); - --- 为经管学院赵六用户分配班主任角色 -INSERT INTO sys_user_role (user_id, role_id, tenant_id) -VALUES (2004, 1947639680473493505, '000000'); - --- 添加班主任角色相关的权限 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark, tenant_id) -VALUES (1947639680473493506, '班主任管理', 2000, 5, 'headteacher', 'xg-xx/headteacher/index', NULL, 1, 0, 'C', '0', '0', 'xg:headteacher:list', 'user', 1, NOW(), NULL, NULL, '班主任管理菜单', '000000'); - --- 添加班主任管理按钮权限 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark, tenant_id) -VALUES (1947639680473493507, '班主任查询', 1947639680473493506, 1, '', '', NULL, 1, 0, 'F', '0', '0', 'xg:headteacher:query', '#', 1, NOW(), NULL, NULL, '', '000000'); - -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark, tenant_id) -VALUES (1947639680473493508, '班主任新增', 1947639680473493506, 2, '', '', NULL, 1, 0, 'F', '0', '0', 'xg:headteacher:add', '#', 1, NOW(), NULL, NULL, '', '000000'); - -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark, tenant_id) -VALUES (1947639680473493509, '班主任修改', 1947639680473493506, 3, '', '', NULL, 1, 0, 'F', '0', '0', 'xg:headteacher:edit', '#', 1, NOW(), NULL, NULL, '', '000000'); - -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark, tenant_id) -VALUES (1947639680473493510, '班主任删除', 1947639680473493506, 4, '', '', NULL, 1, 0, 'F', '0', '0', 'xg:headteacher:remove', '#', 1, NOW(), NULL, NULL, '', '000000'); - --- 为班主任角色添加班主任管理权限 -INSERT INTO sys_role_menu (role_id, menu_id, tenant_id) -VALUES (1947639680473493505, 1947639680473493506, '000000'), - (1947639680473493505, 1947639680473493507, '000000'), - (1947639680473493505, 1947639680473493508, '000000'), - (1947639680473493505, 1947639680473493509, '000000'), - (1947639680473493505, 1947639680473493510, '000000'); diff --git a/backend/script/sql/class-basic-data.sql b/backend/script/sql/class-basic-data.sql deleted file mode 100644 index 3feabde9..00000000 --- a/backend/script/sql/class-basic-data.sql +++ /dev/null @@ -1,115 +0,0 @@ --- ========================================== --- 班级信息管理基础数据脚本 --- 版本:V1.0.0 --- 功能:创建3个班级基础数据 --- 作者:Cursor AI 辅助 --- 时间:2025-01-21 --- 说明:班级信息管理功能的基础数据准备 --- ========================================== - -USE hzdyjs_xg; - --- 设置字符集 -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ============================================== --- 1. 创建3个新班级 --- ============================================== - --- 计算机科学与技术2024级1班 -INSERT INTO `xg_class_info` ( - `id`, `tenant_id`, `class_code`, `class_name`, `class_type`, `grade`, `enrollment_year`, `graduation_year`, - `college_code`, `college_name`, `major_name`, `major_code`, `training_type`, `degree_type`, - `counselor_id`, `counselor_name`, `class_teacher_id`, `class_teacher_name`, - `planned_capacity`, `current_student_count`, `male_count`, `female_count`, `active_count`, - `contact_phone`, `qq_group`, `email`, `class_status`, `is_graduation`, - `create_by`, `create_time`, `update_by`, `update_time` -) VALUES ( - 1100001, '000000', 'CS2024001', '计算机科学与技术2024级1班', 'regular', '2024', 2024, 2028, - 'CS001', '计算机科学与技术学院', '计算机科学与技术', 'CS001', '全日制', '本科', - 10001, '李明华', 10002, '王建国', - 50, 0, 0, 0, 0, - '0571-88000001', '888888001', 'cs2024001@hzdyjs.edu.cn', '1', 0, - 1, NOW(), 1, NOW() -) ON DUPLICATE KEY UPDATE - class_name = VALUES(class_name), - college_name = VALUES(college_name), - major_name = VALUES(major_name), - update_time = NOW(); - --- 电子信息工程2024级1班 -INSERT INTO `xg_class_info` ( - `id`, `tenant_id`, `class_code`, `class_name`, `class_type`, `grade`, `enrollment_year`, `graduation_year`, - `college_code`, `college_name`, `major_name`, `major_code`, `training_type`, `degree_type`, - `counselor_id`, `counselor_name`, `class_teacher_id`, `class_teacher_name`, - `planned_capacity`, `current_student_count`, `male_count`, `female_count`, `active_count`, - `contact_phone`, `qq_group`, `email`, `class_status`, `is_graduation`, - `create_by`, `create_time`, `update_by`, `update_time` -) VALUES ( - 1100002, '000000', 'EE2024001', '电子信息工程2024级1班', 'regular', '2024', 2024, 2028, - 'EE001', '电子信息工程学院', '电子信息工程', 'EE001', '全日制', '本科', - 10003, '张丽萍', 10004, '刘德华', - 50, 0, 0, 0, 0, - '0571-88000002', '888888002', 'ee2024001@hzdyjs.edu.cn', '1', 0, - 1, NOW(), 1, NOW() -) ON DUPLICATE KEY UPDATE - class_name = VALUES(class_name), - college_name = VALUES(college_name), - major_name = VALUES(major_name), - update_time = NOW(); - --- 工商管理2024级1班 -INSERT INTO `xg_class_info` ( - `id`, `tenant_id`, `class_code`, `class_name`, `class_type`, `grade`, `enrollment_year`, `graduation_year`, - `college_code`, `college_name`, `major_name`, `major_code`, `training_type`, `degree_type`, - `counselor_id`, `counselor_name`, `class_teacher_id`, `class_teacher_name`, - `planned_capacity`, `current_student_count`, `male_count`, `female_count`, `active_count`, - `contact_phone`, `qq_group`, `email`, `class_status`, `is_graduation`, - `create_by`, `create_time`, `update_by`, `update_time` -) VALUES ( - 1100003, '000000', 'BM2024001', '工商管理2024级1班', 'regular', '2024', 2024, 2028, - 'BM001', '经济管理学院', '工商管理', 'BM001', '全日制', '本科', - 10005, '陈建华', 10006, '赵文强', - 50, 0, 0, 0, 0, - '0571-88000003', '888888003', 'bm2024001@hzdyjs.edu.cn', '1', 0, - 1, NOW(), 1, NOW() -) ON DUPLICATE KEY UPDATE - class_name = VALUES(class_name), - college_name = VALUES(college_name), - major_name = VALUES(major_name), - update_time = NOW(); - --- ============================================== --- 2. 验证数据创建结果 --- ============================================== - --- 验证班级信息 -SELECT '=== 班级信息验证 ===' as info; -SELECT - id, - class_code, - class_name, - college_name, - major_name, - current_student_count, - male_count, - female_count, - class_status -FROM xg_class_info -WHERE id IN (1100001, 1100002, 1100003); - --- 验证数据字典 -SELECT '=== 数据字典验证 ===' as info; -SELECT dict_type, dict_label, dict_value -FROM sys_dict_data -WHERE dict_type IN ('xg_class_type', 'xg_class_status') -ORDER BY dict_type, dict_sort; - --- 恢复外键检查 -SET FOREIGN_KEY_CHECKS = 1; - -SELECT '🎉 班级信息管理数据库准备完成!' as result; -SELECT '📊 总计:3个班级信息' as summary; -SELECT '✅ 数据字典:班级类型、班级状态字典已配置' as dict_status; -SELECT '✅ 数据表:xg_class_info、xg_class_student表结构完整' as table_status; diff --git a/backend/script/sql/create-missing-tables.sql b/backend/script/sql/create-missing-tables.sql deleted file mode 100644 index 732f7594..00000000 --- a/backend/script/sql/create-missing-tables.sql +++ /dev/null @@ -1,150 +0,0 @@ --- ========================================== --- 创建信息采集批次缺失的关联表 --- 版本:V1.0.0 --- 创建时间:2025-01-17 --- ========================================== - -USE hzdyjs_xg; - --- 1. 创建批次学生关联表 -CREATE TABLE IF NOT EXISTS xg_collection_batch_student ( - id BIGINT PRIMARY KEY AUTO_INCREMENT, - batch_id BIGINT NOT NULL COMMENT '批次ID', - student_id BIGINT NOT NULL COMMENT '学生ID', - student_code VARCHAR(50) NOT NULL COMMENT '学号', - student_name VARCHAR(100) NOT NULL COMMENT '学生姓名', - college_id BIGINT COMMENT '学院ID', - college_name VARCHAR(100) COMMENT '学院名称', - major_id BIGINT COMMENT '专业ID', - major_name VARCHAR(100) COMMENT '专业名称', - class_id BIGINT COMMENT '班级ID', - class_name VARCHAR(100) COMMENT '班级名称', - grade VARCHAR(50) COMMENT '届别', - can_edit TINYINT DEFAULT 1 COMMENT '是否可编辑', - has_submitted TINYINT DEFAULT 0 COMMENT '是否已提交', - submit_time DATETIME COMMENT '提交时间', - last_edit_time DATETIME COMMENT '最后编辑时间', - edit_count INT DEFAULT 0 COMMENT '编辑次数', - create_time DATETIME DEFAULT CURRENT_TIMESTAMP, - update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - create_by BIGINT COMMENT '创建者', - update_by BIGINT COMMENT '更新者', - deleted TINYINT DEFAULT 0 COMMENT '删除标志', - tenant_id VARCHAR(20) DEFAULT '000000' COMMENT '租户ID', - INDEX idx_batch_id (batch_id), - INDEX idx_student_id (student_id), - INDEX idx_batch_student (batch_id, student_id), - INDEX idx_college_id (college_id), - INDEX idx_grade (grade), - INDEX idx_create_time (create_time), - INDEX idx_has_submitted (has_submitted), - INDEX idx_tenant_id (tenant_id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息采集批次学生关联表'; - --- 2. 创建批次操作日志表 -CREATE TABLE IF NOT EXISTS xg_collection_batch_log ( - id BIGINT PRIMARY KEY AUTO_INCREMENT, - batch_id BIGINT NOT NULL COMMENT '批次ID', - student_id BIGINT COMMENT '学生ID', - operation_type VARCHAR(50) NOT NULL COMMENT '操作类型(CREATE,UPDATE,SUBMIT,ADMIN_MODIFY,BATCH_PUBLISH,BATCH_CLOSE)', - operation_desc TEXT COMMENT '操作描述', - old_data TEXT COMMENT '修改前数据(JSON格式)', - new_data TEXT COMMENT '修改后数据(JSON格式)', - operator_id BIGINT COMMENT '操作人ID', - operator_name VARCHAR(100) COMMENT '操作人姓名', - operator_type VARCHAR(50) COMMENT '操作人类型(STUDENT,ADMIN,SYSTEM)', - ip_address VARCHAR(50) COMMENT 'IP地址', - user_agent TEXT COMMENT '用户代理', - create_time DATETIME DEFAULT CURRENT_TIMESTAMP, - tenant_id VARCHAR(20) DEFAULT '000000' COMMENT '租户ID', - INDEX idx_batch_id (batch_id), - INDEX idx_student_id (student_id), - INDEX idx_operation_type (operation_type), - INDEX idx_create_time (create_time), - INDEX idx_operator_id (operator_id), - INDEX idx_tenant_id (tenant_id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息采集批次操作日志表'; - --- 3. 创建批次权限配置表 -CREATE TABLE IF NOT EXISTS xg_collection_batch_permission ( - id BIGINT PRIMARY KEY AUTO_INCREMENT, - batch_id BIGINT NOT NULL COMMENT '批次ID', - permission_type VARCHAR(50) NOT NULL COMMENT '权限类型(EDIT,VIEW,SUBMIT,ADMIN)', - role_id BIGINT COMMENT '角色ID', - user_id BIGINT COMMENT '用户ID', - college_id BIGINT COMMENT '学院ID', - is_granted TINYINT DEFAULT 1 COMMENT '是否授权', - grant_time DATETIME COMMENT '授权时间', - expire_time DATETIME COMMENT '过期时间', - create_time DATETIME DEFAULT CURRENT_TIMESTAMP, - update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - create_by BIGINT COMMENT '创建者', - update_by BIGINT COMMENT '更新者', - deleted TINYINT DEFAULT 0 COMMENT '删除标志', - tenant_id VARCHAR(20) DEFAULT '000000' COMMENT '租户ID', - INDEX idx_batch_id (batch_id), - INDEX idx_permission_type (permission_type), - INDEX idx_role_id (role_id), - INDEX idx_user_id (user_id), - INDEX idx_college_id (college_id), - INDEX idx_tenant_id (tenant_id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息采集批次权限配置表'; - --- 4. 创建批次统计表 -CREATE TABLE IF NOT EXISTS xg_collection_batch_statistics ( - id BIGINT PRIMARY KEY AUTO_INCREMENT, - batch_id BIGINT NOT NULL COMMENT '批次ID', - total_students INT DEFAULT 0 COMMENT '总学生数', - submitted_students INT DEFAULT 0 COMMENT '已提交学生数', - pending_students INT DEFAULT 0 COMMENT '待提交学生数', - completion_rate DECIMAL(5,2) DEFAULT 0.00 COMMENT '完成率', - college_id BIGINT COMMENT '学院ID(按学院统计时使用)', - college_name VARCHAR(100) COMMENT '学院名称', - major_id BIGINT COMMENT '专业ID(按专业统计时使用)', - major_name VARCHAR(100) COMMENT '专业名称', - class_id BIGINT COMMENT '班级ID(按班级统计时使用)', - class_name VARCHAR(100) COMMENT '班级名称', - grade VARCHAR(50) COMMENT '届别', - statistics_type VARCHAR(50) DEFAULT 'TOTAL' COMMENT '统计类型(TOTAL,COLLEGE,MAJOR,CLASS,GRADE)', - last_updated DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - create_time DATETIME DEFAULT CURRENT_TIMESTAMP, - update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - tenant_id VARCHAR(20) DEFAULT '000000' COMMENT '租户ID', - INDEX idx_batch_id (batch_id), - INDEX idx_college_id (college_id), - INDEX idx_major_id (major_id), - INDEX idx_class_id (class_id), - INDEX idx_grade (grade), - INDEX idx_statistics_type (statistics_type), - INDEX idx_tenant_id (tenant_id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息采集批次统计表'; - --- 5. 创建批次定时任务表 -CREATE TABLE IF NOT EXISTS xg_batch_scheduled_task ( - id BIGINT PRIMARY KEY AUTO_INCREMENT, - batch_id BIGINT NOT NULL COMMENT '批次ID', - task_type VARCHAR(50) NOT NULL COMMENT '任务类型(REMIND_START,REMIND_END,AUTO_CLOSE)', - task_time DATETIME NOT NULL COMMENT '执行时间', - task_status VARCHAR(20) DEFAULT 'PENDING' COMMENT '任务状态(PENDING,EXECUTED,FAILED)', - execute_time DATETIME COMMENT '实际执行时间', - error_message TEXT COMMENT '错误信息', - create_time DATETIME DEFAULT CURRENT_TIMESTAMP, - update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - tenant_id VARCHAR(20) DEFAULT '000000' COMMENT '租户ID', - INDEX idx_batch_id (batch_id), - INDEX idx_task_type (task_type), - INDEX idx_task_time (task_time), - INDEX idx_task_status (task_status), - INDEX idx_tenant_id (tenant_id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息采集批次定时任务表'; - --- 6. 插入一些测试数据 -INSERT INTO xg_collection_batch (id, tenant_id, batch_code, batch_name, batch_type, academic_year, semester, batch_status, start_time, end_time, description, create_by, create_time, update_by, update_time, deleted) VALUES -(1745001000000000001, '000000', 'BATCH_2024_1', '2024-2025学年第一学期信息采集', 'annual', '2024-2025', '1', '2', '2024-09-01 00:00:00', '2024-09-30 23:59:59', '2024-2025学年第一学期学生信息采集工作', 1, NOW(), 1, NOW(), 0), -(1745001000000000002, '000000', 'BATCH_2024_2', '2024-2025学年第二学期信息采集', 'annual', '2024-2025', '2', '1', '2025-02-15 00:00:00', '2025-03-15 23:59:59', '2024-2025学年第二学期学生信息采集工作', 1, NOW(), 1, NOW(), 0) -ON DUPLICATE KEY UPDATE - batch_name = VALUES(batch_name), - description = VALUES(description), - update_time = NOW(); - -SELECT 'Database tables created successfully!' as message; diff --git a/backend/script/sql/cw-budget-approval-menu-fixed-path.sql b/backend/script/sql/cw-budget-approval-menu-fixed-path.sql deleted file mode 100644 index 3ccafba4..00000000 --- a/backend/script/sql/cw-budget-approval-menu-fixed-path.sql +++ /dev/null @@ -1,77 +0,0 @@ --- ========================================== --- 财务项目预算审批系统 - 菜单配置脚本(修复路径版) --- 版本: 1.1 --- 创建时间: 2025-08-01 --- 修复内容: 删除budgetApproval中间路径,使用简化的路径结构 --- 模块前缀: cw_ (财务模块) --- 菜单ID范围: 5000-5999 --- ========================================== - --- 1. 一级菜单:财务管理 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5000, '财务管理', 0, 10, 'finance', NULL, '', 1, 0, 'M', '0', '0', '', 'money', 103, 1, now(), NULL, NULL, '财务管理根菜单', '000000'); - --- 2. 二级菜单:项目预算审批 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5100, '项目预算审批', 5000, 1, 'budget-approval', NULL, '', 1, 0, 'M', '0', '0', '', 'file-text', 103, 1, now(), NULL, NULL, '项目预算审批管理', '000000'); - --- 3. 三级菜单:预算申报管理(修复路径) -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5110, '预算申报管理', 5100, 1, 'application', 'cw/application/index', '', 1, 0, 'C', '0', '0', 'cw:application:list', 'form', 103, 1, now(), NULL, NULL, '预算申报管理页面', '000000'); - --- 预算申报管理 - 功能按钮 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5111, '预算申报查询', 5110, 1, '', '', '', 1, 0, 'F', '0', '0', 'cw:application:query', '#', 103, 1, now(), NULL, NULL, '预算申报查询权限', '000000'), -(5112, '预算申报详情', 5110, 2, '', '', '', 1, 0, 'F', '0', '0', 'cw:application:detail', '#', 103, 1, now(), NULL, NULL, '预算申报详情权限', '000000'), -(5113, '预算申报新增', 5110, 3, '', '', '', 1, 0, 'F', '0', '0', 'cw:application:add', '#', 103, 1, now(), NULL, NULL, '预算申报新增权限', '000000'), -(5114, '预算申报修改', 5110, 4, '', '', '', 1, 0, 'F', '0', '0', 'cw:application:edit', '#', 103, 1, now(), NULL, NULL, '预算申报修改权限', '000000'), -(5115, '预算申报删除', 5110, 5, '', '', '', 1, 0, 'F', '0', '0', 'cw:application:remove', '#', 103, 1, now(), NULL, NULL, '预算申报删除权限', '000000'), -(5116, '预算申报导出', 5110, 6, '', '', '', 1, 0, 'F', '0', '0', 'cw:application:export', '#', 103, 1, now(), NULL, NULL, '预算申报导出权限', '000000'), -(5117, '预算申报提交', 5110, 7, '', '', '', 1, 0, 'F', '0', '0', 'cw:application:submit', '#', 103, 1, now(), NULL, NULL, '预算申报提交审批权限', '000000'); - --- 4. 三级菜单:审批人配置(修复路径) -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5120, '审批人配置', 5100, 2, 'approver-config', 'cw/approverConfig/index', '', 1, 0, 'C', '0', '0', 'cw:approverConfig:list', 'peoples', 103, 1, now(), NULL, NULL, '审批人配置页面', '000000'); - --- 审批人配置 - 功能按钮 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5121, '审批人查询', 5120, 1, '', '', '', 1, 0, 'F', '0', '0', 'cw:approverConfig:query', '#', 103, 1, now(), NULL, NULL, '审批人配置查询权限', '000000'), -(5122, '审批人详情', 5120, 2, '', '', '', 1, 0, 'F', '0', '0', 'cw:approverConfig:detail', '#', 103, 1, now(), NULL, NULL, '审批人配置详情权限', '000000'), -(5123, '审批人新增', 5120, 3, '', '', '', 1, 0, 'F', '0', '0', 'cw:approverConfig:add', '#', 103, 1, now(), NULL, NULL, '审批人配置新增权限', '000000'), -(5124, '审批人修改', 5120, 4, '', '', '', 1, 0, 'F', '0', '0', 'cw:approverConfig:edit', '#', 103, 1, now(), NULL, NULL, '审批人配置修改权限', '000000'), -(5125, '审批人删除', 5120, 5, '', '', '', 1, 0, 'F', '0', '0', 'cw:approverConfig:remove', '#', 103, 1, now(), NULL, NULL, '审批人配置删除权限', '000000'); - --- 5. 三级菜单:审批记录查询(修复路径) -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5130, '审批记录查询', 5100, 3, 'approval-record', 'cw/approvalRecord/index', '', 1, 0, 'C', '0', '0', 'cw:approvalRecord:list', 'documentation', 103, 1, now(), NULL, NULL, '审批记录查询页面', '000000'); - --- 审批记录查询 - 功能按钮 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5131, '审批记录查询', 5130, 1, '', '', '', 1, 0, 'F', '0', '0', 'cw:approvalRecord:query', '#', 103, 1, now(), NULL, NULL, '审批记录查询权限', '000000'), -(5132, '审批记录详情', 5130, 2, '', '', '', 1, 0, 'F', '0', '0', 'cw:approvalRecord:detail', '#', 103, 1, now(), NULL, NULL, '审批记录详情权限', '000000'); - --- 6. 三级菜单:支出明细管理(修复路径) -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5140, '支出明细管理', 5100, 4, 'expenditure-detail', 'cw/expenditureDetail/index', '', 1, 0, 'C', '0', '0', 'cw:expenditureDetail:list', 'money', 103, 1, now(), NULL, NULL, '支出明细管理页面', '000000'); - --- 支出明细管理 - 功能按钮 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5141, '支出明细查询', 5140, 1, '', '', '', 1, 0, 'F', '0', '0', 'cw:expenditureDetail:query', '#', 103, 1, now(), NULL, NULL, '支出明细查询权限', '000000'), -(5142, '支出明细详情', 5140, 2, '', '', '', 1, 0, 'F', '0', '0', 'cw:expenditureDetail:detail', '#', 103, 1, now(), NULL, NULL, '支出明细详情权限', '000000'), -(5143, '支出明细新增', 5140, 3, '', '', '', 1, 0, 'F', '0', '0', 'cw:expenditureDetail:add', '#', 103, 1, now(), NULL, NULL, '支出明细新增权限', '000000'), -(5144, '支出明细修改', 5140, 4, '', '', '', 1, 0, 'F', '0', '0', 'cw:expenditureDetail:edit', '#', 103, 1, now(), NULL, NULL, '支出明细修改权限', '000000'), -(5145, '支出明细删除', 5140, 5, '', '', '', 1, 0, 'F', '0', '0', 'cw:expenditureDetail:remove', '#', 103, 1, now(), NULL, NULL, '支出明细删除权限', '000000'); - --- 7. 三级菜单:绩效指标管理(修复路径) -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5150, '绩效指标管理', 5100, 5, 'performance-indicator', 'cw/performanceIndicator/index', '', 1, 0, 'C', '0', '0', 'cw:performanceIndicator:list', 'chart', 103, 1, now(), NULL, NULL, '绩效指标管理页面', '000000'); - --- 绩效指标管理 - 功能按钮 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5151, '绩效指标查询', 5150, 1, '', '', '', 1, 0, 'F', '0', '0', 'cw:performanceIndicator:query', '#', 103, 1, now(), NULL, NULL, '绩效指标查询权限', '000000'), -(5152, '绩效指标详情', 5150, 2, '', '', '', 1, 0, 'F', '0', '0', 'cw:performanceIndicator:detail', '#', 103, 1, now(), NULL, NULL, '绩效指标详情权限', '000000'), -(5153, '绩效指标新增', 5150, 3, '', '', '', 1, 0, 'F', '0', '0', 'cw:performanceIndicator:add', '#', 103, 1, now(), NULL, NULL, '绩效指标新增权限', '000000'), -(5154, '绩效指标修改', 5150, 4, '', '', '', 1, 0, 'F', '0', '0', 'cw:performanceIndicator:edit', '#', 103, 1, now(), NULL, NULL, '绩效指标修改权限', '000000'), -(5155, '绩效指标删除', 5150, 5, '', '', '', 1, 0, 'F', '0', '0', 'cw:performanceIndicator:remove', '#', 103, 1, now(), NULL, NULL, '绩效指标删除权限', '000000'); - -SELECT '财务项目预算审批系统菜单配置完成(修复路径版)!' AS result; diff --git a/backend/script/sql/cw-budget-approval-menu-fixed.sql b/backend/script/sql/cw-budget-approval-menu-fixed.sql deleted file mode 100644 index 894c68a6..00000000 --- a/backend/script/sql/cw-budget-approval-menu-fixed.sql +++ /dev/null @@ -1,99 +0,0 @@ --- ========================================== --- 财务项目预算审批系统 - 菜单配置脚本(修正版) --- 版本: 1.1 --- 创建时间: 2025-01-26 --- 模块前缀: cw_ (财务模块) --- 菜单ID范围: 5000-5999 --- ========================================== - --- 1. 一级菜单:财务管理 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES -(5000, '财务管理', 0, 10, 'finance', NULL, '', 1, 0, 'M', '0', '0', '', 'money', 103, 1, now(), NULL, NULL, '财务管理根菜单'); - --- 2. 二级菜单:项目预算审批 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES -(5100, '项目预算审批', 5000, 1, 'budget-approval', NULL, '', 1, 0, 'M', '0', '0', '', 'file-text', 103, 1, now(), NULL, NULL, '项目预算审批管理'); - --- 3. 三级菜单:预算申报管理 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES -(5110, '预算申报管理', 5100, 1, 'application', 'cw/budgetApproval/application/index', '', 1, 0, 'C', '0', '0', 'cw:application:list', 'form', 103, 1, now(), NULL, NULL, '预算申报管理页面'); - --- 预算申报管理 - 功能按钮 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES -(5111, '预算申报查询', 5110, 1, '', '', '', 1, 0, 'F', '0', '0', 'cw:application:query', '#', 103, 1, now(), NULL, NULL, '预算申报查询权限'), -(5112, '预算申报详情', 5110, 2, '', '', '', 1, 0, 'F', '0', '0', 'cw:application:detail', '#', 103, 1, now(), NULL, NULL, '预算申报详情权限'), -(5113, '预算申报新增', 5110, 3, '', '', '', 1, 0, 'F', '0', '0', 'cw:application:add', '#', 103, 1, now(), NULL, NULL, '预算申报新增权限'), -(5114, '预算申报修改', 5110, 4, '', '', '', 1, 0, 'F', '0', '0', 'cw:application:edit', '#', 103, 1, now(), NULL, NULL, '预算申报修改权限'), -(5115, '预算申报删除', 5110, 5, '', '', '', 1, 0, 'F', '0', '0', 'cw:application:remove', '#', 103, 1, now(), NULL, NULL, '预算申报删除权限'), -(5116, '预算申报导出', 5110, 6, '', '', '', 1, 0, 'F', '0', '0', 'cw:application:export', '#', 103, 1, now(), NULL, NULL, '预算申报导出权限'), -(5117, '预算申报提交', 5110, 7, '', '', '', 1, 0, 'F', '0', '0', 'cw:application:submit', '#', 103, 1, now(), NULL, NULL, '预算申报提交审批权限'); - --- 4. 三级菜单:审批人配置 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES -(5120, '审批人配置', 5100, 2, 'approver-config', 'cw/budgetApproval/approverConfig/index', '', 1, 0, 'C', '0', '0', 'cw:approverConfig:list', 'peoples', 103, 1, now(), NULL, NULL, '审批人配置页面'); - --- 审批人配置 - 功能按钮 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES -(5121, '审批人查询', 5120, 1, '', '', '', 1, 0, 'F', '0', '0', 'cw:approverConfig:query', '#', 103, 1, now(), NULL, NULL, '审批人配置查询权限'), -(5122, '审批人详情', 5120, 2, '', '', '', 1, 0, 'F', '0', '0', 'cw:approverConfig:detail', '#', 103, 1, now(), NULL, NULL, '审批人配置详情权限'), -(5123, '审批人新增', 5120, 3, '', '', '', 1, 0, 'F', '0', '0', 'cw:approverConfig:add', '#', 103, 1, now(), NULL, NULL, '审批人配置新增权限'), -(5124, '审批人修改', 5120, 4, '', '', '', 1, 0, 'F', '0', '0', 'cw:approverConfig:edit', '#', 103, 1, now(), NULL, NULL, '审批人配置修改权限'), -(5125, '审批人删除', 5120, 5, '', '', '', 1, 0, 'F', '0', '0', 'cw:approverConfig:remove', '#', 103, 1, now(), NULL, NULL, '审批人配置删除权限'); - --- 5. 三级菜单:审批记录查询 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES -(5130, '审批记录查询', 5100, 3, 'approval-record', 'cw/budgetApproval/approvalRecord/index', '', 1, 0, 'C', '0', '0', 'cw:approvalRecord:list', 'documentation', 103, 1, now(), NULL, NULL, '审批记录查询页面'); - --- 审批记录查询 - 功能按钮 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES -(5131, '审批记录查询', 5130, 1, '', '', '', 1, 0, 'F', '0', '0', 'cw:approvalRecord:query', '#', 103, 1, now(), NULL, NULL, '审批记录查询权限'), -(5132, '审批记录详情', 5130, 2, '', '', '', 1, 0, 'F', '0', '0', 'cw:approvalRecord:detail', '#', 103, 1, now(), NULL, NULL, '审批记录详情权限'), -(5133, '审批操作', 5130, 3, '', '', '', 1, 0, 'F', '0', '0', 'cw:approvalRecord:approve', '#', 103, 1, now(), NULL, NULL, '审批操作权限'), -(5134, '退回操作', 5130, 4, '', '', '', 1, 0, 'F', '0', '0', 'cw:approvalRecord:return', '#', 103, 1, now(), NULL, NULL, '退回操作权限'), -(5135, '审批记录导出', 5130, 5, '', '', '', 1, 0, 'F', '0', '0', 'cw:approvalRecord:export', '#', 103, 1, now(), NULL, NULL, '审批记录导出权限'); - --- 6. 三级菜单:支出明细管理 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES -(5140, '支出明细管理', 5100, 4, 'expenditure-detail', 'cw/budgetApproval/expenditureDetail/index', '', 1, 0, 'C', '0', '0', 'cw:expenditureDetail:list', 'money', 103, 1, now(), NULL, NULL, '支出明细管理页面'); - --- 支出明细管理 - 功能按钮 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES -(5141, '支出明细查询', 5140, 1, '', '', '', 1, 0, 'F', '0', '0', 'cw:expenditureDetail:query', '#', 103, 1, now(), NULL, NULL, '支出明细查询权限'), -(5142, '支出明细详情', 5140, 2, '', '', '', 1, 0, 'F', '0', '0', 'cw:expenditureDetail:detail', '#', 103, 1, now(), NULL, NULL, '支出明细详情权限'), -(5143, '支出明细新增', 5140, 3, '', '', '', 1, 0, 'F', '0', '0', 'cw:expenditureDetail:add', '#', 103, 1, now(), NULL, NULL, '支出明细新增权限'), -(5144, '支出明细修改', 5140, 4, '', '', '', 1, 0, 'F', '0', '0', 'cw:expenditureDetail:edit', '#', 103, 1, now(), NULL, NULL, '支出明细修改权限'), -(5145, '支出明细删除', 5140, 5, '', '', '', 1, 0, 'F', '0', '0', 'cw:expenditureDetail:remove', '#', 103, 1, now(), NULL, NULL, '支出明细删除权限'); - --- 7. 三级菜单:绩效指标管理 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES -(5150, '绩效指标管理', 5100, 5, 'performance-indicator', 'cw/budgetApproval/performanceIndicator/index', '', 1, 0, 'C', '0', '0', 'cw:performanceIndicator:list', 'chart', 103, 1, now(), NULL, NULL, '绩效指标管理页面'); - --- 绩效指标管理 - 功能按钮 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES -(5151, '绩效指标查询', 5150, 1, '', '', '', 1, 0, 'F', '0', '0', 'cw:performanceIndicator:query', '#', 103, 1, now(), NULL, NULL, '绩效指标查询权限'), -(5152, '绩效指标详情', 5150, 2, '', '', '', 1, 0, 'F', '0', '0', 'cw:performanceIndicator:detail', '#', 103, 1, now(), NULL, NULL, '绩效指标详情权限'), -(5153, '绩效指标新增', 5150, 3, '', '', '', 1, 0, 'F', '0', '0', 'cw:performanceIndicator:add', '#', 103, 1, now(), NULL, NULL, '绩效指标新增权限'), -(5154, '绩效指标修改', 5150, 4, '', '', '', 1, 0, 'F', '0', '0', 'cw:performanceIndicator:edit', '#', 103, 1, now(), NULL, NULL, '绩效指标修改权限'), -(5155, '绩效指标删除', 5150, 5, '', '', '', 1, 0, 'F', '0', '0', 'cw:performanceIndicator:remove', '#', 103, 1, now(), NULL, NULL, '绩效指标删除权限'); - --- 8. 三级菜单:附件管理 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES -(5160, '附件管理', 5100, 6, 'attachment', 'cw/budgetApproval/attachment/index', '', 1, 0, 'C', '0', '0', 'cw:attachment:list', 'upload', 103, 1, now(), NULL, NULL, '附件管理页面'); - --- 附件管理 - 功能按钮 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES -(5161, '附件查询', 5160, 1, '', '', '', 1, 0, 'F', '0', '0', 'cw:attachment:query', '#', 103, 1, now(), NULL, NULL, '附件查询权限'), -(5162, '附件详情', 5160, 2, '', '', '', 1, 0, 'F', '0', '0', 'cw:attachment:detail', '#', 103, 1, now(), NULL, NULL, '附件详情权限'), -(5163, '附件上传', 5160, 3, '', '', '', 1, 0, 'F', '0', '0', 'cw:attachment:upload', '#', 103, 1, now(), NULL, NULL, '附件上传权限'), -(5164, '附件下载', 5160, 4, '', '', '', 1, 0, 'F', '0', '0', 'cw:attachment:download', '#', 103, 1, now(), NULL, NULL, '附件下载权限'), -(5165, '附件删除', 5160, 5, '', '', '', 1, 0, 'F', '0', '0', 'cw:attachment:remove', '#', 103, 1, now(), NULL, NULL, '附件删除权限'); - --- 菜单创建完成,显示创建结果 -SELECT '财务项目预算审批系统菜单配置完成!' AS result; - --- 验证菜单创建情况 -SELECT '=== 菜单创建验证 ===' as verification; -SELECT menu_id, menu_name, menu_type, parent_id, order_num, perms -FROM sys_menu -WHERE menu_id BETWEEN 5000 AND 5999 -ORDER BY menu_id; diff --git a/backend/script/sql/cw-budget-approval-menu.sql b/backend/script/sql/cw-budget-approval-menu.sql deleted file mode 100644 index d67c2715..00000000 --- a/backend/script/sql/cw-budget-approval-menu.sql +++ /dev/null @@ -1,92 +0,0 @@ --- ========================================== --- 财务项目预算审批系统 - 菜单配置脚本 --- 版本: 1.0 --- 创建时间: 2025-01-26 --- 模块前缀: cw_ (财务模块) --- 菜单ID范围: 5000-5999 --- ========================================== - --- 1. 一级菜单:财务管理 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5000, '财务管理', 0, 10, 'finance', NULL, '', 1, 0, 'M', '0', '0', '', 'money', 103, 1, now(), NULL, NULL, '财务管理根菜单', '000000'); - --- 2. 二级菜单:项目预算审批 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5100, '项目预算审批', 5000, 1, 'budget-approval', NULL, '', 1, 0, 'M', '0', '0', '', 'file-text', 103, 1, now(), NULL, NULL, '项目预算审批管理', '000000'); - --- 3. 三级菜单:预算申报管理 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5110, '预算申报管理', 5100, 1, 'application', 'cw/budgetApproval/application/index', '', 1, 0, 'C', '0', '0', 'cw:application:list', 'form', 103, 1, now(), NULL, NULL, '预算申报管理页面', '000000'); - --- 预算申报管理 - 功能按钮 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5111, '预算申报查询', 5110, 1, '', '', '', 1, 0, 'F', '0', '0', 'cw:application:query', '#', 103, 1, now(), NULL, NULL, '预算申报查询权限', '000000'), -(5112, '预算申报详情', 5110, 2, '', '', '', 1, 0, 'F', '0', '0', 'cw:application:detail', '#', 103, 1, now(), NULL, NULL, '预算申报详情权限', '000000'), -(5113, '预算申报新增', 5110, 3, '', '', '', 1, 0, 'F', '0', '0', 'cw:application:add', '#', 103, 1, now(), NULL, NULL, '预算申报新增权限', '000000'), -(5114, '预算申报修改', 5110, 4, '', '', '', 1, 0, 'F', '0', '0', 'cw:application:edit', '#', 103, 1, now(), NULL, NULL, '预算申报修改权限', '000000'), -(5115, '预算申报删除', 5110, 5, '', '', '', 1, 0, 'F', '0', '0', 'cw:application:remove', '#', 103, 1, now(), NULL, NULL, '预算申报删除权限', '000000'), -(5116, '预算申报导出', 5110, 6, '', '', '', 1, 0, 'F', '0', '0', 'cw:application:export', '#', 103, 1, now(), NULL, NULL, '预算申报导出权限', '000000'), -(5117, '预算申报提交', 5110, 7, '', '', '', 1, 0, 'F', '0', '0', 'cw:application:submit', '#', 103, 1, now(), NULL, NULL, '预算申报提交审批权限', '000000'); - --- 4. 三级菜单:审批人配置 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5120, '审批人配置', 5100, 2, 'approver-config', 'cw/budgetApproval/approverConfig/index', '', 1, 0, 'C', '0', '0', 'cw:approverConfig:list', 'peoples', 103, 1, now(), NULL, NULL, '审批人配置页面', '000000'); - --- 审批人配置 - 功能按钮 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5121, '审批人查询', 5120, 1, '', '', '', 1, 0, 'F', '0', '0', 'cw:approverConfig:query', '#', 103, 1, now(), NULL, NULL, '审批人配置查询权限', '000000'), -(5122, '审批人详情', 5120, 2, '', '', '', 1, 0, 'F', '0', '0', 'cw:approverConfig:detail', '#', 103, 1, now(), NULL, NULL, '审批人配置详情权限', '000000'), -(5123, '审批人新增', 5120, 3, '', '', '', 1, 0, 'F', '0', '0', 'cw:approverConfig:add', '#', 103, 1, now(), NULL, NULL, '审批人配置新增权限', '000000'), -(5124, '审批人修改', 5120, 4, '', '', '', 1, 0, 'F', '0', '0', 'cw:approverConfig:edit', '#', 103, 1, now(), NULL, NULL, '审批人配置修改权限', '000000'), -(5125, '审批人删除', 5120, 5, '', '', '', 1, 0, 'F', '0', '0', 'cw:approverConfig:remove', '#', 103, 1, now(), NULL, NULL, '审批人配置删除权限', '000000'); - --- 5. 三级菜单:审批记录查询 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5130, '审批记录查询', 5100, 3, 'approval-record', 'cw/budgetApproval/approvalRecord/index', '', 1, 0, 'C', '0', '0', 'cw:approvalRecord:list', 'documentation', 103, 1, now(), NULL, NULL, '审批记录查询页面', '000000'); - --- 审批记录查询 - 功能按钮 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5131, '审批记录查询', 5130, 1, '', '', '', 1, 0, 'F', '0', '0', 'cw:approvalRecord:query', '#', 103, 1, now(), NULL, NULL, '审批记录查询权限', '000000'), -(5132, '审批记录详情', 5130, 2, '', '', '', 1, 0, 'F', '0', '0', 'cw:approvalRecord:detail', '#', 103, 1, now(), NULL, NULL, '审批记录详情权限', '000000'), -(5133, '审批操作', 5130, 3, '', '', '', 1, 0, 'F', '0', '0', 'cw:approvalRecord:approve', '#', 103, 1, now(), NULL, NULL, '审批操作权限', '000000'), -(5134, '退回操作', 5130, 4, '', '', '', 1, 0, 'F', '0', '0', 'cw:approvalRecord:return', '#', 103, 1, now(), NULL, NULL, '退回操作权限', '000000'), -(5135, '审批记录导出', 5130, 5, '', '', '', 1, 0, 'F', '0', '0', 'cw:approvalRecord:export', '#', 103, 1, now(), NULL, NULL, '审批记录导出权限', '000000'); - --- 6. 三级菜单:支出明细管理 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5140, '支出明细管理', 5100, 4, 'expenditure-detail', 'cw/budgetApproval/expenditureDetail/index', '', 1, 0, 'C', '0', '0', 'cw:expenditureDetail:list', 'money', 103, 1, now(), NULL, NULL, '支出明细管理页面', '000000'); - --- 支出明细管理 - 功能按钮 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5141, '支出明细查询', 5140, 1, '', '', '', 1, 0, 'F', '0', '0', 'cw:expenditureDetail:query', '#', 103, 1, now(), NULL, NULL, '支出明细查询权限', '000000'), -(5142, '支出明细详情', 5140, 2, '', '', '', 1, 0, 'F', '0', '0', 'cw:expenditureDetail:detail', '#', 103, 1, now(), NULL, NULL, '支出明细详情权限', '000000'), -(5143, '支出明细新增', 5140, 3, '', '', '', 1, 0, 'F', '0', '0', 'cw:expenditureDetail:add', '#', 103, 1, now(), NULL, NULL, '支出明细新增权限', '000000'), -(5144, '支出明细修改', 5140, 4, '', '', '', 1, 0, 'F', '0', '0', 'cw:expenditureDetail:edit', '#', 103, 1, now(), NULL, NULL, '支出明细修改权限', '000000'), -(5145, '支出明细删除', 5140, 5, '', '', '', 1, 0, 'F', '0', '0', 'cw:expenditureDetail:remove', '#', 103, 1, now(), NULL, NULL, '支出明细删除权限', '000000'); - --- 7. 三级菜单:绩效指标管理 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5150, '绩效指标管理', 5100, 5, 'performance-indicator', 'cw/budgetApproval/performanceIndicator/index', '', 1, 0, 'C', '0', '0', 'cw:performanceIndicator:list', 'chart', 103, 1, now(), NULL, NULL, '绩效指标管理页面', '000000'); - --- 绩效指标管理 - 功能按钮 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5151, '绩效指标查询', 5150, 1, '', '', '', 1, 0, 'F', '0', '0', 'cw:performanceIndicator:query', '#', 103, 1, now(), NULL, NULL, '绩效指标查询权限', '000000'), -(5152, '绩效指标详情', 5150, 2, '', '', '', 1, 0, 'F', '0', '0', 'cw:performanceIndicator:detail', '#', 103, 1, now(), NULL, NULL, '绩效指标详情权限', '000000'), -(5153, '绩效指标新增', 5150, 3, '', '', '', 1, 0, 'F', '0', '0', 'cw:performanceIndicator:add', '#', 103, 1, now(), NULL, NULL, '绩效指标新增权限', '000000'), -(5154, '绩效指标修改', 5150, 4, '', '', '', 1, 0, 'F', '0', '0', 'cw:performanceIndicator:edit', '#', 103, 1, now(), NULL, NULL, '绩效指标修改权限', '000000'), -(5155, '绩效指标删除', 5150, 5, '', '', '', 1, 0, 'F', '0', '0', 'cw:performanceIndicator:remove', '#', 103, 1, now(), NULL, NULL, '绩效指标删除权限', '000000'); - --- 8. 三级菜单:附件管理 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5160, '附件管理', 5100, 6, 'attachment', 'cw/budgetApproval/attachment/index', '', 1, 0, 'C', '0', '0', 'cw:attachment:list', 'upload', 103, 1, now(), NULL, NULL, '附件管理页面', '000000'); - --- 附件管理 - 功能按钮 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark, tenant_id) VALUES -(5161, '附件查询', 5160, 1, '', '', '', 1, 0, 'F', '0', '0', 'cw:attachment:query', '#', 103, 1, now(), NULL, NULL, '附件查询权限', '000000'), -(5162, '附件详情', 5160, 2, '', '', '', 1, 0, 'F', '0', '0', 'cw:attachment:detail', '#', 103, 1, now(), NULL, NULL, '附件详情权限', '000000'), -(5163, '附件上传', 5160, 3, '', '', '', 1, 0, 'F', '0', '0', 'cw:attachment:upload', '#', 103, 1, now(), NULL, NULL, '附件上传权限', '000000'), -(5164, '附件下载', 5160, 4, '', '', '', 1, 0, 'F', '0', '0', 'cw:attachment:download', '#', 103, 1, now(), NULL, NULL, '附件下载权限', '000000'), -(5165, '附件删除', 5160, 5, '', '', '', 1, 0, 'F', '0', '0', 'cw:attachment:remove', '#', 103, 1, now(), NULL, NULL, '附件删除权限', '000000'); - --- 菜单创建完成,显示创建结果 -SELECT '财务项目预算审批系统菜单配置完成!' AS result; diff --git a/backend/script/sql/fix-college-vs-collage-fields.sql b/backend/script/sql/fix-college-vs-collage-fields.sql deleted file mode 100644 index 8b59a8f3..00000000 --- a/backend/script/sql/fix-college-vs-collage-fields.sql +++ /dev/null @@ -1,100 +0,0 @@ --- 修复学院字段拼写问题 --- 版本: 1.0.0 --- 创建日期: 2025-07-13 --- 描述: 检查并修复学院字段的拼写问题(college vs collage) - --- 第一步:检查字段情况 -SELECT - COUNT(*) as college_name_count, - (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_NAME = 'zsjy_enrollment_info' - AND COLUMN_NAME = 'collage_name' - AND TABLE_SCHEMA = DATABASE()) as collage_name_count, - (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_NAME = 'zsjy_enrollment_info' - AND COLUMN_NAME = 'college_id' - AND TABLE_SCHEMA = DATABASE()) as college_id_count, - (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_NAME = 'zsjy_enrollment_info' - AND COLUMN_NAME = 'collage_id' - AND TABLE_SCHEMA = DATABASE()) as collage_id_count -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_NAME = 'zsjy_enrollment_info' -AND COLUMN_NAME = 'college_name' -AND TABLE_SCHEMA = DATABASE(); - --- 第二步:如果存在collage_name而不存在college_name,则重命名字段 -SET @rename_collage_name_sql = ( - SELECT IF( - EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_NAME = 'zsjy_enrollment_info' - AND COLUMN_NAME = 'collage_name' - AND TABLE_SCHEMA = DATABASE()) - AND - NOT EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_NAME = 'zsjy_enrollment_info' - AND COLUMN_NAME = 'college_name' - AND TABLE_SCHEMA = DATABASE()), - 'ALTER TABLE zsjy_enrollment_info CHANGE COLUMN collage_name college_name varchar(100) COMMENT \'学院名称\'', - 'SELECT \'无需修改collage_name字段\' AS message' - ) -); - -PREPARE stmt FROM @rename_collage_name_sql; -EXECUTE stmt; -DEALLOCATE PREPARE stmt; - --- 第三步:如果存在collage_id而不存在college_id,则重命名字段 -SET @rename_collage_id_sql = ( - SELECT IF( - EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_NAME = 'zsjy_enrollment_info' - AND COLUMN_NAME = 'collage_id' - AND TABLE_SCHEMA = DATABASE()) - AND - NOT EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_NAME = 'zsjy_enrollment_info' - AND COLUMN_NAME = 'college_id' - AND TABLE_SCHEMA = DATABASE()), - 'ALTER TABLE zsjy_enrollment_info CHANGE COLUMN collage_id college_id varchar(20) COMMENT \'学院代码\'', - 'SELECT \'无需修改collage_id字段\' AS message' - ) -); - -PREPARE stmt FROM @rename_collage_id_sql; -EXECUTE stmt; -DEALLOCATE PREPARE stmt; - --- 第四步:如果不存在college_name,则添加该字段 -SET @add_college_name_sql = ( - SELECT IF( - NOT EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_NAME = 'zsjy_enrollment_info' - AND COLUMN_NAME = 'college_name' - AND TABLE_SCHEMA = DATABASE()), - 'ALTER TABLE zsjy_enrollment_info ADD COLUMN college_name varchar(100) COMMENT \'学院名称\'', - 'SELECT \'college_name字段已存在\' AS message' - ) -); - -PREPARE stmt FROM @add_college_name_sql; -EXECUTE stmt; -DEALLOCATE PREPARE stmt; - --- 第五步:如果不存在college_id,则添加该字段 -SET @add_college_id_sql = ( - SELECT IF( - NOT EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_NAME = 'zsjy_enrollment_info' - AND COLUMN_NAME = 'college_id' - AND TABLE_SCHEMA = DATABASE()), - 'ALTER TABLE zsjy_enrollment_info ADD COLUMN college_id varchar(20) COMMENT \'学院代码\'', - 'SELECT \'college_id字段已存在\' AS message' - ) -); - -PREPARE stmt FROM @add_college_id_sql; -EXECUTE stmt; -DEALLOCATE PREPARE stmt; - -SELECT '学院字段拼写修复完成!' AS result; diff --git a/backend/script/sql/fix-enrollment-college-fields.sql b/backend/script/sql/fix-enrollment-college-fields.sql deleted file mode 100644 index b58b7935..00000000 --- a/backend/script/sql/fix-enrollment-college-fields.sql +++ /dev/null @@ -1,78 +0,0 @@ --- 修复招生报名信息表中的学院相关字段 --- 版本: 1.0.0 --- 创建日期: 2025-07-25 --- 描述: 检查并添加学院名称和学院代码字段 - --- 检查college_name字段是否存在,如果不存在则添加 -SET @check_college_name = ( - SELECT COUNT(*) - FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_NAME = 'zsjy_enrollment_info' - AND COLUMN_NAME = 'college_name' - AND TABLE_SCHEMA = DATABASE() -); - -SET @alter_college_name = IF(@check_college_name = 0, - 'ALTER TABLE zsjy_enrollment_info ADD COLUMN college_name varchar(100) COMMENT \'学院名称\'', - 'SELECT \'college_name字段已存在,无需添加\' AS message'); - -PREPARE stmt FROM @alter_college_name; -EXECUTE stmt; -DEALLOCATE PREPARE stmt; - --- 检查college_id字段是否存在,如果不存在则添加 -SET @check_college_id = ( - SELECT COUNT(*) - FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_NAME = 'zsjy_enrollment_info' - AND COLUMN_NAME = 'college_id' - AND TABLE_SCHEMA = DATABASE() -); - -SET @alter_college_id = IF(@check_college_id = 0, - 'ALTER TABLE zsjy_enrollment_info ADD COLUMN college_id varchar(20) COMMENT \'学院代码\'', - 'SELECT \'college_id字段已存在,无需添加\' AS message'); - -PREPARE stmt FROM @alter_college_id; -EXECUTE stmt; -DEALLOCATE PREPARE stmt; - --- 检查数据字典是否存在 -SET @dict_exists = ( - SELECT COUNT(*) - FROM sys_dict_type - WHERE dict_type = 'zsjy_college' -); - --- 如果不存在则添加字典类型 -SET @insert_dict_type = IF(@dict_exists = 0, - 'INSERT INTO sys_dict_type(dict_name, dict_type, status, create_by, create_time, update_by, update_time, remark) VALUES (\'学院列表\', \'zsjy_college\', \'0\', \'1\', NOW(), \'1\', NOW(), \'招生系统学院列表\')', - 'SELECT \'zsjy_college字典类型已存在,无需添加\' AS message'); - -PREPARE stmt FROM @insert_dict_type; -EXECUTE stmt; -DEALLOCATE PREPARE stmt; - --- 检查字典数据是否存在 -SET @dict_data_exists = ( - SELECT COUNT(*) - FROM sys_dict_data - WHERE dict_type = 'zsjy_college' -); - --- 如果不存在则添加示例字典数据 -SET @insert_dict_data = IF(@dict_data_exists = 0, - 'INSERT INTO sys_dict_data(dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) - VALUES - (1, \'机电工程学院\', \'JDGC\', \'zsjy_college\', null, \'default\', \'Y\', \'0\', \'1\', NOW(), \'1\', NOW(), null), - (2, \'信息工程学院\', \'XXGC\', \'zsjy_college\', null, \'default\', \'N\', \'0\', \'1\', NOW(), \'1\', NOW(), null), - (3, \'艺术设计学院\', \'YSSJ\', \'zsjy_college\', null, \'default\', \'N\', \'0\', \'1\', NOW(), \'1\', NOW(), null), - (4, \'经济管理学院\', \'JJGL\', \'zsjy_college\', null, \'default\', \'N\', \'0\', \'1\', NOW(), \'1\', NOW(), null), - (5, \'医药健康学院\', \'YYJK\', \'zsjy_college\', null, \'default\', \'N\', \'0\', \'1\', NOW(), \'1\', NOW(), null)', - 'SELECT \'zsjy_college字典数据已存在,无需添加\' AS message'); - -PREPARE stmt FROM @insert_dict_data; -EXECUTE stmt; -DEALLOCATE PREPARE stmt; - -SELECT '招生报名信息表字段修复完成!' AS result; diff --git a/backend/script/sql/fix-enrollment-dict-data.sql b/backend/script/sql/fix-enrollment-dict-data.sql deleted file mode 100644 index 7a4fd88b..00000000 --- a/backend/script/sql/fix-enrollment-dict-data.sql +++ /dev/null @@ -1,56 +0,0 @@ --- ======================================== --- 修复招生就业模块字典数据脚本 --- 文件:fix-enrollment-dict-data.sql --- 创建时间:2025-07-03 --- 说明:修复性别显示和校服尺码问题 --- ======================================== - --- ---------------------------- --- 1、更新字典标签值 --- ---------------------------- - --- 修复性别字典数据 -UPDATE sys_dict_data -SET dict_label = '男', remark = '男性' -WHERE dict_type = 'zsjy_gender' AND dict_value = 'M'; - -UPDATE sys_dict_data -SET dict_label = '女', remark = '女性' -WHERE dict_type = 'zsjy_gender' AND dict_value = 'F'; - --- 确保校服尺码字典数据存在并可用 --- 如果不存在则插入 -INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark) -SELECT 480, '000000', 1, 'XS', 'XS', 'zsjy_uniform_size', '', 'default', 'N', '0', 1, NOW(), '加小号' -FROM dual -WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'zsjy_uniform_size' AND dict_value = 'XS'); - -INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark) -SELECT 481, '000000', 2, 'S', 'S', 'zsjy_uniform_size', '', 'default', 'N', '0', 1, NOW(), '小号' -FROM dual -WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'zsjy_uniform_size' AND dict_value = 'S'); - -INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark) -SELECT 482, '000000', 3, 'M', 'M', 'zsjy_uniform_size', '', 'default', 'Y', '0', 1, NOW(), '中号' -FROM dual -WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'zsjy_uniform_size' AND dict_value = 'M'); - -INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark) -SELECT 483, '000000', 4, 'L', 'L', 'zsjy_uniform_size', '', 'default', 'N', '0', 1, NOW(), '大号' -FROM dual -WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'zsjy_uniform_size' AND dict_value = 'L'); - -INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark) -SELECT 484, '000000', 5, 'XL', 'XL', 'zsjy_uniform_size', '', 'default', 'N', '0', 1, NOW(), '加大号' -FROM dual -WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'zsjy_uniform_size' AND dict_value = 'XL'); - -INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark) -SELECT 485, '000000', 6, 'XXL', 'XXL', 'zsjy_uniform_size', '', 'default', 'N', '0', 1, NOW(), '加加大号' -FROM dual -WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'zsjy_uniform_size' AND dict_value = 'XXL'); - -INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark) -SELECT 486, '000000', 7, 'XXXL', 'XXXL', 'zsjy_uniform_size', '', 'default', 'N', '0', 1, NOW(), '加加加大号' -FROM dual -WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'zsjy_uniform_size' AND dict_value = 'XXXL'); diff --git a/backend/script/sql/fix-zsjy-graduate-info-create-dept-field.sql b/backend/script/sql/fix-zsjy-graduate-info-create-dept-field.sql deleted file mode 100644 index 10b75674..00000000 --- a/backend/script/sql/fix-zsjy-graduate-info-create-dept-field.sql +++ /dev/null @@ -1,12 +0,0 @@ --- 修复毕业生信息表缺失的create_dept字段 --- 执行时间: 2025-01-26 24:25:00 --- 问题: MyBatis-Plus插入数据时报错 Unknown column 'create_dept' in 'field list' --- 原因: 数据库表缺少BaseEntity中的create_dept字段 - --- 添加create_dept字段 -ALTER TABLE zsjy_graduate_info -ADD COLUMN create_dept bigint(20) DEFAULT NULL COMMENT '创建部门' -AFTER remark; - --- 验证字段添加成功 --- DESCRIBE zsjy_graduate_info; \ No newline at end of file diff --git a/backend/script/sql/fix_all_graduate_dicts.sql b/backend/script/sql/fix_all_graduate_dicts.sql deleted file mode 100644 index 32b82ffe..00000000 --- a/backend/script/sql/fix_all_graduate_dicts.sql +++ /dev/null @@ -1,85 +0,0 @@ --- ================================================== --- 修复所有毕业生相关字典数据 - 解决下拉框为空问题 --- 创建日期: 2025-01-26 --- 说明: 修复所有使用过大dict_code值的毕业生相关字典数据 --- ================================================== - --- 1. 查看所有需要修复的字典类型 -SELECT '=== 需要修复的字典类型统计 ===' as info; -SELECT dict_type, COUNT(*) as count, MIN(dict_code) as min_code, MAX(dict_code) as max_code -FROM sys_dict_data -WHERE dict_type IN ( - 'zsjy_graduate_employment_status', - 'zsjy_graduate_company_type', - 'zsjy_graduate_salary_range', - 'zsjy_graduate_audit_status' -) -GROUP BY dict_type; - --- 2. 修复毕业生就业状态字典 -DELETE FROM sys_dict_data WHERE dict_type = 'zsjy_graduate_employment_status'; -INSERT INTO sys_dict_data ( - dict_code, tenant_id, dict_sort, dict_label, dict_value, - dict_type, css_class, list_class, is_default, - create_dept, create_by, create_time, update_by, update_time, remark -) VALUES -(220, '000000', 1, '待就业', '1', 'zsjy_graduate_employment_status', NULL, 'info', 'N', NULL, 103, NOW(), 103, NOW(), '未确定就业状态'), -(221, '000000', 2, '已签约', '2', 'zsjy_graduate_employment_status', NULL, 'success', 'N', NULL, 103, NOW(), 103, NOW(), '已签署就业协议'), -(222, '000000', 3, '升学', '3', 'zsjy_graduate_employment_status', NULL, 'primary', 'N', NULL, 103, NOW(), 103, NOW(), '继续深造学习'), -(223, '000000', 4, '出国', '4', 'zsjy_graduate_employment_status', NULL, 'warning', 'N', NULL, 103, NOW(), 103, NOW(), '出国留学或工作'), -(224, '000000', 5, '自主创业', '5', 'zsjy_graduate_employment_status', NULL, 'danger', 'N', NULL, 103, NOW(), 103, NOW(), '自主创业'), -(225, '000000', 6, '灵活就业', '6', 'zsjy_graduate_employment_status', NULL, 'info', 'N', NULL, 103, NOW(), 103, NOW(), '灵活就业'), -(226, '000000', 7, '暂不就业', '7', 'zsjy_graduate_employment_status', NULL, 'info', 'N', NULL, 103, NOW(), 103, NOW(), '暂不就业'), -(227, '000000', 8, '其他', '8', 'zsjy_graduate_employment_status', NULL, 'info', 'N', NULL, 103, NOW(), 103, NOW(), '其他情况'); - --- 3. 修复就业单位性质字典 -DELETE FROM sys_dict_data WHERE dict_type = 'zsjy_graduate_company_type'; -INSERT INTO sys_dict_data ( - dict_code, tenant_id, dict_sort, dict_label, dict_value, - dict_type, css_class, list_class, is_default, - create_dept, create_by, create_time, update_by, update_time, remark -) VALUES -(230, '000000', 1, '国有企业', '1', 'zsjy_graduate_company_type', NULL, 'primary', 'N', NULL, 103, NOW(), 103, NOW(), '国有企业'), -(231, '000000', 2, '私营企业', '2', 'zsjy_graduate_company_type', NULL, 'success', 'N', NULL, 103, NOW(), 103, NOW(), '私营企业'), -(232, '000000', 3, '外资企业', '3', 'zsjy_graduate_company_type', NULL, 'warning', 'N', NULL, 103, NOW(), 103, NOW(), '外资企业'), -(233, '000000', 4, '事业单位', '4', 'zsjy_graduate_company_type', NULL, 'info', 'N', NULL, 103, NOW(), 103, NOW(), '事业单位'), -(234, '000000', 5, '政府机关', '5', 'zsjy_graduate_company_type', NULL, 'danger', 'N', NULL, 103, NOW(), 103, NOW(), '政府机关'); - --- 4. 修复月薪范围字典 -DELETE FROM sys_dict_data WHERE dict_type = 'zsjy_graduate_salary_range'; -INSERT INTO sys_dict_data ( - dict_code, tenant_id, dict_sort, dict_label, dict_value, - dict_type, css_class, list_class, is_default, - create_dept, create_by, create_time, update_by, update_time, remark -) VALUES -(240, '000000', 1, '3000以下', '1', 'zsjy_graduate_salary_range', NULL, 'info', 'N', NULL, 103, NOW(), 103, NOW(), '月薪3000元以下'), -(241, '000000', 2, '3000-5000', '2', 'zsjy_graduate_salary_range', NULL, 'primary', 'N', NULL, 103, NOW(), 103, NOW(), '月薪3000-5000元'), -(242, '000000', 3, '5000-8000', '3', 'zsjy_graduate_salary_range', NULL, 'success', 'N', NULL, 103, NOW(), 103, NOW(), '月薪5000-8000元'), -(243, '000000', 4, '8000-12000', '4', 'zsjy_graduate_salary_range', NULL, 'warning', 'N', NULL, 103, NOW(), 103, NOW(), '月薪8000-12000元'), -(244, '000000', 5, '12000以上', '5', 'zsjy_graduate_salary_range', NULL, 'danger', 'N', NULL, 103, NOW(), 103, NOW(), '月薪12000元以上'); - --- 5. 修复毕业生信息审核状态字典 -DELETE FROM sys_dict_data WHERE dict_type = 'zsjy_graduate_audit_status'; -INSERT INTO sys_dict_data ( - dict_code, tenant_id, dict_sort, dict_label, dict_value, - dict_type, css_class, list_class, is_default, - create_dept, create_by, create_time, update_by, update_time, remark -) VALUES -(250, '000000', 1, '待审核', '0', 'zsjy_graduate_audit_status', NULL, 'info', 'Y', NULL, 103, NOW(), 103, NOW(), '待审核状态'), -(251, '000000', 2, '审核通过', '1', 'zsjy_graduate_audit_status', NULL, 'success', 'N', NULL, 103, NOW(), 103, NOW(), '审核通过'), -(252, '000000', 3, '审核拒绝', '2', 'zsjy_graduate_audit_status', NULL, 'danger', 'N', NULL, 103, NOW(), 103, NOW(), '审核拒绝'); - --- 6. 验证修复后的数据 -SELECT '=== 修复后的字典数据验证 ===' as info; - -SELECT '--- 毕业生就业状态 ---' as info; -SELECT dict_code, dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'zsjy_graduate_employment_status' ORDER BY dict_sort; - -SELECT '--- 就业单位性质 ---' as info; -SELECT dict_code, dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'zsjy_graduate_company_type' ORDER BY dict_sort; - -SELECT '--- 月薪范围 ---' as info; -SELECT dict_code, dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'zsjy_graduate_salary_range' ORDER BY dict_sort; - -SELECT '--- 审核状态 ---' as info; -SELECT dict_code, dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'zsjy_graduate_audit_status' ORDER BY dict_sort; diff --git a/backend/script/sql/fix_education_level_dict.sql b/backend/script/sql/fix_education_level_dict.sql deleted file mode 100644 index 2d9228dc..00000000 --- a/backend/script/sql/fix_education_level_dict.sql +++ /dev/null @@ -1,39 +0,0 @@ --- ================================================== --- 修复学历层次字典数据 - 下拉框为空问题解决 --- 创建日期: 2025-01-26 --- 说明: 重新创建学历层次字典数据,使用正常范围的dict_code值 --- ================================================== - --- 1. 查看修复前的数据 -SELECT '=== 修复前的学历层次字典 ===' as info; -SELECT dict_code, dict_label, dict_value, dict_sort -FROM sys_dict_data -WHERE dict_type = 'zsjy_education_level' -ORDER BY dict_sort; - --- 2. 删除现有的有问题的字典数据 -DELETE FROM sys_dict_data WHERE dict_type = 'zsjy_education_level'; - --- 3. 重新插入学历层次字典数据,使用正常的dict_code值 -INSERT INTO sys_dict_data ( - dict_code, tenant_id, dict_sort, dict_label, dict_value, - dict_type, css_class, list_class, is_default, - create_dept, create_by, create_time, update_by, update_time, remark -) VALUES -(214, '000000', 1, '专科', '1', 'zsjy_education_level', NULL, 'primary', 'N', NULL, 103, NOW(), 103, NOW(), '专科学历'), -(215, '000000', 2, '本科', '2', 'zsjy_education_level', NULL, 'success', 'N', NULL, 103, NOW(), 103, NOW(), '本科学历'), -(216, '000000', 3, '硕士', '3', 'zsjy_education_level', NULL, 'info', 'N', NULL, 103, NOW(), 103, NOW(), '硕士研究生学历'), -(217, '000000', 4, '博士', '4', 'zsjy_education_level', NULL, 'warning', 'N', NULL, 103, NOW(), 103, NOW(), '博士研究生学历'); - --- 4. 验证修复后的数据 -SELECT '=== 修复后的学历层次字典 ===' as info; -SELECT dict_code, dict_label, dict_value, dict_sort -FROM sys_dict_data -WHERE dict_type = 'zsjy_education_level' -ORDER BY dict_sort; - --- 5. 验证字典类型是否存在 -SELECT '=== 验证字典类型配置 ===' as info; -SELECT dict_type, dict_name -FROM sys_dict_type -WHERE dict_type = 'zsjy_education_level'; diff --git a/backend/script/sql/fix_graduate_menu_structure.sql b/backend/script/sql/fix_graduate_menu_structure.sql deleted file mode 100644 index 6dfdfd40..00000000 --- a/backend/script/sql/fix_graduate_menu_structure.sql +++ /dev/null @@ -1,84 +0,0 @@ --- ================================================== --- 修复毕业生菜单结构 - 404错误解决方案 --- 创建日期: 2025-01-26 --- 说明: 将错误的C类型嵌套改为正确的M类型目录+C类型页面结构 --- ================================================== - --- 1. 查看修复前的结构 -SELECT '=== 修复前的菜单结构 ===' as info; -SELECT menu_id, parent_id, menu_name, path, component, menu_type, visible -FROM sys_menu -WHERE menu_id BETWEEN 8800 AND 8804 -ORDER BY menu_id; - --- 2. 删除现有的错误权限关联 -DELETE FROM sys_role_menu WHERE menu_id BETWEEN 8801 AND 8816; - --- 3. 重新创建毕业生管理目录菜单(M类型) -INSERT INTO sys_menu ( - menu_id, menu_name, parent_id, order_num, path, component, - query_param, is_frame, is_cache, menu_type, visible, status, - perms, icon, create_by, create_time, update_by, update_time, remark -) VALUES ( - 8800, '毕业生管理', 8000, 3, 'graduate', NULL, - NULL, 1, 0, 'M', '0', '0', - NULL, 'education', 103, NOW(), 103, NOW(), '毕业生信息管理目录' -); - --- 4. 修改现有菜单的parent_id和path,改为正确的目录结构 -UPDATE sys_menu SET - parent_id = 8800, - path = 'info', - order_num = 1 -WHERE menu_id = 8801; - -UPDATE sys_menu SET - parent_id = 8800, - path = 'info/add', - order_num = 2, - visible = '1' -WHERE menu_id = 8802; - -UPDATE sys_menu SET - parent_id = 8800, - path = 'info/edit/:id(\\d+)', - order_num = 3, - visible = '1' -WHERE menu_id = 8803; - -UPDATE sys_menu SET - parent_id = 8800, - path = 'statistics', - order_num = 4 -WHERE menu_id = 8804; - --- 5. 重新分配权限给超级管理员 -INSERT INTO sys_role_menu (role_id, menu_id) VALUES -(1, 8800), -- 毕业生管理目录菜单 -(1, 8801), -- 毕业生信息子菜单 -(1, 8802), -- 毕业生信息新增页面 -(1, 8803), -- 毕业生信息编辑页面 -(1, 8804), -- 毕业生统计分析页面 -(1, 8810), -- 毕业生信息查询权限 -(1, 8811), -- 毕业生信息新增权限 -(1, 8812), -- 毕业生信息修改权限 -(1, 8813), -- 毕业生信息删除权限 -(1, 8814), -- 毕业生信息导出权限 -(1, 8815), -- 毕业生信息审核权限 -(1, 8816); -- 毕业生统计分析权限 - --- 6. 验证修复后的结构 -SELECT '=== 修复后的菜单结构 ===' as info; -SELECT menu_id, parent_id, menu_name, path, component, menu_type, visible -FROM sys_menu -WHERE menu_id BETWEEN 8800 AND 8804 -ORDER BY menu_id; - --- 7. 验证权限分配结果 -SELECT '=== 超级管理员权限分配验证 ===' as info; -SELECT rm.role_id, r.role_name, rm.menu_id, m.menu_name, m.path -FROM sys_role_menu rm -JOIN sys_role r ON rm.role_id = r.role_id -JOIN sys_menu m ON rm.menu_id = m.menu_id -WHERE rm.role_id = 1 AND rm.menu_id BETWEEN 8800 AND 8816 -ORDER BY rm.menu_id; diff --git a/backend/script/sql/import-student-data.sh b/backend/script/sql/import-student-data.sh deleted file mode 100755 index a040ea32..00000000 --- a/backend/script/sql/import-student-data.sh +++ /dev/null @@ -1,96 +0,0 @@ -#!/bin/bash - -# ========================================== -# 学生数据导入脚本 -# 版本:V1.1.0 -# 功能:快速导入150条学生信息数据 -# 数据库:从项目配置文件自动获取连接信息 -# 作者:Cursor AI 辅助 -# 时间:2025-01-14 (V1.1.0 更新) -# ========================================== - -# 颜色定义 -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -NC='\033[0m' # No Color - -# 脚本信息 -echo -e "${BLUE}===========================================${NC}" -echo -e "${BLUE}🎓 学生信息数据导入脚本${NC}" -echo -e "${BLUE}===========================================${NC}" - -# 检查SQL文件是否存在 -if [ ! -f "complete-student-data.sql" ]; then - echo -e "${RED}❌ 错误:找不到 complete-student-data.sql 文件${NC}" - echo -e "${YELLOW}💡 请确保文件存在于当前目录${NC}" - exit 1 -fi - -echo -e "${GREEN}✅ 找到数据文件:complete-student-data.sql${NC}" - -# 从项目配置文件获取数据库连接参数 -echo -e "${BLUE}📋 从项目配置获取数据库连接信息...${NC}" - -# 数据库连接参数(从 application-dev.yml 配置文件获取) -DB_HOST="47.99.164.66" -DB_PORT="3306" -DB_NAME="hzdyjs_xg" -DB_USER="root" -DB_PASSWORD="hn02le.34lkdLKD" - -# 显示连接信息 -echo -e "${BLUE}===========================================${NC}" -echo -e "${YELLOW}📊 数据库连接信息:${NC}" -echo -e "主机: ${DB_HOST}" -echo -e "端口: ${DB_PORT}" -echo -e "数据库: ${DB_NAME}" -echo -e "用户: ${DB_USER}" -echo -e "密码: ${DB_PASSWORD:0:3}***${DB_PASSWORD: -3}" -echo -e "${BLUE}===========================================${NC}" - -# 简化确认流程 -read -p "确认导入数据?(y/N): " CONFIRM -if [ "$CONFIRM" != "y" ] && [ "$CONFIRM" != "Y" ]; then - echo -e "${YELLOW}❌ 操作已取消${NC}" - exit 0 -fi - -echo -e "${BLUE}🚀 开始导入数据...${NC}" - -# 执行SQL文件 -mysql -h"$DB_HOST" -P"$DB_PORT" -u"$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" < complete-student-data.sql - -# 检查执行结果 -if [ $? -eq 0 ]; then - echo -e "${GREEN}===========================================${NC}" - echo -e "${GREEN}🎉 数据导入成功!${NC}" - echo -e "${GREEN}===========================================${NC}" - echo -e "${GREEN}📊 导入内容:${NC}" - echo -e " - 3个班级信息" - echo -e " - 150条学生信息" - echo -e " - 150条班级学生关联关系" - echo -e "${GREEN}===========================================${NC}" - echo -e "${YELLOW}👥 班级分布:${NC}" - echo -e " - 计算机科学与技术2024级1班:50人(男28,女22)" - echo -e " - 电子信息工程2024级1班:50人(男32,女18)" - echo -e " - 工商管理2024级1班:50人(男20,女30)" - echo -e "${GREEN}===========================================${NC}" -else - echo -e "${RED}===========================================${NC}" - echo -e "${RED}❌ 数据导入失败!${NC}" - echo -e "${RED}===========================================${NC}" - echo -e "${YELLOW}💡 可能的原因:${NC}" - echo -e " - 数据库连接失败" - echo -e " - 数据表不存在" - echo -e " - 权限不足" - echo -e " - 数据冲突" - echo -e "${YELLOW}🔧 建议检查:${NC}" - echo -e " - 确认数据库连接信息" - echo -e " - 确认数据表已创建" - echo -e " - 确认用户权限" - exit 1 -fi - -echo -e "${BLUE}🎓 学生信息数据导入完成!${NC}" diff --git a/backend/script/sql/insert-zsjy-major-dict-data.sql b/backend/script/sql/insert-zsjy-major-dict-data.sql deleted file mode 100644 index 33050718..00000000 --- a/backend/script/sql/insert-zsjy-major-dict-data.sql +++ /dev/null @@ -1,27 +0,0 @@ --- 插入专业字典数据 -INSERT INTO sys_dict_data VALUES (400, '000000', 1, '电气自动化设备安装与维修', 'DQZDHSB', 'zsjy_major', '', 'primary', 'N', 103, 1, sysdate(), NULL, NULL, '电气自动化设备安装与维修专业'); -INSERT INTO sys_dict_data VALUES (401, '000000', 2, '工业机器人应用与维护', 'GYJQR', 'zsjy_major', '', 'success', 'N', 103, 1, sysdate(), NULL, NULL, '工业机器人应用与维护专业'); -INSERT INTO sys_dict_data VALUES (402, '000000', 3, '无人机应用技术', 'WRJYY', 'zsjy_major', '', 'warning', 'N', 103, 1, sysdate(), NULL, NULL, '无人机应用技术专业'); -INSERT INTO sys_dict_data VALUES (403, '000000', 4, '工业互联网与大数据应用', 'GYHLW', 'zsjy_major', '', 'info', 'N', 103, 1, sysdate(), NULL, NULL, '工业互联网与大数据应用专业'); -INSERT INTO sys_dict_data VALUES (404, '000000', 5, '数字化设计与制造', 'SZHSJ', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '数字化设计与制造专业'); -INSERT INTO sys_dict_data VALUES (405, '000000', 6, '智能制作技术应用', 'ZNZZ', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '智能制作技术应用专业'); -INSERT INTO sys_dict_data VALUES (406, '000000', 7, '汽车维修', 'QCWX', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '汽车维修专业'); -INSERT INTO sys_dict_data VALUES (407, '000000', 8, '产品检测与质量控制', 'CPJC', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '产品检测与质量控制专业'); -INSERT INTO sys_dict_data VALUES (408, '000000', 9, '中药', 'ZY', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '中药专业'); -INSERT INTO sys_dict_data VALUES (409, '000000', 10, '药物制剂(预备技师)', 'YWZJ_YB', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '药物制剂(预备技师)专业'); -INSERT INTO sys_dict_data VALUES (410, '000000', 11, '药物制剂(高级工)', 'YWZJ_GJ', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '药物制剂(高级工)专业'); -INSERT INTO sys_dict_data VALUES (411, '000000', 12, '药品营销', 'YPYX', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '药品营销专业'); -INSERT INTO sys_dict_data VALUES (412, '000000', 13, '健康服务与管理', 'JKFW', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '健康服务与管理专业'); -INSERT INTO sys_dict_data VALUES (413, '000000', 14, '园林技术(预备技师)', 'YLJS_YB', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '园林技术(预备技师)专业'); -INSERT INTO sys_dict_data VALUES (414, '000000', 15, '园林技术(高级工)', 'YLJS_GJ', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '园林技术(高级工)专业'); -INSERT INTO sys_dict_data VALUES (415, '000000', 16, '园林技术(园林景观与工程施工)', 'YLJS_JG', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '园林技术(园林景观与工程施工)专业'); -INSERT INTO sys_dict_data VALUES (416, '000000', 17, '环境艺术设计', 'HJYS', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '环境艺术设计专业'); -INSERT INTO sys_dict_data VALUES (417, '000000', 18, '酒店管理(预备技师)', 'JDGL_YB', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '酒店管理(预备技师)专业'); -INSERT INTO sys_dict_data VALUES (418, '000000', 19, '酒店管理(高级工)', 'JDGL_GJ', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '酒店管理(高级工)专业'); -INSERT INTO sys_dict_data VALUES (419, '000000', 20, '烹饪(中式烹调)', 'PR_ZS', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '烹饪(中式烹调)专业'); -INSERT INTO sys_dict_data VALUES (420, '000000', 21, '烹饪(中西式面点)', 'PR_MD', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '烹饪(中西式面点)专业'); -INSERT INTO sys_dict_data VALUES (421, '000000', 22, '电子商务', 'DZSW', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '电子商务专业'); -INSERT INTO sys_dict_data VALUES (422, '000000', 23, '数字媒体技术应用', 'SZMT', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '数字媒体技术应用专业'); -INSERT INTO sys_dict_data VALUES (423, '000000', 24, '人工智能技术应用', 'RGZN', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '人工智能技术应用专业'); -INSERT INTO sys_dict_data VALUES (424, '000000', 25, '网络与信息安全', 'WLXX', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '网络与信息安全专业'); -INSERT INTO sys_dict_data VALUES (425, '000000', 26, '美术设计与制作', 'MSSJ', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '美术设计与制作专业'); \ No newline at end of file diff --git a/backend/script/sql/scholarship-review-menu-permissions.sql b/backend/script/sql/scholarship-review-menu-permissions.sql deleted file mode 100644 index 8db3e800..00000000 --- a/backend/script/sql/scholarship-review-menu-permissions.sql +++ /dev/null @@ -1,75 +0,0 @@ --- 奖学金审核管理菜单和权限配置 --- 专注于审核功能,不包含申请提交功能 --- Date: 2025-01-27 --- Author: system - --- 使用正确的数据库 -USE hzdyjs_xg; - --- 设置会话字符集 -SET NAMES utf8mb4; -SET CHARACTER_SET_CLIENT = utf8mb4; -SET CHARACTER_SET_CONNECTION = utf8mb4; -SET CHARACTER_SET_RESULTS = utf8mb4; - --- 删除可能存在的旧菜单(从子级开始删除) -DELETE FROM sys_menu WHERE menu_id >= 2100 AND menu_id <= 2120; - --- 1. 奖学金审核管理目录 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) VALUES -(2100, '奖学金审核管理', 1, 5, 'scholarshipReview', NULL, 1, 0, 'M', '0', '0', NULL, 'form', 1, NOW(), 1, NOW(), '奖学金审核管理目录'); - --- 2. 我的审核任务菜单 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) VALUES -(2101, '我的审核任务', 2100, 1, 'myTasks', 'jcbt/scholarship/review/myTasks', 1, 0, 'C', '0', '0', 'jcbt:review:list', 'form', 1, NOW(), 1, NOW(), '我的审核任务菜单'); - --- 3. 审核历史菜单 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) VALUES -(2102, '审核历史', 2100, 2, 'history', 'jcbt/scholarship/review/history', 1, 0, 'C', '0', '0', 'jcbt:review:history', 'time', 1, NOW(), 1, NOW(), '审核历史记录菜单'); - --- 4. 审核记录查询权限 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) VALUES -(2103, '审核记录查询', 2101, 1, '', '', 1, 0, 'F', '0', '0', 'jcbt:review:query', '#', 1, NOW(), 1, NOW(), '审核记录查询权限'); - --- 5. 审核操作权限(通过/拒绝/退回) -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) VALUES -(2104, '审核操作', 2101, 2, '', '', 1, 0, 'F', '0', '0', 'jcbt:review:approve', '#', 1, NOW(), 1, NOW(), '审核通过/拒绝/退回操作权限'); - --- 6. 批量审核权限 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) VALUES -(2105, '批量审核', 2101, 3, '', '', 1, 0, 'F', '0', '0', 'jcbt:review:batchApprove', '#', 1, NOW(), 1, NOW(), '批量审核操作权限'); - --- 7. 审核转移权限 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) VALUES -(2106, '审核转移', 2101, 4, '', '', 1, 0, 'F', '0', '0', 'jcbt:review:transfer', '#', 1, NOW(), 1, NOW(), '审核任务转移权限'); - --- 8. 审核撤回权限 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) VALUES -(2107, '审核撤回', 2101, 5, '', '', 1, 0, 'F', '0', '0', 'jcbt:review:revoke', '#', 1, NOW(), 1, NOW(), '审核结果撤回权限'); - --- 9. 待审核列表权限 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) VALUES -(2108, '待审核列表', 2101, 6, '', '', 1, 0, 'F', '0', '0', 'jcbt:review:pending', '#', 1, NOW(), 1, NOW(), '查看待审核列表权限'); - --- 10. 审核详情权限 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) VALUES -(2109, '审核详情', 2101, 7, '', '', 1, 0, 'F', '0', '0', 'jcbt:review:detail', '#', 1, NOW(), 1, NOW(), '查看审核详情权限'); - --- 11. 审核统计权限 -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) VALUES -(2110, '审核统计', 2101, 8, '', '', 1, 0, 'F', '0', '0', 'jcbt:review:statistics', '#', 1, NOW(), 1, NOW(), '审核数据统计权限'); - --- 12. 导出权限(审核记录导出) -INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) VALUES -(2111, '审核记录导出', 2101, 9, '', '', 1, 0, 'F', '0', '0', 'jcbt:review:export', '#', 1, NOW(), 1, NOW(), '审核记录导出权限'); - --- 验证插入结果 -SELECT COUNT(*) as '插入菜单数量' FROM sys_menu WHERE menu_id >= 2100 AND menu_id <= 2111; - --- 显示插入的菜单 -SELECT menu_id, menu_name, parent_id, menu_type, perms, remark -FROM sys_menu -WHERE menu_id >= 2100 AND menu_id <= 2111 -ORDER BY menu_id; - -COMMIT; diff --git a/backend/script/sql/test-import.sh b/backend/script/sql/test-import.sh deleted file mode 100755 index 08953de0..00000000 --- a/backend/script/sql/test-import.sh +++ /dev/null @@ -1,79 +0,0 @@ -#!/bin/bash - -# ========================================== -# 学生数据导入测试脚本 -# 版本:V1.0.0 -# 功能:演示自动化导入流程 -# 作者:Cursor AI 辅助 -# 时间:2025-01-14 -# ========================================== - -echo "🧪 学生数据导入脚本测试演示" -echo "==========================================" -echo "" - -echo "📋 测试流程:" -echo "1. 检查文件是否存在" -echo "2. 显示数据库连接信息" -echo "3. 模拟导入确认" -echo "4. 显示预期结果" -echo "" - -# 检查文件 -echo "🔍 检查必要文件..." -if [ -f "complete-student-data.sql" ]; then - echo "✅ complete-student-data.sql 文件存在" - FILE_SIZE=$(wc -l < complete-student-data.sql) - echo " 文件大小: ${FILE_SIZE} 行" -else - echo "❌ complete-student-data.sql 文件不存在" - echo "💡 请先运行: python3 generate_student_data.py" - exit 1 -fi - -if [ -f "import-student-data.sh" ]; then - echo "✅ import-student-data.sh 脚本存在" - echo " 权限: $(ls -l import-student-data.sh | cut -d' ' -f1)" -else - echo "❌ import-student-data.sh 脚本不存在" - exit 1 -fi - -echo "" - -# 显示连接信息 -echo "🔗 数据库连接信息(从配置文件获取):" -echo " 主机: 47.99.164.66:3306" -echo " 数据库: hzdyjs_xg" -echo " 用户: root" -echo " 密码: hn0***KLD (已隐藏)" -echo "" - -# 显示导入内容 -echo "📊 将要导入的数据:" -echo " - 3个班级信息" -echo " - 150条学生信息" -echo " - 150条班级学生关联关系" -echo "" - -echo "👥 班级分布:" -echo " - 计算机科学与技术2024级1班:50人(男28,女22)" -echo " - 电子信息工程2024级1班:50人(男32,女18)" -echo " - 工商管理2024级1班:50人(男20,女30)" -echo "" - -echo "🚀 使用方法:" -echo " cd backend/script/sql" -echo " ./import-student-data.sh" -echo " # 输入 y 确认导入" -echo "" - -echo "✨ 改进效果:" -echo " - 无需手动输入5个数据库参数" -echo " - 自动从配置文件获取连接信息" -echo " - 一键确认即可完成导入" -echo " - 减少操作错误和时间成本" -echo "" - -echo "🎉 测试演示完成!" -echo "==========================================" diff --git a/backend/script/sql/xg-dict-data.sql b/backend/script/sql/xg-dict-data.sql deleted file mode 100644 index 23091414..00000000 --- a/backend/script/sql/xg-dict-data.sql +++ /dev/null @@ -1,35 +0,0 @@ --- ======================================== --- 学工模块字典数据初始化脚本 --- 文件:xg-dict-data.sql --- 创建时间:2025-01-14 --- 说明:添加班级信息管理所需的字典数据 --- ======================================== - --- ---------------------------- --- 1、添加字典类型 --- ---------------------------- - --- 班级类型字典 -INSERT INTO sys_dict_type VALUES (100, '000000', '班级类型', 'xg_class_type', 103, 1, sysdate(), NULL, NULL, '班级类型列表'); - --- 班级状态字典 -INSERT INTO sys_dict_type VALUES (101, '000000', '班级状态', 'xg_class_status', 103, 1, sysdate(), NULL, NULL, '班级状态列表'); - --- ---------------------------- --- 2、添加字典数据 --- ---------------------------- - --- 班级类型字典数据 -INSERT INTO sys_dict_data VALUES (200, '000000', 1, '普通班级', 'regular', 'xg_class_type', '', 'default', 'Y', 103, 1, sysdate(), NULL, NULL, '普通班级'); -INSERT INTO sys_dict_data VALUES (201, '000000', 2, '荣誉班级', 'honor', 'xg_class_type', '', 'warning', 'N', 103, 1, sysdate(), NULL, NULL, '荣誉班级'); -INSERT INTO sys_dict_data VALUES (202, '000000', 3, '实验班级', 'experimental', 'xg_class_type', '', 'primary', 'N', 103, 1, sysdate(), NULL, NULL, '实验班级'); -INSERT INTO sys_dict_data VALUES (203, '000000', 4, '特殊班级', 'special', 'xg_class_type', '', 'danger', 'N', 103, 1, sysdate(), NULL, NULL, '特殊班级'); - --- 班级状态字典数据 -INSERT INTO sys_dict_data VALUES (210, '000000', 1, '正常', '1', 'xg_class_status', '', 'success', 'Y', 103, 1, sysdate(), NULL, NULL, '正常状态'); -INSERT INTO sys_dict_data VALUES (211, '000000', 2, '暂停', '2', 'xg_class_status', '', 'warning', 'N', 103, 1, sysdate(), NULL, NULL, '暂停招生'); -INSERT INTO sys_dict_data VALUES (212, '000000', 3, '毕业', '3', 'xg_class_status', '', 'info', 'N', 103, 1, sysdate(), NULL, NULL, '已毕业'); -INSERT INTO sys_dict_data VALUES (213, '000000', 4, '解散', '4', 'xg_class_status', '', 'danger', 'N', 103, 1, sysdate(), NULL, NULL, '已解散'); - --- 提交 -COMMIT; diff --git a/backend/script/sql/xg_dorm_manager.sql b/backend/script/sql/xg_dorm_manager.sql deleted file mode 100644 index a8f35995..00000000 --- a/backend/script/sql/xg_dorm_manager.sql +++ /dev/null @@ -1,29 +0,0 @@ --- ---------------------------- --- 宿舍管理员表 --- ---------------------------- -drop table if exists xg_dorm_manager; -create table xg_dorm_manager ( - id bigint(20) not null comment '主键', - name varchar(100) not null comment '管理员姓名', - phone varchar(11) not null comment '手机号码', - sex int(1) default 0 comment '性别(0男 1女 2未知)', - manager_type int(1) default 0 comment '管理类型(0全校 1校区 2宿舍区 3宿舍楼)', - scope varchar(100) comment '管理范围(校区/宿舍区/宿舍楼)', - user_id bigint(20) comment '关联用户ID', - remark varchar(500) comment '备注', - create_by bigint(20) comment '创建者', - create_time datetime comment '创建时间', - update_by bigint(20) comment '更新者', - update_time datetime comment '更新时间', - deleted char(1) default '0' comment '删除标志(0代表存在 2代表删除)', - tenant_id varchar(20) default '000000' comment '租户编号', - primary key (id) -) engine=innodb comment = '宿舍管理员信息表'; - --- ---------------------------- --- 初始数据 --- ---------------------------- -INSERT INTO xg_dorm_manager(id, name, phone, sex, manager_type, scope, user_id, remark, create_by, create_time, update_by, update_time, deleted, tenant_id) -VALUES (1, '张三', '13800000001', 0, 0, null, 2, '全校主管', 1, sysdate(), 1, sysdate(), '0', '000000'); -INSERT INTO xg_dorm_manager(id, name, phone, sex, manager_type, scope, user_id, remark, create_by, create_time, update_by, update_time, deleted, tenant_id) -VALUES (2, '李四', '13800000002', 1, 0, null, 3, '全校副主管', 1, sysdate(), 1, sysdate(), '0', '000000'); diff --git a/backend/script/sql/zsjy-enrollment-dict-data.sql b/backend/script/sql/zsjy-enrollment-dict-data.sql deleted file mode 100644 index aec6d32c..00000000 --- a/backend/script/sql/zsjy-enrollment-dict-data.sql +++ /dev/null @@ -1,75 +0,0 @@ --- ======================================== --- 招生就业模块字典数据初始化脚本 --- 文件:zsjy-enrollment-dict-data.sql --- 创建时间:2025-01-20 --- 说明:添加招生报名管理所需的字典数据 --- ======================================== - --- ---------------------------- --- 1、添加字典类型 --- ---------------------------- - --- 招生性别字典(使用M/F格式,与数据库字段一致) -INSERT INTO sys_dict_type VALUES (299, '000000', '招生性别', 'zsjy_gender', 103, 1, sysdate(), NULL, NULL, '招生性别列表'); - --- 招生专业字典 -INSERT INTO sys_dict_type VALUES (300, '000000', '招生专业', 'zsjy_major', 103, 1, sysdate(), NULL, NULL, '招生专业列表'); - --- 报名状态字典 -INSERT INTO sys_dict_type VALUES (301, '000000', '报名状态', 'zsjy_enrollment_status', 103, 1, sysdate(), NULL, NULL, '报名状态列表'); - --- 校服尺码字典 -INSERT INTO sys_dict_type VALUES (302, '000000', '校服尺码', 'zsjy_uniform_size', 103, 1, sysdate(), NULL, NULL, '校服尺码列表'); - --- ---------------------------- --- 2、添加字典数据 --- ---------------------------- - --- 招生性别字典数据(使用M/F格式) -INSERT INTO sys_dict_data VALUES (390, '000000', 1, '男', 'M', 'zsjy_gender', '', 'primary', 'Y', 103, 1, sysdate(), NULL, NULL, '男性'); -INSERT INTO sys_dict_data VALUES (391, '000000', 2, '女', 'F', 'zsjy_gender', '', 'danger', 'N', 103, 1, sysdate(), NULL, NULL, '女性'); - --- 招生专业字典数据(基于真实专业名称) -INSERT INTO sys_dict_data VALUES (400, '000000', 1, '电气自动化设备安装与维修', 'DQZDHSB', 'zsjy_major', '', 'primary', 'N', 103, 1, sysdate(), NULL, NULL, '电气自动化设备安装与维修专业'); -INSERT INTO sys_dict_data VALUES (401, '000000', 2, '工业机器人应用与维护', 'GYJQR', 'zsjy_major', '', 'success', 'N', 103, 1, sysdate(), NULL, NULL, '工业机器人应用与维护专业'); -INSERT INTO sys_dict_data VALUES (402, '000000', 3, '无人机应用技术', 'WRJYY', 'zsjy_major', '', 'warning', 'N', 103, 1, sysdate(), NULL, NULL, '无人机应用技术专业'); -INSERT INTO sys_dict_data VALUES (403, '000000', 4, '工业互联网与大数据应用', 'GYHLW', 'zsjy_major', '', 'info', 'N', 103, 1, sysdate(), NULL, NULL, '工业互联网与大数据应用专业'); -INSERT INTO sys_dict_data VALUES (404, '000000', 5, '数字化设计与制造', 'SZHSJ', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '数字化设计与制造专业'); -INSERT INTO sys_dict_data VALUES (405, '000000', 6, '智能制作技术应用', 'ZNZZ', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '智能制作技术应用专业'); -INSERT INTO sys_dict_data VALUES (406, '000000', 7, '汽车维修', 'QCWX', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '汽车维修专业'); -INSERT INTO sys_dict_data VALUES (407, '000000', 8, '产品检测与质量控制', 'CPJC', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '产品检测与质量控制专业'); -INSERT INTO sys_dict_data VALUES (408, '000000', 9, '中药', 'ZY', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '中药专业'); -INSERT INTO sys_dict_data VALUES (409, '000000', 10, '药物制剂(预备技师)', 'YWZJ_YB', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '药物制剂(预备技师)专业'); -INSERT INTO sys_dict_data VALUES (410, '000000', 11, '药物制剂(高级工)', 'YWZJ_GJ', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '药物制剂(高级工)专业'); -INSERT INTO sys_dict_data VALUES (411, '000000', 12, '药品营销', 'YPYX', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '药品营销专业'); -INSERT INTO sys_dict_data VALUES (412, '000000', 13, '健康服务与管理', 'JKFW', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '健康服务与管理专业'); -INSERT INTO sys_dict_data VALUES (413, '000000', 14, '园林技术(预备技师)', 'YLJS_YB', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '园林技术(预备技师)专业'); -INSERT INTO sys_dict_data VALUES (414, '000000', 15, '园林技术(高级工)', 'YLJS_GJ', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '园林技术(高级工)专业'); -INSERT INTO sys_dict_data VALUES (415, '000000', 16, '园林技术(园林景观与工程施工)', 'YLJS_JG', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '园林技术(园林景观与工程施工)专业'); -INSERT INTO sys_dict_data VALUES (416, '000000', 17, '环境艺术设计', 'HJYS', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '环境艺术设计专业'); -INSERT INTO sys_dict_data VALUES (417, '000000', 18, '酒店管理(预备技师)', 'JDGL_YB', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '酒店管理(预备技师)专业'); -INSERT INTO sys_dict_data VALUES (418, '000000', 19, '酒店管理(高级工)', 'JDGL_GJ', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '酒店管理(高级工)专业'); -INSERT INTO sys_dict_data VALUES (419, '000000', 20, '烹饪(中式烹调)', 'PR_ZS', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '烹饪(中式烹调)专业'); -INSERT INTO sys_dict_data VALUES (420, '000000', 21, '烹饪(中西式面点)', 'PR_MD', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '烹饪(中西式面点)专业'); -INSERT INTO sys_dict_data VALUES (421, '000000', 22, '电子商务', 'DZSW', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '电子商务专业'); -INSERT INTO sys_dict_data VALUES (422, '000000', 23, '数字媒体技术应用', 'SZMT', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '数字媒体技术应用专业'); -INSERT INTO sys_dict_data VALUES (423, '000000', 24, '人工智能技术应用', 'RGZN', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '人工智能技术应用专业'); -INSERT INTO sys_dict_data VALUES (424, '000000', 25, '网络与信息安全', 'WLXX', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '网络与信息安全专业'); -INSERT INTO sys_dict_data VALUES (425, '000000', 26, '美术设计与制作', 'MSSJ', 'zsjy_major', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '美术设计与制作专业'); - --- 报名状态字典数据 -INSERT INTO sys_dict_data VALUES (450, '000000', 1, '待审核', '0', 'zsjy_enrollment_status', '', 'info', 'Y', 103, 1, sysdate(), NULL, NULL, '报名信息待审核'); -INSERT INTO sys_dict_data VALUES (451, '000000', 2, '审核中', '1', 'zsjy_enrollment_status', '', 'warning', 'N', 103, 1, sysdate(), NULL, NULL, '报名信息审核中'); -INSERT INTO sys_dict_data VALUES (452, '000000', 3, '审核通过', '2', 'zsjy_enrollment_status', '', 'success', 'N', 103, 1, sysdate(), NULL, NULL, '报名信息审核通过'); -INSERT INTO sys_dict_data VALUES (453, '000000', 4, '待确认', '3', 'zsjy_enrollment_status', '', 'primary', 'N', 103, 1, sysdate(), NULL, NULL, '录取待确认'); -INSERT INTO sys_dict_data VALUES (454, '000000', 5, '录取完成', '4', 'zsjy_enrollment_status', '', 'success', 'N', 103, 1, sysdate(), NULL, NULL, '录取完成'); -INSERT INTO sys_dict_data VALUES (459, '000000', 9, '审核未通过', '9', 'zsjy_enrollment_status', '', 'danger', 'N', 103, 1, sysdate(), NULL, NULL, '报名信息审核未通过'); - --- 校服尺码字典数据 -INSERT INTO sys_dict_data VALUES (480, '000000', 1, 'XS', 'XS', 'zsjy_uniform_size', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '加小号'); -INSERT INTO sys_dict_data VALUES (481, '000000', 2, 'S', 'S', 'zsjy_uniform_size', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '小号'); -INSERT INTO sys_dict_data VALUES (482, '000000', 3, 'M', 'M', 'zsjy_uniform_size', '', 'default', 'Y', 103, 1, sysdate(), NULL, NULL, '中号'); -INSERT INTO sys_dict_data VALUES (483, '000000', 4, 'L', 'L', 'zsjy_uniform_size', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '大号'); -INSERT INTO sys_dict_data VALUES (484, '000000', 5, 'XL', 'XL', 'zsjy_uniform_size', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '加大号'); -INSERT INTO sys_dict_data VALUES (485, '000000', 6, 'XXL', 'XXL', 'zsjy_uniform_size', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '加加大号'); -INSERT INTO sys_dict_data VALUES (486, '000000', 7, 'XXXL', 'XXXL', 'zsjy_uniform_size', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL, '加加加大号'); \ No newline at end of file diff --git a/backend/script/sql/zsjy_graduate_dict_data.sql b/backend/script/sql/zsjy_graduate_dict_data.sql deleted file mode 100644 index a516be2e..00000000 --- a/backend/script/sql/zsjy_graduate_dict_data.sql +++ /dev/null @@ -1,61 +0,0 @@ --- 毕业生信息管理字典数据插入脚本 - --- 1. 创建学历层次字典类型 -INSERT INTO sys_dict_type (dict_id, tenant_id, dict_name, dict_type, create_by, create_time, remark) -VALUES (2000001, '000000', '学历层次', 'zsjy_education_level', 1, NOW(), '学历层次列表'); - --- 2. 创建就业状态字典类型 -INSERT INTO sys_dict_type (dict_id, tenant_id, dict_name, dict_type, create_by, create_time, remark) -VALUES (2000002, '000000', '毕业生就业状态', 'zsjy_graduate_employment_status', 1, NOW(), '毕业生就业状态'); - --- 3. 创建单位性质字典类型 -INSERT INTO sys_dict_type (dict_id, tenant_id, dict_name, dict_type, create_by, create_time, remark) -VALUES (2000003, '000000', '就业单位性质', 'zsjy_graduate_company_type', 1, NOW(), '就业单位性质'); - --- 4. 创建月薪范围字典类型 -INSERT INTO sys_dict_type (dict_id, tenant_id, dict_name, dict_type, create_by, create_time, remark) -VALUES (2000004, '000000', '月薪范围', 'zsjy_graduate_salary_range', 1, NOW(), '月薪范围'); - --- 5. 创建审核状态字典类型 -INSERT INTO sys_dict_type (dict_id, tenant_id, dict_name, dict_type, create_by, create_time, remark) -VALUES (2000005, '000000', '毕业生信息审核状态', 'zsjy_graduate_audit_status', 1, NOW(), '审核状态'); - --- 插入学历层次字典数据 -INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, remark) VALUES -(2000001, '000000', 1, '专科', '1', 'zsjy_education_level', '', '', 'N', 1, NOW(), '专科'), -(2000002, '000000', 2, '本科', '2', 'zsjy_education_level', '', '', 'Y', 1, NOW(), '本科'), -(2000003, '000000', 3, '硕士', '3', 'zsjy_education_level', '', '', 'N', 1, NOW(), '硕士'), -(2000004, '000000', 4, '博士', '4', 'zsjy_education_level', '', '', 'N', 1, NOW(), '博士'); - --- 插入就业状态字典数据 -INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, remark) VALUES -(2000011, '000000', 1, '已就业(劳动合同)', '1', 'zsjy_graduate_employment_status', '', 'success', 'N', 1, NOW(), '签订劳动合同'), -(2000012, '000000', 2, '已就业(就业协议)', '2', 'zsjy_graduate_employment_status', '', 'success', 'N', 1, NOW(), '签订就业协议'), -(2000013, '000000', 3, '自主创业', '3', 'zsjy_graduate_employment_status', '', 'warning', 'N', 1, NOW(), '自主创业'), -(2000014, '000000', 4, '升学(国内)', '4', 'zsjy_graduate_employment_status', '', 'info', 'N', 1, NOW(), '国内升学'), -(2000015, '000000', 5, '升学(国外)', '5', 'zsjy_graduate_employment_status', '', 'info', 'N', 1, NOW(), '国外升学'), -(2000016, '000000', 6, '应征入伍', '6', 'zsjy_graduate_employment_status', '', 'primary', 'N', 1, NOW(), '应征入伍'), -(2000017, '000000', 7, '待就业', '7', 'zsjy_graduate_employment_status', '', 'danger', 'Y', 1, NOW(), '待就业'), -(2000018, '000000', 8, '暂不就业', '8', 'zsjy_graduate_employment_status', '', 'default', 'N', 1, NOW(), '暂不就业'); - --- 插入单位性质字典数据 -INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, remark) VALUES -(2000021, '000000', 1, '国有企业', '1', 'zsjy_graduate_company_type', '', '', 'N', 1, NOW(), '国有企业'), -(2000022, '000000', 2, '私营企业', '2', 'zsjy_graduate_company_type', '', '', 'Y', 1, NOW(), '私营企业'), -(2000023, '000000', 3, '外资企业', '3', 'zsjy_graduate_company_type', '', '', 'N', 1, NOW(), '外资企业'), -(2000024, '000000', 4, '机关事业单位', '4', 'zsjy_graduate_company_type', '', '', 'N', 1, NOW(), '机关事业单位'), -(2000025, '000000', 5, '其他', '5', 'zsjy_graduate_company_type', '', '', 'N', 1, NOW(), '其他'); - --- 插入月薪范围字典数据 -INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, remark) VALUES -(2000031, '000000', 1, '3000以下', '1', 'zsjy_graduate_salary_range', '', '', 'N', 1, NOW(), '3000以下'), -(2000032, '000000', 2, '3000-5000', '2', 'zsjy_graduate_salary_range', '', '', 'Y', 1, NOW(), '3000-5000'), -(2000033, '000000', 3, '5000-8000', '3', 'zsjy_graduate_salary_range', '', '', 'N', 1, NOW(), '5000-8000'), -(2000034, '000000', 4, '8000-12000', '4', 'zsjy_graduate_salary_range', '', '', 'N', 1, NOW(), '8000-12000'), -(2000035, '000000', 5, '12000以上', '5', 'zsjy_graduate_salary_range', '', '', 'N', 1, NOW(), '12000以上'); - --- 插入审核状态字典数据 -INSERT INTO sys_dict_data (dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, remark) VALUES -(2000041, '000000', 1, '待审核', '0', 'zsjy_graduate_audit_status', '', 'warning', 'Y', 1, NOW(), '待审核'), -(2000042, '000000', 2, '已审核', '1', 'zsjy_graduate_audit_status', '', 'success', 'N', 1, NOW(), '已审核'), -(2000043, '000000', 3, '审核拒绝', '2', 'zsjy_graduate_audit_status', '', 'danger', 'N', 1, NOW(), '审核拒绝'); diff --git a/backend/script/sql/zsjy_graduate_info.sql b/backend/script/sql/zsjy_graduate_info.sql deleted file mode 100644 index c3906f15..00000000 --- a/backend/script/sql/zsjy_graduate_info.sql +++ /dev/null @@ -1,129 +0,0 @@ --- 毕业生信息管理表 -DROP TABLE IF EXISTS `zsjy_graduate_info`; -CREATE TABLE `zsjy_graduate_info` -( - `id` bigint(20) NOT NULL COMMENT '主键ID', - `student_no` varchar(50) NOT NULL COMMENT '学号', - `name` varchar(30) NOT NULL COMMENT '姓名', - `gender` char(1) NOT NULL DEFAULT '0' COMMENT '性别 (0男 1女)', - `id_card` varchar(18) NOT NULL COMMENT '身份证号', - `nation` varchar(50) DEFAULT NULL COMMENT '民族', - `political_status` varchar(50) DEFAULT NULL COMMENT '政治面貌', - `birth_date` date DEFAULT NULL COMMENT '出生日期', - `enrollment_year` int(4) NOT NULL COMMENT '入学年份', - `graduation_year` int(4) NOT NULL COMMENT '毕业年份', - `college_id` bigint(20) DEFAULT NULL COMMENT '学院ID', - `college_name` varchar(100) DEFAULT NULL COMMENT '学院名称', - `major_id` bigint(20) DEFAULT NULL COMMENT '专业ID', - `major_name` varchar(100) DEFAULT NULL COMMENT '专业名称', - `class_id` bigint(20) DEFAULT NULL COMMENT '班级ID', - `class_name` varchar(100) DEFAULT NULL COMMENT '班级名称', - `education_level` char(1) NOT NULL DEFAULT '2' COMMENT '学历层次 (1专科 2本科 3硕士 4博士)', - `training_mode` varchar(50) DEFAULT NULL COMMENT '培养方式', - `phone_number` varchar(11) NOT NULL COMMENT '手机号码', - `email` varchar(100) DEFAULT NULL COMMENT '邮箱地址', - `qq_number` varchar(20) DEFAULT NULL COMMENT 'QQ号码', - `wechat_number` varchar(50) DEFAULT NULL COMMENT '微信号码', - `province` varchar(50) DEFAULT NULL COMMENT '省份', - `city` varchar(50) DEFAULT NULL COMMENT '城市', - `district` varchar(50) DEFAULT NULL COMMENT '区县', - `detail_address` varchar(255) DEFAULT NULL COMMENT '详细地址', - `postal_code` varchar(6) DEFAULT NULL COMMENT '邮政编码', - `employment_status` char(1) NOT NULL DEFAULT '7' COMMENT '就业状态 (1已就业-劳动合同 2已就业-就业协议 3自主创业 4升学-国内 5升学-国外 6应征入伍 7待就业 8暂不就业)', - `employment_company` varchar(200) DEFAULT NULL COMMENT '就业单位名称', - `company_type` char(1) DEFAULT NULL COMMENT '单位性质 (1国有企业 2私营企业 3外资企业 4机关事业单位 5其他)', - `job_position` varchar(100) DEFAULT NULL COMMENT '工作职位', - `work_province` varchar(50) DEFAULT NULL COMMENT '工作省份', - `work_city` varchar(50) DEFAULT NULL COMMENT '工作城市', - `salary_range` char(1) DEFAULT NULL COMMENT '月薪范围 (1-3000以下 2-3000-5000 3-5000-8000 4-8000-12000 5-12000以上)', - `further_school` varchar(200) DEFAULT NULL COMMENT '升学院校', - `further_major` varchar(100) DEFAULT NULL COMMENT '升学专业', - `skills` text DEFAULT NULL COMMENT '特长技能', - `awards` text DEFAULT NULL COMMENT '获奖情况', - `job_intention` text DEFAULT NULL COMMENT '工作意向', - `audit_status` char(1) NOT NULL DEFAULT '0' COMMENT '审核状态 (0待审核 1已审核 2审核拒绝)', - `audit_time` datetime DEFAULT NULL COMMENT '审核时间', - `audit_by` bigint(20) DEFAULT NULL COMMENT '审核人', - `audit_remark` varchar(500) DEFAULT NULL COMMENT '审核意见', - `status` char(1) NOT NULL DEFAULT '0' COMMENT '状态 (0正常 1停用)', - `remark` varchar(500) DEFAULT NULL COMMENT '备注', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户ID', - `create_by` bigint(20) DEFAULT NULL COMMENT '创建者', - `create_time` datetime DEFAULT NULL COMMENT '创建时间', - `update_by` bigint(20) DEFAULT NULL COMMENT '更新者', - `update_time` datetime DEFAULT NULL COMMENT '更新时间', - `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '逻辑删除', - PRIMARY KEY (`id`), - UNIQUE KEY `uk_student_no` (`student_no`) COMMENT '学号唯一', - UNIQUE KEY `uk_id_card` (`id_card`) COMMENT '身份证号唯一', - KEY `idx_name` (`name`) COMMENT '姓名索引', - KEY `idx_college_major` (`college_id`, `major_id`) COMMENT '学院专业索引', - KEY `idx_graduation_year` (`graduation_year`) COMMENT '毕业年份索引', - KEY `idx_employment_status` (`employment_status`) COMMENT '就业状态索引', - KEY `idx_audit_status` (`audit_status`) COMMENT '审核状态索引' -) ENGINE = InnoDB - DEFAULT CHARSET = utf8mb4 COMMENT = '毕业生信息表'; - --- 插入字典数据 --- 性别 -INSERT INTO `sys_dict_type` (`dict_id`, `tenant_id`, `dict_name`, `dict_type`, `create_by`, `create_time`, `remark`) VALUES -(1001, '000000', '性别', 'sys_user_sex', 1, NOW(), '性别列表'); - -INSERT INTO `sys_dict_data` (`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_by`, `create_time`, `remark`) VALUES -(1001, '000000', 1, '男', '0', 'sys_user_sex', '', '', 'Y', 1, NOW(), '男性'), -(1002, '000000', 2, '女', '1', 'sys_user_sex', '', '', 'N', 1, NOW(), '女性'); - --- 学历层次 -INSERT INTO `sys_dict_type` (`dict_id`, `tenant_id`, `dict_name`, `dict_type`, `create_by`, `create_time`, `remark`) VALUES -(1002, '000000', '学历层次', 'zsjy_education_level', 1, NOW(), '学历层次列表'); - -INSERT INTO `sys_dict_data` (`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_by`, `create_time`, `remark`) VALUES -(1003, '000000', 1, '专科', '1', 'zsjy_education_level', '', '', 'N', 1, NOW(), '专科'), -(1004, '000000', 2, '本科', '2', 'zsjy_education_level', '', '', 'Y', 1, NOW(), '本科'), -(1005, '000000', 3, '硕士', '3', 'zsjy_education_level', '', '', 'N', 1, NOW(), '硕士'), -(1006, '000000', 4, '博士', '4', 'zsjy_education_level', '', '', 'N', 1, NOW(), '博士'); - --- 就业状态 -INSERT INTO `sys_dict_type` (`dict_id`, `tenant_id`, `dict_name`, `dict_type`, `create_by`, `create_time`, `remark`) VALUES -(1003, '000000', '就业状态', 'zsjy_employment_status', 1, NOW(), '毕业生就业状态'); - -INSERT INTO `sys_dict_data` (`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_by`, `create_time`, `remark`) VALUES -(1007, '000000', 1, '已就业(劳动合同)', '1', 'zsjy_employment_status', '', 'success', 'N', 1, NOW(), '签订劳动合同'), -(1008, '000000', 2, '已就业(就业协议)', '2', 'zsjy_employment_status', '', 'success', 'N', 1, NOW(), '签订就业协议'), -(1009, '000000', 3, '自主创业', '3', 'zsjy_employment_status', '', 'warning', 'N', 1, NOW(), '自主创业'), -(1010, '000000', 4, '升学(国内)', '4', 'zsjy_employment_status', '', 'info', 'N', 1, NOW(), '国内升学'), -(1011, '000000', 5, '升学(国外)', '5', 'zsjy_employment_status', '', 'info', 'N', 1, NOW(), '国外升学'), -(1012, '000000', 6, '应征入伍', '6', 'zsjy_employment_status', '', 'primary', 'N', 1, NOW(), '应征入伍'), -(1013, '000000', 7, '待就业', '7', 'zsjy_employment_status', '', 'danger', 'Y', 1, NOW(), '待就业'), -(1014, '000000', 8, '暂不就业', '8', 'zsjy_employment_status', '', 'default', 'N', 1, NOW(), '暂不就业'); - --- 单位性质 -INSERT INTO `sys_dict_type` (`dict_id`, `tenant_id`, `dict_name`, `dict_type`, `create_by`, `create_time`, `remark`) VALUES -(1004, '000000', '单位性质', 'zsjy_company_type', 1, NOW(), '就业单位性质'); - -INSERT INTO `sys_dict_data` (`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_by`, `create_time`, `remark`) VALUES -(1015, '000000', 1, '国有企业', '1', 'zsjy_company_type', '', '', 'N', 1, NOW(), '国有企业'), -(1016, '000000', 2, '私营企业', '2', 'zsjy_company_type', '', '', 'Y', 1, NOW(), '私营企业'), -(1017, '000000', 3, '外资企业', '3', 'zsjy_company_type', '', '', 'N', 1, NOW(), '外资企业'), -(1018, '000000', 4, '机关事业单位', '4', 'zsjy_company_type', '', '', 'N', 1, NOW(), '机关事业单位'), -(1019, '000000', 5, '其他', '5', 'zsjy_company_type', '', '', 'N', 1, NOW(), '其他'); - --- 月薪范围 -INSERT INTO `sys_dict_type` (`dict_id`, `tenant_id`, `dict_name`, `dict_type`, `create_by`, `create_time`, `remark`) VALUES -(1005, '000000', '月薪范围', 'zsjy_salary_range', 1, NOW(), '月薪范围'); - -INSERT INTO `sys_dict_data` (`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_by`, `create_time`, `remark`) VALUES -(1020, '000000', 1, '3000以下', '1', 'zsjy_salary_range', '', '', 'N', 1, NOW(), '3000以下'), -(1021, '000000', 2, '3000-5000', '2', 'zsjy_salary_range', '', '', 'Y', 1, NOW(), '3000-5000'), -(1022, '000000', 3, '5000-8000', '3', 'zsjy_salary_range', '', '', 'N', 1, NOW(), '5000-8000'), -(1023, '000000', 4, '8000-12000', '4', 'zsjy_salary_range', '', '', 'N', 1, NOW(), '8000-12000'), -(1024, '000000', 5, '12000以上', '5', 'zsjy_salary_range', '', '', 'N', 1, NOW(), '12000以上'); - --- 审核状态 -INSERT INTO `sys_dict_type` (`dict_id`, `tenant_id`, `dict_name`, `dict_type`, `create_by`, `create_time`, `remark`) VALUES -(1006, '000000', '审核状态', 'zsjy_audit_status', 1, NOW(), '审核状态'); - -INSERT INTO `sys_dict_data` (`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_by`, `create_time`, `remark`) VALUES -(1025, '000000', 1, '待审核', '0', 'zsjy_audit_status', '', 'warning', 'Y', 1, NOW(), '待审核'), -(1026, '000000', 2, '已审核', '1', 'zsjy_audit_status', '', 'success', 'N', 1, NOW(), '已审核'), -(1027, '000000', 3, '审核拒绝', '2', 'zsjy_audit_status', '', 'danger', 'N', 1, NOW(), '审核拒绝'); diff --git a/backend/script/sql/zsjy_graduate_info_menu.sql b/backend/script/sql/zsjy_graduate_info_menu.sql deleted file mode 100644 index 3c570364..00000000 --- a/backend/script/sql/zsjy_graduate_info_menu.sql +++ /dev/null @@ -1,60 +0,0 @@ --- ================================================== --- 招生就业模块 - 毕业生信息管理菜单配置 --- 创建日期: 2025-01-26 --- 说明: 毕业生信息管理相关菜单和权限配置 --- ================================================== - --- 1. 毕业生管理父菜单 -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) -VALUES (8800, '毕业生管理', 8000, 5, 'graduate', null, null, 1, 0, 'M', '0', '0', '', 'user', 103, 1, NOW(), null, null, '毕业生管理菜单'); - --- 2. 毕业生信息子菜单 -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) -VALUES (8801, '毕业生信息', 8800, 1, 'graduateInfo', 'zsjy/graduateInfo/index', null, 1, 0, 'C', '0', '0', 'zsjy:graduate:list', 'peoples', 103, 1, NOW(), null, null, '毕业生信息管理菜单'); - --- 3. 毕业生信息新增页面菜单(隐藏菜单) -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) -VALUES (8802, '毕业生信息新增', 8801, 1, 'graduateInfo/add', 'zsjy/graduateInfo/form', null, 1, 1, 'C', '1', '0', 'zsjy:graduate:add', '#', 103, 1, NOW(), null, null, '毕业生信息新增页面'); - --- 4. 毕业生信息编辑页面菜单(隐藏菜单) -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) -VALUES (8803, '毕业生信息编辑', 8801, 2, 'graduateInfo/edit/:id(\\d+)', 'zsjy/graduateInfo/form', null, 1, 1, 'C', '1', '0', 'zsjy:graduate:edit', '#', 103, 1, NOW(), null, null, '毕业生信息编辑页面'); - --- 5. 毕业生统计分析页面菜单(隐藏菜单) -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) -VALUES (8804, '毕业生统计分析', 8801, 3, 'graduateInfo/statistics', 'zsjy/graduateInfo/statistics', null, 1, 1, 'C', '1', '0', 'zsjy:graduate:statistics', '#', 103, 1, NOW(), null, null, '毕业生统计分析页面'); - --- 6. 毕业生信息按钮权限 --- 6.1 查询权限 -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) -VALUES (8810, '毕业生信息查询', 8801, 1, '', '', null, 1, 0, 'F', '0', '0', 'zsjy:graduate:query', '#', 103, 1, NOW(), null, null, ''); - --- 6.2 新增权限 -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) -VALUES (8811, '毕业生信息新增', 8801, 2, '', '', null, 1, 0, 'F', '0', '0', 'zsjy:graduate:add', '#', 103, 1, NOW(), null, null, ''); - --- 6.3 修改权限 -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) -VALUES (8812, '毕业生信息修改', 8801, 3, '', '', null, 1, 0, 'F', '0', '0', 'zsjy:graduate:edit', '#', 103, 1, NOW(), null, null, ''); - --- 6.4 删除权限 -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) -VALUES (8813, '毕业生信息删除', 8801, 4, '', '', null, 1, 0, 'F', '0', '0', 'zsjy:graduate:remove', '#', 103, 1, NOW(), null, null, ''); - --- 6.5 导出权限 -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) -VALUES (8814, '毕业生信息导出', 8801, 5, '', '', null, 1, 0, 'F', '0', '0', 'zsjy:graduate:export', '#', 103, 1, NOW(), null, null, ''); - --- 6.6 审核权限 -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) -VALUES (8815, '毕业生信息审核', 8801, 6, '', '', null, 1, 0, 'F', '0', '0', 'zsjy:graduate:audit', '#', 103, 1, NOW(), null, null, ''); - --- 6.7 统计分析权限 -INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) -VALUES (8816, '毕业生统计分析', 8801, 7, '', '', null, 1, 0, 'F', '0', '0', 'zsjy:graduate:statistics', '#', 103, 1, NOW(), null, null, ''); - --- 查询验证菜单创建结果 -SELECT menu_id, menu_name, parent_id, order_num, path, component, menu_type, visible, perms, icon -FROM sys_menu -WHERE menu_id >= 8800 AND menu_id <= 8820 -ORDER BY menu_id; diff --git a/backend/sql/add_create_dept.sql b/backend/sql/add_create_dept.sql deleted file mode 100644 index 71ddce64..00000000 --- a/backend/sql/add_create_dept.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE jcbt_scholarship_type ADD COLUMN create_dept BIGINT(20) COMMENT '创建部门' AFTER is_system; diff --git a/backend/sql/add_create_dept_field.sql b/backend/sql/add_create_dept_field.sql deleted file mode 100644 index 18067ae6..00000000 --- a/backend/sql/add_create_dept_field.sql +++ /dev/null @@ -1,6 +0,0 @@ --- 为 jcbt_scholarship_application 表添加 create_dept 字段 --- 解决 MyBatis-Plus 插入数据时的字段缺失问题 - -ALTER TABLE jcbt_scholarship_application -ADD COLUMN create_dept bigint(20) DEFAULT NULL COMMENT '创建部门' -AFTER submit_time; diff --git a/backend/sql/add_family_economy_summary_field.sql b/backend/sql/add_family_economy_summary_field.sql deleted file mode 100644 index a38c575b..00000000 --- a/backend/sql/add_family_economy_summary_field.sql +++ /dev/null @@ -1,41 +0,0 @@ --- ============================================================================ --- 贫困生认定申请表 - 添加缺失的family_economy_summary字段 --- 创建时间: 2025-01-27 --- 描述: 修复 jcbt_poverty_application 表缺失的 family_economy_summary 字段 --- ============================================================================ - --- 检查并添加 family_economy_summary 字段(如果不存在) -SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME = 'family_economy_summary'); - -SET @sql = IF(@sql = 0, - 'ALTER TABLE jcbt_poverty_application ADD COLUMN family_economy_summary text COMMENT ''家庭经济情况摘要'' AFTER assistance_type_names', - 'SELECT ''family_economy_summary字段已存在'' as result'); - -PREPARE stmt FROM @sql; -EXECUTE stmt; -DEALLOCATE PREPARE stmt; - --- 验证字段是否添加成功 -SELECT - CASE - WHEN (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME = 'family_economy_summary') > 0 - THEN 'SUCCESS: family_economy_summary字段已成功添加到数据库表中' - ELSE 'ERROR: family_economy_summary字段添加失败' - END as verification_result; - --- 显示表结构确认 -DESCRIBE jcbt_poverty_application; - --- ============================================================================ --- 使用说明: --- 1. 连接到对应的数据库 --- 2. 执行本脚本: source /path/to/add_family_economy_summary_field.sql --- 3. 检查输出结果,确认字段已正确添加 --- 4. 重新启动后端服务 --- ============================================================================ diff --git a/backend/sql/add_missing_fields_to_scholarship_type.sql b/backend/sql/add_missing_fields_to_scholarship_type.sql deleted file mode 100644 index bd0f2f46..00000000 --- a/backend/sql/add_missing_fields_to_scholarship_type.sql +++ /dev/null @@ -1,28 +0,0 @@ --- ===================================================== --- 奖学金类型表 - 添加缺失字段 --- 创建时间: 2025-08-04 --- 说明: 添加申请条件、评定标准、备注三个字段 --- ===================================================== - --- 添加申请条件字段 -ALTER TABLE jcbt_scholarship_type -ADD COLUMN IF NOT EXISTS application_conditions TEXT COMMENT '申请条件' -AFTER application_guide; - --- 添加评定标准字段 -ALTER TABLE jcbt_scholarship_type -ADD COLUMN IF NOT EXISTS evaluation_criteria TEXT COMMENT '评定标准' -AFTER application_conditions; - --- 添加备注字段 -ALTER TABLE jcbt_scholarship_type -ADD COLUMN IF NOT EXISTS remark VARCHAR(500) COMMENT '备注' -AFTER evaluation_criteria; - --- 验证字段添加 -SELECT COLUMN_NAME, DATA_TYPE, COLUMN_COMMENT -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'jcbt_scholarship_type' - AND COLUMN_NAME IN ('application_conditions', 'evaluation_criteria', 'remark') -ORDER BY ORDINAL_POSITION; diff --git a/backend/sql/database_fix_assistance_types.sql b/backend/sql/database_fix_assistance_types.sql deleted file mode 100644 index 6422d817..00000000 --- a/backend/sql/database_fix_assistance_types.sql +++ /dev/null @@ -1,21 +0,0 @@ --- 修复 jcbt_poverty_application 表中 assistance_types 字段的问题 --- 问题: Field 'assistance_types' doesn't have a default value --- 解决方案: 设置字段允许NULL或者添加默认值 - -USE hzdyjs_xg; - --- 修改 assistance_types 字段,允许NULL值 -ALTER TABLE jcbt_poverty_application -MODIFY COLUMN assistance_types varchar(200) COMMENT '申请资助类型' DEFAULT NULL; - --- 检查修改结果 -SELECT - COLUMN_NAME as '字段名', - DATA_TYPE as '数据类型', - IS_NULLABLE as '允许NULL', - COLUMN_DEFAULT as '默认值', - COLUMN_COMMENT as '注释' -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = 'hzdyjs_xg' -AND TABLE_NAME = 'jcbt_poverty_application' -AND COLUMN_NAME = 'assistance_types'; diff --git a/backend/sql/database_fix_jcbt_poverty_application.sql b/backend/sql/database_fix_jcbt_poverty_application.sql deleted file mode 100644 index 621cc994..00000000 --- a/backend/sql/database_fix_jcbt_poverty_application.sql +++ /dev/null @@ -1,189 +0,0 @@ --- ============================================================================ --- 贫困生认定申请表字段修复脚本 --- 创建时间: 2025-01-03 --- 描述: 修复 jcbt_poverty_application 表缺失的字段 --- ============================================================================ - --- 检查并添加缺失的字段到 jcbt_poverty_application 表 - --- 1. 检查表是否存在,如不存在则创建完整表 -CREATE TABLE IF NOT EXISTS `jcbt_poverty_application` ( - `id` bigint(20) NOT NULL COMMENT '主键ID', - `application_no` varchar(50) DEFAULT NULL COMMENT '申请编号', - `academic_year` varchar(20) DEFAULT NULL COMMENT '学年', - `term` int(11) DEFAULT NULL COMMENT '学期', - `student_id` bigint(20) DEFAULT NULL COMMENT '学生ID', - `student_no` varchar(50) DEFAULT NULL COMMENT '学号', - `student_name` varchar(100) DEFAULT NULL COMMENT '学生姓名', - `gender` varchar(10) DEFAULT NULL COMMENT '性别', - `college_id` bigint(20) DEFAULT NULL COMMENT '学院ID', - `college_name` varchar(100) DEFAULT NULL COMMENT '学院名称', - `major_id` bigint(20) DEFAULT NULL COMMENT '专业ID', - `major_name` varchar(100) DEFAULT NULL COMMENT '专业名称', - `class_id` bigint(20) DEFAULT NULL COMMENT '班级ID', - `class_name` varchar(100) DEFAULT NULL COMMENT '班级名称', - `recognition_group` varchar(50) DEFAULT NULL COMMENT '认定群体(特殊群体/其他群体)', - `recognition_type_id` bigint(20) DEFAULT NULL COMMENT '认定类型ID', - `recognition_type_code` varchar(50) DEFAULT NULL COMMENT '认定类型编码', - `recognition_type_name` varchar(100) DEFAULT NULL COMMENT '认定类型名称', - `assistance_type_ids` varchar(500) DEFAULT NULL COMMENT '申请自助类型ID数组(多选)', - `assistance_type_names` varchar(500) DEFAULT NULL COMMENT '申请自助类型名称(多个用逗号分隔)', - `family_economy_summary` text COMMENT '家庭经济情况摘要', - `attach_application_form_url` varchar(500) DEFAULT NULL COMMENT '申请表附件URL', - `attach_application_form_id` bigint(20) DEFAULT NULL COMMENT '申请表附件ID', - `attach_survey_form_url` varchar(500) DEFAULT NULL COMMENT '调查表附件URL', - `attach_survey_form_id` bigint(20) DEFAULT NULL COMMENT '调查表附件ID', - `status` varchar(20) DEFAULT 'DRAFT' COMMENT '申请状态(DRAFT-草稿,SUBMITTED-已提交,REVIEWING-审核中,APPROVED-已通过,REJECTED-已拒绝,WITHDRAWN-已撤回)', - `submitter_id` bigint(20) DEFAULT NULL COMMENT '提交人ID', - `submitter_name` varchar(100) DEFAULT NULL COMMENT '提交人姓名', - `submit_time` datetime DEFAULT NULL COMMENT '提交时间', - `auditor_id` bigint(20) DEFAULT NULL COMMENT '审核人ID', - `auditor_name` varchar(100) DEFAULT NULL COMMENT '审核人姓名', - `audit_time` datetime DEFAULT NULL COMMENT '审核时间', - `audit_opinion` text COMMENT '审核意见', - `remark` varchar(500) DEFAULT NULL COMMENT '备注', - `deleted` bigint(20) DEFAULT '0' COMMENT '逻辑删除标记(0-正常,非0-已删除)', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', - `create_by` bigint(20) DEFAULT NULL COMMENT '创建者', - `create_time` datetime DEFAULT NULL COMMENT '创建时间', - `update_by` bigint(20) DEFAULT NULL COMMENT '更新者', - `update_time` datetime DEFAULT NULL COMMENT '更新时间', - PRIMARY KEY (`id`), - KEY `idx_student_no` (`student_no`), - KEY `idx_status` (`status`), - KEY `idx_academic_year` (`academic_year`), - KEY `idx_college_id` (`college_id`), - KEY `idx_tenant_deleted` (`tenant_id`, `deleted`), - KEY `idx_create_time` (`create_time`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='贫困生认定申请表'; - --- 2. 如果表已存在但缺少字段,则添加缺失字段 --- 添加 term 字段(如果不存在) -SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME = 'term'); - -SET @sql = IF(@sql = 0, - 'ALTER TABLE jcbt_poverty_application ADD COLUMN term int(11) DEFAULT NULL COMMENT ''学期'' AFTER academic_year', - 'SELECT ''term字段已存在'' as result'); - -PREPARE stmt FROM @sql; -EXECUTE stmt; -DEALLOCATE PREPARE stmt; - --- 添加 attach_application_form_id 字段(如果不存在) -SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME = 'attach_application_form_id'); - -SET @sql = IF(@sql = 0, - 'ALTER TABLE jcbt_poverty_application ADD COLUMN attach_application_form_id bigint(20) DEFAULT NULL COMMENT ''申请表附件ID'' AFTER attach_application_form_url', - 'SELECT ''attach_application_form_id字段已存在'' as result'); - -PREPARE stmt FROM @sql; -EXECUTE stmt; -DEALLOCATE PREPARE stmt; - --- 添加 submit_time 字段(如果不存在) -SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME = 'submit_time'); - -SET @sql = IF(@sql = 0, - 'ALTER TABLE jcbt_poverty_application ADD COLUMN submit_time datetime DEFAULT NULL COMMENT ''提交时间'' AFTER submitter_name', - 'SELECT ''submit_time字段已存在'' as result'); - -PREPARE stmt FROM @sql; -EXECUTE stmt; -DEALLOCATE PREPARE stmt; - --- 添加 auditor_id 字段(如果不存在) -SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME = 'auditor_id'); - -SET @sql = IF(@sql = 0, - 'ALTER TABLE jcbt_poverty_application ADD COLUMN auditor_id bigint(20) DEFAULT NULL COMMENT ''审核人ID'' AFTER submit_time', - 'SELECT ''auditor_id字段已存在'' as result'); - -PREPARE stmt FROM @sql; -EXECUTE stmt; -DEALLOCATE PREPARE stmt; - --- 添加 auditor_name 字段(如果不存在) -SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME = 'auditor_name'); - -SET @sql = IF(@sql = 0, - 'ALTER TABLE jcbt_poverty_application ADD COLUMN auditor_name varchar(100) DEFAULT NULL COMMENT ''审核人姓名'' AFTER auditor_id', - 'SELECT ''auditor_name字段已存在'' as result'); - -PREPARE stmt FROM @sql; -EXECUTE stmt; -DEALLOCATE PREPARE stmt; - --- 添加 audit_time 字段(如果不存在) -SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME = 'audit_time'); - -SET @sql = IF(@sql = 0, - 'ALTER TABLE jcbt_poverty_application ADD COLUMN audit_time datetime DEFAULT NULL COMMENT ''审核时间'' AFTER auditor_name', - 'SELECT ''audit_time字段已存在'' as result'); - -PREPARE stmt FROM @sql; -EXECUTE stmt; -DEALLOCATE PREPARE stmt; - --- 添加 audit_opinion 字段(如果不存在) -SET @sql = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME = 'audit_opinion'); - -SET @sql = IF(@sql = 0, - 'ALTER TABLE jcbt_poverty_application ADD COLUMN audit_opinion text COMMENT ''审核意见'' AFTER audit_time', - 'SELECT ''audit_opinion字段已存在'' as result'); - -PREPARE stmt FROM @sql; -EXECUTE stmt; -DEALLOCATE PREPARE stmt; - --- 3. 验证表结构 -SELECT 'Table structure verification:' as message; -DESCRIBE jcbt_poverty_application; - --- 4. 检查缺失的字段 -SELECT - 'Missing fields check:' as message, - CASE - WHEN (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME = 'term') = 0 - THEN 'term字段缺失' - ELSE 'term字段存在' - END as term_status, - CASE - WHEN (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME = 'attach_application_form_id') = 0 - THEN 'attach_application_form_id字段缺失' - ELSE 'attach_application_form_id字段存在' - END as attach_application_form_id_status; - --- ============================================================================ --- 使用说明: --- 1. 连接到对应的数据库 --- 2. 执行本脚本 --- 3. 检查输出结果,确认所有字段都已正确添加 --- 4. 重新启动后端服务 --- ============================================================================ diff --git a/backend/sql/database_fix_jcbt_poverty_application_complete.sql b/backend/sql/database_fix_jcbt_poverty_application_complete.sql deleted file mode 100644 index 7a954c7d..00000000 --- a/backend/sql/database_fix_jcbt_poverty_application_complete.sql +++ /dev/null @@ -1,98 +0,0 @@ --- ================================================================ --- 贫困生认定申请表完整修复脚本 --- 文件: database_fix_jcbt_poverty_application_complete.sql --- 功能: 修复 teacher_id 字段默认值问题,添加 family_economy_summary 字段 --- ================================================================ - -USE hzdyjs_xg; - --- 1. 检查并修复 teacher_id 字段 -SELECT '开始检查 teacher_id 字段...' AS message; - --- 检查字段是否存在以及是否允许NULL -SELECT - COLUMN_NAME, - IS_NULLABLE, - COLUMN_DEFAULT, - DATA_TYPE -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = 'hzdyjs_xg' - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME = 'teacher_id'; - --- 修改 teacher_id 字段为允许NULL(如果字段存在且不允许NULL) -SET @sql = ''; -SELECT COUNT(*) INTO @count -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = 'hzdyjs_xg' - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME = 'teacher_id' - AND IS_NULLABLE = 'NO'; - -SELECT IF(@count > 0, - CONCAT('ALTER TABLE jcbt_poverty_application MODIFY COLUMN teacher_id bigint(20) NULL COMMENT ''班主任教师ID'';'), - 'SELECT ''teacher_id 字段已允许NULL或不存在'' AS result;' -) INTO @sql; - -PREPARE stmt FROM @sql; -EXECUTE stmt; -DEALLOCATE PREPARE stmt; - -SELECT '✅ teacher_id 字段修复完成' AS message; - --- 2. 检查并添加 family_economy_summary 字段 -SELECT '开始检查 family_economy_summary 字段...' AS message; - -SET @sql = ''; -SELECT COUNT(*) INTO @count -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = 'hzdyjs_xg' - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME = 'family_economy_summary'; - -SELECT IF(@count = 0, - 'ALTER TABLE jcbt_poverty_application ADD COLUMN family_economy_summary text COMMENT ''家庭经济情况摘要'' AFTER assistance_type_names;', - 'SELECT ''family_economy_summary 字段已存在'' AS result;' -) INTO @sql; - -PREPARE stmt FROM @sql; -EXECUTE stmt; -DEALLOCATE PREPARE stmt; - -SELECT '✅ family_economy_summary 字段检查完成' AS message; - --- 3. 验证修复结果 -SELECT '=== 修复结果验证 ===' AS message; - --- 显示相关字段信息 -SELECT - COLUMN_NAME AS '字段名', - DATA_TYPE AS '数据类型', - IS_NULLABLE AS '允许NULL', - COLUMN_DEFAULT AS '默认值', - COLUMN_COMMENT AS '注释' -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = 'hzdyjs_xg' - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME IN ('teacher_id', 'family_economy_summary') -ORDER BY ORDINAL_POSITION; - --- 4. 显示完整表结构(关键字段) -SELECT '=== 表结构确认 ===' AS message; - -SELECT - COLUMN_NAME AS '字段名', - DATA_TYPE AS '数据类型', - IS_NULLABLE AS '允许NULL', - COLUMN_COMMENT AS '注释' -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = 'hzdyjs_xg' - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME IN ( - 'id', 'student_id', 'class_id', 'teacher_id', - 'family_economy_summary', 'status', 'create_by', 'create_time' - ) -ORDER BY ORDINAL_POSITION; - -SELECT '🎉 所有修复操作完成!' AS message; -SELECT '📝 请重启后端服务以生效!' AS note; diff --git a/backend/sql/database_fix_teacher_name.sql b/backend/sql/database_fix_teacher_name.sql deleted file mode 100644 index 863d6e1f..00000000 --- a/backend/sql/database_fix_teacher_name.sql +++ /dev/null @@ -1,131 +0,0 @@ --- ================================================================ --- 贫困生认定申请表 teacher_name 字段修复脚本 --- 文件: database_fix_teacher_name.sql --- 功能: 添加缺失的 teacher_name 字段,并确保允许NULL --- ================================================================ - -USE hzdyjs_xg; - --- 1. 检查 teacher_name 字段是否存在 -SELECT '开始检查 teacher_name 字段...' AS message; - -SELECT - COLUMN_NAME, - IS_NULLABLE, - COLUMN_DEFAULT, - DATA_TYPE -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = 'hzdyjs_xg' - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME = 'teacher_name'; - --- 2. 添加 teacher_name 字段(如果不存在) -SET @sql = ''; -SELECT COUNT(*) INTO @count -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = 'hzdyjs_xg' - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME = 'teacher_name'; - -SELECT IF(@count = 0, - 'ALTER TABLE jcbt_poverty_application ADD COLUMN teacher_name varchar(100) DEFAULT NULL COMMENT ''班主任教师姓名'' AFTER teacher_id;', - 'SELECT ''teacher_name 字段已存在,检查是否需要修改属性'' AS result;' -) INTO @sql; - -PREPARE stmt FROM @sql; -EXECUTE stmt; -DEALLOCATE PREPARE stmt; - --- 3. 修改 teacher_name 字段为允许 NULL(如果字段存在且不允许NULL) -SET @sql = ''; -SELECT COUNT(*) INTO @count -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = 'hzdyjs_xg' - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME = 'teacher_name' - AND IS_NULLABLE = 'NO'; - -SELECT IF(@count > 0, - 'ALTER TABLE jcbt_poverty_application MODIFY COLUMN teacher_name varchar(100) DEFAULT NULL COMMENT ''班主任教师姓名'';', - 'SELECT ''teacher_name 字段已允许NULL'' AS result;' -) INTO @sql; - -PREPARE stmt FROM @sql; -EXECUTE stmt; -DEALLOCATE PREPARE stmt; - -SELECT '✅ teacher_name 字段修复完成' AS message; - --- 4. 添加 teacher_id 字段(如果不存在) -SET @sql = ''; -SELECT COUNT(*) INTO @count -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = 'hzdyjs_xg' - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME = 'teacher_id'; - -SELECT IF(@count = 0, - 'ALTER TABLE jcbt_poverty_application ADD COLUMN teacher_id bigint(20) DEFAULT NULL COMMENT ''班主任教师ID'' AFTER class_name;', - 'SELECT ''teacher_id 字段已存在'' AS result;' -) INTO @sql; - -PREPARE stmt FROM @sql; -EXECUTE stmt; -DEALLOCATE PREPARE stmt; - --- 5. 确保 teacher_id 字段允许 NULL -SELECT '检查 teacher_id 字段...' AS message; - -SET @sql = ''; -SELECT COUNT(*) INTO @count -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = 'hzdyjs_xg' - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME = 'teacher_id' - AND IS_NULLABLE = 'NO'; - -SELECT IF(@count > 0, - 'ALTER TABLE jcbt_poverty_application MODIFY COLUMN teacher_id bigint(20) DEFAULT NULL COMMENT ''班主任教师ID'';', - 'SELECT ''teacher_id 字段已允许NULL或不存在'' AS result;' -) INTO @sql; - -PREPARE stmt FROM @sql; -EXECUTE stmt; -DEALLOCATE PREPARE stmt; - -SELECT '✅ teacher_id 字段修复完成' AS message; - --- 6. 验证修复结果 -SELECT '=== 修复结果验证 ===' AS message; - -SELECT - COLUMN_NAME AS '字段名', - DATA_TYPE AS '数据类型', - IS_NULLABLE AS '允许NULL', - COLUMN_DEFAULT AS '默认值', - COLUMN_COMMENT AS '注释' -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = 'hzdyjs_xg' - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME IN ('teacher_id', 'teacher_name') -ORDER BY ORDINAL_POSITION; - --- 7. 显示完整的字段结构确认 -SELECT '=== 相关字段结构确认 ===' AS message; - -SELECT - COLUMN_NAME AS '字段名', - DATA_TYPE AS '数据类型', - IS_NULLABLE AS '允许NULL', - COLUMN_DEFAULT AS '默认值', - COLUMN_COMMENT AS '注释' -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = 'hzdyjs_xg' - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME IN ( - 'class_id', 'class_name', 'teacher_id', 'teacher_name', 'recognition_group' - ) -ORDER BY ORDINAL_POSITION; - -SELECT '🎉 teacher_name 和 teacher_id 字段修复完成!' AS message; -SELECT '📝 请重启后端服务以生效!' AS note; diff --git a/backend/sql/database_fix_teacher_name_field.sql b/backend/sql/database_fix_teacher_name_field.sql deleted file mode 100644 index 69db6e9a..00000000 --- a/backend/sql/database_fix_teacher_name_field.sql +++ /dev/null @@ -1,75 +0,0 @@ --- ================================================================ --- 贫困生认定申请表teacher_name字段修复脚本 --- 文件: database_fix_teacher_name_field.sql --- 功能: 添加缺失的teacher_name字段 --- ================================================================ - -USE hzdyjs_xg; - --- 1. 检查并添加 teacher_name 字段 -SELECT '开始检查 teacher_name 字段...' AS message; - --- 检查字段是否存在 -SELECT - COLUMN_NAME, - IS_NULLABLE, - COLUMN_DEFAULT, - DATA_TYPE -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = 'hzdyjs_xg' - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME = 'teacher_name'; - --- 添加 teacher_name 字段(如果不存在) -SET @sql = ''; -SELECT COUNT(*) INTO @count -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = 'hzdyjs_xg' - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME = 'teacher_name'; - -SELECT IF(@count = 0, - 'ALTER TABLE jcbt_poverty_application ADD COLUMN teacher_name varchar(100) NULL COMMENT ''班主任教师姓名'' AFTER teacher_id;', - 'SELECT ''teacher_name 字段已存在'' AS result;' -) INTO @sql; - -PREPARE stmt FROM @sql; -EXECUTE stmt; -DEALLOCATE PREPARE stmt; - -SELECT '✅ teacher_name 字段检查完成' AS message; - --- 2. 验证修复结果 -SELECT '=== 修复结果验证 ===' AS message; - --- 显示teacher相关字段信息 -SELECT - COLUMN_NAME AS '字段名', - DATA_TYPE AS '数据类型', - IS_NULLABLE AS '允许NULL', - COLUMN_DEFAULT AS '默认值', - COLUMN_COMMENT AS '注释' -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = 'hzdyjs_xg' - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME LIKE '%teacher%' -ORDER BY ORDINAL_POSITION; - --- 3. 显示完整表结构确认 -SELECT '=== 班级相关字段确认 ===' AS message; - -SELECT - COLUMN_NAME AS '字段名', - DATA_TYPE AS '数据类型', - IS_NULLABLE AS '允许NULL', - COLUMN_COMMENT AS '注释' -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = 'hzdyjs_xg' - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME IN ( - 'class_id', 'class_name', 'teacher_id', 'teacher_name' - ) -ORDER BY ORDINAL_POSITION; - -SELECT '🎉 teacher_name字段修复操作完成!' AS message; -SELECT '📝 请重启后端服务以生效!' AS note; diff --git a/backend/sql/debug_compatibility_type.sql b/backend/sql/debug_compatibility_type.sql deleted file mode 100644 index 86b790d5..00000000 --- a/backend/sql/debug_compatibility_type.sql +++ /dev/null @@ -1,30 +0,0 @@ --- 调试compatibility_type字段问题 --- 检查表结构 -DESCRIBE jcbt_scholarship_type; - --- 检查字段是否存在 -SHOW COLUMNS FROM jcbt_scholarship_type LIKE 'compatibility_type'; - --- 查看具体数据 -SELECT id, type_name, compatibility_type, - CASE - WHEN compatibility_type IS NULL THEN 'NULL值' - WHEN compatibility_type = '' THEN '空字符串' - ELSE CONCAT('有值:', compatibility_type) - END as value_status -FROM jcbt_scholarship_type -WHERE deleted = 0 -LIMIT 10; - --- 统计各种值的分布 -SELECT - compatibility_type, - COUNT(*) as count, - CASE - WHEN compatibility_type IS NULL THEN 'NULL值' - WHEN compatibility_type = '' THEN '空字符串' - ELSE '有效值' - END as value_type -FROM jcbt_scholarship_type -WHERE deleted = 0 -GROUP BY compatibility_type; diff --git a/backend/sql/debug_quota_delete_issue.sql b/backend/sql/debug_quota_delete_issue.sql deleted file mode 100644 index d866ddd1..00000000 --- a/backend/sql/debug_quota_delete_issue.sql +++ /dev/null @@ -1,134 +0,0 @@ --- ======================================== --- 奖学金名额分配删除问题诊断脚本 --- 创建时间: 2025-01-28 --- 说明: 用于排查无法删除的名额分配记录 --- ======================================== - -USE hzdyjs_xg; - --- 1. 查看所有名额分配记录的状态 -SELECT - id, - batch_id, - scholarship_type_id, - allocation_level, - target_dept_id, - total_quota, - used_quota, - reserved_quota, - available_quota, - is_adjustable, - is_locked, - status, - deleted, - create_time, - update_time -FROM jcbt_scholarship_quota -WHERE deleted = 0 -ORDER BY create_time DESC; - --- 2. 查找可能有问题的记录(已使用名额大于0或已锁定) -SELECT - '已使用名额大于0' as issue_type, - id, - batch_id, - scholarship_type_id, - total_quota, - used_quota, - reserved_quota, - available_quota, - is_locked, - status -FROM jcbt_scholarship_quota -WHERE deleted = 0 AND used_quota > 0 - -UNION ALL - -SELECT - '已被锁定' as issue_type, - id, - batch_id, - scholarship_type_id, - total_quota, - used_quota, - reserved_quota, - available_quota, - is_locked, - status -FROM jcbt_scholarship_quota -WHERE deleted = 0 AND is_locked = 1 - -UNION ALL - -SELECT - '状态异常' as issue_type, - id, - batch_id, - scholarship_type_id, - total_quota, - used_quota, - reserved_quota, - available_quota, - is_locked, - status -FROM jcbt_scholarship_quota -WHERE deleted = 0 AND status != 'ACTIVE'; - --- 3. 检查是否存在外键约束或关联数据 --- 检查是否有申请记录引用了这些名额 -SELECT - q.id as quota_id, - q.batch_id, - q.scholarship_type_id, - q.used_quota, - q.is_locked, - COUNT(DISTINCT a.id) as application_count -FROM jcbt_scholarship_quota q -LEFT JOIN jcbt_scholarship_application a ON a.batch_id = q.batch_id - AND a.scholarship_type_id = q.scholarship_type_id -WHERE q.deleted = 0 -GROUP BY q.id, q.batch_id, q.scholarship_type_id, q.used_quota, q.is_locked -HAVING application_count > 0 OR q.used_quota > 0 OR q.is_locked = 1; - --- 4. 检查是否有下级名额分配 -SELECT - parent.id as parent_quota_id, - parent.allocation_level as parent_level, - parent.used_quota as parent_used_quota, - parent.is_locked as parent_is_locked, - COUNT(child.id) as child_count -FROM jcbt_scholarship_quota parent -LEFT JOIN jcbt_scholarship_quota child ON child.parent_quota_id = parent.id AND child.deleted = 0 -WHERE parent.deleted = 0 -GROUP BY parent.id, parent.allocation_level, parent.used_quota, parent.is_locked -HAVING child_count > 0; - --- 5. 详细查看有问题的记录(根据实际情况调整ID) --- 请替换下面的ID为实际无法删除的记录ID --- SELECT * FROM jcbt_scholarship_quota WHERE id = 替换为实际ID; - --- 6. 查看相关批次信息 -SELECT - b.id as batch_id, - b.batch_name, - b.batch_code, - b.status as batch_status, - b.start_time, - b.end_time, - COUNT(q.id) as quota_count -FROM jcbt_scholarship_batch b -LEFT JOIN jcbt_scholarship_quota q ON q.batch_id = b.id AND q.deleted = 0 -WHERE b.deleted = 0 -GROUP BY b.id, b.batch_name, b.batch_code, b.status, b.start_time, b.end_time; - --- 7. 查看奖学金类型信息 -SELECT - st.id as type_id, - st.type_name, - st.type_code, - st.status as type_status, - COUNT(q.id) as quota_count -FROM jcbt_scholarship_type st -LEFT JOIN jcbt_scholarship_quota q ON q.scholarship_type_id = st.id AND q.deleted = 0 -WHERE st.deleted = 0 -GROUP BY st.id, st.type_name, st.type_code, st.status; diff --git a/backend/sql/diagnose_quota_display_issue.sql b/backend/sql/diagnose_quota_display_issue.sql deleted file mode 100644 index ea988bd8..00000000 --- a/backend/sql/diagnose_quota_display_issue.sql +++ /dev/null @@ -1,249 +0,0 @@ --- =================================================================== --- 奖学金名额显示问题诊断脚本 --- 创建时间: 2025-01-27 --- 目的: 检查班级名额分配和奖学金类型的数据完整性 --- =================================================================== - --- 1. 检查当前班主任和班级信息 -SELECT - '=== 1. 班主任和班级信息检查 ===' as info; - -SELECT - u.user_id, - u.user_name, - u.nick_name, - c.class_id, - c.class_name, - c.grade_level, - c.dept_id, - d.dept_name -FROM sys_user u -LEFT JOIN jcbt_class c ON u.user_id = c.head_teacher_id -LEFT JOIN sys_dept d ON c.dept_id = d.dept_id -WHERE u.user_type = '03' -- 班主任 -AND c.class_id IS NOT NULL -ORDER BY c.class_id; - --- 2. 检查奖学金批次信息 -SELECT - '=== 2. 奖学金批次信息检查 ===' as info; - -SELECT - batch_id, - batch_name, - batch_status, - start_date, - end_date, - create_time -FROM jcbt_scholarship_batch -WHERE batch_status = '1' -- 启用状态 -ORDER BY create_time DESC; - --- 3. 检查奖学金类型信息 -SELECT - '=== 3. 奖学金类型信息检查 ===' as info; - -SELECT - st.type_id, - st.type_name, - st.type_level, - st.type_status, - bt.batch_id, - b.batch_name -FROM jcbt_scholarship_type st -LEFT JOIN jcbt_batch_type bt ON st.type_id = bt.type_id -LEFT JOIN jcbt_scholarship_batch b ON bt.batch_id = b.batch_id -WHERE st.type_status = '1' -- 启用状态 -ORDER BY st.type_level, st.type_name; - --- 4. 检查班级名额分配情况 -SELECT - '=== 4. 班级名额分配情况检查 ===' as info; - -SELECT - qa.allocation_id, - qa.batch_id, - b.batch_name, - qa.type_id, - st.type_name, - qa.class_id, - c.class_name, - qa.allocated_quota, - qa.allocation_basis, - qa.create_time -FROM jcbt_quota_allocation qa -LEFT JOIN jcbt_scholarship_batch b ON qa.batch_id = b.batch_id -LEFT JOIN jcbt_scholarship_type st ON qa.type_id = st.type_id -LEFT JOIN jcbt_class c ON qa.class_id = c.class_id -ORDER BY qa.batch_id, qa.class_id, qa.type_id; - --- 5. 检查已使用名额情况 -SELECT - '=== 5. 已使用名额情况检查 ===' as info; - -SELECT - sa.batch_id, - b.batch_name, - sa.scholarship_type_id, - st.type_name, - sa.applicant_class_id, - c.class_name, - COUNT(*) as used_quota, - GROUP_CONCAT(sa.application_status) as status_list -FROM jcbt_scholarship_application sa -LEFT JOIN jcbt_scholarship_batch b ON sa.batch_id = b.batch_id -LEFT JOIN jcbt_scholarship_type st ON sa.scholarship_type_id = st.type_id -LEFT JOIN jcbt_class c ON sa.applicant_class_id = c.class_id -WHERE sa.application_status IN ('submitted', 'approved') -- 有效申请 -GROUP BY sa.batch_id, sa.scholarship_type_id, sa.applicant_class_id -ORDER BY sa.batch_id, sa.applicant_class_id, sa.scholarship_type_id; - --- 6. 检查名额使用情况汇总 -SELECT - '=== 6. 名额使用情况汇总 ===' as info; - -SELECT - qa.batch_id, - b.batch_name, - qa.class_id, - c.class_name, - qa.type_id, - st.type_name, - qa.allocated_quota, - COALESCE(used.used_count, 0) as used_quota, - (qa.allocated_quota - COALESCE(used.used_count, 0)) as available_quota, - CASE - WHEN qa.allocated_quota = 0 THEN 'unlimited' - WHEN (qa.allocated_quota - COALESCE(used.used_count, 0)) > 0 THEN 'available' - ELSE 'full' - END as quota_status -FROM jcbt_quota_allocation qa -LEFT JOIN jcbt_scholarship_batch b ON qa.batch_id = b.batch_id -LEFT JOIN jcbt_scholarship_type st ON qa.type_id = st.type_id -LEFT JOIN jcbt_class c ON qa.class_id = c.class_id -LEFT JOIN ( - SELECT - batch_id, - scholarship_type_id, - applicant_class_id, - COUNT(*) as used_count - FROM jcbt_scholarship_application - WHERE application_status IN ('submitted', 'approved') - GROUP BY batch_id, scholarship_type_id, applicant_class_id -) used ON qa.batch_id = used.batch_id - AND qa.type_id = used.scholarship_type_id - AND qa.class_id = used.applicant_class_id -ORDER BY qa.batch_id, qa.class_id, qa.type_id; - --- 7. 检查特定班级的详细情况(以班级ID=1为例) -SELECT - '=== 7. 特定班级详细情况检查 (class_id=1) ===' as info; - -SELECT - '班级基本信息:' as section, - c.class_id, - c.class_name, - c.grade_level, - u.user_name as head_teacher_name, - u.nick_name as head_teacher_nick -FROM jcbt_class c -LEFT JOIN sys_user u ON c.head_teacher_id = u.user_id -WHERE c.class_id = 1; - -SELECT - '该班级的名额分配:' as section, - qa.type_id, - st.type_name, - qa.allocated_quota, - qa.allocation_basis -FROM jcbt_quota_allocation qa -LEFT JOIN jcbt_scholarship_type st ON qa.type_id = st.type_id -WHERE qa.class_id = 1 -ORDER BY qa.type_id; - --- 8. 检查数据完整性问题 -SELECT - '=== 8. 数据完整性问题检查 ===' as info; - --- 检查缺少名额分配的奖学金类型 -SELECT - '缺少名额分配的奖学金类型:' as issue_type, - st.type_id, - st.type_name, - bt.batch_id, - b.batch_name -FROM jcbt_scholarship_type st -INNER JOIN jcbt_batch_type bt ON st.type_id = bt.type_id -INNER JOIN jcbt_scholarship_batch b ON bt.batch_id = b.batch_id -LEFT JOIN jcbt_quota_allocation qa ON st.type_id = qa.type_id AND bt.batch_id = qa.batch_id -WHERE st.type_status = '1' -AND b.batch_status = '1' -AND qa.allocation_id IS NULL; - --- 检查有名额分配但奖学金类型不存在的情况 -SELECT - '名额分配指向不存在的奖学金类型:' as issue_type, - qa.allocation_id, - qa.type_id, - qa.batch_id, - qa.class_id -FROM jcbt_quota_allocation qa -LEFT JOIN jcbt_scholarship_type st ON qa.type_id = st.type_id -WHERE st.type_id IS NULL; - --- 9. 模拟API查询结果 -SELECT - '=== 9. 模拟API查询结果 (batch_id=1, class_id=1) ===' as info; - -SELECT - st.type_id, - st.type_name, - st.type_level, - st.type_description, - CASE - WHEN qa.allocated_quota IS NULL THEN 0 - ELSE qa.allocated_quota - END as total_quota, - COALESCE(used.used_count, 0) as used_quota, - CASE - WHEN qa.allocated_quota IS NULL THEN 0 - WHEN qa.allocated_quota = 0 THEN 999999 - ELSE (qa.allocated_quota - COALESCE(used.used_count, 0)) - END as available_quota, - CASE - WHEN qa.allocated_quota IS NULL THEN FALSE - WHEN qa.allocated_quota = 0 THEN FALSE - ELSE TRUE - END as has_quota, - CASE - WHEN qa.allocated_quota IS NULL THEN 'unlimited' - WHEN qa.allocated_quota = 0 THEN 'unlimited' - WHEN (qa.allocated_quota - COALESCE(used.used_count, 0)) > 0 THEN 'available' - ELSE 'full' - END as quota_status -FROM jcbt_scholarship_type st -INNER JOIN jcbt_batch_type bt ON st.type_id = bt.type_id -LEFT JOIN jcbt_quota_allocation qa ON st.type_id = qa.type_id - AND bt.batch_id = qa.batch_id - AND qa.class_id = 1 -LEFT JOIN ( - SELECT - scholarship_type_id, - applicant_class_id, - COUNT(*) as used_count - FROM jcbt_scholarship_application - WHERE batch_id = 1 - AND applicant_class_id = 1 - AND application_status IN ('submitted', 'approved') - GROUP BY scholarship_type_id, applicant_class_id -) used ON st.type_id = used.scholarship_type_id -WHERE bt.batch_id = 1 -AND st.type_status = '1' -ORDER BY - CASE quota_status - WHEN 'available' THEN 1 - WHEN 'unlimited' THEN 2 - WHEN 'full' THEN 3 - END, - st.type_level, - st.type_name; diff --git a/backend/sql/diagnose_quota_display_issue_correct.sql b/backend/sql/diagnose_quota_display_issue_correct.sql deleted file mode 100644 index e7928d46..00000000 --- a/backend/sql/diagnose_quota_display_issue_correct.sql +++ /dev/null @@ -1,245 +0,0 @@ --- =================================================================== --- 奖学金名额显示问题诊断脚本 (修正版) --- 创建时间: 2025-01-27 --- 目的: 检查班级名额分配和奖学金类型的数据完整性 --- =================================================================== - --- 1. 检查当前班主任和班级信息 -SELECT - '=== 1. 班主任和班级信息检查 ===' as info; - -SELECT - u.user_id, - u.user_name, - u.nick_name, - c.class_id, - c.class_name, - c.grade, - c.dept_id -FROM sys_user u -LEFT JOIN xg_class_info c ON u.user_id = c.head_teacher_id -WHERE u.user_type = '03' -- 班主任 -AND c.class_id IS NOT NULL -ORDER BY c.class_id; - --- 2. 检查奖学金批次信息 -SELECT - '=== 2. 奖学金批次信息检查 ===' as info; - -SELECT - batch_id, - batch_name, - batch_status, - start_date, - end_date, - create_time -FROM jcbt_scholarship_batch -WHERE batch_status = '1' -- 启用状态 -ORDER BY create_time DESC; - --- 3. 检查奖学金类型信息 -SELECT - '=== 3. 奖学金类型信息检查 ===' as info; - -SELECT - st.type_id, - st.type_name, - st.type_level, - st.type_status, - bt.batch_id, - b.batch_name -FROM jcbt_scholarship_type st -LEFT JOIN jcbt_scholarship_batch_type bt ON st.type_id = bt.type_id -LEFT JOIN jcbt_scholarship_batch b ON bt.batch_id = b.batch_id -WHERE st.type_status = '1' -- 启用状态 -ORDER BY st.type_level, st.type_name; - --- 4. 检查班级名额分配情况 -SELECT - '=== 4. 班级名额分配情况检查 ===' as info; - -SELECT - cq.quota_id, - cq.batch_id, - b.batch_name, - cq.type_id, - st.type_name, - cq.class_id, - c.class_name, - cq.allocated_quota, - cq.create_time -FROM jcbt_scholarship_class_quota cq -LEFT JOIN jcbt_scholarship_batch b ON cq.batch_id = b.batch_id -LEFT JOIN jcbt_scholarship_type st ON cq.type_id = st.type_id -LEFT JOIN xg_class_info c ON cq.class_id = c.class_id -ORDER BY cq.batch_id, cq.class_id, cq.type_id; - --- 5. 检查已使用名额情况 -SELECT - '=== 5. 已使用名额情况检查 ===' as info; - -SELECT - sa.batch_id, - b.batch_name, - sa.scholarship_type_id, - st.type_name, - sa.applicant_class_id, - c.class_name, - COUNT(*) as used_quota, - GROUP_CONCAT(sa.application_status) as status_list -FROM jcbt_scholarship_application sa -LEFT JOIN jcbt_scholarship_batch b ON sa.batch_id = b.batch_id -LEFT JOIN jcbt_scholarship_type st ON sa.scholarship_type_id = st.type_id -LEFT JOIN xg_class_info c ON sa.applicant_class_id = c.class_id -WHERE sa.application_status IN ('submitted', 'approved') -- 有效申请 -GROUP BY sa.batch_id, sa.scholarship_type_id, sa.applicant_class_id -ORDER BY sa.batch_id, sa.applicant_class_id, sa.scholarship_type_id; - --- 6. 检查名额使用情况汇总 -SELECT - '=== 6. 名额使用情况汇总 ===' as info; - -SELECT - cq.batch_id, - b.batch_name, - cq.class_id, - c.class_name, - cq.type_id, - st.type_name, - cq.allocated_quota, - COALESCE(used.used_count, 0) as used_quota, - (cq.allocated_quota - COALESCE(used.used_count, 0)) as available_quota, - CASE - WHEN cq.allocated_quota = 0 THEN 'unlimited' - WHEN (cq.allocated_quota - COALESCE(used.used_count, 0)) > 0 THEN 'available' - ELSE 'full' - END as quota_status -FROM jcbt_scholarship_class_quota cq -LEFT JOIN jcbt_scholarship_batch b ON cq.batch_id = b.batch_id -LEFT JOIN jcbt_scholarship_type st ON cq.type_id = st.type_id -LEFT JOIN xg_class_info c ON cq.class_id = c.class_id -LEFT JOIN ( - SELECT - batch_id, - scholarship_type_id, - applicant_class_id, - COUNT(*) as used_count - FROM jcbt_scholarship_application - WHERE application_status IN ('submitted', 'approved') - GROUP BY batch_id, scholarship_type_id, applicant_class_id -) used ON cq.batch_id = used.batch_id - AND cq.type_id = used.scholarship_type_id - AND cq.class_id = used.applicant_class_id -ORDER BY cq.batch_id, cq.class_id, cq.type_id; - --- 7. 检查特定班级的详细情况(以班级ID=1为例) -SELECT - '=== 7. 特定班级详细情况检查 (class_id=1) ===' as info; - -SELECT - '班级基本信息:' as section, - c.class_id, - c.class_name, - c.grade, - u.user_name as head_teacher_name, - u.nick_name as head_teacher_nick -FROM xg_class_info c -LEFT JOIN sys_user u ON c.head_teacher_id = u.user_id -WHERE c.class_id = 1; - -SELECT - '该班级的名额分配:' as section, - cq.type_id, - st.type_name, - cq.allocated_quota -FROM jcbt_scholarship_class_quota cq -LEFT JOIN jcbt_scholarship_type st ON cq.type_id = st.type_id -WHERE cq.class_id = 1 -ORDER BY cq.type_id; - --- 8. 检查数据完整性问题 -SELECT - '=== 8. 数据完整性问题检查 ===' as info; - --- 检查缺少名额分配的奖学金类型 -SELECT - '缺少名额分配的奖学金类型:' as issue_type, - st.type_id, - st.type_name, - bt.batch_id, - b.batch_name -FROM jcbt_scholarship_type st -INNER JOIN jcbt_scholarship_batch_type bt ON st.type_id = bt.type_id -INNER JOIN jcbt_scholarship_batch b ON bt.batch_id = b.batch_id -LEFT JOIN jcbt_scholarship_class_quota cq ON st.type_id = cq.type_id AND bt.batch_id = cq.batch_id -WHERE st.type_status = '1' -AND b.batch_status = '1' -AND cq.quota_id IS NULL; - --- 检查有名额分配但奖学金类型不存在的情况 -SELECT - '名额分配指向不存在的奖学金类型:' as issue_type, - cq.quota_id, - cq.type_id, - cq.batch_id, - cq.class_id -FROM jcbt_scholarship_class_quota cq -LEFT JOIN jcbt_scholarship_type st ON cq.type_id = st.type_id -WHERE st.type_id IS NULL; - --- 9. 模拟API查询结果 -SELECT - '=== 9. 模拟API查询结果 (batch_id=1, class_id=1) ===' as info; - -SELECT - st.type_id, - st.type_name, - st.type_level, - st.type_description, - CASE - WHEN cq.allocated_quota IS NULL THEN 0 - ELSE cq.allocated_quota - END as total_quota, - COALESCE(used.used_count, 0) as used_quota, - CASE - WHEN cq.allocated_quota IS NULL THEN 0 - WHEN cq.allocated_quota = 0 THEN 999999 - ELSE (cq.allocated_quota - COALESCE(used.used_count, 0)) - END as available_quota, - CASE - WHEN cq.allocated_quota IS NULL THEN FALSE - WHEN cq.allocated_quota = 0 THEN FALSE - ELSE TRUE - END as has_quota, - CASE - WHEN cq.allocated_quota IS NULL THEN 'unlimited' - WHEN cq.allocated_quota = 0 THEN 'unlimited' - WHEN (cq.allocated_quota - COALESCE(used.used_count, 0)) > 0 THEN 'available' - ELSE 'full' - END as quota_status -FROM jcbt_scholarship_type st -INNER JOIN jcbt_scholarship_batch_type bt ON st.type_id = bt.type_id -LEFT JOIN jcbt_scholarship_class_quota cq ON st.type_id = cq.type_id - AND bt.batch_id = cq.batch_id - AND cq.class_id = 1 -LEFT JOIN ( - SELECT - scholarship_type_id, - applicant_class_id, - COUNT(*) as used_count - FROM jcbt_scholarship_application - WHERE batch_id = 1 - AND applicant_class_id = 1 - AND application_status IN ('submitted', 'approved') - GROUP BY scholarship_type_id, applicant_class_id -) used ON st.type_id = used.scholarship_type_id -WHERE bt.batch_id = 1 -AND st.type_status = '1' -ORDER BY - CASE quota_status - WHEN 'available' THEN 1 - WHEN 'unlimited' THEN 2 - WHEN 'full' THEN 3 - END, - st.type_level, - st.type_name; diff --git a/backend/sql/diagnose_quota_display_issue_corrected.sql b/backend/sql/diagnose_quota_display_issue_corrected.sql deleted file mode 100644 index 777f0868..00000000 --- a/backend/sql/diagnose_quota_display_issue_corrected.sql +++ /dev/null @@ -1,353 +0,0 @@ --- =================================================================== --- 奖学金名额显示问题诊断脚本 (完全修正版) --- 创建时间: 2025-01-27 --- 目的: 检查班级名额分配和奖学金类型的数据完整性 --- 表名和字段名完全修正 --- =================================================================== - --- 1. 检查当前班主任和班级信息 -SELECT - '=== 1. 班主任和班级信息检查 ===' as info; - -SELECT - u.user_id, - u.user_name, - u.nick_name, - c.id as class_id, - c.class_name, - c.grade, - c.college_id, - c.major_id -FROM sys_user u -LEFT JOIN xg_class_msg c ON u.user_id = c.class_teacher_id -WHERE u.user_type = '03' -- 班主任 -AND c.id IS NOT NULL -ORDER BY c.id; - --- 2. 检查奖学金批次信息 -SELECT - '=== 2. 奖学金批次信息检查 ===' as info; - -SELECT - id as batch_id, - batch_name, - status as batch_status, - start_time, - end_time, - create_time -FROM jcbt_scholarship_batch -WHERE status = 'ACTIVE' -- 启用状态 -ORDER BY create_time DESC; - --- 3. 检查奖学金类型信息 -SELECT - '=== 3. 奖学金类型信息检查 ===' as info; - -SELECT - st.id as type_id, - st.type_name, - st.level_type, - st.status as type_status, - bt.batch_id, - b.batch_name -FROM jcbt_scholarship_type st -LEFT JOIN jcbt_scholarship_batch_type bt ON st.id = bt.scholarship_type_id -LEFT JOIN jcbt_scholarship_batch b ON bt.batch_id = b.id -WHERE st.status = 1 -- 启用状态 -ORDER BY st.level_type, st.type_name; - --- 4. 检查班级名额分配情况 -SELECT - '=== 4. 班级名额分配情况检查 ===' as info; - -SELECT - cq.id as quota_id, - cq.batch_id, - b.batch_name, - cq.scholarship_type_id, - st.type_name, - cq.class_id, - c.class_name, - cq.total_quota, - cq.used_quota, - cq.available_quota, - cq.allocation_method, - cq.status, - cq.create_time -FROM jcbt_scholarship_class_quota cq -LEFT JOIN jcbt_scholarship_batch b ON cq.batch_id = b.id -LEFT JOIN jcbt_scholarship_type st ON cq.scholarship_type_id = st.id -LEFT JOIN xg_class_msg c ON cq.class_id = c.id -ORDER BY cq.batch_id, cq.class_id, cq.scholarship_type_id; - --- 5. 检查已使用名额情况 -SELECT - '=== 5. 已使用名额情况检查 ===' as info; - -SELECT - sa.batch_id, - b.batch_name, - sa.scholarship_type_id, - st.type_name, - sa.applicant_class_id, - c.class_name, - COUNT(*) as actual_used_quota, - GROUP_CONCAT(sa.application_status) as status_list -FROM jcbt_scholarship_application sa -LEFT JOIN jcbt_scholarship_batch b ON sa.batch_id = b.id -LEFT JOIN jcbt_scholarship_type st ON sa.scholarship_type_id = st.id -LEFT JOIN xg_class_msg c ON sa.applicant_class_id = c.id -WHERE sa.application_status IN ('submitted', 'approved') -- 有效申请 -GROUP BY sa.batch_id, sa.scholarship_type_id, sa.applicant_class_id -ORDER BY sa.batch_id, sa.applicant_class_id, sa.scholarship_type_id; - --- 6. 检查名额使用情况汇总与一致性 -SELECT - '=== 6. 名额使用情况汇总与一致性检查 ===' as info; - -SELECT - cq.batch_id, - b.batch_name, - cq.class_id, - c.class_name, - cq.scholarship_type_id, - st.type_name, - cq.total_quota, - cq.used_quota as recorded_used_quota, - COALESCE(actual_used.used_count, 0) as actual_used_quota, - cq.available_quota as recorded_available_quota, - (cq.total_quota - COALESCE(actual_used.used_count, 0)) as calculated_available_quota, - CASE - WHEN cq.used_quota != COALESCE(actual_used.used_count, 0) THEN 'INCONSISTENT' - WHEN cq.available_quota != (cq.total_quota - COALESCE(actual_used.used_count, 0)) THEN 'INCONSISTENT' - ELSE 'CONSISTENT' - END as consistency_status, - CASE - WHEN cq.total_quota = 0 THEN 'unlimited' - WHEN (cq.total_quota - COALESCE(actual_used.used_count, 0)) > 0 THEN 'available' - ELSE 'full' - END as quota_status -FROM jcbt_scholarship_class_quota cq -LEFT JOIN jcbt_scholarship_batch b ON cq.batch_id = b.id -LEFT JOIN jcbt_scholarship_type st ON cq.scholarship_type_id = st.id -LEFT JOIN xg_class_msg c ON cq.class_id = c.id -LEFT JOIN ( - SELECT - batch_id, - scholarship_type_id, - applicant_class_id, - COUNT(*) as used_count - FROM jcbt_scholarship_application - WHERE application_status IN ('submitted', 'approved') - GROUP BY batch_id, scholarship_type_id, applicant_class_id -) actual_used ON cq.batch_id = actual_used.batch_id - AND cq.scholarship_type_id = actual_used.scholarship_type_id - AND cq.class_id = actual_used.applicant_class_id -ORDER BY cq.batch_id, cq.class_id, cq.scholarship_type_id; - --- 7. 检查特定班级的详细情况(以班级ID=1为例) -SELECT - '=== 7. 特定班级详细情况检查 (class_id=1) ===' as info; - -SELECT - '班级基本信息:' as section, - c.id as class_id, - c.class_name, - c.grade, - c.class_teacher_id, - u.user_name as class_teacher_name, - u.nick_name as class_teacher_nick -FROM xg_class_msg c -LEFT JOIN sys_user u ON c.class_teacher_id = u.user_id -WHERE c.id = 1; - -SELECT - '该班级的名额分配:' as section, - cq.scholarship_type_id, - st.type_name, - cq.total_quota, - cq.used_quota, - cq.available_quota, - cq.allocation_method, - cq.status -FROM jcbt_scholarship_class_quota cq -LEFT JOIN jcbt_scholarship_type st ON cq.scholarship_type_id = st.id -WHERE cq.class_id = 1 -ORDER BY cq.scholarship_type_id; - --- 8. 检查数据完整性问题 -SELECT - '=== 8. 数据完整性问题检查 ===' as info; - --- 检查缺少名额分配的奖学金类型 -SELECT - '缺少名额分配的奖学金类型:' as issue_type, - st.id as type_id, - st.type_name, - bt.batch_id, - b.batch_name, - COUNT(DISTINCT c.id) as total_classes_without_quota -FROM jcbt_scholarship_type st -INNER JOIN jcbt_scholarship_batch_type bt ON st.id = bt.scholarship_type_id -INNER JOIN jcbt_scholarship_batch b ON bt.batch_id = b.id -CROSS JOIN xg_class_msg c -LEFT JOIN jcbt_scholarship_class_quota cq ON st.id = cq.scholarship_type_id - AND bt.batch_id = cq.batch_id - AND c.id = cq.class_id -WHERE st.status = 1 -AND b.status = 'ACTIVE' -AND c.class_status = '1' -AND cq.id IS NULL -GROUP BY st.id, st.type_name, bt.batch_id, b.batch_name; - --- 检查有名额分配但奖学金类型不存在的情况 -SELECT - '名额分配指向不存在的奖学金类型:' as issue_type, - cq.id as quota_id, - cq.scholarship_type_id, - cq.batch_id, - cq.class_id -FROM jcbt_scholarship_class_quota cq -LEFT JOIN jcbt_scholarship_type st ON cq.scholarship_type_id = st.id -WHERE st.id IS NULL; - --- 检查名额分配指向不存在的班级 -SELECT - '名额分配指向不存在的班级:' as issue_type, - cq.id as quota_id, - cq.class_id, - cq.class_name as recorded_class_name -FROM jcbt_scholarship_class_quota cq -LEFT JOIN xg_class_msg c ON cq.class_id = c.id -WHERE c.id IS NULL; - --- 9. 模拟API查询结果 -SELECT - '=== 9. 模拟API查询结果 (batch_id=1, class_id=1) ===' as info; - -SELECT - st.id as type_id, - st.type_name, - st.level_type, - st.description, - CASE - WHEN cq.total_quota IS NULL THEN 0 - ELSE cq.total_quota - END as total_quota, - CASE - WHEN cq.used_quota IS NULL THEN 0 - ELSE cq.used_quota - END as used_quota, - CASE - WHEN cq.available_quota IS NULL THEN 0 - WHEN cq.total_quota = 0 THEN 999999 - ELSE cq.available_quota - END as available_quota, - CASE - WHEN cq.total_quota IS NULL THEN FALSE - WHEN cq.total_quota = 0 THEN FALSE - ELSE TRUE - END as has_quota, - CASE - WHEN cq.total_quota IS NULL THEN 'no_allocation' - WHEN cq.total_quota = 0 THEN 'unlimited' - WHEN cq.available_quota > 0 THEN 'available' - ELSE 'full' - END as quota_status, - cq.allocation_method, - cq.status as allocation_status -FROM jcbt_scholarship_type st -INNER JOIN jcbt_scholarship_batch_type bt ON st.id = bt.scholarship_type_id -LEFT JOIN jcbt_scholarship_class_quota cq ON st.id = cq.scholarship_type_id - AND bt.batch_id = cq.batch_id - AND cq.class_id = 1 -WHERE bt.batch_id = 1 -AND st.status = 1 -ORDER BY - CASE quota_status - WHEN 'available' THEN 1 - WHEN 'unlimited' THEN 2 - WHEN 'full' THEN 3 - WHEN 'no_allocation' THEN 4 - END, - st.level_type, - st.type_name; - --- 10. 额外检查:验证数据同步问题 -SELECT - '=== 10. 数据同步问题检查 ===' as info; - --- 检查used_quota和available_quota字段是否需要更新 -SELECT - 'need_quota_update' as check_type, - cq.id, - cq.batch_id, - cq.class_id, - cq.scholarship_type_id, - cq.total_quota, - cq.used_quota as recorded_used, - COALESCE(actual.actual_used, 0) as actual_used, - cq.available_quota as recorded_available, - (cq.total_quota - COALESCE(actual.actual_used, 0)) as calculated_available -FROM jcbt_scholarship_class_quota cq -LEFT JOIN ( - SELECT - batch_id, - scholarship_type_id, - applicant_class_id, - COUNT(*) as actual_used - FROM jcbt_scholarship_application - WHERE application_status IN ('submitted', 'approved') - GROUP BY batch_id, scholarship_type_id, applicant_class_id -) actual ON cq.batch_id = actual.batch_id - AND cq.scholarship_type_id = actual.scholarship_type_id - AND cq.class_id = actual.applicant_class_id -WHERE cq.used_quota != COALESCE(actual.actual_used, 0) - OR cq.available_quota != (cq.total_quota - COALESCE(actual.actual_used, 0)); - --- 11. 快速检查当前数据状态 -SELECT - '=== 11. 快速数据状态检查 ===' as info; - -SELECT - '总批次数' as item, - COUNT(*) as count -FROM jcbt_scholarship_batch; - -SELECT - '启用批次数' as item, - COUNT(*) as count -FROM jcbt_scholarship_batch -WHERE status = 'ACTIVE'; - -SELECT - '总奖学金类型数' as item, - COUNT(*) as count -FROM jcbt_scholarship_type; - -SELECT - '启用奖学金类型数' as item, - COUNT(*) as count -FROM jcbt_scholarship_type -WHERE status = 1; - -SELECT - '总班级数' as item, - COUNT(*) as count -FROM xg_class_msg; - -SELECT - '启用班级数' as item, - COUNT(*) as count -FROM xg_class_msg -WHERE class_status = '1'; - -SELECT - '总名额分配记录数' as item, - COUNT(*) as count -FROM jcbt_scholarship_class_quota; - -SELECT - '总申请记录数' as item, - COUNT(*) as count -FROM jcbt_scholarship_application; diff --git a/backend/sql/diagnose_quota_display_issue_final.sql b/backend/sql/diagnose_quota_display_issue_final.sql deleted file mode 100644 index 74c9d840..00000000 --- a/backend/sql/diagnose_quota_display_issue_final.sql +++ /dev/null @@ -1,306 +0,0 @@ --- =================================================================== --- 奖学金名额显示问题诊断脚本 (最终修正版) --- 创建时间: 2025-01-27 --- 目的: 检查班级名额分配和奖学金类型的数据完整性 --- 表名修正: xg_class_msg, jcbt_scholarship_class_quota --- =================================================================== - --- 1. 检查当前班主任和班级信息 -SELECT - '=== 1. 班主任和班级信息检查 ===' as info; - -SELECT - u.user_id, - u.user_name, - u.nick_name, - c.id as class_id, - c.class_name, - c.grade, - c.college_id, - c.major_id -FROM sys_user u -LEFT JOIN xg_class_msg c ON u.user_id = c.class_teacher_id -WHERE u.user_type = '03' -- 班主任 -AND c.id IS NOT NULL -ORDER BY c.id; - --- 2. 检查奖学金批次信息 -SELECT - '=== 2. 奖学金批次信息检查 ===' as info; - -SELECT - id as batch_id, - batch_name, - status as batch_status, - start_time, - end_time, - create_time -FROM jcbt_scholarship_batch -WHERE status = 'ACTIVE' -- 启用状态 -ORDER BY create_time DESC; - --- 3. 检查奖学金类型信息 -SELECT - '=== 3. 奖学金类型信息检查 ===' as info; - -SELECT - st.id as type_id, - st.type_name, - st.level_type, - st.status as type_status, - bt.batch_id, - b.batch_name -FROM jcbt_scholarship_type st -LEFT JOIN jcbt_scholarship_batch_type bt ON st.id = bt.scholarship_type_id -LEFT JOIN jcbt_scholarship_batch b ON bt.batch_id = b.id -WHERE st.status = 1 -- 启用状态 -ORDER BY st.level_type, st.type_name; - --- 4. 检查班级名额分配情况 -SELECT - '=== 4. 班级名额分配情况检查 ===' as info; - -SELECT - cq.id as quota_id, - cq.batch_id, - b.batch_name, - cq.scholarship_type_id, - st.type_name, - cq.class_id, - c.class_name, - cq.total_quota, - cq.used_quota, - cq.available_quota, - cq.allocation_method, - cq.status, - cq.create_time -FROM jcbt_scholarship_class_quota cq -LEFT JOIN jcbt_scholarship_batch b ON cq.batch_id = b.id -LEFT JOIN jcbt_scholarship_type st ON cq.scholarship_type_id = st.id -LEFT JOIN xg_class_msg c ON cq.class_id = c.id -ORDER BY cq.batch_id, cq.class_id, cq.scholarship_type_id; - --- 5. 检查已使用名额情况 -SELECT - '=== 5. 已使用名额情况检查 ===' as info; - -SELECT - sa.batch_id, - b.batch_name, - sa.scholarship_type_id, - st.type_name, - sa.applicant_class_id, - c.class_name, - COUNT(*) as actual_used_quota, - GROUP_CONCAT(sa.application_status) as status_list -FROM jcbt_scholarship_application sa -LEFT JOIN jcbt_scholarship_batch b ON sa.batch_id = b.batch_id -LEFT JOIN jcbt_scholarship_type st ON sa.scholarship_type_id = st.type_id -LEFT JOIN xg_class_msg c ON sa.applicant_class_id = c.id -WHERE sa.application_status IN ('submitted', 'approved') -- 有效申请 -GROUP BY sa.batch_id, sa.scholarship_type_id, sa.applicant_class_id -ORDER BY sa.batch_id, sa.applicant_class_id, sa.scholarship_type_id; - --- 6. 检查名额使用情况汇总与一致性 -SELECT - '=== 6. 名额使用情况汇总与一致性检查 ===' as info; - -SELECT - cq.batch_id, - b.batch_name, - cq.class_id, - c.class_name, - cq.scholarship_type_id, - st.type_name, - cq.total_quota, - cq.used_quota as recorded_used_quota, - COALESCE(actual_used.used_count, 0) as actual_used_quota, - cq.available_quota as recorded_available_quota, - (cq.total_quota - COALESCE(actual_used.used_count, 0)) as calculated_available_quota, - CASE - WHEN cq.used_quota != COALESCE(actual_used.used_count, 0) THEN 'INCONSISTENT' - WHEN cq.available_quota != (cq.total_quota - COALESCE(actual_used.used_count, 0)) THEN 'INCONSISTENT' - ELSE 'CONSISTENT' - END as consistency_status, - CASE - WHEN cq.total_quota = 0 THEN 'unlimited' - WHEN (cq.total_quota - COALESCE(actual_used.used_count, 0)) > 0 THEN 'available' - ELSE 'full' - END as quota_status -FROM jcbt_scholarship_class_quota cq -LEFT JOIN jcbt_scholarship_batch b ON cq.batch_id = b.batch_id -LEFT JOIN jcbt_scholarship_type st ON cq.scholarship_type_id = st.type_id -LEFT JOIN xg_class_msg c ON cq.class_id = c.id -LEFT JOIN ( - SELECT - batch_id, - scholarship_type_id, - applicant_class_id, - COUNT(*) as used_count - FROM jcbt_scholarship_application - WHERE application_status IN ('submitted', 'approved') - GROUP BY batch_id, scholarship_type_id, applicant_class_id -) actual_used ON cq.batch_id = actual_used.batch_id - AND cq.scholarship_type_id = actual_used.scholarship_type_id - AND cq.class_id = actual_used.applicant_class_id -ORDER BY cq.batch_id, cq.class_id, cq.scholarship_type_id; - --- 7. 检查特定班级的详细情况(以班级ID=1为例) -SELECT - '=== 7. 特定班级详细情况检查 (class_id=1) ===' as info; - -SELECT - '班级基本信息:' as section, - c.id as class_id, - c.class_name, - c.grade, - c.class_teacher_id, - u.user_name as class_teacher_name, - u.nick_name as class_teacher_nick -FROM xg_class_msg c -LEFT JOIN sys_user u ON c.class_teacher_id = u.user_id -WHERE c.id = 1; - -SELECT - '该班级的名额分配:' as section, - cq.scholarship_type_id, - st.type_name, - cq.total_quota, - cq.used_quota, - cq.available_quota, - cq.allocation_method, - cq.status -FROM jcbt_scholarship_class_quota cq -LEFT JOIN jcbt_scholarship_type st ON cq.scholarship_type_id = st.type_id -WHERE cq.class_id = 1 -ORDER BY cq.scholarship_type_id; - --- 8. 检查数据完整性问题 -SELECT - '=== 8. 数据完整性问题检查 ===' as info; - --- 检查缺少名额分配的奖学金类型 -SELECT - '缺少名额分配的奖学金类型:' as issue_type, - st.type_id, - st.type_name, - bt.batch_id, - b.batch_name, - COUNT(DISTINCT c.id) as total_classes_without_quota -FROM jcbt_scholarship_type st -INNER JOIN jcbt_scholarship_batch_type bt ON st.type_id = bt.type_id -INNER JOIN jcbt_scholarship_batch b ON bt.batch_id = b.batch_id -CROSS JOIN xg_class_msg c -LEFT JOIN jcbt_scholarship_class_quota cq ON st.type_id = cq.scholarship_type_id - AND bt.batch_id = cq.batch_id - AND c.id = cq.class_id -WHERE st.type_status = '1' -AND b.batch_status = '1' -AND c.class_status = '1' -AND cq.id IS NULL -GROUP BY st.type_id, st.type_name, bt.batch_id, b.batch_name; - --- 检查有名额分配但奖学金类型不存在的情况 -SELECT - '名额分配指向不存在的奖学金类型:' as issue_type, - cq.id as quota_id, - cq.scholarship_type_id, - cq.batch_id, - cq.class_id -FROM jcbt_scholarship_class_quota cq -LEFT JOIN jcbt_scholarship_type st ON cq.scholarship_type_id = st.type_id -WHERE st.type_id IS NULL; - --- 检查名额分配指向不存在的班级 -SELECT - '名额分配指向不存在的班级:' as issue_type, - cq.id as quota_id, - cq.class_id, - cq.class_name as recorded_class_name -FROM jcbt_scholarship_class_quota cq -LEFT JOIN xg_class_msg c ON cq.class_id = c.id -WHERE c.id IS NULL; - --- 9. 模拟API查询结果 -SELECT - '=== 9. 模拟API查询结果 (batch_id=1, class_id=1) ===' as info; - -SELECT - st.type_id, - st.type_name, - st.type_level, - st.type_description, - CASE - WHEN cq.total_quota IS NULL THEN 0 - ELSE cq.total_quota - END as total_quota, - CASE - WHEN cq.used_quota IS NULL THEN 0 - ELSE cq.used_quota - END as used_quota, - CASE - WHEN cq.available_quota IS NULL THEN 0 - WHEN cq.total_quota = 0 THEN 999999 - ELSE cq.available_quota - END as available_quota, - CASE - WHEN cq.total_quota IS NULL THEN FALSE - WHEN cq.total_quota = 0 THEN FALSE - ELSE TRUE - END as has_quota, - CASE - WHEN cq.total_quota IS NULL THEN 'no_allocation' - WHEN cq.total_quota = 0 THEN 'unlimited' - WHEN cq.available_quota > 0 THEN 'available' - ELSE 'full' - END as quota_status, - cq.allocation_method, - cq.status as allocation_status -FROM jcbt_scholarship_type st -INNER JOIN jcbt_scholarship_batch_type bt ON st.type_id = bt.type_id -LEFT JOIN jcbt_scholarship_class_quota cq ON st.type_id = cq.scholarship_type_id - AND bt.batch_id = cq.batch_id - AND cq.class_id = 1 -WHERE bt.batch_id = 1 -AND st.type_status = '1' -ORDER BY - CASE quota_status - WHEN 'available' THEN 1 - WHEN 'unlimited' THEN 2 - WHEN 'full' THEN 3 - WHEN 'no_allocation' THEN 4 - END, - st.type_level, - st.type_name; - --- 10. 额外检查:验证数据同步问题 -SELECT - '=== 10. 数据同步问题检查 ===' as info; - --- 检查used_quota和available_quota字段是否需要更新 -SELECT - 'need_quota_update' as check_type, - cq.id, - cq.batch_id, - cq.class_id, - cq.scholarship_type_id, - cq.total_quota, - cq.used_quota as recorded_used, - COALESCE(actual.actual_used, 0) as actual_used, - cq.available_quota as recorded_available, - (cq.total_quota - COALESCE(actual.actual_used, 0)) as calculated_available -FROM jcbt_scholarship_class_quota cq -LEFT JOIN ( - SELECT - batch_id, - scholarship_type_id, - applicant_class_id, - COUNT(*) as actual_used - FROM jcbt_scholarship_application - WHERE application_status IN ('submitted', 'approved') - GROUP BY batch_id, scholarship_type_id, applicant_class_id -) actual ON cq.batch_id = actual.batch_id - AND cq.scholarship_type_id = actual.scholarship_type_id - AND cq.class_id = actual.applicant_class_id -WHERE cq.used_quota != COALESCE(actual.actual_used, 0) - OR cq.available_quota != (cq.total_quota - COALESCE(actual.actual_used, 0)); diff --git a/backend/sql/fix_audit_field_names.sql b/backend/sql/fix_audit_field_names.sql deleted file mode 100644 index 4235a22e..00000000 --- a/backend/sql/fix_audit_field_names.sql +++ /dev/null @@ -1,45 +0,0 @@ --- 修复 jcbt_poverty_application 表中审核字段名称不一致问题 --- 问题: 数据库字段为 auditor_time/auditor_opinion,但实体类期望 audit_time/audit_opinion --- 解决方案: 重命名数据库字段,保持与实体类一致 - -USE hzdyjs_xg; - --- 检查当前字段状态 -SELECT '=== 修复前字段检查 ===' as message; -SELECT - COLUMN_NAME as '字段名', - DATA_TYPE as '数据类型', - IS_NULLABLE as '允许NULL', - COLUMN_DEFAULT as '默认值', - COLUMN_COMMENT as '注释' -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = 'hzdyjs_xg' -AND TABLE_NAME = 'jcbt_poverty_application' -AND COLUMN_NAME IN ('auditor_time', 'auditor_opinion', 'audit_time', 'audit_opinion'); - --- 方案1: 重命名字段(推荐) -SELECT '=== 开始重命名字段 ===' as message; - --- 重命名 auditor_time 为 audit_time -ALTER TABLE jcbt_poverty_application -CHANGE COLUMN auditor_time audit_time datetime DEFAULT NULL COMMENT '审核时间'; - --- 重命名 auditor_opinion 为 audit_opinion -ALTER TABLE jcbt_poverty_application -CHANGE COLUMN auditor_opinion audit_opinion text COMMENT '审核意见'; - --- 验证修复结果 -SELECT '=== 修复后字段检查 ===' as message; -SELECT - COLUMN_NAME as '字段名', - DATA_TYPE as '数据类型', - IS_NULLABLE as '允许NULL', - COLUMN_DEFAULT as '默认值', - COLUMN_COMMENT as '注释' -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = 'hzdyjs_xg' -AND TABLE_NAME = 'jcbt_poverty_application' -AND COLUMN_NAME IN ('auditor_time', 'auditor_opinion', 'audit_time', 'audit_opinion') -ORDER BY COLUMN_NAME; - -SELECT '✅ 字段重命名完成!现在数据库字段与实体类保持一致!' as result; diff --git a/backend/sql/fix_compatibility_create_dept.sql b/backend/sql/fix_compatibility_create_dept.sql deleted file mode 100644 index b025492b..00000000 --- a/backend/sql/fix_compatibility_create_dept.sql +++ /dev/null @@ -1,36 +0,0 @@ --- ===================================================== --- 奖学金兼得关系表 - create_dept字段修复脚本 --- 版本: v1.0 --- 创建时间: 2025-01-27 --- 问题描述: 实体类继承BaseEntity包含create_dept字段,但数据库表缺少该字段 --- 解决方案: 为jcbt_scholarship_compatibility表添加create_dept字段 --- ===================================================== - -USE `ruoyi-vue-pro`; - --- 为奖学金兼得关系表添加create_dept字段 -ALTER TABLE `jcbt_scholarship_compatibility` -ADD COLUMN IF NOT EXISTS `create_dept` BIGINT(20) COMMENT '创建部门' -AFTER `description`; - --- 验证字段添加结果 -SELECT - COLUMN_NAME, - DATA_TYPE, - IS_NULLABLE, - COLUMN_DEFAULT, - COLUMN_COMMENT -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = 'ruoyi-vue-pro' - AND TABLE_NAME = 'jcbt_scholarship_compatibility' - AND COLUMN_NAME = 'create_dept'; - --- 显示表结构确认修复结果 -DESCRIBE `jcbt_scholarship_compatibility`; - --- ===================================================== --- 修复说明: --- 1. 该字段是BaseEntity的标准字段,用于记录创建部门 --- 2. 字段类型为BIGINT(20),允许NULL,与其他表保持一致 --- 3. 字段位置放在description字段之后,符合标准字段顺序 --- ===================================================== diff --git a/backend/sql/fix_compatibility_type_field.sql b/backend/sql/fix_compatibility_type_field.sql deleted file mode 100644 index 22275451..00000000 --- a/backend/sql/fix_compatibility_type_field.sql +++ /dev/null @@ -1,56 +0,0 @@ --- ===================================================== --- 奖学金管理模块 - 兼得类型字段修复脚本 --- 版本: v1.0 --- 创建时间: 2025-08-04 --- 说明: 为jcbt_scholarship_type表添加缺失的compatibility_type字段 --- ===================================================== - --- 设置字符集 -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ===================================================== --- 1. 为奖学金类型表添加兼得类型字段 --- ===================================================== - --- 检查字段是否存在,如果不存在则添加 -ALTER TABLE `jcbt_scholarship_type` -ADD COLUMN IF NOT EXISTS `compatibility_type` VARCHAR(20) DEFAULT 'COMPATIBLE' COMMENT '兼得类型:EXCLUSIVE-完全互斥,COMPATIBLE-完全兼容,PRIORITY-优先级关系,CUSTOM-自定义配置' -AFTER `application_guide`; - --- ===================================================== --- 2. 添加兼得类型字段索引 --- ===================================================== - --- 为新字段添加索引以提高查询性能 -ALTER TABLE `jcbt_scholarship_type` -ADD INDEX IF NOT EXISTS `idx_compatibility_type` (`compatibility_type`) COMMENT '兼得类型索引'; - --- ===================================================== --- 3. 更新现有数据(可选) --- ===================================================== - --- 将现有数据的兼得类型设置为默认值(兼容) --- 如果需要不同的默认值,可以修改这里的UPDATE语句 -UPDATE `jcbt_scholarship_type` -SET `compatibility_type` = 'COMPATIBLE' -WHERE `compatibility_type` IS NULL AND `deleted` = 0; - --- ===================================================== --- 4. 验证字段添加结果 --- ===================================================== - --- 查询表结构确认字段已添加 --- DESCRIBE `jcbt_scholarship_type`; - --- 查询数据确认字段值正确 --- SELECT id, type_name, compatibility_type FROM `jcbt_scholarship_type` WHERE deleted = 0 LIMIT 5; - --- ===================================================== --- 脚本执行完成 --- ===================================================== - -SET FOREIGN_KEY_CHECKS = 1; - --- 执行完成提示 -SELECT '兼得类型字段修复完成!' AS status; diff --git a/backend/sql/fix_jcbt_scholarship_application_create_dept.sql b/backend/sql/fix_jcbt_scholarship_application_create_dept.sql deleted file mode 100644 index b4ff35ab..00000000 --- a/backend/sql/fix_jcbt_scholarship_application_create_dept.sql +++ /dev/null @@ -1,33 +0,0 @@ --- 修复奖学金申请表缺失的create_dept字段 --- 问题: MyBatis-Plus插入数据时报错 Unknown column 'create_dept' in 'field list' --- 原因: 数据库表缺少BaseEntity中的create_dept字段 --- 解决方案: 为jcbt_scholarship_application表添加create_dept字段 - --- 检查字段是否存在,不存在则添加 -SET @sql = ''; -SELECT COUNT(*) INTO @col_exists -FROM information_schema.columns -WHERE table_schema = 'hzdyjs_xg' - AND table_name = 'jcbt_scholarship_application' - AND column_name = 'create_dept'; - --- 如果字段不存在,则添加 -SET @sql = IF(@col_exists = 0, - 'ALTER TABLE jcbt_scholarship_application ADD COLUMN create_dept bigint(20) DEFAULT NULL COMMENT ''创建部门'' AFTER submit_time;', - 'SELECT ''字段 create_dept 已存在,跳过添加'' AS message;'); - -PREPARE stmt FROM @sql; -EXECUTE stmt; -DEALLOCATE PREPARE stmt; - --- 验证字段是否添加成功 -SELECT - COLUMN_NAME as '字段名', - DATA_TYPE as '数据类型', - IS_NULLABLE as '允许空值', - COLUMN_DEFAULT as '默认值', - COLUMN_COMMENT as '注释' -FROM information_schema.columns -WHERE table_schema = 'hzdyjs_xg' - AND table_name = 'jcbt_scholarship_application' - AND column_name = 'create_dept'; diff --git a/backend/sql/fix_poverty_application_status.sql b/backend/sql/fix_poverty_application_status.sql deleted file mode 100644 index 362ffa5a..00000000 --- a/backend/sql/fix_poverty_application_status.sql +++ /dev/null @@ -1,27 +0,0 @@ --- 修复助学金申请表状态问题 --- 将状态为SUBMITTED的记录改为WAITING,以便正常进行审核 - --- 查看当前状态分布(执行前检查) -SELECT status, COUNT(*) as count -FROM jcbt_poverty_application -GROUP BY status; - --- 修复SUBMITTED状态为WAITING -UPDATE jcbt_poverty_application -SET status = 'WAITING', - update_time = NOW(), - update_by = 103, - remark = CONCAT(IFNULL(remark, ''), ' [系统修复:状态从SUBMITTED更新为WAITING以支持审核]') -WHERE status = 'SUBMITTED'; - --- 查看修复后的状态分布 -SELECT status, COUNT(*) as count -FROM jcbt_poverty_application -GROUP BY status; - --- 显示被修复的记录详情 -SELECT id, application_no, student_name, status, submit_time, update_time -FROM jcbt_poverty_application -WHERE status = 'WAITING' - AND remark LIKE '%系统修复:状态从SUBMITTED更新为WAITING%' -ORDER BY update_time DESC; diff --git a/backend/sql/fix_quota_unique_constraint.sql b/backend/sql/fix_quota_unique_constraint.sql deleted file mode 100644 index e518b286..00000000 --- a/backend/sql/fix_quota_unique_constraint.sql +++ /dev/null @@ -1,101 +0,0 @@ --- ======================================== --- 修复奖学金名额分配唯一约束问题 --- 创建时间: 2025-01-28 --- 问题描述: 唯一约束包含deleted字段导致逻辑删除时出现约束冲突 --- ======================================== - -USE hzdyjs_xg; - --- 1. 查看当前的唯一约束问题数据 -SELECT - batch_id, - scholarship_type_id, - target_dept_id, - deleted, - COUNT(*) as count_records, - GROUP_CONCAT(id) as record_ids, - GROUP_CONCAT(status) as statuses -FROM jcbt_scholarship_quota -GROUP BY batch_id, scholarship_type_id, target_dept_id, deleted -HAVING COUNT(*) > 1 -ORDER BY batch_id, scholarship_type_id, target_dept_id; - --- 2. 查看可能存在冲突的记录(同一组合下有删除和未删除的记录) -SELECT - q1.id as active_id, - q1.batch_id, - q1.scholarship_type_id, - q1.target_dept_id, - q1.deleted as active_deleted, - q1.status as active_status, - q2.id as deleted_id, - q2.deleted as deleted_deleted, - q2.status as deleted_status -FROM jcbt_scholarship_quota q1 -INNER JOIN jcbt_scholarship_quota q2 ON - q1.batch_id = q2.batch_id - AND q1.scholarship_type_id = q2.scholarship_type_id - AND q1.target_dept_id = q2.target_dept_id - AND q1.deleted = 0 - AND q2.deleted = 1 -ORDER BY q1.batch_id, q1.scholarship_type_id, q1.target_dept_id; - --- 3. 删除旧的唯一约束(包含deleted字段的约束) -ALTER TABLE jcbt_scholarship_quota DROP INDEX uk_batch_type_dept; - --- 4. 先清理可能的重复数据,然后重新添加不包含deleted字段的唯一约束 --- 这样可以避免删除时的约束冲突,同时保证业务数据的唯一性 - --- 清理重复的已删除记录(保留最新的一条) -DELETE q1 FROM jcbt_scholarship_quota q1 -INNER JOIN jcbt_scholarship_quota q2 -WHERE q1.batch_id = q2.batch_id - AND q1.scholarship_type_id = q2.scholarship_type_id - AND q1.target_dept_id = q2.target_dept_id - AND q1.deleted = 1 - AND q2.deleted = 1 - AND q1.id < q2.id; - --- 如果仍然存在同一业务组合的active和deleted记录,物理删除deleted记录 -DELETE FROM jcbt_scholarship_quota -WHERE deleted = 1 -AND EXISTS ( - SELECT 1 FROM jcbt_scholarship_quota q2 - WHERE q2.batch_id = jcbt_scholarship_quota.batch_id - AND q2.scholarship_type_id = jcbt_scholarship_quota.scholarship_type_id - AND q2.target_dept_id = jcbt_scholarship_quota.target_dept_id - AND q2.deleted = 0 -); - --- 重新添加不包含deleted字段的唯一约束 -ALTER TABLE jcbt_scholarship_quota -ADD CONSTRAINT uk_batch_type_dept_business -UNIQUE (batch_id, scholarship_type_id, target_dept_id); - --- 5. 验证修复结果 -SELECT - '修复后检查' as check_type, - batch_id, - scholarship_type_id, - target_dept_id, - COUNT(*) as count_records, - GROUP_CONCAT(CONCAT('id:', id, ',deleted:', deleted)) as record_details -FROM jcbt_scholarship_quota -WHERE deleted = 0 -GROUP BY batch_id, scholarship_type_id, target_dept_id -HAVING COUNT(*) > 1 -UNION ALL -SELECT - '已删除记录检查' as check_type, - batch_id, - scholarship_type_id, - target_dept_id, - COUNT(*) as count_records, - GROUP_CONCAT(CONCAT('id:', id, ',deleted:', deleted)) as record_details -FROM jcbt_scholarship_quota -WHERE deleted = 1 -GROUP BY batch_id, scholarship_type_id, target_dept_id -HAVING COUNT(*) > 1; - --- 6. 显示当前表的约束信息 -SHOW INDEX FROM jcbt_scholarship_quota WHERE Key_name LIKE '%batch%' OR Key_name LIKE '%type%' OR Key_name LIKE '%dept%'; diff --git a/backend/sql/fix_work_study_position_create_dept.sql b/backend/sql/fix_work_study_position_create_dept.sql deleted file mode 100644 index 648b19ed..00000000 --- a/backend/sql/fix_work_study_position_create_dept.sql +++ /dev/null @@ -1,20 +0,0 @@ --- 修复勤工俭学岗位表缺少 create_dept 字段的问题 --- 创建日期: 2025-01-03 --- 说明: 添加 create_dept 字段以保持与 BaseEntity 的一致性 - --- 添加 create_dept 字段 -ALTER TABLE `jcbt_work_study_position` -ADD COLUMN `create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门' -AFTER `tenant_id`; - --- 更新现有数据的 create_dept 字段(设置为默认值 NULL) -UPDATE `jcbt_work_study_position` -SET `create_dept` = NULL -WHERE `create_dept` IS NULL; - --- 验证字段是否添加成功 -SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT, COLUMN_COMMENT -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'jcbt_work_study_position' - AND COLUMN_NAME = 'create_dept'; diff --git a/backend/sql/insert_test_data_simple.sql b/backend/sql/insert_test_data_simple.sql deleted file mode 100644 index cd317339..00000000 --- a/backend/sql/insert_test_data_simple.sql +++ /dev/null @@ -1,71 +0,0 @@ --- ===================================================== --- 奖学金名额分配 - 简单测试数据插入脚本 --- 创建时间: 2025-01-27 --- 说明: 插入基础测试数据 --- ===================================================== - --- 设置数据库 -USE hzdyjs_xg; - --- ===================================================== --- 1. 插入奖学金批次数据 --- ===================================================== -INSERT IGNORE INTO jcbt_scholarship_batch ( - id, batch_code, batch_name, academic_year, semester, batch_type, - start_time, end_time, apply_start_time, apply_end_time, - review_start_time, review_end_time, status, description, - create_by, create_time, update_by, update_time, tenant_id, deleted -) VALUES -(1890000000000000001, 'BATCH_2024_1', '2024学年第一学期奖学金评定', '2024-2025', 1, 'REGULAR', - '2024-09-01 00:00:00', '2024-12-31 23:59:59', '2024-10-01 00:00:00', '2024-10-31 23:59:59', - '2024-11-01 00:00:00', '2024-11-30 23:59:59', 'ACTIVE', '2024学年第一学期常规奖学金评定批次', - 1, NOW(), 1, NOW(), 1, 0); - --- ===================================================== --- 2. 插入奖学金类型数据 --- ===================================================== -INSERT IGNORE INTO jcbt_scholarship_type ( - id, type_code, type_name, type_category, level_type, award_amount, - description, application_guide, application_conditions, evaluation_criteria, - compatibility_type, sort_order, status, is_system, - create_by, create_time, update_by, update_time, tenant_id, deleted -) VALUES -(1890000000000000101, 'GJZXJ', '国家奖学金', 'NATIONAL', 'FIRST_CLASS', 8000.00, - '国家奖学金是为了激励普通本科高校、高等职业学校和高等专科学校学生勤奋学习、努力进取。', - '学生本人提出申请,按学校规定程序推荐上报。', '品学兼优,学习成绩排名在评选范围内位于前10%', - '学习成绩、综合测评、道德品质等综合评定', 'EXCLUSIVE', 1, 1, 1, - 1, NOW(), 1, NOW(), 1, 0); - --- ===================================================== --- 3. 插入名额分配数据 --- ===================================================== -INSERT IGNORE INTO jcbt_scholarship_quota ( - id, batch_id, scholarship_type_id, allocation_level, target_dept_id, parent_quota_id, - total_quota, used_quota, reserved_quota, available_quota, - allocation_rule, allocation_basis, allocation_method, is_adjustable, is_locked, status, - remark, create_by, create_time, update_by, update_time, tenant_id, deleted -) VALUES -(1890000000000000201, 1890000000000000001, 1890000000000000101, 'UNIVERSITY', NULL, NULL, - 50, 0, 5, 45, '{"type":"university","rule":"total_allocation"}', '根据学校总体规模和历年获奖情况分配', - 'MANUAL', 1, 0, 'ACTIVE', '全校国家奖学金总名额', 1, NOW(), 1, NOW(), 1, 0); - --- ===================================================== --- 4. 验证数据 --- ===================================================== -SELECT '插入结果验证' as message; -SELECT COUNT(*) as batch_count FROM jcbt_scholarship_batch WHERE deleted = 0; -SELECT COUNT(*) as type_count FROM jcbt_scholarship_type WHERE deleted = 0; -SELECT COUNT(*) as quota_count FROM jcbt_scholarship_quota WHERE deleted = 0; - --- 验证关联查询 -SELECT - q.id, - b.batch_name, - st.type_name as scholarship_type_name, - q.allocation_level, - q.total_quota, - q.status -FROM jcbt_scholarship_quota q -LEFT JOIN jcbt_scholarship_batch b ON q.batch_id = b.id -LEFT JOIN jcbt_scholarship_type st ON q.scholarship_type_id = st.id -WHERE q.deleted = 0; diff --git a/backend/sql/jcbt_poverty_application_menu.sql b/backend/sql/jcbt_poverty_application_menu.sql deleted file mode 100644 index 13f37d49..00000000 --- a/backend/sql/jcbt_poverty_application_menu.sql +++ /dev/null @@ -1,119 +0,0 @@ --- ======================================== --- 贫困生认定申请管理模块 - 菜单权限配置 --- 创建时间: 2025-01-26 --- 说明: 配置贫困生认定申请管理功能的菜单和权限 --- ======================================== - -USE hzdyjs_xg; - --- 设置变量 -SET @parent_menu_id = 2015; -- 奖惩补贴管理父菜单ID -SET @menu_order = 4; -- 菜单排序(在奖学金申请管理之后) - --- ===================================================== --- 1. 删除已存在的菜单(开发环境重新创建) --- ===================================================== -DELETE FROM sys_menu WHERE menu_name = '助学金申请管理' AND parent_id = @parent_menu_id; - --- ===================================================== --- 2. 创建助学金申请管理菜单 --- ===================================================== -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('助学金申请管理', @parent_menu_id, @menu_order, 'povertyApplication', 'jcbt/poverty/Application/index', '', 1, 0, 'C', '0', '0', 'jcbt:povertyApplication:list', 'money', 1, NOW(), 1, NOW(), '贫困生认定申请管理菜单'); - --- 获取刚插入的菜单ID -SET @poverty_menu_id = LAST_INSERT_ID(); - --- ===================================================== --- 3. 创建基础管理功能按钮权限(6个) --- ===================================================== - --- 3.1 查询权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('申请查询', @poverty_menu_id, 1, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:query', '#', 1, NOW(), 1, NOW(), ''); - --- 3.2 新增权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('申请新增', @poverty_menu_id, 2, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:add', '#', 1, NOW(), 1, NOW(), ''); - --- 3.3 修改权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('申请修改', @poverty_menu_id, 3, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:edit', '#', 1, NOW(), 1, NOW(), ''); - --- 3.4 删除权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('申请删除', @poverty_menu_id, 4, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:remove', '#', 1, NOW(), 1, NOW(), ''); - --- 3.5 详情权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('申请详情', @poverty_menu_id, 5, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:detail', '#', 1, NOW(), 1, NOW(), ''); - --- 3.6 导出权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('申请导出', @poverty_menu_id, 6, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:export', '#', 1, NOW(), 1, NOW(), ''); - --- ===================================================== --- 4. 创建业务功能权限(4个) --- ===================================================== - --- 4.1 我的申请权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('我的申请', @poverty_menu_id, 7, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:myList', '#', 1, NOW(), 1, NOW(), ''); - --- 4.2 待审核申请权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('待审核申请', @poverty_menu_id, 8, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:pendingList', '#', 1, NOW(), 1, NOW(), ''); - --- 4.3 申请资格检查权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('资格检查', @poverty_menu_id, 9, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:check', '#', 1, NOW(), 1, NOW(), ''); - --- 4.4 申请审核权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('申请审核', @poverty_menu_id, 10, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:approve', '#', 1, NOW(), 1, NOW(), ''); - --- ===================================================== --- 5. 创建辅助功能权限(6个) --- ===================================================== - --- 5.1 提交申请权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('提交申请', @poverty_menu_id, 11, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:submit', '#', 1, NOW(), 1, NOW(), ''); - --- 5.2 撤回申请权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('撤回申请', @poverty_menu_id, 12, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:cancel', '#', 1, NOW(), 1, NOW(), ''); - --- 5.3 驳回申请权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('驳回申请', @poverty_menu_id, 13, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:reject', '#', 1, NOW(), 1, NOW(), ''); - --- 5.4 草稿保存权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('保存草稿', @poverty_menu_id, 14, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:draft', '#', 1, NOW(), 1, NOW(), ''); - --- 5.5 重复检查权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('重复检查', @poverty_menu_id, 15, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:duplicate', '#', 1, NOW(), 1, NOW(), ''); - --- 5.6 申请统计权限 ⚠️ 这是关键的统计权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('申请统计', @poverty_menu_id, 16, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:povertyApplication:statistics', '#', 1, NOW(), 1, NOW(), ''); - --- ===================================================== --- 6. 分配权限给超级管理员角色 --- ===================================================== - --- 获取超级管理员角色ID (通常是1) -SET @admin_role_id = 1; - --- 分配所有权限给超级管理员 -INSERT INTO sys_role_menu (role_id, menu_id) -SELECT @admin_role_id, menu_id FROM sys_menu WHERE parent_id = @poverty_menu_id OR menu_id = @poverty_menu_id; - --- ===================================================== --- 7. 输出确认信息 --- ===================================================== -SELECT '贫困生认定申请管理菜单权限配置完成!' as message; -SELECT CONCAT('主菜单ID: ', @poverty_menu_id) as menu_info; -SELECT COUNT(*) as total_permissions FROM sys_menu WHERE parent_id = @poverty_menu_id OR menu_id = @poverty_menu_id; diff --git a/backend/sql/jcbt_poverty_application_table.sql b/backend/sql/jcbt_poverty_application_table.sql deleted file mode 100644 index 7ad7acca..00000000 --- a/backend/sql/jcbt_poverty_application_table.sql +++ /dev/null @@ -1,311 +0,0 @@ --- ============================================================================ --- 贫困生认定申请管理 - 数据库表创建脚本 --- 创建时间: 2024-12-19 --- 描述: 创建贫困生认定申请相关的数据库表、菜单权限和测试数据 --- ============================================================================ - --- ============================================================================ --- 1. 创建贫困生认定申请表 --- ============================================================================ -CREATE TABLE IF NOT EXISTS `jcbt_poverty_application` ( - `id` bigint(20) NOT NULL COMMENT '主键ID', - `application_no` varchar(50) DEFAULT NULL COMMENT '申请编号', - `academic_year` varchar(20) DEFAULT NULL COMMENT '学年', - `term` int(11) DEFAULT NULL COMMENT '学期', - `student_id` bigint(20) DEFAULT NULL COMMENT '学生ID', - `student_no` varchar(50) DEFAULT NULL COMMENT '学号', - `student_name` varchar(100) DEFAULT NULL COMMENT '学生姓名', - `gender` varchar(10) DEFAULT NULL COMMENT '性别', - `college_id` bigint(20) DEFAULT NULL COMMENT '学院ID', - `college_name` varchar(100) DEFAULT NULL COMMENT '学院名称', - `major_id` bigint(20) DEFAULT NULL COMMENT '专业ID', - `major_name` varchar(100) DEFAULT NULL COMMENT '专业名称', - `class_id` bigint(20) DEFAULT NULL COMMENT '班级ID', - `class_name` varchar(100) DEFAULT NULL COMMENT '班级名称', - `recognition_group` varchar(50) DEFAULT NULL COMMENT '认定群体(特殊群体/其他群体)', - `recognition_type_id` bigint(20) DEFAULT NULL COMMENT '认定类型ID', - `recognition_type_code` varchar(50) DEFAULT NULL COMMENT '认定类型编码', - `recognition_type_name` varchar(100) DEFAULT NULL COMMENT '认定类型名称', - `assistance_type_ids` varchar(500) DEFAULT NULL COMMENT '申请自助类型ID数组(多选)', - `assistance_type_names` varchar(500) DEFAULT NULL COMMENT '申请自助类型名称(多个用逗号分隔)', - `family_economy_summary` text COMMENT '家庭经济情况摘要', - `attach_application_form_url` varchar(500) DEFAULT NULL COMMENT '申请表附件URL', - `attach_application_form_id` bigint(20) DEFAULT NULL COMMENT '申请表附件ID', - `attach_survey_form_url` varchar(500) DEFAULT NULL COMMENT '调查表附件URL', - `attach_survey_form_id` bigint(20) DEFAULT NULL COMMENT '调查表附件ID', - `status` varchar(20) DEFAULT 'DRAFT' COMMENT '申请状态(DRAFT-草稿,SUBMITTED-已提交,REVIEWING-审核中,APPROVED-已通过,REJECTED-已拒绝,WITHDRAWN-已撤回)', - `submitter_id` bigint(20) DEFAULT NULL COMMENT '提交人ID', - `submitter_name` varchar(100) DEFAULT NULL COMMENT '提交人姓名', - `submit_time` datetime DEFAULT NULL COMMENT '提交时间', - `auditor_id` bigint(20) DEFAULT NULL COMMENT '审核人ID', - `auditor_name` varchar(100) DEFAULT NULL COMMENT '审核人姓名', - `audit_time` datetime DEFAULT NULL COMMENT '审核时间', - `audit_opinion` text COMMENT '审核意见', - `remark` varchar(500) DEFAULT NULL COMMENT '备注', - `deleted` bigint(20) DEFAULT '0' COMMENT '逻辑删除标记(0-正常,非0-已删除)', - `tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号', - `create_by` bigint(20) DEFAULT NULL COMMENT '创建者', - `create_time` datetime DEFAULT NULL COMMENT '创建时间', - `update_by` bigint(20) DEFAULT NULL COMMENT '更新者', - `update_time` datetime DEFAULT NULL COMMENT '更新时间', - PRIMARY KEY (`id`), - KEY `idx_student_no` (`student_no`), - KEY `idx_status` (`status`), - KEY `idx_academic_year` (`academic_year`), - KEY `idx_college_id` (`college_id`), - KEY `idx_tenant_deleted` (`tenant_id`, `deleted`), - KEY `idx_create_time` (`create_time`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='贫困生认定申请表'; - --- ============================================================================ --- 2. 插入菜单权限配置 --- ============================================================================ - --- 2.1 插入主菜单(贫困生认定申请管理) -INSERT INTO sys_menu VALUES( - '1954043650013946881', - '贫困生认定申请管理', - '1851080776692494337', - '4', - 'jcbt:poverty:application:list', - 'poverty/Application/index', - '', - '', - '1', - '0', - 'C', - '0', - '0', - 'jcbt:poverty:application:list', - 'education', - '103', - '1', - NOW(), - NULL, - NULL, - '' -); - --- 2.2 插入按钮权限 --- 查询按钮 -INSERT INTO sys_menu VALUES( - '1954043651013946881', - '贫困生认定申请查询', - '1954043650013946881', - '1', - 'jcbt:poverty:application:query', - '', - '', - '', - '1', - '0', - 'F', - '0', - '0', - 'jcbt:poverty:application:query', - '#', - '103', - '1', - NOW(), - NULL, - NULL, - '' -); - --- 新增按钮 -INSERT INTO sys_menu VALUES( - '1954043652013946881', - '贫困生认定申请新增', - '1954043650013946881', - '2', - 'jcbt:poverty:application:add', - '', - '', - '', - '1', - '0', - 'F', - '0', - '0', - 'jcbt:poverty:application:add', - '#', - '103', - '1', - NOW(), - NULL, - NULL, - '' -); - --- 修改按钮 -INSERT INTO sys_menu VALUES( - '1954043653013946881', - '贫困生认定申请修改', - '1954043650013946881', - '3', - 'jcbt:poverty:application:edit', - '', - '', - '', - '1', - '0', - 'F', - '0', - '0', - 'jcbt:poverty:application:edit', - '#', - '103', - '1', - NOW(), - NULL, - NULL, - '' -); - --- 删除按钮 -INSERT INTO sys_menu VALUES( - '1954043654013946881', - '贫困生认定申请删除', - '1954043650013946881', - '4', - 'jcbt:poverty:application:remove', - '', - '', - '', - '1', - '0', - 'F', - '0', - '0', - 'jcbt:poverty:application:remove', - '#', - '103', - '1', - NOW(), - NULL, - NULL, - '' -); - --- 导出按钮 -INSERT INTO sys_menu VALUES( - '1954043655013946881', - '贫困生认定申请导出', - '1954043650013946881', - '5', - 'jcbt:poverty:application:export', - '', - '', - '', - '1', - '0', - 'F', - '0', - '0', - 'jcbt:poverty:application:export', - '#', - '103', - '1', - NOW(), - NULL, - NULL, - '' -); - --- 审核按钮 -INSERT INTO sys_menu VALUES( - '1954043656013946881', - '贫困生认定申请审核', - '1954043650013946881', - '6', - 'jcbt:poverty:application:audit', - '', - '', - '', - '1', - '0', - 'F', - '0', - '0', - 'jcbt:poverty:application:audit', - '#', - '103', - '1', - NOW(), - NULL, - NULL, - '' -); - --- ============================================================================ --- 3. 插入字典数据 --- ============================================================================ - --- 3.1 申请状态字典 -INSERT INTO sys_dict_type VALUES( - (SELECT IFNULL(MAX(dict_id), 0) + 1 FROM sys_dict_type t), - '贫困生申请状态', - 'jcbt_poverty_application_status', - '0', - '103', - '1', - NOW(), - NULL, - NULL, - '贫困生认定申请状态选项' -); - --- 获取刚插入的字典类型ID -SET @dict_type_id = (SELECT dict_id FROM sys_dict_type WHERE dict_type = 'jcbt_poverty_application_status'); - --- 插入状态字典数据 -INSERT INTO sys_dict_data VALUES(@dict_type_id * 10 + 1, 1, '草稿', 'DRAFT', 'jcbt_poverty_application_status', '', 'info', 'N', '0', '103', '1', NOW(), NULL, NULL, '申请草稿状态'); -INSERT INTO sys_dict_data VALUES(@dict_type_id * 10 + 2, 2, '已提交', 'SUBMITTED', 'jcbt_poverty_application_status', '', 'primary', 'N', '0', '103', '1', NOW(), NULL, NULL, '申请已提交状态'); -INSERT INTO sys_dict_data VALUES(@dict_type_id * 10 + 3, 3, '审核中', 'REVIEWING', 'jcbt_poverty_application_status', '', 'warning', 'N', '0', '103', '1', NOW(), NULL, NULL, '申请审核中状态'); -INSERT INTO sys_dict_data VALUES(@dict_type_id * 10 + 4, 4, '已通过', 'APPROVED', 'jcbt_poverty_application_status', '', 'success', 'N', '0', '103', '1', NOW(), NULL, NULL, '申请已通过状态'); -INSERT INTO sys_dict_data VALUES(@dict_type_id * 10 + 5, 5, '已拒绝', 'REJECTED', 'jcbt_poverty_application_status', '', 'danger', 'N', '0', '103', '1', NOW(), NULL, NULL, '申请已拒绝状态'); -INSERT INTO sys_dict_data VALUES(@dict_type_id * 10 + 6, 6, '已撤回', 'WITHDRAWN', 'jcbt_poverty_application_status', '', 'info', 'N', '0', '103', '1', NOW(), NULL, NULL, '申请已撤回状态'); - --- ============================================================================ --- 4. 插入测试数据 --- ============================================================================ - -INSERT INTO `jcbt_poverty_application` VALUES -(1954048400013946881, 'PK2024001', '2024-2025', 1, 1001, '202401001', '张三', '男', 101, '计算机学院', 10101, '计算机科学与技术', 1010101, '计软2401班', '其他群体', 1, 'TYPE001', '一般困难', '1,2', '学费减免,生活补助', '家庭经济困难,父母务农收入微薄', '', NULL, '', NULL, 'SUBMITTED', 1001, '张三', '2024-12-01 10:00:00', NULL, NULL, NULL, NULL, '因家庭经济困难申请贫困生认定', 0, '000000', 103, '2024-12-01 09:30:00', 103, '2024-12-01 10:00:00'), -(1954048401013946881, 'PK2024002', '2024-2025', 1, 1002, '202401002', '李四', '女', 102, '外国语学院', 10201, '英语', 1020101, '英语2401班', '特殊群体', 2, 'TYPE002', '特别困难', '1,3', '学费减免,勤工助学', '单亲家庭,母亲重病', '', NULL, '', NULL, 'REVIEWING', 1002, '李四', '2024-12-02 14:00:00', 201, '王老师', NULL, NULL, '单亲家庭申请特别困难认定', 0, '000000', 103, '2024-12-02 13:30:00', 201, '2024-12-02 14:00:00'), -(1954048402013946881, 'PK2024003', '2024-2025', 1, 1003, '202401003', '王五', '男', 101, '计算机学院', 10102, '软件工程', 1010201, '软工2401班', '其他群体', 1, 'TYPE001', '一般困难', '2', '生活补助', '家庭收入较低', '', NULL, '', NULL, 'APPROVED', 1003, '王五', '2024-11-28 16:00:00', 201, '王老师', '2024-11-30 10:00:00', '符合认定条件,予以通过', '已通过认定审核', 0, '000000', 103, '2024-11-28 15:30:00', 201, '2024-11-30 10:00:00'), -(1954048403013946881, 'PK2024004', '2024-2025', 1, 1004, '202401004', '赵六', '女', 103, '经济管理学院', 10301, '会计学', 1030101, '会计2401班', '其他群体', 1, 'TYPE001', '一般困难', '1,2,3', '学费减免,生活补助,勤工助学', '家庭经济确实困难', '', NULL, '', NULL, 'DRAFT', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '正在准备申请材料', 0, '000000', 103, '2024-12-05 11:00:00', 103, '2024-12-05 11:00:00'), -(1954048404013946881, 'PK2024005', '2024-2025', 1, 1005, '202401005', '钱七', '男', 104, '机械工程学院', 10401, '机械设计制造及其自动化', 1040101, '机械2401班', '特殊群体', 2, 'TYPE002', '特别困难', '1,2', '学费减免,生活补助', '建档立卡贫困户', '', NULL, '', NULL, 'REJECTED', 1005, '钱七', '2024-11-25 09:00:00', 202, '李老师', '2024-11-27 15:00:00', '材料不够完整,请补充相关证明', '需要补充材料后重新申请', 0, '000000', 103, '2024-11-25 08:30:00', 202, '2024-11-27 15:00:00'); - --- ============================================================================ --- 5. 创建索引优化 --- ============================================================================ - --- 优化查询性能的复合索引 -CREATE INDEX idx_student_status_time ON jcbt_poverty_application(student_id, status, create_time); -CREATE INDEX idx_college_year_status ON jcbt_poverty_application(college_id, academic_year, status); -CREATE INDEX idx_auditor_time ON jcbt_poverty_application(auditor_id, audit_time); - --- ============================================================================ --- 6. 数据统计视图(可选) --- ============================================================================ - --- 创建状态统计视图 -CREATE OR REPLACE VIEW v_poverty_application_statistics AS -SELECT - status, - COUNT(*) as count, - academic_year, - college_name -FROM jcbt_poverty_application -WHERE deleted = 0 -GROUP BY status, academic_year, college_name; - --- ============================================================================ --- 脚本执行完成 --- ============================================================================ --- 执行完成后请检查: --- 1. 表结构是否创建成功: SHOW CREATE TABLE jcbt_poverty_application; --- 2. 菜单权限是否正确: SELECT * FROM sys_menu WHERE menu_name LIKE '%贫困生%'; --- 3. 测试数据是否插入: SELECT COUNT(*) FROM jcbt_poverty_application; --- ============================================================================ diff --git a/backend/sql/jcbt_scholarship_application_menu_permissions.sql b/backend/sql/jcbt_scholarship_application_menu_permissions.sql deleted file mode 100644 index 42211545..00000000 --- a/backend/sql/jcbt_scholarship_application_menu_permissions.sql +++ /dev/null @@ -1,141 +0,0 @@ --- ======================================== --- 奖学金申请管理模块 - 菜单权限配置 --- 创建时间: 2025-01-26 --- 说明: 配置奖学金申请管理功能的菜单和权限 --- ======================================== - -USE hzdyjs_xg; - --- 设置变量 -SET @parent_menu_id = 2015; -- 奖惩补贴管理父菜单ID -SET @menu_order = 3; -- 菜单排序 - --- ===================================================== --- 1. 删除已存在的菜单(开发环境重新创建) --- ===================================================== -DELETE FROM sys_menu WHERE menu_name = '申请管理' AND parent_id = @parent_menu_id; - --- ===================================================== --- 2. 创建申请管理菜单 --- ===================================================== -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('申请管理', @parent_menu_id, @menu_order, 'application', 'jcbt/scholarship/application/index', '', 1, 0, 'C', '0', '0', 'jcbt:scholarshipApplication:list', 'form', 1, NOW(), 1, NOW(), '奖学金申请管理菜单'); - --- 获取刚插入的菜单ID -SET @application_menu_id = LAST_INSERT_ID(); - --- ===================================================== --- 3. 创建申请管理功能按钮权限 --- ===================================================== - --- 3.1 查询权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('申请查询', @application_menu_id, 1, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:query', '#', 1, NOW(), 1, NOW(), ''); - --- 3.2 新增权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('申请新增', @application_menu_id, 2, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:add', '#', 1, NOW(), 1, NOW(), ''); - --- 3.3 修改权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('申请修改', @application_menu_id, 3, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:edit', '#', 1, NOW(), 1, NOW(), ''); - --- 3.4 删除权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('申请删除', @application_menu_id, 4, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:remove', '#', 1, NOW(), 1, NOW(), ''); - --- 3.5 导出权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('申请导出', @application_menu_id, 5, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:export', '#', 1, NOW(), 1, NOW(), ''); - --- 3.6 导入权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('申请导入', @application_menu_id, 6, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:import', '#', 1, NOW(), 1, NOW(), ''); - --- ===================================================== --- 4. 创建业务功能权限 --- ===================================================== - --- 4.1 我的申请权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('我的申请', @application_menu_id, 7, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:my', '#', 1, NOW(), 1, NOW(), ''); - --- 4.2 待审核申请权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('待审核申请', @application_menu_id, 8, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:pending', '#', 1, NOW(), 1, NOW(), ''); - --- 4.3 申请资格检查权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('资格检查', @application_menu_id, 9, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:check', '#', 1, NOW(), 1, NOW(), ''); - --- 4.4 批量审核权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('批量审核', @application_menu_id, 10, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:approve', '#', 1, NOW(), 1, NOW(), ''); - --- 4.5 提交申请权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('提交申请', @application_menu_id, 11, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:submit', '#', 1, NOW(), 1, NOW(), ''); - --- 4.6 撤回申请权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('撤回申请', @application_menu_id, 12, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:withdraw', '#', 1, NOW(), 1, NOW(), ''); - --- 4.7 批量申请权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('批量申请', @application_menu_id, 13, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:batch', '#', 1, NOW(), 1, NOW(), ''); - --- 4.8 统计权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('申请统计', @application_menu_id, 14, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:statistics', '#', 1, NOW(), 1, NOW(), ''); - --- ===================================================== --- 5. 创建扩展功能权限 --- ===================================================== - --- 5.1 名额查询权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('名额查询', @application_menu_id, 15, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:quota', '#', 1, NOW(), 1, NOW(), ''); - --- 5.2 可申请奖学金查询权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('可申请奖学金', @application_menu_id, 16, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:available', '#', 1, NOW(), 1, NOW(), ''); - --- 5.3 班级信息查询权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('班级信息查询', @application_menu_id, 17, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:classInfo', '#', 1, NOW(), 1, NOW(), ''); - --- 5.4 学生信息查询权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('学生信息查询', @application_menu_id, 18, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:students', '#', 1, NOW(), 1, NOW(), ''); - --- 5.5 奖学金类型查询权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('奖学金类型查询', @application_menu_id, 19, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipApplication:scholarshipTypes', '#', 1, NOW(), 1, NOW(), ''); - --- ===================================================== --- 6. 为管理员角色分配权限 --- ===================================================== - --- 获取管理员角色ID (role_key = 'admin') -SET @admin_role_id = (SELECT role_id FROM sys_role WHERE role_key = 'admin' LIMIT 1); - --- 为管理员分配奖学金申请管理菜单权限 -INSERT INTO sys_role_menu (role_id, menu_id) -SELECT @admin_role_id, menu_id -FROM sys_menu -WHERE (menu_id = @application_menu_id OR parent_id = @application_menu_id) -AND NOT EXISTS ( - SELECT 1 FROM sys_role_menu rm - WHERE rm.role_id = @admin_role_id AND rm.menu_id = sys_menu.menu_id -); - --- ===================================================== --- 7. 检查结果 --- ===================================================== -SELECT '奖学金申请管理菜单权限配置完成!' as message; - --- 查看创建的菜单 -SELECT menu_id, menu_name, parent_id, perms, menu_type -FROM sys_menu -WHERE menu_id = @application_menu_id OR parent_id = @application_menu_id -ORDER BY parent_id, order_num; diff --git a/backend/sql/jcbt_scholarship_management.sql b/backend/sql/jcbt_scholarship_management.sql deleted file mode 100644 index 0931ef8a..00000000 --- a/backend/sql/jcbt_scholarship_management.sql +++ /dev/null @@ -1,42 +0,0 @@ --- ===================================================== --- 奖学金管理模块 - 完整数据库表结构 --- 版本: v1.0 --- 创建时间: 2025-01-27 --- 说明: 包含奖学金类型表的完整结构定义 --- ===================================================== - --- 奖学金类型表 -CREATE TABLE IF NOT EXISTS jcbt_scholarship_type ( - id BIGINT(20) PRIMARY KEY COMMENT '主键ID', - type_name VARCHAR(100) NOT NULL COMMENT '奖学金类型名称', - type_code VARCHAR(50) UNIQUE NOT NULL COMMENT '类型代码', - description TEXT COMMENT '详细描述', - amount DECIMAL(10,2) DEFAULT 0.00 COMMENT '金额', - create_dept BIGINT(20) COMMENT '创建部门', - create_by BIGINT(20) COMMENT '创建者', - create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - update_by BIGINT(20) COMMENT '更新者', - update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - tenant_id BIGINT(20) NOT NULL COMMENT '租户ID', - deleted TINYINT(1) DEFAULT 0 COMMENT '删除标记', - is_system TINYINT(1) DEFAULT 0 COMMENT '是否系统内置', - status TINYINT(1) DEFAULT 1 COMMENT '状态', - sort_order INT DEFAULT 0 COMMENT '排序', - KEY idx_status (status) COMMENT '状态索引', - KEY idx_create_time (create_time) COMMENT '创建时间索引', - KEY idx_tenant_deleted (tenant_id, deleted) COMMENT '租户删除索引' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='奖学金类型表'; - --- 如果表已存在,添加create_dept字段(兼容性处理) -ALTER TABLE jcbt_scholarship_type -ADD COLUMN IF NOT EXISTS create_dept BIGINT(20) COMMENT '创建部门' -AFTER is_system; - --- ===================================================== --- 奖学金兼得关系表修复 --- ===================================================== - --- 为jcbt_scholarship_compatibility表添加create_dept字段 -ALTER TABLE jcbt_scholarship_compatibility -ADD COLUMN IF NOT EXISTS create_dept BIGINT(20) COMMENT '创建部门' -AFTER description; diff --git a/backend/sql/jcbt_scholarship_quota_management.sql b/backend/sql/jcbt_scholarship_quota_management.sql deleted file mode 100644 index c1b0cdb2..00000000 --- a/backend/sql/jcbt_scholarship_quota_management.sql +++ /dev/null @@ -1,98 +0,0 @@ --- ======================================== --- 奖学金名额分配模块 - 数据库建表脚本 --- 创建时间: 2025-01-27 --- 模块: ruoyi-jcbt --- 说明: 按批次进行名额分配管理 --- ======================================== - -USE hzdyjs_xg; - --- 删除已存在的表(开发环境) -DROP TABLE IF EXISTS `jcbt_scholarship_quota_adjustment`; -DROP TABLE IF EXISTS `jcbt_scholarship_quota`; - --- ===================================================== --- 1. 名额分配主表 --- ===================================================== -CREATE TABLE `jcbt_scholarship_quota` ( - `id` BIGINT(20) NOT NULL COMMENT '主键ID', - `batch_id` BIGINT(20) NOT NULL COMMENT '批次ID', - `scholarship_type_id` BIGINT(20) NOT NULL COMMENT '奖学金类型ID', - `allocation_level` VARCHAR(20) NOT NULL COMMENT '分配级别:UNIVERSITY-全校,COLLEGE-学院,MAJOR-专业,CLASS-班级', - `target_dept_id` BIGINT(20) DEFAULT NULL COMMENT '目标部门ID(学院/专业/班级)', - `parent_quota_id` BIGINT(20) DEFAULT NULL COMMENT '上级名额ID(层级分配)', - `total_quota` INT NOT NULL DEFAULT 0 COMMENT '总名额', - `used_quota` INT NOT NULL DEFAULT 0 COMMENT '已使用名额', - `reserved_quota` INT NOT NULL DEFAULT 0 COMMENT '预留名额', - `available_quota` INT NOT NULL DEFAULT 0 COMMENT '可用名额', - `allocation_rule` TEXT DEFAULT NULL COMMENT '分配规则(JSON格式)', - `allocation_basis` VARCHAR(500) DEFAULT NULL COMMENT '分配依据说明', - `allocation_method` VARCHAR(20) DEFAULT 'MANUAL' COMMENT '分配方式:MANUAL-手动分配,AUTO-自动分配,PROPORTIONAL-按比例分配', - `is_adjustable` TINYINT(1) DEFAULT 1 COMMENT '是否可调整:0-否,1-是', - `is_locked` TINYINT(1) DEFAULT 0 COMMENT '是否锁定:0-否,1-是', - `status` VARCHAR(20) DEFAULT 'ACTIVE' COMMENT '状态:ACTIVE-生效,INACTIVE-失效,PENDING-待审核', - `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注', - `tenant_id` BIGINT(20) NOT NULL COMMENT '租户ID', - `create_dept` BIGINT(20) DEFAULT NULL COMMENT '创建部门', - `create_by` BIGINT(20) DEFAULT NULL COMMENT '创建者', - `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_by` BIGINT(20) DEFAULT NULL COMMENT '更新者', - `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` TINYINT(1) DEFAULT 0 COMMENT '删除标记:0-正常,1-删除', - PRIMARY KEY (`id`), - UNIQUE KEY `uk_batch_type_dept` (`batch_id`, `scholarship_type_id`, `target_dept_id`, `deleted`), - INDEX `idx_batch_level` (`batch_id`, `allocation_level`), - INDEX `idx_dept_quota` (`target_dept_id`, `total_quota`), - INDEX `idx_parent_quota` (`parent_quota_id`), - INDEX `idx_tenant_status` (`tenant_id`, `status`, `deleted`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='奖学金名额分配表'; - --- ===================================================== --- 2. 名额调整记录表 --- ===================================================== -CREATE TABLE `jcbt_scholarship_quota_adjustment` ( - `id` BIGINT(20) NOT NULL COMMENT '主键ID', - `quota_id` BIGINT(20) NOT NULL COMMENT '名额分配ID', - `adjustment_type` VARCHAR(20) NOT NULL COMMENT '调整类型:INCREASE-增加,DECREASE-减少,TRANSFER-转移', - `from_quota_id` BIGINT(20) DEFAULT NULL COMMENT '源名额ID(转移时使用)', - `to_quota_id` BIGINT(20) DEFAULT NULL COMMENT '目标名额ID(转移时使用)', - `adjustment_amount` INT NOT NULL COMMENT '调整数量', - `before_total` INT NOT NULL COMMENT '调整前总名额', - `after_total` INT NOT NULL COMMENT '调整后总名额', - `adjustment_reason` VARCHAR(500) NOT NULL COMMENT '调整原因', - `approval_status` VARCHAR(20) DEFAULT 'PENDING' COMMENT '审批状态:PENDING-待审批,APPROVED-已通过,REJECTED-已拒绝', - `approval_user_id` BIGINT(20) DEFAULT NULL COMMENT '审批人ID', - `approval_time` DATETIME DEFAULT NULL COMMENT '审批时间', - `approval_remark` VARCHAR(500) DEFAULT NULL COMMENT '审批备注', - `tenant_id` BIGINT(20) NOT NULL COMMENT '租户ID', - `create_dept` BIGINT(20) DEFAULT NULL COMMENT '创建部门', - `create_by` BIGINT(20) DEFAULT NULL COMMENT '创建者', - `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_by` BIGINT(20) DEFAULT NULL COMMENT '更新者', - `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` TINYINT(1) DEFAULT 0 COMMENT '删除标记:0-正常,1-删除', - PRIMARY KEY (`id`), - INDEX `idx_quota_id` (`quota_id`), - INDEX `idx_adjustment_type` (`adjustment_type`, `approval_status`), - INDEX `idx_from_to_quota` (`from_quota_id`, `to_quota_id`), - INDEX `idx_tenant` (`tenant_id`, `deleted`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='名额调整记录表'; - --- ===================================================== --- 3. 添加外键约束(可选,根据实际情况) --- ===================================================== --- ALTER TABLE `jcbt_scholarship_quota` --- ADD CONSTRAINT `fk_quota_batch` FOREIGN KEY (`batch_id`) REFERENCES `jcbt_scholarship_batch` (`id`); - --- ALTER TABLE `jcbt_scholarship_quota` --- ADD CONSTRAINT `fk_quota_type` FOREIGN KEY (`scholarship_type_id`) REFERENCES `jcbt_scholarship_type` (`id`); - --- ALTER TABLE `jcbt_scholarship_quota_adjustment` --- ADD CONSTRAINT `fk_adjustment_quota` FOREIGN KEY (`quota_id`) REFERENCES `jcbt_scholarship_quota` (`id`); - --- ===================================================== --- 4. 验证表创建 --- ===================================================== -SHOW TABLES LIKE 'jcbt_scholarship_quota%'; -DESCRIBE jcbt_scholarship_quota; -DESCRIBE jcbt_scholarship_quota_adjustment; diff --git a/backend/sql/jcbt_scholarship_quota_menu_permissions.sql b/backend/sql/jcbt_scholarship_quota_menu_permissions.sql deleted file mode 100644 index 8c50752a..00000000 --- a/backend/sql/jcbt_scholarship_quota_menu_permissions.sql +++ /dev/null @@ -1,134 +0,0 @@ --- ======================================== --- 奖学金名额分配模块 - 菜单权限配置 --- 创建时间: 2025-01-27 --- 说明: 配置名额分配功能的菜单和权限 --- ======================================== - -USE hzdyjs_xg; - --- 设置变量 -SET @parent_menu_id = 2015; -- 奖惩补贴管理父菜单ID -SET @menu_order = 4; -- 菜单排序 - --- ===================================================== --- 1. 删除已存在的菜单(开发环境重新创建) --- ===================================================== -DELETE FROM sys_menu WHERE menu_name = '名额分配管理' AND parent_id = @parent_menu_id; - --- ===================================================== --- 2. 创建名额分配管理菜单 --- ===================================================== -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('名额分配管理', @parent_menu_id, @menu_order, 'scholarshipQuota', 'jcbt/scholarshipQuota/index', '', 1, 0, 'C', '0', '0', 'jcbt:scholarshipQuota:list', 'tree-table', 1, NOW(), 1, NOW(), '奖学金名额分配管理菜单'); - --- 获取刚插入的菜单ID -SET @quota_menu_id = LAST_INSERT_ID(); - --- ===================================================== --- 3. 创建名额分配功能按钮权限 --- ===================================================== - --- 3.1 查询权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('名额分配查询', @quota_menu_id, 1, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:query', '#', 1, NOW(), 1, NOW(), ''); - --- 3.2 新增权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('名额分配新增', @quota_menu_id, 2, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:add', '#', 1, NOW(), 1, NOW(), ''); - --- 3.3 修改权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('名额分配修改', @quota_menu_id, 3, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:edit', '#', 1, NOW(), 1, NOW(), ''); - --- 3.4 删除权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('名额分配删除', @quota_menu_id, 4, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:remove', '#', 1, NOW(), 1, NOW(), ''); - --- 3.5 导出权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('名额分配导出', @quota_menu_id, 5, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:export', '#', 1, NOW(), 1, NOW(), ''); - --- 3.6 批量分配权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('批量分配名额', @quota_menu_id, 6, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:batchAllocate', '#', 1, NOW(), 1, NOW(), ''); - --- 3.7 名额调整权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('名额调整', @quota_menu_id, 7, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:adjust', '#', 1, NOW(), 1, NOW(), ''); - --- 3.8 名额锁定权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('名额锁定', @quota_menu_id, 8, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:lock', '#', 1, NOW(), 1, NOW(), ''); - --- 3.9 自动分配权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('自动分配名额', @quota_menu_id, 9, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:autoAllocate', '#', 1, NOW(), 1, NOW(), ''); - --- 3.10 复制分配权限 -INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query_param, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -VALUES ('复制名额分配', @quota_menu_id, 10, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipQuota:copy', '#', 1, NOW(), 1, NOW(), ''); - --- ===================================================== --- 4. 为管理员角色分配权限 --- ===================================================== - --- 4.1 获取管理员角色ID -SET @admin_role_id = (SELECT role_id FROM sys_role WHERE role_key = 'admin' LIMIT 1); - --- 4.2 为管理员角色分配名额分配菜单权限 -INSERT INTO sys_role_menu (role_id, menu_id) -SELECT @admin_role_id, menu_id -FROM sys_menu -WHERE (menu_id = @quota_menu_id OR parent_id = @quota_menu_id) - AND NOT EXISTS ( - SELECT 1 FROM sys_role_menu rm - WHERE rm.role_id = @admin_role_id AND rm.menu_id = sys_menu.menu_id - ); - --- ===================================================== --- 5. 创建字典数据 --- ===================================================== - --- 5.1 分配级别字典 -INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, update_by, update_time, remark) -VALUES ('名额分配级别', 'jcbt_quota_allocation_level', '0', 1, NOW(), 1, NOW(), '奖学金名额分配级别字典类型') -ON DUPLICATE KEY UPDATE dict_name = VALUES(dict_name); - -INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) -VALUES -(1, '全校', 'UNIVERSITY', 'jcbt_quota_allocation_level', '', 'primary', 'Y', '0', 1, NOW(), 1, NOW(), '全校级别分配'), -(2, '学院', 'COLLEGE', 'jcbt_quota_allocation_level', '', 'success', 'N', '0', 1, NOW(), 1, NOW(), '学院级别分配'), -(3, '专业', 'MAJOR', 'jcbt_quota_allocation_level', '', 'info', 'N', '0', 1, NOW(), 1, NOW(), '专业级别分配'), -(4, '班级', 'CLASS', 'jcbt_quota_allocation_level', '', 'warning', 'N', '0', 1, NOW(), 1, NOW(), '班级级别分配') -ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label); - --- 5.2 分配方式字典 -INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, update_by, update_time, remark) -VALUES ('名额分配方式', 'jcbt_quota_allocation_method', '0', 1, NOW(), 1, NOW(), '奖学金名额分配方式字典类型') -ON DUPLICATE KEY UPDATE dict_name = VALUES(dict_name); - -INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) -VALUES -(1, '手动分配', 'MANUAL', 'jcbt_quota_allocation_method', '', 'primary', 'Y', '0', 1, NOW(), 1, NOW(), '手动分配名额'), -(2, '自动分配', 'AUTO', 'jcbt_quota_allocation_method', '', 'success', 'N', '0', 1, NOW(), 1, NOW(), '自动分配名额'), -(3, '按比例分配', 'PROPORTIONAL', 'jcbt_quota_allocation_method', '', 'info', 'N', '0', 1, NOW(), 1, NOW(), '按比例分配名额') -ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label); - --- 5.3 分配状态字典 -INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, update_by, update_time, remark) -VALUES ('名额分配状态', 'jcbt_quota_status', '0', 1, NOW(), 1, NOW(), '奖学金名额分配状态字典类型') -ON DUPLICATE KEY UPDATE dict_name = VALUES(dict_name); - -INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark) -VALUES -(1, '生效', 'ACTIVE', 'jcbt_quota_status', '', 'success', 'Y', '0', 1, NOW(), 1, NOW(), '名额分配生效'), -(2, '失效', 'INACTIVE', 'jcbt_quota_status', '', 'danger', 'N', '0', 1, NOW(), 1, NOW(), '名额分配失效'), -(3, '待审核', 'PENDING', 'jcbt_quota_status', '', 'warning', 'N', '0', 1, NOW(), 1, NOW(), '名额分配待审核') -ON DUPLICATE KEY UPDATE dict_label = VALUES(dict_label); - --- ===================================================== --- 6. 验证创建结果 --- ===================================================== -SELECT '名额分配管理菜单创建完成!' as message; -SELECT menu_id, menu_name, parent_id, perms FROM sys_menu WHERE menu_name LIKE '%名额分配%' ORDER BY parent_id, order_num; -SELECT dict_type, COUNT(*) as count FROM sys_dict_data WHERE dict_type LIKE 'jcbt_quota_%' GROUP BY dict_type; diff --git a/backend/sql/scholarship_test_data.sql b/backend/sql/scholarship_test_data.sql deleted file mode 100644 index 7d63846a..00000000 --- a/backend/sql/scholarship_test_data.sql +++ /dev/null @@ -1,224 +0,0 @@ --- ==================================================================== --- 奖学金管理模块 - 测试数据脚本 --- 创建时间: 2025-01-27 --- 说明: 包含奖学金类型、班级、申请记录的测试数据 --- ==================================================================== - -USE hzdyjs_xg; - --- ===================================================== --- 1. 清理现有测试数据 --- ===================================================== -DELETE FROM jcbt_scholarship_application WHERE student_name LIKE '测试学生%'; -DELETE FROM jcbt_scholarship_type WHERE type_name LIKE '测试%'; -DELETE FROM xg_class_msg WHERE class_name LIKE '测试%'; - --- ===================================================== --- 2. 插入奖学金类型测试数据 --- ===================================================== -INSERT INTO jcbt_scholarship_type ( - id, type_code, type_name, type_category, level_type, award_amount, - description, application_guide, application_conditions, evaluation_criteria, - compatibility_type, sort_order, status, is_system, tenant_id, deleted, - create_by, create_time, update_by, update_time -) VALUES -( - 1863768901234567001, - 'ACADEMIC_EXCELLENCE', - '优秀学生奖学金', - 'ACADEMIC', - 'FIRST_CLASS', - 3000.00, - '奖励品学兼优的学生', - '申请时需要提交成绩单和获奖证书', - '学期平均分85分以上,无挂科记录', - '按成绩排名评定', - 'COMPATIBLE', - 1, 1, 0, '000000', 0, - 1, NOW(), 1, NOW() -), -( - 1863768901234567002, - 'POVERTY_ASSISTANCE', - '贫困助学金', - 'ASSISTANCE', - 'GENERAL', - 2000.00, - '资助家庭经济困难学生', - '申请时需要提交家庭经济证明', - '家庭经济困难,成绩及格以上', - '按经济困难程度评定', - 'COMPATIBLE', - 2, 1, 0, '000000', 0, - 1, NOW(), 1, NOW() -), -( - 1863768901234567003, - 'INNOVATION_PRIZE', - '创新创业奖学金', - 'INNOVATION', - 'SPECIAL', - 5000.00, - '奖励在创新创业方面表现突出的学生', - '申请时需要提交创新项目材料', - '有创新成果或创业经历', - '按创新项目质量评定', - 'EXCLUSIVE', - 3, 1, 0, '000000', 0, - 1, NOW(), 1, NOW() -); - --- ===================================================== --- 3. 插入班级测试数据 --- ===================================================== -INSERT INTO xg_class_msg ( - id, college_id, college_name, major_id, major_name, - class_code, class_name, class_type, grade, enrollment_year, graduation_year, - class_teacher_id, class_teacher_name, class_status, - planned_capacity, current_student_count, tenant_id, deleted, - create_by, create_time, update_by, update_time -) VALUES -( - 1863768901234568001, - 100, '计算机学院', 101, '软件工程', - 'CS2021001', '测试班级2021级软件工程1班', '1', '2021', 2021, 2025, - 1001, '张老师', '1', - 30, 28, '000000', 0, - 1, NOW(), 1, NOW() -), -( - 1863768901234568002, - 100, '计算机学院', 101, '软件工程', - 'CS2021002', '测试班级2021级软件工程2班', '1', '2021', 2021, 2025, - 1002, '李老师', '1', - 30, 26, '000000', 0, - 1, NOW(), 1, NOW() -), -( - 1863768901234568003, - 200, '机械学院', 201, '机械设计制造及其自动化', - 'ME2021001', '测试班级2021级机械1班', '1', '2021', 2021, 2025, - 2001, '王老师', '1', - 25, 24, '000000', 0, - 1, NOW(), 1, NOW() -); - --- ===================================================== --- 4. 插入申请记录测试数据 --- ===================================================== -INSERT INTO jcbt_scholarship_application ( - id, application_no, batch_id, scholarship_type_id, - student_no, student_name, student_id, dept_id, major_id, class_id, - application_type, current_status, apply_reason, self_evaluation, - calculated_score, final_score, ranking_in_dept, ranking_in_major, - submit_time, tenant_id, deleted, - create_by, create_time, update_by, update_time -) VALUES -( - 1863768901234569001, - 'APPLY20250127001', - 1863768901234560001, -- 假设批次ID - 1863768901234567001, -- 优秀学生奖学金 - '2021001001', '测试学生张三', 1863768901234570001, - 100, 101, 1863768901234568001, -- 计算机学院,软件工程,测试班级1 - 'STUDENT', 'SUBMITTED', '学习成绩优异,积极参与社会实践', - '我在本学期各科成绩均在90分以上,积极参与班级和学院活动,希望能够获得奖学金鼓励。', - 92.5, 93.0, 2, 1, - NOW(), '000000', 0, - 1, NOW(), 1, NOW() -), -( - 1863768901234569002, - 'APPLY20250127002', - 1863768901234560001, -- 假设批次ID - 1863768901234567002, -- 贫困助学金 - '2021001002', '测试学生李四', 1863768901234570002, - 100, 101, 1863768901234568001, -- 计算机学院,软件工程,测试班级1 - 'STUDENT', 'SUBMITTED', '家庭经济困难,需要资助', - '家庭经济困难,父母务农收入微薄,希望通过助学金减轻经济负担,专心学习。', - 78.5, 80.0, 15, 8, - NOW(), '000000', 0, - 1, NOW(), 1, NOW() -), -( - 1863768901234569003, - 'APPLY20250127003', - 1863768901234560001, -- 假设批次ID - 1863768901234567003, -- 创新创业奖学金 - '2021002001', '测试学生王五', 1863768901234570003, - 100, 101, 1863768901234568002, -- 计算机学院,软件工程,测试班级2 - 'RECOMMEND', 'REVIEWING', '在创新创业方面表现突出', - '参与开发了校园APP项目,获得大学生创新创业大赛二等奖,具有很强的创新能力。', - 88.0, 89.5, 5, 3, - NOW(), '000000', 0, - 1, NOW(), 1, NOW() -), -( - 1863768901234569004, - 'APPLY20250127004', - 1863768901234560001, -- 假设批次ID - 1863768901234567001, -- 优秀学生奖学金 - '2021003001', '测试学生赵六', 1863768901234570004, - 200, 201, 1863768901234568003, -- 机械学院,机械设计,测试班级3 - 'STUDENT', 'APPROVED', '学习成绩优秀,综合素质高', - '各科成绩均名列前茅,担任班长职务,热心为同学服务,积极参与各项活动。', - 95.0, 95.5, 1, 1, - DATE_SUB(NOW(), INTERVAL 2 DAY), '000000', 0, - 1, DATE_SUB(NOW(), INTERVAL 2 DAY), 1, NOW() -), -( - 1863768901234569005, - 'APPLY20250127005', - 1863768901234560001, -- 假设批次ID - 1863768901234567002, -- 贫困助学金 - '2021003002', '测试学生孙七', 1863768901234570005, - 200, 201, 1863768901234568003, -- 机械学院,机械设计,测试班级3 - 'STUDENT', 'REJECTED', '经济困难但成绩有待提高', - '虽然家庭经济困难,但我会努力学习,提高成绩,争取下次申请成功。', - 65.0, 68.0, 20, 12, - DATE_SUB(NOW(), INTERVAL 3 DAY), '000000', 0, - 1, DATE_SUB(NOW(), INTERVAL 3 DAY), 1, NOW() -); - --- ===================================================== --- 5. 插入奖学金批次测试数据(如果需要) --- ===================================================== -INSERT IGNORE INTO jcbt_scholarship_batch ( - id, batch_name, batch_code, academic_year, semester, - start_date, end_date, status, description, - tenant_id, deleted, create_by, create_time, update_by, update_time -) VALUES ( - 1863768901234560001, - '2024-2025学年第一学期奖学金申请', - 'BATCH202401', - '2024-2025', '1', - '2024-09-01', '2024-09-30', 'ACTIVE', '2024-2025学年第一学期奖学金申请批次', - '000000', 0, 1, NOW(), 1, NOW() -); - --- ===================================================== --- 6. 验证数据插入 --- ===================================================== -SELECT '=== 奖学金类型数据 ===' AS info; -SELECT id, type_code, type_name, award_amount FROM jcbt_scholarship_type WHERE type_name LIKE '测试%' OR type_name LIKE '%奖学金' OR type_name LIKE '%助学金' LIMIT 5; - -SELECT '=== 班级数据 ===' AS info; -SELECT id, class_code, class_name, college_name, major_name FROM xg_class_msg WHERE class_name LIKE '测试%' LIMIT 5; - -SELECT '=== 申请记录数据 ===' AS info; -SELECT id, application_no, student_name, current_status FROM jcbt_scholarship_application WHERE student_name LIKE '测试学生%' LIMIT 5; - -SELECT '=== 关联查询测试 ===' AS info; -SELECT - a.application_no, - a.student_name, - st.type_name as scholarship_type_name, - c.class_name, - a.current_status -FROM jcbt_scholarship_application a -LEFT JOIN jcbt_scholarship_type st ON a.scholarship_type_id = st.id -LEFT JOIN xg_class_msg c ON a.class_id = c.id -WHERE a.student_name LIKE '测试学生%' -LIMIT 10; - -COMMIT; \ No newline at end of file diff --git a/backend/sql/test_assistance_types_fix.sql b/backend/sql/test_assistance_types_fix.sql deleted file mode 100644 index d27dc40e..00000000 --- a/backend/sql/test_assistance_types_fix.sql +++ /dev/null @@ -1,43 +0,0 @@ --- 测试 assistance_types 字段修复结果 -USE hzdyjs_xg; - -SELECT '=== 检查 assistance_types 字段属性 ===' as message; - -SELECT - COLUMN_NAME as '字段名', - DATA_TYPE as '数据类型', - IS_NULLABLE as '允许NULL', - COLUMN_DEFAULT as '默认值', - COLUMN_COMMENT as '注释' -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = 'hzdyjs_xg' -AND TABLE_NAME = 'jcbt_poverty_application' -AND COLUMN_NAME = 'assistance_types'; - -SELECT '=== 测试插入记录(assistance_types为NULL)===' as message; - --- 插入测试记录,assistance_types 字段为 NULL -INSERT INTO jcbt_poverty_application ( - id, application_no, academic_year, term, student_id, student_no, student_name, - gender, college_id, college_name, major_id, major_name, class_id, class_name, - recognition_group, recognition_type_id, recognition_type_name, - status, create_by, create_time, tenant_id -) VALUES ( - 999999998, 'TEST002', '2024-2025', 1, 1002, '202401002', '测试学生2', - '1', 102, '测试学院', 10102, '测试专业', 1010102, '测试班级2', - '特殊群体', 1, '特困生', - 'DRAFT', 103, NOW(), '000000' -); - -SELECT '=== 查询测试记录 ===' as message; - -SELECT id, student_name, assistance_types, status -FROM jcbt_poverty_application -WHERE id = 999999998; - -SELECT '=== 清理测试数据 ===' as message; - --- 清理测试数据 -DELETE FROM jcbt_poverty_application WHERE id = 999999998; - -SELECT '✅ 测试完成!如果没有错误,说明 assistance_types 字段修复成功!' as result; diff --git a/backend/sql/test_audit_fields_fix.sql b/backend/sql/test_audit_fields_fix.sql deleted file mode 100644 index ee6ebe94..00000000 --- a/backend/sql/test_audit_fields_fix.sql +++ /dev/null @@ -1,35 +0,0 @@ --- 测试审核字段修复结果 -USE hzdyjs_xg; - -SELECT '=== 检查修复后的审核字段 ===' as message; - -SELECT - COLUMN_NAME as '字段名', - DATA_TYPE as '数据类型', - IS_NULLABLE as '允许NULL', - COLUMN_DEFAULT as '默认值', - COLUMN_COMMENT as '注释' -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = 'hzdyjs_xg' -AND TABLE_NAME = 'jcbt_poverty_application' -AND COLUMN_NAME IN ('audit_time', 'audit_opinion', 'auditor_id', 'auditor_name') -ORDER BY COLUMN_NAME; - -SELECT '=== 测试审核字段查询(模拟MyBatis-Plus查询)===' as message; - --- 模拟MyBatis-Plus的查询,包含所有字段 -SELECT - id, application_no, academic_year, term, student_id, student_no, student_name, - gender, college_id, college_name, major_id, major_name, class_id, class_name, - teacher_id, teacher_name, recognition_group, recognition_type_id, recognition_type_code, - recognition_type_name, assistance_type_ids, assistance_type_names, family_economy_summary, - attach_application_form_url, attach_application_form_id, attach_survey_form_url, - attach_survey_form_id, status, submitter_id, submitter_name, submit_time, - auditor_id, auditor_name, audit_time, audit_opinion, remark, - deleted, create_dept, create_by, create_time, update_by, update_time -FROM jcbt_poverty_application -WHERE deleted = 0 AND tenant_id = '000000' -ORDER BY create_time DESC -LIMIT 1; - -SELECT '✅ 测试完成!如果没有 Unknown column 错误,说明字段修复成功!' as result; diff --git a/backend/sql/test_fix_result.sql b/backend/sql/test_fix_result.sql deleted file mode 100644 index 2c407465..00000000 --- a/backend/sql/test_fix_result.sql +++ /dev/null @@ -1,52 +0,0 @@ --- ================================================================ --- 测试 teacher_name 字段修复结果 --- 文件: test_fix_result.sql --- 功能: 验证修复是否成功 --- ================================================================ - -USE hzdyjs_xg; - --- 1. 检查表结构 -SELECT '=== 检查表结构 ===' AS message; -SHOW CREATE TABLE jcbt_poverty_application; - --- 2. 检查关键字段属性 -SELECT '=== 检查关键字段属性 ===' AS message; -SELECT - COLUMN_NAME AS '字段名', - DATA_TYPE AS '数据类型', - IS_NULLABLE AS '允许NULL', - COLUMN_DEFAULT AS '默认值', - COLUMN_COMMENT AS '注释' -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = 'hzdyjs_xg' - AND TABLE_NAME = 'jcbt_poverty_application' - AND COLUMN_NAME IN ('teacher_id', 'teacher_name') -ORDER BY ORDINAL_POSITION; - --- 3. 测试插入记录(不包含teacher_name) -SELECT '=== 测试插入记录 ===' AS message; - -INSERT INTO jcbt_poverty_application ( - id, application_no, academic_year, term, student_id, student_no, student_name, - gender, college_id, college_name, major_id, major_name, class_id, class_name, - recognition_group, recognition_type_id, recognition_type_name, assistance_types, - status, create_by, create_time, tenant_id -) VALUES ( - 999999999, 'TEST001', '2024-2025', 1, 1001, '202401001', '测试学生', - '1', 101, '计算机学院', 10101, '计算机科学', 1010101, '测试班级', - '特殊群体', 1, '特困生', '助学金', - 'DRAFT', 103, NOW(), '000000' -); - --- 4. 查询测试记录 -SELECT '=== 查询测试记录 ===' AS message; -SELECT - id, student_name, teacher_id, teacher_name, status -FROM jcbt_poverty_application -WHERE id = 999999999; - --- 5. 清理测试数据 -DELETE FROM jcbt_poverty_application WHERE id = 999999999; - -SELECT '✅ 测试完成!如果没有错误,说明修复成功!' AS result; diff --git a/backend/sql/test_missing_fields_fix.sql b/backend/sql/test_missing_fields_fix.sql deleted file mode 100644 index 293018ac..00000000 --- a/backend/sql/test_missing_fields_fix.sql +++ /dev/null @@ -1,105 +0,0 @@ --- ===================================================== --- 奖学金类型表字段修复验证脚本 --- 创建时间: 2025-08-04 --- 说明: 验证申请条件、评定标准、备注字段是否正确添加和工作 --- ===================================================== - --- 1. 验证字段是否存在 -SELECT - COLUMN_NAME as '字段名', - DATA_TYPE as '数据类型', - CHARACTER_MAXIMUM_LENGTH as '最大长度', - IS_NULLABLE as '是否可空', - COLUMN_DEFAULT as '默认值', - COLUMN_COMMENT as '字段注释' -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'jcbt_scholarship_type' - AND COLUMN_NAME IN ('application_conditions', 'evaluation_criteria', 'remark') -ORDER BY ORDINAL_POSITION; - --- 2. 查看表结构(包含新增字段的完整表结构) -DESCRIBE jcbt_scholarship_type; - --- 3. 测试插入数据(包含新增字段) -INSERT INTO jcbt_scholarship_type ( - id, type_code, type_name, type_category, level_type, award_amount, - description, application_guide, application_conditions, evaluation_criteria, remark, - sort_order, status, is_system, compatibility_type, - create_by, create_time, update_by, update_time, tenant_id, deleted -) VALUES ( - 1001, 'TEST_001', '测试奖学金', 'ACADEMIC', 'FIRST_CLASS', 5000.00, - '这是一个测试奖学金描述', - '请按照以下步骤申请:\n1. 填写申请表\n2. 提交相关材料', - '申请条件:\n1. 学习成绩优秀,GPA≥3.5\n2. 无违纪记录\n3. 积极参与社会实践', - '评定标准:\n1. 学习成绩占60%\n2. 综合素质占30%\n3. 社会实践占10%', - '备注:本奖学金每学期评选一次,优秀学生可连续获得', - 1, 1, 0, 'COMPATIBLE', - 1, NOW(), 1, NOW(), '000000', 0 -); - --- 4. 验证数据插入是否成功 -SELECT - id, type_code, type_name, - LEFT(application_conditions, 50) as '申请条件_前50字符', - LEFT(evaluation_criteria, 50) as '评定标准_前50字符', - LEFT(remark, 50) as '备注_前50字符' -FROM jcbt_scholarship_type -WHERE type_code = 'TEST_001'; - --- 5. 测试更新操作 -UPDATE jcbt_scholarship_type -SET - application_conditions = '更新后的申请条件:\n1. GPA≥3.8\n2. 英语四级以上\n3. 无挂科记录', - evaluation_criteria = '更新后的评定标准:\n1. 学习成绩70%\n2. 英语水平20%\n3. 综合表现10%', - remark = '更新后的备注:此奖学金面向大二及以上学生', - update_time = NOW() -WHERE type_code = 'TEST_001'; - --- 6. 验证更新是否成功 -SELECT - id, type_code, type_name, - application_conditions as '申请条件', - evaluation_criteria as '评定标准', - remark as '备注', - update_time as '更新时间' -FROM jcbt_scholarship_type -WHERE type_code = 'TEST_001'; - --- 7. 查询所有奖学金类型的这三个字段(查看现有数据) -SELECT - id, type_code, type_name, - CASE - WHEN application_conditions IS NULL THEN '空值' - WHEN application_conditions = '' THEN '空字符串' - ELSE CONCAT('有值-', LEFT(application_conditions, 20), '...') - END as '申请条件状态', - CASE - WHEN evaluation_criteria IS NULL THEN '空值' - WHEN evaluation_criteria = '' THEN '空字符串' - ELSE CONCAT('有值-', LEFT(evaluation_criteria, 20), '...') - END as '评定标准状态', - CASE - WHEN remark IS NULL THEN '空值' - WHEN remark = '' THEN '空字符串' - ELSE CONCAT('有值-', LEFT(remark, 20), '...') - END as '备注状态' -FROM jcbt_scholarship_type -WHERE deleted = 0 -ORDER BY sort_order, create_time DESC; - --- 8. 清理测试数据 -DELETE FROM jcbt_scholarship_type WHERE type_code = 'TEST_001'; - --- 9. 验证清理结果 -SELECT COUNT(*) as '清理后剩余测试数据数量' -FROM jcbt_scholarship_type -WHERE type_code = 'TEST_001'; - --- ===================================================== --- 测试完成提示 --- ===================================================== -SELECT - '字段修复验证完成' as '状态', - '如果以上查询都正常执行,说明字段修复成功' as '说明', - '现在可以重启后端服务测试详情页面显示' as '下一步'; diff --git a/backend/sql/test_scholarship_basic_data.sql b/backend/sql/test_scholarship_basic_data.sql deleted file mode 100644 index af5c2ae4..00000000 --- a/backend/sql/test_scholarship_basic_data.sql +++ /dev/null @@ -1,131 +0,0 @@ --- ===================================================== --- 奖学金名额分配 - 基础数据检查和测试数据插入 --- 创建时间: 2025-01-27 --- 说明: 检查和创建测试用的基础数据 --- ===================================================== - -USE hzdyjs_xg; - --- ===================================================== --- 1. 检查现有数据 --- ===================================================== - --- 检查奖学金批次数据 -SELECT 'jcbt_scholarship_batch' as table_name, COUNT(*) as record_count FROM jcbt_scholarship_batch WHERE deleted = 0; - --- 检查奖学金类型数据 -SELECT 'jcbt_scholarship_type' as table_name, COUNT(*) as record_count FROM jcbt_scholarship_type WHERE deleted = 0; - --- 检查名额分配数据 -SELECT 'jcbt_scholarship_quota' as table_name, COUNT(*) as record_count FROM jcbt_scholarship_quota WHERE deleted = 0; - --- ===================================================== --- 2. 插入测试批次数据(如果不存在) --- ===================================================== - -INSERT IGNORE INTO jcbt_scholarship_batch ( - id, batch_code, batch_name, academic_year, semester, batch_type, - start_time, end_time, apply_start_time, apply_end_time, - review_start_time, review_end_time, status, description, - create_by, create_time, update_by, update_time, tenant_id, deleted -) VALUES -(1890000000000000001, 'BATCH_2024_1', '2024学年第一学期奖学金评定', '2024-2025', 1, 'REGULAR', - '2024-09-01 00:00:00', '2024-12-31 23:59:59', '2024-10-01 00:00:00', '2024-10-31 23:59:59', - '2024-11-01 00:00:00', '2024-11-30 23:59:59', 'ACTIVE', '2024学年第一学期常规奖学金评定批次', - 1, NOW(), 1, NOW(), 1, 0), -(1890000000000000002, 'BATCH_2024_2', '2024学年第二学期奖学金评定', '2024-2025', 2, 'REGULAR', - '2025-02-01 00:00:00', '2025-06-30 23:59:59', '2025-03-01 00:00:00', '2025-03-31 23:59:59', - '2025-04-01 00:00:00', '2025-04-30 23:59:59', 'DRAFT', '2024学年第二学期常规奖学金评定批次', - 1, NOW(), 1, NOW(), 1, 0); - --- ===================================================== --- 3. 插入测试奖学金类型数据(如果不存在) --- ===================================================== - -INSERT IGNORE INTO jcbt_scholarship_type ( - id, type_code, type_name, type_category, level_type, award_amount, - description, application_guide, application_conditions, evaluation_criteria, - compatibility_type, sort_order, status, is_system, - create_by, create_time, update_by, update_time, tenant_id, deleted -) VALUES -(1890000000000000101, 'GJZXJ', '国家奖学金', 'NATIONAL', 'FIRST_CLASS', 8000.00, - '国家奖学金是为了激励普通本科高校、高等职业学校和高等专科学校学生勤奋学习、努力进取,在德、智、体、美等方面全面发展,由中央政府出资设立的奖励特别优秀学生的奖学金。', - '学生本人提出申请,按学校规定程序推荐上报。', '品学兼优,学习成绩排名在评选范围内位于前10%', - '学习成绩、综合测评、道德品质等综合评定', 'EXCLUSIVE', 1, 1, 1, - 1, NOW(), 1, NOW(), 1, 0), -(1890000000000000102, 'GJLZJ', '国家励志奖学金', 'NATIONAL', 'SECOND_CLASS', 5000.00, - '国家励志奖学金是为了激励普通本科高校、高等职业学校和高等专科学校的家庭经济困难学生勤奋学习、努力进取,在德、智、体、美等方面全面发展,由中央和地方政府共同出资设立的,奖励资助品学兼优的家庭经济困难学生的奖学金。', - '学生本人提出申请,按学校规定程序推荐上报。', '家庭经济困难且品学兼优,学习成绩排名在评选范围内位于前25%', - '学习成绩、综合测评、家庭经济状况等综合评定', 'EXCLUSIVE', 2, 1, 1, - 1, NOW(), 1, NOW(), 1, 0), -(1890000000000000103, 'XXZXJ1', '校级奖学金一等奖', 'SCHOOL', 'FIRST_CLASS', 3000.00, - '学校设立的奖学金,奖励学习成绩优秀、综合素质突出的学生。', - '学生本人提出申请,班级推荐,学院审核。', '学习成绩排名在专业前5%,综合测评排名在专业前10%', - '学习成绩、综合测评、特长发展等', 'COMPATIBLE', 3, 1, 0, - 1, NOW(), 1, NOW(), 1, 0), -(1890000000000000104, 'XXZXJ2', '校级奖学金二等奖', 'SCHOOL', 'SECOND_CLASS', 2000.00, - '学校设立的奖学金,奖励学习成绩良好、综合素质较好的学生。', - '学生本人提出申请,班级推荐,学院审核。', '学习成绩排名在专业前15%,综合测评排名在专业前20%', - '学习成绩、综合测评、特长发展等', 'COMPATIBLE', 4, 1, 0, - 1, NOW(), 1, NOW(), 1, 0), -(1890000000000000105, 'SZZXJ', '社会专项奖学金', 'ENTERPRISE', 'SPECIAL', 1500.00, - '由社会企业、校友或其他组织设立的专项奖学金。', - '学生本人提出申请,按专项奖学金具体要求推荐。', '符合专项奖学金设立的特定条件和要求', - '按照专项奖学金的评定标准执行', 'CUSTOM', 5, 1, 0, - 1, NOW(), 1, NOW(), 1, 0); - --- ===================================================== --- 4. 插入测试名额分配数据(如果不存在) --- ===================================================== - -INSERT IGNORE INTO jcbt_scholarship_quota ( - id, batch_id, scholarship_type_id, allocation_level, target_dept_id, parent_quota_id, - total_quota, used_quota, reserved_quota, available_quota, - allocation_rule, allocation_basis, allocation_method, is_adjustable, is_locked, status, - remark, create_by, create_time, update_by, update_time, tenant_id, deleted -) VALUES --- 国家奖学金 - 全校级分配 -(1890000000000000201, 1890000000000000001, 1890000000000000101, 'UNIVERSITY', NULL, NULL, - 50, 0, 5, 45, '{"type":"university","rule":"total_allocation"}', '根据学校总体规模和历年获奖情况分配', - 'MANUAL', 1, 0, 'ACTIVE', '全校国家奖学金总名额', 1, NOW(), 1, NOW(), 1, 0), - --- 国家励志奖学金 - 全校级分配 -(1890000000000000202, 1890000000000000001, 1890000000000000102, 'UNIVERSITY', NULL, NULL, - 200, 0, 20, 180, '{"type":"university","rule":"total_allocation"}', '根据学校困难学生比例和名额分配', - 'MANUAL', 1, 0, 'ACTIVE', '全校国家励志奖学金总名额', 1, NOW(), 1, NOW(), 1, 0), - --- 校级奖学金一等奖 - 全校级分配 -(1890000000000000203, 1890000000000000001, 1890000000000000103, 'UNIVERSITY', NULL, NULL, - 100, 0, 10, 90, '{"type":"university","rule":"total_allocation"}', '根据学校各学院学生人数比例分配', - 'MANUAL', 1, 0, 'ACTIVE', '全校校级一等奖学金总名额', 1, NOW(), 1, NOW(), 1, 0), - --- 校级奖学金二等奖 - 全校级分配 -(1890000000000000204, 1890000000000000001, 1890000000000000104, 'UNIVERSITY', NULL, NULL, - 300, 0, 30, 270, '{"type":"university","rule":"total_allocation"}', '根据学校各学院学生人数比例分配', - 'MANUAL', 1, 0, 'ACTIVE', '全校校级二等奖学金总名额', 1, NOW(), 1, NOW(), 1, 0); - --- ===================================================== --- 5. 验证插入结果 --- ===================================================== - --- 再次检查数据插入结果 -SELECT '插入后-jcbt_scholarship_batch' as table_name, COUNT(*) as record_count FROM jcbt_scholarship_batch WHERE deleted = 0; -SELECT '插入后-jcbt_scholarship_type' as table_name, COUNT(*) as record_count FROM jcbt_scholarship_type WHERE deleted = 0; -SELECT '插入后-jcbt_scholarship_quota' as table_name, COUNT(*) as record_count FROM jcbt_scholarship_quota WHERE deleted = 0; - --- 查看详细数据 -SELECT - q.id, - b.batch_name, - st.type_name as scholarship_type_name, - q.allocation_level, - q.total_quota, - q.available_quota, - q.status -FROM jcbt_scholarship_quota q -LEFT JOIN jcbt_scholarship_batch b ON q.batch_id = b.id -LEFT JOIN jcbt_scholarship_type st ON q.scholarship_type_id = st.id -WHERE q.deleted = 0 -ORDER BY q.id; - --- ===================================================== diff --git a/backend/sql/test_work_study_data.sql b/backend/sql/test_work_study_data.sql deleted file mode 100644 index 1124ebda..00000000 --- a/backend/sql/test_work_study_data.sql +++ /dev/null @@ -1,95 +0,0 @@ --- ===================================================== --- 勤工俭学测试数据脚本 - 修正版 --- 匹配当前数据库表结构 --- 创建时间: 2025-01-03 --- ===================================================== - --- 设置字符集 -SET NAMES utf8mb4; - --- ===================================================== --- 1. 插入测试岗位数据 --- ===================================================== - --- 1.1 图书馆助理管理员岗位 -INSERT INTO `jcbt_work_study_position` -(`id`, `position_name`, `position_scope`, `required_count`, `work_time`, `start_date`, `end_date`, - `position_requirements`, `salary_info`, `contact_teacher`, `contact_phone`, - `college_id`, `college_name`, `status`, `create_by`, `update_by`, `tenant_id`) -VALUES -(1736000000000000001, '图书馆助理管理员', 'UNIVERSITY', 5, '周一至周五 14:00-17:00,每天3小时', '2025-01-03', '2025-06-30', - '1. 大二及以上年级\n2. 学习成绩良好\n3. 责任心强,工作认真\n4. 熟悉图书分类和管理', - '15元/小时', '张老师', '13800138001', - 1001, '文学院', 'RECRUITING', 1, 1, '000000'); - --- 1.2 实验室设备维护岗位 -INSERT INTO `jcbt_work_study_position` -(`id`, `position_name`, `position_scope`, `required_count`, `work_time`, `start_date`, `end_date`, - `position_requirements`, `salary_info`, `contact_teacher`, `contact_phone`, - `college_id`, `college_name`, `status`, `create_by`, `update_by`, `tenant_id`) -VALUES -(1736000000000000002, '实验室设备维护', 'COLLEGE', 2, '周三、周五 16:00-18:00,每次2小时', '2025-01-03', '2025-05-31', - '1. 理工科专业学生\n2. 有基础的设备维护经验\n3. 动手能力强\n4. 能吃苦耐劳', - '18元/小时', '李老师', '13800138002', - 1002, '理学院', 'RECRUITING', 1, 1, '000000'); - --- 1.3 学生宿舍管理助理岗位 -INSERT INTO `jcbt_work_study_position` -(`id`, `position_name`, `position_scope`, `required_count`, `work_time`, `start_date`, `end_date`, - `position_requirements`, `salary_info`, `contact_teacher`, `contact_phone`, - `college_id`, `college_name`, `status`, `create_by`, `update_by`, `tenant_id`) -VALUES -(1736000000000000003, '学生宿舍管理助理', 'UNIVERSITY', 3, '周一至周日轮班,每次4小时', '2025-01-03', '2025-07-31', - '1. 品行端正,无违纪记录\n2. 沟通能力强\n3. 能适应轮班工作\n4. 有服务意识', - '12元/小时,夜班补贴3元/小时', '王老师', '13800138003', - 1003, '学生处', 'RECRUITING', 1, 1, '000000'); - --- ===================================================== --- 2. 插入测试申请数据 --- ===================================================== - --- 2.1 张三的申请 -INSERT INTO `jcbt_work_study_application` -(`id`, `position_id`, `position_name`, `position_type`, `work_location`, `planned_work_hours`, - `student_id`, `student_name`, `student_number`, `college_id`, `college_name`, `major_id`, `major_name`, - `grade`, `class_name`, `contact_phone`, `family_financial_status`, `application_reason`, - `personal_ability`, `time_arrangement`, `status`, `application_date`, `create_by`, `update_by`, `tenant_id`) -VALUES -(1736100000000000001, 1736000000000000001, '图书馆助理管理员', 'TEACHING_ASSISTANT', '图书馆', 15, - 2000001, '张三', '2023001001', 1001, '文学院', 2001, '汉语言文学', '2', '汉语言文学2023-1班', - '13900139001', 'DIFFICULT', '家庭经济困难,希望通过勤工俭学减轻家庭负担,同时锻炼自己的工作能力。', - '有图书管理相关经验,熟悉图书分类方法,责任心强,工作细致认真。', - '周一至周五下午14:00-17:00有空,时间安排合理,不会影响学习。', - 'SUBMITTED', '2025-01-03 10:00:00', 1, 1, '000000'); - --- 2.2 李四的申请 -INSERT INTO `jcbt_work_study_application` -(`id`, `position_id`, `position_name`, `position_type`, `work_location`, `planned_work_hours`, - `student_id`, `student_name`, `student_number`, `college_id`, `college_name`, `major_id`, `major_name`, - `grade`, `class_name`, `contact_phone`, `family_financial_status`, `application_reason`, - `personal_ability`, `time_arrangement`, `status`, `application_date`, `create_by`, `update_by`, `tenant_id`) -VALUES -(1736100000000000002, 1736000000000000002, '实验室设备维护', 'LOGISTICS', '物理实验室', 8, - 2000002, '李四', '2023002001', 1002, '理学院', 2002, '应用物理学', '3', '应用物理学2021-1班', - '13900139002', 'AVERAGE', '希望通过实验室工作积累实践经验,为将来就业做准备。', - '理工科背景,具备基本的物理实验操作能力,对设备维护有浓厚兴趣。', - '周三、周五下午时间充足,能保证工作时间,不影响专业课学习。', - 'COLLEGE_PASSED', '2025-01-03 11:30:00', 1, 1, '000000'); - --- 2.3 王五的申请 -INSERT INTO `jcbt_work_study_application` -(`id`, `position_id`, `position_name`, `position_type`, `work_location`, `planned_work_hours`, - `student_id`, `student_name`, `student_number`, `college_id`, `college_name`, `major_id`, `major_name`, - `grade`, `class_name`, `contact_phone`, `family_financial_status`, `application_reason`, - `personal_ability`, `time_arrangement`, `status`, `application_date`, - `college_review_status`, `college_review_time`, `college_reviewer_name`, `college_review_comment`, - `create_by`, `update_by`, `tenant_id`) -VALUES -(1736100000000000003, 1736000000000000003, '学生宿舍管理助理', 'SERVICE', '学生宿舍区', 20, - 2000003, '王五', '2023003001', 1003, '管理学院', 2003, '工商管理', '2', '工商管理2023-2班', - '13900139003', 'GOOD', '希望通过宿舍管理工作提升组织协调能力和服务意识。', - '性格开朗,沟通能力强,有学生干部经验,能够胜任宿舍管理工作。', - '时间灵活,能够适应轮班制度,周末和晚上都有时间。', - 'APPROVED', '2025-01-03 09:15:00', - 'APPROVED', '2025-01-03 15:30:00', '赵老师', '学生综合素质优秀,适合宿舍管理工作。', - 1, 1, '000000'); diff --git a/backend/sql/wechat_config_init.sql b/backend/sql/wechat_config_init.sql deleted file mode 100644 index e91b6f60..00000000 --- a/backend/sql/wechat_config_init.sql +++ /dev/null @@ -1,246 +0,0 @@ --- ===================================================== --- 微信JS-SDK配置初始化脚本 --- 版本: v1.0 --- 创建时间: 2025-01-03 --- 说明: 在sys_config表中添加微信相关配置项 --- ===================================================== - --- 删除已存在的微信配置(避免重复) --- DELETE FROM sys_config WHERE config_key IN ('wechat.app.id', 'wechat.app.secret'); - --- 插入微信AppID配置 -INSERT INTO sys_wechat_config ( - config_name, - config_key, - config_value, - config_type, - remark, - create_by, - create_time, - update_by, - update_time, - tenant_id -) VALUES ( - '微信公众号AppID', - 'wechat.app.id', - 'wx1234567890abcdef', - 'Y', - '微信公众号的AppID,用于JS-SDK初始化配置', - 1, - NOW(), - 1, - NOW(), - '000000' -); - --- 插入微信AppSecret配置 -INSERT INTO sys_wechat_config ( - config_name, - config_key, - config_value, - config_type, - remark, - create_by, - create_time, - update_by, - update_time, - tenant_id -) VALUES ( - '微信公众号AppSecret', - 'wechat.app.secret', - 'your_app_secret_here', - 'Y', - '微信公众号的AppSecret,用于获取access_token和jsapi_ticket', - 1, - NOW(), - 1, - NOW(), - '000000' -); - --- 插入微信JS-SDK域名配置 -INSERT INTO sys_wechat_config ( - config_name, - config_key, - config_value, - config_type, - remark, - create_by, - create_time, - update_by, - update_time, - tenant_id -) VALUES ( - '微信JS-SDK安全域名', - 'wechat.js.domain', - 'example.com', - 'Y', - '微信JS-SDK的安全域名配置,需要在微信公众平台配置', - 1, - NOW(), - 1, - NOW(), - '000000' -); - --- 插入微信商户号配置(支付功能使用) -INSERT INTO sys_wechat_config ( - config_name, - config_key, - config_value, - config_type, - remark, - create_by, - create_time, - update_by, - update_time, - tenant_id -) VALUES ( - '微信商户号', - 'wechat.mch.id', - '1234567890', - 'Y', - '微信支付商户号,用于微信支付功能', - 1, - NOW(), - 1, - NOW(), - '000000' -); - --- 插入微信商户密钥配置(支付功能使用) -INSERT INTO sys_wechat_config ( - config_name, - config_key, - config_value, - config_type, - remark, - create_by, - create_time, - update_by, - update_time, - tenant_id -) VALUES ( - '微信商户密钥', - 'wechat.mch.key', - 'your_mch_key_here', - 'Y', - '微信支付商户密钥,用于支付签名', - 1, - NOW(), - 1, - NOW(), - '000000' -); - --- 插入微信支付回调地址配置 -INSERT INTO sys_wechat_config ( - config_name, - config_key, - config_value, - config_type, - remark, - create_by, - create_time, - update_by, - update_time, - tenant_id -) VALUES ( - '微信支付回调地址', - 'wechat.pay.notify.url', - 'https://example.com/api/wechat/pay/notify', - 'Y', - '微信支付结果通知回调地址', - 1, - NOW(), - 1, - NOW(), - '000000' -); - --- 插入微信调试模式配置 -INSERT INTO sys_wechat_config ( - config_name, - config_key, - config_value, - config_type, - remark, - create_by, - create_time, - update_by, - update_time, - tenant_id -) VALUES ( - '微信JS-SDK调试模式', - 'wechat.debug.enabled', - 'false', - 'Y', - '微信JS-SDK调试模式开关,true开启,false关闭', - 1, - NOW(), - 1, - NOW(), - '000000' -); - --- 验证插入结果 -SELECT config_name, config_key, config_value, remark -FROM sys_wechat_config -WHERE config_key LIKE 'wechat.%' -ORDER BY config_key; - --- ===================================================== --- 配置说明 --- ===================================================== --- --- 1. wechat.app.id: 微信公众号AppID --- - 获取方式:微信公众平台 → 开发 → 基本配置 --- - 示例:wx1234567890abcdef --- --- 2. wechat.app.secret: 微信公众号AppSecret --- - 获取方式:微信公众平台 → 开发 → 基本配置 --- - 注意:AppSecret需要保密,不能暴露在前端 --- --- 3. wechat.js.domain: JS-SDK安全域名 --- - 配置方式:微信公众平台 → 设置 → 公众号设置 → 功能设置 --- - 示例:example.com(不包含http://) --- --- 4. wechat.mch.id: 微信商户号 --- - 获取方式:微信支付商户平台 --- - 用途:微信支付功能 --- --- 5. wechat.mch.key: 微信商户密钥 --- - 获取方式:微信支付商户平台 → 账户中心 → API安全 --- - 用途:微信支付签名 --- --- 6. wechat.pay.notify.url: 支付回调地址 --- - 说明:微信支付结果通知地址 --- - 要求:必须是HTTPS地址 --- --- 7. wechat.debug.enabled: 调试模式 --- - 说明:开发环境建议开启,生产环境关闭 --- - 值:true/false --- --- ===================================================== --- 部署说明 --- ===================================================== --- --- 1. 生产环境部署前,请修改以下配置: --- - wechat.app.id: 替换为真实的微信AppID --- - wechat.app.secret: 替换为真实的微信AppSecret --- - wechat.js.domain: 替换为实际的域名 --- - wechat.mch.id: 替换为真实的商户号(如需支付功能) --- - wechat.mch.key: 替换为真实的商户密钥(如需支付功能) --- - wechat.pay.notify.url: 替换为实际的回调地址 --- --- 2. 微信公众平台配置: --- - 配置JS接口安全域名 --- - 开通所需的接口权限 --- - 配置服务器白名单(如需要) --- --- 3. 安全建议: --- - AppSecret和商户密钥需要定期更新 --- - 生产环境关闭调试模式 --- - 使用HTTPS协议 --- --- ===================================================== diff --git a/backend/sql/勤工俭学字典数据.sql b/backend/sql/勤工俭学字典数据.sql deleted file mode 100644 index c38367b3..00000000 --- a/backend/sql/勤工俭学字典数据.sql +++ /dev/null @@ -1,92 +0,0 @@ --- ===================================================== --- 勤工俭学管理系统字典数据脚本 --- 项目: 校园管理系统 - 勤工俭学模块 --- 版本: v1.0 --- 创建时间: 2025-01-03 --- 说明: 适配现有系统字典表结构 --- ===================================================== - --- 设置字符集 -SET NAMES utf8mb4; - --- ===================================================== --- 1. 插入字典类型数据 --- ===================================================== - --- 1.1 岗位状态字典类型 -INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `create_by`, `create_time`, `remark`) -VALUES (1736000001, '勤工俭学岗位状态', 'work_study_position_status', 1, NOW(), '勤工俭学岗位状态字典'); - --- 1.2 申请状态字典类型 -INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `create_by`, `create_time`, `remark`) -VALUES (1736000002, '勤工俭学申请状态', 'work_study_application_status', 1, NOW(), '勤工俭学申请状态字典'); - --- 1.3 审核状态字典类型 -INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `create_by`, `create_time`, `remark`) -VALUES (1736000003, '勤工俭学审核状态', 'work_study_review_status', 1, NOW(), '勤工俭学审核状态字典'); - --- 1.4 岗位发布范围字典类型 -INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `create_by`, `create_time`, `remark`) -VALUES (1736000004, '勤工俭学岗位发布范围', 'work_study_position_scope', 1, NOW(), '勤工俭学岗位发布范围字典'); - --- ===================================================== --- 2. 检查字典数据表结构 --- ===================================================== - --- 先检查sys_dict_data表结构 --- DESC sys_dict_data; - --- ===================================================== --- 3. 插入字典数据(需要根据实际表结构调整) --- ===================================================== - --- 查看现有字典数据样例来确定正确的字段结构 -SELECT * FROM sys_dict_data LIMIT 1; - --- ===================================================== --- 4. 预留字典数据插入区域 --- ===================================================== - --- 4.1 岗位状态字典数据(待确认表结构后插入) -/* -草稿(DRAFT), 已发布(PUBLISHED), 招录中(RECRUITING), -已满员(FULL), 已过期(EXPIRED), 已暂停(SUSPENDED), 已取消(CANCELLED) -*/ - --- 4.2 申请状态字典数据(待确认表结构后插入) -/* -草稿(DRAFT), 已提交(SUBMITTED), 学院审核中(COLLEGE_REVIEWING), -学院审核通过(COLLEGE_PASSED), 学院审核不通过(COLLEGE_REJECTED), -学生处审核中(FINAL_REVIEWING), 审核通过(APPROVED), -审核不通过(REJECTED), 已撤回(WITHDRAWN) -*/ - --- 4.3 审核状态字典数据(待确认表结构后插入) -/* -待审核(PENDING), 审核通过(PASSED), 审核不通过(REJECTED) -*/ - --- 4.4 岗位发布范围字典数据(待确认表结构后插入) -/* -本学院(COLLEGE), 全校(UNIVERSITY) -*/ - --- ===================================================== --- 5. 查询验证字典类型数据 --- ===================================================== - -SELECT - dict_name as '字典名称', - dict_type as '字典类型', - create_time as '创建时间', - remark as '备注' -FROM sys_dict_type -WHERE dict_type LIKE 'work_study%' -ORDER BY dict_id; - --- ===================================================== --- 6. 脚本执行完成提示 --- ===================================================== -SELECT 'JCBT勤工俭学模块字典类型数据插入完成!' AS '执行结果'; -SELECT - (SELECT COUNT(*) FROM sys_dict_type WHERE dict_type LIKE 'work_study%') AS '字典类型数量'; diff --git a/backend/sql/勤工俭学完整字典数据.sql b/backend/sql/勤工俭学完整字典数据.sql deleted file mode 100644 index 9dfe0bbd..00000000 --- a/backend/sql/勤工俭学完整字典数据.sql +++ /dev/null @@ -1,211 +0,0 @@ --- ===================================================== --- 勤工俭学管理系统完整字典数据脚本 --- 项目: 校园管理系统 - 勤工俭学模块 --- 版本: v1.0 --- 创建时间: 2025-01-03 --- 说明: 基于实际字典表结构的完整字典数据 --- ===================================================== - --- 设置字符集 -SET NAMES utf8mb4; - --- ===================================================== --- 1. 岗位状态字典数据 --- ===================================================== - --- 1.1 草稿 -INSERT INTO `sys_dict_data` -(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`) -VALUES -(1736001001, '000000', 1, '草稿', 'DRAFT', 'work_study_position_status', '', 'info', 'N', 103, 1, NOW(), '岗位创建但未发布'); - --- 1.2 已发布 -INSERT INTO `sys_dict_data` -(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`) -VALUES -(1736001002, '000000', 2, '已发布', 'PUBLISHED', 'work_study_position_status', '', 'primary', 'N', 103, 1, NOW(), '岗位已发布但未开始招录'); - --- 1.3 招录中 -INSERT INTO `sys_dict_data` -(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`) -VALUES -(1736001003, '000000', 3, '招录中', 'RECRUITING', 'work_study_position_status', '', 'success', 'Y', 103, 1, NOW(), '岗位正在招录学生'); - --- 1.4 已满员 -INSERT INTO `sys_dict_data` -(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`) -VALUES -(1736001004, '000000', 4, '已满员', 'FULL', 'work_study_position_status', '', 'warning', 'N', 103, 1, NOW(), '岗位申请人数已满'); - --- 1.5 已过期 -INSERT INTO `sys_dict_data` -(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`) -VALUES -(1736001005, '000000', 5, '已过期', 'EXPIRED', 'work_study_position_status', '', 'danger', 'N', 103, 1, NOW(), '岗位已过有效期'); - --- 1.6 已暂停 -INSERT INTO `sys_dict_data` -(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`) -VALUES -(1736001006, '000000', 6, '已暂停', 'SUSPENDED', 'work_study_position_status', '', 'info', 'N', 103, 1, NOW(), '岗位暂时停止招录'); - --- 1.7 已取消 -INSERT INTO `sys_dict_data` -(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`) -VALUES -(1736001007, '000000', 7, '已取消', 'CANCELLED', 'work_study_position_status', '', 'danger', 'N', 103, 1, NOW(), '岗位被取消'); - --- ===================================================== --- 2. 申请状态字典数据 --- ===================================================== - --- 2.1 草稿 -INSERT INTO `sys_dict_data` -(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`) -VALUES -(1736002001, '000000', 1, '草稿', 'DRAFT', 'work_study_application_status', '', 'info', 'N', 103, 1, NOW(), '申请暂存未提交'); - --- 2.2 已提交 -INSERT INTO `sys_dict_data` -(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`) -VALUES -(1736002002, '000000', 2, '已提交', 'SUBMITTED', 'work_study_application_status', '', 'primary', 'Y', 103, 1, NOW(), '申请已提交,等待学院审核'); - --- 2.3 学院审核中 -INSERT INTO `sys_dict_data` -(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`) -VALUES -(1736002003, '000000', 3, '学院审核中', 'COLLEGE_REVIEWING', 'work_study_application_status', '', 'primary', 'N', 103, 1, NOW(), '二级学院正在审核'); - --- 2.4 学院审核通过 -INSERT INTO `sys_dict_data` -(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`) -VALUES -(1736002004, '000000', 4, '学院审核通过', 'COLLEGE_PASSED', 'work_study_application_status', '', 'success', 'N', 103, 1, NOW(), '学院审核通过,待学生处审核'); - --- 2.5 学院审核不通过 -INSERT INTO `sys_dict_data` -(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`) -VALUES -(1736002005, '000000', 5, '学院审核不通过', 'COLLEGE_REJECTED', 'work_study_application_status', '', 'danger', 'N', 103, 1, NOW(), '学院审核未通过'); - --- 2.6 学生处审核中 -INSERT INTO `sys_dict_data` -(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`) -VALUES -(1736002006, '000000', 6, '学生处审核中', 'FINAL_REVIEWING', 'work_study_application_status', '', 'warning', 'N', 103, 1, NOW(), '学生处正在终审'); - --- 2.7 审核通过 -INSERT INTO `sys_dict_data` -(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`) -VALUES -(1736002007, '000000', 7, '审核通过', 'APPROVED', 'work_study_application_status', '', 'success', 'N', 103, 1, NOW(), '最终审核通过'); - --- 2.8 审核不通过 -INSERT INTO `sys_dict_data` -(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`) -VALUES -(1736002008, '000000', 8, '审核不通过', 'REJECTED', 'work_study_application_status', '', 'danger', 'N', 103, 1, NOW(), '最终审核未通过'); - --- 2.9 已撤回 -INSERT INTO `sys_dict_data` -(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`) -VALUES -(1736002009, '000000', 9, '已撤回', 'WITHDRAWN', 'work_study_application_status', '', 'info', 'N', 103, 1, NOW(), '学生主动撤回申请'); - --- ===================================================== --- 3. 审核状态字典数据 --- ===================================================== - --- 3.1 待审核 -INSERT INTO `sys_dict_data` -(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`) -VALUES -(1736003001, '000000', 1, '待审核', 'PENDING', 'work_study_review_status', '', 'warning', 'Y', 103, 1, NOW(), '等待审核'); - --- 3.2 审核通过 -INSERT INTO `sys_dict_data` -(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`) -VALUES -(1736003002, '000000', 2, '审核通过', 'PASSED', 'work_study_review_status', '', 'success', 'N', 103, 1, NOW(), '审核通过'); - --- 3.3 审核不通过 -INSERT INTO `sys_dict_data` -(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`) -VALUES -(1736003003, '000000', 3, '审核不通过', 'REJECTED', 'work_study_review_status', '', 'danger', 'N', 103, 1, NOW(), '审核不通过'); - --- ===================================================== --- 4. 岗位发布范围字典数据 --- ===================================================== - --- 4.1 本学院 -INSERT INTO `sys_dict_data` -(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`) -VALUES -(1736004001, '000000', 1, '本学院', 'COLLEGE', 'work_study_position_scope', '', 'primary', 'Y', 103, 1, NOW(), '仅本学院学生可见和申请'); - --- 4.2 全校 -INSERT INTO `sys_dict_data` -(`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_dept`, `create_by`, `create_time`, `remark`) -VALUES -(1736004002, '000000', 2, '全校', 'UNIVERSITY', 'work_study_position_scope', '', 'success', 'N', 103, 1, NOW(), '所有学生可见和申请'); - --- ===================================================== --- 5. 查询验证字典数据 --- ===================================================== - --- 5.1 查询岗位状态字典 -SELECT - dict_label as '标签', - dict_value as '值', - dict_type as '字典类型', - list_class as '样式', - remark as '说明' -FROM sys_dict_data -WHERE dict_type = 'work_study_position_status' -ORDER BY dict_sort; - --- 5.2 查询申请状态字典 -SELECT - dict_label as '标签', - dict_value as '值', - dict_type as '字典类型', - list_class as '样式', - remark as '说明' -FROM sys_dict_data -WHERE dict_type = 'work_study_application_status' -ORDER BY dict_sort; - --- 5.3 查询审核状态字典 -SELECT - dict_label as '标签', - dict_value as '值', - dict_type as '字典类型', - list_class as '样式', - remark as '说明' -FROM sys_dict_data -WHERE dict_type = 'work_study_review_status' -ORDER BY dict_sort; - --- 5.4 查询发布范围字典 -SELECT - dict_label as '标签', - dict_value as '值', - dict_type as '字典类型', - list_class as '样式', - remark as '说明' -FROM sys_dict_data -WHERE dict_type = 'work_study_position_scope' -ORDER BY dict_sort; - --- ===================================================== --- 6. 脚本执行完成提示 --- ===================================================== -SELECT 'JCBT勤工俭学模块完整字典数据插入完成!' AS '执行结果'; -SELECT - (SELECT COUNT(*) FROM sys_dict_data WHERE dict_type LIKE 'work_study%') AS '字典数据总数', - (SELECT COUNT(*) FROM sys_dict_data WHERE dict_type = 'work_study_position_status') AS '岗位状态数量', - (SELECT COUNT(*) FROM sys_dict_data WHERE dict_type = 'work_study_application_status') AS '申请状态数量', - (SELECT COUNT(*) FROM sys_dict_data WHERE dict_type = 'work_study_review_status') AS '审核状态数量', - (SELECT COUNT(*) FROM sys_dict_data WHERE dict_type = 'work_study_position_scope') AS '发布范围数量'; diff --git a/backend/sql/勤工俭学数据库建表脚本.sql b/backend/sql/勤工俭学数据库建表脚本.sql deleted file mode 100644 index a3b1bfd4..00000000 --- a/backend/sql/勤工俭学数据库建表脚本.sql +++ /dev/null @@ -1,269 +0,0 @@ --- ===================================================== --- 勤工俭学管理系统数据库建表脚本 --- 项目: 校园管理系统 - 勤工俭学模块 --- 版本: v1.0 --- 创建时间: 2025-01-03 --- 数据库: MySQL 8.0 --- 字符集: utf8mb4 --- ===================================================== - --- 设置字符集 -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; - --- ===================================================== --- 1. 勤工俭学岗位信息表 --- ===================================================== -DROP TABLE IF EXISTS `jcbt_work_study_position`; -CREATE TABLE `jcbt_work_study_position` ( - `id` bigint(20) NOT NULL COMMENT '主键ID(雪花ID)', - `position_name` varchar(100) NOT NULL COMMENT '岗位名称', - `position_scope` varchar(20) NOT NULL COMMENT '发布范围(COLLEGE/UNIVERSITY)', - `required_count` int NOT NULL DEFAULT 1 COMMENT '需求人数', - `work_time` varchar(200) NOT NULL COMMENT '工作时间描述', - `start_date` date NOT NULL COMMENT '岗位有效期开始', - `end_date` date NOT NULL COMMENT '岗位有效期结束', - `position_requirements` text NOT NULL COMMENT '岗位要求', - `salary_info` varchar(200) NOT NULL COMMENT '薪资情况', - `contact_teacher` varchar(50) NOT NULL COMMENT '联系老师', - `contact_phone` varchar(20) NOT NULL COMMENT '联系电话', - `college_id` bigint(20) NOT NULL COMMENT '发布学院ID', - `college_name` varchar(100) NOT NULL COMMENT '发布学院名称', - `status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT '岗位状态', - `current_count` int NOT NULL DEFAULT 0 COMMENT '当前申请通过人数', - `is_active` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否启用', - `create_by` bigint(20) NOT NULL COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_by` bigint(20) NOT NULL COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标记', - `tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户ID', - PRIMARY KEY (`id`), - INDEX `idx_position_college_status` (`college_id`, `status`, `deleted`), - INDEX `idx_position_scope_date` (`position_scope`, `start_date`, `end_date`), - INDEX `idx_position_name` (`position_name`), - INDEX `idx_position_create_time` (`create_time`), - INDEX `idx_position_tenant` (`tenant_id`, `deleted`), - CONSTRAINT `chk_position_date` CHECK (`start_date` <= `end_date`), - CONSTRAINT `chk_position_count` CHECK (`required_count` > 0 AND `current_count` >= 0 AND `current_count` <= `required_count`), - CONSTRAINT `chk_position_scope` CHECK (`position_scope` IN ('COLLEGE', 'UNIVERSITY')) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='勤工俭学岗位信息表'; - --- ===================================================== --- 2. 勤工俭学申请信息表 --- ===================================================== -DROP TABLE IF EXISTS `jcbt_work_study_application`; -CREATE TABLE `jcbt_work_study_application` ( - `id` bigint(20) NOT NULL COMMENT '主键ID(雪花ID)', - `position_id` bigint(20) NOT NULL COMMENT '岗位ID', - `position_name` varchar(100) NOT NULL COMMENT '岗位名称(冗余字段)', - `student_id` bigint(20) NOT NULL COMMENT '学生ID', - `student_name` varchar(50) NOT NULL COMMENT '学生姓名', - `student_number` varchar(20) NOT NULL COMMENT '学号', - `college_id` bigint(20) NOT NULL COMMENT '学生所在学院ID', - `college_name` varchar(100) NOT NULL COMMENT '学生所在学院名称', - `major` varchar(100) NOT NULL COMMENT '专业', - `grade` varchar(10) NOT NULL COMMENT '年级', - `class_name` varchar(50) DEFAULT NULL COMMENT '班级', - `phone` varchar(20) NOT NULL COMMENT '联系电话', - `email` varchar(100) DEFAULT NULL COMMENT '邮箱地址', - `application_reason` text NOT NULL COMMENT '申请理由', - `status` varchar(20) NOT NULL DEFAULT 'DRAFT' COMMENT '申请状态', - `application_date` datetime NOT NULL COMMENT '申请提交时间', - `college_review_status` varchar(20) DEFAULT NULL COMMENT '学院审核状态', - `college_review_time` datetime DEFAULT NULL COMMENT '学院审核时间', - `college_reviewer_id` bigint(20) DEFAULT NULL COMMENT '学院审核人ID', - `college_reviewer_name` varchar(50) DEFAULT NULL COMMENT '学院审核人姓名', - `college_review_comment` text DEFAULT NULL COMMENT '学院审核意见', - `final_review_status` varchar(20) DEFAULT NULL COMMENT '学生处审核状态', - `final_review_time` datetime DEFAULT NULL COMMENT '学生处审核时间', - `final_reviewer_id` bigint(20) DEFAULT NULL COMMENT '学生处审核人ID', - `final_reviewer_name` varchar(50) DEFAULT NULL COMMENT '学生处审核人姓名', - `final_review_comment` text DEFAULT NULL COMMENT '学生处审核意见', - `work_start_date` date DEFAULT NULL COMMENT '工作开始时间', - `work_end_date` date DEFAULT NULL COMMENT '工作结束时间', - `create_by` bigint(20) NOT NULL COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_by` bigint(20) NOT NULL COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标记', - `tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户ID', - PRIMARY KEY (`id`), - INDEX `idx_application_position` (`position_id`, `deleted`), - INDEX `idx_application_student` (`student_id`, `deleted`), - INDEX `idx_application_student_number` (`student_number`), - INDEX `idx_application_college_status` (`college_id`, `status`, `deleted`), - INDEX `idx_application_status_time` (`status`, `application_date`), - INDEX `idx_application_review_status` (`college_review_status`, `final_review_status`), - INDEX `idx_application_tenant` (`tenant_id`, `deleted`), - UNIQUE INDEX `uk_student_position` (`student_id`, `position_id`, `deleted`), - CONSTRAINT `chk_application_work_date` CHECK (`work_start_date` IS NULL OR `work_end_date` IS NULL OR `work_start_date` <= `work_end_date`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='勤工俭学申请信息表'; - --- ===================================================== --- 3. 系统字典数据插入 --- ===================================================== - --- 3.1 岗位状态字典类型 -INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `remark`) -VALUES ('勤工俭学岗位状态', 'work_study_position_status', '0', 1, NOW(), '勤工俭学岗位状态字典'); - --- 3.2 岗位状态字典数据 -INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`) VALUES -(1, '草稿', 'DRAFT', 'work_study_position_status', '', 'info', 'N', '0', 1, NOW(), '岗位创建但未发布'), -(2, '已发布', 'PUBLISHED', 'work_study_position_status', '', 'primary', 'N', '0', 1, NOW(), '岗位已发布但未开始招录'), -(3, '招录中', 'RECRUITING', 'work_study_position_status', '', 'success', 'Y', '0', 1, NOW(), '岗位正在招录学生'), -(4, '已满员', 'FULL', 'work_study_position_status', '', 'warning', 'N', '0', 1, NOW(), '岗位申请人数已满'), -(5, '已过期', 'EXPIRED', 'work_study_position_status', '', 'danger', 'N', '0', 1, NOW(), '岗位已过有效期'), -(6, '已暂停', 'SUSPENDED', 'work_study_position_status', '', 'info', 'N', '0', 1, NOW(), '岗位暂时停止招录'), -(7, '已取消', 'CANCELLED', 'work_study_position_status', '', 'danger', 'N', '0', 1, NOW(), '岗位被取消'); - --- 3.3 申请状态字典类型 -INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `remark`) -VALUES ('勤工俭学申请状态', 'work_study_application_status', '0', 1, NOW(), '勤工俭学申请状态字典'); - --- 3.4 申请状态字典数据 -INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`) VALUES -(1, '草稿', 'DRAFT', 'work_study_application_status', '', 'info', 'N', '0', 1, NOW(), '申请暂存未提交'), -(2, '已提交', 'SUBMITTED', 'work_study_application_status', '', 'primary', 'Y', '0', 1, NOW(), '申请已提交,等待学院审核'), -(3, '学院审核中', 'COLLEGE_REVIEWING', 'work_study_application_status', '', 'primary', 'N', '0', 1, NOW(), '二级学院正在审核'), -(4, '学院审核通过', 'COLLEGE_PASSED', 'work_study_application_status', '', 'success', 'N', '0', 1, NOW(), '学院审核通过,待学生处审核'), -(5, '学院审核不通过', 'COLLEGE_REJECTED', 'work_study_application_status', '', 'danger', 'N', '0', 1, NOW(), '学院审核未通过'), -(6, '学生处审核中', 'FINAL_REVIEWING', 'work_study_application_status', '', 'warning', 'N', '0', 1, NOW(), '学生处正在终审'), -(7, '审核通过', 'APPROVED', 'work_study_application_status', '', 'success', 'N', '0', 1, NOW(), '最终审核通过'), -(8, '审核不通过', 'REJECTED', 'work_study_application_status', '', 'danger', 'N', '0', 1, NOW(), '最终审核未通过'), -(9, '已撤回', 'WITHDRAWN', 'work_study_application_status', '', 'info', 'N', '0', 1, NOW(), '学生主动撤回申请'); - --- 3.5 审核状态字典类型 -INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `remark`) -VALUES ('勤工俭学审核状态', 'work_study_review_status', '0', 1, NOW(), '勤工俭学审核状态字典'); - --- 3.6 审核状态字典数据 -INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`) VALUES -(1, '待审核', 'PENDING', 'work_study_review_status', '', 'warning', 'Y', '0', 1, NOW(), '等待审核'), -(2, '审核通过', 'PASSED', 'work_study_review_status', '', 'success', 'N', '0', 1, NOW(), '审核通过'), -(3, '审核不通过', 'REJECTED', 'work_study_review_status', '', 'danger', 'N', '0', 1, NOW(), '审核不通过'); - --- 3.7 岗位发布范围字典类型 -INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `remark`) -VALUES ('勤工俭学岗位发布范围', 'work_study_position_scope', '0', 1, NOW(), '勤工俭学岗位发布范围字典'); - --- 3.8 岗位发布范围字典数据 -INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`) VALUES -(1, '本学院', 'COLLEGE', 'work_study_position_scope', '', 'primary', 'Y', '0', 1, NOW(), '仅本学院学生可见和申请'), -(2, '全校', 'UNIVERSITY', 'work_study_position_scope', '', 'success', 'N', '0', 1, NOW(), '所有学生可见和申请'); - --- ===================================================== --- 4. 示例测试数据插入(可选) --- ===================================================== - --- 4.1 插入测试岗位数据 -INSERT INTO `jcbt_work_study_position` -(`id`, `position_name`, `position_scope`, `required_count`, `work_time`, `start_date`, `end_date`, - `position_requirements`, `salary_info`, `contact_teacher`, `contact_phone`, - `college_id`, `college_name`, `status`, `create_by`, `update_by`, `tenant_id`) -VALUES -(1736000000000000001, '图书馆助理管理员', 'UNIVERSITY', 5, '周一至周五 14:00-17:00', '2025-01-03', '2025-06-30', - '1. 大二及以上年级\n2. 学习成绩良好\n3. 责任心强,工作认真\n4. 熟悉图书分类和管理', - '每小时15元,按实际工作时间计算', '张老师', '13800138001', - 1001, '文学院', 'RECRUITING', 1, 1, '000000'), - -(1736000000000000002, '实验室设备维护', 'COLLEGE', 2, '周三、周五 16:00-18:00', '2025-01-03', '2025-05-31', - '1. 理工科专业学生\n2. 有基础的设备维护经验\n3. 动手能力强\n4. 能吃苦耐劳', - '每小时18元,有技术补贴', '李老师', '13800138002', - 1002, '理学院', 'RECRUITING', 1, 1, '000000'), - -(1736000000000000003, '学生宿舍管理助理', 'UNIVERSITY', 8, '周一至周日轮班,每次4小时', '2025-01-03', '2025-07-31', - '1. 品行端正,无违纪记录\n2. 沟通能力强\n3. 能适应轮班工作\n4. 有服务意识', - '每小时12元,夜班有补贴', '王老师', '13800138003', - 1003, '学生处', 'RECRUITING', 1, 1, '000000'); - --- 4.2 插入测试申请数据 -INSERT INTO `jcbt_work_study_application` -(`id`, `position_id`, `position_name`, `student_id`, `student_name`, `student_number`, - `college_id`, `college_name`, `major`, `grade`, `class_name`, `phone`, `email`, - `application_reason`, `status`, `application_date`, `create_by`, `update_by`, `tenant_id`) -VALUES -(1736000000000000101, 1736000000000000001, '图书馆助理管理员', 2001001, '张三', '2023001001', - 1001, '文学院', '汉语言文学', '2023', '汉语言文学1班', '13900139001', 'zhangsan@example.com', - '我热爱读书,熟悉图书分类,希望能在图书馆工作,为同学们提供更好的服务。同时也能减轻家庭经济负担。', - 'SUBMITTED', '2025-01-03 09:00:00', 2001001, 2001001, '000000'), - -(1736000000000000102, 1736000000000000002, '实验室设备维护', 2002001, '李四', '2023002001', - 1002, '理学院', '物理学', '2023', '物理学1班', '13900139002', 'lisi@example.com', - '我是物理专业学生,对实验设备比较了解,有维修电子设备的经验,希望能申请这个岗位。', - 'SUBMITTED', '2025-01-03 10:00:00', 2002001, 2002001, '000000'), - -(1736000000000000103, 1736000000000000003, '学生宿舍管理助理', 2003001, '王五', '2023003001', - 1004, '管理学院', '工商管理', '2023', '工商管理1班', '13900139003', 'wangwu@example.com', - '我性格开朗,善于与人沟通,希望能为同学们的宿舍生活提供帮助,同时锻炼自己的管理能力。', - 'SUBMITTED', '2025-01-03 11:00:00', 2003001, 2003001, '000000'); - --- ===================================================== --- 5. 权限菜单数据插入 --- ===================================================== - --- 5.1 勤工俭学主菜单 -INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `remark`) -VALUES ('勤工俭学', 2000, 6, 'workstudy', NULL, NULL, 1, 0, 'M', '0', '0', NULL, 'work', 1, NOW(), '勤工俭学管理菜单'); - --- 获取刚插入的菜单ID (假设为最新的菜单ID) -SET @workstudy_menu_id = LAST_INSERT_ID(); - --- 5.2 岗位管理菜单 -INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `remark`) -VALUES ('岗位管理', @workstudy_menu_id, 1, 'position', 'jcbt/workstudy/position/index', NULL, 1, 0, 'C', '0', '0', 'jcbt:workstudy:position:list', 'job', 1, NOW(), '勤工俭学岗位管理'); - -SET @position_menu_id = LAST_INSERT_ID(); - --- 5.3 岗位管理权限按钮 -INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `remark`) VALUES -('岗位查询', @position_menu_id, 1, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:position:query', '#', 1, NOW(), ''), -('岗位新增', @position_menu_id, 2, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:position:add', '#', 1, NOW(), ''), -('岗位修改', @position_menu_id, 3, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:position:edit', '#', 1, NOW(), ''), -('岗位删除', @position_menu_id, 4, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:position:remove', '#', 1, NOW(), ''), -('岗位导出', @position_menu_id, 5, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:position:export', '#', 1, NOW(), ''); - --- 5.4 申请管理菜单 -INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `remark`) -VALUES ('申请管理', @workstudy_menu_id, 2, 'application', 'jcbt/workstudy/application/index', NULL, 1, 0, 'C', '0', '0', 'jcbt:workstudy:application:list', 'form', 1, NOW(), '勤工俭学申请管理'); - -SET @application_menu_id = LAST_INSERT_ID(); - --- 5.5 申请管理权限按钮 -INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `remark`) VALUES -('申请查询', @application_menu_id, 1, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:application:query', '#', 1, NOW(), ''), -('申请新增', @application_menu_id, 2, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:application:add', '#', 1, NOW(), ''), -('申请修改', @application_menu_id, 3, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:application:edit', '#', 1, NOW(), ''), -('申请删除', @application_menu_id, 4, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:application:remove', '#', 1, NOW(), ''), -('申请导出', @application_menu_id, 5, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:application:export', '#', 1, NOW(), ''), -('申请审核', @application_menu_id, 6, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:application:review', '#', 1, NOW(), ''); - --- 5.6 审核管理菜单 -INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `remark`) -VALUES ('审核管理', @workstudy_menu_id, 3, 'review', 'jcbt/workstudy/review/index', NULL, 1, 0, 'C', '0', '0', 'jcbt:workstudy:review:list', 'eye', 1, NOW(), '勤工俭学审核管理'); - -SET @review_menu_id = LAST_INSERT_ID(); - --- 5.7 审核管理权限按钮 -INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `remark`) VALUES -('审核查询', @review_menu_id, 1, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:review:query', '#', 1, NOW(), ''), -('学院审核', @review_menu_id, 2, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:review:college', '#', 1, NOW(), ''), -('终审', @review_menu_id, 3, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:review:final', '#', 1, NOW(), ''), -('审核记录', @review_menu_id, 4, '', '', NULL, 1, 0, 'F', '0', '0', 'jcbt:workstudy:review:record', '#', 1, NOW(), ''); - --- ===================================================== --- 6. 恢复外键检查 --- ===================================================== -SET FOREIGN_KEY_CHECKS = 1; - --- ===================================================== --- 7. 脚本执行完成提示 --- ===================================================== -SELECT 'JCBT勤工俭学模块数据库建表脚本执行完成!' AS '执行结果'; -SELECT '包含内容:' AS '脚本内容', - '1. 岗位信息表' AS '表1', - '2. 申请信息表' AS '表2', - '3. 系统字典数据' AS '数据1', - '4. 测试示例数据' AS '数据2', - '5. 权限菜单数据' AS '数据3'; diff --git a/backend/sql/勤工俭学测试数据.sql b/backend/sql/勤工俭学测试数据.sql deleted file mode 100644 index 3ae38fce..00000000 --- a/backend/sql/勤工俭学测试数据.sql +++ /dev/null @@ -1,193 +0,0 @@ --- ===================================================== --- 勤工俭学管理系统测试数据脚本 --- 项目: 校园管理系统 - 勤工俭学模块 --- 版本: v1.0 --- 创建时间: 2025-01-03 --- ===================================================== - --- 设置字符集 -SET NAMES utf8mb4; - --- ===================================================== --- 1. 插入测试岗位数据 --- ===================================================== - --- 1.1 图书馆助理管理员岗位 -INSERT INTO `jcbt_work_study_position` -(`id`, `position_name`, `position_scope`, `required_count`, `work_time`, `start_date`, `end_date`, - `position_requirements`, `salary_info`, `contact_teacher`, `contact_phone`, - `college_id`, `college_name`, `status`, `create_by`, `update_by`, `tenant_id`) -VALUES -(1736000000000000001, '图书馆助理管理员', 'UNIVERSITY', 5, '周一至周五 14:00-17:00', '2025-01-03', '2025-06-30', - '1. 大二及以上年级\n2. 学习成绩良好\n3. 责任心强,工作认真\n4. 熟悉图书分类和管理', - '每小时15元,按实际工作时间计算', '张老师', '13800138001', - 1001, '文学院', 'RECRUITING', 1, 1, '000000'); - --- 1.2 实验室设备维护岗位 -INSERT INTO `jcbt_work_study_position` -(`id`, `position_name`, `position_scope`, `required_count`, `work_time`, `start_date`, `end_date`, - `position_requirements`, `salary_info`, `contact_teacher`, `contact_phone`, - `college_id`, `college_name`, `status`, `create_by`, `update_by`, `tenant_id`) -VALUES -(1736000000000000002, '实验室设备维护', 'COLLEGE', 2, '周三、周五 16:00-18:00', '2025-01-03', '2025-05-31', - '1. 理工科专业学生\n2. 有基础的设备维护经验\n3. 动手能力强\n4. 能吃苦耐劳', - '每小时18元,有技术补贴', '李老师', '13800138002', - 1002, '理学院', 'RECRUITING', 1, 1, '000000'); - --- 1.3 学生宿舍管理助理岗位 -INSERT INTO `jcbt_work_study_position` -(`id`, `position_name`, `position_scope`, `required_count`, `work_time`, `start_date`, `end_date`, - `position_requirements`, `salary_info`, `contact_teacher`, `contact_phone`, - `college_id`, `college_name`, `status`, `create_by`, `update_by`, `tenant_id`) -VALUES -(1736000000000000003, '学生宿舍管理助理', 'UNIVERSITY', 8, '周一至周日轮班,每次4小时', '2025-01-03', '2025-07-31', - '1. 品行端正,无违纪记录\n2. 沟通能力强\n3. 能适应轮班工作\n4. 有服务意识', - '每小时12元,夜班有补贴', '王老师', '13800138003', - 1003, '学生处', 'RECRUITING', 1, 1, '000000'); - --- 1.4 教学助理岗位 -INSERT INTO `jcbt_work_study_position` -(`id`, `position_name`, `position_scope`, `required_count`, `work_time`, `start_date`, `end_date`, - `position_requirements`, `salary_info`, `contact_teacher`, `contact_phone`, - `college_id`, `college_name`, `status`, `create_by`, `update_by`, `tenant_id`) -VALUES -(1736000000000000004, '教学助理', 'COLLEGE', 3, '周二、周四 10:00-12:00', '2025-01-03', '2025-06-15', - '1. 本专业学生\n2. 学习成绩优秀\n3. 表达能力强\n4. 有耐心和责任心', - '每小时20元,期末有奖励', '赵老师', '13800138004', - 1001, '文学院', 'RECRUITING', 1, 1, '000000'); - --- 1.5 校园网络维护岗位 -INSERT INTO `jcbt_work_study_position` -(`id`, `position_name`, `position_scope`, `required_count`, `work_time`, `start_date`, `end_date`, - `position_requirements`, `salary_info`, `contact_teacher`, `contact_phone`, - `college_id`, `college_name`, `status`, `create_by`, `update_by`, `tenant_id`) -VALUES -(1736000000000000005, '校园网络维护', 'UNIVERSITY', 4, '周一至周五随时待命', '2025-01-03', '2025-12-31', - '1. 计算机相关专业\n2. 熟悉网络技术\n3. 能够解决常见网络问题\n4. 工作时间灵活', - '每小时25元,紧急出勤有额外补贴', '孙老师', '13800138005', - 1004, '信息学院', 'RECRUITING', 1, 1, '000000'); - --- ===================================================== --- 2. 插入测试申请数据 --- ===================================================== - --- 2.1 张三申请图书馆助理管理员 -INSERT INTO `jcbt_work_study_application` -(`id`, `position_id`, `position_name`, `student_id`, `student_name`, `student_number`, - `college_id`, `college_name`, `major`, `grade`, `class_name`, `phone`, `email`, - `application_reason`, `status`, `application_date`, `create_by`, `update_by`, `tenant_id`) -VALUES -(1736000000000000101, 1736000000000000001, '图书馆助理管理员', 2001001, '张三', '2023001001', - 1001, '文学院', '汉语言文学', '2023', '汉语言文学1班', '13900139001', 'zhangsan@example.com', - '我热爱读书,熟悉图书分类,希望能在图书馆工作,为同学们提供更好的服务。同时也能减轻家庭经济负担。', - 'SUBMITTED', '2025-01-03 09:00:00', 2001001, 2001001, '000000'); - --- 2.2 李四申请实验室设备维护 -INSERT INTO `jcbt_work_study_application` -(`id`, `position_id`, `position_name`, `student_id`, `student_name`, `student_number`, - `college_id`, `college_name`, `major`, `grade`, `class_name`, `phone`, `email`, - `application_reason`, `status`, `application_date`, `create_by`, `update_by`, `tenant_id`) -VALUES -(1736000000000000102, 1736000000000000002, '实验室设备维护', 2002001, '李四', '2023002001', - 1002, '理学院', '物理学', '2023', '物理学1班', '13900139002', 'lisi@example.com', - '我是物理专业学生,对实验设备比较了解,有维修电子设备的经验,希望能申请这个岗位。', - 'SUBMITTED', '2025-01-03 10:00:00', 2002001, 2002001, '000000'); - --- 2.3 王五申请学生宿舍管理助理 -INSERT INTO `jcbt_work_study_application` -(`id`, `position_id`, `position_name`, `student_id`, `student_name`, `student_number`, - `college_id`, `college_name`, `major`, `grade`, `class_name`, `phone`, `email`, - `application_reason`, `status`, `application_date`, `create_by`, `update_by`, `tenant_id`) -VALUES -(1736000000000000103, 1736000000000000003, '学生宿舍管理助理', 2003001, '王五', '2023003001', - 1004, '管理学院', '工商管理', '2023', '工商管理1班', '13900139003', 'wangwu@example.com', - '我性格开朗,善于与人沟通,希望能为同学们的宿舍生活提供帮助,同时锻炼自己的管理能力。', - 'SUBMITTED', '2025-01-03 11:00:00', 2003001, 2003001, '000000'); - --- 2.4 赵六申请教学助理 -INSERT INTO `jcbt_work_study_application` -(`id`, `position_id`, `position_name`, `student_id`, `student_name`, `student_number`, - `college_id`, `college_name`, `major`, `grade`, `class_name`, `phone`, `email`, - `application_reason`, `status`, `application_date`, `create_by`, `update_by`, `tenant_id`) -VALUES -(1736000000000000104, 1736000000000000004, '教学助理', 2001002, '赵六', '2023001002', - 1001, '文学院', '汉语言文学', '2023', '汉语言文学2班', '13900139004', 'zhaoliu@example.com', - '我的学习成绩优秀,有良好的表达能力,希望能帮助老师进行教学工作,同时提升自己的能力。', - 'COLLEGE_REVIEWING', '2025-01-03 12:00:00', 2001002, 2001002, '000000'); - --- 2.5 孙七申请校园网络维护 -INSERT INTO `jcbt_work_study_application` -(`id`, `position_id`, `position_name`, `student_id`, `student_name`, `student_number`, - `college_id`, `college_name`, `major`, `grade`, `class_name`, `phone`, `email`, - `application_reason`, `status`, `application_date`, `college_review_status`, `college_review_time`, - `college_reviewer_id`, `college_reviewer_name`, `college_review_comment`, - `create_by`, `update_by`, `tenant_id`) -VALUES -(1736000000000000105, 1736000000000000005, '校园网络维护', 2004001, '孙七', '2023004001', - 1004, '信息学院', '计算机科学与技术', '2023', '计算机1班', '13900139005', 'sunqi@example.com', - '我是计算机专业学生,熟悉网络技术,有实际网络维护经验,能够解决各种网络问题。', - 'COLLEGE_PASSED', '2025-01-03 13:00:00', 'PASSED', '2025-01-03 15:00:00', - 3001, '信息学院审核老师', '该学生专业技能扎实,推荐通过。', - 2004001, 2004001, '000000'); - --- 2.6 周八申请图书馆助理管理员(已审核通过) -INSERT INTO `jcbt_work_study_application` -(`id`, `position_id`, `position_name`, `student_id`, `student_name`, `student_number`, - `college_id`, `college_name`, `major`, `grade`, `class_name`, `phone`, `email`, - `application_reason`, `status`, `application_date`, - `college_review_status`, `college_review_time`, `college_reviewer_id`, `college_reviewer_name`, `college_review_comment`, - `final_review_status`, `final_review_time`, `final_reviewer_id`, `final_reviewer_name`, `final_review_comment`, - `work_start_date`, `work_end_date`, - `create_by`, `update_by`, `tenant_id`) -VALUES -(1736000000000000106, 1736000000000000001, '图书馆助理管理员', 2002002, '周八', '2023002002', - 1002, '理学院', '数学与应用数学', '2023', '数学1班', '13900139006', 'zhouba@example.com', - '我有良好的组织能力和服务意识,希望能在图书馆为同学们提供优质服务。', - 'APPROVED', '2025-01-02 14:00:00', - 'PASSED', '2025-01-02 16:00:00', 3002, '理学院审核老师', '学生表现优秀,同意申请。', - 'PASSED', '2025-01-02 18:00:00', 4001, '学生处终审老师', '经终审,同意该学生申请。', - '2025-01-05', '2025-06-30', - 2002002, 2002002, '000000'); - --- ===================================================== --- 3. 更新岗位当前申请通过人数 --- ===================================================== - --- 更新图书馆助理管理员岗位的当前人数 -UPDATE `jcbt_work_study_position` -SET `current_count` = 1, `update_time` = NOW() -WHERE `id` = 1736000000000000001; - --- ===================================================== --- 4. 查询验证数据 --- ===================================================== - --- 4.1 查询岗位数据 -SELECT - position_name as '岗位名称', - position_scope as '发布范围', - required_count as '需求人数', - current_count as '当前人数', - status as '状态', - college_name as '发布学院' -FROM jcbt_work_study_position -WHERE deleted = 0; - --- 4.2 查询申请数据 -SELECT - student_name as '学生姓名', - position_name as '申请岗位', - status as '申请状态', - college_name as '学生学院', - application_date as '申请时间' -FROM jcbt_work_study_application -WHERE deleted = 0 -ORDER BY application_date; - --- ===================================================== --- 5. 脚本执行完成提示 --- ===================================================== -SELECT 'JCBT勤工俭学模块测试数据插入完成!' AS '执行结果'; -SELECT - (SELECT COUNT(*) FROM jcbt_work_study_position WHERE deleted = 0) AS '岗位数量', - (SELECT COUNT(*) FROM jcbt_work_study_application WHERE deleted = 0) AS '申请数量'; diff --git a/docs/add_create_dept.sql b/docs/add_create_dept.sql deleted file mode 100644 index 71ddce64..00000000 --- a/docs/add_create_dept.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE jcbt_scholarship_type ADD COLUMN create_dept BIGINT(20) COMMENT '创建部门' AFTER is_system; diff --git a/docs/debug_compatibility_type.sql b/docs/debug_compatibility_type.sql deleted file mode 100644 index 86b790d5..00000000 --- a/docs/debug_compatibility_type.sql +++ /dev/null @@ -1,30 +0,0 @@ --- 调试compatibility_type字段问题 --- 检查表结构 -DESCRIBE jcbt_scholarship_type; - --- 检查字段是否存在 -SHOW COLUMNS FROM jcbt_scholarship_type LIKE 'compatibility_type'; - --- 查看具体数据 -SELECT id, type_name, compatibility_type, - CASE - WHEN compatibility_type IS NULL THEN 'NULL值' - WHEN compatibility_type = '' THEN '空字符串' - ELSE CONCAT('有值:', compatibility_type) - END as value_status -FROM jcbt_scholarship_type -WHERE deleted = 0 -LIMIT 10; - --- 统计各种值的分布 -SELECT - compatibility_type, - COUNT(*) as count, - CASE - WHEN compatibility_type IS NULL THEN 'NULL值' - WHEN compatibility_type = '' THEN '空字符串' - ELSE '有效值' - END as value_type -FROM jcbt_scholarship_type -WHERE deleted = 0 -GROUP BY compatibility_type; diff --git a/docs/fix_compatibility_create_dept.sql b/docs/fix_compatibility_create_dept.sql deleted file mode 100644 index b025492b..00000000 --- a/docs/fix_compatibility_create_dept.sql +++ /dev/null @@ -1,36 +0,0 @@ --- ===================================================== --- 奖学金兼得关系表 - create_dept字段修复脚本 --- 版本: v1.0 --- 创建时间: 2025-01-27 --- 问题描述: 实体类继承BaseEntity包含create_dept字段,但数据库表缺少该字段 --- 解决方案: 为jcbt_scholarship_compatibility表添加create_dept字段 --- ===================================================== - -USE `ruoyi-vue-pro`; - --- 为奖学金兼得关系表添加create_dept字段 -ALTER TABLE `jcbt_scholarship_compatibility` -ADD COLUMN IF NOT EXISTS `create_dept` BIGINT(20) COMMENT '创建部门' -AFTER `description`; - --- 验证字段添加结果 -SELECT - COLUMN_NAME, - DATA_TYPE, - IS_NULLABLE, - COLUMN_DEFAULT, - COLUMN_COMMENT -FROM INFORMATION_SCHEMA.COLUMNS -WHERE TABLE_SCHEMA = 'ruoyi-vue-pro' - AND TABLE_NAME = 'jcbt_scholarship_compatibility' - AND COLUMN_NAME = 'create_dept'; - --- 显示表结构确认修复结果 -DESCRIBE `jcbt_scholarship_compatibility`; - --- ===================================================== --- 修复说明: --- 1. 该字段是BaseEntity的标准字段,用于记录创建部门 --- 2. 字段类型为BIGINT(20),允许NULL,与其他表保持一致 --- 3. 字段位置放在description字段之后,符合标准字段顺序 --- ===================================================== diff --git a/docs/quota_diagnosis_results.txt b/docs/quota_diagnosis_results.txt deleted file mode 100644 index 608d9f21..00000000 --- a/docs/quota_diagnosis_results.txt +++ /dev/null @@ -1,37 +0,0 @@ -mysql: [Warning] Using a password on the command line interface can be insecure. -info -=== 1. 班主任和班级信息检查 === -info -=== 2. 奖学金批次信息检查 === -batch_id batch_name batch_status start_time end_time create_time -1952730449122004993 2025-2026??????????????? ACTIVE 2025-08-05 00:00:00 2025-08-29 00:00:00 2025-08-05 21:56:34 -1 2024-2025??????????? ACTIVE 2024-09-01 00:00:00 2024-12-31 23:59:59 2025-08-05 09:04:39 -info -=== 3. 奖学金类型信息检查 === -type_id type_name level_type type_status batch_id batch_name -1 ??????? FIRST 1 1953330495479644161 2025-2026????????????? -1 ??????? FIRST 1 1952730449122004993 2025-2026??????????????? -5 ????????? FIRST 1 1952730449122004993 2025-2026??????????????? -1953004971846852609 ??????? FIRST 1 1952730449122004993 2025-2026??????????????? -6 ????????? FIRST 1 NULL NULL -2 ??????? SECOND 1 1953330495479644161 2025-2026????????????? -2 ??????? SECOND 1 1952730449122004993 2025-2026??????????????? -1953005237862195202 ??????? SECOND 1 1952730449122004993 2025-2026??????????????? -7 ????????? SECOND 1 NULL NULL -1953004602014097409 ??????? SPECIAL 1 1952730449122004993 2025-2026??????????????? -4 ????????? SPECIAL 1 1952730449122004993 2025-2026??????????????? -8 ??????? SPECIAL 1 NULL NULL -1952634577994387457 ????? SPECIAL 1 1952730449122004993 2025-2026??????????????? -1953004324552499202 ?????? SPECIAL 1 1952730449122004993 2025-2026??????????????? -3 ??????? THIRD 1 1952730449122004993 2025-2026??????????????? -1953005415696490497 ??????? THIRD 1 1952730449122004993 2025-2026??????????????? -info -=== 4. 班级名额分配情况检查 === -quota_id batch_id batch_name scholarship_type_id type_name class_id class_name total_quota used_quota available_quota allocation_method status create_time -2001 1 2024-2025??????????? 1 ??????? 1001 NULL 2 0 2 MANUAL ACTIVE 2025-08-06 11:00:49 -2003 1 2024-2025??????????? 2 ??????? 1001 NULL 3 0 2 MANUAL ACTIVE 2025-08-06 11:00:49 -2002 1 2024-2025??????????? 1 ??????? 1002 NULL 1 0 1 MANUAL ACTIVE 2025-08-06 11:00:49 -2004 1 2024-2025??????????? 2 ??????? 1002 NULL 2 0 2 MANUAL ACTIVE 2025-08-06 11:00:49 -info -=== 5. 已使用名额情况检查 === -ERROR 1054 (42S22) at line 87: Unknown column 'sa.applicant_class_id' in 'field list' diff --git a/docs/变更管理/code-adjust-record-2025-01-27-assistant.md b/docs/变更管理/code-adjust-record-2025-01-27-assistant.md deleted file mode 100644 index c0a19daf..00000000 --- a/docs/变更管理/code-adjust-record-2025-01-27-assistant.md +++ /dev/null @@ -1,326 +0,0 @@ -# 学生信息管理界面API接口调整记录 - -**调整日期**: 2025-01-27 -**调整人员**: assistant -**相关模块**: 学工管理-学生信息管理 -**调整类型**: 接口优化 - -## 📋 调整概述 - -完善学生信息管理界面(`web/src/views/studentMsg/studentMsg/index.vue`),将table数据请求方式从旧的API模块调用改为直接使用 `service` 调用后端 `XgStudentMsgController.java` 的 `listByDeptId` 接口。 - -## 🔧 主要调整内容 - -### 1. 列表查询接口调整 -- **修改函数**: `getList()` -- **原实现**: 使用 `api.listStudent(queryParams)` -- **新实现**: 直接使用 `service.post('/studentMsg/studentMsg/listByDeptId', requestBody, {params: pageQuery})` -- **调整原因**: 按用户要求,通过 `import service from '@/utils/request'` 直接请求接口 - -### 2. 删除功能接口调整 -- **修改函数**: `handleDelete()` -- **原实现**: 使用 `api.delStudent(studentIds)` -- **新实现**: 直接使用 `service.delete(\`/studentMsg/studentMsg/\${studentIds}\`)` -- **增强**: 添加了完善的错误处理和用户提示 - -### 3. 新增/修改功能接口调整 -- **修改函数**: `submitForm()` -- **原实现**: 使用 `addStudentMsg(form)` 和 `updateStudentMsg(form)` -- **新实现**: - - 新增: `service.post('/studentMsg/studentMsg', form)` - - 修改: `service.put('/studentMsg/studentMsg', form)` -- **增强**: 添加了完善的错误处理和用户提示 - -### 4. 获取学生详情接口调整 -- **修改函数**: `handleUpdate()` -- **原实现**: 使用 `api.getStudent(studentId)` -- **新实现**: 直接使用 `service.get(\`/studentMsg/studentMsg/\${studentId}\`)` -- **调整**: 暂时注释了专业和班级选项的处理,因为这些字段在表单中是disabled状态 - -### 5. 查询参数优化 -- **修改函数**: `resetQuery()` -- **增强**: 明确清空所有查询条件,确保重置操作的完整性 -- **优化**: 改进了请求体构造逻辑,处理空值情况 - -### 6. 代码清理 -- **清理内容**: 移除了不再使用的API函数导入 -- **移除**: `addStudentMsg`, `updateStudentMsg`, `delStudentMsg`, `getStudentMsg`, `listStudentMsg` -- **保留**: 必要的类型定义导入 - -## 🎯 调用触发点确认 - -确保以下场景都能正确触发新的接口调用: - -✅ **界面打开时**: `onMounted()` → `getList()` -✅ **点击部门树节点**: `handleNodeClick()` → `handleQuery()` → `getList()` -✅ **搜索操作**: `handleQuery()` → `getList()` -✅ **重置操作**: `resetQuery()` → `handleQuery()` → `getList()` -✅ **新增学生后**: `submitForm()` → `getList()` -✅ **修改学生后**: `submitForm()` → `getList()` -✅ **删除学生后**: `handleDelete()` → `getList()` - -## 📊 请求参数映射 - -### listByDeptId 接口参数 -```javascript -// 请求体 -{ - name: queryParams.name || '', - studentNo: queryParams.studentNo || '', - phone: queryParams.phone || '', - studentStatus: queryParams.studentStatus || '', - dept_id: queryParams.deptId || null, - beginTime: dateRange.value[0], // 可选 - endTime: dateRange.value[1] // 可选 -} - -// 分页参数 -{ - pageNum: queryParams.pageNum, - pageSize: queryParams.pageSize -} -``` - -## 🚨 注意事项 - -1. **专业班级选项**: 在修改学生信息时,专业和班级选项的获取逻辑暂时被注释,因为在当前表单中这些字段是disabled状态 -2. **错误处理**: 所有接口调用都添加了完善的错误处理和用户提示 -3. **数据格式**: 后端返回的数据格式可能与之前的API有所不同,已进行相应适配 -4. **权限验证**: 所有接口都需要相应的权限验证,确保用户有访问权限 - -## 📝 测试建议 - -1. **基础功能测试**: 测试列表查询、新增、修改、删除功能 -2. **部门筛选测试**: 测试点击不同部门节点的学生列表筛选 -3. **搜索功能测试**: 测试各种搜索条件组合 -4. **权限测试**: 确保用户权限控制正常 -5. **错误场景测试**: 测试网络异常、权限不足等错误场景的处理 - -## 🔄 后续优化建议 - -1. 如果需要在修改学生信息时支持专业和班级的动态选择,需要添加相应的接口调用 -2. 可以考虑添加接口调用的loading状态,提升用户体验 -3. 可以考虑添加接口调用的重试机制,提高系统健壮性 - ---- - -# 代码调整记录 - 2025-01-27 - assistant - -## 📝 概述 -本文档记录了2025年1月27日的代码调整内容,包括修复的问题、改进的功能和相关的技术实现。 - ---- - -## 🔧 修复记录 - -### 1. 修复学生信息按部门查询SQL语法错误 (2025-01-27 19:55:00) - -**问题描述:** -- 学生信息管理页面按部门ID查询时出现SQL语法错误 -- 错误信息:`ParseException: Encountered unexpected token: "AND" "AND"` -- 生成的SQL出现重复的ORDER BY子句,导致SQL结构错误 - -**错误SQL结构:** -```sql -WHERE (deleted = ?) ORDER BY create_time DESC - - AND class_id IN (...) -ORDER BY create_time DESC -``` - -**根本原因:** -- 在`XgStudentMsgServiceImpl.buildQueryWrapperForDeptQuery()`方法中使用了`lqw.orderByDesc(XgStudentMsg::getCreateTime)` -- 同时在`XgStudentMsgMapper.xml`的SQL模板中也有固定的`ORDER BY create_time DESC` -- MyBatis-Plus的`${ew.sqlSegment}`包含了排序条件,与XML中的排序冲突 - -**修复内容:** -1. **文件**:`backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgStudentMsgServiceImpl.java` -2. **修改**:移除`buildQueryWrapperForDeptQuery`方法中的`lqw.orderByDesc(XgStudentMsg::getCreateTime)`调用 -3. **代码变更**: - ```java - // 修改前 - // 排序:按创建时间倒序 - lqw.orderByDesc(XgStudentMsg::getCreateTime); - - // 修改后 - // 注意:排序在XML中处理,这里不添加排序条件,避免SQL语法错误 - ``` - -**影响范围:** -- 学生信息管理页面的部门查询功能 -- 接口:`POST /studentMsg/studentMsg/listByDeptId` - -**测试验证:** -- ✅ 部门查询功能正常工作 -- ✅ SQL语法错误已解决 -- ✅ 数据按创建时间倒序显示 - -**技术说明:** -- MyBatis-Plus的LambdaQueryWrapper在使用`${ew.sqlSegment}`时会生成完整的WHERE条件和ORDER BY子句 -- 避免在Service层和XML映射文件中重复定义排序条件 -- 优先在XML中定义固定的排序逻辑,保持SQL模板的清晰性 - ---- - -## 📊 影响统计 -- 修复文件数量:1个 -- 涉及模块:学工管理-学生信息管理 -- 预估影响用户:所有使用学生信息查询功能的用户 - ---- - -## 📋 待优化项 -1. 考虑统一排序逻辑的处理方式 -2. 完善SQL错误处理机制 -3. 增加更多的单元测试覆盖 - ---- - -**记录时间**:2025-01-27 19:55:00 -**处理人员**:assistant -**审核状态**:待测试验证 - ---- - -# 代码调整记录 - 2025-01-27 - -## 修复奖学金申请列表显示空白问题 - -**时间**: 2025-01-27 20:30:00 -**模块**: 奖惩补贴管理 -> 奖学金管理 -> 奖学金申请管理 -**问题**: 前端列表显示"暂无数据",但后台有数据且网络请求正常 - -### 问题分析 - -1. **响应数据结构处理错误** - - 实际返回:`{total: 2, rows: [...], code: 200, msg: "查询成功"}` - - 前端处理:`res.data.rows`(错误) - - 应该处理:`res.rows`(正确) - -2. **字段映射验证** - - 后端VO字段:`studentCode`, `studentName`, `className`, `scholarshipTypeName`, `status` - - 前端表格字段:完全匹配 ✅ - -### 修复内容 - -**文件**: `web/src/views/jcbt/scholarship/application/index.vue` - -**修改前**: -```typescript -if (res.data) { - applicationList.value = res.data.rows || res.data.list || res.data || []; - total.value = res.data.total || 0; -} -``` - -**修改后**: -```typescript -applicationList.value = res.rows || []; -total.value = res.total || 0; -``` - -### 根本原因 - -前端错误地假设响应数据包装在 `res.data` 中,但实际上 `TableDataInfo` 的数据直接在 `res` 层级。 - -### 验证方法 - -1. 刷新奖学金申请管理页面 -2. 确认列表能正常显示数据 -3. 检查分页功能正常工作 - -### 相关文档 - -- 无需更新API文档(接口未变) -- 问题类型:前端数据处理错误 - ---- - -## 修复班级名称和状态翻译显示问题 - -**时间**: 2025-01-27 21:00:00 -**模块**: 奖惩补贴管理 -> 奖学金管理 -> 奖学金申请管理 -**问题**: 班级和奖学金类型没有显示,申请类型和申请状态展示英文而非中文 - -### 问题分析 - -1. **班级名称缺失** - - SQL查询缺少班级表关联 - - resultMap缺少className字段映射 - -2. **状态翻译错误** - - 后端返回:`DRAFT`, `SUBMITTED`, `APPROVED`, `REJECTED` 等 - - 前端判断:`draft`, `waiting`, `complete`, `rejected` 等 - - 大小写不匹配导致翻译失败 - -3. **申请类型映射不正确** - - 后端返回:`RECOMMEND`, `AUTO`, `DIRECT` - - 前端判断:`TEACHER_RECOMMEND`, `STUDENT`, `AUTO`, `DIRECT` - -### 修复内容 - -**文件1**: `backend/ruoyi-modules/ruoyi-jcbt/src/main/resources/mapper/jcbt/JcbtScholarshipApplicationMapper.xml` - -**增加班级表关联**: -```xml - - - - -left join xg_class_msg c on a.class_id = c.id -select ... c.class_name, ... -``` - -**文件2**: `web/src/views/jcbt/scholarship/application/index.vue` - -**修复申请类型映射**: -```typescript -// 修改前 -scope.row.applicationType === 'TEACHER_RECOMMEND' -// 修改后 -scope.row.applicationType === 'RECOMMEND' -``` - -**修复申请状态映射**: -```typescript -// 修改前 -scope.row.status === 'draft' → 草稿 -scope.row.status === 'waiting' → 待审核 -scope.row.status === 'complete' → 已完成 - -// 修改后 -scope.row.status === 'DRAFT' → 草稿 -scope.row.status === 'SUBMITTED' → 已提交 -scope.row.status === 'REVIEWING' → 审核中 -scope.row.status === 'APPROVED' → 已通过 -scope.row.status === 'REJECTED' → 已拒绝 -scope.row.status === 'WITHDRAWN' → 已撤回 -``` - -### 状态值对照表 - -**申请类型映射**: -- `RECOMMEND` → 教师推荐 -- `AUTO` → 自动评定 -- `DIRECT` → 直接指定 - -**申请状态映射**: -- `DRAFT` → 草稿 -- `SUBMITTED` → 已提交 -- `REVIEWING` → 审核中 -- `APPROVED` → 已通过 -- `REJECTED` → 已拒绝 -- `WITHDRAWN` → 已撤回 - -### 验证方法 - -1. 重启后端服务(使数据库映射生效) -2. 刷新奖学金申请管理页面 -3. 确认班级名称正常显示 -4. 确认奖学金类型名称正常显示 -5. 确认申请类型和状态显示中文 - -### 相关文档 - -- 无需更新API文档(接口未变) -- 问题类型:字段映射缺失 + 前端翻译逻辑错误 \ No newline at end of file diff --git a/docs/变更管理/code-adjust-record-2025-01-27-cursor.md b/docs/变更管理/code-adjust-record-2025-01-27-cursor.md deleted file mode 100644 index 4e69b7ee..00000000 --- a/docs/变更管理/code-adjust-record-2025-01-27-cursor.md +++ /dev/null @@ -1,9433 +0,0 @@ -# 代码调整记录 - 2025-01-27 - cursor - -## ✨ 新增班主任批量申请奖学金名额限制功能 (2025-01-27 20:45:00) - -### 功能描述 -为班主任批量申请奖学金功能添加实时名额限制,防止选择超过可用名额的学生数量 - -### 核心改进 -1. **实时名额检查**: 在学生选择时动态检查每种奖学金类型的剩余名额 -2. **智能禁用机制**: 当名额不足时自动禁用对应的奖学金类型选择 -3. **可视化名额状态**: 实时显示已选择数量和剩余名额 -4. **用户体验优化**: 提供清晰的视觉反馈和操作提示 - -### 新增功能方法 -```javascript -// 核心名额检查方法 -- isQuotaExceeded(scholarshipType) // 检查名额是否超限 -- getRemainingQuota(scholarshipType) // 获取剩余名额 -- getSelectedCount(scholarshipType) // 获取已选择数量 -- canSelectScholarshipType(student, scholarshipType) // 检查学生是否可选择特定类型 -- isScholarshipTypeDisabled(student, scholarshipType) // 检查奖学金类型是否应禁用 -``` - -### 界面改进 -1. **奖学金类型选择**: - - 实时显示"已选: X | 剩余: Y" - - 名额不足时自动禁用选项 - - 颜色标识:绿色(充足) / 红色(不足) - -2. **名额汇总面板**: - - 显示所有奖学金类型的选择状态 - - 实时更新剩余名额信息 - - 名额已满时显示警告标识 - -3. **智能提示**: - - 自动选择唯一可用奖学金类型 - - 名额紧张时(≤5)显示提醒 - - 无效选择时自动清除并提示 - -### 交互逻辑优化 -- **选择学生时**: 自动检查并选择唯一可用的奖学金类型 -- **更改奖学金类型时**: 验证名额可用性,无效时清除选择 -- **实时更新**: 每次选择变更后立即刷新名额显示 - -### 修改文件 -- `web/src/views/jcbt/scholarship/application/index.vue` (新增约80行代码) - -### 预期效果 -✅ 防止超额申请,避免后端验证失败 -✅ 实时名额显示,提升用户体验 -✅ 智能操作引导,减少操作错误 -✅ 清晰的视觉反馈,便于决策 - ---- - -## 🔧 修复班级名额查询逻辑 (2025-01-27 20:15:00) - -### 问题描述 -奖学金申请中班级名额查询错误,从错误的表 `jcbt_scholarship_class_quota` 查询数据,应该从 `jcbt_scholarship_quota` 表查询 - -### 问题根因 -- **错误查询**: 从 `jcbt_scholarship_class_quota` 表查询班级名额 -- **正确查询**: 应该从 `jcbt_scholarship_quota` 表查询,条件为 `allocation_level='CLASS'` 且 `target_dept_id=classId` - -### 解决方案 -1. **新增查询方法**: 在 `JcbtScholarshipQuotaMapper.xml` 中新增 `selectClassQuota` 方法 -2. **接口声明**: 在 `JcbtScholarshipQuotaMapper` 接口中新增方法声明 -3. **服务层接口**: 在 `IJcbtScholarshipQuotaService` 中新增 `selectClassQuota` 方法 -4. **服务层实现**: 在 `JcbtScholarshipQuotaServiceImpl` 中实现具体逻辑 -5. **业务逻辑修改**: 修改 `JcbtScholarshipApplicationServiceImpl` 中的查询调用 - -### 修改文件 -- `backend/ruoyi-modules/ruoyi-jcbt/src/main/resources/mapper/JcbtScholarshipQuotaMapper.xml` -- `backend/ruoyi-modules/ruoyi-jcbt/src/main/java/org/dromara/jcbt/mapper/JcbtScholarshipQuotaMapper.java` -- `backend/ruoyi-modules/ruoyi-jcbt/src/main/java/org/dromara/jcbt/service/IJcbtScholarshipQuotaService.java` -- `backend/ruoyi-modules/ruoyi-jcbt/src/main/java/org/dromara/jcbt/service/impl/JcbtScholarshipQuotaServiceImpl.java` -- `backend/ruoyi-modules/ruoyi-jcbt/src/main/java/org/dromara/jcbt/service/impl/JcbtScholarshipApplicationServiceImpl.java` - -### 查询逻辑变更 -```sql --- 修改前(错误) -SELECT * FROM jcbt_scholarship_class_quota -WHERE class_id = ? AND scholarship_type_id = ? AND batch_id = ? AND status = '1' AND deleted = 0 - --- 修改后(正确) -SELECT * FROM jcbt_scholarship_quota -WHERE allocation_level = 'CLASS' AND target_dept_id = ? AND scholarship_type_id = ? AND batch_id = ? AND status = 'ACTIVE' -``` - -### 验证步骤 -✅ 代码修改完成,需要编译和重启服务进行验证 - ---- - -## 🔧 修复Controller编译错误 (2025-01-27 19:44:00) - -### 问题描述 -`JcbtScholarshipApplicationController` 编译失败,提示找不到 `log` 变量符号 - -### 错误详情 -``` -[ERROR] 找不到符号 - 符号: 变量 log - 位置: 类 org.dromara.jcbt.controller.JcbtScholarshipApplicationController -``` - -### 解决方案 -1. **添加Lombok日志导入** - ```java - import lombok.extern.slf4j.Slf4j; - ``` - -2. **添加@Slf4j注解** - ```java - @Slf4j - @Validated - @Tag(name = "奖学金申请记录管理", description = "奖学金申请记录管理Controller") - @RestController - @RequestMapping("/jcbt/scholarshipApplication") - public class JcbtScholarshipApplicationController extends BaseController { - ``` - -### 修改文件 -- `backend/ruoyi-modules/ruoyi-jcbt/src/main/java/org/dromara/jcbt/controller/JcbtScholarshipApplicationController.java` - -### 验证结果 -✅ **编译成功** - BUILD SUCCESS (2分34秒) - ---- - -## 🔧 前端金额格式化函数修复 (2025-01-27 16:30:00) - -### 问题描述 -前端控制台报错:`TypeError: amount.toFixed is not a function`,导致表格无法正常渲染 - -### 问题根因 -`formatAmount` 函数期望数字类型,但从后端接收的数据可能是字符串类型,直接调用 `toFixed()` 方法导致类型错误 - -### 错误详情 -```javascript -// 错误位置:web/src/views/cw/approvalRecord/index.vue:719 -formatAmount(amount) { - return amount ? amount.toFixed(2) : '0.00'; // 当amount为字符串时报错 -} -``` - - - - -### 修复内容 - -#### 前端修复 -**文件**: `web/src/views/cw/approvalRecord/index.vue` - -**修复前**: -```javascript -formatAmount(amount) { - return amount ? amount.toFixed(2) : '0.00'; -} -``` - -**修复后**: -```javascript -formatAmount(amount) { - if (!amount && amount !== 0) return '0.00'; - const numAmount = parseFloat(amount); - return isNaN(numAmount) ? '0.00' : numAmount.toFixed(2); -} -``` - -### 修复逻辑 -1. **空值检查**: 检查 `amount` 是否存在,但允许 `0` 值 -2. **类型转换**: 使用 `parseFloat()` 将任何类型转换为数字 -3. **有效性验证**: 使用 `isNaN()` 检查转换结果是否为有效数字 -4. **安全调用**: 只有在是有效数字时才调用 `toFixed(2)` - -### 数据类型确认 -- **后端VO**: `java.math.BigDecimal totalInvestment` ✅ 正确 -- **前端接口**: `totalInvestment: number` ✅ 正确 -- **前端处理**: 增强类型容错性 ✅ 修复完成 - -### 预期效果 -- ✅ 消除前端控制台 TypeError 错误 -- ✅ 表格能够正常渲染和显示数据 -- ✅ 金额字段显示正确的格式化数值(如:610.00) - ---- - -## 🔧 审批记录详细调试和异常处理 (2025-01-27 16:15:00) - -### 问题描述 -- 前端表格列表底部显示有记录数,但表格内容为空白 -- SQL直接查询返回正确数据,说明关联查询语句正确 -- 怀疑Service层查询方法或数据传递有问题 - -### 排查过程 -1. ✅ **SQL语法验证**: 直接执行关联查询SQL,返回完整正确数据 -2. ✅ **字段映射检查**: 前端期望字段与后端VO字段完全匹配 -3. ✅ **BO类检查**: 确认有setter方法,字段名称正确 -4. ✅ **XML配置检查**: selectPageWithJoin方法定义正确 - -### 修改内容 - -#### 调试增强修改 -**文件**: `backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/service/impl/CwApprovalRecordServiceImpl.java` - -**增强日志和异常处理**: -```java -// 🚀 使用新的关联查询方法 -try { - log.info("🔧 开始执行关联查询,bo参数:{}", bo); - IPage result = baseMapper.selectPageWithJoin(page, bo); - - log.info("✅ 审批记录查询完成,返回记录数:{}, 总数:{}", - result.getRecords().size(), result.getTotal()); - - // 详细打印查询结果用于调试 - if (!result.getRecords().isEmpty()) { - for (int i = 0; i < Math.min(result.getRecords().size(), 2); i++) { - CwApprovalRecordVo record = result.getRecords().get(i); - log.info("📋 记录{}详情:id={}, 申报编号={}, 项目名称={}, 申报人={}, 部门={}, 总投资={}, 当前审批人={}, 状态={}", - i+1, record.getId(), record.getApplicationNo(), record.getProjectName(), - record.getApplicantName(), record.getDeptName(), record.getTotalInvestment(), - record.getCurrentApproverName(), record.getApprovalStatus()); - } - } else { - log.warn("⚠️ 查询结果为空!请检查查询条件和数据"); - } - - return TableDataInfo.build(result); - -} catch (Exception e) { - log.error("💥 执行关联查询时发生异常:{}", e.getMessage(), e); - // 异常时返回空结果,避免前端报错 - return TableDataInfo.build(new Page()); -} -``` - -#### 代码清理 -- 删除重复的调试代码 -- 统一异常处理逻辑 -- 增强日志输出便于问题定位 - -### 预期调试效果 -通过详细的日志输出,我们能够观察到: -1. Service方法是否被正确调用 -2. 查询参数是否正确传递 -3. SQL查询是否执行成功 -4. 返回的数据结构是否正确 -5. 是否有异常被抛出 - -### 下一步排查方向 -1. 检查后端日志,确认Service方法调用情况 -2. 验证关联查询是否正确执行 -3. 检查数据是否正确返回到前端 -4. 如有异常,根据具体错误信息进行针对性修复 - ---- - -## 🔧 审批记录前端字段映射修复 (2025-01-27 16:00:00) - -### 问题描述 -- 编译错误:IPage和Page类型不兼容 -- 前端表格显示空白:列表底部显示有记录数,但表格内容为空 - -### 问题根因 -1. **编译错误**: `IPage` 无法转换为 `Page` -2. **字段缺失**: 前端表格期望的字段在VO和结果映射中缺失 - -### 前端期望字段分析 -```javascript -// 前端表格列配置 -applicationNo -> ✅ 已有 -projectName -> ✅ 已有 -applicantName -> ✅ 已有 -deptName -> ✅ 已有 -totalInvestment -> ✅ 已有 -currentApproverName -> ❌ 缺失 (当前审批人) -approvalStatus -> ❌ 缺失 (审批状态) -submitTime -> ❌ 缺失 (提交时间) -approvalTime -> ❌ 缺失 (审批时间) -``` - -### 修改内容 - -#### 修复1: 编译错误 -**文件**: `backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/service/impl/CwApprovalRecordServiceImpl.java` - -**添加Import**: `import com.baomidou.mybatisplus.core.metadata.IPage;` -**修正类型**: `IPage result = baseMapper.selectPageWithJoin(page, bo);` - -#### 修复2: 扩展VO字段 -**文件**: `backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/domain/vo/CwApprovalRecordVo.java` - -**新增字段**: -```java -private String currentApproverName; // 当前审批人(前端表格需要) -private String approvalStatus; // 审批状态(前端表格需要) -private Date submitTime; // 提交时间(前端表格需要) -private Date approvalTime; // 审批时间(前端表格需要) -``` - -#### 修复3: 扩展结果映射 -**文件**: `backend/ruoyi-modules/ruoyi-cw/src/main/resources/mapper/CwApprovalRecordMapper.xml` - -**新增映射**: -```xml - - - - -``` - -#### 修复4: 扩展SQL查询 -**文件**: `backend/ruoyi-modules/ruoyi-cw/src/main/resources/mapper/CwApprovalRecordMapper.xml` - -**新增查询列**: -```sql --- 前端表格需要的额外字段 -ar.approver_name as current_approver_name, -- 当前审批人 -ar.node_status as approval_status, -- 审批状态 -pa.create_time as submit_time, -- 提交时间(项目申报创建时间) -ar.end_time as approval_time -- 审批时间(审批结束时间) -``` - -### 字段映射逻辑 -- **currentApproverName**: `ar.approver_name` - 审批记录表的审批人姓名 -- **approvalStatus**: `ar.node_status` - 审批记录表的节点状态 -- **submitTime**: `pa.create_time` - 项目申报表的创建时间(即提交时间) -- **approvalTime**: `ar.end_time` - 审批记录表的结束时间(审批完成时间) - -### 预期效果 -- ✅ 编译通过,无类型错误 -- ✅ 前端表格完整显示所有字段:申报编号、项目名称、申报人、申报部门、总投资、当前审批人、审批状态、提交时间、审批时间 -- ✅ 数据完整性和一致性得到保证 - -### 测试验证 -1. 编译通过,无错误 -2. 前端部门审批页面显示完整的表格数据 -3. 所有字段值正确显示,无空白内容 - ---- - -## 🎯 审批记录显示字段扩展修复 (2025-01-27 15:45:00) - -### 问题描述 -- 部门审批页面有记录但只显示申报编号,其他字段(项目名称、申报人、部门名称、总投资)均为空 -- 分析发现:审批记录查询只查询单表,缺少与项目申报表的关联查询 - -### 问题根因 -1. `CwApprovalRecordVo` 缺少项目申报相关字段 -2. 查询SQL只查询审批记录表,没有关联项目申报表、用户表、部门表 -3. 结果映射没有包含项目申报相关字段的映射 -4. **关键问题**: Service层使用MyBatis-Plus自动查询(`selectVoPage`),不支持关联查询 - -### 修改内容 - -#### 后端修改1: 扩展 CwApprovalRecordVo 字段 -**文件**: `backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/domain/vo/CwApprovalRecordVo.java` - -**新增字段**: -```java -// ================ 项目申报相关字段(通过关联查询获取) ================ - -private String projectName; // 项目名称 -private String applicantName; // 申报人姓名 -private String deptName; // 申报部门名称 -private java.math.BigDecimal totalInvestment; // 总投资(万元) -private String principal; // 项目负责人 -private String departmentName; // 部门名称(完整) -``` - -#### 后端修改2: 新增Mapper接口方法 -**文件**: `backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/mapper/CwApprovalRecordMapper.java` - -**新增方法**: `selectPageWithJoin` - 支持分页的关联查询方法 -```java -IPage selectPageWithJoin(IPage page, @Param("bo") CwApprovalRecordBo bo); -``` - -#### 后端修改3: 新增结果映射 -**文件**: `backend/ruoyi-modules/ruoyi-cw/src/main/resources/mapper/CwApprovalRecordMapper.xml` - -**新增映射**: `CwApprovalRecordVoResult` - 包含审批记录基础字段 + 项目申报关联字段 - -#### 后端修改4: 扩展关联查询SQL -**文件**: `backend/ruoyi-modules/ruoyi-cw/src/main/resources/mapper/CwApprovalRecordMapper.xml` - -**SQL修改**: `selectCwApprovalRecordVo` 片段 -```sql -select ar.id, ar.application_id, ar.application_no, ar.node_code, ar.node_name, ar.node_order, - ar.approver_id, ar.approver_name, ar.is_delegate, ar.original_approver_id, ar.original_approver_name, - ar.node_status, ar.approve_action, ar.approve_opinion, ar.start_time, ar.end_time, ar.expect_finish_time, - ar.is_overtime, ar.config_id, ar.config_snapshot, ar.create_by, ar.create_time, ar.update_by, ar.update_time, - ar.create_dept, ar.deleted, ar.tenant_id, - -- 项目申报相关字段 - pa.project_name, pa.principal, pa.total_investment, pa.department_name, - -- 申报人姓名通过用户表关联获取 - u.user_name as applicant_name, - -- 部门名称通过部门表关联获取 - d.dept_name -from cw_approval_record ar -left join cw_project_application pa on ar.application_id = pa.id -left join sys_user u on pa.create_by = u.user_id -left join sys_dept d on pa.department_id = d.dept_id -``` - -**新增方法**: `selectPageWithJoin` - 支持复杂条件的分页查询 - -#### 后端修改5: 更新查询方法 -**文件**: `backend/ruoyi-modules/ruoyi-cw/src/main/resources/mapper/CwApprovalRecordMapper.xml` - -**更新方法**: -- `selectByApplicationId` - 使用新结果映射,添加别名前缀 -- `selectByApplicationNo` - 使用新结果映射,添加别名前缀 -- `selectPendingByApproverId` - 使用新结果映射,添加别名前缀 -- `selectByApproverAndNode` - 使用新结果映射,添加别名前缀 -- `selectAllPendingApprovals` - 使用新结果映射,添加别名前缀 -- `selectByApplicationAndNode` - 使用新结果映射,添加别名前缀 -- `selectCurrentApprovalNode` - 使用新结果映射,添加别名前缀 - -#### **⭐ 后端修改6: 重构Service层查询逻辑** -**文件**: `backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/service/impl/CwApprovalRecordServiceImpl.java` - -**重大变更**: `queryPageList` 方法完全重写 -- **替换**: 从 `baseMapper.selectVoPage(pageQuery.build(), lqw)` 改为 `baseMapper.selectPageWithJoin(page, bo)` -- **新增**: 部门审批查询特殊逻辑处理 -- **保留**: 通用数据权限过滤逻辑 - -**核心逻辑**: -```java -// 🔧 部门审批查询 (deptId == 'current') -if (StringUtils.isNotBlank(bo.getDeptId()) && "current".equals(bo.getDeptId())) { - // 动态设置查询条件 - bo.setNodeCode("dept_approve"); - bo.setNodeStatus("waiting"); - bo.setApproverId(currentUserId); -} else { - // 🔒 通用数据权限过滤 - // 普通用户:只能查看自己作为审批人的记录 - if (!LoginHelper.isSuperAdmin(currentUserId)) { - bo.setApproverId(currentUserId); - } -} - -// 🚀 使用新的关联查询方法 -Page result = baseMapper.selectPageWithJoin(page, bo); -``` - -### 修改原理 -- **解决核心问题**: MyBatis-Plus自动查询不支持关联查询,必须使用自定义SQL -- **完整数据映射**: 通过LEFT JOIN关联项目申报表、用户表、部门表获取完整信息 -- **保持权限控制**: 在Service层处理复杂的权限逻辑和条件设置 -- **统一结果映射**: 使用专门的VO结果映射确保字段正确映射 -- **性能优化**: 一次查询获取所有需要的字段,避免N+1查询问题 - -### 预期效果 -- ✅ 部门审批页面能够完整显示:申报编号、项目名称、申报人、申报部门、总投资等信息 -- ✅ 保持现有权限控制逻辑不变 -- ✅ 提供完整的审批记录列表视图 -- ✅ 支持复杂查询条件和分页 - -### 测试验证 -1. 编译重启服务后验证部门审批页面完整字段显示 -2. 确认关联查询性能正常 -3. 验证权限控制逻辑正确执行 -4. 测试其他审批相关功能不受影响 - ---- - -## 🔧 部门审批数据权限过滤修复 (2025-01-27 15:30:00) - -### 问题描述 -- 部门审批页面有记录但只显示申报编号,其他字段(项目名称、申报人、部门名称、总投资)均为空 -- 分析发现:审批记录查询只查询单表,缺少与项目申报表的关联查询 - -### 问题根因 -1. `CwApprovalRecordVo` 缺少项目申报相关字段 -2. 查询SQL只查询审批记录表,没有关联项目申报表、用户表、部门表 -3. 结果映射没有包含项目申报相关字段的映射 - -### 修改内容 - -#### 后端修改1: 扩展 CwApprovalRecordVo 字段 -**文件**: `backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/domain/vo/CwApprovalRecordVo.java` - -**新增字段**: -```java -// ================ 项目申报相关字段(通过关联查询获取) ================ - -private String projectName; // 项目名称 -private String applicantName; // 申报人姓名 -private String deptName; // 申报部门名称 -private java.math.BigDecimal totalInvestment; // 总投资(万元) -private String principal; // 项目负责人 -private String departmentName; // 部门名称(完整) -``` - -#### 后端修改2: 新增结果映射 -**文件**: `backend/ruoyi-modules/ruoyi-cw/src/main/resources/mapper/CwApprovalRecordMapper.xml` - -**新增映射**: `CwApprovalRecordVoResult` - 包含审批记录基础字段 + 项目申报关联字段 - -#### 后端修改3: 扩展关联查询SQL -**文件**: `backend/ruoyi-modules/ruoyi-cw/src/main/resources/mapper/CwApprovalRecordMapper.xml` - -**SQL修改**: `selectCwApprovalRecordVo` 片段 -```sql -select ar.id, ar.application_id, ar.application_no, ar.node_code, ar.node_name, ar.node_order, - ar.approver_id, ar.approver_name, ar.is_delegate, ar.original_approver_id, ar.original_approver_name, - ar.node_status, ar.approve_action, ar.approve_opinion, ar.start_time, ar.end_time, ar.expect_finish_time, - ar.is_overtime, ar.config_id, ar.config_snapshot, ar.create_by, ar.create_time, ar.update_by, ar.update_time, - ar.create_dept, ar.deleted, ar.tenant_id, - -- 项目申报相关字段 - pa.project_name, pa.principal, pa.total_investment, pa.department_name, - -- 申报人姓名通过用户表关联获取 - u.user_name as applicant_name, - -- 部门名称通过部门表关联获取 - d.dept_name -from cw_approval_record ar -left join cw_project_application pa on ar.application_id = pa.id -left join sys_user u on pa.create_by = u.user_id -left join sys_dept d on pa.department_id = d.dept_id -``` - -#### 后端修改4: 更新查询方法 -**文件**: `backend/ruoyi-modules/ruoyi-cw/src/main/resources/mapper/CwApprovalRecordMapper.xml` - -**更新方法**: -- `selectByApplicationId` - 使用新结果映射,添加别名前缀 -- `selectByApplicationNo` - 使用新结果映射,添加别名前缀 -- `selectPendingByApproverId` - 使用新结果映射,添加别名前缀 -- `selectByApproverAndNode` - 使用新结果映射,添加别名前缀 -- `selectAllPendingApprovals` - 使用新结果映射,添加别名前缀 -- `selectByApplicationAndNode` - 使用新结果映射,添加别名前缀 -- `selectCurrentApprovalNode` - 使用新结果映射,添加别名前缀 - -### 修改原理 -- 扩展VO对象包含前端需要的所有字段 -- 通过LEFT JOIN关联项目申报表、用户表、部门表获取完整信息 -- 使用统一的结果映射确保字段正确映射到VO对象 -- 添加表别名避免字段名冲突 - -### 预期效果 -- 部门审批页面能够完整显示:申报编号、项目名称、申报人、申报部门、总投资等信息 -- 提供完整的审批记录列表视图 -- 保持现有查询性能和功能 - -### 测试验证 -1. 编译重启服务后验证部门审批页面完整字段显示 -2. 确认所有关联查询正确执行 -3. 验证其他审批相关功能不受影响 - ---- - -## 🔧 部门审批数据权限过滤修复 (2025-01-27 15:30:00) - -### 问题描述 -- 前端部门审批页面显示为空,即使数据库中有相应记录 -- 分析发现:数据权限过滤逻辑冲突,部门领导权限过滤缺少审批人过滤条件 - -### 问题根因 -在 `CwApprovalRecordServiceImpl.java` 的 `addDataPermissionFilter` 方法中: -1. 部门审批查询设置了4个条件(本部门申报 + 部门审批节点 + 待审批状态 + 审批人为当前用户) -2. 数据权限过滤对有 `cw:approval:dept` 权限的用户只过滤了部门条件,缺少审批人过滤 -3. 导致查询条件不完整,无法正确显示数据 - -### 修改内容 - -#### 后端修改 -**文件**: `backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/service/impl/CwApprovalRecordServiceImpl.java` - -**修改位置**: `addDataPermissionFilter` 方法的部门领导权限处理部分 - -**修改详情**: -```java -// 部门领导:只能查看本部门用户提交的审批 -if (rolePermissions != null && rolePermissions.contains("cw:approval:dept")) { - log.debug("当前用户[{}]为部门领导,只能查看本部门审批记录", currentUserId); - Long deptId = loginUser.getDeptId(); - if (deptId != null) { - // 通过关联查询,只显示本部门用户提交的申报对应的审批记录 - lqw.exists("SELECT 1 FROM cw_project_application a " + - "WHERE a.id = cw_approval_record.application_id " + - "AND a.department_id = " + deptId); - // 🔧 关键修复:部门领导也需要过滤为自己作为审批人的记录 - lqw.eq(CwApprovalRecord::getApproverId, currentUserId); - log.debug("部门领导权限过滤完成:deptId={}, approverId={}", deptId, currentUserId); - } else { - log.warn("部门领导[{}]没有部门信息,拒绝数据访问", currentUserId); - lqw.eq(CwApprovalRecord::getId, 0L); - } - return; -} -``` - -### 修改原理 -- 为有 `cw:approval:dept` 权限的用户增加 `approverId` 过滤条件 -- 确保部门领导只能看到自己作为审批人的本部门审批记录 -- 保持现有权限控制架构不变,改动最小化 - -### 预期效果 -- 部门审批页面能够正确显示当前用户作为审批人的待审批记录 -- jwc001 登录后能看到 jwc009 提交的项目申报审批记录 - -### 测试验证 -1. 编译重启服务后验证部门审批页面数据显示 -2. 确认权限过滤逻辑正确执行 -3. 验证其他用户角色的数据访问不受影响 - ---- - -## 2025-08-01 15:00:00 - 修复审批人设置错误问题(jwc001看不到jwc009的申报) - -### 问题描述 -- `jwc001`(教务处处长)登录后看不到 `jwc009`(教务处干事)提交的项目预算申请 -- 通过数据库分析发现:审批记录中的审批人设置错误,使用了申报人自己作为审批人 - -### 问题根因分析 -通过数据库查询发现: -1. **用户部门确认**:`jwc001` 和 `jwc009` 都在教务处(部门ID: 1938484570826956801) -2. **权限确认**:`jwc001` 拥有 `project_dept_manage` 角色,有审批权限 -3. **数据错误**:审批记录中 `approver_id` 是申报人自己(2109),而不是真正的审批人(2101) -4. **记录缺失**:多个 `submitted` 状态的申报没有创建审批记录 - -### 解决方案 - -#### 1. 修改审批人设置逻辑 -**文件**:`backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/service/impl/CwApprovalRecordServiceImpl.java` - -- 重构 `setApproverByNodeCode` 方法:根据审批节点类型查找正确的审批人 -- 新增 `setDeptApprover` 方法:查找部门内具有审批权限的用户 -- 新增 `setFinanceApprover` 和 `setLeaderApprover` 方法:设置财务和领导审批人 -- 新增辅助方法:`getApplicationDeptId`、`findDeptApproverByDeptId`、`getUserNameById` - -**核心改进**: -```java -// 修复前:使用申报人作为审批人(错误) -record.setApproverId(currentUserId); // 申报人ID -record.setApproverName(currentUserName + "_部门审批"); - -// 修复后:根据部门查找正确的审批人 -setDeptApprover(record, record.getApplicationId()); -// 教务处 → jwc001(教务处处长江建) -``` - -#### 2. 创建数据修复脚本 -**文件**:`script/fix-approval-records.sql` - -- 删除审批人是申报人自己的错误记录 -- 为所有 `submitted` 和 `approving` 状态的申报重新创建正确的审批记录 -- 设置正确的审批人: - - 部门审批:jwc001(教务处处长江建) - - 财务审批:admin(临时) - - 领导审批:admin(临时) - -### 修复效果 -- ✅ `jwc001` 能看到同部门用户提交的待审批申请 -- ✅ 审批人设置正确(部门负责人而非申报人) -- ✅ 审批流程正常工作 -- ✅ 数据一致性恢复 - -### 执行步骤 -1. 编译代码:`mvn clean compile -DskipTests` -2. 重启服务 -3. 执行数据修复脚本:`script/fix-approval-records.sql` -4. 验证功能:jwc001 登录查看部门审批页面 - ---- - -## 2025-08-01 14:35:00 - 修复异步审批流程中用户上下文获取失败问题 - -### 问题描述 -在实现异步审批流程创建后,出现新的错误:`当前用户信息获取失败,无法创建审批流程`。 - -### 问题根因分析 -- 用户会话信息(`LoginHelper`)绑定在主请求线程的 `ThreadLocal` 中 -- 异步线程 `approval-async-1` 无法访问主线程的用户上下文 -- `LoginHelper.getUserId()` 在异步线程中返回 `null` - -### 解决方案 -**核心思路**:在事件发布时收集用户信息,传递给异步处理器 - -#### 1. 修改事件类添加用户上下文 -**文件**:`backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/event/ApprovalProcessCreatedEvent.java` - -```java -// 新增用户上下文字段 -private final Long currentUserId; -private final String currentUserName; -private final Long currentDeptId; -private final String currentTenantId; - -public ApprovalProcessCreatedEvent(Object source, Long applicationId, String applicationNo, - Long currentUserId, String currentUserName, - Long currentDeptId, String currentTenantId) { - // ... 构造器实现 -} -``` - -#### 2. 修改事件发布收集用户信息 -**文件**:`backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/service/impl/CwProjectApplicationServiceImpl.java` - -```java -// 在主线程中收集用户上下文信息(异步线程中无法获取) -Long currentUserId = LoginHelper.getUserId(); -String currentUserName = LoginHelper.getUsername(); -Long currentDeptId = LoginHelper.getDeptId(); -String currentTenantId = LoginHelper.getTenantId(); - -ApprovalProcessCreatedEvent event = new ApprovalProcessCreatedEvent( - this, id, application.getApplicationNo(), - currentUserId, currentUserName, currentDeptId, currentTenantId); -``` - -#### 3. 修改Service接口和实现 -**文件**:`backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/service/ICwApprovalRecordService.java` - -```java -Boolean createApprovalProcess(Long applicationId, String applicationNo, - Long currentUserId, String currentUserName, - Long currentDeptId, String currentTenantId); -``` - -**文件**:`backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/service/impl/CwApprovalRecordServiceImpl.java` - -- 修改 `createApprovalProcess` 方法接受用户信息参数 -- 修改 `createApprovalRecord` 方法使用传递的用户信息而不是 `LoginHelper` -- 修改 `setApproverByNodeCode` 方法使用传递的用户信息 - -#### 4. 修改事件监听器 -**文件**:`backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/listener/ApprovalProcessEventListener.java` - -```java -Boolean result = approvalRecordService.createApprovalProcess( - event.getApplicationId(), - event.getApplicationNo(), - event.getCurrentUserId(), - event.getCurrentUserName(), - event.getCurrentDeptId(), - event.getCurrentTenantId() -); -``` - -### 修复效果 -- ✅ 异步线程能正确获取用户信息 -- ✅ 审批流程创建成功 -- ✅ 事务不再回滚 -- ✅ 提交响应速度提升(异步处理) - ---- - -## 2025-01-27 18:30:00 - 修复项目申报提交时的事务回滚问题(最终解决方案) - -### 问题描述 -项目预算申报点击提交操作时提示"Transaction rolled back because it has been marked as rollback-only",导致提交失败,审批记录无法创建。 - -### 问题根因分析 -经过深入分析,发现问题的根本原因: - -1. **批量插入字段缺失**: - - `createApprovalRecord` 方法创建的审批记录缺少必需字段 - - MyBatis-Plus的自动填充只对 `insert()` 方法生效,对自定义 `batchInsert()` 不生效 - - 导致 `id`, `createBy`, `createTime`, `updateBy`, `updateTime`, `createDept`, `tenantId` 等字段为null,违反数据库约束 - -2. **审批人设置问题**: - - 硬编码的admin用户(ID=1)可能不存在,导致外键约束失败 - -3. **事务传播问题**: - - `submitApplication` 和 `createApprovalProcess` 都有 `@Transactional` - - 嵌套事务中的异常导致外层事务也被标记为回滚 - -### 最终修复方案 - -#### 1. 完善审批记录字段设置 -**文件**:`backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/service/impl/CwApprovalRecordServiceImpl.java` - -在 `createApprovalRecord` 方法中手动设置所有必需字段: -```java -// 生成唯一ID(批量插入需要手动生成) -record.setId(SequenceUtils.nextId("approval_record", Duration.ofDays(1))); - -// 手动设置所有必需字段(批量插入不会自动填充) -Date now = new Date(); -record.setCreateBy(currentUserId); -record.setCreateTime(now); -record.setUpdateBy(currentUserId); -record.setUpdateTime(now); -record.setCreateDept(LoginHelper.getDeptId()); -record.setTenantId(LoginHelper.getTenantId()); -``` - -#### 2. 修复审批人设置逻辑 -将硬编码的admin用户改为使用当前登录用户,确保数据有效性: -```java -private void setApproverByNodeCode(CwApprovalRecord record, String nodeCode) { - // 使用当前登录用户作为审批人,确保用户存在 - Long currentUserId = LoginHelper.getUserId(); - String currentUserName = LoginHelper.getUsername(); - - switch (nodeCode) { - case "dept_approve": - record.setApproverId(currentUserId); - record.setApproverName(currentUserName + "_部门审批"); - break; - // ... 其他节点类似处理 - } -} -``` - -#### 3. 优化事务传播机制 -修改 `createApprovalProcess` 方法的事务传播,避免影响主流程: -```java -@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) -public Boolean createApprovalProcess(Long applicationId, String applicationNo) { - // 使用新事务,即使审批流程创建失败也不影响申报状态更新 -} -``` - -### 技术要点总结 - -1. **ID生成策略**:使用 `SequenceUtils.nextId()` 为批量插入生成唯一ID -2. **字段完整性**:批量插入必须手动设置所有必需字段,不能依赖MyBatis-Plus自动填充 -3. **事务隔离**:使用 `REQUIRES_NEW` 传播机制创建独立事务,避免嵌套事务问题 -4. **数据有效性**:使用当前登录用户确保审批人数据的有效性,避免外键约束失败 - -### 关键问题发现和修复 - -#### 4. 事件监听器代码格式错误 -**文件**:`backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/listener/ApprovalProcessEventListener.java` - -修复了if-else语句的格式错误,这可能导致逻辑执行异常。 - -#### 5. 批量插入字段不匹配 -**文件**:`backend/ruoyi-modules/ruoyi-cw/src/main/resources/mapper/CwApprovalRecordMapper.xml` - -发现批量插入SQL包含了实体类中不存在的 `deleted` 字段,导致字段映射失败: -```xml - -create_dept, deleted, tenant_id - - -create_dept, tenant_id -``` - -#### 6. 完善所有必需字段设置 -在 `createApprovalRecord` 方法中设置所有批量插入需要的字段: -```java -// 设置代理相关字段(非代理时为null) -record.setOriginalApproverId(null); -record.setOriginalApproverName(null); - -// 设置审批相关字段(初始状态下为null) -record.setApproveAction(null); -record.setApproveOpinion(null); -record.setEndTime(null); -record.setExpectFinishTime(null); - -// 设置配置相关字段 -record.setConfigId(null); -record.setConfigSnapshot(null); -``` - -#### 7. 增强日志追踪系统 -添加了完整的日志追踪,包括: -- 🚀 事件发布流程日志 -- 📝 审批记录创建过程日志 -- 💾 批量插入结果日志 -- 🎉 完整流程成功日志 - -#### 8. 启用SQL日志调试(深度排查) -**问题**:审批记录仍然无法保存到数据库 - -**调试方案**: -- 启用MyBatis SQL日志输出:`log-impl: org.apache.ibatis.logging.stdout.StdOutImpl` -- 增加详细的调试日志级别配置 -- 添加每条记录的详细信息打印 -- 添加数据库访问权限验证 -- 添加单条插入测试来对比批量插入结果 -- 增强事件监听器的调试信息输出 - -**修改文件**: -- `backend/ruoyi-admin/src/main/resources/application.yml` - 启用SQL日志 -- `CwApprovalRecordServiceImpl.java` - 增强调试信息 -- `ApprovalProcessEventListener.java` - 增强事件追踪 - -#### 9. 修复start_time字段NOT NULL约束违反问题(关键修复) -**问题**:`Column 'start_time' cannot be null` - 数据库约束违反 - -**根本原因**: -- `cw_approval_record` 表的 `start_time` 字段定义为 `NOT NULL` -- 代码中对 "pending" 状态的记录设置了 `start_time = null` -- 导致批量插入时违反数据库约束 - -**解决方案**: -- 为所有审批记录设置有效的 `start_time` 值 -- "waiting" 状态:设置为当前时间(立即开始等待审批) -- "pending" 状态:设置为当前时间(满足数据库NOT NULL约束) -- 添加详细日志跟踪时间设置过程 - -**修改文件**: -- `CwApprovalRecordServiceImpl.java` - 修复start_time设置逻辑 - -#### 9.1 修复编译错误(变量重复定义) -**问题**:编译报错 `已在方法 createApprovalRecord 中定义了变量 now` - -**原因**:在 `createApprovalRecord` 方法中重复定义了 `Date now` 变量 -- 第461行:`Date now = new Date();` (已存在) -- 第490行:`Date now = new Date();` (重复定义,导致编译错误) - -**解决方案**:删除重复的变量定义,复用已存在的 `now` 变量 - -**修改文件**: -- `CwApprovalRecordServiceImpl.java` - 删除重复的now变量定义 - -#### 10. 系统稳定性优化(解决外部服务连接问题) -**问题**:Redis和MySQL连接超时导致系统不稳定,影响审批功能测试 - -**根本原因**: -- 外部Redis服务器 `47.99.164.66:16379` 连接不稳定 -- 外部MySQL服务器 `47.99.164.66:3306` 连接池超时 -- 网络延迟和超时参数设置过短 - -**优化方案**: -- 增加Redis连接超时:`10s` → `30s` -- 增加Redisson命令超时:`3000ms` → `10000ms` -- 添加重试机制:`retryAttempts: 3, retryInterval: 1500ms` -- 优化数据库连接池超时参数 -- 临时禁用SQL日志输出减少系统负担 -- 创建独立的数据库测试脚本验证修复效果 - -**修改文件**: -- `application-dev.yml` - Redis和数据库超时优化 -- `application.yml` - 禁用SQL日志 -- `script/test-approval-process.sql` - 独立测试脚本 - -#### 11. 根本性性能和稳定性优化(解决锁等待和提交缓慢问题) -**问题**: -- MySQL锁等待超时:`Lock wait timeout exceeded; try restarting transaction` -- 提交审批非常慢:52秒响应时间 -- 事务嵌套导致锁竞争 - -**根本原因分析**: -- 主事务中同步处理事件,阻塞主流程 -- 事件监听器中开启新事务,再调用Service层事务方法,造成事务嵌套 -- 数据库连接池配置不当,连接竞争激烈 -- 缺乏异步处理机制 - -**综合优化方案**: -1. **避免事务嵌套**:直接在当前事务中更新状态,不调用Service层新事务 -2. **异步事件处理**:使用@Async让事件处理不阻塞主流程 -3. **优化连接池**:增加连接数、优化超时参数 -4. **改进数据库连接**:添加锁等待超时参数 -5. **专用异步执行器**:创建专门的线程池处理审批流程 - -**预期效果**: -- 提交响应时间从52秒降低到3秒内 -- 消除MySQL锁等待超时错误 -- 提升系统整体稳定性 - -**修改文件**: -- `CwApprovalRecordServiceImpl.java` - 避免事务嵌套,直接更新状态 -- `ApprovalProcessEventListener.java` - 异步事件处理 -- `CwProjectApplicationServiceImpl.java` - 优化事件发布逻辑 -- `DromaraApplication.java` - 启用异步支持 -- `AsyncConfig.java` - 专用异步执行器配置 -- `application-dev.yml` - 数据库连接池优化 - -### 解决效果 -- ✅ 修复了事务回滚错误的根本原因 -- ✅ 解决了批量插入字段映射问题 -- ✅ 完善了审批记录创建的完整流程 -- ✅ 增加了详细的日志追踪,便于问题诊断 -- ✅ 确保项目申报提交后能正确创建审批记录 - -## 2025-01-27 18:00:00 - 修复审批记录创建bug(核心问题解决) - -### 问题描述 -审批记录表 `cw_approval_record` 是空的,项目申报提交审批时没有正确创建审批记录。经分析发现根本问题:**在提交审批时,审批记录根本没有被创建到数据库中**。 - -### 问题根因分析 -1. **审批人设置错误**:审批记录的审批人被错误地设置为申报人自己(当前用户),这在业务逻辑上是错误的 -2. **缺少必需字段**:创建审批记录时试图手动设置ID和基础字段,但: - - 系统中没有 `IdUtils` 类,导致编译错误 - - `CwApprovalRecord` 实体继承了 `TenantEntity`,基础字段由MyBatis-Plus自动处理 -3. **异步处理掩盖错误**:事件监听器使用 `@Async` 注解,即使创建失败也不会影响主流程 - -### 修复方案 - -#### 1. 修复审批人设置逻辑 -**文件**:`backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/service/impl/CwApprovalRecordServiceImpl.java` - -新增 `setApproverByNodeCode` 方法,根据审批节点类型设置不同的审批人: -```java -/** - * 根据节点类型设置审批人 - */ -private void setApproverByNodeCode(CwApprovalRecord record, String nodeCode) { - switch (nodeCode) { - case "dept_approve": - // 部门审批:设置部门负责人 - record.setApproverId(1L); - record.setApproverName("admin"); - break; - case "finance_approve": - // 财务审批:设置财务部门负责人 - record.setApproverId(1L); - record.setApproverName("admin"); - break; - case "leader_approve": - // 领导审批:设置校领导 - record.setApproverId(1L); - record.setApproverName("admin"); - break; - default: - // 默认使用admin用户 - record.setApproverId(1L); - record.setApproverName("admin"); - break; - } -} -``` - -#### 2. 修复ID和字段设置问题 -- **删除手动ID设置**:移除 `IdUtils.getSnowflakeId()` 调用,让MyBatis-Plus自动生成ID -- **删除基础字段设置**:移除手动设置 `createBy`、`createTime`、`deleted` 等字段,由框架自动处理 -- **简化字段设置**:只设置业务相关的字段 - -#### 3. 修复同步处理 -**文件**:`backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/listener/ApprovalProcessEventListener.java` - -移除 `@Async` 注解,确保审批记录创建是同步的: -```java -/** - * 处理审批流程创建事件 - */ -@EventListener // 移除 @Async 注解 -public void handleApprovalProcessCreated(ApprovalProcessCreatedEvent event) { - // ...处理逻辑 -} -``` - -#### 4. 增强调试日志 -在审批记录创建过程中增加详细的日志记录: -- 查询开始时记录所有参数 -- 部门ID获取和验证 -- 审批记录创建过程跟踪 -- 查询结果统计 - -### 预期效果 -修复完成后,当用户提交项目申报时: - -1. **正确创建审批流程**: - - 第1节点:部门审批(waiting状态) - - 第2节点:财务审批(pending状态) - - 第3节点:领导审批(pending状态) - -2. **部门审批页面显示数据**: - - 点击"部门审批"能够看到本部门提交的待审批申报 - - 查询逻辑:`deptId = 'current'` → 获取当前用户部门的申报记录 - -3. **完整的审批流程**: - - 申报状态正确更新为"approving" - - 审批记录正确保存到数据库 - - 统计数据正确显示 - -### 技术要点 -1. **MyBatis-Plus自动字段填充**:继承 `TenantEntity` 的实体类无需手动设置基础字段 -2. **审批人配置**:目前暂时硬编码为admin用户,后续可扩展为从配置表动态获取 -3. **事件驱动架构**:保留事件驱动模式,但确保关键流程同步执行 -4. **事务管理**:使用 `@Transactional` 确保数据一致性 - -## 2025-01-27 17:30:00 - 修复编译错误并优化部门审批查询逻辑 - -### 问题描述 -部门审批功能修改后出现大量编译错误,主要包括: -1. Bo类中重复字段定义 -2. 复杂的exists子查询语法问题 -3. 实体类字段缺失等 - -### 修复过程 - -#### 1. 修复Bo类重复字段定义 -**文件**:`backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/domain/bo/CwApprovalRecordBo.java` - -删除第154行重复的 `approverName` 字段定义(原来第70行已有定义)。 - -#### 2. 简化查询逻辑,修复SQL语法问题 -**文件**:`backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/service/impl/CwApprovalRecordServiceImpl.java` - -将复杂的 `exists` 子查询改为简单的 `in` 子查询: -```java -// 修改前(有语法问题) -lqw.exists("SELECT 1 FROM cw_project_application ca WHERE ca.id = {0}.application_id AND ca.department_id = {1} AND ca.deleted = 0", - "cw_approval_record", currentDeptId); - -// 修改后(简化语法) -lqw.in(CwApprovalRecord::getApplicationId, - "SELECT id FROM cw_project_application WHERE department_id = " + currentDeptId + " AND deleted = 0"); -``` - -#### 3. 暂时简化关联查询条件 -为避免复杂的关联查询导致编译问题,暂时注释掉了项目名称和申报人姓名的查询条件,保留核心的部门审批过滤逻辑。 - -### 修复结果 - -#### 编译状态 -- ✅ 后端编译成功 -- ✅ 所有模块编译通过 -- ✅ 无编译错误 - -#### 功能保留 -- ✅ 部门审批核心逻辑完整 -- ✅ 当前用户部门ID获取正常 -- ✅ 部门审批节点过滤正确 -- ✅ 等待审批状态过滤正确 - -#### 查询逻辑优化 -```sql --- 部门审批查询SQL逻辑 -SELECT * FROM cw_approval_record -WHERE application_id IN ( - SELECT id FROM cw_project_application - WHERE department_id = #{currentDeptId} AND deleted = 0 -) -AND node_code = 'dept_approve' -AND node_status = 'waiting' -ORDER BY create_time DESC -``` - -### 测试要求 -1. 后端服务启动成功 -2. 部门审批页面能正常显示本部门的待审批记录 -3. 查看后端日志确认部门ID获取和查询执行正常 - -### 后续优化 -如需恢复项目名称和申报人姓名的查询功能,可以通过以下方式: -1. 使用更简单的关联查询语法 -2. 或者在Service层进行二次过滤 -3. 或者优化Mapper XML中的关联查询 - ---- - -## 2025-01-27 17:15:00 - 修复部门审批页面显示为空问题 - -### 问题描述 -部门审批页面登录进来应该显示本部门用户提交的预算申请,并且没有通过部门审批的记录,但现在页面是空的。 - -### 问题根因 -经过前端到后端的完整排查,发现问题出现在后端查询逻辑: -- 前端正确传递 `deptId: 'current'` 参数 -- 后端Bo类缺少 `deptId` 字段定义 -- 后端查询构建器没有处理部门过滤逻辑 -- 无法识别和处理 'current' 特殊值 - -### 修复方案 - -#### 1. 修改Bo类,添加查询字段 -**文件**:`backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/domain/bo/CwApprovalRecordBo.java` - -添加部门审批相关的查询字段: -```java -// ========== 查询条件字段 ========== - -/** - * 部门ID查询条件(用于部门审批页面过滤) - * 支持具体部门ID或特殊值 'current'(当前用户部门) - */ -private String deptId; - -/** - * 项目名称(查询条件) - */ -private String projectName; - -/** - * 申报人姓名(查询条件) - */ -private String applicantName; - -/** - * 审批人姓名(查询条件) - */ -private String approverName; - -/** - * 提交时间开始/结束 - */ -private String submitTimeBegin; -private String submitTimeEnd; - -/** - * 审批状态(查询条件) - */ -private String approvalStatus; -``` - -#### 2. 修改Service实现类,添加部门过滤逻辑 -**文件**:`backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/service/impl/CwApprovalRecordServiceImpl.java` - -在 `buildQueryWrapper` 方法中添加部门审批逻辑: -```java -// 处理部门审批查询逻辑 -if (StringUtils.isNotBlank(bo.getDeptId())) { - if ("current".equals(bo.getDeptId())) { - // 查询当前用户部门的申报,且处于部门审批节点 - Long currentDeptId = LoginHelper.getDeptId(); - log.info("部门审批查询:当前用户部门ID={}", currentDeptId); - - // 关联项目申报表,查询本部门提交的申报 - lqw.exists("SELECT 1 FROM cw_project_application ca WHERE ca.id = {0}.application_id AND ca.department_id = {1} AND ca.deleted = 0", - "cw_approval_record", currentDeptId); - - // 只显示部门审批节点的记录 - lqw.eq(CwApprovalRecord::getNodeCode, "dept_approve"); - - // 只显示待审批的记录(waiting) - lqw.eq(CwApprovalRecord::getNodeStatus, "waiting"); - } else { - // 具体部门ID查询 - Long deptId = Long.valueOf(bo.getDeptId()); - lqw.exists("SELECT 1 FROM cw_project_application ca WHERE ca.id = {0}.application_id AND ca.department_id = {1} AND ca.deleted = 0", - "cw_approval_record", deptId); - } -} -``` - -#### 3. 修改前端查询参数定义 -**文件**:`web/src/views/cw/approvalRecord/index.vue` - -在 queryParams 中添加 deptId 字段: -```javascript -queryParams: { - pageNum: 1, - pageSize: 10, - // ... 其他字段 - deptId: '' // 添加部门ID查询参数 -} -``` - -### 修复逻辑说明 - -#### 部门审批的业务逻辑 -1. **触发条件**:用户点击"部门审批"快捷按钮 -2. **查询范围**:当前用户所在部门提交的项目申报 -3. **节点过滤**:只显示处于"部门审批"节点(nodeCode = 'dept_approve')的记录 -4. **状态过滤**:只显示"等待审批"状态(nodeStatus = 'waiting')的记录 - -#### 数据关联关系 -``` -审批记录表(cw_approval_record) → 项目申报表(cw_project_application) -通过 application_id 关联,按 department_id 过滤部门数据 -``` - -#### 查询SQL逻辑 -```sql -SELECT * FROM cw_approval_record ar -WHERE EXISTS ( - SELECT 1 FROM cw_project_application ca - WHERE ca.id = ar.application_id - AND ca.department_id = #{currentDeptId} - AND ca.deleted = 0 -) -AND ar.node_code = 'dept_approve' -AND ar.node_status = 'waiting' -``` - -### 修改的文件 -1. `backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/domain/bo/CwApprovalRecordBo.java` -2. `backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/service/impl/CwApprovalRecordServiceImpl.java` -3. `web/src/views/cw/approvalRecord/index.vue` - -### 测试要求 -修改完成后需要重启后端服务,然后测试: -1. 确保数据库中有项目申报数据且已提交审批 -2. 确保有审批记录数据且处于部门审批节点 -3. 使用有权限的用户登录,点击"部门审批" -4. 验证能正确显示本部门待审批的记录 - -### 预期结果 -- ✅ 部门审批页面能正确显示本部门的待审批记录 -- ✅ 只显示处于部门审批节点且等待审批的记录 -- ✅ 其他查询条件(项目名称、申报人等)正常工作 -- ✅ 后端日志显示部门ID和查询条件 - ---- - -## 2025-01-27 16:30:00 - 修复绩效指标数据不保存到数据库问题 - -### 问题描述 -用户在编辑项目申报时,修改绩效指标数据后点击保存,绩效指标的修改没有正确保存到数据库中。 - -### 问题根因 -经过前端到后端的完整排查,发现问题出现在后端Service层: -- 前端数据收集和传递正常 -- 后端VO、Bo类字段定义正常 -- **根本问题**:`CwProjectApplicationServiceImpl` 的 `insertByBo` 和 `updateByBo` 方法只处理项目申报的基本信息,缺少绩效指标数据的保存逻辑 - -### 修复方案 -修改 `CwProjectApplicationServiceImpl` 类,在新增和修改方法中添加绩效指标处理逻辑: - -#### 1. 修改 `insertByBo` 方法 -```java -// 新增后保存绩效指标数据 -if (bo.getPerformanceIndicators() != null && !bo.getPerformanceIndicators().isEmpty()) { - log.info("新增项目申报,同时保存绩效指标,数量:{}", bo.getPerformanceIndicators().size()); - boolean indicatorResult = performanceIndicatorService.batchSave(add.getId(), add.getApplicationNo(), bo.getPerformanceIndicators()); - if (!indicatorResult) { - log.error("保存绩效指标失败,申报ID:{}", add.getId()); - throw new RuntimeException("保存绩效指标失败"); - } -} -``` - -#### 2. 修改 `updateByBo` 方法 -```java -// 处理绩效指标数据 -if (bo.getPerformanceIndicators() != null) { - log.info("修改项目申报,同时更新绩效指标,数量:{}", bo.getPerformanceIndicators().size()); - - // 1. 删除原有绩效指标 - boolean deleteResult = performanceIndicatorService.deleteByApplicationId(bo.getId()); - log.info("删除原有绩效指标结果:{}", deleteResult); - - // 2. 保存新的绩效指标(如果有数据) - if (!bo.getPerformanceIndicators().isEmpty()) { - boolean saveResult = performanceIndicatorService.batchSave(bo.getId(), update.getApplicationNo(), bo.getPerformanceIndicators()); - if (!saveResult) { - log.error("更新绩效指标失败,申报ID:{}", bo.getId()); - throw new RuntimeException("更新绩效指标失败"); - } - log.info("保存新绩效指标成功"); - } else { - log.info("绩效指标为空,仅删除原有数据"); - } -} -``` - -#### 3. 验证 `queryById` 方法 -确认查询方法已正确加载绩效指标数据: -```java -// 获取绩效指标数据 -List performanceIndicators = performanceIndicatorService.queryByApplicationId(id); -vo.setPerformanceIndicators(performanceIndicators); -``` - -### 修改的文件 -- `backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/service/impl/CwProjectApplicationServiceImpl.java` - -### 数据流程修复后的完整链路 -1. **查询时**:正确加载绩效指标数据到VO -2. **新增时**:保存项目申报基本信息 + 批量保存绩效指标 -3. **修改时**:更新项目申报基本信息 + 删除原有绩效指标 + 保存新绩效指标 -4. **前端验证**:form.vue正确收集数据,index.vue正确传递数据 - -### 测试要求 -修改完成后需要重启后端服务,然后测试: -1. 新增项目申报时填写绩效指标,保存后查看数据库 -2. 编辑现有项目申报,修改绩效指标,保存后查看数据库 -3. 查看后端日志,确认绩效指标处理流程正常 - -### 技术要点 -- 使用事务确保数据一致性(@Transactional) -- 利用现有的绩效指标Service方法(batchSave、deleteByApplicationId) -- 添加详细日志方便调试 -- 异常处理确保数据完整性 - ---- - -## 2025-01-27 15:45:00 - 修复编辑时watch函数提升错误 - -### 问题描述 -点击编辑按钮时出现错误:`ReferenceError: Cannot access 'formatDateString' before initialization` - -### 问题根因 -`form.vue` 中的 `watch` 函数在 `formatDateString` 函数定义之前执行,导致函数提升问题。 - -### 修复方案 -重新组织代码结构,将工具函数提前定义: - -#### 修改的文件 -- `web/src/views/cw/application/form.vue` - -#### 主要修改 -1. 将 `formatDateString` 函数移到 `watch` 之前定义 -2. 创建独立的 `updateFormWithData` 函数处理数据更新逻辑 -3. 添加错误处理机制,避免整个组件崩溃 -4. 优化绩效指标数据类型转换(weightPercentage转Number) - -#### 解决的具体问题 -- ✅ 解决 `Cannot access 'formatDateString' before initialization` 错误 -- ✅ 修复 `ElInputNumber` 的类型检查失败问题 -- ✅ 确保绩效指标的 `weightPercentage` 字段正确转换为数字类型 -- ✅ 添加robust的错误处理,避免整个组件崩溃 - ---- - -## 历史记录 -[保持原有的历史记录...] - -## 📋 调整概述 -**调整时间**: 2025-01-27 14:30:00 -**调整人员**: Cursor AI -**涉及模块**: 财务管理 - 预算申报管理 -**调整类型**: 问题修复 - -## 🐛 问题描述 -**问题现象**: 预算申报管理页面统计区域里的数字都显示为0 -**问题原因**: -1. `getStatistics()` 方法从本地 `applicationList` 数组计算统计数据 -2. 页面初始化时 `getList()` 是异步调用,而 `getStatistics()` 立即执行 -3. 当统计执行时,`applicationList` 还是空数组,导致统计数字都是0 -4. 缺少数据操作后的统计更新 - -## 🔧 修复方案 -**解决思路**: 使用专门的统计API接口替代本地计算,并在数据操作后及时更新统计 - -### 具体修改内容 - -#### 1. 导入统计API接口 -**文件**: `web/src/views/cw/application/index.vue` -**修改**: 添加 `getApplicationStatistics` 导入 - -```javascript -// 修改前 -import { listProjectApplication, getProjectApplication, delProjectApplication, addProjectApplication, updateProjectApplication, submitApplication } from "@/api/cw/projectApplication" - -// 修改后 -import { listProjectApplication, getProjectApplication, delProjectApplication, addProjectApplication, updateProjectApplication, submitApplication, getApplicationStatistics } from "@/api/cw/projectApplication" -``` - -#### 2. 重构统计数据获取方法 -**文件**: `web/src/views/cw/application/index.vue` -**修改**: `getStatistics()` 方法使用API接口 - -```javascript -// 修改前:本地计算 -getStatistics() { - this.totalCount = this.applicationList.length - this.approvedCount = this.applicationList.filter(item => item.approvalStatus === 'approved').length - this.pendingCount = this.applicationList.filter(item => item.approvalStatus === 'approving').length - this.draftCount = this.applicationList.filter(item => item.approvalStatus === 'draft').length -} - -// 修改后:API调用 -getStatistics() { - const year = this.queryParams.year ? parseInt(this.queryParams.year) : null - getApplicationStatistics(year).then(response => { - const data = response.data - this.totalCount = data.totalCount || 0 - this.approvedCount = data.approvedCount || 0 - this.pendingCount = data.approvingCount || 0 // 注意:后端返回的是approvingCount - this.draftCount = data.draftCount || 0 - }).catch(error => { - console.error('获取统计数据失败:', error) - // 失败时使用本地计算作为后备方案 - this.totalCount = this.applicationList.length - this.approvedCount = this.applicationList.filter(item => item.approvalStatus === 'approved').length - this.pendingCount = this.applicationList.filter(item => item.approvalStatus === 'approving').length - this.draftCount = this.applicationList.filter(item => item.approvalStatus === 'draft').length - }) -} -``` - -#### 3. 添加统计数据实时更新 -**文件**: `web/src/views/cw/application/index.vue` -**修改**: 在各种操作后添加统计更新 - -```javascript -// 搜索操作 -handleQuery() { - this.queryParams.pageNum = 1 - this.getList() - this.getStatistics() // 新增:搜索时更新统计 -} - -// 新增操作 -addProjectApplication(this.form).then(response => { - this.$modal.msgSuccess("新增成功") - this.open = false - this.getList() - this.getStatistics() // 新增:新增后更新统计 -}) - -// 修改操作 -updateProjectApplication(this.form).then(response => { - this.$modal.msgSuccess("修改成功") - this.open = false - this.getList() - this.getStatistics() // 新增:修改后更新统计 -}) - -// 删除操作 -}).then(() => { - this.getList() - this.getStatistics() // 新增:删除后更新统计 - this.$modal.msgSuccess("删除成功") -}) - -// 提交操作 -}).then(() => { - this.getList() - this.getStatistics() // 新增:提交后更新统计 - this.$modal.msgSuccess("提交成功") -}) - -// 撤回操作 -this.$modal.msgSuccess("撤回成功") -this.getList() -this.getStatistics() // 新增:撤回后更新统计 -``` - -## ✅ 修复效果 -1. **统计数据正确显示**: 使用专门的API接口获取准确的统计数据 -2. **实时数据更新**: 各种操作后统计数据会及时更新 -3. **容错处理**: API失败时有本地计算作为后备方案 -4. **年度筛选支持**: 统计数据支持按年度筛选 - -## 🔗 相关文件 -- **前端页面**: `web/src/views/cw/application/index.vue` -- **API接口**: `web/src/api/cw/projectApplication.ts` -- **后端控制器**: `backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/controller/CwProjectApplicationController.java` - -## 📝 测试建议 -1. 访问预算申报管理页面,确认统计数字正确显示 -2. 执行新增、修改、删除、提交等操作,确认统计数据实时更新 -3. 使用年度筛选功能,确认统计数据按年度正确筛选 -4. 测试网络异常情况下的降级处理 - -## 💡 技术要点 -- **异步处理**: 解决了异步数据加载和同步统计计算的时序问题 -- **API设计**: 利用现有的专门统计API接口,避免前端重复计算 -- **容错机制**: 提供后备方案,确保功能在API异常时仍能工作 -- **实时更新**: 确保用户操作后立即看到最新的统计数据 - ---- - -## 🔄 追加修复 - 统计数据状态值映射错误 - -**追加时间**: 2025-01-27 15:00:00 -**问题发现**: 用户反馈审批中数量仍然显示为0 - -### 🐛 深层问题分析 -经过进一步排查,发现问题不仅是异步加载时序,还有**状态值不匹配**的根本问题: - -1. **数据库存储状态**: 使用字符串 `"draft"`, `"submitted"`, `"approving"`, `"approved"`, `"rejected"` -2. **统计接口查询**: 错误使用数字状态 `"1"`, `"2"`, `"3"`, `"4"`, `"5"` -3. **审批流程逻辑**: 提交后状态为 `"submitted"`,审批流程创建后才变为 `"approving"` -4. **异步处理影响**: 审批流程创建是异步的,导致状态更新有延迟 - -### 🔧 追加修复内容 - -#### 1. 修正统计接口状态值映射 -**文件**: `backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/controller/CwProjectApplicationController.java` - -```java -// 修改前:使用错误的数字状态 -result.put("draftCount", projectApplicationService.countApplications(year, "1")); -result.put("submitCount", projectApplicationService.countApplications(year, "2")); -result.put("approvingCount", projectApplicationService.countApplications(year, "3")); -result.put("approvedCount", projectApplicationService.countApplications(year, "4")); -result.put("rejectedCount", projectApplicationService.countApplications(year, "5")); - -// 修改后:使用正确的字符串状态 -result.put("draftCount", projectApplicationService.countApplications(year, "draft")); -result.put("submitCount", projectApplicationService.countApplications(year, "submitted")); -// 审批中包含已提交和正在审批的申报 -Long submittedCount = projectApplicationService.countApplications(year, "submitted"); -Long approvingCount = projectApplicationService.countApplications(year, "approving"); -result.put("approvingCount", submittedCount + approvingCount); -result.put("approvedCount", projectApplicationService.countApplications(year, "approved")); -result.put("rejectedCount", projectApplicationService.countApplications(year, "rejected")); -``` - -#### 2. 完善审批流程创建逻辑 -**文件**: `backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/service/impl/CwApprovalRecordServiceImpl.java` - -```java -// 新增:审批流程创建成功后,立即更新申报状态为审批中 -if (insertResult) { - boolean updateResult = projectApplicationService.updateApprovalStatus(applicationId, "approving"); - log.info("审批流程创建成功,申报状态已更新为审批中:applicationId={}, updateResult={}", applicationId, updateResult); - return updateResult; -} -``` - -#### 3. 优化部门统计SQL查询 -**文件**: `backend/ruoyi-modules/ruoyi-cw/src/main/resources/mapper/CwProjectApplicationMapper.xml` - -```xml - -count(case when a.approval_status = '4' then 1 end) as approved_count - - -count(case when a.approval_status = 'approved' then 1 end) as approved_count, -count(case when a.approval_status in ('submitted', 'approving') then 1 end) as approving_count, -count(case when a.approval_status = 'rejected' then 1 end) as rejected_count -``` - -#### 4. 优化月度统计SQL查询 -**文件**: `backend/ruoyi-modules/ruoyi-cw/src/main/resources/mapper/CwProjectApplicationMapper.xml` -- 同样修正状态值映射 -- 增加审批中和已拒绝的统计 - -### ✅ 修复效果增强 -1. **状态值完全匹配**: 统计接口与数据库状态值完全一致 -2. **审批中计算准确**: 包含已提交(`submitted`)和正在审批(`approving`)的申报 -3. **实时状态更新**: 审批流程创建后立即更新申报状态 -4. **统计数据完整**: 部门统计和月度统计也包含完整的状态信息 - -### 💡 技术改进要点 -- **状态值统一**: 全部使用字符串状态,避免数字映射错误 -- **业务逻辑优化**: 审批中状态包含提交和审批两个阶段 -- **异步处理改进**: 确保审批流程创建后状态立即更新 -- **SQL查询优化**: 统计查询包含更完整的状态信息 - ---- - -**状态**: ✅ 已完成 -**验证**: 🔄 待测试 -**影响范围**: 财务管理 - 预算申报管理页面统计功能(完整修复) - -## 🔧 审批按钮权限修复 (2025-01-27 16:45:00) - -### 问题描述 -- 前端显示数据成功,但审批操作按钮不显示 -- 分析发现两个问题:状态判断条件和权限检查不匹配 - -### 问题根因 -1. **状态条件不匹配**: 数据库返回状态为 `waiting`,但前端条件只检查 `submitted` 和 `approving` -2. **权限配置不匹配**: 前端检查 `cw:application:approve`,但用户实际拥有 `cw:approval:process` - -### 修改内容 - -#### 修复1: 状态判断条件 -**文件**: `web/src/views/cw/approvalRecord/index.vue` - -**修改前**: -```html -