diff --git a/backend/ruoyi-admin/src/main/java/org/dromara/zhxy/service/impl/PmRepairOrderServiceImpl.java b/backend/ruoyi-admin/src/main/java/org/dromara/zhxy/service/impl/PmRepairOrderServiceImpl.java index 75c54a3d..efff242e 100644 --- a/backend/ruoyi-admin/src/main/java/org/dromara/zhxy/service/impl/PmRepairOrderServiceImpl.java +++ b/backend/ruoyi-admin/src/main/java/org/dromara/zhxy/service/impl/PmRepairOrderServiceImpl.java @@ -932,10 +932,12 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService { String currentUserName = loginUser.getUsername(); // 7. 创建服务评价记录 + Date evaluationTime = new Date(); PmServiceEvaluation evaluation = new PmServiceEvaluation(); evaluation.setOrderId(orderId); evaluation.setEvaluatorId(currentUserId); evaluation.setEvaluatorName(currentUserName); + evaluation.setEvaluationTime(evaluationTime); // 设置评价时间 // 设置被评价维修员信息 evaluation.setEvaluatedWorkerId(Long.valueOf(evaluationData.get("evaluatedWorkerId").toString())); @@ -991,7 +993,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService { updateOrder.setId(orderId); updateOrder.setOrderStatus("5"); // 已评价 updateOrder.setEvaluationScore(evaluation.getOverallScore()); - updateOrder.setEvaluationTime(new Date()); + updateOrder.setEvaluationTime(evaluationTime); // 使用相同的评价时间 boolean orderUpdated = baseMapper.updateById(updateOrder) > 0; if (!orderUpdated) { @@ -1008,7 +1010,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService { evaluationProgress.setOperatorId(currentUserId); evaluationProgress.setOperatorName(currentUserName); evaluationProgress.setOperatorRole("user"); - evaluationProgress.setOperationTime(new Date()); + evaluationProgress.setOperationTime(evaluationTime); // 使用相同的评价时间 evaluationProgress.setRemark("满意度等级:" + evaluation.getSatisfactionLevel()); repairProgressMapper.insert(evaluationProgress); diff --git a/docs/变更管理/code-adjust-record-2025-06-30-wuzilong.md b/docs/变更管理/code-adjust-record-2025-06-30-wuzilong.md index 429e1b77..c0654d35 100644 --- a/docs/变更管理/code-adjust-record-2025-06-30-wuzilong.md +++ b/docs/变更管理/code-adjust-record-2025-06-30-wuzilong.md @@ -4,6 +4,88 @@ > 👤 **记录人员**: wuzilong > 📌 **排序说明**: 本文件按照时间倒序排列,最新的变更记录在最上面 +## 调整记录 - 2025-06-30 22:50:00 + +**变更 ID**: CHG-20250630-012 +**变更时间**: 2025-06-30 22:50:00 +**变更人员**: wuzilong/Cursor AI 辅助 +**变更类型**: 🐛 Bug 修复 +**影响级别**: 🟢 小变更 + +### 📋 变更概述 + +**变更目的**: 修复评价接口中 evaluation_time 字段未设置导致的数据库插入错误 +**影响范围**: 后端服务评价数据插入逻辑 + +### 📁 涉及文件 + +**后端文件**: + +- backend/ruoyi-admin/src/main/java/org/dromara/zhxy/service/impl/PmRepairOrderServiceImpl.java + +### 🔧 变更内容详述 + +**问题分析**: + +1. **错误信息**: `Field 'evaluation_time' doesn't have a default value` +2. **根本原因**: 在创建 PmServiceEvaluation 记录时,没有设置 evaluationTime 字段的值 +3. **表现症状**: 前端显示评价提交失败,数据库插入操作因缺少必填字段而失败 + +**修复方案**: + +1. **设置评价时间字段**: + + ```java + // 修复前:缺少 evaluationTime 设置 + PmServiceEvaluation evaluation = new PmServiceEvaluation(); + // ... 其他字段设置 + + // 修复后:正确设置 evaluationTime + Date evaluationTime = new Date(); + PmServiceEvaluation evaluation = new PmServiceEvaluation(); + evaluation.setEvaluationTime(evaluationTime); // 设置评价时间 + ``` + +2. **确保时间一致性**: + - 评价记录的 `evaluationTime` 字段 + - 工单记录的 `evaluationTime` 字段 + - 进度记录的 `operationTime` 字段 + - 三处使用相同的时间值,确保数据一致性 + +### 🧪 测试验证 + +**功能测试**: + +- [x] ✅ 评价数据正确保存到数据库 +- [x] ✅ evaluation_time 字段正确设置 +- [x] ✅ 时间字段在相关表中保持一致 + +**错误处理测试**: + +- [x] ✅ 不再出现数据库字段缺失错误 +- [x] ✅ 评价提交成功响应正常 + +### 📝 备注 + +**技术实现**: + +1. **字段补全**: 确保所有必填的数据库字段都有对应的值设置 +2. **时间一致性**: 使用同一个 Date 对象设置相关的时间字段 +3. **数据完整性**: 保证评价记录的完整性和准确性 + +**修复前的问题**: + +- ❌ 数据库插入失败,提示 evaluation_time 字段没有默认值 +- ❌ 前端评价提交失败,用户无法完成评价操作 + +**修复后的效果**: + +- ✅ 评价数据正确插入数据库 +- ✅ 所有时间字段保持一致 +- ✅ 前端评价功能正常工作 + +--- + ## 调整记录 - 2025-06-30 22:45:00 **变更 ID**: CHG-20250630-011