Files
cattleTransportation/pc-cattle-transportation/FIELD_MAPPING_OPTIMIZATION_REPORT.md
2025-10-21 17:29:52 +08:00

3.1 KiB
Raw Blame History

字段映射优化完成报告

问题分析

根据您提供的API数据结构发现了以下问题

  • buyerNamesupplierNamefundName 字段都是 null
  • 需要通过 buyerIdsupplierIdfundId 关联查询 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. 字段映射逻辑

  • 供应商: 查询 supplierIdmember_user.username + member.mobile
  • 资金方: 查询 fundIdmember_user.username + member.mobile
  • 采购商: 查询 buyerIdmember_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"
}

🧪 测试步骤

  1. 重启后端服务:确保新的查询逻辑生效
  2. 刷新前端页面:重新加载入境检疫列表
  3. 检查控制台日志:查看"原始数据字段检查"输出
  4. 测试导出功能:点击"下载文件"按钮
  5. 验证字段显示:确认用户名正确显示

🎯 预期结果

  • supplierNamebuyerNamefundName 字段不再为 null
  • Word导出文档中正确显示用户名
  • 如果用户名为空,则显示手机号作为备选
  • 所有计算字段(总重量、单价、总金额)正确计算

📝 注意事项

  1. 数据库依赖:确保 member_user 表中有对应的用户记录
  2. 字段回退:如果 username 为空,会自动使用 mobile 字段
  3. 逗号分隔供应商ID支持多个值用逗号分隔
  4. 错误处理:添加了异常处理,避免查询失败影响整体功能

现在您可以测试更新后的功能了!后端会正确查询用户名,前端会优先显示用户名,如果没有用户名则显示手机号。