导入导出和 Excel 模板

本文整理 DGJ2.0 的导入、导出、模板下载和错误文件处理。重点关注秒杀、基础资料、采购、销售、库存、报表等场景。

业务目标

  • 知道导入导出入口在哪里。
  • 知道模板字段、校验、错误文件和下载路径的常见约定。
  • 改 Excel 逻辑时能回归正确业务流程。

入口文件

  • 基础资料导入:application/controllers/basedata/Import.phpbasedata/Invlocation.php
  • 价格导入导出:application/controllers/basedata/PriceManager.php
  • 秒杀活动导入导出:application/controllers/inner/activity/FlashActivity.phpapplication/Services/Activity/FlashActivitySer.php
  • 全车件导入导出:application/controllers/allcarpart/*
  • 报表导出:application/controllers/reports/*.php
  • Excel 工具:application/Components/ExcelHelper.phpapplication/Components/ExportExcel.php
  • 导入任务:application/controllers/tasks/Import.php

常见能力

| 类型 | 说明 | | --- | --- | | 模板下载 | 生成固定表头,部分模板会按服务站客户类别、价格类型动态生成列 | | 数据导入 | 解析 xls/xlsx,校验必填、数字、商品、服务站、价格、数量 | | 错误文件 | 导入失败时生成带错误原因的 Excel | | 列表导出 | 按查询条件导出当前业务列表 | | 报表导出 | 使用报表查询结果,通常存在行数、时间范围、权限限制 |

主流程

  1. 下载模板。
  2. 用户填入数据。
  3. 上传 Excel。
  4. 后端解析每行,校验字段和业务规则。
  5. 合法数据入库或批量更新。
  6. 非法数据生成错误文件。
  7. 前端提示成功数量、失败数量、错误文件地址。

秒杀导入导出重点

  • 活动商品导入要校验活动状态、商品是否存在、价格、数量、库存范围、限购。
  • 活动审批中或已结束时通常不允许随意导入覆盖。
  • 导出文件如果要支持“导出后再导入”,字段名、字段类型、商品编码口径必须一致。
  • 导入失败要保留错误行,不要只返回第一条错误。

基础资料导入重点

  • 商品、货位、客户类别价格等导入通常依赖服务站维度。
  • basedata/Invlocation.php 中存在多套 Excel 解析、错误文件生成、动态列逻辑。
  • 修改模板表头后,必须同步解析逻辑和错误文件表头。

报表导出重点

  • 报表导出通常在 application/controllers/reports
  • 采购报表:PurchaseReport.php
  • 销售报表:SaleReport.php
  • 库存报表:InventoryReport.php
  • 利润报表:ProfitReport.php
  • 对账单:StatementBill.phpStatementSend.phpStatementStrategy.php

常用 rg 命令

rg -n "download.*Template|import.*Goods|export.*Goods|导入|导出" application/controllers application/Services application/service
rg -n "PHPExcel|ExcelHelper|ExportExcel|PhpSpreadsheet|createError|import_error" application
rg -n "FlashActivity|importFlash|exportFlash|Template" application/controllers/inner/activity application/Services/Activity
rg -n "reportExportExcel|exportExcel|sys_csv" application/controllers/reports application/Services/Report

改动风险和回归清单

  • 模板下载、空模板格式、示例数据。
  • 正常导入、部分失败、全部失败、重复导入。
  • 错误文件下载和错误原因。
  • 导出字段顺序、金额/数量格式、日期格式。
  • 大数据量导出性能和超时。