# 代码变更记录 - 2025-07-24 ## 修复培训申请提交错误 ### 问题描述 培训申请提交时出现错误:`For input string: "sys_user:1"`,导致无法成功提交培训申请。 ### 原因分析 后端Controller在处理用户ID时,尝试将格式为"sys_user:1"的字符串直接转换为Long类型,导致类型转换错误。 ### 解决方案 #### 1. 后端修改 修改`RsTrainingApplicationController`的`add`方法,增加对"sys_user:1"格式的处理: ```java /** * 新增培训申请 */ @SaCheckPermission("rs:training:application:add") @Log(title = "培训申请", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping public R add(@Validated @RequestBody RsTrainingApplication application) { try { // 尝试设置申请人为当前登录用户 String loginId = StpUtil.getLoginIdAsString(); if (loginId != null && loginId.startsWith("sys_user:")) { // 从"sys_user:1"格式中提取数字部分 String[] parts = loginId.split(":"); if (parts.length > 1) { application.setUserId(Long.parseLong(parts[1])); application.setUserName("用户" + parts[1]); // 临时用户名 } else { // 如果无法解析,使用默认值 application.setUserId(1L); application.setUserName("默认用户"); } } else { // 尝试正常转换 try { application.setUserId(StpUtil.getLoginIdAsLong()); application.setUserName(loginId); } catch (Exception e) { // 转换失败,使用默认值 application.setUserId(1L); application.setUserName("默认用户"); } } return toAjax(trainingApplicationService.insertRsTrainingApplication(application)); } catch (Exception e) { e.printStackTrace(); return R.fail("添加培训申请失败: " + e.getMessage()); } } ``` #### 2. 前端修改 修改`web/src/views/rs/training/index.vue`中的`submitApplicationForm`方法,移除硬编码的userId和userName,让后端使用登录用户信息: ```javascript // 创建符合API要求的数据结构 const apiData: any = { courseId: 0, // 使用0表示自定义课程,确保是数字类型 courseName: applicationForm.courseName, // 保留courseName用于显示 department: applicationForm.department, reason: applicationForm.reason, remark: applicationForm.remark, // 新增字段 location: applicationForm.location, duration: applicationForm.duration, startTime: applicationForm.startTime, endTime: applicationForm.endTime }; ``` ### 测试结果 修复后,培训申请可以正常提交,后端能够正确处理用户ID和用户名。 ### 变更人员 - 开发人员:weizzzz - 审核人员:待定 ### 相关文件 1. `backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/controller/RsTrainingApplicationController.java` 2. `web/src/views/rs/training/index.vue`