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