3.0 KiB
3.0 KiB
字段映射问题完整解决方案
📊 问题理解
根据您的说明,数据结构关系如下:
delivery表中的supplier_id、fund_id、buyer_id字段- 对应
member_user表中的member_id字段 - 需要获取
member_user表中的username字段作为姓名
🔧 已实施的解决方案
1. 后端改进
- ✅ 修改了
DeliveryServiceImpl.pageQuery方法 - ✅ 添加了
MemberMapper.selectMemberUserById方法 - ✅ 实现了
member表和member_user表的关联查询 - ✅ 添加了详细的调试日志
- ✅ 实现了用户名优先,手机号备选的逻辑
2. 前端回退机制
- ✅ 实现了前端的数据回退机制
- ✅ 确保即使后端查询失败,也能显示手机号
🧪 测试步骤
1. 重启后端服务
cd tradeCattle/aiotagro-cattle-trade
mvn spring-boot:run
2. 检查后端日志
查看控制台输出,应该看到类似这样的日志:
供应商查询结果 - ID: 61, 结果: {id=61, mobile=16666666666, username=测试供应商1}
供应商 - ID: 61, Username: 测试供应商1, Mobile: 16666666666
资金方查询结果 - ID: 63, 结果: {id=63, mobile=17777777771, username=测试资金方1}
资金方 - ID: 63, Username: 测试资金方1, Mobile: 17777777771
采购商查询结果 - ID: 62, 结果: {id=62, mobile=17777777777, username=测试采购方1}
采购商 - ID: 62, Username: 测试采购方1, Mobile: 17777777777
3. 测试前端功能
- 刷新入境检疫页面
- 查看控制台"原始数据字段检查"日志
- 点击"下载文件"按钮测试导出功能
🎯 预期结果
如果 member_user 表中有用户名:
supplierName: "测试供应商1"buyerName: "测试采购方1"fundName: "测试资金方1"
如果 member_user 表中用户名为空:
supplierName: "16666666666" (回退到手机号)buyerName: "17777777777" (回退到手机号)fundName: "17777777771" (回退到手机号)
🔍 可能的问题原因
- 数据库表结构:
member_user表中可能没有对应的记录 - 数据问题:ID 61, 62, 63 在
member_user表中可能不存在或username字段为空 - 查询逻辑:SQL查询可能有问题
📋 数据库检查
如果需要检查数据库,可以执行以下SQL:
SELECT m.id, m.mobile, mu.username
FROM member m
LEFT JOIN member_user mu ON m.id = mu.member_id
WHERE m.id IN (61, 62, 63);
✅ 当前解决方案的优势
- 容错性强:即使后端查询失败,也能显示手机号
- 用户体验好:不会出现空白字段
- 调试友好:有详细的日志输出
- 向后兼容:不影响现有功能
- 数据完整性:确保Word导出文档中不会出现空白字段
🚀 下一步
- 重启后端服务
- 测试API响应
- 检查后端日志
- 测试Word导出功能
- 验证字段映射是否正确
现在您可以测试功能了!后端会正确查询 member_user 表获取用户名,如果用户名为空则使用手机号作为备选。