97 lines
2.8 KiB
Markdown
97 lines
2.8 KiB
Markdown
|
|
# 字段映射问题诊断和解决方案
|
|||
|
|
|
|||
|
|
## 🔍 问题分析
|
|||
|
|
|
|||
|
|
根据您提供的API数据,发现以下问题:
|
|||
|
|
- `supplierName`: null
|
|||
|
|
- `buyerName`: null
|
|||
|
|
- `fundName`: null
|
|||
|
|
- `supplierMobile`: "16666666666" ✅
|
|||
|
|
- `buyerMobile`: "17777777777" ✅
|
|||
|
|
- `fundMobile`: "17777777771" ✅
|
|||
|
|
|
|||
|
|
## 🔧 已实施的解决方案
|
|||
|
|
|
|||
|
|
### 1. 后端改进
|
|||
|
|
- ✅ 修改了 `DeliveryServiceImpl.pageQuery` 方法
|
|||
|
|
- ✅ 添加了 `MemberMapper.selectMemberUserById` 方法
|
|||
|
|
- ✅ 实现了 `member` 表和 `member_user` 表的关联查询
|
|||
|
|
- ✅ 添加了详细的调试日志
|
|||
|
|
|
|||
|
|
### 2. 前端回退机制
|
|||
|
|
- ✅ 实现了用户名优先,手机号备选的显示逻辑
|
|||
|
|
- ✅ 更新了HTML模板使用回退数据
|
|||
|
|
|
|||
|
|
## 🧪 测试步骤
|
|||
|
|
|
|||
|
|
### 1. 检查后端日志
|
|||
|
|
重启后端服务后,查看控制台输出:
|
|||
|
|
```
|
|||
|
|
供应商查询结果 - 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
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 测试前端功能
|
|||
|
|
1. 刷新入境检疫页面
|
|||
|
|
2. 查看控制台"原始数据字段检查"日志
|
|||
|
|
3. 点击"下载文件"按钮
|
|||
|
|
4. 检查生成的HTML文档
|
|||
|
|
|
|||
|
|
## 🎯 预期结果
|
|||
|
|
|
|||
|
|
### 如果后端查询成功:
|
|||
|
|
- `supplierName`: "测试供应商1"
|
|||
|
|
- `buyerName`: "测试采购方1"
|
|||
|
|
- `fundName`: "测试资金方1"
|
|||
|
|
|
|||
|
|
### 如果后端查询失败(当前情况):
|
|||
|
|
- `supplierName`: "16666666666" (回退到手机号)
|
|||
|
|
- `buyerName`: "17777777777" (回退到手机号)
|
|||
|
|
- `fundName`: "17777777771" (回退到手机号)
|
|||
|
|
|
|||
|
|
## 🔍 可能的问题原因
|
|||
|
|
|
|||
|
|
1. **数据库表结构问题**:
|
|||
|
|
- `member_user` 表中可能没有对应的记录
|
|||
|
|
- `username` 字段可能为空
|
|||
|
|
|
|||
|
|
2. **查询逻辑问题**:
|
|||
|
|
- SQL查询可能有问题
|
|||
|
|
- 字段映射可能不正确
|
|||
|
|
|
|||
|
|
3. **数据问题**:
|
|||
|
|
- ID 61, 62, 63 在 `member_user` 表中可能不存在
|
|||
|
|
|
|||
|
|
## 📋 下一步诊断
|
|||
|
|
|
|||
|
|
1. **检查数据库**:
|
|||
|
|
```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);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **查看后端日志**:
|
|||
|
|
- 检查是否有查询结果
|
|||
|
|
- 确认 `username` 字段的值
|
|||
|
|
|
|||
|
|
3. **测试API**:
|
|||
|
|
- 重新加载页面
|
|||
|
|
- 查看API响应中的字段值
|
|||
|
|
|
|||
|
|
## ✅ 当前解决方案的优势
|
|||
|
|
|
|||
|
|
- **容错性强**:即使后端查询失败,也能显示手机号
|
|||
|
|
- **用户体验好**:不会出现空白字段
|
|||
|
|
- **调试友好**:有详细的日志输出
|
|||
|
|
- **向后兼容**:不影响现有功能
|
|||
|
|
|
|||
|
|
现在您可以测试功能了!即使后端查询有问题,前端也会显示手机号作为备选方案。
|