发货-FBA发货规划
FBA发货规划页面详细帮助文档
1. 页面概述
FBA发货规划页面是Wimoor系统中用于管理和规划亚马逊FBA发货的核心功能模块。该页面提供了全面的产品发货数据展示、库存分析、发货计划管理等功能,帮助用户制定合理的FBA发货策略,优化库存管理,提高运营效率。
主要功能亮点:
- 产品发货数据的可视化展示
- 智能库存分析和预警
- 灵活的发货计划管理
- 多维度数据报表
- 详细的库存和发货记录查询
页面位置: wimoor666\wimoor-ui\src\views\erp\ship\ship_plan\index.vue
2. 功能模块
2.1 头部搜索和筛选模块
头部模块包含各种搜索和筛选条件,用于精确查询需要管理的产品数据。
核心功能:
- 仓库选择
- 店铺/站点筛选
- 产品状态筛选
- 搜索条件设置
- 数据汇总统计
2.2 产品列表模块
产品列表是页面的核心部分,展示了所有符合条件的产品信息,支持排序、筛选和展开查看详情。
核心功能:
- 产品基本信息展示(SKU、名称、标签等)
- 发货需求量和实际发货总量显示
- 可用库存和可组装库存信息
- 批量展开/折叠操作
- 行点击事件处理
2.3 展开详情模块
点击产品行展开按钮,可查看该产品的详细发货计划信息,支持编辑和管理发货计划。
核心功能:
- 按国家/地区展示发货计划
- 发货数量编辑
- 运输方式选择
- 海外仓选择
- 发货计划拆分
2.4 报表和分析模块
提供产品销量和预计到货的可视化报表,帮助用户分析销售趋势和库存状况。
核心功能:
- 销量报表(柱状图)
- 预计到货报表(折线图)
- 库存差异分析(FBA库存差异图表)
2.5 辅助功能模块
页面还包含多种辅助功能,增强用户操作体验和数据管理能力。
核心功能:
- 备货周期管理
- 库存详情查询
- 库存库龄分析
- 产品备注管理
- 产品组装管理
3. 核心功能解析
3.1 发货计划管理
功能描述: 允许用户为产品创建、编辑和删除发货计划,支持按国家/地区细分。
实现原理:
- 通过
planApi.getPlanList获取产品列表数据 - 点击"编辑"按钮进入编辑模式
- 在展开的详情表格中设置发货数量和运输方式
- 点击"保存"按钮通过
planApi.save保存发货计划 - 点击"移除"按钮通过
planApi.remove删除发货计划
关键代码:
- 加载数据:
loadTableData函数(800行) - 保存计划:
savePlanItem函数(940行) - 提交表单:
submitForm函数(952行) - 删除计划:
handleDelete函数(929行)
3.2 库存分析和预警
功能描述: 提供产品库存的详细分析,包括可用库存、预留库存、待入库库存等信息,并通过图表展示库存差异。
实现原理:
- 通过
inventoryApi.getInventory获取库存数据 - 通过
inventoryRptApi.syncInventorySupply同步FBA库存 - 点击库存数量查看详细库存信息
- 点击FBA库存差异图表查看库存差异分析
关键代码:
- 刷新库存:
refreshInventory函数(563行) - 库存图表:
FBAinventoryChart函数(490行) - 查看库存详情:
handleShowInventory函数(1245行)
3.3 发货计划拆分
功能描述: 支持将一个发货计划拆分为多个子计划,适用于不同运输方式或不同批次的发货需求。
实现原理:
- 点击"拆分"按钮打开拆分对话框
- 设置拆分后的子计划数量和运输方式
- 保存拆分结果并更新主计划
关键代码:
- 显示拆分对话框:
showSplitRow函数(38行) - 处理拆分结果:
handleSplitRow函数(764行) - 计划拆分API:
planApi.subsplit调用(882行)
3.4 销量和到货分析
功能描述: 通过图表展示产品的销量趋势和预计到货情况,帮助用户做出更合理的发货决策。
实现原理:
- 点击销量报表图标打开销量图表对话框
- 点击预计到货报表图标打开到货图表对话框
- 图表数据通过后端API获取并使用ECharts渲染
关键代码:
- 销量报表:
handlesaleChart函数(684行) - 到货报表:
handlarrivalChart函数(784行)
3.5 产品组装管理
功能描述: 对于组合产品,显示其组成部分和可组装数量,帮助用户了解组合产品的库存状况。
实现原理:
- 点击组合产品标签查看组装详情
- 通过
sublitAPI获取组装部件信息 - 显示可组装数量和部件库存状态
关键代码:
- 显示组装对话框:
handleAssemblyShow函数(549行) - 获取组装列表:
getAssembliyList函数(609行)
4. 前端API调用
4.1 核心API调用
| API名称 | 调用函数 | 功能描述 | 参数说明 | 调用位置 |
|---|---|---|---|---|
| 获取计划列表 | planApi.getPlanList |
获取产品发货计划列表 | {plantype: "ship", ...筛选条件} |
800行 |
| 获取国家数据 | planApi.getExpandCountryData |
获取产品按国家细分的发货数据 | {groupid, msku, warehouseid, plantype, ...} |
709行, 1197行 |
| 保存发货计划 | planApi.save |
保存产品发货计划 | [发货计划对象列表] |
941行 |
| 删除发货计划 | planApi.remove |
删除产品发货计划 | {warehouseid, msku, groupid} |
931行 |
| 计划拆分 | planApi.subsplit |
获取计划拆分数据 | {发货计划对象} |
882行 |
| 同步库存 | inventoryRptApi.syncInventorySupply |
同步FBA库存数据 | {skus, groupid, marketplaceid} |
566行 |
| 获取库存 | inventoryApi.getInventory |
获取产品库存数据 | {warehouseid, materialid} |
638行 |
| 获取海外仓 | warehouseApi.getOversaWarehouse |
获取可用海外仓列表 | {ftype: "oversea_usable", groupid, country} |
620行 |
| 获取运输方式 | transportationApi.getTransTypeAll |
获取所有运输方式 | 无 | 1223行 |
| 隐藏产品 | markApi.hide |
隐藏产品 | {materialid} |
1065行 |
| 显示产品 | markApi.show |
显示产品 | {materialid} |
1079行 |
| 获取组装列表 | sublit |
获取产品组装部件列表 | {materialid, warehouseid} |
612行 |
4.2 API依赖文件
| API文件 | 路径 | 功能描述 |
|---|---|---|
| planApi.js | @/api/erp/ship/planApi.js |
发货计划相关API |
| inventoryApi.js | @/api/erp/inventory/inventoryApi.js |
库存相关API |
| inventoryRptApi.js | @/api/amazon/inventory/inventoryRptApi.js |
库存报表相关API |
| warehouseApi.js | @/api/erp/warehouse/warehouseApi.js |
仓库相关API |
| transportationApi.js | @/api/erp/ship/transportationApi.js |
运输方式相关API |
| markApi.js | @/api/erp/material/markApi.js |
产品标记相关API |
| assemblyApi.js | @/api/erp/assembly/assemblyApi.js |
产品组装相关API |
5. 后端API实现
5.1 发货计划控制器
控制器路径: wimoor666\wimoor-amazon\amazon-boot\src\main\java\com\wimoor\amazon\product\controller\AmzProductSalesPlanController.java
核心接口:
| API路径 | 方法 | 功能描述 | 请求参数 | 响应结果 |
|---|---|---|---|---|
/api/v1/product/salesplan/refreshPlanData |
GET | 计划数据刷新 | 无 | 成功状态 |
/api/v1/product/salesplan/refreshDataByGroup |
GET | 按店铺刷新计划 | groupid |
成功状态 |
/api/v1/product/salesplan/refreshDataBySKU |
GET | 按SKU刷新计划 | groupid, marketplaceid, sku |
成功状态 |
/api/v1/product/salesplan/getExpandCountryData |
POST | 获取国家细分数据 | PlanDetailDTO |
国家细分数据列表 |
/api/v1/product/salesplan/getPlanModel |
POST | 获取计划模型数据 | PlanDTO |
计划数据分页列表 |
5.2 发货计划项目控制器
控制器路径: wimoor666\wimoor-amazon\amazon-boot\src\main\java\com\wimoor\amazon\product\controller\AmzProductSalesPlanShipItemController.java
核心接口:
| API路径 | 方法 | 功能描述 | 请求参数 | 响应结果 |
|---|---|---|---|---|
/api/v1/product/salesplan/shipItem/save |
POST | 保存发货计划项目 | List<AmzProductSalesPlanShipItem> |
保存数量 |
/api/v1/product/salesplan/shipItem/remove |
DELETE | 删除发货计划项目 | groupid, warehouseid, msku |
成功状态 |
/api/v1/product/salesplan/shipItem/subsplit |
POST | 计划拆分 | AmzProductSalesPlanShipItem |
拆分后的计划列表 |
/api/v1/product/salesplan/shipItem/clear |
GET | 清除计划 | groupid, warehouseid |
成功状态 |
/api/v1/product/salesplan/shipItem/getSummary |
GET | 获取计划汇总 | groupid, warehouseid |
汇总数据 |
/api/v1/product/salesplan/shipItem/list |
GET | 获取计划列表 | groupid, warehouseid |
计划列表 |
/api/v1/product/salesplan/shipItem/batch |
POST | 计划打包 | List<AmzProductSalesPlanShipItem> |
批次号 |
/api/v1/product/salesplan/shipItem/removeBatch |
POST | 计划归档 | batchnumber |
成功状态 |
6. 数据模型
6.1 发货计划项目实体
实体类: AmzProductSalesPlanShipItem
表名: t_amz_product_sales_plan_ship_item
| 字段名 | 数据类型 | 描述 |
|---|---|---|
| id | BigInteger | 主键ID |
| sku | String | 产品SKU |
| msku | String | 主SKU |
| shopid | BigInteger | 店铺ID |
| marketplaceid | String | 市场ID |
| groupid | BigInteger | 分组ID |
| amazonauthid | BigInteger | 亚马逊授权ID |
| warehouseid | BigInteger | 仓库ID |
| overseaid | BigInteger | 海外仓ID |
| transtype | BigInteger | 运输方式ID |
| batchnumber | String | 批次号 |
| amount | Integer | 数量 |
| aftersalesday | Integer | 售后天数 |
| opttime | LocalDateTime | 操作时间 |
| operator | BigInteger | 操作人ID |
| isdefault | Boolean | 是否默认 |
| subnum | Integer | 子计划数量(非数据库字段) |
| subList | List<AmzProductSalesPlanShipItem> | 子计划列表(非数据库字段) |
6.2 产品销售计划实体
实体类: AmzProductSalesPlan
表名: t_amz_product_sales_plan
| 字段名 | 数据类型 | 描述 |
|---|---|---|
| id | BigInteger | 主键ID |
| sku | String | 产品SKU |
| msku | String | 主SKU |
| shopid | BigInteger | 店铺ID |
| marketplaceid | String | 市场ID |
| groupid | BigInteger | 分组ID |
| amazonauthid | BigInteger | 亚马逊授权ID |
| shipday | Integer | 发货天数 |
| salesday | Integer | 销售天数 |
| deliveryCycle | Integer | 交付周期 |
| needship | Integer | 需要发货数量 |
| shipMinCycleSale | Integer | 最小发货周期销量 |
| needshipfba | Integer | FBA需要发货数量 |
| avgsales | Integer | 平均销量 |
| needpurchase | Integer | 需要采购数量 |
| opttime | Date | 操作时间 |
| shortTime | LocalDate | 短缺时间 |
7. 业务流程
7.1 发货计划创建流程
- 数据加载:用户设置筛选条件,系统通过
planApi.getPlanList获取产品列表数据 - 选择产品:用户在产品列表中找到需要创建发货计划的产品
- 编辑计划:点击"编辑"按钮,进入编辑模式
- 设置参数:在展开的详情表格中,设置各国家/地区的发货数量、运输方式等参数
- 保存计划:点击"保存"按钮,系统通过
planApi.save保存发货计划 - 数据更新:保存成功后,系统更新产品列表中的发货状态和数据
7.2 库存分析流程
- 数据获取:系统通过
inventoryApi.getInventory获取产品库存数据 - 库存计算:计算可用库存、可组装库存等关键指标
- 状态判断:根据库存数据判断产品库存状态
- 预警提示:对库存不足的产品进行预警提示
- 数据展示:在产品列表中展示库存状态和相关数据
7.3 计划拆分流程
- 选择计划:在展开的详情表格中,找到需要拆分的发货计划
- 点击拆分:点击"拆分"按钮,打开拆分对话框
- 设置参数:在对话框中设置拆分后的子计划数量、运输方式等参数
- 确认拆分:点击"确认"按钮,系统通过
planApi.subsplit处理拆分数据 - 更新计划:拆分完成后,系统更新发货计划数据
8. 操作指南
8.1 基本操作
8.1.1 搜索和筛选产品
- 在页面顶部的搜索栏中设置筛选条件
- 选择仓库、店铺、站点等筛选条件
- 点击"查询"按钮,系统会根据条件加载产品数据
8.1.2 查看产品详情
- 在产品列表中找到需要查看的产品
- 点击产品行左侧的展开按钮,或点击"展开全部"按钮查看所有产品详情
- 在展开的详情表格中查看产品的详细发货数据
8.1.3 创建发货计划
- 找到需要创建发货计划的产品,点击"编辑"按钮
- 在展开的详情表格中,为各国家/地区设置发货数量
- 选择合适的运输方式和海外仓(如需)
- 点击"保存"按钮,完成发货计划创建
8.1.4 修改发货计划
- 找到需要修改的发货计划,点击"编辑"按钮
- 修改发货数量、运输方式等参数
- 点击"保存"按钮,完成发货计划修改
8.1.5 删除发货计划
- 找到需要删除的发货计划,点击"移除"按钮
- 在弹出的确认对话框中点击"确定",完成发货计划删除
8.2 高级操作
8.2.1 查看销量报表
- 在产品列表中找到需要查看销量的产品
- 点击产品行中的销量报表图标(柱状图)
- 在弹出的销量报表对话框中查看详细的销量数据
8.2.2 查看预计到货报表
- 在产品列表中找到需要查看预计到货的产品
- 点击产品行中的预计到货报表图标(折线图)
- 在弹出的预计到货报表对话框中查看详细的到货数据
8.2.3 查看库存详情
- 在产品列表中找到需要查看库存的产品
- 点击产品行中的可用库存数量
- 在弹出的库存详情对话框中查看详细的库存数据
8.2.4 计划拆分
- 在展开的详情表格中,找到需要拆分的发货计划
- 点击"拆分"按钮,打开拆分对话框
- 设置拆分后的子计划数量、运输方式等参数
- 点击"确认"按钮,完成计划拆分
8.2.5 产品组装管理
- 在产品列表中找到需要查看组装信息的组合产品(带有"组合"标签)
- 点击"组合"标签,打开组装产品对话框
- 在对话框中查看产品的组装部件和可组装数量
9. 常见问题
9.1 库存数据不准确
问题描述:产品列表中显示的库存数据与实际库存不符
解决方法:
- 点击库存数量旁边的刷新图标,手动同步FBA库存数据
- 检查库存数据来源是否正确
- 确认仓库选择是否正确
9.2 无法保存发货计划
问题描述:点击"保存"按钮后,发货计划无法保存
解决方法:
- 检查发货数量是否超过可用库存
- 确认运输方式和海外仓选择是否正确
- 检查网络连接是否正常
- 刷新页面后重新尝试
9.3 计划拆分失败
问题描述:点击"拆分"按钮后,计划拆分失败
解决方法:
- 检查发货计划数据是否完整
- 确认拆分参数设置是否合理
- 刷新页面后重新尝试
9.4 报表数据加载缓慢
问题描述:点击报表图标后,报表数据加载缓慢
解决方法:
- 检查网络连接是否正常
- 确认产品数据量是否过大
- 尝试减少时间范围,查看数据量较小的报表
9.5 产品无法隐藏
问题描述:点击"隐藏产品"后,产品仍然显示在列表中
解决方法:
- 检查产品是否已加入发货计划(已加入计划的产品无法隐藏)
- 确认操作权限是否足够
- 刷新页面后重新尝试
10. 技术实现细节
10.1 前端技术栈
- 框架:Vue 3 + Composition API
- UI组件:Element Plus
- 图表库:ECharts
- 状态管理:reactive + ref
- 生命周期:onMounted, nextTick
10.2 后端技术栈
- 框架:Spring Boot
- ORM:MyBatis Plus
- API风格:RESTful
- 事务管理:@Transactional
- 认证授权:UserInfoContext
10.3 性能优化
-
数据加载优化:
- 使用分页查询减少数据传输量
- 延迟加载非关键数据
- 缓存常用数据
-
渲染优化:
- 使用虚拟滚动处理大量数据
- 优化组件渲染性能
- 减少不必要的DOM操作
-
交互优化:
- 异步处理耗时操作
- 提供加载状态反馈
- 优化用户操作流程
10.4 代码结构
前端代码结构:
index.vue:主页面组件components/expand_table.vue:展开详情表格组件components/ship_record.vue:发货记录组件components/remarks_dialog.vue:备注对话框组件components/split_plan_dialog.vue:计划拆分对话框组件
后端代码结构:
AmzProductSalesPlanController.java:发货计划控制器AmzProductSalesPlanShipItemController.java:发货计划项目控制器AmzProductSalesPlanShipItem.java:发货计划项目实体AmzProductSalesPlan.java:产品销售计划实体
11. 总结
FBA发货规划页面是Wimoor系统中一个功能强大、设计合理的核心模块,它通过直观的数据展示、智能的库存分析和灵活的计划管理,为用户提供了全面的FBA发货管理解决方案。
核心价值:
- 提高库存管理效率,减少库存积压和断货风险
- 优化发货计划,降低物流成本
- 提供数据支持,帮助用户做出更合理的运营决策
- 简化操作流程,提高工作效率
该页面功能丰富,操作便捷,为用户提供了全面的FBA发货管理解决方案。同时,通过不断的优化和改进,可以进一步提高页面性能和用户体验,为用户创造更大的价值。