3.1 KiB
3.1 KiB
字段映射优化完成报告
✅ 问题分析
根据您提供的API数据结构,发现了以下问题:
buyerName、supplierName、fundName字段都是null- 需要通过
buyerId、supplierId、fundId关联查询member_user表获取username - 需要实现
username/手机号格式的字段映射
🔧 后端改进
1. 修改 DeliveryServiceImpl.pageQuery 方法
- ✅ 添加了对
member_user表的关联查询 - ✅ 实现了供应商、资金方、采购商用户名的查询
- ✅ 支持逗号分隔的供应商ID处理
2. 新增 MemberMapper.selectMemberUserById 方法
@Select("SELECT m.id, m.mobile, mu.username " +
"FROM member m " +
"LEFT JOIN member_user mu ON m.id = mu.member_id " +
"WHERE m.id = #{memberId}")
Map<String, Object> selectMemberUserById(@Param("memberId") Integer memberId);
3. 字段映射逻辑
- 供应商: 查询
supplierId→member_user.username+member.mobile - 资金方: 查询
fundId→member_user.username+member.mobile - 采购商: 查询
buyerId→member_user.username+member.mobile
🎨 前端改进
1. 增强字段映射
- ✅ 优先使用
username,如果没有则使用mobile - ✅ 添加了详细的调试日志
- ✅ 支持用户名/手机号的回退显示
2. HTML模板优化
// 供货单位显示逻辑
<td>${data.supplierName || row.supplierMobile || ''}</td>
// 收货单位显示逻辑
<td>${data.buyerName || row.buyerMobile || ''}</td>
📊 数据流程
原始数据
{
"supplierId": "61",
"buyerId": 62,
"fundId": 63,
"supplierName": null,
"buyerName": null,
"fundName": null
}
处理后数据
{
"supplierId": "61",
"buyerId": 62,
"fundId": 63,
"supplierName": "供应商用户名",
"buyerName": "采购商用户名",
"fundName": "资金方用户名",
"supplierMobile": "16666666666",
"buyerMobile": "17777777777",
"fundMobile": "17777777771"
}
🧪 测试步骤
- 重启后端服务:确保新的查询逻辑生效
- 刷新前端页面:重新加载入境检疫列表
- 检查控制台日志:查看"原始数据字段检查"输出
- 测试导出功能:点击"下载文件"按钮
- 验证字段显示:确认用户名正确显示
🎯 预期结果
- ✅
supplierName、buyerName、fundName字段不再为null - ✅ Word导出文档中正确显示用户名
- ✅ 如果用户名为空,则显示手机号作为备选
- ✅ 所有计算字段(总重量、单价、总金额)正确计算
📝 注意事项
- 数据库依赖:确保
member_user表中有对应的用户记录 - 字段回退:如果
username为空,会自动使用mobile字段 - 逗号分隔:供应商ID支持多个值,用逗号分隔
- 错误处理:添加了异常处理,避免查询失败影响整体功能
现在您可以测试更新后的功能了!后端会正确查询用户名,前端会优先显示用户名,如果没有用户名则显示手机号。