diff --git a/.gitignore b/.gitignore index 83c4521..9afac1b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,29 +1,27 @@ -# Python缓存文件 +# Python __pycache__/ -*.py[cod] -*$py.class +*.pyc +*.pyo +.pytest_cache/ +.venv/ -# 虚拟环境 -venv/ -env/ -ENV/ +# Build & dist +build/ +dist/ +release/ +*.spec -# 日志文件 -logs/*.log -logs/*.active -*.log.* - -# 临时文件和缓存 +# Logs & temp +logs/ data/temp/ -data/*.bak -*.bak + +# Runtime outputs +data/output/ +data/result/ + +# OS/IDE .DS_Store - -# 输出文件(可选是否忽略) -# data/output/ - -# IDE文件 +Thumbs.db .idea/ .vscode/ -*.swp -*.swo \ No newline at end of file + diff --git a/.trae/documents/优化列映射向导的尺寸、置顶行为与字段标签.md b/.trae/documents/优化列映射向导的尺寸、置顶行为与字段标签.md new file mode 100644 index 0000000..5b4c2db --- /dev/null +++ b/.trae/documents/优化列映射向导的尺寸、置顶行为与字段标签.md @@ -0,0 +1,43 @@ +## 问题与目标 +- 弹窗尺寸偏小,不便操作 +- 弹窗及文件选择后没有在最上层,易被其他窗口遮挡 +- 字段英文名不直观,需要显示中文对应(银豹模板列) + +## 改进方案 +### 1. 弹窗尺寸与置顶行为 +- 将列映射向导窗口尺寸调整为 `780x660`,保持自适应(子控件 `fill=tk.BOTH, expand=True`) +- 打开向导时:`dlg.lift()`、`dlg.attributes('-topmost', True)`,`after_idle` 取消置顶但保持焦点;`dlg.transient(root)`、`dlg.grab_set()` 防止被遮挡 +- 选择文件后的回调中再次 `dlg.lift()` 和短暂置顶,确保返回后窗口在最上层 +- 同步为模板管理窗口应用同样策略 + +### 2. 字段标签中文提示 +- 列映射向导的标准字段改为按 `ColumnMapper.STANDARD_COLUMNS` 动态生成(若可用),并为每个字段追加中文说明,例如: + - `barcode(条码)` + - `name(商品名称)` + - `specification(规格)` + - `quantity(数量)` + - `unit(单位)` + - `unit_price(采购单价)` + - `total_price(金额/小计)` + - `category(类别)` + - `brand(品牌)` + - `supplier(供应商)` +- 若 `ColumnMapper` 不可用,则用内置 `friendly_labels` 字典生成上述标签 + +### 3. 布局优化与可用性 +- 保持“文件路径 + 浏览 + 预览前30行 + 加载列”四项同一行,按钮设 `padx=6`,保证易点 +- 映射区使用 `ttk.Combobox(state='readonly')`,宽度适配,并确保行高足够(留白) +- 预览区保留顶部表格(前30行),支持点击行自动填充表头行号;加载列时按指定行读取 + +### 4. 代码改动位置 +- `启动器.py`: + - `open_column_mapping_wizard_alt`:调整几何尺寸与置顶;在“浏览”回调与预览/加载流程中补充 `lift/topmost`;扩展标准字段与中文标签 + - `open_template_manager`:统一尺寸与置顶行为 +- 仅UI与行为改动,不影响处理逻辑;保存仍写入 `suppliers_config.json` 的 `header_row` 与 `column_mapping` + +### 5. 验证 +- 打开列映射向导:窗口足够大,居中且在最上层;选择文件后窗口仍在最上层 +- 字段标签显示为英+中:如 `name(商品名称)` +- 预览前30行与加载列同一行;点击预览行自动写入表头行号;保存后提示成功并写入配置 + +请确认以上方案,确认后我将立即实施并验证。 \ No newline at end of file diff --git a/.trae/documents/供应商管理GUI与可视化配置方案.md b/.trae/documents/供应商管理GUI与可视化配置方案.md new file mode 100644 index 0000000..d476638 --- /dev/null +++ b/.trae/documents/供应商管理GUI与可视化配置方案.md @@ -0,0 +1,41 @@ +## 目标 +- 在系统设置中提供“供应商管理”GUI,支持新增/编辑/删除供应商,无需手改代码或JSON。 +- 一站式配置:基本信息、表头与列映射、规则与词典、模板管理,保存后即时生效。 + +## 界面设计 +- 入口:右侧“系统设置”新增按钮“供应商管理”。 +- 布局: + - 左栏:供应商列表(名称),支持搜索/新建/复制/删除。 + - 右侧Tab: + 1) 基本信息:`name`、`description`、`filename_patterns`、`content_indicators`、`header_row` + 2) 列映射与表头:嵌入现有“列映射向导”核心(预览前30行、表头选行、加载列、智能映射、导入/导出) + 3) 规则与词典:词典编辑(忽略词、单位同义词、包装倍数、名称正则、默认单位/包装);规则预设与规则预览(原始→规范化) + 4) 模板管理:`output_templates` 列表、当前选择与批量校验 +- 操作按钮:保存(写入`suppliers_config.json`)、重载处理器、导入/导出供应商配置(单个或全部)。 + +## 数据流与验证 +- 加载/保存:统一读写`config/suppliers_config.json`;保存后调用`ProcessorService.reload_processors()`。 +- 校验:复用`ProcessorService._validate_suppliers_config`;保存前进行schema校验,错误弹窗聚合列表。 +- 预设:提供“基础拆分与推断”规则预设;可导入/导出自定义规则。 + +## 增强逻辑(自动化建议) +- 新建供应商时,可选择样例Excel: + - 自动检测表头与初始列映射;基于列名关键词给出映射建议。 + - 词典预填:常见单位同义词、默认单位“瓶”、常见包装倍数(件/箱/提/盒)。 + +## 实施步骤 +1) 创建`open_supplier_manager`弹窗(系统设置入口),左列表+右侧Tab结构。 +2) 基本信息Tab:表单与校验;保存更新到JSON。 +3) 列映射与表头Tab:复用现有向导组件(预览/加载/智能映射/导入/导出)。 +4) 规则与词典Tab:编辑词典与规则预览,保存写入`dictionary`与`rules`。 +5) 模板管理Tab:维护`output_templates`与`current_template_index`,批量校验与报告显示。 +6) 保存与重载:统一写入后调用处理器重载并日志提示。 + +## 验证 +- GUI走查:新增/复制/删除供应商配置;规则预览正确;模板校验能识别缺失列。 +- 处理生效:保存后立刻按新规则规范化并填充模板输出。 + +## 后续扩展 +- 多供应商批量校验与报告导出;词典共享/继承;规则预设库扩展。 + +如果确认,我将开始实现该GUI及其数据流,并将现有向导整合到供应商管理中以形成一站式配置体验。 \ No newline at end of file diff --git a/.trae/documents/供应商规则系统全面优化与落地计划.md b/.trae/documents/供应商规则系统全面优化与落地计划.md new file mode 100644 index 0000000..09ee446 --- /dev/null +++ b/.trae/documents/供应商规则系统全面优化与落地计划.md @@ -0,0 +1,70 @@ +## 痛点复盘 +- 不同供应商存在强差异:列名不统一、单位混杂在数量、规格隐藏在名称、供应商缺失等 +- 现有向导只解决列映射层面,规则与词典编辑、执行顺序与生效范围不清晰 +- 缺少可视化“从原始→规范化→模板填充”的贯通验证;流程易跑不通 + +## 总体方案 +- 建立“供应商规则系统”:可配置、可视化、可预览,贯穿 映射→清洗→规则→模板 填充全链路 +- 提供“规则库 + 词典 + 执行管道”三层抽象,支持每家供应商自定义规则组合与执行顺序 +- 完善 GUI:供应商管理中的四大Tab一站式配置,规则编辑器内置预设与预览,落地即验证 + +## 数据模型 +- `suppliers_config.json` 每个供应商对象结构: + - `name`、`description` + - `filename_patterns`、`content_indicators` + - `header_row` + - `column_mapping`(源列→标准列) + - `rules`: 有序规则数组(见下) + - `dictionary`: 解析词典(`ignore_words`、`unit_synonyms`、`pack_multipliers`、`name_patterns`、`default_unit`、`default_package_quantity`) + - `output_templates`: 模板列表;`current_template_index`: 当前模板索引 + +## 规则库(首批) +- `split_quantity_unit(source)`: 拆分数量中的单位(箱/件/提/盒/瓶),无单位用默认单位 +- `extract_spec_from_name(source)`: 从名称抽取规格/包装(容量×数量/简单双乘),应用忽略词与名称正则 +- `normalize_unit(target,map)`: 单位归一(同义词→统一单位),件/箱/提/盒按包装倍数转换数量为“瓶” +- `compute_quantity_from_total()`: 数量缺失时用金额/单价回推数量 +- `fill_missing(fills)`: 缺失填充,例如单位默认“瓶” +- `mark_gift()`: 金额/单价为0或名称含“赠品/O/o/空”标记赠品 +- 后续扩展:`classify_category(name)`, `extract_brand(name)`, `strip_noise(name)` 等 + +## 执行管道 +- 处理器执行顺序:映射→清洗→规则(有序)→模板填充 +- 每条规则可访问 `dictionary`,执行结果在 DataFrame 上可追踪(供预览) +- 提供“预览栈”:展示原始→每步规则输出(多步Diff),定位问题 + +## GUI优化 +- 供应商管理: + - 左侧供应商列表(搜索/新建/复制/删除/导入/导出) + - 右侧四大Tab: + - 基本信息:必填校验与保存 + - 列映射与表头:现有向导增强(滚动条、表头选行、智能映射、导入/导出) + - 规则与词典: + - 规则编辑器(顺序可调整:上/下移动、插入/删除规则) + - 词典编辑(忽略词、单位同义词、包装倍数、名称正则、默认值) + - 规则预设(常用组合)与“应用规则预览”(展示原始→规范化两列;可切换查看逐步Diff) + - 模板管理:模板列表/当前选择与批量校验,显示缺失/多余列报告 +- 性能与体验:所有弹窗置顶回焦;滚动与水平滚动;列宽拖拽与一键导出预览为CSV + +## 使用路径(推荐) +1. 新建供应商→选样例Excel→自动表头与初始映射建议 +2. 规则预设:选择“基础拆分与推断”→应用规则预览→查看原始/规范化对比 +3. 细化词典:补充忽略词、单位同义词、包装倍数、名称正则→再次预览 +4. 保存并重载→跑一份真实文件→最近文件中打开结果核验→如有差异回到规则编辑器微调 + +## 验证与可视化 +- 单元测试:表头识别/数量拆分/名称规格解析/单位归一/数量回推/赠品标记 +- 烟雾测试:5–10类典型供货商样本端到端验证(含极端情况:无单位、名称含噪声、数量混合单位) +- 日志:每步规则执行计数与示例行输出(前/后5行),便于定位问题 + +## 交付物 +- 规则引擎模块与规范接口;处理器接入 +- 供应商管理GUI(规则编辑器、词典编辑器、预设与预览) +- 扩展配置示例与测试数据;打包脚本校验资源 + +## 里程碑 +- Day 1:规则库与引擎扩展、处理器接入、预览栈接口 +- Day 2:GUI规则编辑器(顺序调整/增删)、词典编辑器、规则预设与预览 +- Day 3:模板批量校验、单元与烟雾测试、日志强化 +- Day 4:回归修正与打包交付 + +确认后我将开始实现上述内容,确保不同供应商可独立配置精细规则并“所见即所得”验证,流程稳定可跑通。 \ No newline at end of file diff --git a/.trae/documents/供应商词典与规则编辑器扩展方案.md b/.trae/documents/供应商词典与规则编辑器扩展方案.md new file mode 100644 index 0000000..3c0f479 --- /dev/null +++ b/.trae/documents/供应商词典与规则编辑器扩展方案.md @@ -0,0 +1,52 @@ +## 目标 +- 为具体供应商定制更细的解析规则(词典、包装倍数、忽略词、同义单位),并在列映射向导提供可视化编辑入口与预览。 + +## 配置扩展 +- 扩展 `suppliers_config.json` 每个供应商对象新增: + - `dictionary`: 解析词典 + - `ignore_words`: ["白膜","彩膜","赠品"](在名称解析时剔除) + - `unit_synonyms`: {"箱":"件","提":"件","盒":"件","瓶":"瓶"} + - `pack_multipliers`: {"件": 24, "箱": 24, "提": 12, "盒": 10}(缺规格时用于单位归一) + - `name_patterns`: [正则表达式](从名称抽取规格/容量×数量,如 `([\d\.]+)(ml|l|升|毫升)[*×xX](\d+)`) + - `default_unit`: "瓶" + - `default_package_quantity`: 1 + - `rules`: 规则数组(与现有一致),规则在执行时可访问 `dictionary` + - `output_templates`: 模板列表;`current_template_index`: 当前选择索引 + +## 规则引擎增强 +- 在 `app/core/handlers/rule_engine.py`: + - `apply_rules(df, rules, dictionary=None)` 接口增加 `dictionary` 参数 + - `extract_spec_from_name`:先剔除 `ignore_words`,匹配 `name_patterns`,无匹配时按 `pack_multipliers` 推断包装数量 + - `normalize_unit`:使用 `unit_synonyms` 统一单位;如单位为“件/箱/提/盒”且有 `package_quantity` 或 `pack_multipliers`,数量×包装并单位归一为“瓶” + - `split_quantity_unit`:解析数量中的单位,同义词归一;无单位时用 `default_unit` + - 其余规则(回推数量、填充、赠品标记)保持不变 + +## 供应商处理器接入 +- `GenericSupplierProcessor`: + - 从 `supplier_config['dictionary']` 取词典并传入 `apply_rules`,保证每家供应商按自身词典执行 + - 若未配置词典,使用默认空词典 + +## 向导UI扩展(右侧系统设置→列映射向导) +- 增加“供应商规则”区域: + - 可编辑列表: + - 忽略词(多行输入或表格) + - 单位同义词(键值对表格:原单位→统一单位) + - 包装倍数(单位→包装数量) + - 名称正则(多行,每行一个表达式) + - 默认单位、默认包装数量(输入框) + - 操作:新增/删除、导入(JSON)/导出(JSON)、保存 + - 规则预览: + - 选择预设(基础拆分与推断或自定义),点击“应用规则预览”,显示“原始/规范化”两列树表对比 + - 保存行为:将 `dictionary` 与 `rules` 写入对应供应商的 `suppliers_config.json` 并重载处理器 + +## 验证与测试 +- 单元测试: + - 名称解析(容量×数量、简单乘法、忽略词影响、同义词归一) + - 数量拆分与单位归一(“4瓶/1箱/3件/2提/2盒”) + - 包装倍数应用与数量回推 +- 烟雾测试:构建 5–10 类供货商样本,验证端到端转换与模板填充可用 + +## 交付 +- 完成词典与规则编辑入口、配置扩展与引擎接入,提交验证报告与示例配置;保留导入/导出便于你迭代调整。 + +确认后我将按此方案实现:扩展配置→增强规则引擎→处理器接入→向导UI与预览→测试。 \ No newline at end of file diff --git a/.trae/documents/修复“验证匹配”面板未加载问题.md b/.trae/documents/修复“验证匹配”面板未加载问题.md new file mode 100644 index 0000000..4396a8b --- /dev/null +++ b/.trae/documents/修复“验证匹配”面板未加载问题.md @@ -0,0 +1,30 @@ +## 原因 + +* 按钮调用了 `safe_open_validation_panel`,其内部检查 `open_validation_panel` 是否存在;当前代码中未定义该函数,导致始终提示“程序未加载,请重启”。 + +## 修复方案 + +* 在 `启动器.py` 中新增顶层函数 `open_validation_panel(log_widget)`,与其它 `open_*` 工具函数并列,确保加载顺序稳定。 + +* 保留按钮绑定到 `safe_open_validation_panel`,其将直接调用新定义的 `open_validation_panel`。 + +## 实施 + +* 添加 `open_validation_panel`: + + * 入口参数:`log_widget` + + * 实现与之前描述一致:供应商选择、原始文件/期望结果选择、运行验证生成差异、生成建议并“应用建议”写回配置。 + +* 放置位置:`show_supported_processors` 与 `safe_open_validation_panel` 相邻区域,确保可见与可用。 + +## 验证 + +* 启动程序→系统设置→点击“验证匹配”,应正常打开面板无提示。 + +* 选择“农夫山泉”与提供的文件后运行验证,查看差异与建议。 + +## 预期 + +* 面板不再提示重启;功能可用。 + diff --git a/.trae/documents/基于样例结果的验证闭环与规则简化优化.md b/.trae/documents/基于样例结果的验证闭环与规则简化优化.md new file mode 100644 index 0000000..3aba29e --- /dev/null +++ b/.trae/documents/基于样例结果的验证闭环与规则简化优化.md @@ -0,0 +1,57 @@ +## 目标 +- 用你提供的原始文件与期望结果跑通“验证闭环”,自动对比差异并生成修正建议。 +- 将“规则设置”改造成通俗易懂的“向导 + 快速模板 + 自动识别”,让普通用户也能完成操作。 + +## 验证闭环(立即可用) +- 新增“验证匹配”面板: + - 选择原始Excel:`data/output/微信图片_20251115212128_148_108.xlsx` + - 选择期望结果:`data/result/采购单_微信图片_20251115212128_148_108.xls` + - 一键运行当前供应商流程 → 自动生成临时结果 → 与期望结果进行单元格级对比 + - 输出差异报告: + - 列差异(列缺失/多余/名称不一致) + - 行差异(按条码或名称对齐,数量/单位/单价/金额差异) + - 规则差异归因(例如:数量未拆分、单位未归一) + - 按“应用建议”自动调整当前供应商的规则/词典(可撤销) + +## 简化操作设计 +- 两种模式: + - 简单模式(默认): + - 步骤:选择文件 → 选择供应商 → 选择快速模板 → 预览 → 生成 + - 字段中文说明(name(商品名称)、quantity(数量)等)与自动建议 + - 高级模式: + - 可编辑规则顺序与参数、词典、正则;具备步骤预览与Diff +- 快速模板: + - “无数量/单位列”模板:自动配置拆分数量单位→名称提取规格→单位归一→缺省填充→标记赠品 + - “纯金额/单价反推数量”模板:直接回推数量 + - “条码驱动匹配”模板:条码为主键对齐 + +## 自动识别与建议 +- 列名识别:从表头关键词自动映射常用字段 +- 单位与数量:从“订单数量”拆分,单位同义词与包装倍数自动套用 +- 名称提取规格:词典与正则库(容量×数量、双乘、“550水24白膜”)自动解析;失败行计数提示 +- 自动修正建议: + - 若数量为空:建议添加“split_quantity_unit(source=订单数量)” + - 若单位为“箱/件/提/盒”:建议添加“normalize_unit + pack_multipliers” + - 若金额与单价存在且数量为空:建议添加“compute_quantity_from_total” + +## 差异对比与一键修复 +- 差异可视化:原始→规范化→模板填充三栏对比;支持仅显示变化列、导出CSV +- 一键修复:将建议以“卡片”列表展示,点击应用后立即刷新预览;支持撤销上一步 + +## 交互流程 +1) 进入“验证匹配” → 选择原始与期望 → 运行 → 查看差异 +2) 点击“应用建议”直观修复规则/词典 → 差异减少直至匹配 +3) 切回“简单模式”一键生成采购单 + +## 技术实现要点 +- 供应商配置:继续使用 `suppliers_config.json`,但在GUI中隐藏JSON细节,改为中文表单与下拉 +- 规则执行:保留引擎,新增“建议生成器”根据差异报告生成规则/词典变更 +- 对比对齐:优先按条码对齐;无条码时按名称近似匹配(去噪后模糊比对) + +## 里程碑 +- Day 1:验证面板与差异对比;建议生成器(数量/单位/规格/金额) +- Day 2:简单/高级模式切换;快速模板与自动识别 +- Day 3:一键修复与撤销;导出差异报告 +- Day 4:回归测试与打包;提供“农夫山泉”预设并用你的样例验证匹配 + +确认后我将实现“验证匹配”面板并接入建议修复,先用你提供的农夫山泉样例跑通闭环,再推广到其它供应商。 \ No newline at end of file diff --git a/.trae/documents/继续执行周计划(任务7–10).md b/.trae/documents/继续执行周计划(任务7–10).md new file mode 100644 index 0000000..46a8d97 --- /dev/null +++ b/.trae/documents/继续执行周计划(任务7–10).md @@ -0,0 +1,54 @@ +## 目标 +- 按照优化实施计划,从第3周任务7/8开始全面落地,并同时推进第4周任务9/10,确保可视化、配置驱动和交付质量提升。 + +## 任务7:列映射向导完善 +- 字段扩展与中文提示:标准字段统一以英+中展示,支持更多列(条码、名称、规格、数量、单位、单价、金额/小计、分类、品牌、供应商)。 +- 自动建议增强:结合样本数据统计(字符串比例、特殊关键词、数值特征)给出更可靠的映射建议。 +- 表头定位增强:支持预览选择,并保存 `header_row`;向导内清晰提示当前使用的表头行。 +- 配置管理:支持导入/导出映射方案(JSON),可一键应用到多供应商。 +- 热重载与快捷入口:保存后自动重载供应商处理器;在系统设置区和快捷键中提供入口。 + +## 任务8:模板管理与校验完善 +- 模板组管理:支持为每个供应商选择/保存多个模板(默认、备用),UI下拉选择当前模板。 +- 差异检测:读取模板首行表头与系统标准列比较,列表显示缺失/多余字段与修复建议。 +- 批量校验:可一次性校验选定供应商的所有模板组并生成报告。 +- 示例生成:按标准列生成示例模板,便于对齐格式。 + +## 任务9:单元测试与烟雾测试 +- 单元测试(pytest): + - `_find_header_row` 不同格式表头识别(第一行/中间行/合并行/空白行混杂)。 + - `GenericSupplierProcessor` 列映射、清洗规则(remove_rows/fill_na/convert_type)与公式计算。 + - 模板填充的关键路径(必要列检测、数量/赠送量/单价写入)。 +- 烟雾测试:准备小样本(图片→OCR→Excel→采购单),验证端到端可用,记录日志与输出。 + +## 任务10:打包与版本信息 +- 版本信息:主窗口标题与“关于”对话框显示版本号、构建时间、更新日志入口。 +- 打包校验:构建后检查模板与配置文件存在性;打包时拷贝资源并生成校验报告。 +- 更新脚本:完善 `build_exe.py` 支持版本号注入与资源校验失败时中止。 + +## 实现要点 +- GUI:系统设置页整合入口;对话框使用 780×660/540 尺寸,`topmost`/`lift`/`focus_force` 保证焦点。 +- 配置:`suppliers_config.json` 增加 `header_row`、`column_mapping`、`output_templates`(数组)与当前选择索引。 +- 处理器:优先使用保存的表头行;模板管理选择的模板在处理时应用。 +- 日志与提示:保存/校验/重载操作统一写入日志面板并气泡提示。 + +## 验证 +- 交互走查:向导流程顺畅、字段标签明确、置顶行为正常。 +- 单元测试通过率达标(≥90%覆盖关键模块);烟雾测试输出正确文件且无异常。 +- 打包后 EXE 启动显示版本信息;资源齐备,最近文件可双击打开。 + +## 变更范围 +- `启动器.py`(设置页UI、向导与模板管理弹窗) +- `app/core/processors/supplier_processors/generic_supplier_processor.py`(读取与映射逻辑) +- `app/core/excel/processor.py`(表头行识别与模板填充校验) +- `config/suppliers_config.json`(结构扩展) +- `tests/`(新增pytest用例与烟雾测试脚本) +- `build_exe.py`(版本注入与校验) + +## 时间安排 +- Day 1:任务7 UI/配置完成,处理器联动与验证 +- Day 2:任务8 模板管理增强与批量校验 +- Day 3:任务9 单元测试与烟雾测试 +- Day 4:任务10 打包与版本信息,回归测试与文档补充 + +确认后我将按以上计划开始实施并逐项提交验证结果。 \ No newline at end of file diff --git a/.trae/documents/继续改进并显性呈现改动.md b/.trae/documents/继续改进并显性呈现改动.md new file mode 100644 index 0000000..091a19d --- /dev/null +++ b/.trae/documents/继续改进并显性呈现改动.md @@ -0,0 +1,52 @@ +## 概览 +- 目标:让改动更可见并提升识别/处理准确性与可操作性 +- 范围:GUI入口与提示、表头识别与手动指定、供应商配置联动、交互一致性 + +## 可见入口改造 +- 在“Excel处理→特殊处理”区新增两个明显按钮: + - “列映射向导”:加载 Excel 源列 → 映射到标准列 → 保存至 `config/suppliers_config.json` + - “模板管理”:选择模板、校验表头列是否包含必需项 → 保存路径至供应商配置 +- 在“快捷操作”区补充一个“显示处理器类型”入口,便于确认支持的文件类型 +- 在保存成功后增加气泡提示与日志条目(log 面板出现“列映射已保存”“模板路径已保存”) + +## 手动表头行支持 +- 在“列映射向导”弹窗增加“表头行号(从1开始)”输入框: + - 加载列时按照指定行重读 Excel 并展示源列 + - 保存时将 `header_row`(零基索引)写入 `suppliers_config.json` +- 通用供应商处理器读取时优先使用 `supplier_config['header_row']`;未设置时执行自动表头检测(关键词+非空比例+字符串比例) + +## 自动表头检测增强 +- Excel 单文件处理与通用供应商处理器: + - 扫描范围扩大到前 30 行 + - 扩充关键词:加入金额类(“金额/小计/总计/合计/合计金额”) + - 综合评分:关键词命中+非空比例+字符串比例,阈值达到即判为表头;否则选第一个有效行 + +## 交互与一致性 +- “单个识别”按钮直接弹出图片选择(只允许 `jpg/jpeg/png/bmp`),取消即终止 +- “单个处理”按钮弹出 Excel 选择(只允许 `xlsx/xls`),取消即终止,不再默认处理最新 Excel +- 处理完成后不再自动打开 `result/output` 目录,改为通过“最近文件”双击打开 +- 最近文件仅记录图片/Excel,自动过滤无效并按修改时间降序展示,空历史时从 `data/output`、`data/result` 回填合规文件 + +## 供应商配置联动 +- `suppliers_config.json`: + - `column_mapping`:保存源列→标准列映射 + - `header_row`:保存手动指定的表头行(零基) + - `output_template`:保存模板路径(相对路径) +- 处理器加载时校验并日志提示不合法项,保留已通过的配置 + +## 验证与可视化 +- 操作日志:保存映射/模板时写入成功日志 +- 处理器信息:通过“显示处理器类型”对话框列出支持的扩展名和描述 +- 手动表头验证:在向导中“加载列”后,源列下拉应出现正确列名;处理后“最近文件”出现输出采购单 + +## 预计改动位置 +- GUI按钮与向导弹窗:`启动器.py`(特殊处理区与工具函数) +- 自动表头检测与手动表头使用: + - Excel处理:`app/core/excel/processor.py` 的 `_find_header_row`、`process_specific_file` + - 通用供应商处理:`app/core/processors/supplier_processors/generic_supplier_processor.py` 的 `_read_supplier_data`、`_find_header_row` +- 供应商配置:`config/suppliers_config.json` + +## 交付 +- 提交代码改动后,更新打包 EXE,便携包包含上述 UI 与功能;提供操作说明与可见验证点。 + +请确认以上计划,确认后我将按此逐项实现并验证。 \ No newline at end of file diff --git a/.trae/documents/解决“只有订单数量列”场景的可操作方案.md b/.trae/documents/解决“只有订单数量列”场景的可操作方案.md new file mode 100644 index 0000000..9aa8da9 --- /dev/null +++ b/.trae/documents/解决“只有订单数量列”场景的可操作方案.md @@ -0,0 +1,50 @@ +## 你现在就能这样做 +- 目标:在没有“规格/数量/单位”列、只有“订单数量”列(如“4瓶/1箱/5箱/3件”)时,拆分出数量与单位,并按名称提取规格,最终规范化为银豹模板字段。 + +### A. 最小映射(只为模板填充) +- 在“供应商管理 → 列映射与表头”页,只需映射这些常用列: + - name ← 商品名称 + - barcode ← 条码(如有) + - unit_price ← 单价(如有) + - total_price ← 金额/小计(如有) +- 不需要映射“数量/单位/规格”,后续用规则直接从原始列生成。 + +### B. 规则与词典设置(关键) +- 在“供应商管理 → 规则与词典”页: +1) 规则列表按顺序添加: + - split_quantity_unit,参数:source=订单数量 + - extract_spec_from_name,参数:source=商品名称 + - normalize_unit,参数:target=unit,map={"箱":"件","提":"件","盒":"件"} + - fill_missing,参数:fills={"unit":"瓶"} + - mark_gift(可选) + - compute_quantity_from_total(可选,当只有金额/单价时) +2) 词典设置: + - unit_synonyms:{"箱":"件","提":"件","盒":"件","瓶":"瓶"} + - pack_multipliers:{"件":24,"箱":24,"提":12,"盒":10}(根据你的供应商习惯调整) + - default_unit:瓶 + - default_package_quantity:1 + - ignore_words:如(白膜、彩膜、赠品) + - name_patterns(每行一个正则): + - (\d+(?:\.\d+)?)(ml|l|升|毫升)[*×xX](\d+) + - (\d+)[*×xX](\d+)瓶 + - 需要时加入供应商特有格式,如“550水24白膜”可匹配“(\d{2,3}).*?(\d{1,3})”并将第二组当作包装数 + +### C. 预览与验证 +- 在“规则与词典”页选择Excel,点击“生成步骤预览”: + - 看“原始 → 规范化”两侧表,对比是否出现 quantity(数值)、unit(单位)、specification、package_quantity + - 在“预览步骤”中逐步查看每一条规则的结果;必要时导出CSV核对 +- 保存后会自动重载处理器;用真实文件跑一次,结果会出现在“最近文件”,双击打开核验。 + +### D. 解释关键点 +- 映射是为了模板填充字段的命名统一;对于“订单数量”这种来源列,规则会直接读取 source=订单数量,不要求你把它映射成标准列。 +- 规则执行后,会产生标准字段:quantity、unit、specification、package_quantity,可被模板填充。 +- normalize_unit会用词典的pack_multipliers或name解析出的package_quantity,自动把“件/箱/提/盒”的数量换算成“瓶”,并将unit统一为“瓶”。 + +## 我将继续优化的点(让流程更清晰) +1) 规则表单中的“来源列”改为可选下拉(直接从Excel列名取值),无需手填。 +2) 步骤预览支持“仅显示变化的列(Diff模式)”与“错误计数”(未匹配的行统计)。 +3) 提供“无数量/单位列”的快速模版:自动添加上述规则与词典默认值,一键套用。 +4) 规则帮助提示:每条规则说明输入/输出字段与常见示例。 +5) 供应商级的“测试运行”:选文件→一键规范化→预览→导出结果,独立于正式处理。 + +如果你同意,我将按上述方案完善GUI交互(来源列下拉、快速模板、Diff预览、错误计数与一键测试),并把默认规则与词典预设直接提供出来,确保“只有订单数量列”的场景开箱可用。 \ No newline at end of file diff --git a/.trae/documents/通用采购单规范化与规则引擎优化方案.md b/.trae/documents/通用采购单规范化与规则引擎优化方案.md new file mode 100644 index 0000000..e08aa63 --- /dev/null +++ b/.trae/documents/通用采购单规范化与规则引擎优化方案.md @@ -0,0 +1,42 @@ +## 目标 +- 通过规则引擎把不同供货商的OCR表格规范为统一字段,并自动拆分“数量+单位”、从名称推断规格、标记赠品,最终稳定填充银豹模板。 + +## 配置与规则 +- 扩展 `suppliers_config.json`: + - `rules`: 规则数组(顺序执行) + - `output_templates`: 模板列表;`current_template_index`: 当前模板索引 +- 规则类型: + - `split_quantity_unit`(拆分“4瓶/1箱/3件/2提/2盒”) + - `extract_spec_from_name`(解析“1.8L×8瓶”“550水24白膜”等) + - `normalize_unit`(单位归一“箱/件/提/盒/瓶”→统一“瓶”,按包装转换数量) + - `compute_quantity_from_total`(数量缺失时用金额/单价反推) + - `infer_supplier`(文件名/内容推断供应商) + - `fill_missing`(填默认值) + - `mark_gift`(金额/单价=0或“赠品/O/o/空”) + +## 实现 +- 新建 `app/core/handlers/rule_engine.py`:输入DataFrame与规则列表,返回规范化DataFrame +- 在 `GenericSupplierProcessor` 中:列映射→清洗→规则引擎→输出 +- 列映射向导增强: + - 增加“规则预设”选择与“应用规则预览”按钮,显示原始/规范化后的对比 + - 支持导入/导出(映射+规则)JSON +- 模板管理增强:模板组选择、批量校验、示例模板生成 + +## 解析与正则 +- 名称解析: + - 容量×数量:`(\d+(?:\.\d+)?)(ml|l|升|毫升)[*×xX](\d+)` + - 简单数量×数量:`(\d+)[*×xX](\d+)` + - 词典忽略词:如“白膜”等 +- 数量拆分:`(?P\d+(?:\.\d+)?)(?P箱|件|提|盒|瓶)` + +## 验证 +- 单元测试覆盖规则与表头识别;烟雾测试涵盖“无单位/规格/数量混杂”的样本 +- GUI预览确认规则效果;保存后热重载处理器 + +## 里程碑 +- Day 1:规则引擎与处理器接入 +- Day 2:向导规则预览与导入/导出;模板组管理 +- Day 3:测试与样本库 +- Day 4:打包与交付验证 + +请确认,我将立即开始实现并逐步提交验证结果。 \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..201d913 --- /dev/null +++ b/README.md @@ -0,0 +1,58 @@ +# 益选 OCR 订单处理系统 + +## 概览 +- 面向零售与分销场景的采购单处理工具,支持图片 OCR → Excel 规范化 → 模板填充 → 合并导出全流程 +- 通过供应商管理与规则引擎,适配不同供应商的格式差异(数量含单位、名称包含规格、缺失列补齐) +- 提供验证匹配面板与单价校验机制,确保输出与既定模板一致且价格合理 + +## 核心功能 +- 图片/Excel处理:拖拽或选择文件,生成银豹采购单(`templates/银豹-采购单模板.xls`) +- 供应商管理(系统设置 → 供应商管理): + - 基本信息、文件名匹配、表头行号 + - 列映射与表头:预览前30行、表头选行、加载列、智能映射、导入/导出 + - 规则与词典:忽略词、单位同义词、包装倍数、名称正则、默认单位/包装;规则预设与步骤预览(原始→逐步→规范化);导出预览CSV + - 模板管理:模板列表与当前索引,批量校验报告 +- 验证匹配面板(系统设置 → 验证匹配): + - 选择原始Excel与期望结果,运行当前流程自动对比差异并生成建议(数量拆分、单位归一、名称提规格、金额回推) + - 一键应用建议写回供应商配置与词典,减少手动调整 +- 单价校验:生成采购单后按条码比对 `templates/商品资料.xlsx` 的“进货价(必填)”;价差大于1元弹窗提示,小于等于1元不打扰 + +## 关键适配(蓉城易购) +- 新模板(如“订单1765440157955.xlsx”): + - 使用第三行作为表头(`header=2`) + - 关键词选列并重命名到期望字段:商品条码(小条码)、订购数量(小单位)、单价(小单位)、优惠后金额(小单位)、单位 + - 单位优先匹配“单位(订购单位)”列,清洗为去空白并将“件”替换为“份” + - 多条码行(逗号/顿号/斜杠/空格分隔)拆分为多行,数量均分并重算金额,单位保持订购单位 + - 新模板映射:将“优惠后金额(小单位)”作为单价,“出库小计(元)”作为金额来源 + +## 使用说明 +1. 运行程序(EXE或源码运行) +2. 在主界面: + - 拖拽或选择图片/Excel进行处理 + - 系统设置 → 供应商管理:配置供应商、列映射与规则;使用规则预览查看规范化效果 + - 系统设置 → 验证匹配:选择原始与期望文件,差异对比;应用建议后重载配置 +3. 处理成功后,采购单保存到 `data/output` 或 `data/result`,最近文件列表可双击打开查看 + +## 构建与打包 +- 依赖:Python 3.9+,虚拟环境建议 +- 安装打包工具:`pip install pyinstaller` +- 运行打包脚本:`python build_exe.py` + - 生成 EXE:`dist/OCR订单处理系统.exe` + - 生成便携包:`release/OCR订单处理系统.exe`(包含 `templates/银豹-采购单模板.xls` 与 `templates/商品资料.xlsx`) + +## Git 提交建议 +- 建议忽略构建目录与运行输出(见 `.gitignore`) +- 保留模板与配置:`templates/银豹-采购单模板.xls`、`templates/商品资料.xlsx`、`config/config.ini`、`config/barcode_mappings.json` + +## 常见问题 +- 表头识别失败:在供应商管理的“列映射与表头”页预览表头行并选择正确行号 +- 数量含单位:启用 `split_quantity_unit` 与 `normalize_unit` 规则并配置单位同义词与包装倍数 +- 名称中规格:配置 `ignore_words` 与 `name_patterns`,使用步骤预览确认解析效果 +- 单价校验未提示:确认 `templates/商品资料.xlsx` 存在且列名包含“进货价”与条码列(`商品条码/条码/barcode`) + +## 变更记录(近期) +- 新增验证匹配面板与建议修复 +- 规则预设与步骤预览(原始→逐步→规范化) +- 单价校验机制(价差>1元提示) +- 蓉城易购新模板适配(第三行表头、单位(订购单位)、多条码拆分、金额映射) + diff --git a/app/core/excel/processor.py b/app/core/excel/processor.py index 9e9b246..771328b 100644 --- a/app/core/excel/processor.py +++ b/app/core/excel/processor.py @@ -605,17 +605,16 @@ class ExcelProcessor: Returns: 表头行索引,如果未找到则返回None """ - # 定义可能的表头关键词 header_keywords = [ '条码', '条形码', '商品条码', '商品名称', '名称', '数量', '单位', '单价', - '规格', '商品编码', '采购数量', '采购单位', '商品', '品名' + '规格', '商品编码', '采购数量', '采购单位', '商品', '品名', + '金额', '小计', '总计', '合计', '合计金额' ] # 存储每行的匹配分数 row_scores = [] - # 遍历前10行(通常表头不会太靠后) - max_rows_to_check = min(10, len(df)) + max_rows_to_check = min(30, len(df)) for row in range(max_rows_to_check): row_data = df.iloc[row] score = 0 diff --git a/app/core/excel/validators.py b/app/core/excel/validators.py index 89129f2..1b3fb07 100644 --- a/app/core/excel/validators.py +++ b/app/core/excel/validators.py @@ -298,4 +298,4 @@ class ProductValidator: logger.warning(f"数量验证失败: {error_msg}") validated_product['quantity'] = 0.0 - return validated_product + return validated_product \ No newline at end of file diff --git a/app/core/handlers/rule_engine.py b/app/core/handlers/rule_engine.py new file mode 100644 index 0000000..ebd56f0 --- /dev/null +++ b/app/core/handlers/rule_engine.py @@ -0,0 +1,150 @@ +import re +import pandas as pd +from typing import List, Dict, Any, Optional + +def _split_quantity_unit(df: pd.DataFrame, source: str, dictionary: Optional[Dict[str, Any]] = None) -> pd.DataFrame: + if source in df.columns: + vals = df[source].astype(str).fillna("") + nums = [] + units = [] + default_unit = (dictionary or {}).get("default_unit", "") + unit_synonyms = (dictionary or {}).get("unit_synonyms", {}) + for v in vals: + m = re.search(r"(\d+(?:\.\d+)?)(箱|件|提|盒|瓶)", v) + if m: + nums.append(float(m.group(1))) + u = unit_synonyms.get(m.group(2), m.group(2)) + units.append(u) + else: + try: + nums.append(float(v)) + units.append(unit_synonyms.get(default_unit, default_unit)) + except: + nums.append(0.0) + units.append(unit_synonyms.get(default_unit, default_unit)) + df["quantity"] = nums + df["unit"] = units + return df + +def _extract_spec_from_name(df: pd.DataFrame, source: str, dictionary: Optional[Dict[str, Any]] = None) -> pd.DataFrame: + if source in df.columns: + names = df[source].astype(str).fillna("") + specs = [] + packs = [] + ignore_words = (dictionary or {}).get("ignore_words", []) + name_patterns = (dictionary or {}).get("name_patterns", []) + for s in names: + if ignore_words: + for w in ignore_words: + s = s.replace(w, "") + matched = False + for pat in name_patterns: + try: + m = re.search(pat, s) + if m and len(m.groups()) >= 2: + try: + qty = int(m.group(len(m.groups()))) + except: + qty = None + specs.append(s) + packs.append(qty) + matched = True + break + except Exception: + pass + if matched: + continue + m = re.search(r"(\d+(?:\.\d+)?)(ml|l|升|毫升)[*×xX](\d+)", s, re.IGNORECASE) + if m: + specs.append(f"{m.group(1)}{m.group(2)}*{m.group(3)}") + packs.append(int(m.group(3))) + continue + m2 = re.search(r"(\d+)[*×xX](\d+)", s) + if m2: + specs.append(f"1*{m2.group(2)}") + packs.append(int(m2.group(2))) + continue + m3 = re.search(r"(\d{2,3})\D*(\d{1,3})\D*", s) + if m3: + specs.append(f"1*{m3.group(2)}") + packs.append(int(m3.group(2))) + continue + specs.append("") + packs.append(None) + df["specification"] = df.get("specification", pd.Series(specs)) + df["package_quantity"] = packs + return df + +def _normalize_unit(df: pd.DataFrame, target: str, unit_map: Dict[str, str], dictionary: Optional[Dict[str, Any]] = None) -> pd.DataFrame: + if target in df.columns: + df[target] = df[target].astype(str) + df[target] = df[target].apply(lambda u: unit_map.get(u, u)) + pack_multipliers = (dictionary or {}).get("pack_multipliers", {}) + default_pq = (dictionary or {}).get("default_package_quantity", 1) + try: + if "quantity" in df.columns: + def convert_qty(row): + u = row.get(target) + q = row.get("quantity") + pq = row.get("package_quantity") + if u in ("件", "箱", "提", "盒"): + mult = pq or pack_multipliers.get(u, default_pq) + if pd.notna(q) and pd.notna(mult) and float(mult) > 0: + return float(q) * float(mult) + return q + df["quantity"] = df.apply(convert_qty, axis=1) + df[target] = df[target].apply(lambda u: "瓶" if u in ("件","箱","提","盒") else u) + except Exception: + pass + return df + +def _compute_quantity_from_total(df: pd.DataFrame) -> pd.DataFrame: + if "quantity" in df.columns and "unit_price" in df.columns: + qty = df["quantity"].fillna(0) + up = pd.to_numeric(df.get("unit_price", 0), errors="coerce").fillna(0) + tp = pd.to_numeric(df.get("total_price", 0), errors="coerce").fillna(0) + need = (qty <= 0) & (up > 0) & (tp > 0) + df.loc[need, "quantity"] = (tp[need] / up[need]).round(6) + return df + +def _fill_missing(df: pd.DataFrame, fills: Dict[str, Any]) -> pd.DataFrame: + for k, v in fills.items(): + if k in df.columns: + df[k] = df[k].fillna(v) + else: + df[k] = v + return df + +def _mark_gift(df: pd.DataFrame) -> pd.DataFrame: + df["is_gift"] = False + tp = df.get("total_price") + up = df.get("unit_price") + flags = pd.Series([False]*len(df)) + if tp is not None: + tpn = pd.to_numeric(tp, errors="coerce").fillna(0) + flags = flags | (tpn == 0) + if up is not None: + upn = pd.to_numeric(up, errors="coerce").fillna(0) + flags = flags | (upn == 0) + if "name" in df.columns: + flags = flags | df["name"].astype(str).str.contains(r"赠品|^o$|^O$", regex=True) + df.loc[flags, "is_gift"] = True + return df + +def apply_rules(df: pd.DataFrame, rules: List[Dict[str, Any]], dictionary: Optional[Dict[str, Any]] = None) -> pd.DataFrame: + out = df.copy() + for r in rules or []: + t = r.get("type") + if t == "split_quantity_unit": + out = _split_quantity_unit(out, r.get("source", "quantity"), dictionary) + elif t == "extract_spec_from_name": + out = _extract_spec_from_name(out, r.get("source", "name"), dictionary) + elif t == "normalize_unit": + out = _normalize_unit(out, r.get("target", "unit"), r.get("map", {}), dictionary) + elif t == "compute_quantity_from_total": + out = _compute_quantity_from_total(out) + elif t == "fill_missing": + out = _fill_missing(out, r.get("fills", {})) + elif t == "mark_gift": + out = _mark_gift(out) + return out \ No newline at end of file diff --git a/app/core/processors/supplier_processors/generic_supplier_processor.py b/app/core/processors/supplier_processors/generic_supplier_processor.py index 5ad13d8..5d2ae1f 100644 --- a/app/core/processors/supplier_processors/generic_supplier_processor.py +++ b/app/core/processors/supplier_processors/generic_supplier_processor.py @@ -11,6 +11,7 @@ from pathlib import Path from ..base import BaseProcessor from ...utils.log_utils import get_logger +from ...handlers.rule_engine import apply_rules logger = get_logger(__name__) @@ -118,10 +119,17 @@ class GenericSupplierProcessor(BaseProcessor): self.logger.error("数据清洗失败") self.log_processing_end(input_file, success=False) return None + try: + rules = self.supplier_config.get('rules', []) + dictionary = self.supplier_config.get('dictionary') + standardized_df = apply_rules(cleaned_df, rules, dictionary) + except Exception as e: + self.logger.warning(f"规则执行失败: {e}") + standardized_df = cleaned_df # 步骤4: 计算处理 self.logger.info("步骤4/4: 计算处理...") - calculated_df = self._apply_calculations(cleaned_df) + calculated_df = self._apply_calculations(standardized_df) if calculated_df is None: self.logger.error("计算处理失败") self.log_processing_end(input_file, success=False) @@ -205,15 +213,26 @@ class GenericSupplierProcessor(BaseProcessor): 数据DataFrame或None """ try: - df = self._read_excel_safely(file_path) - - if df.empty: + specified = self.supplier_config.get('header_row') + if specified is not None: + try: + df = self._read_excel_safely(file_path, header=int(specified)) + except Exception: + df = self._read_excel_safely(file_path) + else: + df0 = self._read_excel_safely(file_path, header=None) + if df0 is None: + return None + header_row = self._find_header_row(df0) + if header_row is not None: + df = self._read_excel_safely(file_path, header=header_row) + else: + df = self._read_excel_safely(file_path) + if df is None or df.empty: self.logger.warning("数据文件为空") return None - self.logger.info(f"成功读取数据,形状: {df.shape}") return df - except Exception as e: self.logger.error(f"读取数据失败: {e}") return None @@ -235,6 +254,40 @@ class GenericSupplierProcessor(BaseProcessor): except Exception as e: self.logger.error(f"读取Excel失败: {file_path} - {e}") raise + + def _find_header_row(self, df: pd.DataFrame) -> Optional[int]: + try: + header_keywords = [ + '条码','条形码','商品编码','商品名称','名称','数量','单位','单价','规格', + '金额','小计','总计','合计','合计金额' + ] + scores = [] + rows_to_check = min(30, len(df)) + for r in range(rows_to_check): + row = df.iloc[r] + score = 0 + for cell in row: + if isinstance(cell, str): + s = cell.strip().lower() + for kw in header_keywords: + if kw.lower() in s: + score += 5 + non_empty = row.count() + if non_empty / max(1, len(row)) > 0.5: + score += 2 + str_count = sum(1 for c in row if isinstance(c, str)) + if str_count / max(1, len(row)) > 0.5: + score += 3 + scores.append((r, score)) + scores.sort(key=lambda x: x[1], reverse=True) + if scores and scores[0][1] >= 5: + return scores[0][0] + for r in range(len(df)): + if df.iloc[r].notna().sum() > 3: + return r + return None + except Exception: + return None def _apply_column_mapping(self, df: pd.DataFrame) -> Optional[pd.DataFrame]: """应用列映射 diff --git a/build_exe.py b/build_exe.py index e679fcf..e296de8 100644 --- a/build_exe.py +++ b/build_exe.py @@ -121,6 +121,40 @@ def build_exe(): """构建EXE文件""" print("开始构建EXE文件...") try: + # 注入版本信息到根config.ini + try: + root_cfg = Path('config.ini') + from datetime import datetime + version_str = datetime.now().strftime('%Y.%m.%d.%H%M') + if root_cfg.exists(): + lines = root_cfg.read_text(encoding='utf-8').splitlines() + has_app = any(l.strip().lower() == '[app]' for l in lines) + if not has_app: + lines.append('[App]') + lines.append(f'version = {version_str}') + else: + # 更新或追加version + new_lines = [] + in_app = False + app_written = False + for l in lines: + if l.strip().lower() == '[app]': + in_app = True + new_lines.append(l) + continue + if in_app and l.strip().lower().startswith('version'): + new_lines.append(f'version = {version_str}') + app_written = True + in_app = True + continue + new_lines.append(l) + if not app_written: + new_lines.append('version = ' + version_str) + lines = new_lines + root_cfg.write_text('\n'.join(lines), encoding='utf-8') + print(f"已写入版本号: {version_str}") + except Exception as e: + print(f"版本信息注入失败: {e}") result = subprocess.run([ 'pyinstaller', 'OCR订单处理系统.spec' @@ -150,6 +184,9 @@ def build_exe(): if root_config_file.exists(): shutil.copy2(root_config_file, dist_dir) print(f"已复制根配置文件到dist: {root_config_file} -> {dist_dir}") + else: + print("警告: 根配置文件不存在,将创建缺省版本") + (dist_dir / 'config.ini').write_text('[App]\nversion = dev\n', encoding='utf-8') except subprocess.CalledProcessError as e: print(f"构建失败: {e}") @@ -210,6 +247,17 @@ def create_portable_package(): print(f"已复制模板文件: {template_file} -> {release_dir / 'templates'}") else: print(f"警告: 模板文件不存在: {template_file}") + item_file = Path('templates/商品资料.xlsx') + if item_file.exists(): + try: + (Path('dist') / 'templates').mkdir(exist_ok=True) + shutil.copy2(item_file, Path('dist') / 'templates') + except Exception: + pass + shutil.copy2(item_file, release_dir / 'templates') + print(f"已复制商品资料: {item_file} -> {release_dir / 'templates'}") + else: + print(f"警告: 商品资料文件不存在: {item_file}") # 创建README文件 readme_content = ''' diff --git a/config.ini b/config.ini index 7c0f180..bd33df3 100644 --- a/config.ini +++ b/config.ini @@ -26,3 +26,5 @@ max_file_size_mb = 4 [Templates] purchase_order = 银豹-采购单模板.xls +[App] +version = 2025.12.12.1309 diff --git a/config/barcode_mappings.json b/config/barcode_mappings.json index ad0ee89..63add19 100644 --- a/config/barcode_mappings.json +++ b/config/barcode_mappings.json @@ -179,6 +179,14 @@ "map_to": "69021343", "description": "条码映射:6923450653012 -> 69021343" }, + "6923644295844": { + "map_to": "6923644285036", + "description": "条码映射:6923644295844 -> 6923644285036" + }, + "6907992513157": { + "map_to": "6907992513195", + "description": "条码映射:6907992513157 -> 6907992513195" + }, "6925019900087": { "multiplier": 10, "target_unit": "瓶", diff --git a/config/suppliers_config.json b/config/suppliers_config.json index cebfd96..6ad452b 100644 --- a/config/suppliers_config.json +++ b/config/suppliers_config.json @@ -3,13 +3,26 @@ { "name": "蓉城易购", "description": "蓉城易购供应商订单处理", - "filename_patterns": ["*蓉城*", "*rongcheng*", "*易*"], - "content_indicators": ["蓉城易购", "商品编码", "订货数量"], + "filename_patterns": [ + "*蓉城*", + "*rongcheng*", + "*易*" + ], + "content_indicators": [ + "蓉城易购", + "商品编码", + "订货数量" + ], "column_mapping": { - "商品编码": "barcode", - "商品名称": "name", - "订货数量": "quantity", - "单价": "unit_price" + "商品条码(小条码)": "barcode", + "商品名称": "name", + "规格": "specification", + "订购数量(小单位)": "quantity", + "单位": "unit", + "单价(小单位)": "unit_price", + "优惠后金额(小单位)": "total_price", + "备注": "category", + "行号": "supplier" }, "cleaning_rules": [ { @@ -18,7 +31,9 @@ }, { "type": "fill_na", - "columns": ["unit_price"], + "columns": [ + "unit_price" + ], "value": 0 } ], @@ -30,13 +45,57 @@ "factor": 1 } ], - "output_suffix": "_蓉城易购_银豹采购单" + "output_suffix": "_蓉城易购_银豹采购单", + "header_row": 2, + "rules": [ + { + "type": "split_quantity_unit", + "source": "订购数量(小单位)" + }, + { + "type": "extract_spec_from_name", + "source": "商品名称" + }, + { + "type": "normalize_unit", + "target": "unit", + "map": { + "箱": "件", + "提": "件", + "盒": "件" + } + }, + { + "type": "compute_quantity_from_total" + }, + { + "type": "mark_gift" + }, + { + "type": "fill_missing", + "fills": { + "unit": "瓶" + } + } + ], + "output_templates": [ + "templates/银豹-采购单模板.xls" + ], + "current_template_index": 0 }, { "name": "通用食品供应商", "description": "通用食品类供应商订单", - "filename_patterns": ["*食品*", "*配送*", "*供货*"], - "content_indicators": ["产品条码", "订购量", "进货价"], + "filename_patterns": [ + "*食品*", + "*配送*", + "*供货*" + ], + "content_indicators": [ + "产品条码", + "订购量", + "进货价" + ], "column_mapping": { "产品条码": "barcode", "产品名称": "name", @@ -46,16 +105,133 @@ "cleaning_rules": [ { "type": "convert_type", - "columns": ["unit_price"], + "columns": [ + "unit_price" + ], "target_type": "float" }, { "type": "fill_na", - "columns": ["barcode", "name", "quantity"], + "columns": [ + "barcode", + "name", + "quantity" + ], "value": 0 } ], - "output_suffix": "_食品供应商_银豹采购单" + "output_suffix": "_食品供应商_银豹采购单", + "rules": [ + { + "type": "split_quantity_unit", + "source": "订购量" + }, + { + "type": "extract_spec_from_name", + "source": "产品名称" + }, + { + "type": "normalize_unit", + "target": "unit", + "map": { + "箱": "件", + "提": "件", + "盒": "件" + } + }, + { + "type": "compute_quantity_from_total" + }, + { + "type": "mark_gift" + }, + { + "type": "fill_missing", + "fills": { + "unit": "瓶" + } + } + ], + "output_templates": [ + "templates/银豹-采购单模板.xls" + ], + "current_template_index": 0 + }, + { + "name": "农夫山泉", + "description": "", + "filename_patterns": [], + "content_indicators": [], + "column_mapping": { + "条形码": "barcode", + "商品名称": "name", + "销售价": "unit_price", + "订单金额": "total_price", + "Unnamed: 0": "supplier", + "备注": "brand" + }, + "header_row": 0, + "rules": [ + { + "type": "split_quantity_unit", + "source": "订单数量" + }, + { + "type": "extract_spec_from_name", + "source": "name" + }, + { + "type": "normalize_unit", + "target": "unit", + "map": { + "箱": "件", + "提": "件", + "盒": "件" + } + }, + { + "type": "compute_quantity_from_total" + }, + { + "type": "mark_gift" + }, + { + "type": "fill_missing", + "fills": { + "unit": "瓶" + } + } + ], + "dictionary": { + "ignore_words": [ + "白膜", + "彩膜", + "赠品" + ], + "unit_synonyms": { + "箱": "件", + "提": "件", + "盒": "件", + "瓶": "瓶" + }, + "pack_multipliers": { + "件": 24, + "箱": 24, + "提": 12, + "盒": 10 + }, + "name_patterns": [ + "(\\d+(?:\\.\\d+)?)(ml|mL|ML|l|L|升|毫升)[*×xX](\\d+)", + "(\\d+)[*×xX](\\d+)瓶", + "(\\d{2,3}).*?(\\d{1,3})" + ], + "default_unit": "瓶", + "default_package_quantity": 1 + }, + "output_templates": [ + "templates/银豹-采购单模板.xls" + ], + "current_template_index": 0 } ] -} \ No newline at end of file +} diff --git a/data/user_settings.json b/data/user_settings.json new file mode 100644 index 0000000..3ad9051 --- /dev/null +++ b/data/user_settings.json @@ -0,0 +1,8 @@ +{ + "window_size": "900x600", + "theme_mode": "light", + "recent_files": [ + "data/result\\采购单_蓉城易购-订单1765513867817.xls", + "E:\\2025Code\\python\\orc-order-v2\\data\\output\\蓉城易购-订单1765513867817.xlsx" + ] +} \ No newline at end of file diff --git a/logs/app.core.excel.converter.log b/logs/app.core.excel.converter.log index c887d67..3fb642b 100644 --- a/logs/app.core.excel.converter.log +++ b/logs/app.core.excel.converter.log @@ -5214,3 +5214,1867 @@ 2025-11-15 18:01:52,700 - app.core.excel.converter - INFO - 从名称推断规格(入纸箱): 900树叶茉莉花茶12入纸箱 -> 1*12 2025-11-15 18:01:52,764 - app.core.excel.converter - INFO - 解析二级规格: 1*12 -> 1*12 2025-11-15 18:01:52,779 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 0.0, 单价: 62.0, 单位: +2025-11-16 10:48:45,505 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 10:56:22,516 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 11:23:59,373 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 11:26:04,216 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 11:26:06,794 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 12:20:11,339 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 12:51:04,842 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 12:51:06,909 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 13:03:10,560 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 13:03:10,582 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 13:03:28,078 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 13:13:52,781 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 13:18:18,247 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 13:18:18,270 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 13:51:09,016 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 13:51:12,228 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 14:25:50,024 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 14:25:55,568 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 14:25:55,955 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 4瓶 -> 数量=4.0, 单位=瓶 +2025-11-16 14:25:55,972 - app.core.excel.converter - INFO - 从名称推断规格(白膜): 550水24白膜 -> 1*24 +2025-11-16 14:25:56,020 - app.core.excel.converter - INFO - 解析二级规格: 1*24 -> 1*24 +2025-11-16 14:25:56,052 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 1箱 -> 数量=1.0, 单位=箱 +2025-11-16 14:25:56,072 - app.core.excel.converter - INFO - 从名称推断规格(白膜): 550水24白膜 -> 1*24 +2025-11-16 14:25:56,100 - app.core.excel.converter - INFO - 解析二级规格: 1*24 -> 1*24 +2025-11-16 14:25:56,118 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 5桶 -> 数量=5.0, 单位=桶 +2025-11-16 14:25:56,129 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 12.9L桶装水 -> 12.9L*1 +2025-11-16 14:25:56,171 - app.core.excel.converter - INFO - 解析容量(L)规格: 12.9L*1 -> 1*1 +2025-11-16 14:25:56,183 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 15.0, 单位: 桶 +2025-11-16 14:25:56,192 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 1箱 -> 数量=1.0, 单位=箱 +2025-11-16 14:25:56,202 - app.core.excel.converter - INFO - 从名称推断规格(纸箱): 550尖叫多肽15纸箱 -> 1*15 +2025-11-16 14:25:56,230 - app.core.excel.converter - INFO - 解析二级规格: 1*15 -> 1*15 +2025-11-16 14:25:56,255 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 2箱 -> 数量=2.0, 单位=箱 +2025-11-16 14:25:56,265 - app.core.excel.converter - INFO - 从名称推断规格(入纸箱): 445水溶C血橙15入纸箱 -> 1*15 +2025-11-16 14:25:56,297 - app.core.excel.converter - INFO - 解析二级规格: 1*15 -> 1*15 +2025-11-16 14:25:56,317 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 2箱 -> 数量=2.0, 单位=箱 +2025-11-16 14:25:56,327 - app.core.excel.converter - INFO - 从名称推断规格(直接格式): 500-东方树叶-陈皮白茶1*15-纸 +箱装-普通装 -> 1*15 +2025-11-16 14:25:56,361 - app.core.excel.converter - INFO - 解析二级规格: 1*15 -> 1*15 +2025-11-16 14:25:56,392 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 2箱 -> 数量=2.0, 单位=箱 +2025-11-16 14:25:56,404 - app.core.excel.converter - INFO - 从名称推断规格(纸箱): 500树叶茉莉花茶15纸箱 -> 1*15 +2025-11-16 14:25:56,435 - app.core.excel.converter - INFO - 解析二级规格: 1*15 -> 1*15 +2025-11-16 14:25:56,457 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 5箱 -> 数量=5.0, 单位=箱 +2025-11-16 14:25:56,469 - app.core.excel.converter - INFO - 从名称推断规格(入纸箱): 900树叶茉莉花茶12入纸箱 -> 1*12 +2025-11-16 14:25:56,498 - app.core.excel.converter - INFO - 解析二级规格: 1*12 -> 1*12 +2025-11-16 14:39:42,980 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 14:39:42,994 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 14:59:35,436 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 14:59:35,458 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 4瓶 -> 数量=4.0, 单位=瓶 +2025-11-16 14:59:35,459 - app.core.excel.converter - INFO - 从名称推断规格(白膜): 550水24白膜 -> 1*24 +2025-11-16 14:59:35,462 - app.core.excel.converter - INFO - 解析二级规格: 1*24 -> 1*24 +2025-11-16 14:59:35,463 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 1箱 -> 数量=1.0, 单位=箱 +2025-11-16 14:59:35,463 - app.core.excel.converter - INFO - 从名称推断规格(白膜): 550水24白膜 -> 1*24 +2025-11-16 14:59:35,464 - app.core.excel.converter - INFO - 解析二级规格: 1*24 -> 1*24 +2025-11-16 14:59:35,465 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 5桶 -> 数量=5.0, 单位=桶 +2025-11-16 14:59:35,466 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 12.9L桶装水 -> 12.9L*1 +2025-11-16 14:59:35,467 - app.core.excel.converter - INFO - 解析容量(L)规格: 12.9L*1 -> 1*1 +2025-11-16 14:59:35,468 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 15.0, 单位: 桶 +2025-11-16 14:59:35,468 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 1箱 -> 数量=1.0, 单位=箱 +2025-11-16 14:59:35,469 - app.core.excel.converter - INFO - 从名称推断规格(纸箱): 550尖叫多肽15纸箱 -> 1*15 +2025-11-16 14:59:35,470 - app.core.excel.converter - INFO - 解析二级规格: 1*15 -> 1*15 +2025-11-16 14:59:35,471 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 2箱 -> 数量=2.0, 单位=箱 +2025-11-16 14:59:35,471 - app.core.excel.converter - INFO - 从名称推断规格(入纸箱): 445水溶C血橙15入纸箱 -> 1*15 +2025-11-16 14:59:35,473 - app.core.excel.converter - INFO - 解析二级规格: 1*15 -> 1*15 +2025-11-16 14:59:35,474 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 2箱 -> 数量=2.0, 单位=箱 +2025-11-16 14:59:35,475 - app.core.excel.converter - INFO - 从名称推断规格(直接格式): 500-东方树叶-陈皮白茶1*15-纸 +箱装-普通装 -> 1*15 +2025-11-16 14:59:35,475 - app.core.excel.converter - INFO - 解析二级规格: 1*15 -> 1*15 +2025-11-16 14:59:35,477 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 2箱 -> 数量=2.0, 单位=箱 +2025-11-16 14:59:35,477 - app.core.excel.converter - INFO - 从名称推断规格(纸箱): 500树叶茉莉花茶15纸箱 -> 1*15 +2025-11-16 14:59:35,478 - app.core.excel.converter - INFO - 解析二级规格: 1*15 -> 1*15 +2025-11-16 14:59:35,479 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 5箱 -> 数量=5.0, 单位=箱 +2025-11-16 14:59:35,480 - app.core.excel.converter - INFO - 从名称推断规格(入纸箱): 900树叶茉莉花茶12入纸箱 -> 1*12 +2025-11-16 14:59:35,481 - app.core.excel.converter - INFO - 解析二级规格: 1*12 -> 1*12 +2025-11-16 15:03:21,891 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 15:03:21,914 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 4瓶 -> 数量=4.0, 单位=瓶 +2025-11-16 15:03:21,915 - app.core.excel.converter - INFO - 从名称推断规格(白膜): 550水24白膜 -> 1*24 +2025-11-16 15:03:21,918 - app.core.excel.converter - INFO - 解析二级规格: 1*24 -> 1*24 +2025-11-16 15:03:21,919 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 1箱 -> 数量=1.0, 单位=箱 +2025-11-16 15:03:21,919 - app.core.excel.converter - INFO - 从名称推断规格(白膜): 550水24白膜 -> 1*24 +2025-11-16 15:03:21,920 - app.core.excel.converter - INFO - 解析二级规格: 1*24 -> 1*24 +2025-11-16 15:03:21,921 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 5桶 -> 数量=5.0, 单位=桶 +2025-11-16 15:03:21,922 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 12.9L桶装水 -> 12.9L*1 +2025-11-16 15:03:21,923 - app.core.excel.converter - INFO - 解析容量(L)规格: 12.9L*1 -> 1*1 +2025-11-16 15:03:21,924 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 15.0, 单位: 桶 +2025-11-16 15:03:21,924 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 1箱 -> 数量=1.0, 单位=箱 +2025-11-16 15:03:21,925 - app.core.excel.converter - INFO - 从名称推断规格(纸箱): 550尖叫多肽15纸箱 -> 1*15 +2025-11-16 15:03:21,926 - app.core.excel.converter - INFO - 解析二级规格: 1*15 -> 1*15 +2025-11-16 15:03:21,927 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 2箱 -> 数量=2.0, 单位=箱 +2025-11-16 15:03:21,927 - app.core.excel.converter - INFO - 从名称推断规格(入纸箱): 445水溶C血橙15入纸箱 -> 1*15 +2025-11-16 15:03:21,928 - app.core.excel.converter - INFO - 解析二级规格: 1*15 -> 1*15 +2025-11-16 15:03:21,929 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 2箱 -> 数量=2.0, 单位=箱 +2025-11-16 15:03:21,929 - app.core.excel.converter - INFO - 从名称推断规格(直接格式): 500-东方树叶-陈皮白茶1*15-纸 +箱装-普通装 -> 1*15 +2025-11-16 15:03:21,930 - app.core.excel.converter - INFO - 解析二级规格: 1*15 -> 1*15 +2025-11-16 15:03:21,931 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 2箱 -> 数量=2.0, 单位=箱 +2025-11-16 15:03:21,931 - app.core.excel.converter - INFO - 从名称推断规格(纸箱): 500树叶茉莉花茶15纸箱 -> 1*15 +2025-11-16 15:03:21,933 - app.core.excel.converter - INFO - 解析二级规格: 1*15 -> 1*15 +2025-11-16 15:03:21,934 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 5箱 -> 数量=5.0, 单位=箱 +2025-11-16 15:03:21,934 - app.core.excel.converter - INFO - 从名称推断规格(入纸箱): 900树叶茉莉花茶12入纸箱 -> 1*12 +2025-11-16 15:03:21,935 - app.core.excel.converter - INFO - 解析二级规格: 1*12 -> 1*12 +2025-11-16 15:08:33,545 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 15:08:33,566 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 4瓶 -> 数量=4.0, 单位=瓶 +2025-11-16 15:08:33,567 - app.core.excel.converter - INFO - 从名称推断规格(白膜): 550水24白膜 -> 1*24 +2025-11-16 15:08:33,570 - app.core.excel.converter - INFO - 解析二级规格: 1*24 -> 1*24 +2025-11-16 15:08:33,571 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 1箱 -> 数量=1.0, 单位=箱 +2025-11-16 15:08:33,571 - app.core.excel.converter - INFO - 从名称推断规格(白膜): 550水24白膜 -> 1*24 +2025-11-16 15:08:33,572 - app.core.excel.converter - INFO - 解析二级规格: 1*24 -> 1*24 +2025-11-16 15:08:33,573 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 5桶 -> 数量=5.0, 单位=桶 +2025-11-16 15:08:33,574 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 12.9L桶装水 -> 12.9L*1 +2025-11-16 15:08:33,575 - app.core.excel.converter - INFO - 解析容量(L)规格: 12.9L*1 -> 1*1 +2025-11-16 15:08:33,576 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 15.0, 单位: 桶 +2025-11-16 15:08:33,576 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 1箱 -> 数量=1.0, 单位=箱 +2025-11-16 15:08:33,577 - app.core.excel.converter - INFO - 从名称推断规格(纸箱): 550尖叫多肽15纸箱 -> 1*15 +2025-11-16 15:08:33,578 - app.core.excel.converter - INFO - 解析二级规格: 1*15 -> 1*15 +2025-11-16 15:08:33,578 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 2箱 -> 数量=2.0, 单位=箱 +2025-11-16 15:08:33,579 - app.core.excel.converter - INFO - 从名称推断规格(入纸箱): 445水溶C血橙15入纸箱 -> 1*15 +2025-11-16 15:08:33,579 - app.core.excel.converter - INFO - 解析二级规格: 1*15 -> 1*15 +2025-11-16 15:08:33,580 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 2箱 -> 数量=2.0, 单位=箱 +2025-11-16 15:08:33,581 - app.core.excel.converter - INFO - 从名称推断规格(直接格式): 500-东方树叶-陈皮白茶1*15-纸 +箱装-普通装 -> 1*15 +2025-11-16 15:08:33,582 - app.core.excel.converter - INFO - 解析二级规格: 1*15 -> 1*15 +2025-11-16 15:08:33,583 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 2箱 -> 数量=2.0, 单位=箱 +2025-11-16 15:08:33,583 - app.core.excel.converter - INFO - 从名称推断规格(纸箱): 500树叶茉莉花茶15纸箱 -> 1*15 +2025-11-16 15:08:33,584 - app.core.excel.converter - INFO - 解析二级规格: 1*15 -> 1*15 +2025-11-16 15:08:33,585 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 5箱 -> 数量=5.0, 单位=箱 +2025-11-16 15:08:33,585 - app.core.excel.converter - INFO - 从名称推断规格(入纸箱): 900树叶茉莉花茶12入纸箱 -> 1*12 +2025-11-16 15:08:33,586 - app.core.excel.converter - INFO - 解析二级规格: 1*12 -> 1*12 +2025-11-16 15:11:11,212 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 15:11:11,666 - app.core.excel.converter - INFO - 解析等式规格: 1件=12桶 -> 1*12 +2025-11-16 15:11:11,736 - app.core.excel.converter - INFO - 解析等式规格: 1件=12桶 -> 1*12 +2025-11-16 15:11:11,800 - app.core.excel.converter - INFO - 解析等式规格: 1件=12桶 -> 1*12 +2025-11-16 15:13:47,393 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 15:13:49,807 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 1件 -> 数量=1.0, 单位=件 +2025-11-16 15:13:49,856 - app.core.excel.converter - INFO - 解析容量(L)规格: 400L*15 -> 1*15 +2025-11-16 15:13:49,874 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 1件 -> 数量=1.0, 单位=件 +2025-11-16 15:13:49,934 - app.core.excel.converter - INFO - 解析容量(L)规格: 450L*15 -> 1*15 +2025-11-16 15:13:49,976 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 1件 -> 数量=1.0, 单位=件 +2025-11-16 15:13:50,027 - app.core.excel.converter - INFO - 解析二级规格: 1*15 -> 1*15 +2025-11-16 15:13:50,049 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 1件 -> 数量=1.0, 单位=件 +2025-11-16 15:13:50,106 - app.core.excel.converter - INFO - 解析二级规格: 1*15 -> 1*15 +2025-11-16 15:13:50,156 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 3件 -> 数量=3.0, 单位=件 +2025-11-16 15:13:50,216 - app.core.excel.converter - INFO - 解析容量(L)规格: 500L*15 -> 1*15 +2025-11-16 15:13:50,252 - app.core.excel.converter - INFO - 从数量提取单位(基本格式): 2件 -> 数量=2.0, 单位=件 +2025-11-16 15:13:50,325 - app.core.excel.converter - INFO - 解析容量(L)规格: 596L*24 -> 1*24 +2025-11-16 15:15:36,193 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-16 15:15:38,261 - app.core.excel.converter - INFO - 解析容量(L)规格: 1L*12 -> 1*12 +2025-11-16 15:15:38,339 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-16 15:15:38,411 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-16 15:15:38,492 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-16 15:15:38,564 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 18:36:13,269 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-20 18:36:13,660 - app.core.excel.converter - INFO - 解析容量(L)规格: 1L*12 -> 1*12 +2025-11-20 18:36:13,716 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 18:36:13,758 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 18:36:13,805 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 18:36:13,860 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 18:36:42,083 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-20 18:36:42,485 - app.core.excel.converter - INFO - 解析容量(L)规格: 1L*12 -> 1*12 +2025-11-20 18:36:42,553 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 18:36:42,622 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 18:36:42,708 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 18:36:42,793 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 18:42:25,894 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-20 18:42:26,290 - app.core.excel.converter - INFO - 解析容量(L)规格: 1L*12 -> 1*12 +2025-11-20 18:42:26,325 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 18:42:26,384 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 18:42:26,438 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 18:42:26,492 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 18:44:11,107 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-20 18:44:11,696 - app.core.excel.converter - INFO - 解析容量(L)规格: 1L*12 -> 1*12 +2025-11-20 18:44:11,762 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 18:44:11,837 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 18:44:11,906 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 18:44:11,990 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 18:47:03,898 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-20 18:47:04,488 - app.core.excel.converter - INFO - 解析容量(L)规格: 1L*12 -> 1*12 +2025-11-20 18:47:04,550 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 18:47:04,634 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 18:47:04,719 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 18:47:04,793 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 18:56:30,323 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-20 18:56:30,965 - app.core.excel.converter - INFO - 解析容量(L)规格: 1L*12 -> 1*12 +2025-11-20 18:56:31,018 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 18:56:31,075 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 18:56:31,137 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 18:56:31,200 - app.core.excel.converter - INFO - 解析容量(ml)规格: 600ml*15 -> 1*15 +2025-11-20 19:38:18,808 - app.core.excel.converter - INFO - 成功加载条码映射配置,共49项 +2025-11-20 19:39:19,758 - app.core.excel.converter - INFO - 条码映射配置保存成功,共50项 +2025-11-20 20:10:12,659 - app.core.excel.converter - INFO - 成功加载条码映射配置,共50项 +2025-11-20 20:11:06,721 - app.core.excel.converter - INFO - 条码映射配置保存成功,共51项 +2025-12-01 22:21:09,089 - app.core.excel.converter - INFO - 成功加载条码映射配置,共51项 +2025-12-01 22:21:10,857 - app.core.excel.converter - INFO - 从名称推断规格(白膜): 550水24白膜 -> 1*24 +2025-12-01 22:21:10,932 - app.core.excel.converter - INFO - 解析二级规格: 1*24 -> 1*24 +2025-12-01 22:21:10,966 - app.core.excel.converter - INFO - 从名称推断规格(直接格式): 500-东方树叶-陈皮白茶1*15-纸 +箱装-普通装 -> 1*15 +2025-12-01 22:21:11,050 - app.core.excel.converter - INFO - 解析二级规格: 1*15 -> 1*15 +2025-12-01 22:21:11,059 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 0.0, 单价: 55.0, 单位: +2025-12-01 22:21:11,098 - app.core.excel.converter - INFO - 从名称推断规格(入纸箱): 500树叶青柑普洱15入纸箱 -> 1*15 +2025-12-01 22:21:11,135 - app.core.excel.converter - INFO - 解析二级规格: 1*15 -> 1*15 +2025-12-01 22:21:11,144 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 0.0, 单价: 55.0, 单位: +2025-12-01 22:21:11,184 - app.core.excel.converter - INFO - 从名称推断规格(纸箱): 500树叶茉莉花茶15纸箱 -> 1*15 +2025-12-01 22:21:11,247 - app.core.excel.converter - INFO - 解析二级规格: 1*15 -> 1*15 +2025-12-01 22:21:11,269 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 0.0, 单价: 55.0, 单位: +2025-12-01 22:21:11,295 - app.core.excel.converter - INFO - 从名称推断规格(纸箱): 500树叶乌龙茶15纸箱 -> 1*15 +2025-12-01 22:21:11,367 - app.core.excel.converter - INFO - 解析二级规格: 1*15 -> 1*15 +2025-12-01 22:21:11,386 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 0.0, 单价: 55.0, 单位: +2025-12-01 22:21:11,425 - app.core.excel.converter - INFO - 从名称推断规格(纸箱): 500树叶绿茶15纸箱 -> 1*15 +2025-12-01 22:21:11,496 - app.core.excel.converter - INFO - 解析二级规格: 1*15 -> 1*15 +2025-12-01 22:21:11,509 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 0.0, 单价: 55.0, 单位: +2025-12-01 22:21:11,531 - app.core.excel.converter - INFO - 从名称推断规格(入纸箱): 1.5树叶茉莉花茶6入纸箱装 -> 1*6 +2025-12-01 22:21:11,597 - app.core.excel.converter - INFO - 解析二级规格: 1*6 -> 1*6 +2025-12-01 22:21:11,606 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 0.0, 单价: 50.0, 单位: +2025-12-01 22:21:11,622 - app.core.excel.converter - INFO - 从名称推断规格(纸箱): 500茶π西柚茉莉15纸箱 -> 1*15 +2025-12-01 22:21:11,688 - app.core.excel.converter - INFO - 解析二级规格: 1*15 -> 1*15 +2025-12-01 22:21:11,707 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 0.0, 单价: 56.0, 单位: +2025-12-12 11:00:14,073 - app.core.excel.converter - INFO - 成功加载条码映射配置,共51项 +2025-12-12 11:00:14,142 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 雪碧2L@ -> 2L*1 +2025-12-12 11:00:14,146 - app.core.excel.converter - INFO - 解析容量(L)规格: 2L*1 -> 1*1 +2025-12-12 11:00:14,222 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 怡宝饮用纯净水2.08L@ -> 2.08L*1 +2025-12-12 11:00:14,223 - app.core.excel.converter - INFO - 解析容量(L)规格: 2.08L*1 -> 1*1 +2025-12-12 11:00:14,223 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 40.0, 单价: 21.52, 单位: 6901285993046 +2025-12-12 11:00:14,223 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 怡宝纯净水4.5L@ -> 4.5L*1 +2025-12-12 11:00:14,223 - app.core.excel.converter - INFO - 解析容量(L)规格: 4.5L*1 -> 1*1 +2025-12-12 11:00:14,223 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 8.0, 单价: 26.08, 单位: 6901285991547 +2025-12-12 11:00:14,223 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 怡宝饮用纯净水1.555L@ -> 1.555L*1 +2025-12-12 11:00:14,223 - app.core.excel.converter - INFO - 解析容量(L)规格: 1.555L*1 -> 1*1 +2025-12-12 11:00:14,223 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 60.0, 单价: 24.6, 单位: 6901285991288 +2025-12-12 11:00:14,227 - app.core.excel.converter - INFO - 提取规格: 奥利奥薄脆酸甜草莓味95g@ -> 95*None +2025-12-12 11:00:14,227 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥薄脆酸甜草莓味95g@ -> 95*None +2025-12-12 11:00:14,229 - app.core.excel.converter - WARNING - 无法解析规格: 95*None,使用默认值1*1 +2025-12-12 11:00:14,229 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 6.5, 单位: 6901668934925 +2025-12-12 11:00:14,229 - app.core.excel.converter - INFO - 提取规格: 奥利奥杯奥草莓味55g@ -> 55*None +2025-12-12 11:00:14,230 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥杯奥草莓味55g@ -> 55*None +2025-12-12 11:00:14,230 - app.core.excel.converter - WARNING - 无法解析规格: 55*None,使用默认值1*1 +2025-12-12 11:00:14,231 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.6, 单位: 6901668054715 +2025-12-12 11:00:14,231 - app.core.excel.converter - INFO - 提取规格: 奥利奥杯奥巧克力55g@ -> 55*None +2025-12-12 11:00:14,232 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥杯奥巧克力55g@ -> 55*None +2025-12-12 11:00:14,232 - app.core.excel.converter - WARNING - 无法解析规格: 55*None,使用默认值1*1 +2025-12-12 11:00:14,232 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.6, 单位: 6901668053916 +2025-12-12 11:00:14,232 - app.core.excel.converter - INFO - 提取规格: 好丽友蛋黄派2P46g@ -> 46*None +2025-12-12 11:00:14,232 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 好丽友蛋黄派2P46g@ -> 46*None +2025-12-12 11:00:14,232 - app.core.excel.converter - WARNING - 无法解析规格: 46*None,使用默认值1*1 +2025-12-12 11:00:14,235 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.0, 单位: 6920907800616 +2025-12-12 11:00:14,235 - app.core.excel.converter - INFO - 提取规格: 都市牧场爽口含片正梅味38g@ -> 38*None +2025-12-12 11:00:14,235 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 都市牧场爽口含片正梅味38g@ -> 38*None +2025-12-12 11:00:14,236 - app.core.excel.converter - WARNING - 无法解析规格: 38*None,使用默认值1*1 +2025-12-12 11:00:14,236 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 8.0, 单价: 38.0, 单位: +2025-12-12 11:00:14,236 - app.core.excel.converter - INFO - 提取规格: 林振合维C果C软糖什锦味68g -> 68*None +2025-12-12 11:00:14,236 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 林振合维C果C软糖什锦味68g -> 68*None +2025-12-12 11:00:14,236 - app.core.excel.converter - WARNING - 无法解析规格: 68*None,使用默认值1*1 +2025-12-12 11:00:14,238 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 8.0, 单价: 28.0, 单位: +2025-12-12 11:00:14,238 - app.core.excel.converter - INFO - 提取规格: 格力高百醇柠檬48g@ -> 48*None +2025-12-12 11:00:14,238 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 格力高百醇柠檬48g@ -> 48*None +2025-12-12 11:00:14,239 - app.core.excel.converter - WARNING - 无法解析规格: 48*None,使用默认值1*1 +2025-12-12 11:00:14,239 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 5.55, 单位: 6901845044027 +2025-12-12 11:00:14,240 - app.core.excel.converter - INFO - 提取规格: 格力高百醇抹茶慕斯味48g@ -> 48*None +2025-12-12 11:00:14,240 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 格力高百醇抹茶慕斯味48g@ -> 48*None +2025-12-12 11:00:14,241 - app.core.excel.converter - WARNING - 无法解析规格: 48*None,使用默认值1*1 +2025-12-12 11:00:14,242 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 5.55, 单位: 6901845040968 +2025-12-12 11:00:14,242 - app.core.excel.converter - INFO - 提取规格: 奥利奥饼干经典原味48.5g@ -> 48.5*None +2025-12-12 11:00:14,242 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥饼干经典原味48.5g@ -> 48.5*None +2025-12-12 11:00:14,242 - app.core.excel.converter - WARNING - 无法解析规格: 48.5*None,使用默认值1*1 +2025-12-12 11:00:14,242 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 6.0, 单价: 1.99, 单位: 6901668935649 +2025-12-12 11:00:14,242 - app.core.excel.converter - INFO - 提取规格: 奥利奥饼干浓醇巧克力味48.5g@ -> 48.5*None +2025-12-12 11:00:14,242 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥饼干浓醇巧克力味48.5g@ -> 48.5*None +2025-12-12 11:00:14,242 - app.core.excel.converter - WARNING - 无法解析规格: 48.5*None,使用默认值1*1 +2025-12-12 11:00:14,242 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 1.99, 单位: 6901668935663 +2025-12-12 11:00:14,242 - app.core.excel.converter - INFO - 提取规格: 法丽兹曲奇芝士巧克力70g@ -> 70*None +2025-12-12 11:00:14,246 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 法丽兹曲奇芝士巧克力70g@ -> 70*None +2025-12-12 11:00:14,246 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:00:14,246 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 2.66, 单位: 6947929617534 +2025-12-12 11:00:14,246 - app.core.excel.converter - INFO - 提取规格: 法丽兹曲奇香草柠檬巧克力味70g@ -> 70*None +2025-12-12 11:00:14,246 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 法丽兹曲奇香草柠檬巧克力味70g@ -> 70*None +2025-12-12 11:00:14,249 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:00:14,249 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 2.66, 单位: 6947929617138 +2025-12-12 11:00:14,249 - app.core.excel.converter - INFO - 提取规格: 太平梳打饼干奶盐味100g@ -> 100*None +2025-12-12 11:00:14,250 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 太平梳打饼干奶盐味100g@ -> 100*None +2025-12-12 11:00:14,250 - app.core.excel.converter - WARNING - 无法解析规格: 100*None,使用默认值1*1 +2025-12-12 11:00:14,250 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.5, 单位: 6901668200013 +2025-12-12 11:00:14,251 - app.core.excel.converter - INFO - 提取规格: 太平梳打饼干海苔味100g@ -> 100*None +2025-12-12 11:00:14,251 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 太平梳打饼干海苔味100g@ -> 100*None +2025-12-12 11:00:14,252 - app.core.excel.converter - WARNING - 无法解析规格: 100*None,使用默认值1*1 +2025-12-12 11:00:14,252 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.5, 单位: 6901668200303 +2025-12-12 11:00:14,252 - app.core.excel.converter - INFO - 提取规格: 达利园手指饼115g@ -> 115*None +2025-12-12 11:00:14,253 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园手指饼115g@ -> 115*None +2025-12-12 11:00:14,253 - app.core.excel.converter - WARNING - 无法解析规格: 115*None,使用默认值1*1 +2025-12-12 11:00:14,254 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 2.25, 单位: 6911988005229 +2025-12-12 11:00:14,254 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点杏仁酥饼146g@ -> 146*None +2025-12-12 11:00:14,254 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点杏仁酥饼146g@ -> 146*None +2025-12-12 11:00:14,255 - app.core.excel.converter - WARNING - 无法解析规格: 146*None,使用默认值1*1 +2025-12-12 11:00:14,256 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.8, 单位: 6911988000293 +2025-12-12 11:00:14,256 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点核桃酥饼146g@ -> 146*None +2025-12-12 11:00:14,256 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点核桃酥饼146g@ -> 146*None +2025-12-12 11:00:14,257 - app.core.excel.converter - WARNING - 无法解析规格: 146*None,使用默认值1*1 +2025-12-12 11:00:14,257 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.8, 单位: 6911988000286 +2025-12-12 11:00:14,258 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点香脆腰果饼108g@ -> 108*None +2025-12-12 11:00:14,259 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点香脆腰果饼108g@ -> 108*None +2025-12-12 11:00:14,259 - app.core.excel.converter - WARNING - 无法解析规格: 108*None,使用默认值1*1 +2025-12-12 11:00:14,260 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.85, 单位: 6911988009777 +2025-12-12 11:00:14,260 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点香脆杏仁饼108g@ -> 108*None +2025-12-12 11:00:14,260 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点香脆杏仁饼108g@ -> 108*None +2025-12-12 11:00:14,261 - app.core.excel.converter - WARNING - 无法解析规格: 108*None,使用默认值1*1 +2025-12-12 11:00:14,261 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.85, 单位: 6911988009760 +2025-12-12 11:00:14,262 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点香脆核桃饼108g@ -> 108*None +2025-12-12 11:00:14,262 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点香脆核桃饼108g@ -> 108*None +2025-12-12 11:00:14,262 - app.core.excel.converter - WARNING - 无法解析规格: 108*None,使用默认值1*1 +2025-12-12 11:00:14,263 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.85, 单位: 6911988009784 +2025-12-12 11:00:14,263 - app.core.excel.converter - INFO - 提取规格: 嘉士利威化饼干草莓味115g@ -> 115*None +2025-12-12 11:00:14,264 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 嘉士利威化饼干草莓味115g@ -> 115*None +2025-12-12 11:00:14,264 - app.core.excel.converter - WARNING - 无法解析规格: 115*None,使用默认值1*1 +2025-12-12 11:00:14,264 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 2.0, 单价: 3.8, 单位: 6901180581683 +2025-12-12 11:00:14,264 - app.core.excel.converter - INFO - 提取规格: 亨裕饼朱古力味饼干186g -> 186*None +2025-12-12 11:00:14,264 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 亨裕饼朱古力味饼干186g -> 186*None +2025-12-12 11:00:14,264 - app.core.excel.converter - WARNING - 无法解析规格: 186*None,使用默认值1*1 +2025-12-12 11:00:14,266 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.0, 单位: 6932024200552 +2025-12-12 11:00:14,266 - app.core.excel.converter - INFO - 提取规格: 亨裕早茶饼干110g -> 110*None +2025-12-12 11:00:14,266 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 亨裕早茶饼干110g -> 110*None +2025-12-12 11:00:14,267 - app.core.excel.converter - WARNING - 无法解析规格: 110*None,使用默认值1*1 +2025-12-12 11:00:14,267 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 1.7, 单位: 6932024200583 +2025-12-12 11:00:14,267 - app.core.excel.converter - INFO - 提取规格: 趣多多香浓巧克力味85g@ -> 85*None +2025-12-12 11:00:14,267 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 趣多多香浓巧克力味85g@ -> 85*None +2025-12-12 11:00:14,269 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:00:14,269 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 5.2, 单位: 6901668936714 +2025-12-12 11:00:14,269 - app.core.excel.converter - INFO - 提取规格: 趣多多缤纷逗巧克力85g@ -> 85*None +2025-12-12 11:00:14,270 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 趣多多缤纷逗巧克力85g@ -> 85*None +2025-12-12 11:00:14,270 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:00:14,270 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 5.2, 单位: 6901668062499 +2025-12-12 11:00:14,270 - app.core.excel.converter - INFO - 提取规格: 米老头雪花煎卷椰奶味150g@ -> 150*None +2025-12-12 11:00:14,270 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 米老头雪花煎卷椰奶味150g@ -> 150*None +2025-12-12 11:00:14,270 - app.core.excel.converter - WARNING - 无法解析规格: 150*None,使用默认值1*1 +2025-12-12 11:00:14,270 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.8, 单位: 6925332600046 +2025-12-12 11:00:14,273 - app.core.excel.converter - INFO - 提取规格: 金富士牛乳饼干香浓牛奶味130g@ -> 130*None +2025-12-12 11:00:14,273 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 金富士牛乳饼干香浓牛奶味130g@ -> 130*None +2025-12-12 11:00:14,273 - app.core.excel.converter - WARNING - 无法解析规格: 130*None,使用默认值1*1 +2025-12-12 11:00:14,274 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.8, 单位: 6921233904955 +2025-12-12 11:00:14,274 - app.core.excel.converter - INFO - 提取规格: 嘉士利果乐果香蓝莓味85g@ -> 85*None +2025-12-12 11:00:14,274 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 嘉士利果乐果香蓝莓味85g@ -> 85*None +2025-12-12 11:00:14,275 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:00:14,275 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.0, 单位: 6901180993387 +2025-12-12 11:00:14,276 - app.core.excel.converter - INFO - 提取规格: 嘉士利果乐果香草莓味85g@ -> 85*None +2025-12-12 11:00:14,276 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 嘉士利果乐果香草莓味85g@ -> 85*None +2025-12-12 11:00:14,276 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:00:14,277 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.0, 单位: 6901180993486 +2025-12-12 11:00:14,277 - app.core.excel.converter - INFO - 提取规格: 旺旺仙贝52g@ -> 52*None +2025-12-12 11:00:14,277 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 旺旺仙贝52g@ -> 52*None +2025-12-12 11:00:14,277 - app.core.excel.converter - WARNING - 无法解析规格: 52*None,使用默认值1*1 +2025-12-12 11:00:14,277 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 3.95, 单位: 6920546800046 +2025-12-12 11:00:14,277 - app.core.excel.converter - INFO - 提取规格: 旺旺雪饼84g@ -> 84*None +2025-12-12 11:00:14,277 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 旺旺雪饼84g@ -> 84*None +2025-12-12 11:00:14,277 - app.core.excel.converter - WARNING - 无法解析规格: 84*None,使用默认值1*1 +2025-12-12 11:00:14,277 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.5, 单位: 6920546800053 +2025-12-12 11:00:14,277 - app.core.excel.converter - INFO - 提取规格: 达利园蛋黄派230g@ -> 230*None +2025-12-12 11:00:14,277 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园蛋黄派230g@ -> 230*None +2025-12-12 11:00:14,281 - app.core.excel.converter - WARNING - 无法解析规格: 230*None,使用默认值1*1 +2025-12-12 11:00:14,281 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 1.0, 单价: 5.88, 单位: 6911988006783 +2025-12-12 11:00:14,281 - app.core.excel.converter - INFO - 提取规格: 豆多奇鹌鹑蛋豆干烧烤味22g -> 22*None +2025-12-12 11:00:14,281 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 豆多奇鹌鹑蛋豆干烧烤味22g -> 22*None +2025-12-12 11:00:14,283 - app.core.excel.converter - WARNING - 无法解析规格: 22*None,使用默认值1*1 +2025-12-12 11:00:14,283 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 20.0, 单价: 15.0, 单位: 6971295190728 +2025-12-12 11:00:14,283 - app.core.excel.converter - INFO - 提取规格: 劲仔手撕肉干麻辣味10g@ -> 10*None +2025-12-12 11:00:14,284 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 劲仔手撕肉干麻辣味10g@ -> 10*None +2025-12-12 11:00:14,284 - app.core.excel.converter - WARNING - 无法解析规格: 10*None,使用默认值1*1 +2025-12-12 11:00:14,284 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 20.0, 单价: 26.6, 单位: 6951957217215 +2025-12-12 11:00:14,285 - app.core.excel.converter - INFO - 提取规格: 劲仔手撕肉干香辣味10g@ -> 10*None +2025-12-12 11:00:14,285 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 劲仔手撕肉干香辣味10g@ -> 10*None +2025-12-12 11:00:14,286 - app.core.excel.converter - WARNING - 无法解析规格: 10*None,使用默认值1*1 +2025-12-12 11:00:14,286 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 20.0, 单价: 26.6, 单位: 6951957217208 +2025-12-12 11:00:14,342 - app.core.excel.converter - INFO - 提取规格: 登荣香辣爽口鸡23g -> 23*None +2025-12-12 11:00:14,342 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 登荣香辣爽口鸡23g -> 23*None +2025-12-12 11:00:14,342 - app.core.excel.converter - WARNING - 无法解析规格: 23*None,使用默认值1*1 +2025-12-12 11:00:14,342 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 20.0, 单价: 15.0, 单位: +2025-12-12 11:00:14,342 - app.core.excel.converter - INFO - 提取规格: 德芙脆香米脆米心牛奶巧克力12g@ -> 12*None +2025-12-12 11:00:14,342 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 德芙脆香米脆米心牛奶巧克力12g@ -> 12*None +2025-12-12 11:00:14,342 - app.core.excel.converter - WARNING - 无法解析规格: 12*None,使用默认值1*1 +2025-12-12 11:00:14,342 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 16.0, 单价: 23.2, 单位: 6914973603462 +2025-12-12 11:00:14,347 - app.core.excel.converter - INFO - 提取规格: 味芝元洞庭鱼排香辣味26g -> 26*None +2025-12-12 11:00:14,347 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 味芝元洞庭鱼排香辣味26g -> 26*None +2025-12-12 11:00:14,348 - app.core.excel.converter - WARNING - 无法解析规格: 26*None,使用默认值1*1 +2025-12-12 11:00:14,348 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 15.0, 单价: 1.5, 单位: 6936869215092 +2025-12-12 11:00:14,348 - app.core.excel.converter - INFO - 提取规格: 劲仔小鱼麻辣小鱼12g@ -> 12*None +2025-12-12 11:00:14,349 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 劲仔小鱼麻辣小鱼12g@ -> 12*None +2025-12-12 11:00:14,349 - app.core.excel.converter - WARNING - 无法解析规格: 12*None,使用默认值1*1 +2025-12-12 11:00:14,350 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 20.0, 单价: 14.2, 单位: +2025-12-12 11:00:14,350 - app.core.excel.converter - INFO - 提取规格: 缺牙齿素牛肚香辣味16g -> 16*None +2025-12-12 11:00:14,351 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 缺牙齿素牛肚香辣味16g -> 16*None +2025-12-12 11:00:14,351 - app.core.excel.converter - WARNING - 无法解析规格: 16*None,使用默认值1*1 +2025-12-12 11:00:14,351 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 30.0, 单价: 22.5, 单位: 6976481800344 +2025-12-12 11:00:14,352 - app.core.excel.converter - INFO - 提取规格: 乐事青柠味70g@ -> 70*None +2025-12-12 11:00:14,352 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事青柠味70g@ -> 70*None +2025-12-12 11:00:14,353 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:00:14,353 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.79, 单位: 6924743919266 +2025-12-12 11:00:14,353 - app.core.excel.converter - INFO - 提取规格: 乐事黄瓜味70g@ -> 70*None +2025-12-12 11:00:14,353 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事黄瓜味70g@ -> 70*None +2025-12-12 11:00:14,353 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:00:14,353 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.79, 单位: 6924743919259 +2025-12-12 11:00:14,353 - app.core.excel.converter - INFO - 提取规格: 乐事德克萨斯烧烤味70g@ -> 70*None +2025-12-12 11:00:14,353 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事德克萨斯烧烤味70g@ -> 70*None +2025-12-12 11:00:14,353 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:00:14,353 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 4.79, 单位: 6924743919228 +2025-12-12 11:00:14,357 - app.core.excel.converter - INFO - 提取规格: 乐事薯片经典原味23g(串串装)@ -> 23*None +2025-12-12 11:00:14,358 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事薯片经典原味23g(串串装)@ -> 23*None +2025-12-12 11:00:14,358 - app.core.excel.converter - WARNING - 无法解析规格: 23*None,使用默认值1*1 +2025-12-12 11:00:14,359 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 1.0, 单价: 1.35, 单位: 6924743928077 +2025-12-12 11:13:15,281 - app.core.excel.converter - INFO - 成功加载条码映射配置,共51项 +2025-12-12 11:13:15,323 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 雪碧2L@ -> 2L*1 +2025-12-12 11:13:15,326 - app.core.excel.converter - INFO - 解析容量(L)规格: 2L*1 -> 1*1 +2025-12-12 11:13:15,326 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 怡宝饮用纯净水2.08L@ -> 2.08L*1 +2025-12-12 11:13:15,329 - app.core.excel.converter - INFO - 解析容量(L)规格: 2.08L*1 -> 1*1 +2025-12-12 11:13:15,329 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 40.0, 单价: 21.52, 单位: 6901285993046 +2025-12-12 11:13:15,329 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 怡宝纯净水4.5L@ -> 4.5L*1 +2025-12-12 11:13:15,331 - app.core.excel.converter - INFO - 解析容量(L)规格: 4.5L*1 -> 1*1 +2025-12-12 11:13:15,331 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 8.0, 单价: 26.08, 单位: 6901285991547 +2025-12-12 11:13:15,331 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 怡宝饮用纯净水1.555L@ -> 1.555L*1 +2025-12-12 11:13:15,332 - app.core.excel.converter - INFO - 解析容量(L)规格: 1.555L*1 -> 1*1 +2025-12-12 11:13:15,332 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 60.0, 单价: 24.6, 单位: 6901285991288 +2025-12-12 11:13:15,333 - app.core.excel.converter - INFO - 提取规格: 奥利奥薄脆酸甜草莓味95g@ -> 95*None +2025-12-12 11:13:15,333 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥薄脆酸甜草莓味95g@ -> 95*None +2025-12-12 11:13:15,333 - app.core.excel.converter - WARNING - 无法解析规格: 95*None,使用默认值1*1 +2025-12-12 11:13:15,333 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 6.5, 单位: 6901668934925 +2025-12-12 11:13:15,337 - app.core.excel.converter - INFO - 提取规格: 奥利奥杯奥草莓味55g@ -> 55*None +2025-12-12 11:13:15,337 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥杯奥草莓味55g@ -> 55*None +2025-12-12 11:13:15,338 - app.core.excel.converter - WARNING - 无法解析规格: 55*None,使用默认值1*1 +2025-12-12 11:13:15,338 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.6, 单位: 6901668054715 +2025-12-12 11:13:15,339 - app.core.excel.converter - INFO - 提取规格: 奥利奥杯奥巧克力55g@ -> 55*None +2025-12-12 11:13:15,339 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥杯奥巧克力55g@ -> 55*None +2025-12-12 11:13:15,340 - app.core.excel.converter - WARNING - 无法解析规格: 55*None,使用默认值1*1 +2025-12-12 11:13:15,340 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.6, 单位: 6901668053916 +2025-12-12 11:13:15,340 - app.core.excel.converter - INFO - 提取规格: 好丽友蛋黄派2P46g@ -> 46*None +2025-12-12 11:13:15,341 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 好丽友蛋黄派2P46g@ -> 46*None +2025-12-12 11:13:15,342 - app.core.excel.converter - WARNING - 无法解析规格: 46*None,使用默认值1*1 +2025-12-12 11:13:15,342 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.0, 单位: 6920907800616 +2025-12-12 11:13:15,342 - app.core.excel.converter - INFO - 提取规格: 都市牧场爽口含片正梅味38g@ -> 38*None +2025-12-12 11:13:15,343 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 都市牧场爽口含片正梅味38g@ -> 38*None +2025-12-12 11:13:15,344 - app.core.excel.converter - WARNING - 无法解析规格: 38*None,使用默认值1*1 +2025-12-12 11:13:15,345 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 8.0, 单价: 38.0, 单位: +2025-12-12 11:13:15,345 - app.core.excel.converter - INFO - 提取规格: 林振合维C果C软糖什锦味68g -> 68*None +2025-12-12 11:13:15,346 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 林振合维C果C软糖什锦味68g -> 68*None +2025-12-12 11:13:15,347 - app.core.excel.converter - WARNING - 无法解析规格: 68*None,使用默认值1*1 +2025-12-12 11:13:15,347 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 8.0, 单价: 28.0, 单位: +2025-12-12 11:13:15,347 - app.core.excel.converter - INFO - 提取规格: 格力高百醇柠檬48g@ -> 48*None +2025-12-12 11:13:15,348 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 格力高百醇柠檬48g@ -> 48*None +2025-12-12 11:13:15,349 - app.core.excel.converter - WARNING - 无法解析规格: 48*None,使用默认值1*1 +2025-12-12 11:13:15,349 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 5.55, 单位: 6901845044027 +2025-12-12 11:13:15,350 - app.core.excel.converter - INFO - 提取规格: 格力高百醇抹茶慕斯味48g@ -> 48*None +2025-12-12 11:13:15,350 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 格力高百醇抹茶慕斯味48g@ -> 48*None +2025-12-12 11:13:15,351 - app.core.excel.converter - WARNING - 无法解析规格: 48*None,使用默认值1*1 +2025-12-12 11:13:15,352 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 5.55, 单位: 6901845040968 +2025-12-12 11:13:15,352 - app.core.excel.converter - INFO - 提取规格: 奥利奥饼干经典原味48.5g@ -> 48.5*None +2025-12-12 11:13:15,353 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥饼干经典原味48.5g@ -> 48.5*None +2025-12-12 11:13:15,353 - app.core.excel.converter - WARNING - 无法解析规格: 48.5*None,使用默认值1*1 +2025-12-12 11:13:15,353 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 6.0, 单价: 1.99, 单位: 6901668935649 +2025-12-12 11:13:15,355 - app.core.excel.converter - INFO - 提取规格: 奥利奥饼干浓醇巧克力味48.5g@ -> 48.5*None +2025-12-12 11:13:15,355 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥饼干浓醇巧克力味48.5g@ -> 48.5*None +2025-12-12 11:13:15,356 - app.core.excel.converter - WARNING - 无法解析规格: 48.5*None,使用默认值1*1 +2025-12-12 11:13:15,356 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 1.99, 单位: 6901668935663 +2025-12-12 11:13:15,356 - app.core.excel.converter - INFO - 提取规格: 法丽兹曲奇芝士巧克力70g@ -> 70*None +2025-12-12 11:13:15,357 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 法丽兹曲奇芝士巧克力70g@ -> 70*None +2025-12-12 11:13:15,357 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:13:15,357 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 2.66, 单位: 6947929617534 +2025-12-12 11:13:15,357 - app.core.excel.converter - INFO - 提取规格: 法丽兹曲奇香草柠檬巧克力味70g@ -> 70*None +2025-12-12 11:13:15,359 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 法丽兹曲奇香草柠檬巧克力味70g@ -> 70*None +2025-12-12 11:13:15,360 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:13:15,360 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 2.66, 单位: 6947929617138 +2025-12-12 11:13:15,360 - app.core.excel.converter - INFO - 提取规格: 太平梳打饼干奶盐味100g@ -> 100*None +2025-12-12 11:13:15,360 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 太平梳打饼干奶盐味100g@ -> 100*None +2025-12-12 11:13:15,361 - app.core.excel.converter - WARNING - 无法解析规格: 100*None,使用默认值1*1 +2025-12-12 11:13:15,362 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.5, 单位: 6901668200013 +2025-12-12 11:13:15,362 - app.core.excel.converter - INFO - 提取规格: 太平梳打饼干海苔味100g@ -> 100*None +2025-12-12 11:13:15,363 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 太平梳打饼干海苔味100g@ -> 100*None +2025-12-12 11:13:15,363 - app.core.excel.converter - WARNING - 无法解析规格: 100*None,使用默认值1*1 +2025-12-12 11:13:15,363 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.5, 单位: 6901668200303 +2025-12-12 11:13:15,363 - app.core.excel.converter - INFO - 提取规格: 达利园手指饼115g@ -> 115*None +2025-12-12 11:13:15,363 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园手指饼115g@ -> 115*None +2025-12-12 11:13:15,363 - app.core.excel.converter - WARNING - 无法解析规格: 115*None,使用默认值1*1 +2025-12-12 11:13:15,367 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 2.25, 单位: 6911988005229 +2025-12-12 11:13:15,367 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点杏仁酥饼146g@ -> 146*None +2025-12-12 11:13:15,367 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点杏仁酥饼146g@ -> 146*None +2025-12-12 11:13:15,367 - app.core.excel.converter - WARNING - 无法解析规格: 146*None,使用默认值1*1 +2025-12-12 11:13:15,369 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.8, 单位: 6911988000293 +2025-12-12 11:13:15,369 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点核桃酥饼146g@ -> 146*None +2025-12-12 11:13:15,369 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点核桃酥饼146g@ -> 146*None +2025-12-12 11:13:15,370 - app.core.excel.converter - WARNING - 无法解析规格: 146*None,使用默认值1*1 +2025-12-12 11:13:15,370 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.8, 单位: 6911988000286 +2025-12-12 11:13:15,371 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点香脆腰果饼108g@ -> 108*None +2025-12-12 11:13:15,371 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点香脆腰果饼108g@ -> 108*None +2025-12-12 11:13:15,372 - app.core.excel.converter - WARNING - 无法解析规格: 108*None,使用默认值1*1 +2025-12-12 11:13:15,372 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.85, 单位: 6911988009777 +2025-12-12 11:13:15,373 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点香脆杏仁饼108g@ -> 108*None +2025-12-12 11:13:15,373 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点香脆杏仁饼108g@ -> 108*None +2025-12-12 11:13:15,374 - app.core.excel.converter - WARNING - 无法解析规格: 108*None,使用默认值1*1 +2025-12-12 11:13:15,374 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.85, 单位: 6911988009760 +2025-12-12 11:13:15,374 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点香脆核桃饼108g@ -> 108*None +2025-12-12 11:13:15,374 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点香脆核桃饼108g@ -> 108*None +2025-12-12 11:13:15,374 - app.core.excel.converter - WARNING - 无法解析规格: 108*None,使用默认值1*1 +2025-12-12 11:13:15,374 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.85, 单位: 6911988009784 +2025-12-12 11:13:15,374 - app.core.excel.converter - INFO - 提取规格: 嘉士利威化饼干草莓味115g@ -> 115*None +2025-12-12 11:13:15,374 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 嘉士利威化饼干草莓味115g@ -> 115*None +2025-12-12 11:13:15,378 - app.core.excel.converter - WARNING - 无法解析规格: 115*None,使用默认值1*1 +2025-12-12 11:13:15,378 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 2.0, 单价: 3.8, 单位: 6901180581683 +2025-12-12 11:13:15,378 - app.core.excel.converter - INFO - 提取规格: 亨裕饼朱古力味饼干186g -> 186*None +2025-12-12 11:13:15,379 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 亨裕饼朱古力味饼干186g -> 186*None +2025-12-12 11:13:15,380 - app.core.excel.converter - WARNING - 无法解析规格: 186*None,使用默认值1*1 +2025-12-12 11:13:15,380 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.0, 单位: 6932024200552 +2025-12-12 11:13:15,380 - app.core.excel.converter - INFO - 提取规格: 亨裕早茶饼干110g -> 110*None +2025-12-12 11:13:15,381 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 亨裕早茶饼干110g -> 110*None +2025-12-12 11:13:15,382 - app.core.excel.converter - WARNING - 无法解析规格: 110*None,使用默认值1*1 +2025-12-12 11:13:15,382 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 1.7, 单位: 6932024200583 +2025-12-12 11:13:15,382 - app.core.excel.converter - INFO - 提取规格: 趣多多香浓巧克力味85g@ -> 85*None +2025-12-12 11:13:15,382 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 趣多多香浓巧克力味85g@ -> 85*None +2025-12-12 11:13:15,384 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:13:15,384 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 5.2, 单位: 6901668936714 +2025-12-12 11:13:15,385 - app.core.excel.converter - INFO - 提取规格: 趣多多缤纷逗巧克力85g@ -> 85*None +2025-12-12 11:13:15,385 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 趣多多缤纷逗巧克力85g@ -> 85*None +2025-12-12 11:13:15,386 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:13:15,386 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 5.2, 单位: 6901668062499 +2025-12-12 11:13:15,387 - app.core.excel.converter - INFO - 提取规格: 米老头雪花煎卷椰奶味150g@ -> 150*None +2025-12-12 11:13:15,387 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 米老头雪花煎卷椰奶味150g@ -> 150*None +2025-12-12 11:13:15,388 - app.core.excel.converter - WARNING - 无法解析规格: 150*None,使用默认值1*1 +2025-12-12 11:13:15,389 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.8, 单位: 6925332600046 +2025-12-12 11:13:15,389 - app.core.excel.converter - INFO - 提取规格: 金富士牛乳饼干香浓牛奶味130g@ -> 130*None +2025-12-12 11:13:15,389 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 金富士牛乳饼干香浓牛奶味130g@ -> 130*None +2025-12-12 11:13:15,390 - app.core.excel.converter - WARNING - 无法解析规格: 130*None,使用默认值1*1 +2025-12-12 11:13:15,391 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.8, 单位: 6921233904955 +2025-12-12 11:13:15,391 - app.core.excel.converter - INFO - 提取规格: 嘉士利果乐果香蓝莓味85g@ -> 85*None +2025-12-12 11:13:15,391 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 嘉士利果乐果香蓝莓味85g@ -> 85*None +2025-12-12 11:13:15,392 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:13:15,393 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.0, 单位: 6901180993387 +2025-12-12 11:13:15,393 - app.core.excel.converter - INFO - 提取规格: 嘉士利果乐果香草莓味85g@ -> 85*None +2025-12-12 11:13:15,393 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 嘉士利果乐果香草莓味85g@ -> 85*None +2025-12-12 11:13:15,393 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:13:15,393 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.0, 单位: 6901180993486 +2025-12-12 11:13:15,393 - app.core.excel.converter - INFO - 提取规格: 旺旺仙贝52g@ -> 52*None +2025-12-12 11:13:15,393 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 旺旺仙贝52g@ -> 52*None +2025-12-12 11:13:15,393 - app.core.excel.converter - WARNING - 无法解析规格: 52*None,使用默认值1*1 +2025-12-12 11:13:15,393 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 3.95, 单位: 6920546800046 +2025-12-12 11:13:15,397 - app.core.excel.converter - INFO - 提取规格: 旺旺雪饼84g@ -> 84*None +2025-12-12 11:13:15,398 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 旺旺雪饼84g@ -> 84*None +2025-12-12 11:13:15,399 - app.core.excel.converter - WARNING - 无法解析规格: 84*None,使用默认值1*1 +2025-12-12 11:13:15,399 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.5, 单位: 6920546800053 +2025-12-12 11:13:15,399 - app.core.excel.converter - INFO - 提取规格: 达利园蛋黄派230g@ -> 230*None +2025-12-12 11:13:15,399 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园蛋黄派230g@ -> 230*None +2025-12-12 11:13:15,400 - app.core.excel.converter - WARNING - 无法解析规格: 230*None,使用默认值1*1 +2025-12-12 11:13:15,401 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 1.0, 单价: 5.88, 单位: 6911988006783 +2025-12-12 11:13:15,401 - app.core.excel.converter - INFO - 提取规格: 豆多奇鹌鹑蛋豆干烧烤味22g -> 22*None +2025-12-12 11:13:15,401 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 豆多奇鹌鹑蛋豆干烧烤味22g -> 22*None +2025-12-12 11:13:15,402 - app.core.excel.converter - WARNING - 无法解析规格: 22*None,使用默认值1*1 +2025-12-12 11:13:15,403 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 20.0, 单价: 15.0, 单位: 6971295190728 +2025-12-12 11:13:15,403 - app.core.excel.converter - INFO - 提取规格: 劲仔手撕肉干麻辣味10g@ -> 10*None +2025-12-12 11:13:15,403 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 劲仔手撕肉干麻辣味10g@ -> 10*None +2025-12-12 11:13:15,404 - app.core.excel.converter - WARNING - 无法解析规格: 10*None,使用默认值1*1 +2025-12-12 11:13:15,404 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 20.0, 单价: 26.6, 单位: 6951957217215 +2025-12-12 11:13:15,404 - app.core.excel.converter - INFO - 提取规格: 劲仔手撕肉干香辣味10g@ -> 10*None +2025-12-12 11:13:15,404 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 劲仔手撕肉干香辣味10g@ -> 10*None +2025-12-12 11:13:15,404 - app.core.excel.converter - WARNING - 无法解析规格: 10*None,使用默认值1*1 +2025-12-12 11:13:15,404 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 20.0, 单价: 26.6, 单位: 6951957217208 +2025-12-12 11:13:15,404 - app.core.excel.converter - INFO - 提取规格: 登荣香辣爽口鸡23g -> 23*None +2025-12-12 11:13:15,408 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 登荣香辣爽口鸡23g -> 23*None +2025-12-12 11:13:15,408 - app.core.excel.converter - WARNING - 无法解析规格: 23*None,使用默认值1*1 +2025-12-12 11:13:15,409 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 20.0, 单价: 15.0, 单位: +2025-12-12 11:13:15,409 - app.core.excel.converter - INFO - 提取规格: 德芙脆香米脆米心牛奶巧克力12g@ -> 12*None +2025-12-12 11:13:15,409 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 德芙脆香米脆米心牛奶巧克力12g@ -> 12*None +2025-12-12 11:13:15,410 - app.core.excel.converter - WARNING - 无法解析规格: 12*None,使用默认值1*1 +2025-12-12 11:13:15,410 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 16.0, 单价: 23.2, 单位: 6914973603462 +2025-12-12 11:13:15,411 - app.core.excel.converter - INFO - 提取规格: 味芝元洞庭鱼排香辣味26g -> 26*None +2025-12-12 11:13:15,411 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 味芝元洞庭鱼排香辣味26g -> 26*None +2025-12-12 11:13:15,412 - app.core.excel.converter - WARNING - 无法解析规格: 26*None,使用默认值1*1 +2025-12-12 11:13:15,413 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 15.0, 单价: 1.5, 单位: 6936869215092 +2025-12-12 11:13:15,413 - app.core.excel.converter - INFO - 提取规格: 劲仔小鱼麻辣小鱼12g@ -> 12*None +2025-12-12 11:13:15,413 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 劲仔小鱼麻辣小鱼12g@ -> 12*None +2025-12-12 11:13:15,413 - app.core.excel.converter - WARNING - 无法解析规格: 12*None,使用默认值1*1 +2025-12-12 11:13:15,413 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 20.0, 单价: 14.2, 单位: +2025-12-12 11:13:15,413 - app.core.excel.converter - INFO - 提取规格: 缺牙齿素牛肚香辣味16g -> 16*None +2025-12-12 11:13:15,413 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 缺牙齿素牛肚香辣味16g -> 16*None +2025-12-12 11:13:15,417 - app.core.excel.converter - WARNING - 无法解析规格: 16*None,使用默认值1*1 +2025-12-12 11:13:15,417 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 30.0, 单价: 22.5, 单位: 6976481800344 +2025-12-12 11:13:15,417 - app.core.excel.converter - INFO - 提取规格: 乐事青柠味70g@ -> 70*None +2025-12-12 11:13:15,417 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事青柠味70g@ -> 70*None +2025-12-12 11:13:15,419 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:13:15,419 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.79, 单位: 6924743919266 +2025-12-12 11:13:15,420 - app.core.excel.converter - INFO - 提取规格: 乐事黄瓜味70g@ -> 70*None +2025-12-12 11:13:15,420 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事黄瓜味70g@ -> 70*None +2025-12-12 11:13:15,421 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:13:15,421 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.79, 单位: 6924743919259 +2025-12-12 11:13:15,422 - app.core.excel.converter - INFO - 提取规格: 乐事德克萨斯烧烤味70g@ -> 70*None +2025-12-12 11:13:15,422 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事德克萨斯烧烤味70g@ -> 70*None +2025-12-12 11:13:15,423 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:13:15,423 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 4.79, 单位: 6924743919228 +2025-12-12 11:13:15,423 - app.core.excel.converter - INFO - 提取规格: 乐事薯片经典原味23g(串串装)@ -> 23*None +2025-12-12 11:13:15,423 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事薯片经典原味23g(串串装)@ -> 23*None +2025-12-12 11:13:15,423 - app.core.excel.converter - WARNING - 无法解析规格: 23*None,使用默认值1*1 +2025-12-12 11:13:15,423 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 1.0, 单价: 1.35, 单位: 6924743928077 +2025-12-12 11:22:25,990 - app.core.excel.converter - INFO - 成功加载条码映射配置,共51项 +2025-12-12 11:22:26,024 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 雪碧2L@ -> 2L*1 +2025-12-12 11:22:26,027 - app.core.excel.converter - INFO - 解析容量(L)规格: 2L*1 -> 1*1 +2025-12-12 11:22:26,028 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 怡宝饮用纯净水2.08L@ -> 2.08L*1 +2025-12-12 11:22:26,029 - app.core.excel.converter - INFO - 解析容量(L)规格: 2.08L*1 -> 1*1 +2025-12-12 11:22:26,030 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 40.0, 单价: 21.52, 单位: 6901285993046 +2025-12-12 11:22:26,031 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 怡宝纯净水4.5L@ -> 4.5L*1 +2025-12-12 11:22:26,032 - app.core.excel.converter - INFO - 解析容量(L)规格: 4.5L*1 -> 1*1 +2025-12-12 11:22:26,032 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 8.0, 单价: 26.08, 单位: 6901285991547 +2025-12-12 11:22:26,032 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 怡宝饮用纯净水1.555L@ -> 1.555L*1 +2025-12-12 11:22:26,033 - app.core.excel.converter - INFO - 解析容量(L)规格: 1.555L*1 -> 1*1 +2025-12-12 11:22:26,033 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 60.0, 单价: 24.6, 单位: 6901285991288 +2025-12-12 11:22:26,034 - app.core.excel.converter - INFO - 提取规格: 奥利奥薄脆酸甜草莓味95g@ -> 95*None +2025-12-12 11:22:26,034 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥薄脆酸甜草莓味95g@ -> 95*None +2025-12-12 11:22:26,036 - app.core.excel.converter - WARNING - 无法解析规格: 95*None,使用默认值1*1 +2025-12-12 11:22:26,036 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 6.5, 单位: 6901668934925 +2025-12-12 11:22:26,037 - app.core.excel.converter - INFO - 提取规格: 奥利奥杯奥草莓味55g@ -> 55*None +2025-12-12 11:22:26,037 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥杯奥草莓味55g@ -> 55*None +2025-12-12 11:22:26,039 - app.core.excel.converter - WARNING - 无法解析规格: 55*None,使用默认值1*1 +2025-12-12 11:22:26,039 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.6, 单位: 6901668054715 +2025-12-12 11:22:26,039 - app.core.excel.converter - INFO - 提取规格: 奥利奥杯奥巧克力55g@ -> 55*None +2025-12-12 11:22:26,040 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥杯奥巧克力55g@ -> 55*None +2025-12-12 11:22:26,040 - app.core.excel.converter - WARNING - 无法解析规格: 55*None,使用默认值1*1 +2025-12-12 11:22:26,040 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.6, 单位: 6901668053916 +2025-12-12 11:22:26,040 - app.core.excel.converter - INFO - 提取规格: 好丽友蛋黄派2P46g@ -> 46*None +2025-12-12 11:22:26,042 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 好丽友蛋黄派2P46g@ -> 46*None +2025-12-12 11:22:26,042 - app.core.excel.converter - WARNING - 无法解析规格: 46*None,使用默认值1*1 +2025-12-12 11:22:26,042 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.0, 单位: 6920907800616 +2025-12-12 11:22:26,043 - app.core.excel.converter - INFO - 提取规格: 都市牧场爽口含片正梅味38g@ -> 38*None +2025-12-12 11:22:26,043 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 都市牧场爽口含片正梅味38g@ -> 38*None +2025-12-12 11:22:26,045 - app.core.excel.converter - WARNING - 无法解析规格: 38*None,使用默认值1*1 +2025-12-12 11:22:26,045 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 8.0, 单价: 38.0, 单位: +2025-12-12 11:22:26,046 - app.core.excel.converter - INFO - 提取规格: 林振合维C果C软糖什锦味68g -> 68*None +2025-12-12 11:22:26,046 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 林振合维C果C软糖什锦味68g -> 68*None +2025-12-12 11:22:26,047 - app.core.excel.converter - WARNING - 无法解析规格: 68*None,使用默认值1*1 +2025-12-12 11:22:26,047 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 8.0, 单价: 28.0, 单位: +2025-12-12 11:22:26,048 - app.core.excel.converter - INFO - 提取规格: 格力高百醇柠檬48g@ -> 48*None +2025-12-12 11:22:26,048 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 格力高百醇柠檬48g@ -> 48*None +2025-12-12 11:22:26,049 - app.core.excel.converter - WARNING - 无法解析规格: 48*None,使用默认值1*1 +2025-12-12 11:22:26,049 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 5.55, 单位: 6901845044027 +2025-12-12 11:22:26,050 - app.core.excel.converter - INFO - 提取规格: 格力高百醇抹茶慕斯味48g@ -> 48*None +2025-12-12 11:22:26,050 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 格力高百醇抹茶慕斯味48g@ -> 48*None +2025-12-12 11:22:26,050 - app.core.excel.converter - WARNING - 无法解析规格: 48*None,使用默认值1*1 +2025-12-12 11:22:26,051 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 5.55, 单位: 6901845040968 +2025-12-12 11:22:26,051 - app.core.excel.converter - INFO - 提取规格: 奥利奥饼干经典原味48.5g@ -> 48.5*None +2025-12-12 11:22:26,051 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥饼干经典原味48.5g@ -> 48.5*None +2025-12-12 11:22:26,052 - app.core.excel.converter - WARNING - 无法解析规格: 48.5*None,使用默认值1*1 +2025-12-12 11:22:26,052 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 6.0, 单价: 1.99, 单位: 6901668935649 +2025-12-12 11:22:26,052 - app.core.excel.converter - INFO - 提取规格: 奥利奥饼干浓醇巧克力味48.5g@ -> 48.5*None +2025-12-12 11:22:26,052 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥饼干浓醇巧克力味48.5g@ -> 48.5*None +2025-12-12 11:22:26,052 - app.core.excel.converter - WARNING - 无法解析规格: 48.5*None,使用默认值1*1 +2025-12-12 11:22:26,052 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 1.99, 单位: 6901668935663 +2025-12-12 11:22:26,055 - app.core.excel.converter - INFO - 提取规格: 法丽兹曲奇芝士巧克力70g@ -> 70*None +2025-12-12 11:22:26,056 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 法丽兹曲奇芝士巧克力70g@ -> 70*None +2025-12-12 11:22:26,057 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:22:26,057 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 2.66, 单位: 6947929617534 +2025-12-12 11:22:26,057 - app.core.excel.converter - INFO - 提取规格: 法丽兹曲奇香草柠檬巧克力味70g@ -> 70*None +2025-12-12 11:22:26,058 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 法丽兹曲奇香草柠檬巧克力味70g@ -> 70*None +2025-12-12 11:22:26,059 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:22:26,059 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 2.66, 单位: 6947929617138 +2025-12-12 11:22:26,059 - app.core.excel.converter - INFO - 提取规格: 太平梳打饼干奶盐味100g@ -> 100*None +2025-12-12 11:22:26,060 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 太平梳打饼干奶盐味100g@ -> 100*None +2025-12-12 11:22:26,061 - app.core.excel.converter - WARNING - 无法解析规格: 100*None,使用默认值1*1 +2025-12-12 11:22:26,061 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.5, 单位: 6901668200013 +2025-12-12 11:22:26,061 - app.core.excel.converter - INFO - 提取规格: 太平梳打饼干海苔味100g@ -> 100*None +2025-12-12 11:22:26,061 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 太平梳打饼干海苔味100g@ -> 100*None +2025-12-12 11:22:26,061 - app.core.excel.converter - WARNING - 无法解析规格: 100*None,使用默认值1*1 +2025-12-12 11:22:26,061 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.5, 单位: 6901668200303 +2025-12-12 11:22:26,061 - app.core.excel.converter - INFO - 提取规格: 达利园手指饼115g@ -> 115*None +2025-12-12 11:22:26,061 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园手指饼115g@ -> 115*None +2025-12-12 11:22:26,065 - app.core.excel.converter - WARNING - 无法解析规格: 115*None,使用默认值1*1 +2025-12-12 11:22:26,065 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 2.25, 单位: 6911988005229 +2025-12-12 11:22:26,065 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点杏仁酥饼146g@ -> 146*None +2025-12-12 11:22:26,065 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点杏仁酥饼146g@ -> 146*None +2025-12-12 11:22:26,066 - app.core.excel.converter - WARNING - 无法解析规格: 146*None,使用默认值1*1 +2025-12-12 11:22:26,067 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.8, 单位: 6911988000293 +2025-12-12 11:22:26,068 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点核桃酥饼146g@ -> 146*None +2025-12-12 11:22:26,068 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点核桃酥饼146g@ -> 146*None +2025-12-12 11:22:26,069 - app.core.excel.converter - WARNING - 无法解析规格: 146*None,使用默认值1*1 +2025-12-12 11:22:26,069 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.8, 单位: 6911988000286 +2025-12-12 11:22:26,069 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点香脆腰果饼108g@ -> 108*None +2025-12-12 11:22:26,069 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点香脆腰果饼108g@ -> 108*None +2025-12-12 11:22:26,070 - app.core.excel.converter - WARNING - 无法解析规格: 108*None,使用默认值1*1 +2025-12-12 11:22:26,070 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.85, 单位: 6911988009777 +2025-12-12 11:22:26,071 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点香脆杏仁饼108g@ -> 108*None +2025-12-12 11:22:26,071 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点香脆杏仁饼108g@ -> 108*None +2025-12-12 11:22:26,072 - app.core.excel.converter - WARNING - 无法解析规格: 108*None,使用默认值1*1 +2025-12-12 11:22:26,072 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.85, 单位: 6911988009760 +2025-12-12 11:22:26,072 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点香脆核桃饼108g@ -> 108*None +2025-12-12 11:22:26,073 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点香脆核桃饼108g@ -> 108*None +2025-12-12 11:22:26,074 - app.core.excel.converter - WARNING - 无法解析规格: 108*None,使用默认值1*1 +2025-12-12 11:22:26,074 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.85, 单位: 6911988009784 +2025-12-12 11:22:26,074 - app.core.excel.converter - INFO - 提取规格: 嘉士利威化饼干草莓味115g@ -> 115*None +2025-12-12 11:22:26,074 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 嘉士利威化饼干草莓味115g@ -> 115*None +2025-12-12 11:22:26,075 - app.core.excel.converter - WARNING - 无法解析规格: 115*None,使用默认值1*1 +2025-12-12 11:22:26,075 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 2.0, 单价: 3.8, 单位: 6901180581683 +2025-12-12 11:22:26,075 - app.core.excel.converter - INFO - 提取规格: 亨裕饼朱古力味饼干186g -> 186*None +2025-12-12 11:22:26,075 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 亨裕饼朱古力味饼干186g -> 186*None +2025-12-12 11:22:26,078 - app.core.excel.converter - WARNING - 无法解析规格: 186*None,使用默认值1*1 +2025-12-12 11:22:26,078 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.0, 单位: 6932024200552 +2025-12-12 11:22:26,078 - app.core.excel.converter - INFO - 提取规格: 亨裕早茶饼干110g -> 110*None +2025-12-12 11:22:26,079 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 亨裕早茶饼干110g -> 110*None +2025-12-12 11:22:26,079 - app.core.excel.converter - WARNING - 无法解析规格: 110*None,使用默认值1*1 +2025-12-12 11:22:26,080 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 1.7, 单位: 6932024200583 +2025-12-12 11:22:26,080 - app.core.excel.converter - INFO - 提取规格: 趣多多香浓巧克力味85g@ -> 85*None +2025-12-12 11:22:26,080 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 趣多多香浓巧克力味85g@ -> 85*None +2025-12-12 11:22:26,080 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:22:26,080 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 5.2, 单位: 6901668936714 +2025-12-12 11:22:26,081 - app.core.excel.converter - INFO - 提取规格: 趣多多缤纷逗巧克力85g@ -> 85*None +2025-12-12 11:22:26,081 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 趣多多缤纷逗巧克力85g@ -> 85*None +2025-12-12 11:22:26,082 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:22:26,082 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 5.2, 单位: 6901668062499 +2025-12-12 11:22:26,082 - app.core.excel.converter - INFO - 提取规格: 米老头雪花煎卷椰奶味150g@ -> 150*None +2025-12-12 11:22:26,083 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 米老头雪花煎卷椰奶味150g@ -> 150*None +2025-12-12 11:22:26,083 - app.core.excel.converter - WARNING - 无法解析规格: 150*None,使用默认值1*1 +2025-12-12 11:22:26,083 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.8, 单位: 6925332600046 +2025-12-12 11:22:26,083 - app.core.excel.converter - INFO - 提取规格: 金富士牛乳饼干香浓牛奶味130g@ -> 130*None +2025-12-12 11:22:26,083 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 金富士牛乳饼干香浓牛奶味130g@ -> 130*None +2025-12-12 11:22:26,086 - app.core.excel.converter - WARNING - 无法解析规格: 130*None,使用默认值1*1 +2025-12-12 11:22:26,086 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.8, 单位: 6921233904955 +2025-12-12 11:22:26,086 - app.core.excel.converter - INFO - 提取规格: 嘉士利果乐果香蓝莓味85g@ -> 85*None +2025-12-12 11:22:26,087 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 嘉士利果乐果香蓝莓味85g@ -> 85*None +2025-12-12 11:22:26,088 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:22:26,088 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.0, 单位: 6901180993387 +2025-12-12 11:22:26,089 - app.core.excel.converter - INFO - 提取规格: 嘉士利果乐果香草莓味85g@ -> 85*None +2025-12-12 11:22:26,089 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 嘉士利果乐果香草莓味85g@ -> 85*None +2025-12-12 11:22:26,090 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:22:26,090 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.0, 单位: 6901180993486 +2025-12-12 11:22:26,091 - app.core.excel.converter - INFO - 提取规格: 旺旺仙贝52g@ -> 52*None +2025-12-12 11:22:26,091 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 旺旺仙贝52g@ -> 52*None +2025-12-12 11:22:26,091 - app.core.excel.converter - WARNING - 无法解析规格: 52*None,使用默认值1*1 +2025-12-12 11:22:26,091 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 3.95, 单位: 6920546800046 +2025-12-12 11:22:26,091 - app.core.excel.converter - INFO - 提取规格: 旺旺雪饼84g@ -> 84*None +2025-12-12 11:22:26,091 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 旺旺雪饼84g@ -> 84*None +2025-12-12 11:22:26,091 - app.core.excel.converter - WARNING - 无法解析规格: 84*None,使用默认值1*1 +2025-12-12 11:22:26,091 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.5, 单位: 6920546800053 +2025-12-12 11:22:26,095 - app.core.excel.converter - INFO - 提取规格: 达利园蛋黄派230g@ -> 230*None +2025-12-12 11:22:26,095 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园蛋黄派230g@ -> 230*None +2025-12-12 11:22:26,096 - app.core.excel.converter - WARNING - 无法解析规格: 230*None,使用默认值1*1 +2025-12-12 11:22:26,096 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 1.0, 单价: 5.88, 单位: 6911988006783 +2025-12-12 11:22:26,097 - app.core.excel.converter - INFO - 提取规格: 豆多奇鹌鹑蛋豆干烧烤味22g -> 22*None +2025-12-12 11:22:26,097 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 豆多奇鹌鹑蛋豆干烧烤味22g -> 22*None +2025-12-12 11:22:26,098 - app.core.excel.converter - WARNING - 无法解析规格: 22*None,使用默认值1*1 +2025-12-12 11:22:26,098 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 20.0, 单价: 15.0, 单位: 6971295190728 +2025-12-12 11:22:26,099 - app.core.excel.converter - INFO - 提取规格: 劲仔手撕肉干麻辣味10g@ -> 10*None +2025-12-12 11:22:26,099 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 劲仔手撕肉干麻辣味10g@ -> 10*None +2025-12-12 11:22:26,099 - app.core.excel.converter - WARNING - 无法解析规格: 10*None,使用默认值1*1 +2025-12-12 11:22:26,100 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 20.0, 单价: 26.6, 单位: 6951957217215 +2025-12-12 11:22:26,100 - app.core.excel.converter - INFO - 提取规格: 劲仔手撕肉干香辣味10g@ -> 10*None +2025-12-12 11:22:26,100 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 劲仔手撕肉干香辣味10g@ -> 10*None +2025-12-12 11:22:26,100 - app.core.excel.converter - WARNING - 无法解析规格: 10*None,使用默认值1*1 +2025-12-12 11:22:26,100 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 20.0, 单价: 26.6, 单位: 6951957217208 +2025-12-12 11:22:26,100 - app.core.excel.converter - INFO - 提取规格: 登荣香辣爽口鸡23g -> 23*None +2025-12-12 11:22:26,100 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 登荣香辣爽口鸡23g -> 23*None +2025-12-12 11:22:26,104 - app.core.excel.converter - WARNING - 无法解析规格: 23*None,使用默认值1*1 +2025-12-12 11:22:26,104 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 20.0, 单价: 15.0, 单位: +2025-12-12 11:22:26,104 - app.core.excel.converter - INFO - 提取规格: 德芙脆香米脆米心牛奶巧克力12g@ -> 12*None +2025-12-12 11:22:26,106 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 德芙脆香米脆米心牛奶巧克力12g@ -> 12*None +2025-12-12 11:22:26,106 - app.core.excel.converter - WARNING - 无法解析规格: 12*None,使用默认值1*1 +2025-12-12 11:22:26,106 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 16.0, 单价: 23.2, 单位: 6914973603462 +2025-12-12 11:22:26,107 - app.core.excel.converter - INFO - 提取规格: 味芝元洞庭鱼排香辣味26g -> 26*None +2025-12-12 11:22:26,107 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 味芝元洞庭鱼排香辣味26g -> 26*None +2025-12-12 11:22:26,108 - app.core.excel.converter - WARNING - 无法解析规格: 26*None,使用默认值1*1 +2025-12-12 11:22:26,108 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 15.0, 单价: 1.5, 单位: 6936869215092 +2025-12-12 11:22:26,109 - app.core.excel.converter - INFO - 提取规格: 劲仔小鱼麻辣小鱼12g@ -> 12*None +2025-12-12 11:22:26,109 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 劲仔小鱼麻辣小鱼12g@ -> 12*None +2025-12-12 11:22:26,110 - app.core.excel.converter - WARNING - 无法解析规格: 12*None,使用默认值1*1 +2025-12-12 11:22:26,110 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 20.0, 单价: 14.2, 单位: +2025-12-12 11:22:26,110 - app.core.excel.converter - INFO - 提取规格: 缺牙齿素牛肚香辣味16g -> 16*None +2025-12-12 11:22:26,110 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 缺牙齿素牛肚香辣味16g -> 16*None +2025-12-12 11:22:26,111 - app.core.excel.converter - WARNING - 无法解析规格: 16*None,使用默认值1*1 +2025-12-12 11:22:26,111 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 30.0, 单价: 22.5, 单位: 6976481800344 +2025-12-12 11:22:26,111 - app.core.excel.converter - INFO - 提取规格: 乐事青柠味70g@ -> 70*None +2025-12-12 11:22:26,111 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事青柠味70g@ -> 70*None +2025-12-12 11:22:26,111 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:22:26,111 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.79, 单位: 6924743919266 +2025-12-12 11:22:26,111 - app.core.excel.converter - INFO - 提取规格: 乐事黄瓜味70g@ -> 70*None +2025-12-12 11:22:26,111 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事黄瓜味70g@ -> 70*None +2025-12-12 11:22:26,111 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:22:26,115 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.79, 单位: 6924743919259 +2025-12-12 11:22:26,116 - app.core.excel.converter - INFO - 提取规格: 乐事德克萨斯烧烤味70g@ -> 70*None +2025-12-12 11:22:26,116 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事德克萨斯烧烤味70g@ -> 70*None +2025-12-12 11:22:26,117 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:22:26,117 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 4.79, 单位: 6924743919228 +2025-12-12 11:22:26,118 - app.core.excel.converter - INFO - 提取规格: 乐事薯片经典原味23g(串串装)@ -> 23*None +2025-12-12 11:22:26,118 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事薯片经典原味23g(串串装)@ -> 23*None +2025-12-12 11:22:26,119 - app.core.excel.converter - WARNING - 无法解析规格: 23*None,使用默认值1*1 +2025-12-12 11:22:26,119 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 1.0, 单价: 1.35, 单位: 6924743928077 +2025-12-12 11:32:26,690 - app.core.excel.converter - INFO - 成功加载条码映射配置,共51项 +2025-12-12 11:32:26,725 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 雪碧2L@ -> 2L*1 +2025-12-12 11:32:26,726 - app.core.excel.converter - INFO - 解析容量(L)规格: 2L*1 -> 1*1 +2025-12-12 11:32:26,726 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 怡宝饮用纯净水2.08L@ -> 2.08L*1 +2025-12-12 11:32:26,726 - app.core.excel.converter - INFO - 解析容量(L)规格: 2.08L*1 -> 1*1 +2025-12-12 11:32:26,730 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 40.0, 单价: 21.52, 单位: 6901285993046 +2025-12-12 11:32:26,730 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 怡宝纯净水4.5L@ -> 4.5L*1 +2025-12-12 11:32:26,732 - app.core.excel.converter - INFO - 解析容量(L)规格: 4.5L*1 -> 1*1 +2025-12-12 11:32:26,732 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 8.0, 单价: 26.08, 单位: 6901285991547 +2025-12-12 11:32:26,733 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 怡宝饮用纯净水1.555L@ -> 1.555L*1 +2025-12-12 11:32:26,733 - app.core.excel.converter - INFO - 解析容量(L)规格: 1.555L*1 -> 1*1 +2025-12-12 11:32:26,733 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 60.0, 单价: 24.6, 单位: 6901285991288 +2025-12-12 11:32:26,734 - app.core.excel.converter - INFO - 提取规格: 奥利奥薄脆酸甜草莓味95g@ -> 95*None +2025-12-12 11:32:26,734 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥薄脆酸甜草莓味95g@ -> 95*None +2025-12-12 11:32:26,735 - app.core.excel.converter - WARNING - 无法解析规格: 95*None,使用默认值1*1 +2025-12-12 11:32:26,736 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 6.5, 单位: 6901668934925 +2025-12-12 11:32:26,736 - app.core.excel.converter - INFO - 提取规格: 奥利奥杯奥草莓味55g@ -> 55*None +2025-12-12 11:32:26,736 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥杯奥草莓味55g@ -> 55*None +2025-12-12 11:32:26,736 - app.core.excel.converter - WARNING - 无法解析规格: 55*None,使用默认值1*1 +2025-12-12 11:32:26,736 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.6, 单位: 6901668054715 +2025-12-12 11:32:26,736 - app.core.excel.converter - INFO - 提取规格: 奥利奥杯奥巧克力55g@ -> 55*None +2025-12-12 11:32:26,739 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥杯奥巧克力55g@ -> 55*None +2025-12-12 11:32:26,739 - app.core.excel.converter - WARNING - 无法解析规格: 55*None,使用默认值1*1 +2025-12-12 11:32:26,739 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.6, 单位: 6901668053916 +2025-12-12 11:32:26,739 - app.core.excel.converter - INFO - 提取规格: 好丽友蛋黄派2P46g@ -> 46*None +2025-12-12 11:32:26,739 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 好丽友蛋黄派2P46g@ -> 46*None +2025-12-12 11:32:26,742 - app.core.excel.converter - WARNING - 无法解析规格: 46*None,使用默认值1*1 +2025-12-12 11:32:26,742 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.0, 单位: 6920907800616 +2025-12-12 11:32:26,743 - app.core.excel.converter - INFO - 提取规格: 都市牧场爽口含片正梅味38g@ -> 38*None +2025-12-12 11:32:26,743 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 都市牧场爽口含片正梅味38g@ -> 38*None +2025-12-12 11:32:26,744 - app.core.excel.converter - WARNING - 无法解析规格: 38*None,使用默认值1*1 +2025-12-12 11:32:26,744 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 8.0, 单价: 38.0, 单位: +2025-12-12 11:32:26,744 - app.core.excel.converter - INFO - 提取规格: 林振合维C果C软糖什锦味68g -> 68*None +2025-12-12 11:32:26,745 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 林振合维C果C软糖什锦味68g -> 68*None +2025-12-12 11:32:26,746 - app.core.excel.converter - WARNING - 无法解析规格: 68*None,使用默认值1*1 +2025-12-12 11:32:26,746 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 8.0, 单价: 28.0, 单位: +2025-12-12 11:32:26,746 - app.core.excel.converter - INFO - 提取规格: 格力高百醇柠檬48g@ -> 48*None +2025-12-12 11:32:26,746 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 格力高百醇柠檬48g@ -> 48*None +2025-12-12 11:32:26,747 - app.core.excel.converter - WARNING - 无法解析规格: 48*None,使用默认值1*1 +2025-12-12 11:32:26,747 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 5.55, 单位: 6901845044027 +2025-12-12 11:32:26,747 - app.core.excel.converter - INFO - 提取规格: 格力高百醇抹茶慕斯味48g@ -> 48*None +2025-12-12 11:32:26,748 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 格力高百醇抹茶慕斯味48g@ -> 48*None +2025-12-12 11:32:26,748 - app.core.excel.converter - WARNING - 无法解析规格: 48*None,使用默认值1*1 +2025-12-12 11:32:26,748 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 5.55, 单位: 6901845040968 +2025-12-12 11:32:26,748 - app.core.excel.converter - INFO - 提取规格: 奥利奥饼干经典原味48.5g@ -> 48.5*None +2025-12-12 11:32:26,748 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥饼干经典原味48.5g@ -> 48.5*None +2025-12-12 11:32:26,751 - app.core.excel.converter - WARNING - 无法解析规格: 48.5*None,使用默认值1*1 +2025-12-12 11:32:26,752 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 6.0, 单价: 1.99, 单位: 6901668935649 +2025-12-12 11:32:26,752 - app.core.excel.converter - INFO - 提取规格: 奥利奥饼干浓醇巧克力味48.5g@ -> 48.5*None +2025-12-12 11:32:26,752 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥饼干浓醇巧克力味48.5g@ -> 48.5*None +2025-12-12 11:32:26,753 - app.core.excel.converter - WARNING - 无法解析规格: 48.5*None,使用默认值1*1 +2025-12-12 11:32:26,753 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 1.99, 单位: 6901668935663 +2025-12-12 11:32:26,755 - app.core.excel.converter - INFO - 提取规格: 法丽兹曲奇芝士巧克力70g@ -> 70*None +2025-12-12 11:32:26,755 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 法丽兹曲奇芝士巧克力70g@ -> 70*None +2025-12-12 11:32:26,756 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:32:26,756 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 2.66, 单位: 6947929617534 +2025-12-12 11:32:26,756 - app.core.excel.converter - INFO - 提取规格: 法丽兹曲奇香草柠檬巧克力味70g@ -> 70*None +2025-12-12 11:32:26,756 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 法丽兹曲奇香草柠檬巧克力味70g@ -> 70*None +2025-12-12 11:32:26,758 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:32:26,758 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 2.66, 单位: 6947929617138 +2025-12-12 11:32:26,758 - app.core.excel.converter - INFO - 提取规格: 太平梳打饼干奶盐味100g@ -> 100*None +2025-12-12 11:32:26,759 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 太平梳打饼干奶盐味100g@ -> 100*None +2025-12-12 11:32:26,759 - app.core.excel.converter - WARNING - 无法解析规格: 100*None,使用默认值1*1 +2025-12-12 11:32:26,760 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.5, 单位: 6901668200013 +2025-12-12 11:32:26,760 - app.core.excel.converter - INFO - 提取规格: 太平梳打饼干海苔味100g@ -> 100*None +2025-12-12 11:32:26,761 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 太平梳打饼干海苔味100g@ -> 100*None +2025-12-12 11:32:26,762 - app.core.excel.converter - WARNING - 无法解析规格: 100*None,使用默认值1*1 +2025-12-12 11:32:26,762 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.5, 单位: 6901668200303 +2025-12-12 11:32:26,763 - app.core.excel.converter - INFO - 提取规格: 达利园手指饼115g@ -> 115*None +2025-12-12 11:32:26,763 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园手指饼115g@ -> 115*None +2025-12-12 11:32:26,765 - app.core.excel.converter - WARNING - 无法解析规格: 115*None,使用默认值1*1 +2025-12-12 11:32:26,765 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 2.25, 单位: 6911988005229 +2025-12-12 11:32:26,765 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点杏仁酥饼146g@ -> 146*None +2025-12-12 11:32:26,765 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点杏仁酥饼146g@ -> 146*None +2025-12-12 11:32:26,767 - app.core.excel.converter - WARNING - 无法解析规格: 146*None,使用默认值1*1 +2025-12-12 11:32:26,767 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.8, 单位: 6911988000293 +2025-12-12 11:32:26,768 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点核桃酥饼146g@ -> 146*None +2025-12-12 11:32:26,768 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点核桃酥饼146g@ -> 146*None +2025-12-12 11:32:26,769 - app.core.excel.converter - WARNING - 无法解析规格: 146*None,使用默认值1*1 +2025-12-12 11:32:26,769 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.8, 单位: 6911988000286 +2025-12-12 11:32:26,770 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点香脆腰果饼108g@ -> 108*None +2025-12-12 11:32:26,770 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点香脆腰果饼108g@ -> 108*None +2025-12-12 11:32:26,771 - app.core.excel.converter - WARNING - 无法解析规格: 108*None,使用默认值1*1 +2025-12-12 11:32:26,771 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.85, 单位: 6911988009777 +2025-12-12 11:32:26,771 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点香脆杏仁饼108g@ -> 108*None +2025-12-12 11:32:26,771 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点香脆杏仁饼108g@ -> 108*None +2025-12-12 11:32:26,772 - app.core.excel.converter - WARNING - 无法解析规格: 108*None,使用默认值1*1 +2025-12-12 11:32:26,772 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.85, 单位: 6911988009760 +2025-12-12 11:32:26,773 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点香脆核桃饼108g@ -> 108*None +2025-12-12 11:32:26,773 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点香脆核桃饼108g@ -> 108*None +2025-12-12 11:32:26,773 - app.core.excel.converter - WARNING - 无法解析规格: 108*None,使用默认值1*1 +2025-12-12 11:32:26,773 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.85, 单位: 6911988009784 +2025-12-12 11:32:26,773 - app.core.excel.converter - INFO - 提取规格: 嘉士利威化饼干草莓味115g@ -> 115*None +2025-12-12 11:32:26,773 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 嘉士利威化饼干草莓味115g@ -> 115*None +2025-12-12 11:32:26,777 - app.core.excel.converter - WARNING - 无法解析规格: 115*None,使用默认值1*1 +2025-12-12 11:32:26,777 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 2.0, 单价: 3.8, 单位: 6901180581683 +2025-12-12 11:32:26,777 - app.core.excel.converter - INFO - 提取规格: 亨裕饼朱古力味饼干186g -> 186*None +2025-12-12 11:32:26,778 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 亨裕饼朱古力味饼干186g -> 186*None +2025-12-12 11:32:26,779 - app.core.excel.converter - WARNING - 无法解析规格: 186*None,使用默认值1*1 +2025-12-12 11:32:26,779 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.0, 单位: 6932024200552 +2025-12-12 11:32:26,779 - app.core.excel.converter - INFO - 提取规格: 亨裕早茶饼干110g -> 110*None +2025-12-12 11:32:26,780 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 亨裕早茶饼干110g -> 110*None +2025-12-12 11:32:26,780 - app.core.excel.converter - WARNING - 无法解析规格: 110*None,使用默认值1*1 +2025-12-12 11:32:26,780 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 1.7, 单位: 6932024200583 +2025-12-12 11:32:26,780 - app.core.excel.converter - INFO - 提取规格: 趣多多香浓巧克力味85g@ -> 85*None +2025-12-12 11:32:26,781 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 趣多多香浓巧克力味85g@ -> 85*None +2025-12-12 11:32:26,781 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:32:26,781 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 5.2, 单位: 6901668936714 +2025-12-12 11:32:26,781 - app.core.excel.converter - INFO - 提取规格: 趣多多缤纷逗巧克力85g@ -> 85*None +2025-12-12 11:32:26,781 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 趣多多缤纷逗巧克力85g@ -> 85*None +2025-12-12 11:32:26,784 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:32:26,784 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 5.2, 单位: 6901668062499 +2025-12-12 11:32:26,784 - app.core.excel.converter - INFO - 提取规格: 米老头雪花煎卷椰奶味150g@ -> 150*None +2025-12-12 11:32:26,785 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 米老头雪花煎卷椰奶味150g@ -> 150*None +2025-12-12 11:32:26,785 - app.core.excel.converter - WARNING - 无法解析规格: 150*None,使用默认值1*1 +2025-12-12 11:32:26,786 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.8, 单位: 6925332600046 +2025-12-12 11:32:26,786 - app.core.excel.converter - INFO - 提取规格: 金富士牛乳饼干香浓牛奶味130g@ -> 130*None +2025-12-12 11:32:26,786 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 金富士牛乳饼干香浓牛奶味130g@ -> 130*None +2025-12-12 11:32:26,787 - app.core.excel.converter - WARNING - 无法解析规格: 130*None,使用默认值1*1 +2025-12-12 11:32:26,788 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.8, 单位: 6921233904955 +2025-12-12 11:32:26,788 - app.core.excel.converter - INFO - 提取规格: 嘉士利果乐果香蓝莓味85g@ -> 85*None +2025-12-12 11:32:26,788 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 嘉士利果乐果香蓝莓味85g@ -> 85*None +2025-12-12 11:32:26,789 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:32:26,789 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.0, 单位: 6901180993387 +2025-12-12 11:32:26,790 - app.core.excel.converter - INFO - 提取规格: 嘉士利果乐果香草莓味85g@ -> 85*None +2025-12-12 11:32:26,790 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 嘉士利果乐果香草莓味85g@ -> 85*None +2025-12-12 11:32:26,792 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:32:26,792 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.0, 单位: 6901180993486 +2025-12-12 11:32:26,792 - app.core.excel.converter - INFO - 提取规格: 旺旺仙贝52g@ -> 52*None +2025-12-12 11:32:26,793 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 旺旺仙贝52g@ -> 52*None +2025-12-12 11:32:26,793 - app.core.excel.converter - WARNING - 无法解析规格: 52*None,使用默认值1*1 +2025-12-12 11:32:26,794 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 3.95, 单位: 6920546800046 +2025-12-12 11:32:26,794 - app.core.excel.converter - INFO - 提取规格: 旺旺雪饼84g@ -> 84*None +2025-12-12 11:32:26,794 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 旺旺雪饼84g@ -> 84*None +2025-12-12 11:32:26,795 - app.core.excel.converter - WARNING - 无法解析规格: 84*None,使用默认值1*1 +2025-12-12 11:32:26,795 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.5, 单位: 6920546800053 +2025-12-12 11:32:26,796 - app.core.excel.converter - INFO - 提取规格: 达利园蛋黄派230g@ -> 230*None +2025-12-12 11:32:26,797 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园蛋黄派230g@ -> 230*None +2025-12-12 11:32:26,798 - app.core.excel.converter - WARNING - 无法解析规格: 230*None,使用默认值1*1 +2025-12-12 11:32:26,798 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 1.0, 单价: 5.88, 单位: 6911988006783 +2025-12-12 11:32:26,798 - app.core.excel.converter - INFO - 提取规格: 豆多奇鹌鹑蛋豆干烧烤味22g -> 22*None +2025-12-12 11:32:26,799 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 豆多奇鹌鹑蛋豆干烧烤味22g -> 22*None +2025-12-12 11:32:26,799 - app.core.excel.converter - WARNING - 无法解析规格: 22*None,使用默认值1*1 +2025-12-12 11:32:26,800 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 20.0, 单价: 15.0, 单位: 6971295190728 +2025-12-12 11:32:26,800 - app.core.excel.converter - INFO - 提取规格: 劲仔手撕肉干麻辣味10g@ -> 10*None +2025-12-12 11:32:26,800 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 劲仔手撕肉干麻辣味10g@ -> 10*None +2025-12-12 11:32:26,801 - app.core.excel.converter - WARNING - 无法解析规格: 10*None,使用默认值1*1 +2025-12-12 11:32:26,801 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 20.0, 单价: 26.6, 单位: 6951957217215 +2025-12-12 11:32:26,802 - app.core.excel.converter - INFO - 提取规格: 劲仔手撕肉干香辣味10g@ -> 10*None +2025-12-12 11:32:26,802 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 劲仔手撕肉干香辣味10g@ -> 10*None +2025-12-12 11:32:26,803 - app.core.excel.converter - WARNING - 无法解析规格: 10*None,使用默认值1*1 +2025-12-12 11:32:26,803 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 20.0, 单价: 26.6, 单位: 6951957217208 +2025-12-12 11:32:26,804 - app.core.excel.converter - INFO - 提取规格: 登荣香辣爽口鸡23g -> 23*None +2025-12-12 11:32:26,805 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 登荣香辣爽口鸡23g -> 23*None +2025-12-12 11:32:26,806 - app.core.excel.converter - WARNING - 无法解析规格: 23*None,使用默认值1*1 +2025-12-12 11:32:26,806 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 20.0, 单价: 15.0, 单位: +2025-12-12 11:32:26,806 - app.core.excel.converter - INFO - 提取规格: 德芙脆香米脆米心牛奶巧克力12g@ -> 12*None +2025-12-12 11:32:26,807 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 德芙脆香米脆米心牛奶巧克力12g@ -> 12*None +2025-12-12 11:32:26,807 - app.core.excel.converter - WARNING - 无法解析规格: 12*None,使用默认值1*1 +2025-12-12 11:32:26,807 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 16.0, 单价: 23.2, 单位: 6914973603462 +2025-12-12 11:32:26,807 - app.core.excel.converter - INFO - 提取规格: 味芝元洞庭鱼排香辣味26g -> 26*None +2025-12-12 11:32:26,807 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 味芝元洞庭鱼排香辣味26g -> 26*None +2025-12-12 11:32:26,807 - app.core.excel.converter - WARNING - 无法解析规格: 26*None,使用默认值1*1 +2025-12-12 11:32:26,807 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 15.0, 单价: 1.5, 单位: 6936869215092 +2025-12-12 11:32:26,807 - app.core.excel.converter - INFO - 提取规格: 劲仔小鱼麻辣小鱼12g@ -> 12*None +2025-12-12 11:32:26,807 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 劲仔小鱼麻辣小鱼12g@ -> 12*None +2025-12-12 11:32:26,812 - app.core.excel.converter - WARNING - 无法解析规格: 12*None,使用默认值1*1 +2025-12-12 11:32:26,812 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 20.0, 单价: 14.2, 单位: +2025-12-12 11:32:26,812 - app.core.excel.converter - INFO - 提取规格: 缺牙齿素牛肚香辣味16g -> 16*None +2025-12-12 11:32:26,813 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 缺牙齿素牛肚香辣味16g -> 16*None +2025-12-12 11:32:26,814 - app.core.excel.converter - WARNING - 无法解析规格: 16*None,使用默认值1*1 +2025-12-12 11:32:26,814 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 30.0, 单价: 22.5, 单位: 6976481800344 +2025-12-12 11:32:26,814 - app.core.excel.converter - INFO - 提取规格: 乐事青柠味70g@ -> 70*None +2025-12-12 11:32:26,815 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事青柠味70g@ -> 70*None +2025-12-12 11:32:26,815 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:32:26,815 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.79, 单位: 6924743919266 +2025-12-12 11:32:26,817 - app.core.excel.converter - INFO - 提取规格: 乐事黄瓜味70g@ -> 70*None +2025-12-12 11:32:26,817 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事黄瓜味70g@ -> 70*None +2025-12-12 11:32:26,818 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:32:26,818 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.79, 单位: 6924743919259 +2025-12-12 11:32:26,819 - app.core.excel.converter - INFO - 提取规格: 乐事德克萨斯烧烤味70g@ -> 70*None +2025-12-12 11:32:26,819 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事德克萨斯烧烤味70g@ -> 70*None +2025-12-12 11:32:26,820 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:32:26,820 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 4.79, 单位: 6924743919228 +2025-12-12 11:32:26,821 - app.core.excel.converter - INFO - 提取规格: 乐事薯片经典原味23g(串串装)@ -> 23*None +2025-12-12 11:32:26,821 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事薯片经典原味23g(串串装)@ -> 23*None +2025-12-12 11:32:26,821 - app.core.excel.converter - WARNING - 无法解析规格: 23*None,使用默认值1*1 +2025-12-12 11:32:26,822 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 1.0, 单价: 1.35, 单位: 6924743928077 +2025-12-12 11:34:40,235 - app.core.excel.converter - INFO - 成功加载条码映射配置,共51项 +2025-12-12 11:34:40,273 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 雪碧2L@ -> 2L*1 +2025-12-12 11:34:40,276 - app.core.excel.converter - INFO - 解析容量(L)规格: 2L*1 -> 1*1 +2025-12-12 11:34:40,277 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 怡宝饮用纯净水2.08L@ -> 2.08L*1 +2025-12-12 11:34:40,278 - app.core.excel.converter - INFO - 解析容量(L)规格: 2.08L*1 -> 1*1 +2025-12-12 11:34:40,280 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 怡宝纯净水4.5L@ -> 4.5L*1 +2025-12-12 11:34:40,281 - app.core.excel.converter - INFO - 解析容量(L)规格: 4.5L*1 -> 1*1 +2025-12-12 11:34:40,281 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 怡宝饮用纯净水1.555L@ -> 1.555L*1 +2025-12-12 11:34:40,283 - app.core.excel.converter - INFO - 解析容量(L)规格: 1.555L*1 -> 1*1 +2025-12-12 11:34:40,284 - app.core.excel.converter - INFO - 提取规格: 奥利奥薄脆酸甜草莓味95g@ -> 95*None +2025-12-12 11:34:40,284 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥薄脆酸甜草莓味95g@ -> 95*None +2025-12-12 11:34:40,285 - app.core.excel.converter - WARNING - 无法解析规格: 95*None,使用默认值1*1 +2025-12-12 11:34:40,287 - app.core.excel.converter - INFO - 提取规格: 奥利奥杯奥草莓味55g@ -> 55*None +2025-12-12 11:34:40,287 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥杯奥草莓味55g@ -> 55*None +2025-12-12 11:34:40,287 - app.core.excel.converter - WARNING - 无法解析规格: 55*None,使用默认值1*1 +2025-12-12 11:34:40,287 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.6, 单位: 杯 +2025-12-12 11:34:40,287 - app.core.excel.converter - INFO - 提取规格: 奥利奥杯奥巧克力55g@ -> 55*None +2025-12-12 11:34:40,287 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥杯奥巧克力55g@ -> 55*None +2025-12-12 11:34:40,289 - app.core.excel.converter - WARNING - 无法解析规格: 55*None,使用默认值1*1 +2025-12-12 11:34:40,290 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.6, 单位: 杯 +2025-12-12 11:34:40,290 - app.core.excel.converter - INFO - 提取规格: 好丽友蛋黄派2P46g@ -> 46*None +2025-12-12 11:34:40,291 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 好丽友蛋黄派2P46g@ -> 46*None +2025-12-12 11:34:40,292 - app.core.excel.converter - WARNING - 无法解析规格: 46*None,使用默认值1*1 +2025-12-12 11:34:40,292 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.0, 单位: 个 +2025-12-12 11:34:40,292 - app.core.excel.converter - INFO - 提取规格: 都市牧场爽口含片正梅味38g@ -> 38*None +2025-12-12 11:34:40,293 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 都市牧场爽口含片正梅味38g@ -> 38*None +2025-12-12 11:34:40,294 - app.core.excel.converter - WARNING - 无法解析规格: 38*None,使用默认值1*1 +2025-12-12 11:34:40,294 - app.core.excel.converter - INFO - 提取规格: 林振合维C果C软糖什锦味68g -> 68*None +2025-12-12 11:34:40,294 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 林振合维C果C软糖什锦味68g -> 68*None +2025-12-12 11:34:40,294 - app.core.excel.converter - WARNING - 无法解析规格: 68*None,使用默认值1*1 +2025-12-12 11:34:40,298 - app.core.excel.converter - INFO - 提取规格: 格力高百醇柠檬48g@ -> 48*None +2025-12-12 11:34:40,298 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 格力高百醇柠檬48g@ -> 48*None +2025-12-12 11:34:40,298 - app.core.excel.converter - WARNING - 无法解析规格: 48*None,使用默认值1*1 +2025-12-12 11:34:40,299 - app.core.excel.converter - INFO - 提取规格: 格力高百醇抹茶慕斯味48g@ -> 48*None +2025-12-12 11:34:40,299 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 格力高百醇抹茶慕斯味48g@ -> 48*None +2025-12-12 11:34:40,300 - app.core.excel.converter - WARNING - 无法解析规格: 48*None,使用默认值1*1 +2025-12-12 11:34:40,301 - app.core.excel.converter - INFO - 提取规格: 奥利奥饼干经典原味48.5g@ -> 48.5*None +2025-12-12 11:34:40,301 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥饼干经典原味48.5g@ -> 48.5*None +2025-12-12 11:34:40,302 - app.core.excel.converter - WARNING - 无法解析规格: 48.5*None,使用默认值1*1 +2025-12-12 11:34:40,302 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 6.0, 单价: 1.99, 单位: 袋 +2025-12-12 11:34:40,303 - app.core.excel.converter - INFO - 提取规格: 奥利奥饼干浓醇巧克力味48.5g@ -> 48.5*None +2025-12-12 11:34:40,303 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥饼干浓醇巧克力味48.5g@ -> 48.5*None +2025-12-12 11:34:40,304 - app.core.excel.converter - WARNING - 无法解析规格: 48.5*None,使用默认值1*1 +2025-12-12 11:34:40,304 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 1.99, 单位: 袋 +2025-12-12 11:34:40,304 - app.core.excel.converter - INFO - 提取规格: 法丽兹曲奇芝士巧克力70g@ -> 70*None +2025-12-12 11:34:40,304 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 法丽兹曲奇芝士巧克力70g@ -> 70*None +2025-12-12 11:34:40,304 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:34:40,304 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 2.66, 单位: 袋 +2025-12-12 11:34:40,304 - app.core.excel.converter - INFO - 提取规格: 法丽兹曲奇香草柠檬巧克力味70g@ -> 70*None +2025-12-12 11:34:40,308 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 法丽兹曲奇香草柠檬巧克力味70g@ -> 70*None +2025-12-12 11:34:40,308 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:34:40,308 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 2.66, 单位: 袋 +2025-12-12 11:34:40,310 - app.core.excel.converter - INFO - 提取规格: 太平梳打饼干奶盐味100g@ -> 100*None +2025-12-12 11:34:40,310 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 太平梳打饼干奶盐味100g@ -> 100*None +2025-12-12 11:34:40,311 - app.core.excel.converter - WARNING - 无法解析规格: 100*None,使用默认值1*1 +2025-12-12 11:34:40,311 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.5, 单位: 袋 +2025-12-12 11:34:40,311 - app.core.excel.converter - INFO - 提取规格: 太平梳打饼干海苔味100g@ -> 100*None +2025-12-12 11:34:40,312 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 太平梳打饼干海苔味100g@ -> 100*None +2025-12-12 11:34:40,312 - app.core.excel.converter - WARNING - 无法解析规格: 100*None,使用默认值1*1 +2025-12-12 11:34:40,313 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.5, 单位: 袋 +2025-12-12 11:34:40,313 - app.core.excel.converter - INFO - 提取规格: 达利园手指饼115g@ -> 115*None +2025-12-12 11:34:40,313 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园手指饼115g@ -> 115*None +2025-12-12 11:34:40,314 - app.core.excel.converter - WARNING - 无法解析规格: 115*None,使用默认值1*1 +2025-12-12 11:34:40,314 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 2.25, 单位: 袋 +2025-12-12 11:34:40,315 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点杏仁酥饼146g@ -> 146*None +2025-12-12 11:34:40,315 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点杏仁酥饼146g@ -> 146*None +2025-12-12 11:34:40,316 - app.core.excel.converter - WARNING - 无法解析规格: 146*None,使用默认值1*1 +2025-12-12 11:34:40,316 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.8, 单位: 袋 +2025-12-12 11:34:40,317 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点核桃酥饼146g@ -> 146*None +2025-12-12 11:34:40,317 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点核桃酥饼146g@ -> 146*None +2025-12-12 11:34:40,318 - app.core.excel.converter - WARNING - 无法解析规格: 146*None,使用默认值1*1 +2025-12-12 11:34:40,318 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.8, 单位: 袋 +2025-12-12 11:34:40,318 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点香脆腰果饼108g@ -> 108*None +2025-12-12 11:34:40,319 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点香脆腰果饼108g@ -> 108*None +2025-12-12 11:34:40,320 - app.core.excel.converter - WARNING - 无法解析规格: 108*None,使用默认值1*1 +2025-12-12 11:34:40,321 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.85, 单位: 袋 +2025-12-12 11:34:40,321 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点香脆杏仁饼108g@ -> 108*None +2025-12-12 11:34:40,321 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点香脆杏仁饼108g@ -> 108*None +2025-12-12 11:34:40,321 - app.core.excel.converter - WARNING - 无法解析规格: 108*None,使用默认值1*1 +2025-12-12 11:34:40,323 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.85, 单位: 袋 +2025-12-12 11:34:40,323 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点香脆核桃饼108g@ -> 108*None +2025-12-12 11:34:40,323 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点香脆核桃饼108g@ -> 108*None +2025-12-12 11:34:40,325 - app.core.excel.converter - WARNING - 无法解析规格: 108*None,使用默认值1*1 +2025-12-12 11:34:40,325 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.85, 单位: 袋 +2025-12-12 11:34:40,325 - app.core.excel.converter - INFO - 提取规格: 嘉士利威化饼干草莓味115g@ -> 115*None +2025-12-12 11:34:40,325 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 嘉士利威化饼干草莓味115g@ -> 115*None +2025-12-12 11:34:40,325 - app.core.excel.converter - WARNING - 无法解析规格: 115*None,使用默认值1*1 +2025-12-12 11:34:40,325 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 2.0, 单价: 3.8, 单位: 袋 +2025-12-12 11:34:40,325 - app.core.excel.converter - INFO - 提取规格: 亨裕饼朱古力味饼干186g -> 186*None +2025-12-12 11:34:40,325 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 亨裕饼朱古力味饼干186g -> 186*None +2025-12-12 11:34:40,328 - app.core.excel.converter - WARNING - 无法解析规格: 186*None,使用默认值1*1 +2025-12-12 11:34:40,328 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.0, 单位: 袋 +2025-12-12 11:34:40,328 - app.core.excel.converter - INFO - 提取规格: 亨裕早茶饼干110g -> 110*None +2025-12-12 11:34:40,329 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 亨裕早茶饼干110g -> 110*None +2025-12-12 11:34:40,330 - app.core.excel.converter - WARNING - 无法解析规格: 110*None,使用默认值1*1 +2025-12-12 11:34:40,330 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 1.7, 单位: 袋 +2025-12-12 11:34:40,330 - app.core.excel.converter - INFO - 提取规格: 趣多多香浓巧克力味85g@ -> 85*None +2025-12-12 11:34:40,331 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 趣多多香浓巧克力味85g@ -> 85*None +2025-12-12 11:34:40,332 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:34:40,332 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 5.2, 单位: 袋 +2025-12-12 11:34:40,333 - app.core.excel.converter - INFO - 提取规格: 趣多多缤纷逗巧克力85g@ -> 85*None +2025-12-12 11:34:40,333 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 趣多多缤纷逗巧克力85g@ -> 85*None +2025-12-12 11:34:40,334 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:34:40,334 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 5.2, 单位: 袋 +2025-12-12 11:34:40,334 - app.core.excel.converter - INFO - 提取规格: 米老头雪花煎卷椰奶味150g@ -> 150*None +2025-12-12 11:34:40,334 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 米老头雪花煎卷椰奶味150g@ -> 150*None +2025-12-12 11:34:40,334 - app.core.excel.converter - WARNING - 无法解析规格: 150*None,使用默认值1*1 +2025-12-12 11:34:40,334 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.8, 单位: 袋 +2025-12-12 11:34:40,338 - app.core.excel.converter - INFO - 提取规格: 金富士牛乳饼干香浓牛奶味130g@ -> 130*None +2025-12-12 11:34:40,338 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 金富士牛乳饼干香浓牛奶味130g@ -> 130*None +2025-12-12 11:34:40,338 - app.core.excel.converter - WARNING - 无法解析规格: 130*None,使用默认值1*1 +2025-12-12 11:34:40,338 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.8, 单位: 袋 +2025-12-12 11:34:40,340 - app.core.excel.converter - INFO - 提取规格: 嘉士利果乐果香蓝莓味85g@ -> 85*None +2025-12-12 11:34:40,340 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 嘉士利果乐果香蓝莓味85g@ -> 85*None +2025-12-12 11:34:40,341 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:34:40,341 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.0, 单位: 袋 +2025-12-12 11:34:40,342 - app.core.excel.converter - INFO - 提取规格: 嘉士利果乐果香草莓味85g@ -> 85*None +2025-12-12 11:34:40,342 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 嘉士利果乐果香草莓味85g@ -> 85*None +2025-12-12 11:34:40,343 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:34:40,343 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.0, 单位: 袋 +2025-12-12 11:34:40,344 - app.core.excel.converter - INFO - 提取规格: 旺旺仙贝52g@ -> 52*None +2025-12-12 11:34:40,344 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 旺旺仙贝52g@ -> 52*None +2025-12-12 11:34:40,346 - app.core.excel.converter - WARNING - 无法解析规格: 52*None,使用默认值1*1 +2025-12-12 11:34:40,346 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 3.95, 单位: 袋 +2025-12-12 11:34:40,346 - app.core.excel.converter - INFO - 提取规格: 旺旺雪饼84g@ -> 84*None +2025-12-12 11:34:40,347 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 旺旺雪饼84g@ -> 84*None +2025-12-12 11:34:40,347 - app.core.excel.converter - WARNING - 无法解析规格: 84*None,使用默认值1*1 +2025-12-12 11:34:40,348 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.5, 单位: 袋 +2025-12-12 11:34:40,348 - app.core.excel.converter - INFO - 提取规格: 达利园蛋黄派230g@ -> 230*None +2025-12-12 11:34:40,349 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园蛋黄派230g@ -> 230*None +2025-12-12 11:34:40,350 - app.core.excel.converter - WARNING - 无法解析规格: 230*None,使用默认值1*1 +2025-12-12 11:34:40,350 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 1.0, 单价: 5.88, 单位: 袋 +2025-12-12 11:34:40,350 - app.core.excel.converter - INFO - 提取规格: 豆多奇鹌鹑蛋豆干烧烤味22g -> 22*None +2025-12-12 11:34:40,351 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 豆多奇鹌鹑蛋豆干烧烤味22g -> 22*None +2025-12-12 11:34:40,352 - app.core.excel.converter - WARNING - 无法解析规格: 22*None,使用默认值1*1 +2025-12-12 11:34:40,352 - app.core.excel.converter - INFO - 提取规格: 劲仔手撕肉干麻辣味10g@ -> 10*None +2025-12-12 11:34:40,353 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 劲仔手撕肉干麻辣味10g@ -> 10*None +2025-12-12 11:34:40,353 - app.core.excel.converter - WARNING - 无法解析规格: 10*None,使用默认值1*1 +2025-12-12 11:34:40,354 - app.core.excel.converter - INFO - 提取规格: 劲仔手撕肉干香辣味10g@ -> 10*None +2025-12-12 11:34:40,355 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 劲仔手撕肉干香辣味10g@ -> 10*None +2025-12-12 11:34:40,355 - app.core.excel.converter - WARNING - 无法解析规格: 10*None,使用默认值1*1 +2025-12-12 11:34:40,357 - app.core.excel.converter - INFO - 提取规格: 登荣香辣爽口鸡23g -> 23*None +2025-12-12 11:34:40,357 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 登荣香辣爽口鸡23g -> 23*None +2025-12-12 11:34:40,357 - app.core.excel.converter - WARNING - 无法解析规格: 23*None,使用默认值1*1 +2025-12-12 11:34:40,359 - app.core.excel.converter - INFO - 提取规格: 德芙脆香米脆米心牛奶巧克力12g@ -> 12*None +2025-12-12 11:34:40,359 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 德芙脆香米脆米心牛奶巧克力12g@ -> 12*None +2025-12-12 11:34:40,360 - app.core.excel.converter - WARNING - 无法解析规格: 12*None,使用默认值1*1 +2025-12-12 11:34:40,361 - app.core.excel.converter - INFO - 提取规格: 味芝元洞庭鱼排香辣味26g -> 26*None +2025-12-12 11:34:40,361 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 味芝元洞庭鱼排香辣味26g -> 26*None +2025-12-12 11:34:40,362 - app.core.excel.converter - WARNING - 无法解析规格: 26*None,使用默认值1*1 +2025-12-12 11:34:40,362 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 15.0, 单价: 1.5, 单位: 袋 +2025-12-12 11:34:40,363 - app.core.excel.converter - INFO - 提取规格: 劲仔小鱼麻辣小鱼12g@ -> 12*None +2025-12-12 11:34:40,363 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 劲仔小鱼麻辣小鱼12g@ -> 12*None +2025-12-12 11:34:40,365 - app.core.excel.converter - WARNING - 无法解析规格: 12*None,使用默认值1*1 +2025-12-12 11:34:40,366 - app.core.excel.converter - INFO - 提取规格: 缺牙齿素牛肚香辣味16g -> 16*None +2025-12-12 11:34:40,366 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 缺牙齿素牛肚香辣味16g -> 16*None +2025-12-12 11:34:40,367 - app.core.excel.converter - WARNING - 无法解析规格: 16*None,使用默认值1*1 +2025-12-12 11:34:40,368 - app.core.excel.converter - INFO - 提取规格: 乐事青柠味70g@ -> 70*None +2025-12-12 11:34:40,368 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事青柠味70g@ -> 70*None +2025-12-12 11:34:40,369 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:34:40,369 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.79, 单位: 袋 +2025-12-12 11:34:40,369 - app.core.excel.converter - INFO - 提取规格: 乐事黄瓜味70g@ -> 70*None +2025-12-12 11:34:40,370 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事黄瓜味70g@ -> 70*None +2025-12-12 11:34:40,370 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:34:40,371 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.79, 单位: 袋 +2025-12-12 11:34:40,371 - app.core.excel.converter - INFO - 提取规格: 乐事德克萨斯烧烤味70g@ -> 70*None +2025-12-12 11:34:40,371 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事德克萨斯烧烤味70g@ -> 70*None +2025-12-12 11:34:40,371 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:34:40,371 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 4.79, 单位: 袋 +2025-12-12 11:34:40,371 - app.core.excel.converter - INFO - 提取规格: 乐事薯片经典原味23g(串串装)@ -> 23*None +2025-12-12 11:34:40,371 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事薯片经典原味23g(串串装)@ -> 23*None +2025-12-12 11:34:40,375 - app.core.excel.converter - WARNING - 无法解析规格: 23*None,使用默认值1*1 +2025-12-12 11:34:40,375 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 1.0, 单价: 1.35, 单位: 袋 +2025-12-12 11:38:53,256 - app.core.excel.converter - INFO - 成功加载条码映射配置,共51项 +2025-12-12 11:38:53,294 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 雪碧2L@ -> 2L*1 +2025-12-12 11:38:53,297 - app.core.excel.converter - INFO - 解析容量(L)规格: 2L*1 -> 1*1 +2025-12-12 11:38:53,297 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 8.0, 单价: 44.32, 单位: 份 +2025-12-12 11:38:53,298 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 怡宝饮用纯净水2.08L@ -> 2.08L*1 +2025-12-12 11:38:53,299 - app.core.excel.converter - INFO - 解析容量(L)规格: 2.08L*1 -> 1*1 +2025-12-12 11:38:53,299 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 40.0, 单价: 21.52, 单位: 份 +2025-12-12 11:38:53,300 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 怡宝纯净水4.5L@ -> 4.5L*1 +2025-12-12 11:38:53,301 - app.core.excel.converter - INFO - 解析容量(L)规格: 4.5L*1 -> 1*1 +2025-12-12 11:38:53,302 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 8.0, 单价: 26.08, 单位: 份 +2025-12-12 11:38:53,303 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 怡宝饮用纯净水1.555L@ -> 1.555L*1 +2025-12-12 11:38:53,304 - app.core.excel.converter - INFO - 解析容量(L)规格: 1.555L*1 -> 1*1 +2025-12-12 11:38:53,304 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 60.0, 单价: 24.6, 单位: 份 +2025-12-12 11:38:53,305 - app.core.excel.converter - INFO - 提取规格: 奥利奥薄脆酸甜草莓味95g@ -> 95*None +2025-12-12 11:38:53,305 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥薄脆酸甜草莓味95g@ -> 95*None +2025-12-12 11:38:53,307 - app.core.excel.converter - WARNING - 无法解析规格: 95*None,使用默认值1*1 +2025-12-12 11:38:53,307 - app.core.excel.converter - INFO - 提取规格: 奥利奥杯奥草莓味55g@ -> 55*None +2025-12-12 11:38:53,307 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥杯奥草莓味55g@ -> 55*None +2025-12-12 11:38:53,307 - app.core.excel.converter - WARNING - 无法解析规格: 55*None,使用默认值1*1 +2025-12-12 11:38:53,307 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.6, 单位: 杯 +2025-12-12 11:38:53,307 - app.core.excel.converter - INFO - 提取规格: 奥利奥杯奥巧克力55g@ -> 55*None +2025-12-12 11:38:53,307 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥杯奥巧克力55g@ -> 55*None +2025-12-12 11:38:53,311 - app.core.excel.converter - WARNING - 无法解析规格: 55*None,使用默认值1*1 +2025-12-12 11:38:53,311 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.6, 单位: 杯 +2025-12-12 11:38:53,312 - app.core.excel.converter - INFO - 提取规格: 好丽友蛋黄派2P46g@ -> 46*None +2025-12-12 11:38:53,312 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 好丽友蛋黄派2P46g@ -> 46*None +2025-12-12 11:38:53,313 - app.core.excel.converter - WARNING - 无法解析规格: 46*None,使用默认值1*1 +2025-12-12 11:38:53,314 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.0, 单位: 个 +2025-12-12 11:38:53,314 - app.core.excel.converter - INFO - 提取规格: 都市牧场爽口含片正梅味38g@ -> 38*None +2025-12-12 11:38:53,315 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 都市牧场爽口含片正梅味38g@ -> 38*None +2025-12-12 11:38:53,316 - app.core.excel.converter - WARNING - 无法解析规格: 38*None,使用默认值1*1 +2025-12-12 11:38:53,317 - app.core.excel.converter - INFO - 提取规格: 林振合维C果C软糖什锦味68g -> 68*None +2025-12-12 11:38:53,317 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 林振合维C果C软糖什锦味68g -> 68*None +2025-12-12 11:38:53,317 - app.core.excel.converter - WARNING - 无法解析规格: 68*None,使用默认值1*1 +2025-12-12 11:38:53,317 - app.core.excel.converter - INFO - 提取规格: 格力高百醇柠檬48g@ -> 48*None +2025-12-12 11:38:53,317 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 格力高百醇柠檬48g@ -> 48*None +2025-12-12 11:38:53,321 - app.core.excel.converter - WARNING - 无法解析规格: 48*None,使用默认值1*1 +2025-12-12 11:38:53,323 - app.core.excel.converter - INFO - 提取规格: 格力高百醇抹茶慕斯味48g@ -> 48*None +2025-12-12 11:38:53,323 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 格力高百醇抹茶慕斯味48g@ -> 48*None +2025-12-12 11:38:53,324 - app.core.excel.converter - WARNING - 无法解析规格: 48*None,使用默认值1*1 +2025-12-12 11:38:53,325 - app.core.excel.converter - INFO - 提取规格: 奥利奥饼干经典原味48.5g@ -> 48.5*None +2025-12-12 11:38:53,325 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥饼干经典原味48.5g@ -> 48.5*None +2025-12-12 11:38:53,326 - app.core.excel.converter - WARNING - 无法解析规格: 48.5*None,使用默认值1*1 +2025-12-12 11:38:53,326 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 6.0, 单价: 1.99, 单位: 袋 +2025-12-12 11:38:53,327 - app.core.excel.converter - INFO - 提取规格: 奥利奥饼干浓醇巧克力味48.5g@ -> 48.5*None +2025-12-12 11:38:53,327 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥饼干浓醇巧克力味48.5g@ -> 48.5*None +2025-12-12 11:38:53,328 - app.core.excel.converter - WARNING - 无法解析规格: 48.5*None,使用默认值1*1 +2025-12-12 11:38:53,329 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 1.99, 单位: 袋 +2025-12-12 11:38:53,329 - app.core.excel.converter - INFO - 提取规格: 法丽兹曲奇芝士巧克力70g@ -> 70*None +2025-12-12 11:38:53,330 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 法丽兹曲奇芝士巧克力70g@ -> 70*None +2025-12-12 11:38:53,331 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:38:53,331 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 2.66, 单位: 袋 +2025-12-12 11:38:53,332 - app.core.excel.converter - INFO - 提取规格: 法丽兹曲奇香草柠檬巧克力味70g@ -> 70*None +2025-12-12 11:38:53,332 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 法丽兹曲奇香草柠檬巧克力味70g@ -> 70*None +2025-12-12 11:38:53,332 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:38:53,335 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 2.66, 单位: 袋 +2025-12-12 11:38:53,335 - app.core.excel.converter - INFO - 提取规格: 太平梳打饼干奶盐味100g@ -> 100*None +2025-12-12 11:38:53,335 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 太平梳打饼干奶盐味100g@ -> 100*None +2025-12-12 11:38:53,336 - app.core.excel.converter - WARNING - 无法解析规格: 100*None,使用默认值1*1 +2025-12-12 11:38:53,336 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.5, 单位: 袋 +2025-12-12 11:38:53,337 - app.core.excel.converter - INFO - 提取规格: 太平梳打饼干海苔味100g@ -> 100*None +2025-12-12 11:38:53,337 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 太平梳打饼干海苔味100g@ -> 100*None +2025-12-12 11:38:53,338 - app.core.excel.converter - WARNING - 无法解析规格: 100*None,使用默认值1*1 +2025-12-12 11:38:53,338 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.5, 单位: 袋 +2025-12-12 11:38:53,339 - app.core.excel.converter - INFO - 提取规格: 达利园手指饼115g@ -> 115*None +2025-12-12 11:38:53,339 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园手指饼115g@ -> 115*None +2025-12-12 11:38:53,340 - app.core.excel.converter - WARNING - 无法解析规格: 115*None,使用默认值1*1 +2025-12-12 11:38:53,340 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 2.25, 单位: 袋 +2025-12-12 11:38:53,341 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点杏仁酥饼146g@ -> 146*None +2025-12-12 11:38:53,341 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点杏仁酥饼146g@ -> 146*None +2025-12-12 11:38:53,343 - app.core.excel.converter - WARNING - 无法解析规格: 146*None,使用默认值1*1 +2025-12-12 11:38:53,343 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.8, 单位: 袋 +2025-12-12 11:38:53,343 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点核桃酥饼146g@ -> 146*None +2025-12-12 11:38:53,343 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点核桃酥饼146g@ -> 146*None +2025-12-12 11:38:53,345 - app.core.excel.converter - WARNING - 无法解析规格: 146*None,使用默认值1*1 +2025-12-12 11:38:53,345 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.8, 单位: 袋 +2025-12-12 11:38:53,346 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点香脆腰果饼108g@ -> 108*None +2025-12-12 11:38:53,347 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点香脆腰果饼108g@ -> 108*None +2025-12-12 11:38:53,348 - app.core.excel.converter - WARNING - 无法解析规格: 108*None,使用默认值1*1 +2025-12-12 11:38:53,348 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.85, 单位: 袋 +2025-12-12 11:38:53,349 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点香脆杏仁饼108g@ -> 108*None +2025-12-12 11:38:53,349 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点香脆杏仁饼108g@ -> 108*None +2025-12-12 11:38:53,350 - app.core.excel.converter - WARNING - 无法解析规格: 108*None,使用默认值1*1 +2025-12-12 11:38:53,351 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.85, 单位: 袋 +2025-12-12 11:38:53,351 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点香脆核桃饼108g@ -> 108*None +2025-12-12 11:38:53,352 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点香脆核桃饼108g@ -> 108*None +2025-12-12 11:38:53,352 - app.core.excel.converter - WARNING - 无法解析规格: 108*None,使用默认值1*1 +2025-12-12 11:38:53,352 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.85, 单位: 袋 +2025-12-12 11:38:53,353 - app.core.excel.converter - INFO - 提取规格: 嘉士利威化饼干草莓味115g@ -> 115*None +2025-12-12 11:38:53,353 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 嘉士利威化饼干草莓味115g@ -> 115*None +2025-12-12 11:38:53,354 - app.core.excel.converter - WARNING - 无法解析规格: 115*None,使用默认值1*1 +2025-12-12 11:38:53,354 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 2.0, 单价: 3.8, 单位: 袋 +2025-12-12 11:38:53,355 - app.core.excel.converter - INFO - 提取规格: 亨裕饼朱古力味饼干186g -> 186*None +2025-12-12 11:38:53,355 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 亨裕饼朱古力味饼干186g -> 186*None +2025-12-12 11:38:53,355 - app.core.excel.converter - WARNING - 无法解析规格: 186*None,使用默认值1*1 +2025-12-12 11:38:53,355 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.0, 单位: 袋 +2025-12-12 11:38:53,355 - app.core.excel.converter - INFO - 提取规格: 亨裕早茶饼干110g -> 110*None +2025-12-12 11:38:53,357 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 亨裕早茶饼干110g -> 110*None +2025-12-12 11:38:53,358 - app.core.excel.converter - WARNING - 无法解析规格: 110*None,使用默认值1*1 +2025-12-12 11:38:53,358 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 1.7, 单位: 袋 +2025-12-12 11:38:53,358 - app.core.excel.converter - INFO - 提取规格: 趣多多香浓巧克力味85g@ -> 85*None +2025-12-12 11:38:53,359 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 趣多多香浓巧克力味85g@ -> 85*None +2025-12-12 11:38:53,360 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:38:53,360 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 5.2, 单位: 袋 +2025-12-12 11:38:53,360 - app.core.excel.converter - INFO - 提取规格: 趣多多缤纷逗巧克力85g@ -> 85*None +2025-12-12 11:38:53,361 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 趣多多缤纷逗巧克力85g@ -> 85*None +2025-12-12 11:38:53,362 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:38:53,362 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 5.2, 单位: 袋 +2025-12-12 11:38:53,362 - app.core.excel.converter - INFO - 提取规格: 米老头雪花煎卷椰奶味150g@ -> 150*None +2025-12-12 11:38:53,362 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 米老头雪花煎卷椰奶味150g@ -> 150*None +2025-12-12 11:38:53,362 - app.core.excel.converter - WARNING - 无法解析规格: 150*None,使用默认值1*1 +2025-12-12 11:38:53,362 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.8, 单位: 袋 +2025-12-12 11:38:53,362 - app.core.excel.converter - INFO - 提取规格: 金富士牛乳饼干香浓牛奶味130g@ -> 130*None +2025-12-12 11:38:53,362 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 金富士牛乳饼干香浓牛奶味130g@ -> 130*None +2025-12-12 11:38:53,366 - app.core.excel.converter - WARNING - 无法解析规格: 130*None,使用默认值1*1 +2025-12-12 11:38:53,366 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.8, 单位: 袋 +2025-12-12 11:38:53,366 - app.core.excel.converter - INFO - 提取规格: 嘉士利果乐果香蓝莓味85g@ -> 85*None +2025-12-12 11:38:53,367 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 嘉士利果乐果香蓝莓味85g@ -> 85*None +2025-12-12 11:38:53,367 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:38:53,368 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.0, 单位: 袋 +2025-12-12 11:38:53,368 - app.core.excel.converter - INFO - 提取规格: 嘉士利果乐果香草莓味85g@ -> 85*None +2025-12-12 11:38:53,368 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 嘉士利果乐果香草莓味85g@ -> 85*None +2025-12-12 11:38:53,369 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:38:53,370 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.0, 单位: 袋 +2025-12-12 11:38:53,370 - app.core.excel.converter - INFO - 提取规格: 旺旺仙贝52g@ -> 52*None +2025-12-12 11:38:53,370 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 旺旺仙贝52g@ -> 52*None +2025-12-12 11:38:53,371 - app.core.excel.converter - WARNING - 无法解析规格: 52*None,使用默认值1*1 +2025-12-12 11:38:53,372 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 3.95, 单位: 袋 +2025-12-12 11:38:53,372 - app.core.excel.converter - INFO - 提取规格: 旺旺雪饼84g@ -> 84*None +2025-12-12 11:38:53,372 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 旺旺雪饼84g@ -> 84*None +2025-12-12 11:38:53,372 - app.core.excel.converter - WARNING - 无法解析规格: 84*None,使用默认值1*1 +2025-12-12 11:38:53,372 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.5, 单位: 袋 +2025-12-12 11:38:53,372 - app.core.excel.converter - INFO - 提取规格: 达利园蛋黄派230g@ -> 230*None +2025-12-12 11:38:53,372 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园蛋黄派230g@ -> 230*None +2025-12-12 11:38:53,376 - app.core.excel.converter - WARNING - 无法解析规格: 230*None,使用默认值1*1 +2025-12-12 11:38:53,376 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 1.0, 单价: 5.88, 单位: 袋 +2025-12-12 11:38:53,376 - app.core.excel.converter - INFO - 提取规格: 豆多奇鹌鹑蛋豆干烧烤味22g -> 22*None +2025-12-12 11:38:53,376 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 豆多奇鹌鹑蛋豆干烧烤味22g -> 22*None +2025-12-12 11:38:53,377 - app.core.excel.converter - WARNING - 无法解析规格: 22*None,使用默认值1*1 +2025-12-12 11:38:53,378 - app.core.excel.converter - INFO - 提取规格: 劲仔手撕肉干麻辣味10g@ -> 10*None +2025-12-12 11:38:53,378 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 劲仔手撕肉干麻辣味10g@ -> 10*None +2025-12-12 11:38:53,379 - app.core.excel.converter - WARNING - 无法解析规格: 10*None,使用默认值1*1 +2025-12-12 11:38:53,381 - app.core.excel.converter - INFO - 提取规格: 劲仔手撕肉干香辣味10g@ -> 10*None +2025-12-12 11:38:53,381 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 劲仔手撕肉干香辣味10g@ -> 10*None +2025-12-12 11:38:53,382 - app.core.excel.converter - WARNING - 无法解析规格: 10*None,使用默认值1*1 +2025-12-12 11:38:53,384 - app.core.excel.converter - INFO - 提取规格: 登荣香辣爽口鸡23g -> 23*None +2025-12-12 11:38:53,384 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 登荣香辣爽口鸡23g -> 23*None +2025-12-12 11:38:53,385 - app.core.excel.converter - WARNING - 无法解析规格: 23*None,使用默认值1*1 +2025-12-12 11:38:53,386 - app.core.excel.converter - INFO - 提取规格: 德芙脆香米脆米心牛奶巧克力12g@ -> 12*None +2025-12-12 11:38:53,386 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 德芙脆香米脆米心牛奶巧克力12g@ -> 12*None +2025-12-12 11:38:53,387 - app.core.excel.converter - WARNING - 无法解析规格: 12*None,使用默认值1*1 +2025-12-12 11:38:53,388 - app.core.excel.converter - INFO - 提取规格: 味芝元洞庭鱼排香辣味26g -> 26*None +2025-12-12 11:38:53,388 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 味芝元洞庭鱼排香辣味26g -> 26*None +2025-12-12 11:38:53,389 - app.core.excel.converter - WARNING - 无法解析规格: 26*None,使用默认值1*1 +2025-12-12 11:38:53,390 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 15.0, 单价: 1.5, 单位: 袋 +2025-12-12 11:38:53,390 - app.core.excel.converter - INFO - 提取规格: 劲仔小鱼麻辣小鱼12g@ -> 12*None +2025-12-12 11:38:53,391 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 劲仔小鱼麻辣小鱼12g@ -> 12*None +2025-12-12 11:38:53,392 - app.core.excel.converter - WARNING - 无法解析规格: 12*None,使用默认值1*1 +2025-12-12 11:38:53,393 - app.core.excel.converter - INFO - 提取规格: 缺牙齿素牛肚香辣味16g -> 16*None +2025-12-12 11:38:53,393 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 缺牙齿素牛肚香辣味16g -> 16*None +2025-12-12 11:38:53,394 - app.core.excel.converter - WARNING - 无法解析规格: 16*None,使用默认值1*1 +2025-12-12 11:38:53,394 - app.core.excel.converter - INFO - 提取规格: 乐事青柠味70g@ -> 70*None +2025-12-12 11:38:53,395 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事青柠味70g@ -> 70*None +2025-12-12 11:38:53,396 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:38:53,396 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.79, 单位: 袋 +2025-12-12 11:38:53,396 - app.core.excel.converter - INFO - 提取规格: 乐事黄瓜味70g@ -> 70*None +2025-12-12 11:38:53,397 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事黄瓜味70g@ -> 70*None +2025-12-12 11:38:53,397 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:38:53,397 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.79, 单位: 袋 +2025-12-12 11:38:53,398 - app.core.excel.converter - INFO - 提取规格: 乐事德克萨斯烧烤味70g@ -> 70*None +2025-12-12 11:38:53,398 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事德克萨斯烧烤味70g@ -> 70*None +2025-12-12 11:38:53,399 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:38:53,399 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 4.79, 单位: 袋 +2025-12-12 11:38:53,399 - app.core.excel.converter - INFO - 提取规格: 乐事薯片经典原味23g(串串装)@ -> 23*None +2025-12-12 11:38:53,399 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事薯片经典原味23g(串串装)@ -> 23*None +2025-12-12 11:38:53,399 - app.core.excel.converter - WARNING - 无法解析规格: 23*None,使用默认值1*1 +2025-12-12 11:38:53,399 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 1.0, 单价: 1.35, 单位: 袋 +2025-12-12 11:49:38,203 - app.core.excel.converter - INFO - 成功加载条码映射配置,共51项 +2025-12-12 11:49:38,238 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 雪碧2L@ -> 2L*1 +2025-12-12 11:49:38,241 - app.core.excel.converter - INFO - 解析容量(L)规格: 2L*1 -> 1*1 +2025-12-12 11:49:38,242 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 8.0, 单价: 5.26, 单位: 份 +2025-12-12 11:49:38,242 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 怡宝饮用纯净水2.08L@ -> 2.08L*1 +2025-12-12 11:49:38,244 - app.core.excel.converter - INFO - 解析容量(L)规格: 2.08L*1 -> 1*1 +2025-12-12 11:49:38,244 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 40.0, 单价: 2.56, 单位: 份 +2025-12-12 11:49:38,245 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 怡宝纯净水4.5L@ -> 4.5L*1 +2025-12-12 11:49:38,245 - app.core.excel.converter - INFO - 解析容量(L)规格: 4.5L*1 -> 1*1 +2025-12-12 11:49:38,245 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 8.0, 单价: 6.19, 单位: 份 +2025-12-12 11:49:38,245 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 怡宝饮用纯净水1.555L@ -> 1.555L*1 +2025-12-12 11:49:38,245 - app.core.excel.converter - INFO - 解析容量(L)规格: 1.555L*1 -> 1*1 +2025-12-12 11:49:38,248 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 60.0, 单价: 1.95, 单位: 份 +2025-12-12 11:49:38,248 - app.core.excel.converter - INFO - 提取规格: 奥利奥薄脆酸甜草莓味95g@ -> 95*None +2025-12-12 11:49:38,250 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥薄脆酸甜草莓味95g@ -> 95*None +2025-12-12 11:49:38,251 - app.core.excel.converter - WARNING - 无法解析规格: 95*None,使用默认值1*1 +2025-12-12 11:49:38,252 - app.core.excel.converter - INFO - 提取规格: 奥利奥杯奥草莓味55g@ -> 55*None +2025-12-12 11:49:38,252 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥杯奥草莓味55g@ -> 55*None +2025-12-12 11:49:38,253 - app.core.excel.converter - WARNING - 无法解析规格: 55*None,使用默认值1*1 +2025-12-12 11:49:38,253 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.42, 单位: 杯 +2025-12-12 11:49:38,254 - app.core.excel.converter - INFO - 提取规格: 奥利奥杯奥巧克力55g@ -> 55*None +2025-12-12 11:49:38,254 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥杯奥巧克力55g@ -> 55*None +2025-12-12 11:49:38,256 - app.core.excel.converter - WARNING - 无法解析规格: 55*None,使用默认值1*1 +2025-12-12 11:49:38,256 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.42, 单位: 杯 +2025-12-12 11:49:38,256 - app.core.excel.converter - INFO - 提取规格: 好丽友蛋黄派2P46g@ -> 46*None +2025-12-12 11:49:38,256 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 好丽友蛋黄派2P46g@ -> 46*None +2025-12-12 11:49:38,257 - app.core.excel.converter - WARNING - 无法解析规格: 46*None,使用默认值1*1 +2025-12-12 11:49:38,257 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 2.85, 单位: 个 +2025-12-12 11:49:38,258 - app.core.excel.converter - INFO - 提取规格: 都市牧场爽口含片正梅味38g@ -> 38*None +2025-12-12 11:49:38,258 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 都市牧场爽口含片正梅味38g@ -> 38*None +2025-12-12 11:49:38,259 - app.core.excel.converter - WARNING - 无法解析规格: 38*None,使用默认值1*1 +2025-12-12 11:49:38,260 - app.core.excel.converter - INFO - 提取规格: 林振合维C果C软糖什锦味68g -> 68*None +2025-12-12 11:49:38,260 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 林振合维C果C软糖什锦味68g -> 68*None +2025-12-12 11:49:38,260 - app.core.excel.converter - WARNING - 无法解析规格: 68*None,使用默认值1*1 +2025-12-12 11:49:38,260 - app.core.excel.converter - INFO - 提取规格: 格力高百醇柠檬48g@ -> 48*None +2025-12-12 11:49:38,260 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 格力高百醇柠檬48g@ -> 48*None +2025-12-12 11:49:38,260 - app.core.excel.converter - WARNING - 无法解析规格: 48*None,使用默认值1*1 +2025-12-12 11:49:38,260 - app.core.excel.converter - INFO - 提取规格: 格力高百醇抹茶慕斯味48g@ -> 48*None +2025-12-12 11:49:38,264 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 格力高百醇抹茶慕斯味48g@ -> 48*None +2025-12-12 11:49:38,264 - app.core.excel.converter - WARNING - 无法解析规格: 48*None,使用默认值1*1 +2025-12-12 11:49:38,265 - app.core.excel.converter - INFO - 提取规格: 奥利奥饼干经典原味48.5g@ -> 48.5*None +2025-12-12 11:49:38,265 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥饼干经典原味48.5g@ -> 48.5*None +2025-12-12 11:49:38,266 - app.core.excel.converter - WARNING - 无法解析规格: 48.5*None,使用默认值1*1 +2025-12-12 11:49:38,267 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 6.0, 单价: 1.89, 单位: 袋 +2025-12-12 11:49:38,267 - app.core.excel.converter - INFO - 提取规格: 奥利奥饼干浓醇巧克力味48.5g@ -> 48.5*None +2025-12-12 11:49:38,267 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 奥利奥饼干浓醇巧克力味48.5g@ -> 48.5*None +2025-12-12 11:49:38,268 - app.core.excel.converter - WARNING - 无法解析规格: 48.5*None,使用默认值1*1 +2025-12-12 11:49:38,269 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 1.89, 单位: 袋 +2025-12-12 11:49:38,269 - app.core.excel.converter - INFO - 提取规格: 法丽兹曲奇芝士巧克力70g@ -> 70*None +2025-12-12 11:49:38,269 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 法丽兹曲奇芝士巧克力70g@ -> 70*None +2025-12-12 11:49:38,271 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:49:38,271 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 2.53, 单位: 袋 +2025-12-12 11:49:38,271 - app.core.excel.converter - INFO - 提取规格: 法丽兹曲奇香草柠檬巧克力味70g@ -> 70*None +2025-12-12 11:49:38,272 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 法丽兹曲奇香草柠檬巧克力味70g@ -> 70*None +2025-12-12 11:49:38,272 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:49:38,273 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 2.53, 单位: 袋 +2025-12-12 11:49:38,273 - app.core.excel.converter - INFO - 提取规格: 太平梳打饼干奶盐味100g@ -> 100*None +2025-12-12 11:49:38,273 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 太平梳打饼干奶盐味100g@ -> 100*None +2025-12-12 11:49:38,274 - app.core.excel.converter - WARNING - 无法解析规格: 100*None,使用默认值1*1 +2025-12-12 11:49:38,275 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.05, 单位: 袋 +2025-12-12 11:49:38,275 - app.core.excel.converter - INFO - 提取规格: 太平梳打饼干海苔味100g@ -> 100*None +2025-12-12 11:49:38,275 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 太平梳打饼干海苔味100g@ -> 100*None +2025-12-12 11:49:38,275 - app.core.excel.converter - WARNING - 无法解析规格: 100*None,使用默认值1*1 +2025-12-12 11:49:38,275 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.05, 单位: 袋 +2025-12-12 11:49:38,275 - app.core.excel.converter - INFO - 提取规格: 达利园手指饼115g@ -> 115*None +2025-12-12 11:49:38,275 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园手指饼115g@ -> 115*None +2025-12-12 11:49:38,275 - app.core.excel.converter - WARNING - 无法解析规格: 115*None,使用默认值1*1 +2025-12-12 11:49:38,275 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 2.14, 单位: 袋 +2025-12-12 11:49:38,279 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点杏仁酥饼146g@ -> 146*None +2025-12-12 11:49:38,279 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点杏仁酥饼146g@ -> 146*None +2025-12-12 11:49:38,280 - app.core.excel.converter - WARNING - 无法解析规格: 146*None,使用默认值1*1 +2025-12-12 11:49:38,280 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.61, 单位: 袋 +2025-12-12 11:49:38,281 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点核桃酥饼146g@ -> 146*None +2025-12-12 11:49:38,281 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点核桃酥饼146g@ -> 146*None +2025-12-12 11:49:38,282 - app.core.excel.converter - WARNING - 无法解析规格: 146*None,使用默认值1*1 +2025-12-12 11:49:38,282 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.61, 单位: 袋 +2025-12-12 11:49:38,282 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点香脆腰果饼108g@ -> 108*None +2025-12-12 11:49:38,284 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点香脆腰果饼108g@ -> 108*None +2025-12-12 11:49:38,285 - app.core.excel.converter - WARNING - 无法解析规格: 108*None,使用默认值1*1 +2025-12-12 11:49:38,285 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.71, 单位: 袋 +2025-12-12 11:49:38,285 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点香脆杏仁饼108g@ -> 108*None +2025-12-12 11:49:38,285 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点香脆杏仁饼108g@ -> 108*None +2025-12-12 11:49:38,285 - app.core.excel.converter - WARNING - 无法解析规格: 108*None,使用默认值1*1 +2025-12-12 11:49:38,285 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.71, 单位: 袋 +2025-12-12 11:49:38,285 - app.core.excel.converter - INFO - 提取规格: 达利园好吃点香脆核桃饼108g@ -> 108*None +2025-12-12 11:49:38,285 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园好吃点香脆核桃饼108g@ -> 108*None +2025-12-12 11:49:38,285 - app.core.excel.converter - WARNING - 无法解析规格: 108*None,使用默认值1*1 +2025-12-12 11:49:38,289 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.71, 单位: 袋 +2025-12-12 11:49:38,289 - app.core.excel.converter - INFO - 提取规格: 嘉士利威化饼干草莓味115g@ -> 115*None +2025-12-12 11:49:38,289 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 嘉士利威化饼干草莓味115g@ -> 115*None +2025-12-12 11:49:38,289 - app.core.excel.converter - WARNING - 无法解析规格: 115*None,使用默认值1*1 +2025-12-12 11:49:38,292 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 2.0, 单价: 3.61, 单位: 袋 +2025-12-12 11:49:38,292 - app.core.excel.converter - INFO - 提取规格: 亨裕饼朱古力味饼干186g -> 186*None +2025-12-12 11:49:38,292 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 亨裕饼朱古力味饼干186g -> 186*None +2025-12-12 11:49:38,294 - app.core.excel.converter - WARNING - 无法解析规格: 186*None,使用默认值1*1 +2025-12-12 11:49:38,294 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.85, 单位: 袋 +2025-12-12 11:49:38,294 - app.core.excel.converter - INFO - 提取规格: 亨裕早茶饼干110g -> 110*None +2025-12-12 11:49:38,294 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 亨裕早茶饼干110g -> 110*None +2025-12-12 11:49:38,295 - app.core.excel.converter - WARNING - 无法解析规格: 110*None,使用默认值1*1 +2025-12-12 11:49:38,295 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 1.61, 单位: 袋 +2025-12-12 11:49:38,295 - app.core.excel.converter - INFO - 提取规格: 趣多多香浓巧克力味85g@ -> 85*None +2025-12-12 11:49:38,296 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 趣多多香浓巧克力味85g@ -> 85*None +2025-12-12 11:49:38,296 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:49:38,297 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 4.52, 单位: 袋 +2025-12-12 11:49:38,297 - app.core.excel.converter - INFO - 提取规格: 趣多多缤纷逗巧克力85g@ -> 85*None +2025-12-12 11:49:38,297 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 趣多多缤纷逗巧克力85g@ -> 85*None +2025-12-12 11:49:38,298 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:49:38,298 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 4.52, 单位: 袋 +2025-12-12 11:49:38,298 - app.core.excel.converter - INFO - 提取规格: 米老头雪花煎卷椰奶味150g@ -> 150*None +2025-12-12 11:49:38,300 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 米老头雪花煎卷椰奶味150g@ -> 150*None +2025-12-12 11:49:38,301 - app.core.excel.converter - WARNING - 无法解析规格: 150*None,使用默认值1*1 +2025-12-12 11:49:38,302 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.61, 单位: 袋 +2025-12-12 11:49:38,302 - app.core.excel.converter - INFO - 提取规格: 金富士牛乳饼干香浓牛奶味130g@ -> 130*None +2025-12-12 11:49:38,302 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 金富士牛乳饼干香浓牛奶味130g@ -> 130*None +2025-12-12 11:49:38,303 - app.core.excel.converter - WARNING - 无法解析规格: 130*None,使用默认值1*1 +2025-12-12 11:49:38,304 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.61, 单位: 袋 +2025-12-12 11:49:38,304 - app.core.excel.converter - INFO - 提取规格: 嘉士利果乐果香蓝莓味85g@ -> 85*None +2025-12-12 11:49:38,304 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 嘉士利果乐果香蓝莓味85g@ -> 85*None +2025-12-12 11:49:38,305 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:49:38,305 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.85, 单位: 袋 +2025-12-12 11:49:38,305 - app.core.excel.converter - INFO - 提取规格: 嘉士利果乐果香草莓味85g@ -> 85*None +2025-12-12 11:49:38,305 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 嘉士利果乐果香草莓味85g@ -> 85*None +2025-12-12 11:49:38,305 - app.core.excel.converter - WARNING - 无法解析规格: 85*None,使用默认值1*1 +2025-12-12 11:49:38,305 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.85, 单位: 袋 +2025-12-12 11:49:38,305 - app.core.excel.converter - INFO - 提取规格: 旺旺仙贝52g@ -> 52*None +2025-12-12 11:49:38,305 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 旺旺仙贝52g@ -> 52*None +2025-12-12 11:49:38,309 - app.core.excel.converter - WARNING - 无法解析规格: 52*None,使用默认值1*1 +2025-12-12 11:49:38,309 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 3.75, 单位: 袋 +2025-12-12 11:49:38,309 - app.core.excel.converter - INFO - 提取规格: 旺旺雪饼84g@ -> 84*None +2025-12-12 11:49:38,309 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 旺旺雪饼84g@ -> 84*None +2025-12-12 11:49:38,310 - app.core.excel.converter - WARNING - 无法解析规格: 84*None,使用默认值1*1 +2025-12-12 11:49:38,311 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.27, 单位: 袋 +2025-12-12 11:49:38,311 - app.core.excel.converter - INFO - 提取规格: 达利园蛋黄派230g@ -> 230*None +2025-12-12 11:49:38,311 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园蛋黄派230g@ -> 230*None +2025-12-12 11:49:38,312 - app.core.excel.converter - WARNING - 无法解析规格: 230*None,使用默认值1*1 +2025-12-12 11:49:38,312 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 1.0, 单价: 5.59, 单位: 袋 +2025-12-12 11:49:38,313 - app.core.excel.converter - INFO - 提取规格: 豆多奇鹌鹑蛋豆干烧烤味22g -> 22*None +2025-12-12 11:49:38,313 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 豆多奇鹌鹑蛋豆干烧烤味22g -> 22*None +2025-12-12 11:49:38,314 - app.core.excel.converter - WARNING - 无法解析规格: 22*None,使用默认值1*1 +2025-12-12 11:49:38,315 - app.core.excel.converter - INFO - 提取规格: 劲仔手撕肉干麻辣味10g@ -> 10*None +2025-12-12 11:49:38,315 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 劲仔手撕肉干麻辣味10g@ -> 10*None +2025-12-12 11:49:38,317 - app.core.excel.converter - WARNING - 无法解析规格: 10*None,使用默认值1*1 +2025-12-12 11:49:38,349 - app.core.excel.converter - INFO - 提取规格: 劲仔手撕肉干香辣味10g@ -> 10*None +2025-12-12 11:49:38,349 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 劲仔手撕肉干香辣味10g@ -> 10*None +2025-12-12 11:49:38,349 - app.core.excel.converter - WARNING - 无法解析规格: 10*None,使用默认值1*1 +2025-12-12 11:49:38,353 - app.core.excel.converter - INFO - 提取规格: 登荣香辣爽口鸡23g -> 23*None +2025-12-12 11:49:38,353 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 登荣香辣爽口鸡23g -> 23*None +2025-12-12 11:49:38,353 - app.core.excel.converter - WARNING - 无法解析规格: 23*None,使用默认值1*1 +2025-12-12 11:49:38,355 - app.core.excel.converter - INFO - 提取规格: 德芙脆香米脆米心牛奶巧克力12g@ -> 12*None +2025-12-12 11:49:38,356 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 德芙脆香米脆米心牛奶巧克力12g@ -> 12*None +2025-12-12 11:49:38,356 - app.core.excel.converter - WARNING - 无法解析规格: 12*None,使用默认值1*1 +2025-12-12 11:49:38,357 - app.core.excel.converter - INFO - 提取规格: 味芝元洞庭鱼排香辣味26g -> 26*None +2025-12-12 11:49:38,357 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 味芝元洞庭鱼排香辣味26g -> 26*None +2025-12-12 11:49:38,359 - app.core.excel.converter - WARNING - 无法解析规格: 26*None,使用默认值1*1 +2025-12-12 11:49:38,359 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 15.0, 单价: 1.42, 单位: 袋 +2025-12-12 11:49:38,359 - app.core.excel.converter - INFO - 提取规格: 劲仔小鱼麻辣小鱼12g@ -> 12*None +2025-12-12 11:49:38,360 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 劲仔小鱼麻辣小鱼12g@ -> 12*None +2025-12-12 11:49:38,361 - app.core.excel.converter - WARNING - 无法解析规格: 12*None,使用默认值1*1 +2025-12-12 11:49:38,361 - app.core.excel.converter - INFO - 提取规格: 缺牙齿素牛肚香辣味16g -> 16*None +2025-12-12 11:49:38,361 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 缺牙齿素牛肚香辣味16g -> 16*None +2025-12-12 11:49:38,363 - app.core.excel.converter - WARNING - 无法解析规格: 16*None,使用默认值1*1 +2025-12-12 11:49:38,363 - app.core.excel.converter - INFO - 提取规格: 乐事青柠味70g@ -> 70*None +2025-12-12 11:49:38,364 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事青柠味70g@ -> 70*None +2025-12-12 11:49:38,364 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:49:38,365 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.55, 单位: 袋 +2025-12-12 11:49:38,365 - app.core.excel.converter - INFO - 提取规格: 乐事黄瓜味70g@ -> 70*None +2025-12-12 11:49:38,366 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事黄瓜味70g@ -> 70*None +2025-12-12 11:49:38,366 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:49:38,367 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.55, 单位: 袋 +2025-12-12 11:49:38,367 - app.core.excel.converter - INFO - 提取规格: 乐事德克萨斯烧烤味70g@ -> 70*None +2025-12-12 11:49:38,367 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事德克萨斯烧烤味70g@ -> 70*None +2025-12-12 11:49:38,368 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 11:49:38,368 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 4.55, 单位: 袋 +2025-12-12 11:49:38,368 - app.core.excel.converter - INFO - 提取规格: 乐事薯片经典原味23g(串串装)@ -> 23*None +2025-12-12 11:49:38,368 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事薯片经典原味23g(串串装)@ -> 23*None +2025-12-12 11:49:38,370 - app.core.excel.converter - WARNING - 无法解析规格: 23*None,使用默认值1*1 +2025-12-12 11:49:38,370 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 1.0, 单价: 1.35, 单位: 袋 +2025-12-12 12:30:07,698 - app.core.excel.converter - INFO - 成功加载条码映射配置,共51项 +2025-12-12 12:30:07,726 - app.core.excel.converter - INFO - 提取规格: 乐事墨西哥鸡汁番茄味70g@ -> 70*None +2025-12-12 12:30:07,726 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事墨西哥鸡汁番茄味70g@ -> 70*None +2025-12-12 12:30:07,730 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 12:30:07,730 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.55, 单位: 袋 +2025-12-12 12:30:07,730 - app.core.excel.converter - INFO - 提取规格: 乐事美国经典原味70g@ -> 70*None +2025-12-12 12:30:07,730 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事美国经典原味70g@ -> 70*None +2025-12-12 12:30:07,730 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 12:30:07,730 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 4.55, 单位: 袋 +2025-12-12 12:30:07,730 - app.core.excel.converter - INFO - 提取规格: 子弟原切马铃薯片清怡黄瓜味95g@ -> 95*None +2025-12-12 12:30:07,730 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 子弟原切马铃薯片清怡黄瓜味95g@ -> 95*None +2025-12-12 12:30:07,730 - app.core.excel.converter - WARNING - 无法解析规格: 95*None,使用默认值1*1 +2025-12-12 12:30:07,730 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 6.0, 单价: 5.32, 单位: 袋 +2025-12-12 12:30:07,734 - app.core.excel.converter - INFO - 提取规格: 子弟原切马铃薯片美滋番茄味95g@ -> 95*None +2025-12-12 12:30:07,734 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 子弟原切马铃薯片美滋番茄味95g@ -> 95*None +2025-12-12 12:30:07,734 - app.core.excel.converter - WARNING - 无法解析规格: 95*None,使用默认值1*1 +2025-12-12 12:30:07,734 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 6.0, 单价: 5.32, 单位: 袋 +2025-12-12 12:30:07,734 - app.core.excel.converter - INFO - 提取规格: 子弟原切马铃薯片经典麻辣味95g@ -> 95*None +2025-12-12 12:30:07,734 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 子弟原切马铃薯片经典麻辣味95g@ -> 95*None +2025-12-12 12:30:07,734 - app.core.excel.converter - WARNING - 无法解析规格: 95*None,使用默认值1*1 +2025-12-12 12:30:07,734 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 6.0, 单价: 5.32, 单位: 袋 +2025-12-12 12:30:07,734 - app.core.excel.converter - INFO - 提取规格: 子弟原切马铃薯片劲爆麻辣味95g@ -> 95*None +2025-12-12 12:30:07,738 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 子弟原切马铃薯片劲爆麻辣味95g@ -> 95*None +2025-12-12 12:30:07,738 - app.core.excel.converter - WARNING - 无法解析规格: 95*None,使用默认值1*1 +2025-12-12 12:30:07,738 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 6.0, 单价: 5.32, 单位: 袋 +2025-12-12 12:30:07,738 - app.core.excel.converter - INFO - 提取规格: 飘零大叔香辣猪肉脯50g@ -> 50*None +2025-12-12 12:30:07,738 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 飘零大叔香辣猪肉脯50g@ -> 50*None +2025-12-12 12:30:07,738 - app.core.excel.converter - WARNING - 无法解析规格: 50*None,使用默认值1*1 +2025-12-12 12:30:07,738 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 5.46, 单位: 袋 +2025-12-12 12:30:07,738 - app.core.excel.converter - INFO - 提取规格: 飘零大叔川味烤香肠香辣味65g@ -> 65*None +2025-12-12 12:30:07,738 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 飘零大叔川味烤香肠香辣味65g@ -> 65*None +2025-12-12 12:30:07,742 - app.core.excel.converter - WARNING - 无法解析规格: 65*None,使用默认值1*1 +2025-12-12 12:30:07,742 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 6.77, 单位: 袋 +2025-12-12 12:30:07,742 - app.core.excel.converter - INFO - 提取规格: 川牛娃老成都五香牛肉干60g -> 60*None +2025-12-12 12:30:07,742 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 川牛娃老成都五香牛肉干60g -> 60*None +2025-12-12 12:30:07,742 - app.core.excel.converter - WARNING - 无法解析规格: 60*None,使用默认值1*1 +2025-12-12 12:30:07,742 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 9.03, 单位: 袋 +2025-12-12 12:30:07,742 - app.core.excel.converter - INFO - 提取规格: 王小卤虎皮凤爪卤香味 105g@ -> 105*None +2025-12-12 12:30:07,742 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 王小卤虎皮凤爪卤香味 105g@ -> 105*None +2025-12-12 12:30:07,746 - app.core.excel.converter - WARNING - 无法解析规格: 105*None,使用默认值1*1 +2025-12-12 12:30:07,746 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 10.36, 单位: 袋 +2025-12-12 12:30:07,746 - app.core.excel.converter - INFO - 提取规格: 王小卤虎皮凤爪火锅味105g@ -> 105*None +2025-12-12 12:30:07,746 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 王小卤虎皮凤爪火锅味105g@ -> 105*None +2025-12-12 12:30:07,746 - app.core.excel.converter - WARNING - 无法解析规格: 105*None,使用默认值1*1 +2025-12-12 12:30:07,746 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 2.0, 单价: 10.36, 单位: 袋 +2025-12-12 12:30:07,746 - app.core.excel.converter - INFO - 提取规格: 四味王酱鸭脖猛辣味60g@ -> 60*None +2025-12-12 12:30:07,746 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 四味王酱鸭脖猛辣味60g@ -> 60*None +2025-12-12 12:30:07,746 - app.core.excel.converter - WARNING - 无法解析规格: 60*None,使用默认值1*1 +2025-12-12 12:30:07,750 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 2.0, 单价: 4.66, 单位: 个 +2025-12-12 12:30:07,750 - app.core.excel.converter - INFO - 提取规格: 四味王酱鸭脖微辣味60g@ -> 60*None +2025-12-12 12:30:07,750 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 四味王酱鸭脖微辣味60g@ -> 60*None +2025-12-12 12:30:07,750 - app.core.excel.converter - WARNING - 无法解析规格: 60*None,使用默认值1*1 +2025-12-12 12:30:07,750 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 4.66, 单位: 个 +2025-12-12 12:30:07,750 - app.core.excel.converter - INFO - 提取规格: 麦得赞盐焗烤腿90g -> 90*None +2025-12-12 12:30:07,750 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 麦得赞盐焗烤腿90g -> 90*None +2025-12-12 12:30:07,753 - app.core.excel.converter - WARNING - 无法解析规格: 90*None,使用默认值1*1 +2025-12-12 12:30:07,753 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.71, 单位: 袋 +2025-12-12 12:30:07,754 - app.core.excel.converter - INFO - 提取规格: 杨记老卤双爪多味70g -> 70*None +2025-12-12 12:30:07,754 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 杨记老卤双爪多味70g -> 70*None +2025-12-12 12:30:07,755 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 12:30:07,755 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.8, 单位: 袋 +2025-12-12 12:30:07,756 - app.core.excel.converter - INFO - 提取规格: 逍遥嘴花椒鸡味180g -> 180*None +2025-12-12 12:30:07,756 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 逍遥嘴花椒鸡味180g -> 180*None +2025-12-12 12:30:07,757 - app.core.excel.converter - WARNING - 无法解析规格: 180*None,使用默认值1*1 +2025-12-12 12:30:07,757 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 6.0, 单价: 2.85, 单位: 袋 +2025-12-12 12:30:07,757 - app.core.excel.converter - INFO - 提取规格: 茂林炭烤鱿鱼丝60g -> 60*None +2025-12-12 12:30:07,757 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 茂林炭烤鱿鱼丝60g -> 60*None +2025-12-12 12:30:07,758 - app.core.excel.converter - WARNING - 无法解析规格: 60*None,使用默认值1*1 +2025-12-12 12:30:07,759 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 8.46, 单位: 袋 +2025-12-12 12:30:07,759 - app.core.excel.converter - INFO - 提取规格: 金满福手工辣条素龙虾味152g -> 152*None +2025-12-12 12:30:07,759 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 金满福手工辣条素龙虾味152g -> 152*None +2025-12-12 12:30:07,759 - app.core.excel.converter - WARNING - 无法解析规格: 152*None,使用默认值1*1 +2025-12-12 12:30:07,759 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 2.95, 单位: 袋 +2025-12-12 12:30:07,759 - app.core.excel.converter - INFO - 提取规格: 卫龙大面筋102g@ -> 102*None +2025-12-12 12:30:07,759 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 卫龙大面筋102g@ -> 102*None +2025-12-12 12:30:07,759 - app.core.excel.converter - WARNING - 无法解析规格: 102*None,使用默认值1*1 +2025-12-12 12:30:07,759 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 6.0, 单价: 2.58, 单位: 袋 +2025-12-12 12:30:07,763 - app.core.excel.converter - INFO - 提取规格: 麻辣王子地道辣条很麻很辣73g -> 73*None +2025-12-12 12:30:07,763 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 麻辣王子地道辣条很麻很辣73g -> 73*None +2025-12-12 12:30:07,763 - app.core.excel.converter - WARNING - 无法解析规格: 73*None,使用默认值1*1 +2025-12-12 12:30:07,763 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 3.61, 单位: 袋 +2025-12-12 12:30:07,763 - app.core.excel.converter - INFO - 提取规格: 麻辣王子地道辣条微麻微辣73g -> 73*None +2025-12-12 12:30:07,763 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 麻辣王子地道辣条微麻微辣73g -> 73*None +2025-12-12 12:30:07,763 - app.core.excel.converter - WARNING - 无法解析规格: 73*None,使用默认值1*1 +2025-12-12 12:30:07,763 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 6.0, 单价: 3.61, 单位: 袋 +2025-12-12 12:30:07,763 - app.core.excel.converter - INFO - 提取规格: 展华大辣棒麻辣牛肉味138g -> 138*None +2025-12-12 12:30:07,767 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 展华大辣棒麻辣牛肉味138g -> 138*None +2025-12-12 12:30:07,767 - app.core.excel.converter - WARNING - 无法解析规格: 138*None,使用默认值1*1 +2025-12-12 12:30:07,767 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 6.0, 单价: 2.95, 单位: 袋 +2025-12-12 12:30:07,767 - app.core.excel.converter - INFO - 提取规格: 徐福记米果卷香烤牛排90g@ -> 90*None +2025-12-12 12:30:07,767 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 徐福记米果卷香烤牛排90g@ -> 90*None +2025-12-12 12:30:07,767 - app.core.excel.converter - WARNING - 无法解析规格: 90*None,使用默认值1*1 +2025-12-12 12:30:07,767 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 2.0, 单价: 4.62, 单位: 袋 +2025-12-12 12:30:07,767 - app.core.excel.converter - INFO - 提取规格: 徐福记米果卷奶油玉米90g@ -> 90*None +2025-12-12 12:30:07,767 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 徐福记米果卷奶油玉米90g@ -> 90*None +2025-12-12 12:30:07,771 - app.core.excel.converter - WARNING - 无法解析规格: 90*None,使用默认值1*1 +2025-12-12 12:30:07,771 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 2.0, 单价: 4.62, 单位: 袋 +2025-12-12 12:30:07,771 - app.core.excel.converter - INFO - 提取规格: 登荣素口水鸡65g -> 65*None +2025-12-12 12:30:07,771 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 登荣素口水鸡65g -> 65*None +2025-12-12 12:30:07,771 - app.core.excel.converter - WARNING - 无法解析规格: 65*None,使用默认值1*1 +2025-12-12 12:30:07,771 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 1.52, 单位: 袋 +2025-12-12 12:30:07,771 - app.core.excel.converter - INFO - 提取规格: 太哥辣白菜味调味面制品58g -> 58*None +2025-12-12 12:30:07,771 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 太哥辣白菜味调味面制品58g -> 58*None +2025-12-12 12:30:07,771 - app.core.excel.converter - WARNING - 无法解析规格: 58*None,使用默认值1*1 +2025-12-12 12:30:07,775 - app.core.excel.converter - INFO - 提取规格: 小渝儿泡椒牛板筋泡椒80g@ -> 80*None +2025-12-12 12:30:07,775 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 小渝儿泡椒牛板筋泡椒80g@ -> 80*None +2025-12-12 12:30:07,775 - app.core.excel.converter - WARNING - 无法解析规格: 80*None,使用默认值1*1 +2025-12-12 12:30:07,775 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 1.38, 单位: 袋 +2025-12-12 12:30:07,775 - app.core.excel.converter - INFO - 提取规格: 小渝儿泡椒臭干子泡椒80g@ -> 80*None +2025-12-12 12:30:07,775 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 小渝儿泡椒臭干子泡椒80g@ -> 80*None +2025-12-12 12:30:07,775 - app.core.excel.converter - WARNING - 无法解析规格: 80*None,使用默认值1*1 +2025-12-12 12:30:07,775 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 6.0, 单价: 1.22, 单位: 袋 +2025-12-12 12:30:07,775 - app.core.excel.converter - INFO - 提取规格: 郎阿哥牛羊配辣味90g -> 90*None +2025-12-12 12:30:07,775 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 郎阿哥牛羊配辣味90g -> 90*None +2025-12-12 12:30:07,779 - app.core.excel.converter - WARNING - 无法解析规格: 90*None,使用默认值1*1 +2025-12-12 12:30:07,779 - app.core.excel.converter - INFO - 提取规格: 卫龙大面筋106g@ -> 106*None +2025-12-12 12:30:07,779 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 卫龙大面筋106g@ -> 106*None +2025-12-12 12:30:07,779 - app.core.excel.converter - WARNING - 无法解析规格: 106*None,使用默认值1*1 +2025-12-12 12:30:07,779 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 3.13, 单位: 袋 +2025-12-12 12:30:07,779 - app.core.excel.converter - INFO - 提取规格: 小滑头薄片(经典)72g -> 72*None +2025-12-12 12:30:07,779 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 小滑头薄片(经典)72g -> 72*None +2025-12-12 12:30:07,779 - app.core.excel.converter - WARNING - 无法解析规格: 72*None,使用默认值1*1 +2025-12-12 12:30:07,779 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 1.43, 单位: 袋 +2025-12-12 12:30:07,784 - app.core.excel.converter - INFO - 提取规格: 溜溜梅西梅60g@ -> 60*None +2025-12-12 12:30:07,784 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 溜溜梅西梅60g@ -> 60*None +2025-12-12 12:30:07,785 - app.core.excel.converter - WARNING - 无法解析规格: 60*None,使用默认值1*1 +2025-12-12 12:30:07,785 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.61, 单位: 袋 +2025-12-12 12:30:07,785 - app.core.excel.converter - INFO - 提取规格: 溜溜梅清梅60g@ -> 60*None +2025-12-12 12:30:07,786 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 溜溜梅清梅60g@ -> 60*None +2025-12-12 12:30:07,786 - app.core.excel.converter - WARNING - 无法解析规格: 60*None,使用默认值1*1 +2025-12-12 12:30:07,786 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.61, 单位: 袋 +2025-12-12 12:30:07,787 - app.core.excel.converter - INFO - 提取规格: 溜溜梅雪梅60g@ -> 60*None +2025-12-12 12:30:07,787 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 溜溜梅雪梅60g@ -> 60*None +2025-12-12 12:30:07,788 - app.core.excel.converter - WARNING - 无法解析规格: 60*None,使用默认值1*1 +2025-12-12 12:30:07,788 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 3.61, 单位: 袋 +2025-12-12 12:30:07,788 - app.core.excel.converter - INFO - 提取规格: 溜溜梅西梅160g@ -> 160*None +2025-12-12 12:30:07,788 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 溜溜梅西梅160g@ -> 160*None +2025-12-12 12:30:07,788 - app.core.excel.converter - WARNING - 无法解析规格: 160*None,使用默认值1*1 +2025-12-12 12:30:07,788 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 8.55, 单位: 袋 +2025-12-12 12:30:07,791 - app.core.excel.converter - INFO - 提取规格: 溜溜梅清梅160g@ -> 160*None +2025-12-12 12:30:07,791 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 溜溜梅清梅160g@ -> 160*None +2025-12-12 12:30:07,791 - app.core.excel.converter - WARNING - 无法解析规格: 160*None,使用默认值1*1 +2025-12-12 12:30:07,791 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 8.55, 单位: 袋 +2025-12-12 12:30:07,791 - app.core.excel.converter - INFO - 提取规格: 溜溜梅杨梅50g@ -> 50*None +2025-12-12 12:30:07,791 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 溜溜梅杨梅50g@ -> 50*None +2025-12-12 12:30:07,791 - app.core.excel.converter - WARNING - 无法解析规格: 50*None,使用默认值1*1 +2025-12-12 12:30:07,791 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.61, 单位: 袋 +2025-12-12 12:30:07,791 - app.core.excel.converter - INFO - 提取规格: 天马达利雪梅65g -> 65*None +2025-12-12 12:30:07,795 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 天马达利雪梅65g -> 65*None +2025-12-12 12:30:07,795 - app.core.excel.converter - WARNING - 无法解析规格: 65*None,使用默认值1*1 +2025-12-12 12:30:07,795 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.38, 单位: 袋 +2025-12-12 12:30:07,795 - app.core.excel.converter - INFO - 提取规格: 必吃客雪花山楂条142g -> 142*None +2025-12-12 12:30:07,795 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 必吃客雪花山楂条142g -> 142*None +2025-12-12 12:30:07,795 - app.core.excel.converter - WARNING - 无法解析规格: 142*None,使用默认值1*1 +2025-12-12 12:30:07,795 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 3.9, 单位: 袋 +2025-12-12 12:30:07,795 - app.core.excel.converter - INFO - 提取规格: 必吃客零售瓶红薯果脯140g -> 140*None +2025-12-12 12:30:07,795 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 必吃客零售瓶红薯果脯140g -> 140*None +2025-12-12 12:30:07,799 - app.core.excel.converter - WARNING - 无法解析规格: 140*None,使用默认值1*1 +2025-12-12 12:30:07,799 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.99, 单位: 袋 +2025-12-12 12:30:07,799 - app.core.excel.converter - INFO - 提取规格: 75g旺宝香蕉脆片 -> 75*None +2025-12-12 12:30:07,799 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 75g旺宝香蕉脆片 -> 75*None +2025-12-12 12:30:07,799 - app.core.excel.converter - WARNING - 无法解析规格: 75*None,使用默认值1*1 +2025-12-12 12:30:07,799 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.04, 单位: 袋 +2025-12-12 12:30:07,799 - app.core.excel.converter - INFO - 提取规格: 旺宝开心果100g -> 100*None +2025-12-12 12:30:07,799 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 旺宝开心果100g -> 100*None +2025-12-12 12:30:07,803 - app.core.excel.converter - WARNING - 无法解析规格: 100*None,使用默认值1*1 +2025-12-12 12:30:07,803 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 9.98, 单位: 袋 +2025-12-12 12:30:07,803 - app.core.excel.converter - INFO - 提取规格: 金枣庄阿胶枣200g -> 200*None +2025-12-12 12:30:07,803 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 金枣庄阿胶枣200g -> 200*None +2025-12-12 12:30:07,803 - app.core.excel.converter - WARNING - 无法解析规格: 200*None,使用默认值1*1 +2025-12-12 12:30:07,803 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.52, 单位: 袋 +2025-12-12 12:30:07,803 - app.core.excel.converter - INFO - 提取规格: 大白兔奶糖114g@ -> 114*None +2025-12-12 12:30:07,803 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 大白兔奶糖114g@ -> 114*None +2025-12-12 12:30:07,803 - app.core.excel.converter - WARNING - 无法解析规格: 114*None,使用默认值1*1 +2025-12-12 12:30:07,807 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 5.69, 单位: 袋 +2025-12-12 12:30:07,807 - app.core.excel.converter - INFO - 提取规格: 佳宝无核葡萄干90g -> 90*None +2025-12-12 12:30:07,807 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 佳宝无核葡萄干90g -> 90*None +2025-12-12 12:30:07,807 - app.core.excel.converter - WARNING - 无法解析规格: 90*None,使用默认值1*1 +2025-12-12 12:30:07,807 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.33, 单位: 袋 +2025-12-12 12:30:07,807 - app.core.excel.converter - INFO - 提取规格: 老程华甲级杂糖140g -> 140*None +2025-12-12 12:30:07,807 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 老程华甲级杂糖140g -> 140*None +2025-12-12 12:30:07,807 - app.core.excel.converter - WARNING - 无法解析规格: 140*None,使用默认值1*1 +2025-12-12 12:30:07,807 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.42, 单位: 袋 +2025-12-12 12:30:07,807 - app.core.excel.converter - INFO - 提取规格: 飘零大叔香卤铁蛋88g@ -> 88*None +2025-12-12 12:30:07,811 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 飘零大叔香卤铁蛋88g@ -> 88*None +2025-12-12 12:30:07,811 - app.core.excel.converter - WARNING - 无法解析规格: 88*None,使用默认值1*1 +2025-12-12 12:30:07,811 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 5.15, 单位: 袋 +2025-12-12 12:30:07,811 - app.core.excel.converter - INFO - 提取规格: 80g调皮猴鹌鹑蛋(麻辣味) -> 80*None +2025-12-12 12:30:07,811 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 80g调皮猴鹌鹑蛋(麻辣味) -> 80*None +2025-12-12 12:30:07,811 - app.core.excel.converter - WARNING - 无法解析规格: 80*None,使用默认值1*1 +2025-12-12 12:30:07,811 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.38, 单位: 袋 +2025-12-12 12:30:07,811 - app.core.excel.converter - INFO - 提取规格: 有友卤香鸡翅120g@ -> 120*None +2025-12-12 12:30:07,811 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 有友卤香鸡翅120g@ -> 120*None +2025-12-12 12:30:07,816 - app.core.excel.converter - WARNING - 无法解析规格: 120*None,使用默认值1*1 +2025-12-12 12:30:07,816 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 12.35, 单位: 袋 +2025-12-12 12:30:07,817 - app.core.excel.converter - INFO - 提取规格: 125g千百度卤香鸡翅(五香味) -> 125*None +2025-12-12 12:30:07,817 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 125g千百度卤香鸡翅(五香味) -> 125*None +2025-12-12 12:30:07,818 - app.core.excel.converter - WARNING - 无法解析规格: 125*None,使用默认值1*1 +2025-12-12 12:30:07,818 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 11.6, 单位: 袋 +2025-12-12 12:30:07,819 - app.core.excel.converter - INFO - 提取规格: 逍遥派盐焗鸡腿100g -> 100*None +2025-12-12 12:30:07,819 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 逍遥派盐焗鸡腿100g -> 100*None +2025-12-12 12:30:07,820 - app.core.excel.converter - WARNING - 无法解析规格: 100*None,使用默认值1*1 +2025-12-12 12:30:07,820 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 8.27, 单位: 袋 +2025-12-12 12:30:07,820 - app.core.excel.converter - INFO - 提取规格: 周小贱功夫鸭脖疯狂香辣味55g -> 55*None +2025-12-12 12:30:07,821 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 周小贱功夫鸭脖疯狂香辣味55g -> 55*None +2025-12-12 12:30:07,821 - app.core.excel.converter - WARNING - 无法解析规格: 55*None,使用默认值1*1 +2025-12-12 12:30:07,821 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 6.0, 单价: 4.28, 单位: 袋 +2025-12-12 12:30:07,821 - app.core.excel.converter - INFO - 提取规格: 好巴食豆腐干麻辣味涨95g -> 95*None +2025-12-12 12:30:07,821 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 好巴食豆腐干麻辣味涨95g -> 95*None +2025-12-12 12:30:07,821 - app.core.excel.converter - WARNING - 无法解析规格: 95*None,使用默认值1*1 +2025-12-12 12:30:07,821 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 4.0, 单价: 3.33, 单位: 袋 +2025-12-12 12:30:07,821 - app.core.excel.converter - INFO - 提取规格: 好巴食豆腐干烧烤味涨95g -> 95*None +2025-12-12 12:30:07,821 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 好巴食豆腐干烧烤味涨95g -> 95*None +2025-12-12 12:30:07,825 - app.core.excel.converter - WARNING - 无法解析规格: 95*None,使用默认值1*1 +2025-12-12 12:30:07,825 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.33, 单位: 袋 +2025-12-12 12:30:07,825 - app.core.excel.converter - INFO - 提取规格: 好巴食南溪豆干五香味涨95g -> 95*None +2025-12-12 12:30:07,825 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 好巴食南溪豆干五香味涨95g -> 95*None +2025-12-12 12:30:07,825 - app.core.excel.converter - WARNING - 无法解析规格: 95*None,使用默认值1*1 +2025-12-12 12:30:07,825 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 3.33, 单位: 袋 +2025-12-12 12:30:07,825 - app.core.excel.converter - INFO - 提取规格: 香香嘴卤制豆腐干香辣味80g@ -> 80*None +2025-12-12 12:30:07,825 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 香香嘴卤制豆腐干香辣味80g@ -> 80*None +2025-12-12 12:30:07,825 - app.core.excel.converter - WARNING - 无法解析规格: 80*None,使用默认值1*1 +2025-12-12 12:30:07,829 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 2.66, 单位: 袋 +2025-12-12 12:30:07,829 - app.core.excel.converter - INFO - 提取规格: 老灶煮花生130g -> 130*None +2025-12-12 12:30:07,829 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 老灶煮花生130g -> 130*None +2025-12-12 12:30:07,829 - app.core.excel.converter - WARNING - 无法解析规格: 130*None,使用默认值1*1 +2025-12-12 12:30:07,829 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 3.5, 单位: 袋 +2025-12-12 12:30:07,829 - app.core.excel.converter - INFO - 提取规格: 老灶花生292g -> 292*None +2025-12-12 12:30:07,829 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 老灶花生292g -> 292*None +2025-12-12 12:30:07,829 - app.core.excel.converter - WARNING - 无法解析规格: 292*None,使用默认值1*1 +2025-12-12 12:30:07,829 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 6.63, 单位: 袋 +2025-12-12 12:30:07,829 - app.core.excel.converter - INFO - 提取规格: 老灶花生186g -> 186*None +2025-12-12 12:30:07,829 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 老灶花生186g -> 186*None +2025-12-12 12:30:07,833 - app.core.excel.converter - WARNING - 无法解析规格: 186*None,使用默认值1*1 +2025-12-12 12:30:07,833 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 8.0, 单价: 4.9, 单位: 袋 +2025-12-12 12:30:07,833 - app.core.excel.converter - INFO - 提取规格: 洽洽奶香瓜子285g@ -> 285*None +2025-12-12 12:30:07,833 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 洽洽奶香瓜子285g@ -> 285*None +2025-12-12 12:30:07,833 - app.core.excel.converter - WARNING - 无法解析规格: 285*None,使用默认值1*1 +2025-12-12 12:30:07,833 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 9.63, 单位: 袋 +2025-12-12 12:32:20,578 - app.core.excel.converter - INFO - 成功加载条码映射配置,共51项 +2025-12-12 12:32:20,603 - app.core.excel.converter - INFO - 提取规格: 洽洽香瓜子260g@ -> 260*None +2025-12-12 12:32:20,603 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 洽洽香瓜子260g@ -> 260*None +2025-12-12 12:32:20,606 - app.core.excel.converter - WARNING - 无法解析规格: 260*None,使用默认值1*1 +2025-12-12 12:32:20,606 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 8.6, 单位: 袋 +2025-12-12 12:32:20,606 - app.core.excel.converter - INFO - 提取规格: 洽洽香瓜子200g@ -> 200*None +2025-12-12 12:32:20,606 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 洽洽香瓜子200g@ -> 200*None +2025-12-12 12:32:20,606 - app.core.excel.converter - WARNING - 无法解析规格: 200*None,使用默认值1*1 +2025-12-12 12:32:20,606 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 6.35, 单位: 袋 +2025-12-12 12:32:20,606 - app.core.excel.converter - INFO - 提取规格: 洽洽香瓜子160g@ -> 160*None +2025-12-12 12:32:20,610 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 洽洽香瓜子160g@ -> 160*None +2025-12-12 12:32:20,610 - app.core.excel.converter - WARNING - 无法解析规格: 160*None,使用默认值1*1 +2025-12-12 12:32:20,610 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 5.35, 单位: 袋 +2025-12-12 12:32:20,610 - app.core.excel.converter - INFO - 提取规格: 洽洽香瓜子110g@ -> 110*None +2025-12-12 12:32:20,610 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 洽洽香瓜子110g@ -> 110*None +2025-12-12 12:32:20,610 - app.core.excel.converter - WARNING - 无法解析规格: 110*None,使用默认值1*1 +2025-12-12 12:32:20,610 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 6.0, 单价: 3.56, 单位: 袋 +2025-12-12 12:32:20,614 - app.core.excel.converter - INFO - 提取规格: 洽洽原香瓜子142g@ -> 142*None +2025-12-12 12:32:20,614 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 洽洽原香瓜子142g@ -> 142*None +2025-12-12 12:32:20,614 - app.core.excel.converter - WARNING - 无法解析规格: 142*None,使用默认值1*1 +2025-12-12 12:32:20,614 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 5.35, 单位: 袋 +2025-12-12 12:32:20,614 - app.core.excel.converter - INFO - 提取规格: 徽记生瓜子涨115g -> 115*None +2025-12-12 12:32:20,614 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 徽记生瓜子涨115g -> 115*None +2025-12-12 12:32:20,614 - app.core.excel.converter - WARNING - 无法解析规格: 115*None,使用默认值1*1 +2025-12-12 12:32:20,618 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.11, 单位: 袋 +2025-12-12 12:32:20,619 - app.core.excel.converter - INFO - 提取规格: 徽记煮瓜子涨140g -> 140*None +2025-12-12 12:32:20,619 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 徽记煮瓜子涨140g -> 140*None +2025-12-12 12:32:20,619 - app.core.excel.converter - WARNING - 无法解析规格: 140*None,使用默认值1*1 +2025-12-12 12:32:20,619 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 4.68, 单位: 袋 +2025-12-12 12:32:20,619 - app.core.excel.converter - INFO - 提取规格: 洽洽瓜子山核桃108g@ -> 108*None +2025-12-12 12:32:20,619 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 洽洽瓜子山核桃108g@ -> 108*None +2025-12-12 12:32:20,622 - app.core.excel.converter - WARNING - 无法解析规格: 108*None,使用默认值1*1 +2025-12-12 12:32:20,622 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 5.08, 单位: 袋 +2025-12-12 12:32:20,622 - app.core.excel.converter - INFO - 提取规格: 洽洽瓜子焦糖味88g@ -> 88*None +2025-12-12 12:32:20,622 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 洽洽瓜子焦糖味88g@ -> 88*None +2025-12-12 12:32:20,622 - app.core.excel.converter - WARNING - 无法解析规格: 88*None,使用默认值1*1 +2025-12-12 12:32:20,622 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 6.0, 单价: 4.59, 单位: 袋 +2025-12-12 12:32:20,622 - app.core.excel.converter - INFO - 提取规格: 百世兴酒鬼花生原味100g -> 100*None +2025-12-12 12:32:20,622 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 百世兴酒鬼花生原味100g -> 100*None +2025-12-12 12:32:20,622 - app.core.excel.converter - WARNING - 无法解析规格: 100*None,使用默认值1*1 +2025-12-12 12:32:20,626 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 3.82, 单位: 袋 +2025-12-12 12:32:20,626 - app.core.excel.converter - INFO - 提取规格: 百世兴酒鬼花生80g -> 80*None +2025-12-12 12:32:20,626 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 百世兴酒鬼花生80g -> 80*None +2025-12-12 12:32:20,628 - app.core.excel.converter - WARNING - 无法解析规格: 80*None,使用默认值1*1 +2025-12-12 12:32:20,628 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.34, 单位: 袋 +2025-12-12 12:32:20,628 - app.core.excel.converter - INFO - 提取规格: 老程华怪味胡豆140g -> 140*None +2025-12-12 12:32:20,628 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 老程华怪味胡豆140g -> 140*None +2025-12-12 12:32:20,629 - app.core.excel.converter - WARNING - 无法解析规格: 140*None,使用默认值1*1 +2025-12-12 12:32:20,630 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 3.06, 单位: 袋 +2025-12-12 12:32:20,630 - app.core.excel.converter - INFO - 提取规格: 老程华重庆怪味胡豆190g -> 190*None +2025-12-12 12:32:20,630 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 老程华重庆怪味胡豆190g -> 190*None +2025-12-12 12:32:20,630 - app.core.excel.converter - WARNING - 无法解析规格: 190*None,使用默认值1*1 +2025-12-12 12:32:20,630 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 3.92, 单位: 袋 +2025-12-12 12:32:20,630 - app.core.excel.converter - INFO - 提取规格: 甘源瓜子仁蟹黄味75g@ -> 75*None +2025-12-12 12:32:20,630 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 甘源瓜子仁蟹黄味75g@ -> 75*None +2025-12-12 12:32:20,630 - app.core.excel.converter - WARNING - 无法解析规格: 75*None,使用默认值1*1 +2025-12-12 12:32:20,634 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 3.06, 单位: 袋 +2025-12-12 12:32:20,635 - app.core.excel.converter - INFO - 提取规格: 甘源青豌豆蒜香味75g@ -> 75*None +2025-12-12 12:32:20,635 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 甘源青豌豆蒜香味75g@ -> 75*None +2025-12-12 12:32:20,635 - app.core.excel.converter - WARNING - 无法解析规格: 75*None,使用默认值1*1 +2025-12-12 12:32:20,635 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 3.06, 单位: 袋 +2025-12-12 12:32:20,635 - app.core.excel.converter - INFO - 提取规格: 素味居泡山椒笋尖100g -> 100*None +2025-12-12 12:32:20,635 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 素味居泡山椒笋尖100g -> 100*None +2025-12-12 12:32:20,635 - app.core.excel.converter - WARNING - 无法解析规格: 100*None,使用默认值1*1 +2025-12-12 12:32:20,635 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 2.73, 单位: 袋 +2025-12-12 12:32:20,639 - app.core.excel.converter - INFO - 提取规格: 卧龙酥脆小麻花烧烤味138g -> 138*None +2025-12-12 12:32:20,639 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 卧龙酥脆小麻花烧烤味138g -> 138*None +2025-12-12 12:32:20,639 - app.core.excel.converter - WARNING - 无法解析规格: 138*None,使用默认值1*1 +2025-12-12 12:32:20,639 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.01, 单位: 袋 +2025-12-12 12:32:20,639 - app.core.excel.converter - INFO - 提取规格: 川洋黑米锅巴香葱味82g@ -> 82*None +2025-12-12 12:32:20,639 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 川洋黑米锅巴香葱味82g@ -> 82*None +2025-12-12 12:32:20,639 - app.core.excel.converter - WARNING - 无法解析规格: 82*None,使用默认值1*1 +2025-12-12 12:32:20,639 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.45, 单位: 袋 +2025-12-12 12:32:20,643 - app.core.excel.converter - INFO - 提取规格: 寻唐记锅巴牛肉味70g -> 70*None +2025-12-12 12:32:20,643 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 寻唐记锅巴牛肉味70g -> 70*None +2025-12-12 12:32:20,643 - app.core.excel.converter - WARNING - 无法解析规格: 70*None,使用默认值1*1 +2025-12-12 12:32:20,643 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 1.91, 单位: 袋 +2025-12-12 12:32:20,643 - app.core.excel.converter - INFO - 提取规格: 吴氏远久肥肠酥192g -> 192*None +2025-12-12 12:32:20,643 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 吴氏远久肥肠酥192g -> 192*None +2025-12-12 12:32:20,643 - app.core.excel.converter - WARNING - 无法解析规格: 192*None,使用默认值1*1 +2025-12-12 12:32:20,643 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 2.77, 单位: 袋 +2025-12-12 12:32:20,647 - app.core.excel.converter - INFO - 提取规格: 吴氏远久猫耳朵192g -> 192*None +2025-12-12 12:32:20,647 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 吴氏远久猫耳朵192g -> 192*None +2025-12-12 12:32:20,647 - app.core.excel.converter - WARNING - 无法解析规格: 192*None,使用默认值1*1 +2025-12-12 12:32:20,647 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 2.77, 单位: 袋 +2025-12-12 12:32:20,647 - app.core.excel.converter - INFO - 提取规格: 吴氏远久麻辣鱼卷192g -> 192*None +2025-12-12 12:32:20,647 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 吴氏远久麻辣鱼卷192g -> 192*None +2025-12-12 12:32:20,647 - app.core.excel.converter - WARNING - 无法解析规格: 192*None,使用默认值1*1 +2025-12-12 12:32:20,651 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 2.77, 单位: 袋 +2025-12-12 12:32:20,651 - app.core.excel.converter - INFO - 提取规格: 盼盼薯片100g@ -> 100*None +2025-12-12 12:32:20,651 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 盼盼薯片100g@ -> 100*None +2025-12-12 12:32:20,651 - app.core.excel.converter - WARNING - 无法解析规格: 100*None,使用默认值1*1 +2025-12-12 12:32:20,651 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 2.63, 单位: 袋 +2025-12-12 12:32:20,651 - app.core.excel.converter - INFO - 提取规格: 盼盼金虾条分享装烤肉味75g@ -> 75*None +2025-12-12 12:32:20,651 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 盼盼金虾条分享装烤肉味75g@ -> 75*None +2025-12-12 12:32:20,655 - app.core.excel.converter - WARNING - 无法解析规格: 75*None,使用默认值1*1 +2025-12-12 12:32:20,655 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 2.39, 单位: 袋 +2025-12-12 12:32:20,655 - app.core.excel.converter - INFO - 提取规格: 30g东莱泡椒鸡蛋 -> 30*None +2025-12-12 12:32:20,655 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 30g东莱泡椒鸡蛋 -> 30*None +2025-12-12 12:32:20,655 - app.core.excel.converter - WARNING - 无法解析规格: 30*None,使用默认值1*1 +2025-12-12 12:32:20,655 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 10.0, 单价: 1.08, 单位: 袋 +2025-12-12 12:32:20,655 - app.core.excel.converter - INFO - 提取规格: 30g东莱卤鸡蛋 -> 30*None +2025-12-12 12:32:20,655 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 30g东莱卤鸡蛋 -> 30*None +2025-12-12 12:32:20,655 - app.core.excel.converter - WARNING - 无法解析规格: 30*None,使用默认值1*1 +2025-12-12 12:32:20,655 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 10.0, 单价: 1.08, 单位: 袋 +2025-12-12 12:32:20,659 - app.core.excel.converter - INFO - 提取规格: 达利园可比克听装薯片番茄味45g@ -> 45*None +2025-12-12 12:32:20,659 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 达利园可比克听装薯片番茄味45g@ -> 45*None +2025-12-12 12:32:20,660 - app.core.excel.converter - WARNING - 无法解析规格: 45*None,使用默认值1*1 +2025-12-12 12:32:20,660 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 2.72, 单位: 听 +2025-12-12 12:32:20,661 - app.core.excel.converter - INFO - 提取规格: 乐事无限嗞嗞烤肉味90g@ -> 90*None +2025-12-12 12:32:20,661 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 乐事无限嗞嗞烤肉味90g@ -> 90*None +2025-12-12 12:32:20,662 - app.core.excel.converter - WARNING - 无法解析规格: 90*None,使用默认值1*1 +2025-12-12 12:32:20,662 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 3.0, 单价: 6.21, 单位: 听 +2025-12-12 12:32:20,663 - app.core.excel.converter - INFO - 提取规格: 贤哥每日杂粮36g@ -> 36*None +2025-12-12 12:32:20,663 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 贤哥每日杂粮36g@ -> 36*None +2025-12-12 12:32:20,664 - app.core.excel.converter - WARNING - 无法解析规格: 36*None,使用默认值1*1 +2025-12-12 12:32:20,665 - app.core.excel.converter - INFO - 提取规格: 狗牙儿披萨卷香辣味188g@ -> 188*None +2025-12-12 12:32:20,665 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 狗牙儿披萨卷香辣味188g@ -> 188*None +2025-12-12 12:32:20,665 - app.core.excel.converter - WARNING - 无法解析规格: 188*None,使用默认值1*1 +2025-12-12 12:32:20,665 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.2, 单位: 袋 +2025-12-12 12:32:20,665 - app.core.excel.converter - INFO - 提取规格: 滇二娃土豆片麻辣味40g -> 40*None +2025-12-12 12:32:20,665 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 滇二娃土豆片麻辣味40g -> 40*None +2025-12-12 12:32:20,668 - app.core.excel.converter - WARNING - 无法解析规格: 40*None,使用默认值1*1 +2025-12-12 12:32:20,668 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 6.0, 单价: 1.72, 单位: 袋 +2025-12-12 12:32:20,668 - app.core.excel.converter - INFO - 提取规格: 脆升升薯片蜂蜜黄油味60g@ -> 60*None +2025-12-12 12:32:20,668 - app.core.excel.converter - INFO - 从名称推断规格(通用模式): 脆升升薯片蜂蜜黄油味60g@ -> 60*None +2025-12-12 12:32:20,668 - app.core.excel.converter - WARNING - 无法解析规格: 60*None,使用默认值1*1 +2025-12-12 12:32:20,668 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 5.0, 单价: 4.59, 单位: 袋 +2025-12-12 12:32:20,668 - app.core.excel.converter - INFO - 从名称推断规格(简单容量): 娃哈哈纯净水1.5L@ -> 1.5L*1 +2025-12-12 12:32:20,668 - app.core.excel.converter - INFO - 解析容量(L)规格: 1.5L*1 -> 1*1 +2025-12-12 12:32:20,672 - app.core.excel.converter - INFO - 其他单位处理: 保持原样 数量: 48.0, 单价: 2.1, 单位: 份 diff --git a/logs/app.core.excel.handlers.unit_converter_handlers.log b/logs/app.core.excel.handlers.unit_converter_handlers.log index 9dbee14..0158fcb 100644 --- a/logs/app.core.excel.handlers.unit_converter_handlers.log +++ b/logs/app.core.excel.handlers.unit_converter_handlers.log @@ -4334,3 +4334,123 @@ 2025-11-15 18:00:06,375 - app.core.excel.handlers.unit_converter_handlers - INFO - 赠品单位处理: 保持原样 数量: 0.0, 单价: 0, 单位: 2025-11-15 18:01:52,034 - app.core.excel.handlers.unit_converter_handlers - INFO - 赠品单位处理: 保持原样 数量: 0.0, 单价: 0, 单位: 2025-11-15 18:01:52,123 - app.core.excel.handlers.unit_converter_handlers - INFO - 赠品单位处理: 保持原样 数量: 0.0, 单价: 0, 单位: +2025-11-16 14:25:56,036 - app.core.excel.handlers.unit_converter_handlers - INFO - 赠品瓶单位处理: 保持原样 数量: 4.0, 单价: 0, 单位: 瓶 +2025-11-16 14:25:56,109 - app.core.excel.handlers.unit_converter_handlers - INFO - 赠品箱单位处理: 数量: 1.0 -> 24.0, 单价: 0, 单位: 箱 -> 瓶 +2025-11-16 14:25:56,246 - app.core.excel.handlers.unit_converter_handlers - INFO - 箱单位处理: 数量: 1.0 -> 15.0, 单价: 55.0 -> 3.6666666666666665, 单位: 箱 -> 瓶 +2025-11-16 14:25:56,309 - app.core.excel.handlers.unit_converter_handlers - INFO - 箱单位处理: 数量: 2.0 -> 30.0, 单价: 56.0 -> 3.7333333333333334, 单位: 箱 -> 瓶 +2025-11-16 14:25:56,380 - app.core.excel.handlers.unit_converter_handlers - INFO - 箱单位处理: 数量: 2.0 -> 30.0, 单价: 55.0 -> 3.6666666666666665, 单位: 箱 -> 瓶 +2025-11-16 14:25:56,447 - app.core.excel.handlers.unit_converter_handlers - INFO - 箱单位处理: 数量: 2.0 -> 30.0, 单价: 55.0 -> 3.6666666666666665, 单位: 箱 -> 瓶 +2025-11-16 14:25:56,509 - app.core.excel.handlers.unit_converter_handlers - INFO - 箱单位处理: 数量: 5.0 -> 60.0, 单价: 62.0 -> 5.166666666666667, 单位: 箱 -> 瓶 +2025-11-16 14:59:35,462 - app.core.excel.handlers.unit_converter_handlers - INFO - 赠品瓶单位处理: 保持原样 数量: 4.0, 单价: 0, 单位: 瓶 +2025-11-16 14:59:35,465 - app.core.excel.handlers.unit_converter_handlers - INFO - 赠品箱单位处理: 数量: 1.0 -> 24.0, 单价: 0, 单位: 箱 -> 瓶 +2025-11-16 14:59:35,470 - app.core.excel.handlers.unit_converter_handlers - INFO - 箱单位处理: 数量: 1.0 -> 15.0, 单价: 55.0 -> 3.6666666666666665, 单位: 箱 -> 瓶 +2025-11-16 14:59:35,473 - app.core.excel.handlers.unit_converter_handlers - INFO - 箱单位处理: 数量: 2.0 -> 30.0, 单价: 56.0 -> 3.7333333333333334, 单位: 箱 -> 瓶 +2025-11-16 14:59:35,476 - app.core.excel.handlers.unit_converter_handlers - INFO - 箱单位处理: 数量: 2.0 -> 30.0, 单价: 55.0 -> 3.6666666666666665, 单位: 箱 -> 瓶 +2025-11-16 14:59:35,478 - app.core.excel.handlers.unit_converter_handlers - INFO - 箱单位处理: 数量: 2.0 -> 30.0, 单价: 55.0 -> 3.6666666666666665, 单位: 箱 -> 瓶 +2025-11-16 14:59:35,481 - app.core.excel.handlers.unit_converter_handlers - INFO - 箱单位处理: 数量: 5.0 -> 60.0, 单价: 62.0 -> 5.166666666666667, 单位: 箱 -> 瓶 +2025-11-16 15:03:21,918 - app.core.excel.handlers.unit_converter_handlers - INFO - 赠品瓶单位处理: 保持原样 数量: 4.0, 单价: 0, 单位: 瓶 +2025-11-16 15:03:21,920 - app.core.excel.handlers.unit_converter_handlers - INFO - 赠品箱单位处理: 数量: 1.0 -> 24.0, 单价: 0, 单位: 箱 -> 瓶 +2025-11-16 15:03:21,926 - app.core.excel.handlers.unit_converter_handlers - INFO - 箱单位处理: 数量: 1.0 -> 15.0, 单价: 55.0 -> 3.6666666666666665, 单位: 箱 -> 瓶 +2025-11-16 15:03:21,928 - app.core.excel.handlers.unit_converter_handlers - INFO - 箱单位处理: 数量: 2.0 -> 30.0, 单价: 56.0 -> 3.7333333333333334, 单位: 箱 -> 瓶 +2025-11-16 15:03:21,931 - app.core.excel.handlers.unit_converter_handlers - INFO - 箱单位处理: 数量: 2.0 -> 30.0, 单价: 55.0 -> 3.6666666666666665, 单位: 箱 -> 瓶 +2025-11-16 15:03:21,933 - app.core.excel.handlers.unit_converter_handlers - INFO - 箱单位处理: 数量: 2.0 -> 30.0, 单价: 55.0 -> 3.6666666666666665, 单位: 箱 -> 瓶 +2025-11-16 15:03:21,935 - app.core.excel.handlers.unit_converter_handlers - INFO - 箱单位处理: 数量: 5.0 -> 60.0, 单价: 62.0 -> 5.166666666666667, 单位: 箱 -> 瓶 +2025-11-16 15:08:33,570 - app.core.excel.handlers.unit_converter_handlers - INFO - 赠品瓶单位处理: 保持原样 数量: 4.0, 单价: 0, 单位: 瓶 +2025-11-16 15:08:33,573 - app.core.excel.handlers.unit_converter_handlers - INFO - 赠品箱单位处理: 数量: 1.0 -> 24.0, 单价: 0, 单位: 箱 -> 瓶 +2025-11-16 15:08:33,578 - app.core.excel.handlers.unit_converter_handlers - INFO - 箱单位处理: 数量: 1.0 -> 15.0, 单价: 55.0 -> 3.6666666666666665, 单位: 箱 -> 瓶 +2025-11-16 15:08:33,580 - app.core.excel.handlers.unit_converter_handlers - INFO - 箱单位处理: 数量: 2.0 -> 30.0, 单价: 56.0 -> 3.7333333333333334, 单位: 箱 -> 瓶 +2025-11-16 15:08:33,582 - app.core.excel.handlers.unit_converter_handlers - INFO - 箱单位处理: 数量: 2.0 -> 30.0, 单价: 55.0 -> 3.6666666666666665, 单位: 箱 -> 瓶 +2025-11-16 15:08:33,584 - app.core.excel.handlers.unit_converter_handlers - INFO - 箱单位处理: 数量: 2.0 -> 30.0, 单价: 55.0 -> 3.6666666666666665, 单位: 箱 -> 瓶 +2025-11-16 15:08:33,586 - app.core.excel.handlers.unit_converter_handlers - INFO - 箱单位处理: 数量: 5.0 -> 60.0, 单价: 62.0 -> 5.166666666666667, 单位: 箱 -> 瓶 +2025-11-16 15:11:11,687 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 12.0, 单价: 48.0 -> 4.0, 单位: 件 -> 瓶 +2025-11-16 15:11:11,748 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 0.5 -> 6.0, 单价: 48.0 -> 4.0, 单位: 件 -> 瓶 +2025-11-16 15:11:11,814 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 0.5 -> 6.0, 单价: 48.0 -> 4.0, 单位: 件 -> 瓶 +2025-11-16 15:13:49,867 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 15.0, 单价: 45.0 -> 3.0, 单位: 件 -> 瓶 +2025-11-16 15:13:49,956 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 15.0, 单价: 50.0 -> 3.3333333333333335, 单位: 件 -> 瓶 +2025-11-16 15:13:50,038 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 15.0, 单价: 45.0 -> 3.0, 单位: 件 -> 瓶 +2025-11-16 15:13:50,130 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 15.0, 单价: 45.0 -> 3.0, 单位: 件 -> 瓶 +2025-11-16 15:13:50,227 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 3.0 -> 45.0, 单价: 43.0 -> 2.8666666666666667, 单位: 件 -> 瓶 +2025-11-16 15:13:50,349 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 2.0 -> 48.0, 单价: 22.0 -> 0.9166666666666666, 单位: 件 -> 瓶 +2025-11-16 15:15:38,282 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 12.0, 单价: 62.0 -> 5.166666666666667, 单位: 件 -> 瓶 +2025-11-16 15:15:38,360 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 15.0, 单价: 55.0 -> 3.6666666666666665, 单位: 件 -> 瓶 +2025-11-16 15:15:38,422 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 2.0 -> 30.0, 单价: 55.0 -> 3.6666666666666665, 单位: 件 -> 瓶 +2025-11-16 15:15:38,515 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 15.0, 单价: 55.0 -> 3.6666666666666665, 单位: 件 -> 瓶 +2025-11-16 15:15:38,585 - app.core.excel.handlers.unit_converter_handlers - INFO - 赠品件单位处理: 数量: 1.0 -> 15.0, 单价: 0, 单位: 件 -> 瓶 +2025-11-20 18:36:13,668 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 12.0, 单价: 62.0 -> 5.166666666666667, 单位: 件 -> 瓶 +2025-11-20 18:36:13,726 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 15.0, 单价: 55.0 -> 3.6666666666666665, 单位: 件 -> 瓶 +2025-11-20 18:36:13,769 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 2.0 -> 30.0, 单价: 55.0 -> 3.6666666666666665, 单位: 件 -> 瓶 +2025-11-20 18:36:13,824 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 15.0, 单价: 55.0 -> 3.6666666666666665, 单位: 件 -> 瓶 +2025-11-20 18:36:13,870 - app.core.excel.handlers.unit_converter_handlers - INFO - 赠品件单位处理: 数量: 1.0 -> 15.0, 单价: 0, 单位: 件 -> 瓶 +2025-11-20 18:36:42,501 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 12.0, 单价: 62.0 -> 5.166666666666667, 单位: 件 -> 瓶 +2025-11-20 18:36:42,573 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 15.0, 单价: 55.0 -> 3.6666666666666665, 单位: 件 -> 瓶 +2025-11-20 18:36:42,642 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 2.0 -> 30.0, 单价: 55.0 -> 3.6666666666666665, 单位: 件 -> 瓶 +2025-11-20 18:36:42,729 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 15.0, 单价: 55.0 -> 3.6666666666666665, 单位: 件 -> 瓶 +2025-11-20 18:36:42,814 - app.core.excel.handlers.unit_converter_handlers - INFO - 赠品件单位处理: 数量: 1.0 -> 15.0, 单价: 0, 单位: 件 -> 瓶 +2025-11-20 18:42:26,298 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 12.0, 单价: 62.0 -> 5.166666666666667, 单位: 件 -> 瓶 +2025-11-20 18:42:26,343 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 15.0, 单价: 55.0 -> 3.6666666666666665, 单位: 件 -> 瓶 +2025-11-20 18:42:26,404 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 2.0 -> 30.0, 单价: 55.0 -> 3.6666666666666665, 单位: 件 -> 瓶 +2025-11-20 18:42:26,448 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 15.0, 单价: 55.0 -> 3.6666666666666665, 单位: 件 -> 瓶 +2025-11-20 18:42:26,501 - app.core.excel.handlers.unit_converter_handlers - INFO - 赠品件单位处理: 数量: 1.0 -> 15.0, 单价: 0, 单位: 件 -> 瓶 +2025-11-20 18:44:11,712 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 12.0, 单价: 62.0 -> 5.166666666666667, 单位: 件 -> 瓶 +2025-11-20 18:44:11,779 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 15.0, 单价: 55.0 -> 3.6666666666666665, 单位: 件 -> 瓶 +2025-11-20 18:44:11,856 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 2.0 -> 30.0, 单价: 55.0 -> 3.6666666666666665, 单位: 件 -> 瓶 +2025-11-20 18:44:11,926 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 15.0, 单价: 55.0 -> 3.6666666666666665, 单位: 件 -> 瓶 +2025-11-20 18:44:12,009 - app.core.excel.handlers.unit_converter_handlers - INFO - 赠品件单位处理: 数量: 1.0 -> 15.0, 单价: 0, 单位: 件 -> 瓶 +2025-11-20 18:47:04,503 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 12.0, 单价: 62.0 -> 5.166666666666667, 单位: 件 -> 瓶 +2025-11-20 18:47:04,570 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 15.0, 单价: 55.0 -> 3.6666666666666665, 单位: 件 -> 瓶 +2025-11-20 18:47:04,654 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 2.0 -> 30.0, 单价: 55.0 -> 3.6666666666666665, 单位: 件 -> 瓶 +2025-11-20 18:47:04,740 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 15.0, 单价: 55.0 -> 3.6666666666666665, 单位: 件 -> 瓶 +2025-11-20 18:47:04,807 - app.core.excel.handlers.unit_converter_handlers - INFO - 赠品件单位处理: 数量: 1.0 -> 15.0, 单价: 0, 单位: 件 -> 瓶 +2025-11-20 18:56:30,982 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 12.0, 单价: 62.0 -> 5.166666666666667, 单位: 件 -> 瓶 +2025-11-20 18:56:31,034 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 15.0, 单价: 55.0 -> 3.6666666666666665, 单位: 件 -> 瓶 +2025-11-20 18:56:31,088 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 2.0 -> 30.0, 单价: 55.0 -> 3.6666666666666665, 单位: 件 -> 瓶 +2025-11-20 18:56:31,150 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 1.0 -> 15.0, 单价: 55.0 -> 3.6666666666666665, 单位: 件 -> 瓶 +2025-11-20 18:56:31,215 - app.core.excel.handlers.unit_converter_handlers - INFO - 赠品件单位处理: 数量: 1.0 -> 15.0, 单价: 0, 单位: 件 -> 瓶 +2025-12-01 22:21:10,949 - app.core.excel.handlers.unit_converter_handlers - INFO - 赠品单位处理: 保持原样 数量: 0.0, 单价: 0, 单位: +2025-12-12 11:00:14,147 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 8.0 -> 8.0, 单价: 44.32 -> 44.32, 单位: 件 -> 瓶 +2025-12-12 11:13:15,326 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 8.0 -> 8.0, 单价: 44.32 -> 44.32, 单位: 件 -> 瓶 +2025-12-12 11:22:26,028 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 8.0 -> 8.0, 单价: 44.32 -> 44.32, 单位: 件 -> 瓶 +2025-12-12 11:32:26,726 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 8.0 -> 8.0, 单价: 44.32 -> 44.32, 单位: 件 -> 瓶 +2025-12-12 11:34:40,277 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 8.0 -> 8.0, 单价: 44.32 -> 44.32, 单位: 件 -> 瓶 +2025-12-12 11:34:40,278 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 40.0 -> 40.0, 单价: 21.52 -> 21.52, 单位: 件 -> 瓶 +2025-12-12 11:34:40,281 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 8.0 -> 8.0, 单价: 26.08 -> 26.08, 单位: 件 -> 瓶 +2025-12-12 11:34:40,283 - app.core.excel.handlers.unit_converter_handlers - INFO - 件单位处理: 数量: 60.0 -> 60.0, 单价: 24.6 -> 24.6, 单位: 件 -> 瓶 +2025-12-12 11:34:40,285 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 5.0, 单价: 6.5, 单位: 盒 +2025-12-12 11:34:40,294 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 8.0, 单价: 38.0, 单位: 盒 +2025-12-12 11:34:40,294 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 8.0, 单价: 28.0, 单位: 盒 +2025-12-12 11:34:40,298 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 4.0, 单价: 5.55, 单位: 盒 +2025-12-12 11:34:40,300 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 5.0, 单价: 5.55, 单位: 盒 +2025-12-12 11:34:40,352 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 20.0, 单价: 15.0, 单位: 盒 +2025-12-12 11:34:40,354 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 20.0, 单价: 26.6, 单位: 盒 +2025-12-12 11:34:40,355 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 20.0, 单价: 26.6, 单位: 盒 +2025-12-12 11:34:40,357 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 20.0, 单价: 15.0, 单位: 提 +2025-12-12 11:34:40,360 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 16.0, 单价: 23.2, 单位: 盒 +2025-12-12 11:34:40,365 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 20.0, 单价: 14.2, 单位: 盒 +2025-12-12 11:34:40,367 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 30.0, 单价: 22.5, 单位: 盒 +2025-12-12 11:38:53,307 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 5.0, 单价: 6.5, 单位: 盒 +2025-12-12 11:38:53,316 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 8.0, 单价: 38.0, 单位: 盒 +2025-12-12 11:38:53,317 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 8.0, 单价: 28.0, 单位: 盒 +2025-12-12 11:38:53,321 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 4.0, 单价: 5.55, 单位: 盒 +2025-12-12 11:38:53,324 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 5.0, 单价: 5.55, 单位: 盒 +2025-12-12 11:38:53,378 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 20.0, 单价: 15.0, 单位: 盒 +2025-12-12 11:38:53,381 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 20.0, 单价: 26.6, 单位: 盒 +2025-12-12 11:38:53,382 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 20.0, 单价: 26.6, 单位: 盒 +2025-12-12 11:38:53,386 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 20.0, 单价: 15.0, 单位: 提 +2025-12-12 11:38:53,387 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 16.0, 单价: 23.2, 单位: 盒 +2025-12-12 11:38:53,392 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 20.0, 单价: 14.2, 单位: 盒 +2025-12-12 11:38:53,394 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 30.0, 单价: 22.5, 单位: 盒 +2025-12-12 11:49:38,251 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 5.0, 单价: 5.66, 单位: 盒 +2025-12-12 11:49:38,259 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 8.0, 单价: 4.51, 单位: 盒 +2025-12-12 11:49:38,260 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 8.0, 单价: 3.32, 单位: 盒 +2025-12-12 11:49:38,260 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 4.0, 单价: 5.27, 单位: 盒 +2025-12-12 11:49:38,265 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 5.0, 单价: 5.27, 单位: 盒 +2025-12-12 11:49:38,314 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 20.0, 单价: 0.71, 单位: 盒 +2025-12-12 11:49:38,349 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 20.0, 单价: 1.26, 单位: 盒 +2025-12-12 11:49:38,349 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 20.0, 单价: 1.26, 单位: 盒 +2025-12-12 11:49:38,355 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 20.0, 单价: 0.71, 单位: 提 +2025-12-12 11:49:38,357 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 16.0, 单价: 1.38, 单位: 盒 +2025-12-12 11:49:38,361 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 20.0, 单价: 0.67, 单位: 盒 +2025-12-12 11:49:38,363 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 30.0, 单价: 0.71, 单位: 盒 +2025-12-12 12:30:07,771 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 10.0, 单价: 1.43, 单位: 提 +2025-12-12 12:30:07,779 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 6.0, 单价: 2.09, 单位: 提 +2025-12-12 12:32:20,664 - app.core.excel.handlers.unit_converter_handlers - INFO - 提/盒单位(二级规格)处理: 保持原样 数量: 30.0, 单价: 0.66, 单位: 盒 diff --git a/logs/app.core.excel.merger.log b/logs/app.core.excel.merger.log index 2eb457c..3f73b0c 100644 --- a/logs/app.core.excel.merger.log +++ b/logs/app.core.excel.merger.log @@ -161,3 +161,97 @@ 2025-11-15 18:00:07,582 - app.core.excel.merger - INFO - 找到 3 个采购单Excel文件 2025-11-15 18:01:51,698 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output 2025-11-15 18:01:51,710 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-16 10:48:45,534 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 10:48:45,552 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-16 10:56:22,516 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 10:56:22,516 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-16 11:23:59,373 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 11:23:59,373 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-16 11:26:06,795 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 11:26:06,795 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-16 12:51:06,910 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 12:51:06,910 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-16 13:03:10,562 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 13:03:10,563 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-16 13:03:10,583 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 13:03:10,584 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-16 13:18:18,247 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 13:18:18,248 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-16 13:18:18,270 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 13:18:18,271 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-16 13:51:09,017 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 13:51:09,018 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-16 14:25:50,027 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 14:25:50,031 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-16 14:25:55,596 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 14:25:55,612 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-16 14:25:56,992 - app.core.excel.merger - INFO - 搜索目录 data/result 中的采购单Excel文件 +2025-11-16 14:25:57,001 - app.core.excel.merger - INFO - 找到 1 个采购单Excel文件 +2025-11-16 14:39:42,980 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 14:39:42,980 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-16 14:39:42,995 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 14:39:42,996 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-16 14:59:35,437 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 14:59:35,437 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-16 15:03:21,893 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 15:03:21,893 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-16 15:08:33,545 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 15:08:33,546 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-16 15:11:11,240 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 15:11:11,254 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-16 15:11:12,200 - app.core.excel.merger - INFO - 搜索目录 data/result 中的采购单Excel文件 +2025-11-16 15:11:12,212 - app.core.excel.merger - INFO - 找到 2 个采购单Excel文件 +2025-11-16 15:13:47,399 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 15:13:47,401 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-16 15:13:50,815 - app.core.excel.merger - INFO - 搜索目录 data/result 中的采购单Excel文件 +2025-11-16 15:13:50,816 - app.core.excel.merger - INFO - 找到 3 个采购单Excel文件 +2025-11-16 15:15:36,200 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 15:15:36,203 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-16 15:15:39,032 - app.core.excel.merger - INFO - 搜索目录 data/result 中的采购单Excel文件 +2025-11-16 15:15:39,033 - app.core.excel.merger - INFO - 找到 1 个采购单Excel文件 +2025-11-20 18:36:13,285 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-20 18:36:13,295 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-20 18:36:14,159 - app.core.excel.merger - INFO - 搜索目录 data/result 中的采购单Excel文件 +2025-11-20 18:36:14,170 - app.core.excel.merger - INFO - 找到 1 个采购单Excel文件 +2025-11-20 18:36:42,097 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-20 18:36:42,104 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-20 18:36:43,288 - app.core.excel.merger - INFO - 搜索目录 data/result 中的采购单Excel文件 +2025-11-20 18:36:43,297 - app.core.excel.merger - INFO - 找到 1 个采购单Excel文件 +2025-11-20 18:42:25,918 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-20 18:42:25,932 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-20 18:42:26,808 - app.core.excel.merger - INFO - 搜索目录 data/result 中的采购单Excel文件 +2025-11-20 18:42:26,819 - app.core.excel.merger - INFO - 找到 1 个采购单Excel文件 +2025-11-20 18:44:11,119 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-20 18:44:11,128 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-20 18:46:17,345 - app.core.excel.merger - INFO - 搜索目录 data/result 中的采购单Excel文件 +2025-11-20 18:46:17,346 - app.core.excel.merger - INFO - 找到 1 个采购单Excel文件 +2025-11-20 18:47:03,916 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-20 18:47:03,919 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-20 18:50:11,046 - app.core.excel.merger - INFO - 搜索目录 data/result 中的采购单Excel文件 +2025-11-20 18:50:11,047 - app.core.excel.merger - INFO - 找到 1 个采购单Excel文件 +2025-11-20 18:56:30,337 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-20 18:56:30,348 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-11-20 18:56:34,058 - app.core.excel.merger - INFO - 搜索目录 data/result 中的采购单Excel文件 +2025-11-20 18:56:34,061 - app.core.excel.merger - INFO - 找到 1 个采购单Excel文件 +2025-12-01 22:21:09,101 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-12-01 22:21:09,105 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-12-01 22:21:20,388 - app.core.excel.merger - INFO - 搜索目录 data/result 中的采购单Excel文件 +2025-12-01 22:21:20,390 - app.core.excel.merger - INFO - 找到 1 个采购单Excel文件 +2025-12-12 11:00:14,089 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-12-12 11:00:14,095 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-12-12 11:13:15,287 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-12-12 11:13:15,288 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-12-12 11:22:25,990 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-12-12 11:22:25,990 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-12-12 11:32:26,694 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-12-12 11:32:26,694 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-12-12 11:34:40,238 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-12-12 11:34:40,238 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-12-12 11:38:53,256 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-12-12 11:38:53,260 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-12-12 11:49:38,203 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-12-12 11:49:38,203 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-12-12 12:30:07,698 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-12-12 12:30:07,700 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls +2025-12-12 12:32:20,579 - app.core.excel.merger - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-12-12 12:32:20,579 - app.core.excel.merger - INFO - 初始化PurchaseOrderMerger完成,模板文件: E:\2025Code\python\orc-order-v2\templates\银豹-采购单模板.xls diff --git a/logs/app.core.excel.processor.log b/logs/app.core.excel.processor.log index f044483..4e5dcdb 100644 --- a/logs/app.core.excel.processor.log +++ b/logs/app.core.excel.processor.log @@ -28421,3 +28421,2729 @@ 2025-11-15 18:01:53,179 - app.core.excel.processor - INFO - 条码 6921168509256 填充:仅有赠品,采购量=0,赠品数量=0.0 2025-11-15 18:01:53,189 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251114131924_600_278.xls 2025-11-15 18:01:53,215 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251114131924_600_278.xls +2025-11-16 10:48:45,488 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 10:48:45,496 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 10:48:45,522 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-16 10:48:45,587 - app.core.excel.processor - INFO - 搜索目录 data/output 中的Excel文件 +2025-11-16 10:48:45,608 - app.core.excel.processor - WARNING - 未在 data/output 目录下找到未处理的Excel文件 +2025-11-16 10:48:45,637 - app.core.excel.processor - INFO - 搜索目录 data/output 中的Excel文件 +2025-11-16 10:48:45,669 - app.core.excel.processor - WARNING - 未在 data/output 目录下找到未处理的Excel文件 +2025-11-16 10:48:45,687 - app.core.excel.processor - WARNING - 未找到可处理的Excel文件 +2025-11-16 10:56:22,512 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 10:56:22,512 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 10:56:22,516 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-16 10:56:22,516 - app.core.excel.processor - INFO - 搜索目录 data/output 中的Excel文件 +2025-11-16 10:56:22,516 - app.core.excel.processor - WARNING - 未在 data/output 目录下找到未处理的Excel文件 +2025-11-16 11:23:59,369 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 11:23:59,369 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 11:23:59,373 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-16 11:26:06,793 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 11:26:06,794 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 11:26:06,795 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-16 12:51:06,908 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 12:51:06,909 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 12:51:06,909 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-16 13:03:10,560 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 13:03:10,560 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 13:03:10,562 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-16 13:03:10,581 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 13:03:10,582 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 13:03:10,583 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-16 13:18:18,246 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 13:18:18,246 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 13:18:18,247 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-16 13:18:18,269 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 13:18:18,269 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 13:18:18,270 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-16 13:51:09,015 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 13:51:09,016 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 13:51:09,017 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-16 14:25:50,013 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 14:25:50,018 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 14:25:50,025 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-16 14:25:50,067 - app.core.excel.processor - INFO - 搜索目录 data/output 中的Excel文件 +2025-11-16 14:25:50,078 - app.core.excel.processor - INFO - 找到最新的Excel文件: data/output\~$微信图片_20251115212128_148_108.xlsx +2025-11-16 14:25:50,108 - app.core.excel.processor - INFO - 搜索目录 data/output 中的Excel文件 +2025-11-16 14:25:50,127 - app.core.excel.processor - INFO - 找到最新的Excel文件: data/output\~$微信图片_20251115212128_148_108.xlsx +2025-11-16 14:25:50,144 - app.core.excel.processor - INFO - 开始处理Excel文件: data/output\~$微信图片_20251115212128_148_108.xlsx +2025-11-16 14:25:50,177 - app.core.excel.processor - ERROR - 处理Excel文件时出错: data/output\~$微信图片_20251115212128_148_108.xlsx, 错误: [Errno 13] Permission denied: 'data/output\\~$微信图片_20251115212128_148_108.xlsx' +2025-11-16 14:25:55,549 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 14:25:55,559 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 14:25:55,578 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-16 14:25:55,659 - app.core.excel.processor - INFO - 搜索目录 data/output 中的Excel文件 +2025-11-16 14:25:55,667 - app.core.excel.processor - INFO - 找到最新的Excel文件: data/output\微信图片_20251115212128_148_108.xlsx +2025-11-16 14:25:55,700 - app.core.excel.processor - INFO - 搜索目录 data/output 中的Excel文件 +2025-11-16 14:25:55,718 - app.core.excel.processor - INFO - 找到最新的Excel文件: data/output\微信图片_20251115212128_148_108.xlsx +2025-11-16 14:25:55,738 - app.core.excel.processor - INFO - 开始处理Excel文件: data/output\微信图片_20251115212128_148_108.xlsx +2025-11-16 14:25:55,775 - app.core.excel.processor - INFO - 成功读取Excel文件: data/output\微信图片_20251115212128_148_108.xlsx, 共 10 行 +2025-11-16 14:25:55,788 - app.core.excel.processor - INFO - 找到可能的表头行: 第1行,评分: 40 +2025-11-16 14:25:55,805 - app.core.excel.processor - INFO - 识别到表头在第 1 行 +2025-11-16 14:25:55,842 - app.core.excel.processor - INFO - 使用表头行重新读取数据,共 9 行有效数据 +2025-11-16 14:25:55,860 - app.core.excel.processor - INFO - 找到精确匹配的条码列: 条形码 +2025-11-16 14:25:55,860 - app.core.excel.processor - INFO - 使用条码列: 条形码 +2025-11-16 14:25:55,877 - app.core.excel.processor - INFO - 找到name列: 商品名称 +2025-11-16 14:25:55,893 - app.core.excel.processor - INFO - 找到quantity列: 订单数量 +2025-11-16 14:25:55,911 - app.core.excel.processor - INFO - 找到price列: 销售价 +2025-11-16 14:25:55,925 - app.core.excel.processor - INFO - 找到amount列(部分匹配): 订单金额 +2025-11-16 14:25:55,940 - app.core.excel.processor - INFO - 检测到列映射: {'barcode': '条形码', 'name': '商品名称', 'quantity': '订单数量', 'price': '销售价', 'amount': '订单金额'} +2025-11-16 14:25:55,989 - app.core.excel.processor - INFO - 从商品名称推断规格: 550水24白膜 -> 1*24, 包装数量=24 +2025-11-16 14:25:56,081 - app.core.excel.processor - INFO - 从商品名称推断规格: 550水24白膜 -> 1*24, 包装数量=24 +2025-11-16 14:25:56,140 - app.core.excel.processor - INFO - 从商品名称推断规格: 12.9L桶装水 -> 12.9L*1, 包装数量=1 +2025-11-16 14:25:56,212 - app.core.excel.processor - INFO - 从商品名称推断规格: 550尖叫多肽15纸箱 -> 1*15, 包装数量=15 +2025-11-16 14:25:56,277 - app.core.excel.processor - INFO - 从商品名称推断规格: 445水溶C血橙15入纸箱 -> 1*15, 包装数量=15 +2025-11-16 14:25:56,337 - app.core.excel.processor - INFO - 从商品名称推断规格: 500-东方树叶-陈皮白茶1*15-纸 +箱装-普通装 -> 1*15, 包装数量=15 +2025-11-16 14:25:56,415 - app.core.excel.processor - INFO - 从商品名称推断规格: 500树叶茉莉花茶15纸箱 -> 1*15, 包装数量=15 +2025-11-16 14:25:56,479 - app.core.excel.processor - INFO - 从商品名称推断规格: 900树叶茉莉花茶12入纸箱 -> 1*12, 包装数量=12 +2025-11-16 14:25:56,518 - app.core.excel.processor - INFO - 提取到 8 个商品信息 +2025-11-16 14:25:56,534 - app.core.excel.processor - INFO - 开始处理8 个产品信息 +2025-11-16 14:25:56,541 - app.core.excel.processor - INFO - 处理商品: 条码=6921168509256, 数量=4.0, 单价=0, 是否赠品=True +2025-11-16 14:25:56,551 - app.core.excel.processor - INFO - 发现赠品:条码6921168509256, 数量=4.0 +2025-11-16 14:25:56,560 - app.core.excel.processor - INFO - 处理商品: 条码=6921168509256, 数量=24.0, 单价=0, 是否赠品=True +2025-11-16 14:25:56,572 - app.core.excel.processor - INFO - 发现赠品:条码6921168509256, 数量=24.0 +2025-11-16 14:25:56,581 - app.core.excel.processor - INFO - 处理商品: 条码=6921168594054, 数量=5.0, 单价=15.0, 是否赠品=False +2025-11-16 14:25:56,589 - app.core.excel.processor - INFO - 发现正常商品:条码6921168594054, 数量=5.0, 单价=15.0 +2025-11-16 14:25:56,608 - app.core.excel.processor - INFO - 处理商品: 条码=6921168504015, 数量=15.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-16 14:25:56,616 - app.core.excel.processor - INFO - 发现正常商品:条码6921168504015, 数量=15.0, 单价=3.6666666666666665 +2025-11-16 14:25:56,631 - app.core.excel.processor - INFO - 处理商品: 条码=6921168560189, 数量=30.0, 单价=3.7333333333333334, 是否赠品=False +2025-11-16 14:25:56,647 - app.core.excel.processor - INFO - 发现正常商品:条码6921168560189, 数量=30.0, 单价=3.7333333333333334 +2025-11-16 14:25:56,664 - app.core.excel.processor - INFO - 处理商品: 条码=6921168562909, 数量=30.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-16 14:25:56,680 - app.core.excel.processor - INFO - 发现正常商品:条码6921168562909, 数量=30.0, 单价=3.6666666666666665 +2025-11-16 14:25:56,688 - app.core.excel.processor - INFO - 处理商品: 条码=6921168558049, 数量=30.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-16 14:25:56,696 - app.core.excel.processor - INFO - 发现正常商品:条码6921168558049, 数量=30.0, 单价=3.6666666666666665 +2025-11-16 14:25:56,711 - app.core.excel.processor - INFO - 处理商品: 条码=6921168598427, 数量=60.0, 单价=5.166666666666667, 是否赠品=False +2025-11-16 14:25:56,728 - app.core.excel.processor - INFO - 发现正常商品:条码6921168598427, 数量=60.0, 单价=5.166666666666667 +2025-11-16 14:25:56,743 - app.core.excel.processor - INFO - 分组后共7 个不同条码的商品 +2025-11-16 14:25:56,751 - app.core.excel.processor - INFO - 条码 6921168509256 处理结果:只有赠品,数量=28.0 +2025-11-16 14:25:56,768 - app.core.excel.processor - INFO - 条码 6921168594054 处理结果:正常商品数量5.0,单价15.0,赠品数量0 +2025-11-16 14:25:56,784 - app.core.excel.processor - INFO - 条码 6921168504015 处理结果:正常商品数量15.0,单价3.6666666666666665,赠品数量0 +2025-11-16 14:25:56,801 - app.core.excel.processor - INFO - 条码 6921168560189 处理结果:正常商品数量30.0,单价3.7333333333333334,赠品数量0 +2025-11-16 14:25:56,817 - app.core.excel.processor - INFO - 条码 6921168562909 处理结果:正常商品数量30.0,单价3.6666666666666665,赠品数量0 +2025-11-16 14:25:56,834 - app.core.excel.processor - INFO - 条码 6921168558049 处理结果:正常商品数量30.0,单价3.6666666666666665,赠品数量0 +2025-11-16 14:25:56,850 - app.core.excel.processor - INFO - 条码 6921168598427 处理结果:正常商品数量60.0,单价5.166666666666667,赠品数量0 +2025-11-16 14:25:56,867 - app.core.excel.processor - INFO - 条码 6921168509256 填充:仅有赠品,采购量=0,赠品数量=28.0 +2025-11-16 14:25:56,917 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251115212128_148_108.xls +2025-11-16 14:25:56,918 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251115212128_148_108.xls +2025-11-16 14:39:42,978 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 14:39:42,980 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 14:39:42,980 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-16 14:39:42,994 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 14:39:42,994 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 14:39:42,995 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-16 14:59:35,434 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 14:59:35,435 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 14:59:35,436 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-16 14:59:35,438 - app.core.excel.processor - INFO - 开始处理Excel文件: E:/2025Code/python/orc-order-v2/data/output/微信图片_20251115212128_148_108.xlsx +2025-11-16 14:59:35,445 - app.core.excel.processor - INFO - 成功读取Excel文件: E:/2025Code/python/orc-order-v2/data/output/微信图片_20251115212128_148_108.xlsx, 共 10 行 +2025-11-16 14:59:35,447 - app.core.excel.processor - INFO - 找到可能的表头行: 第1行,评分: 40 +2025-11-16 14:59:35,447 - app.core.excel.processor - INFO - 识别到表头在第 1 行 +2025-11-16 14:59:35,454 - app.core.excel.processor - INFO - 使用表头行重新读取数据,共 9 行有效数据 +2025-11-16 14:59:35,454 - app.core.excel.processor - INFO - 找到精确匹配的条码列: 条形码 +2025-11-16 14:59:35,455 - app.core.excel.processor - INFO - 使用条码列: 条形码 +2025-11-16 14:59:35,455 - app.core.excel.processor - INFO - 找到name列: 商品名称 +2025-11-16 14:59:35,456 - app.core.excel.processor - INFO - 找到quantity列: 订单数量 +2025-11-16 14:59:35,456 - app.core.excel.processor - INFO - 找到price列: 销售价 +2025-11-16 14:59:35,456 - app.core.excel.processor - INFO - 找到amount列(部分匹配): 订单金额 +2025-11-16 14:59:35,457 - app.core.excel.processor - INFO - 检测到列映射: {'barcode': '条形码', 'name': '商品名称', 'quantity': '订单数量', 'price': '销售价', 'amount': '订单金额'} +2025-11-16 14:59:35,460 - app.core.excel.processor - INFO - 从商品名称推断规格: 550水24白膜 -> 1*24, 包装数量=24 +2025-11-16 14:59:35,464 - app.core.excel.processor - INFO - 从商品名称推断规格: 550水24白膜 -> 1*24, 包装数量=24 +2025-11-16 14:59:35,467 - app.core.excel.processor - INFO - 从商品名称推断规格: 12.9L桶装水 -> 12.9L*1, 包装数量=1 +2025-11-16 14:59:35,469 - app.core.excel.processor - INFO - 从商品名称推断规格: 550尖叫多肽15纸箱 -> 1*15, 包装数量=15 +2025-11-16 14:59:35,471 - app.core.excel.processor - INFO - 从商品名称推断规格: 445水溶C血橙15入纸箱 -> 1*15, 包装数量=15 +2025-11-16 14:59:35,475 - app.core.excel.processor - INFO - 从商品名称推断规格: 500-东方树叶-陈皮白茶1*15-纸 +箱装-普通装 -> 1*15, 包装数量=15 +2025-11-16 14:59:35,477 - app.core.excel.processor - INFO - 从商品名称推断规格: 500树叶茉莉花茶15纸箱 -> 1*15, 包装数量=15 +2025-11-16 14:59:35,480 - app.core.excel.processor - INFO - 从商品名称推断规格: 900树叶茉莉花茶12入纸箱 -> 1*12, 包装数量=12 +2025-11-16 14:59:35,482 - app.core.excel.processor - INFO - 提取到 8 个商品信息 +2025-11-16 14:59:35,487 - app.core.excel.processor - INFO - 开始处理8 个产品信息 +2025-11-16 14:59:35,487 - app.core.excel.processor - INFO - 处理商品: 条码=6921168509256, 数量=4.0, 单价=0, 是否赠品=True +2025-11-16 14:59:35,488 - app.core.excel.processor - INFO - 发现赠品:条码6921168509256, 数量=4.0 +2025-11-16 14:59:35,488 - app.core.excel.processor - INFO - 处理商品: 条码=6921168509256, 数量=24.0, 单价=0, 是否赠品=True +2025-11-16 14:59:35,489 - app.core.excel.processor - INFO - 发现赠品:条码6921168509256, 数量=24.0 +2025-11-16 14:59:35,489 - app.core.excel.processor - INFO - 处理商品: 条码=6921168594054, 数量=5.0, 单价=15.0, 是否赠品=False +2025-11-16 14:59:35,490 - app.core.excel.processor - INFO - 发现正常商品:条码6921168594054, 数量=5.0, 单价=15.0 +2025-11-16 14:59:35,490 - app.core.excel.processor - INFO - 处理商品: 条码=6921168504015, 数量=15.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-16 14:59:35,490 - app.core.excel.processor - INFO - 发现正常商品:条码6921168504015, 数量=15.0, 单价=3.6666666666666665 +2025-11-16 14:59:35,491 - app.core.excel.processor - INFO - 处理商品: 条码=6921168560189, 数量=30.0, 单价=3.7333333333333334, 是否赠品=False +2025-11-16 14:59:35,491 - app.core.excel.processor - INFO - 发现正常商品:条码6921168560189, 数量=30.0, 单价=3.7333333333333334 +2025-11-16 14:59:35,492 - app.core.excel.processor - INFO - 处理商品: 条码=6921168562909, 数量=30.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-16 14:59:35,492 - app.core.excel.processor - INFO - 发现正常商品:条码6921168562909, 数量=30.0, 单价=3.6666666666666665 +2025-11-16 14:59:35,492 - app.core.excel.processor - INFO - 处理商品: 条码=6921168558049, 数量=30.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-16 14:59:35,492 - app.core.excel.processor - INFO - 发现正常商品:条码6921168558049, 数量=30.0, 单价=3.6666666666666665 +2025-11-16 14:59:35,492 - app.core.excel.processor - INFO - 处理商品: 条码=6921168598427, 数量=60.0, 单价=5.166666666666667, 是否赠品=False +2025-11-16 14:59:35,493 - app.core.excel.processor - INFO - 发现正常商品:条码6921168598427, 数量=60.0, 单价=5.166666666666667 +2025-11-16 14:59:35,493 - app.core.excel.processor - INFO - 分组后共7 个不同条码的商品 +2025-11-16 14:59:35,493 - app.core.excel.processor - INFO - 条码 6921168509256 处理结果:只有赠品,数量=28.0 +2025-11-16 14:59:35,494 - app.core.excel.processor - INFO - 条码 6921168594054 处理结果:正常商品数量5.0,单价15.0,赠品数量0 +2025-11-16 14:59:35,494 - app.core.excel.processor - INFO - 条码 6921168504015 处理结果:正常商品数量15.0,单价3.6666666666666665,赠品数量0 +2025-11-16 14:59:35,494 - app.core.excel.processor - INFO - 条码 6921168560189 处理结果:正常商品数量30.0,单价3.7333333333333334,赠品数量0 +2025-11-16 14:59:35,495 - app.core.excel.processor - INFO - 条码 6921168562909 处理结果:正常商品数量30.0,单价3.6666666666666665,赠品数量0 +2025-11-16 14:59:35,495 - app.core.excel.processor - INFO - 条码 6921168558049 处理结果:正常商品数量30.0,单价3.6666666666666665,赠品数量0 +2025-11-16 14:59:35,495 - app.core.excel.processor - INFO - 条码 6921168598427 处理结果:正常商品数量60.0,单价5.166666666666667,赠品数量0 +2025-11-16 14:59:35,496 - app.core.excel.processor - INFO - 条码 6921168509256 填充:仅有赠品,采购量=0,赠品数量=28.0 +2025-11-16 14:59:35,498 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251115212128_148_108.xls +2025-11-16 14:59:35,537 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251115212128_148_108.xls +2025-11-16 15:03:21,890 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 15:03:21,891 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 15:03:21,892 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-16 15:03:21,894 - app.core.excel.processor - INFO - 开始处理Excel文件: E:/2025Code/python/orc-order-v2/data/output/微信图片_20251115212128_148_108.xlsx +2025-11-16 15:03:21,901 - app.core.excel.processor - INFO - 成功读取Excel文件: E:/2025Code/python/orc-order-v2/data/output/微信图片_20251115212128_148_108.xlsx, 共 10 行 +2025-11-16 15:03:21,904 - app.core.excel.processor - INFO - 找到可能的表头行: 第1行,评分: 40 +2025-11-16 15:03:21,904 - app.core.excel.processor - INFO - 识别到表头在第 1 行 +2025-11-16 15:03:21,911 - app.core.excel.processor - INFO - 使用表头行重新读取数据,共 9 行有效数据 +2025-11-16 15:03:21,911 - app.core.excel.processor - INFO - 找到精确匹配的条码列: 条形码 +2025-11-16 15:03:21,911 - app.core.excel.processor - INFO - 使用条码列: 条形码 +2025-11-16 15:03:21,912 - app.core.excel.processor - INFO - 找到name列: 商品名称 +2025-11-16 15:03:21,912 - app.core.excel.processor - INFO - 找到quantity列: 订单数量 +2025-11-16 15:03:21,913 - app.core.excel.processor - INFO - 找到price列: 销售价 +2025-11-16 15:03:21,913 - app.core.excel.processor - INFO - 找到amount列(部分匹配): 订单金额 +2025-11-16 15:03:21,913 - app.core.excel.processor - INFO - 检测到列映射: {'barcode': '条形码', 'name': '商品名称', 'quantity': '订单数量', 'price': '销售价', 'amount': '订单金额'} +2025-11-16 15:03:21,916 - app.core.excel.processor - INFO - 从商品名称推断规格: 550水24白膜 -> 1*24, 包装数量=24 +2025-11-16 15:03:21,920 - app.core.excel.processor - INFO - 从商品名称推断规格: 550水24白膜 -> 1*24, 包装数量=24 +2025-11-16 15:03:21,923 - app.core.excel.processor - INFO - 从商品名称推断规格: 12.9L桶装水 -> 12.9L*1, 包装数量=1 +2025-11-16 15:03:21,925 - app.core.excel.processor - INFO - 从商品名称推断规格: 550尖叫多肽15纸箱 -> 1*15, 包装数量=15 +2025-11-16 15:03:21,927 - app.core.excel.processor - INFO - 从商品名称推断规格: 445水溶C血橙15入纸箱 -> 1*15, 包装数量=15 +2025-11-16 15:03:21,930 - app.core.excel.processor - INFO - 从商品名称推断规格: 500-东方树叶-陈皮白茶1*15-纸 +箱装-普通装 -> 1*15, 包装数量=15 +2025-11-16 15:03:21,932 - app.core.excel.processor - INFO - 从商品名称推断规格: 500树叶茉莉花茶15纸箱 -> 1*15, 包装数量=15 +2025-11-16 15:03:21,934 - app.core.excel.processor - INFO - 从商品名称推断规格: 900树叶茉莉花茶12入纸箱 -> 1*12, 包装数量=12 +2025-11-16 15:03:21,935 - app.core.excel.processor - INFO - 提取到 8 个商品信息 +2025-11-16 15:03:21,940 - app.core.excel.processor - INFO - 开始处理8 个产品信息 +2025-11-16 15:03:21,940 - app.core.excel.processor - INFO - 处理商品: 条码=6921168509256, 数量=4.0, 单价=0, 是否赠品=True +2025-11-16 15:03:21,941 - app.core.excel.processor - INFO - 发现赠品:条码6921168509256, 数量=4.0 +2025-11-16 15:03:21,941 - app.core.excel.processor - INFO - 处理商品: 条码=6921168509256, 数量=24.0, 单价=0, 是否赠品=True +2025-11-16 15:03:21,942 - app.core.excel.processor - INFO - 发现赠品:条码6921168509256, 数量=24.0 +2025-11-16 15:03:21,942 - app.core.excel.processor - INFO - 处理商品: 条码=6921168594054, 数量=5.0, 单价=15.0, 是否赠品=False +2025-11-16 15:03:21,943 - app.core.excel.processor - INFO - 发现正常商品:条码6921168594054, 数量=5.0, 单价=15.0 +2025-11-16 15:03:21,943 - app.core.excel.processor - INFO - 处理商品: 条码=6921168504015, 数量=15.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-16 15:03:21,943 - app.core.excel.processor - INFO - 发现正常商品:条码6921168504015, 数量=15.0, 单价=3.6666666666666665 +2025-11-16 15:03:21,944 - app.core.excel.processor - INFO - 处理商品: 条码=6921168560189, 数量=30.0, 单价=3.7333333333333334, 是否赠品=False +2025-11-16 15:03:21,944 - app.core.excel.processor - INFO - 发现正常商品:条码6921168560189, 数量=30.0, 单价=3.7333333333333334 +2025-11-16 15:03:21,945 - app.core.excel.processor - INFO - 处理商品: 条码=6921168562909, 数量=30.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-16 15:03:21,945 - app.core.excel.processor - INFO - 发现正常商品:条码6921168562909, 数量=30.0, 单价=3.6666666666666665 +2025-11-16 15:03:21,945 - app.core.excel.processor - INFO - 处理商品: 条码=6921168558049, 数量=30.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-16 15:03:21,946 - app.core.excel.processor - INFO - 发现正常商品:条码6921168558049, 数量=30.0, 单价=3.6666666666666665 +2025-11-16 15:03:21,946 - app.core.excel.processor - INFO - 处理商品: 条码=6921168598427, 数量=60.0, 单价=5.166666666666667, 是否赠品=False +2025-11-16 15:03:21,946 - app.core.excel.processor - INFO - 发现正常商品:条码6921168598427, 数量=60.0, 单价=5.166666666666667 +2025-11-16 15:03:21,947 - app.core.excel.processor - INFO - 分组后共7 个不同条码的商品 +2025-11-16 15:03:21,947 - app.core.excel.processor - INFO - 条码 6921168509256 处理结果:只有赠品,数量=28.0 +2025-11-16 15:03:21,948 - app.core.excel.processor - INFO - 条码 6921168594054 处理结果:正常商品数量5.0,单价15.0,赠品数量0 +2025-11-16 15:03:21,948 - app.core.excel.processor - INFO - 条码 6921168504015 处理结果:正常商品数量15.0,单价3.6666666666666665,赠品数量0 +2025-11-16 15:03:21,948 - app.core.excel.processor - INFO - 条码 6921168560189 处理结果:正常商品数量30.0,单价3.7333333333333334,赠品数量0 +2025-11-16 15:03:21,949 - app.core.excel.processor - INFO - 条码 6921168562909 处理结果:正常商品数量30.0,单价3.6666666666666665,赠品数量0 +2025-11-16 15:03:21,949 - app.core.excel.processor - INFO - 条码 6921168558049 处理结果:正常商品数量30.0,单价3.6666666666666665,赠品数量0 +2025-11-16 15:03:21,949 - app.core.excel.processor - INFO - 条码 6921168598427 处理结果:正常商品数量60.0,单价5.166666666666667,赠品数量0 +2025-11-16 15:03:21,950 - app.core.excel.processor - INFO - 条码 6921168509256 填充:仅有赠品,采购量=0,赠品数量=28.0 +2025-11-16 15:03:21,952 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251115212128_148_108.xls +2025-11-16 15:03:21,974 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251115212128_148_108.xls +2025-11-16 15:08:33,543 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 15:08:33,543 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 15:08:33,545 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-16 15:08:33,547 - app.core.excel.processor - INFO - 开始处理Excel文件: E:/2025Code/python/orc-order-v2/data/output/微信图片_20251115212128_148_108.xlsx +2025-11-16 15:08:33,554 - app.core.excel.processor - INFO - 成功读取Excel文件: E:/2025Code/python/orc-order-v2/data/output/微信图片_20251115212128_148_108.xlsx, 共 10 行 +2025-11-16 15:08:33,556 - app.core.excel.processor - INFO - 找到可能的表头行: 第1行,评分: 40 +2025-11-16 15:08:33,556 - app.core.excel.processor - INFO - 识别到表头在第 1 行 +2025-11-16 15:08:33,562 - app.core.excel.processor - INFO - 使用表头行重新读取数据,共 9 行有效数据 +2025-11-16 15:08:33,563 - app.core.excel.processor - INFO - 找到精确匹配的条码列: 条形码 +2025-11-16 15:08:33,563 - app.core.excel.processor - INFO - 使用条码列: 条形码 +2025-11-16 15:08:33,564 - app.core.excel.processor - INFO - 找到name列: 商品名称 +2025-11-16 15:08:33,564 - app.core.excel.processor - INFO - 找到quantity列: 订单数量 +2025-11-16 15:08:33,564 - app.core.excel.processor - INFO - 找到price列: 销售价 +2025-11-16 15:08:33,565 - app.core.excel.processor - INFO - 找到amount列(部分匹配): 订单金额 +2025-11-16 15:08:33,565 - app.core.excel.processor - INFO - 检测到列映射: {'barcode': '条形码', 'name': '商品名称', 'quantity': '订单数量', 'price': '销售价', 'amount': '订单金额'} +2025-11-16 15:08:33,568 - app.core.excel.processor - INFO - 从商品名称推断规格: 550水24白膜 -> 1*24, 包装数量=24 +2025-11-16 15:08:33,571 - app.core.excel.processor - INFO - 从商品名称推断规格: 550水24白膜 -> 1*24, 包装数量=24 +2025-11-16 15:08:33,575 - app.core.excel.processor - INFO - 从商品名称推断规格: 12.9L桶装水 -> 12.9L*1, 包装数量=1 +2025-11-16 15:08:33,577 - app.core.excel.processor - INFO - 从商品名称推断规格: 550尖叫多肽15纸箱 -> 1*15, 包装数量=15 +2025-11-16 15:08:33,579 - app.core.excel.processor - INFO - 从商品名称推断规格: 445水溶C血橙15入纸箱 -> 1*15, 包装数量=15 +2025-11-16 15:08:33,581 - app.core.excel.processor - INFO - 从商品名称推断规格: 500-东方树叶-陈皮白茶1*15-纸 +箱装-普通装 -> 1*15, 包装数量=15 +2025-11-16 15:08:33,583 - app.core.excel.processor - INFO - 从商品名称推断规格: 500树叶茉莉花茶15纸箱 -> 1*15, 包装数量=15 +2025-11-16 15:08:33,585 - app.core.excel.processor - INFO - 从商品名称推断规格: 900树叶茉莉花茶12入纸箱 -> 1*12, 包装数量=12 +2025-11-16 15:08:33,587 - app.core.excel.processor - INFO - 提取到 8 个商品信息 +2025-11-16 15:08:33,591 - app.core.excel.processor - INFO - 开始处理8 个产品信息 +2025-11-16 15:08:33,592 - app.core.excel.processor - INFO - 处理商品: 条码=6921168509256, 数量=4.0, 单价=0, 是否赠品=True +2025-11-16 15:08:33,592 - app.core.excel.processor - INFO - 发现赠品:条码6921168509256, 数量=4.0 +2025-11-16 15:08:33,592 - app.core.excel.processor - INFO - 处理商品: 条码=6921168509256, 数量=24.0, 单价=0, 是否赠品=True +2025-11-16 15:08:33,593 - app.core.excel.processor - INFO - 发现赠品:条码6921168509256, 数量=24.0 +2025-11-16 15:08:33,593 - app.core.excel.processor - INFO - 处理商品: 条码=6921168594054, 数量=5.0, 单价=15.0, 是否赠品=False +2025-11-16 15:08:33,593 - app.core.excel.processor - INFO - 发现正常商品:条码6921168594054, 数量=5.0, 单价=15.0 +2025-11-16 15:08:33,593 - app.core.excel.processor - INFO - 处理商品: 条码=6921168504015, 数量=15.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-16 15:08:33,593 - app.core.excel.processor - INFO - 发现正常商品:条码6921168504015, 数量=15.0, 单价=3.6666666666666665 +2025-11-16 15:08:33,594 - app.core.excel.processor - INFO - 处理商品: 条码=6921168560189, 数量=30.0, 单价=3.7333333333333334, 是否赠品=False +2025-11-16 15:08:33,594 - app.core.excel.processor - INFO - 发现正常商品:条码6921168560189, 数量=30.0, 单价=3.7333333333333334 +2025-11-16 15:08:33,594 - app.core.excel.processor - INFO - 处理商品: 条码=6921168562909, 数量=30.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-16 15:08:33,595 - app.core.excel.processor - INFO - 发现正常商品:条码6921168562909, 数量=30.0, 单价=3.6666666666666665 +2025-11-16 15:08:33,595 - app.core.excel.processor - INFO - 处理商品: 条码=6921168558049, 数量=30.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-16 15:08:33,595 - app.core.excel.processor - INFO - 发现正常商品:条码6921168558049, 数量=30.0, 单价=3.6666666666666665 +2025-11-16 15:08:33,596 - app.core.excel.processor - INFO - 处理商品: 条码=6921168598427, 数量=60.0, 单价=5.166666666666667, 是否赠品=False +2025-11-16 15:08:33,596 - app.core.excel.processor - INFO - 发现正常商品:条码6921168598427, 数量=60.0, 单价=5.166666666666667 +2025-11-16 15:08:33,596 - app.core.excel.processor - INFO - 分组后共7 个不同条码的商品 +2025-11-16 15:08:33,597 - app.core.excel.processor - INFO - 条码 6921168509256 处理结果:只有赠品,数量=28.0 +2025-11-16 15:08:33,597 - app.core.excel.processor - INFO - 条码 6921168594054 处理结果:正常商品数量5.0,单价15.0,赠品数量0 +2025-11-16 15:08:33,597 - app.core.excel.processor - INFO - 条码 6921168504015 处理结果:正常商品数量15.0,单价3.6666666666666665,赠品数量0 +2025-11-16 15:08:33,598 - app.core.excel.processor - INFO - 条码 6921168560189 处理结果:正常商品数量30.0,单价3.7333333333333334,赠品数量0 +2025-11-16 15:08:33,598 - app.core.excel.processor - INFO - 条码 6921168562909 处理结果:正常商品数量30.0,单价3.6666666666666665,赠品数量0 +2025-11-16 15:08:33,598 - app.core.excel.processor - INFO - 条码 6921168558049 处理结果:正常商品数量30.0,单价3.6666666666666665,赠品数量0 +2025-11-16 15:08:33,599 - app.core.excel.processor - INFO - 条码 6921168598427 处理结果:正常商品数量60.0,单价5.166666666666667,赠品数量0 +2025-11-16 15:08:33,599 - app.core.excel.processor - INFO - 条码 6921168509256 填充:仅有赠品,采购量=0,赠品数量=28.0 +2025-11-16 15:08:33,601 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251115212128_148_108.xls +2025-11-16 15:08:33,617 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251115212128_148_108.xls +2025-11-16 15:11:11,189 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 15:11:11,199 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 15:11:11,224 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-16 15:11:11,310 - app.core.excel.processor - INFO - 搜索目录 data/output 中的Excel文件 +2025-11-16 15:11:11,321 - app.core.excel.processor - INFO - 找到最新的Excel文件: data/output\微信图片_20251116151001_152_108.xlsx +2025-11-16 15:11:11,356 - app.core.excel.processor - INFO - 搜索目录 data/output 中的Excel文件 +2025-11-16 15:11:11,367 - app.core.excel.processor - INFO - 找到最新的Excel文件: data/output\微信图片_20251116151001_152_108.xlsx +2025-11-16 15:11:11,382 - app.core.excel.processor - INFO - 开始处理Excel文件: data/output\微信图片_20251116151001_152_108.xlsx +2025-11-16 15:11:11,426 - app.core.excel.processor - INFO - 成功读取Excel文件: data/output\微信图片_20251116151001_152_108.xlsx, 共 6 行 +2025-11-16 15:11:11,427 - app.core.excel.processor - INFO - 找到可能的表头行: 第1行,评分: 55 +2025-11-16 15:11:11,445 - app.core.excel.processor - INFO - 识别到表头在第 1 行 +2025-11-16 15:11:11,492 - app.core.excel.processor - INFO - 使用表头行重新读取数据,共 5 行有效数据 +2025-11-16 15:11:11,513 - app.core.excel.processor - INFO - 找到精确匹配的条码列: 条码 +2025-11-16 15:11:11,513 - app.core.excel.processor - INFO - 使用条码列: 条码 +2025-11-16 15:11:11,532 - app.core.excel.processor - INFO - 找到name列: 商品名称 +2025-11-16 15:11:11,543 - app.core.excel.processor - INFO - 找到specification列: 规格 +2025-11-16 15:11:11,557 - app.core.excel.processor - INFO - 找到quantity列: 数量 +2025-11-16 15:11:11,570 - app.core.excel.processor - INFO - 找到unit列: 单位 +2025-11-16 15:11:11,584 - app.core.excel.processor - INFO - 找到price列: 单价 +2025-11-16 15:11:11,595 - app.core.excel.processor - INFO - 找到amount列: 金额 +2025-11-16 15:11:11,616 - app.core.excel.processor - INFO - 检测到列映射: {'barcode': '条码', 'name': '商品名称', 'specification': '规格', 'quantity': '数量', 'unit': '单位', 'price': '单价', 'amount': '金额'} +2025-11-16 15:11:11,625 - app.core.excel.processor - INFO - 解析规格: 1件=12桶 -> 包装数量=12 +2025-11-16 15:11:11,705 - app.core.excel.processor - INFO - 解析规格: 1件=12桶 -> 包装数量=12 +2025-11-16 15:11:11,761 - app.core.excel.processor - INFO - 解析规格: 1件=12桶 -> 包装数量=12 +2025-11-16 15:11:11,839 - app.core.excel.processor - INFO - 提取到 3 个商品信息 +2025-11-16 15:11:11,869 - app.core.excel.processor - INFO - 开始处理3 个产品信息 +2025-11-16 15:11:11,888 - app.core.excel.processor - INFO - 处理商品: 条码=6935270644323, 数量=12.0, 单价=4.0, 是否赠品=False +2025-11-16 15:11:11,913 - app.core.excel.processor - INFO - 发现正常商品:条码6935270644323, 数量=12.0, 单价=4.0 +2025-11-16 15:11:11,925 - app.core.excel.processor - INFO - 处理商品: 条码=6935270645160, 数量=6.0, 单价=4.0, 是否赠品=False +2025-11-16 15:11:11,950 - app.core.excel.processor - INFO - 发现正常商品:条码6935270645160, 数量=6.0, 单价=4.0 +2025-11-16 15:11:11,973 - app.core.excel.processor - INFO - 处理商品: 条码=6935270642091, 数量=6.0, 单价=4.0, 是否赠品=False +2025-11-16 15:11:11,994 - app.core.excel.processor - INFO - 发现正常商品:条码6935270642091, 数量=6.0, 单价=4.0 +2025-11-16 15:11:12,019 - app.core.excel.processor - INFO - 分组后共3 个不同条码的商品 +2025-11-16 15:11:12,043 - app.core.excel.processor - INFO - 条码 6935270644323 处理结果:正常商品数量12.0,单价4.0,赠品数量0 +2025-11-16 15:11:12,062 - app.core.excel.processor - INFO - 条码 6935270645160 处理结果:正常商品数量6.0,单价4.0,赠品数量0 +2025-11-16 15:11:12,073 - app.core.excel.processor - INFO - 条码 6935270642091 处理结果:正常商品数量6.0,单价4.0,赠品数量0 +2025-11-16 15:11:12,098 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251116151001_152_108.xls +2025-11-16 15:11:12,120 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251116151001_152_108.xls +2025-11-16 15:13:47,389 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 15:13:47,391 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 15:13:47,396 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-16 15:13:49,544 - app.core.excel.processor - INFO - 搜索目录 data/output 中的Excel文件 +2025-11-16 15:13:49,556 - app.core.excel.processor - INFO - 找到最新的Excel文件: data/output\微信图片_20251116151334_153_108.xlsx +2025-11-16 15:13:49,580 - app.core.excel.processor - INFO - 开始处理Excel文件: data/output\微信图片_20251116151334_153_108.xlsx +2025-11-16 15:13:49,600 - app.core.excel.processor - INFO - 成功读取Excel文件: data/output\微信图片_20251116151334_153_108.xlsx, 共 8 行 +2025-11-16 15:13:49,617 - app.core.excel.processor - INFO - 找到可能的表头行: 第1行,评分: 45 +2025-11-16 15:13:49,640 - app.core.excel.processor - INFO - 识别到表头在第 1 行 +2025-11-16 15:13:49,669 - app.core.excel.processor - INFO - 使用表头行重新读取数据,共 7 行有效数据 +2025-11-16 15:13:49,673 - app.core.excel.processor - INFO - 找到精确匹配的条码列: 条形码 +2025-11-16 15:13:49,682 - app.core.excel.processor - INFO - 使用条码列: 条形码 +2025-11-16 15:13:49,702 - app.core.excel.processor - INFO - 找到name列: 商品名称 +2025-11-16 15:13:49,717 - app.core.excel.processor - INFO - 找到quantity列: 数量 +2025-11-16 15:13:49,736 - app.core.excel.processor - INFO - 找到unit列: 单位 +2025-11-16 15:13:49,753 - app.core.excel.processor - INFO - 找到price列: 销售价 +2025-11-16 15:13:49,771 - app.core.excel.processor - INFO - 找到amount列(部分匹配): 订单金额 +2025-11-16 15:13:49,789 - app.core.excel.processor - INFO - 检测到列映射: {'barcode': '条形码', 'name': '商品名称', 'quantity': '数量', 'unit': '单位', 'price': '销售价', 'amount': '订单金额'} +2025-11-16 15:13:49,825 - app.core.excel.processor - INFO - 从商品名称提取容量*数量格式: 瓶装爽歪歪400ml*15 -> 400L*15, 包装数量=15 +2025-11-16 15:13:49,893 - app.core.excel.processor - INFO - 从商品名称提取容量*数量格式: 娃哈哈瓶装大AD草莓味450ml*15 -> 450L*15, 包装数量=15 +2025-11-16 15:13:49,998 - app.core.excel.processor - INFO - 从商品名称提取重量/容量规格: 营养快线香草450g*15 -> 1*15, 包装数量=15 +2025-11-16 15:13:50,071 - app.core.excel.processor - INFO - 从商品名称提取重量/容量规格: 幸福牵线红枣450g*15 -> 1*15, 包装数量=15 +2025-11-16 15:13:50,169 - app.core.excel.processor - INFO - 从商品名称提取容量*数量格式: 娃哈哈大苏打水甜味500ml*15 -> 500L*15, 包装数量=15 +2025-11-16 15:13:50,277 - app.core.excel.processor - INFO - 从商品名称提取容量*数量格式: 娃哈哈纯净水(红标)596ml*24 -> 596L*24, 包装数量=24 +2025-11-16 15:13:50,373 - app.core.excel.processor - INFO - 提取到 6 个商品信息 +2025-11-16 15:13:50,403 - app.core.excel.processor - INFO - 开始处理6 个产品信息 +2025-11-16 15:13:50,424 - app.core.excel.processor - INFO - 处理商品: 条码=6902083814359, 数量=15.0, 单价=3.0, 是否赠品=False +2025-11-16 15:13:50,445 - app.core.excel.processor - INFO - 发现正常商品:条码6902083814359, 数量=15.0, 单价=3.0 +2025-11-16 15:13:50,471 - app.core.excel.processor - INFO - 处理商品: 条码=6902083814052, 数量=15.0, 单价=3.3333333333333335, 是否赠品=False +2025-11-16 15:13:50,483 - app.core.excel.processor - INFO - 发现正常商品:条码6902083814052, 数量=15.0, 单价=3.3333333333333335 +2025-11-16 15:13:50,505 - app.core.excel.processor - INFO - 处理商品: 条码=6902083898632, 数量=15.0, 单价=3.0, 是否赠品=False +2025-11-16 15:13:50,525 - app.core.excel.processor - INFO - 发现正常商品:条码6902083898632, 数量=15.0, 单价=3.0 +2025-11-16 15:13:50,546 - app.core.excel.processor - INFO - 处理商品: 条码=6902083905217, 数量=15.0, 单价=3.0, 是否赠品=False +2025-11-16 15:13:50,556 - app.core.excel.processor - INFO - 发现正常商品:条码6902083905217, 数量=15.0, 单价=3.0 +2025-11-16 15:13:50,567 - app.core.excel.processor - INFO - 处理商品: 条码=6902083911027, 数量=45.0, 单价=2.8666666666666667, 是否赠品=False +2025-11-16 15:13:50,577 - app.core.excel.processor - INFO - 发现正常商品:条码6902083911027, 数量=45.0, 单价=2.8666666666666667 +2025-11-16 15:13:50,586 - app.core.excel.processor - INFO - 处理商品: 条码=6902083881405, 数量=48.0, 单价=0.9166666666666666, 是否赠品=False +2025-11-16 15:13:50,594 - app.core.excel.processor - INFO - 发现正常商品:条码6902083881405, 数量=48.0, 单价=0.9166666666666666 +2025-11-16 15:13:50,602 - app.core.excel.processor - INFO - 分组后共6 个不同条码的商品 +2025-11-16 15:13:50,623 - app.core.excel.processor - INFO - 条码 6902083814359 处理结果:正常商品数量15.0,单价3.0,赠品数量0 +2025-11-16 15:13:50,643 - app.core.excel.processor - INFO - 条码 6902083814052 处理结果:正常商品数量15.0,单价3.3333333333333335,赠品数量0 +2025-11-16 15:13:50,663 - app.core.excel.processor - INFO - 条码 6902083898632 处理结果:正常商品数量15.0,单价3.0,赠品数量0 +2025-11-16 15:13:50,673 - app.core.excel.processor - INFO - 条码 6902083905217 处理结果:正常商品数量15.0,单价3.0,赠品数量0 +2025-11-16 15:13:50,692 - app.core.excel.processor - INFO - 条码 6902083911027 处理结果:正常商品数量45.0,单价2.8666666666666667,赠品数量0 +2025-11-16 15:13:50,711 - app.core.excel.processor - INFO - 条码 6902083881405 处理结果:正常商品数量48.0,单价0.9166666666666666,赠品数量0 +2025-11-16 15:13:50,743 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251116151334_153_108.xls +2025-11-16 15:13:50,753 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251116151334_153_108.xls +2025-11-16 15:15:36,190 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 15:15:36,191 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 15:15:36,195 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-16 15:15:37,920 - app.core.excel.processor - INFO - 搜索目录 data/output 中的Excel文件 +2025-11-16 15:15:37,933 - app.core.excel.processor - INFO - 找到最新的Excel文件: data/output\微信图片_20251116151514_154_108.xlsx +2025-11-16 15:15:37,957 - app.core.excel.processor - INFO - 开始处理Excel文件: data/output\微信图片_20251116151514_154_108.xlsx +2025-11-16 15:15:37,975 - app.core.excel.processor - INFO - 成功读取Excel文件: data/output\微信图片_20251116151514_154_108.xlsx, 共 7 行 +2025-11-16 15:15:37,983 - app.core.excel.processor - INFO - 找到可能的表头行: 第1行,评分: 65 +2025-11-16 15:15:38,008 - app.core.excel.processor - INFO - 识别到表头在第 1 行 +2025-11-16 15:15:38,042 - app.core.excel.processor - INFO - 使用表头行重新读取数据,共 6 行有效数据 +2025-11-16 15:15:38,058 - app.core.excel.processor - INFO - 找到精确匹配的条码列: 商品条码 +2025-11-16 15:15:38,082 - app.core.excel.processor - INFO - 使用条码列: 商品条码 +2025-11-16 15:15:38,090 - app.core.excel.processor - INFO - 找到name列: 商品名称 +2025-11-16 15:15:38,107 - app.core.excel.processor - INFO - 找到specification列: 规格 +2025-11-16 15:15:38,129 - app.core.excel.processor - INFO - 找到quantity列: 数量 +2025-11-16 15:15:38,146 - app.core.excel.processor - INFO - 找到unit列: 单位 +2025-11-16 15:15:38,165 - app.core.excel.processor - INFO - 找到price列: 单价 +2025-11-16 15:15:38,183 - app.core.excel.processor - INFO - 找到amount列: 金额 +2025-11-16 15:15:38,202 - app.core.excel.processor - INFO - 检测到列映射: {'barcode': '商品条码', 'name': '商品名称', 'specification': '规格', 'quantity': '数量', 'unit': '单位', 'price': '单价', 'amount': '金额'} +2025-11-16 15:15:38,222 - app.core.excel.processor - INFO - 解析规格: 1L*12 -> 包装数量=12 +2025-11-16 15:15:38,300 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-16 15:15:38,380 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-16 15:15:38,444 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-16 15:15:38,528 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-16 15:15:38,609 - app.core.excel.processor - INFO - 提取到 5 个商品信息 +2025-11-16 15:15:38,639 - app.core.excel.processor - INFO - 开始处理5 个产品信息 +2025-11-16 15:15:38,657 - app.core.excel.processor - INFO - 处理商品: 条码=6902538006278, 数量=12.0, 单价=5.166666666666667, 是否赠品=False +2025-11-16 15:15:38,668 - app.core.excel.processor - INFO - 发现正常商品:条码6902538006278, 数量=12.0, 单价=5.166666666666667 +2025-11-16 15:15:38,691 - app.core.excel.processor - INFO - 处理商品: 条码=6902538008920, 数量=15.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-16 15:15:38,714 - app.core.excel.processor - INFO - 发现正常商品:条码6902538008920, 数量=15.0, 单价=3.6666666666666665 +2025-11-16 15:15:38,737 - app.core.excel.processor - INFO - 处理商品: 条码=6902538004045, 数量=30.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-16 15:15:38,758 - app.core.excel.processor - INFO - 发现正常商品:条码6902538004045, 数量=30.0, 单价=3.6666666666666665 +2025-11-16 15:15:38,781 - app.core.excel.processor - INFO - 处理商品: 条码=6902538007169, 数量=15.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-16 15:15:38,799 - app.core.excel.processor - INFO - 发现正常商品:条码6902538007169, 数量=15.0, 单价=3.6666666666666665 +2025-11-16 15:15:38,808 - app.core.excel.processor - INFO - 处理商品: 条码=6902538008401, 数量=15.0, 单价=0, 是否赠品=True +2025-11-16 15:15:38,828 - app.core.excel.processor - INFO - 发现赠品:条码6902538008401, 数量=15.0 +2025-11-16 15:15:38,837 - app.core.excel.processor - INFO - 分组后共5 个不同条码的商品 +2025-11-16 15:15:38,858 - app.core.excel.processor - INFO - 条码 6902538006278 处理结果:正常商品数量12.0,单价5.166666666666667,赠品数量0 +2025-11-16 15:15:38,867 - app.core.excel.processor - INFO - 条码 6902538008920 处理结果:正常商品数量15.0,单价3.6666666666666665,赠品数量0 +2025-11-16 15:15:38,875 - app.core.excel.processor - INFO - 条码 6902538004045 处理结果:正常商品数量30.0,单价3.6666666666666665,赠品数量0 +2025-11-16 15:15:38,896 - app.core.excel.processor - INFO - 条码 6902538007169 处理结果:正常商品数量15.0,单价3.6666666666666665,赠品数量0 +2025-11-16 15:15:38,914 - app.core.excel.processor - INFO - 条码 6902538008401 处理结果:只有赠品,数量=15.0 +2025-11-16 15:15:38,935 - app.core.excel.processor - INFO - 条码 6902538008401 填充:仅有赠品,采购量=0,赠品数量=15.0 +2025-11-16 15:15:38,955 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251116151514_154_108.xls +2025-11-16 15:15:38,976 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251116151514_154_108.xls +2025-11-20 18:36:13,256 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-20 18:36:13,262 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-20 18:36:13,276 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-20 18:36:13,336 - app.core.excel.processor - INFO - 搜索目录 data/output 中的Excel文件 +2025-11-20 18:36:13,337 - app.core.excel.processor - INFO - 找到最新的Excel文件: data/output\微信图片_20251116151514_154_108.xlsx +2025-11-20 18:36:13,371 - app.core.excel.processor - INFO - 搜索目录 data/output 中的Excel文件 +2025-11-20 18:36:13,389 - app.core.excel.processor - INFO - 找到最新的Excel文件: data/output\微信图片_20251116151514_154_108.xlsx +2025-11-20 18:36:13,399 - app.core.excel.processor - INFO - 开始处理Excel文件: data/output\微信图片_20251116151514_154_108.xlsx +2025-11-20 18:36:13,474 - app.core.excel.processor - INFO - 成功读取Excel文件: data/output\微信图片_20251116151514_154_108.xlsx, 共 7 行 +2025-11-20 18:36:13,476 - app.core.excel.processor - INFO - 找到可能的表头行: 第1行,评分: 65 +2025-11-20 18:36:13,494 - app.core.excel.processor - INFO - 识别到表头在第 1 行 +2025-11-20 18:36:13,530 - app.core.excel.processor - INFO - 使用表头行重新读取数据,共 6 行有效数据 +2025-11-20 18:36:13,544 - app.core.excel.processor - INFO - 找到精确匹配的条码列: 商品条码 +2025-11-20 18:36:13,553 - app.core.excel.processor - INFO - 使用条码列: 商品条码 +2025-11-20 18:36:13,572 - app.core.excel.processor - INFO - 找到name列: 商品名称 +2025-11-20 18:36:13,582 - app.core.excel.processor - INFO - 找到specification列: 规格 +2025-11-20 18:36:13,593 - app.core.excel.processor - INFO - 找到quantity列: 数量 +2025-11-20 18:36:13,601 - app.core.excel.processor - INFO - 找到unit列: 单位 +2025-11-20 18:36:13,608 - app.core.excel.processor - INFO - 找到price列: 单价 +2025-11-20 18:36:13,616 - app.core.excel.processor - INFO - 找到amount列: 金额 +2025-11-20 18:36:13,623 - app.core.excel.processor - INFO - 检测到列映射: {'barcode': '商品条码', 'name': '商品名称', 'specification': '规格', 'quantity': '数量', 'unit': '单位', 'price': '单价', 'amount': '金额'} +2025-11-20 18:36:13,641 - app.core.excel.processor - INFO - 解析规格: 1L*12 -> 包装数量=12 +2025-11-20 18:36:13,688 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-20 18:36:13,736 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-20 18:36:13,780 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-20 18:36:13,835 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-20 18:36:13,881 - app.core.excel.processor - INFO - 提取到 5 个商品信息 +2025-11-20 18:36:13,900 - app.core.excel.processor - INFO - 开始处理5 个产品信息 +2025-11-20 18:36:13,908 - app.core.excel.processor - INFO - 处理商品: 条码=6902538006278, 数量=12.0, 单价=5.166666666666667, 是否赠品=False +2025-11-20 18:36:13,918 - app.core.excel.processor - INFO - 发现正常商品:条码6902538006278, 数量=12.0, 单价=5.166666666666667 +2025-11-20 18:36:13,933 - app.core.excel.processor - INFO - 处理商品: 条码=6902538008920, 数量=15.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-20 18:36:13,945 - app.core.excel.processor - INFO - 发现正常商品:条码6902538008920, 数量=15.0, 单价=3.6666666666666665 +2025-11-20 18:36:13,955 - app.core.excel.processor - INFO - 处理商品: 条码=6902538004045, 数量=30.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-20 18:36:13,966 - app.core.excel.processor - INFO - 发现正常商品:条码6902538004045, 数量=30.0, 单价=3.6666666666666665 +2025-11-20 18:36:13,977 - app.core.excel.processor - INFO - 处理商品: 条码=6902538007169, 数量=15.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-20 18:36:13,986 - app.core.excel.processor - INFO - 发现正常商品:条码6902538007169, 数量=15.0, 单价=3.6666666666666665 +2025-11-20 18:36:13,997 - app.core.excel.processor - INFO - 处理商品: 条码=6902538008401, 数量=15.0, 单价=0, 是否赠品=True +2025-11-20 18:36:14,005 - app.core.excel.processor - INFO - 发现赠品:条码6902538008401, 数量=15.0 +2025-11-20 18:36:14,023 - app.core.excel.processor - INFO - 分组后共5 个不同条码的商品 +2025-11-20 18:36:14,032 - app.core.excel.processor - INFO - 条码 6902538006278 处理结果:正常商品数量12.0,单价5.166666666666667,赠品数量0 +2025-11-20 18:36:14,039 - app.core.excel.processor - INFO - 条码 6902538008920 处理结果:正常商品数量15.0,单价3.6666666666666665,赠品数量0 +2025-11-20 18:36:14,047 - app.core.excel.processor - INFO - 条码 6902538004045 处理结果:正常商品数量30.0,单价3.6666666666666665,赠品数量0 +2025-11-20 18:36:14,054 - app.core.excel.processor - INFO - 条码 6902538007169 处理结果:正常商品数量15.0,单价3.6666666666666665,赠品数量0 +2025-11-20 18:36:14,063 - app.core.excel.processor - INFO - 条码 6902538008401 处理结果:只有赠品,数量=15.0 +2025-11-20 18:36:14,072 - app.core.excel.processor - INFO - 条码 6902538008401 填充:仅有赠品,采购量=0,赠品数量=15.0 +2025-11-20 18:36:14,101 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251116151514_154_108.xls +2025-11-20 18:36:14,111 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251116151514_154_108.xls +2025-11-20 18:36:42,073 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-20 18:36:42,077 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-20 18:36:42,091 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-20 18:36:42,148 - app.core.excel.processor - INFO - 搜索目录 data/output 中的Excel文件 +2025-11-20 18:36:42,149 - app.core.excel.processor - INFO - 找到最新的Excel文件: data/output\微信图片_20251116151514_154_108.xlsx +2025-11-20 18:36:42,175 - app.core.excel.processor - INFO - 搜索目录 data/output 中的Excel文件 +2025-11-20 18:36:42,193 - app.core.excel.processor - INFO - 找到最新的Excel文件: data/output\微信图片_20251116151514_154_108.xlsx +2025-11-20 18:36:42,212 - app.core.excel.processor - INFO - 开始处理Excel文件: data/output\微信图片_20251116151514_154_108.xlsx +2025-11-20 18:36:42,255 - app.core.excel.processor - INFO - 成功读取Excel文件: data/output\微信图片_20251116151514_154_108.xlsx, 共 7 行 +2025-11-20 18:36:42,257 - app.core.excel.processor - INFO - 找到可能的表头行: 第1行,评分: 65 +2025-11-20 18:36:42,275 - app.core.excel.processor - INFO - 识别到表头在第 1 行 +2025-11-20 18:36:42,308 - app.core.excel.processor - INFO - 使用表头行重新读取数据,共 6 行有效数据 +2025-11-20 18:36:42,326 - app.core.excel.processor - INFO - 找到精确匹配的条码列: 商品条码 +2025-11-20 18:36:42,327 - app.core.excel.processor - INFO - 使用条码列: 商品条码 +2025-11-20 18:36:42,346 - app.core.excel.processor - INFO - 找到name列: 商品名称 +2025-11-20 18:36:42,366 - app.core.excel.processor - INFO - 找到specification列: 规格 +2025-11-20 18:36:42,384 - app.core.excel.processor - INFO - 找到quantity列: 数量 +2025-11-20 18:36:42,399 - app.core.excel.processor - INFO - 找到unit列: 单位 +2025-11-20 18:36:42,407 - app.core.excel.processor - INFO - 找到price列: 单价 +2025-11-20 18:36:42,422 - app.core.excel.processor - INFO - 找到amount列: 金额 +2025-11-20 18:36:42,436 - app.core.excel.processor - INFO - 检测到列映射: {'barcode': '商品条码', 'name': '商品名称', 'specification': '规格', 'quantity': '数量', 'unit': '单位', 'price': '单价', 'amount': '金额'} +2025-11-20 18:36:42,452 - app.core.excel.processor - INFO - 解析规格: 1L*12 -> 包装数量=12 +2025-11-20 18:36:42,516 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-20 18:36:42,589 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-20 18:36:42,663 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-20 18:36:42,751 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-20 18:36:42,833 - app.core.excel.processor - INFO - 提取到 5 个商品信息 +2025-11-20 18:36:42,862 - app.core.excel.processor - INFO - 开始处理5 个产品信息 +2025-11-20 18:36:42,878 - app.core.excel.processor - INFO - 处理商品: 条码=6902538006278, 数量=12.0, 单价=5.166666666666667, 是否赠品=False +2025-11-20 18:36:42,897 - app.core.excel.processor - INFO - 发现正常商品:条码6902538006278, 数量=12.0, 单价=5.166666666666667 +2025-11-20 18:36:42,919 - app.core.excel.processor - INFO - 处理商品: 条码=6902538008920, 数量=15.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-20 18:36:42,940 - app.core.excel.processor - INFO - 发现正常商品:条码6902538008920, 数量=15.0, 单价=3.6666666666666665 +2025-11-20 18:36:42,960 - app.core.excel.processor - INFO - 处理商品: 条码=6902538004045, 数量=30.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-20 18:36:42,979 - app.core.excel.processor - INFO - 发现正常商品:条码6902538004045, 数量=30.0, 单价=3.6666666666666665 +2025-11-20 18:36:43,000 - app.core.excel.processor - INFO - 处理商品: 条码=6902538007169, 数量=15.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-20 18:36:43,018 - app.core.excel.processor - INFO - 发现正常商品:条码6902538007169, 数量=15.0, 单价=3.6666666666666665 +2025-11-20 18:36:43,038 - app.core.excel.processor - INFO - 处理商品: 条码=6902538008401, 数量=15.0, 单价=0, 是否赠品=True +2025-11-20 18:36:43,055 - app.core.excel.processor - INFO - 发现赠品:条码6902538008401, 数量=15.0 +2025-11-20 18:36:43,073 - app.core.excel.processor - INFO - 分组后共5 个不同条码的商品 +2025-11-20 18:36:43,089 - app.core.excel.processor - INFO - 条码 6902538006278 处理结果:正常商品数量12.0,单价5.166666666666667,赠品数量0 +2025-11-20 18:36:43,109 - app.core.excel.processor - INFO - 条码 6902538008920 处理结果:正常商品数量15.0,单价3.6666666666666665,赠品数量0 +2025-11-20 18:36:43,126 - app.core.excel.processor - INFO - 条码 6902538004045 处理结果:正常商品数量30.0,单价3.6666666666666665,赠品数量0 +2025-11-20 18:36:43,142 - app.core.excel.processor - INFO - 条码 6902538007169 处理结果:正常商品数量15.0,单价3.6666666666666665,赠品数量0 +2025-11-20 18:36:43,162 - app.core.excel.processor - INFO - 条码 6902538008401 处理结果:只有赠品,数量=15.0 +2025-11-20 18:36:43,171 - app.core.excel.processor - INFO - 条码 6902538008401 填充:仅有赠品,采购量=0,赠品数量=15.0 +2025-11-20 18:36:43,193 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251116151514_154_108.xls +2025-11-20 18:36:43,210 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251116151514_154_108.xls +2025-11-20 18:42:25,870 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-20 18:42:25,878 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-20 18:42:25,910 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-20 18:42:25,988 - app.core.excel.processor - INFO - 搜索目录 data/output 中的Excel文件 +2025-11-20 18:42:25,996 - app.core.excel.processor - INFO - 找到最新的Excel文件: data/output\微信图片_20251116151514_154_108.xlsx +2025-11-20 18:42:26,025 - app.core.excel.processor - INFO - 搜索目录 data/output 中的Excel文件 +2025-11-20 18:42:26,044 - app.core.excel.processor - INFO - 找到最新的Excel文件: data/output\微信图片_20251116151514_154_108.xlsx +2025-11-20 18:42:26,063 - app.core.excel.processor - INFO - 开始处理Excel文件: data/output\微信图片_20251116151514_154_108.xlsx +2025-11-20 18:42:26,097 - app.core.excel.processor - INFO - 成功读取Excel文件: data/output\微信图片_20251116151514_154_108.xlsx, 共 7 行 +2025-11-20 18:42:26,099 - app.core.excel.processor - INFO - 找到可能的表头行: 第1行,评分: 65 +2025-11-20 18:42:26,109 - app.core.excel.processor - INFO - 识别到表头在第 1 行 +2025-11-20 18:42:26,133 - app.core.excel.processor - INFO - 使用表头行重新读取数据,共 6 行有效数据 +2025-11-20 18:42:26,148 - app.core.excel.processor - INFO - 找到精确匹配的条码列: 商品条码 +2025-11-20 18:42:26,149 - app.core.excel.processor - INFO - 使用条码列: 商品条码 +2025-11-20 18:42:26,158 - app.core.excel.processor - INFO - 找到name列: 商品名称 +2025-11-20 18:42:26,168 - app.core.excel.processor - INFO - 找到specification列: 规格 +2025-11-20 18:42:26,178 - app.core.excel.processor - INFO - 找到quantity列: 数量 +2025-11-20 18:42:26,195 - app.core.excel.processor - INFO - 找到unit列: 单位 +2025-11-20 18:42:26,210 - app.core.excel.processor - INFO - 找到price列: 单价 +2025-11-20 18:42:26,232 - app.core.excel.processor - INFO - 找到amount列: 金额 +2025-11-20 18:42:26,245 - app.core.excel.processor - INFO - 检测到列映射: {'barcode': '商品条码', 'name': '商品名称', 'specification': '规格', 'quantity': '数量', 'unit': '单位', 'price': '单价', 'amount': '金额'} +2025-11-20 18:42:26,260 - app.core.excel.processor - INFO - 解析规格: 1L*12 -> 包装数量=12 +2025-11-20 18:42:26,307 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-20 18:42:26,351 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-20 18:42:26,414 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-20 18:42:26,458 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-20 18:42:26,512 - app.core.excel.processor - INFO - 提取到 5 个商品信息 +2025-11-20 18:42:26,530 - app.core.excel.processor - INFO - 开始处理5 个产品信息 +2025-11-20 18:42:26,548 - app.core.excel.processor - INFO - 处理商品: 条码=6902538006278, 数量=12.0, 单价=5.166666666666667, 是否赠品=False +2025-11-20 18:42:26,559 - app.core.excel.processor - INFO - 发现正常商品:条码6902538006278, 数量=12.0, 单价=5.166666666666667 +2025-11-20 18:42:26,569 - app.core.excel.processor - INFO - 处理商品: 条码=6902538008920, 数量=15.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-20 18:42:26,585 - app.core.excel.processor - INFO - 发现正常商品:条码6902538008920, 数量=15.0, 单价=3.6666666666666665 +2025-11-20 18:42:26,595 - app.core.excel.processor - INFO - 处理商品: 条码=6902538004045, 数量=30.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-20 18:42:26,608 - app.core.excel.processor - INFO - 发现正常商品:条码6902538004045, 数量=30.0, 单价=3.6666666666666665 +2025-11-20 18:42:26,617 - app.core.excel.processor - INFO - 处理商品: 条码=6902538007169, 数量=15.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-20 18:42:26,637 - app.core.excel.processor - INFO - 发现正常商品:条码6902538007169, 数量=15.0, 单价=3.6666666666666665 +2025-11-20 18:42:26,647 - app.core.excel.processor - INFO - 处理商品: 条码=6902538008401, 数量=15.0, 单价=0, 是否赠品=True +2025-11-20 18:42:26,665 - app.core.excel.processor - INFO - 发现赠品:条码6902538008401, 数量=15.0 +2025-11-20 18:42:26,672 - app.core.excel.processor - INFO - 分组后共5 个不同条码的商品 +2025-11-20 18:42:26,680 - app.core.excel.processor - INFO - 条码 6902538006278 处理结果:正常商品数量12.0,单价5.166666666666667,赠品数量0 +2025-11-20 18:42:26,697 - app.core.excel.processor - INFO - 条码 6902538008920 处理结果:正常商品数量15.0,单价3.6666666666666665,赠品数量0 +2025-11-20 18:42:26,704 - app.core.excel.processor - INFO - 条码 6902538004045 处理结果:正常商品数量30.0,单价3.6666666666666665,赠品数量0 +2025-11-20 18:42:26,711 - app.core.excel.processor - INFO - 条码 6902538007169 处理结果:正常商品数量15.0,单价3.6666666666666665,赠品数量0 +2025-11-20 18:42:26,719 - app.core.excel.processor - INFO - 条码 6902538008401 处理结果:只有赠品,数量=15.0 +2025-11-20 18:42:26,738 - app.core.excel.processor - INFO - 条码 6902538008401 填充:仅有赠品,采购量=0,赠品数量=15.0 +2025-11-20 18:42:26,749 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251116151514_154_108.xls +2025-11-20 18:42:26,758 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251116151514_154_108.xls +2025-11-20 18:44:11,103 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-20 18:44:11,105 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-20 18:44:11,109 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-20 18:44:11,385 - app.core.excel.processor - INFO - 搜索目录 data/output 中的Excel文件 +2025-11-20 18:44:11,408 - app.core.excel.processor - INFO - 找到最新的Excel文件: data/output\微信图片_20251116151514_154_108.xlsx +2025-11-20 18:44:11,429 - app.core.excel.processor - INFO - 开始处理Excel文件: data/output\微信图片_20251116151514_154_108.xlsx +2025-11-20 18:44:11,457 - app.core.excel.processor - INFO - 成功读取Excel文件: data/output\微信图片_20251116151514_154_108.xlsx, 共 7 行 +2025-11-20 18:44:11,473 - app.core.excel.processor - INFO - 找到可能的表头行: 第1行,评分: 65 +2025-11-20 18:44:11,495 - app.core.excel.processor - INFO - 识别到表头在第 1 行 +2025-11-20 18:44:11,520 - app.core.excel.processor - INFO - 使用表头行重新读取数据,共 6 行有效数据 +2025-11-20 18:44:11,534 - app.core.excel.processor - INFO - 找到精确匹配的条码列: 商品条码 +2025-11-20 18:44:11,550 - app.core.excel.processor - INFO - 使用条码列: 商品条码 +2025-11-20 18:44:11,566 - app.core.excel.processor - INFO - 找到name列: 商品名称 +2025-11-20 18:44:11,574 - app.core.excel.processor - INFO - 找到specification列: 规格 +2025-11-20 18:44:11,589 - app.core.excel.processor - INFO - 找到quantity列: 数量 +2025-11-20 18:44:11,605 - app.core.excel.processor - INFO - 找到unit列: 单位 +2025-11-20 18:44:11,620 - app.core.excel.processor - INFO - 找到price列: 单价 +2025-11-20 18:44:11,635 - app.core.excel.processor - INFO - 找到amount列: 金额 +2025-11-20 18:44:11,650 - app.core.excel.processor - INFO - 检测到列映射: {'barcode': '商品条码', 'name': '商品名称', 'specification': '规格', 'quantity': '数量', 'unit': '单位', 'price': '单价', 'amount': '金额'} +2025-11-20 18:44:11,666 - app.core.excel.processor - INFO - 解析规格: 1L*12 -> 包装数量=12 +2025-11-20 18:44:11,728 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-20 18:44:11,797 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-20 18:44:11,874 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-20 18:44:11,947 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-20 18:44:12,028 - app.core.excel.processor - INFO - 提取到 5 个商品信息 +2025-11-20 18:44:12,055 - app.core.excel.processor - INFO - 开始处理5 个产品信息 +2025-11-20 18:44:12,073 - app.core.excel.processor - INFO - 处理商品: 条码=6902538006278, 数量=12.0, 单价=5.166666666666667, 是否赠品=False +2025-11-20 18:44:12,091 - app.core.excel.processor - INFO - 发现正常商品:条码6902538006278, 数量=12.0, 单价=5.166666666666667 +2025-11-20 18:44:12,110 - app.core.excel.processor - INFO - 处理商品: 条码=6902538008920, 数量=15.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-20 18:44:12,131 - app.core.excel.processor - INFO - 发现正常商品:条码6902538008920, 数量=15.0, 单价=3.6666666666666665 +2025-11-20 18:44:12,141 - app.core.excel.processor - INFO - 处理商品: 条码=6902538004045, 数量=30.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-20 18:44:12,158 - app.core.excel.processor - INFO - 发现正常商品:条码6902538004045, 数量=30.0, 单价=3.6666666666666665 +2025-11-20 18:44:12,179 - app.core.excel.processor - INFO - 处理商品: 条码=6902538007169, 数量=15.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-20 18:44:12,197 - app.core.excel.processor - INFO - 发现正常商品:条码6902538007169, 数量=15.0, 单价=3.6666666666666665 +2025-11-20 18:44:12,217 - app.core.excel.processor - INFO - 处理商品: 条码=6902538008401, 数量=15.0, 单价=0, 是否赠品=True +2025-11-20 18:44:12,234 - app.core.excel.processor - INFO - 发现赠品:条码6902538008401, 数量=15.0 +2025-11-20 18:44:12,251 - app.core.excel.processor - INFO - 分组后共5 个不同条码的商品 +2025-11-20 18:44:12,269 - app.core.excel.processor - INFO - 条码 6902538006278 处理结果:正常商品数量12.0,单价5.166666666666667,赠品数量0 +2025-11-20 18:44:12,286 - app.core.excel.processor - INFO - 条码 6902538008920 处理结果:正常商品数量15.0,单价3.6666666666666665,赠品数量0 +2025-11-20 18:44:12,301 - app.core.excel.processor - INFO - 条码 6902538004045 处理结果:正常商品数量30.0,单价3.6666666666666665,赠品数量0 +2025-11-20 18:44:12,318 - app.core.excel.processor - INFO - 条码 6902538007169 处理结果:正常商品数量15.0,单价3.6666666666666665,赠品数量0 +2025-11-20 18:44:12,335 - app.core.excel.processor - INFO - 条码 6902538008401 处理结果:只有赠品,数量=15.0 +2025-11-20 18:44:12,354 - app.core.excel.processor - INFO - 条码 6902538008401 填充:仅有赠品,采购量=0,赠品数量=15.0 +2025-11-20 18:44:12,363 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251116151514_154_108.xls +2025-11-20 18:44:12,380 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251116151514_154_108.xls +2025-11-20 18:47:03,882 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-20 18:47:03,890 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-20 18:47:03,905 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-20 18:47:04,176 - app.core.excel.processor - INFO - 搜索目录 data/output 中的Excel文件 +2025-11-20 18:47:04,187 - app.core.excel.processor - INFO - 找到最新的Excel文件: data/output\微信图片_20251116151514_154_108.xlsx +2025-11-20 18:47:04,206 - app.core.excel.processor - INFO - 开始处理Excel文件: data/output\微信图片_20251116151514_154_108.xlsx +2025-11-20 18:47:04,236 - app.core.excel.processor - INFO - 成功读取Excel文件: data/output\微信图片_20251116151514_154_108.xlsx, 共 7 行 +2025-11-20 18:47:04,246 - app.core.excel.processor - INFO - 找到可能的表头行: 第1行,评分: 65 +2025-11-20 18:47:04,273 - app.core.excel.processor - INFO - 识别到表头在第 1 行 +2025-11-20 18:47:04,298 - app.core.excel.processor - INFO - 使用表头行重新读取数据,共 6 行有效数据 +2025-11-20 18:47:04,314 - app.core.excel.processor - INFO - 找到精确匹配的条码列: 商品条码 +2025-11-20 18:47:04,323 - app.core.excel.processor - INFO - 使用条码列: 商品条码 +2025-11-20 18:47:04,344 - app.core.excel.processor - INFO - 找到name列: 商品名称 +2025-11-20 18:47:04,361 - app.core.excel.processor - INFO - 找到specification列: 规格 +2025-11-20 18:47:04,376 - app.core.excel.processor - INFO - 找到quantity列: 数量 +2025-11-20 18:47:04,393 - app.core.excel.processor - INFO - 找到unit列: 单位 +2025-11-20 18:47:04,409 - app.core.excel.processor - INFO - 找到price列: 单价 +2025-11-20 18:47:04,425 - app.core.excel.processor - INFO - 找到amount列: 金额 +2025-11-20 18:47:04,441 - app.core.excel.processor - INFO - 检测到列映射: {'barcode': '商品条码', 'name': '商品名称', 'specification': '规格', 'quantity': '数量', 'unit': '单位', 'price': '单价', 'amount': '金额'} +2025-11-20 18:47:04,455 - app.core.excel.processor - INFO - 解析规格: 1L*12 -> 包装数量=12 +2025-11-20 18:47:04,519 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-20 18:47:04,588 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-20 18:47:04,675 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-20 18:47:04,760 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-20 18:47:04,820 - app.core.excel.processor - INFO - 提取到 5 个商品信息 +2025-11-20 18:47:04,841 - app.core.excel.processor - INFO - 开始处理5 个产品信息 +2025-11-20 18:47:04,863 - app.core.excel.processor - INFO - 处理商品: 条码=6902538006278, 数量=12.0, 单价=5.166666666666667, 是否赠品=False +2025-11-20 18:47:04,873 - app.core.excel.processor - INFO - 发现正常商品:条码6902538006278, 数量=12.0, 单价=5.166666666666667 +2025-11-20 18:47:04,886 - app.core.excel.processor - INFO - 处理商品: 条码=6902538008920, 数量=15.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-20 18:47:04,900 - app.core.excel.processor - INFO - 发现正常商品:条码6902538008920, 数量=15.0, 单价=3.6666666666666665 +2025-11-20 18:47:04,924 - app.core.excel.processor - INFO - 处理商品: 条码=6902538004045, 数量=30.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-20 18:47:04,942 - app.core.excel.processor - INFO - 发现正常商品:条码6902538004045, 数量=30.0, 单价=3.6666666666666665 +2025-11-20 18:47:04,951 - app.core.excel.processor - INFO - 处理商品: 条码=6902538007169, 数量=15.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-20 18:47:04,974 - app.core.excel.processor - INFO - 发现正常商品:条码6902538007169, 数量=15.0, 单价=3.6666666666666665 +2025-11-20 18:47:04,993 - app.core.excel.processor - INFO - 处理商品: 条码=6902538008401, 数量=15.0, 单价=0, 是否赠品=True +2025-11-20 18:47:05,012 - app.core.excel.processor - INFO - 发现赠品:条码6902538008401, 数量=15.0 +2025-11-20 18:47:05,029 - app.core.excel.processor - INFO - 分组后共5 个不同条码的商品 +2025-11-20 18:47:05,046 - app.core.excel.processor - INFO - 条码 6902538006278 处理结果:正常商品数量12.0,单价5.166666666666667,赠品数量0 +2025-11-20 18:47:05,062 - app.core.excel.processor - INFO - 条码 6902538008920 处理结果:正常商品数量15.0,单价3.6666666666666665,赠品数量0 +2025-11-20 18:47:05,079 - app.core.excel.processor - INFO - 条码 6902538004045 处理结果:正常商品数量30.0,单价3.6666666666666665,赠品数量0 +2025-11-20 18:47:05,094 - app.core.excel.processor - INFO - 条码 6902538007169 处理结果:正常商品数量15.0,单价3.6666666666666665,赠品数量0 +2025-11-20 18:47:05,112 - app.core.excel.processor - INFO - 条码 6902538008401 处理结果:只有赠品,数量=15.0 +2025-11-20 18:47:05,130 - app.core.excel.processor - INFO - 条码 6902538008401 填充:仅有赠品,采购量=0,赠品数量=15.0 +2025-11-20 18:47:05,149 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251116151514_154_108.xls +2025-11-20 18:47:05,170 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251116151514_154_108.xls +2025-11-20 18:56:30,304 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-20 18:56:30,313 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-20 18:56:30,325 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-11-20 18:56:30,602 - app.core.excel.processor - INFO - 搜索目录 data/output 中的Excel文件 +2025-11-20 18:56:30,622 - app.core.excel.processor - INFO - 找到最新的Excel文件: data/output\微信图片_20251116151514_154_108.xlsx +2025-11-20 18:56:30,644 - app.core.excel.processor - INFO - 开始处理Excel文件: data/output\微信图片_20251116151514_154_108.xlsx +2025-11-20 18:56:30,660 - app.core.excel.processor - INFO - 成功读取Excel文件: data/output\微信图片_20251116151514_154_108.xlsx, 共 7 行 +2025-11-20 18:56:30,682 - app.core.excel.processor - INFO - 找到可能的表头行: 第1行,评分: 65 +2025-11-20 18:56:30,707 - app.core.excel.processor - INFO - 识别到表头在第 1 行 +2025-11-20 18:56:30,733 - app.core.excel.processor - INFO - 使用表头行重新读取数据,共 6 行有效数据 +2025-11-20 18:56:30,741 - app.core.excel.processor - INFO - 找到精确匹配的条码列: 商品条码 +2025-11-20 18:56:30,752 - app.core.excel.processor - INFO - 使用条码列: 商品条码 +2025-11-20 18:56:30,763 - app.core.excel.processor - INFO - 找到name列: 商品名称 +2025-11-20 18:56:30,774 - app.core.excel.processor - INFO - 找到specification列: 规格 +2025-11-20 18:56:30,788 - app.core.excel.processor - INFO - 找到quantity列: 数量 +2025-11-20 18:56:30,799 - app.core.excel.processor - INFO - 找到unit列: 单位 +2025-11-20 18:56:30,810 - app.core.excel.processor - INFO - 找到price列: 单价 +2025-11-20 18:56:30,820 - app.core.excel.processor - INFO - 找到amount列: 金额 +2025-11-20 18:56:30,830 - app.core.excel.processor - INFO - 检测到列映射: {'barcode': '商品条码', 'name': '商品名称', 'specification': '规格', 'quantity': '数量', 'unit': '单位', 'price': '单价', 'amount': '金额'} +2025-11-20 18:56:30,839 - app.core.excel.processor - INFO - 解析规格: 1L*12 -> 包装数量=12 +2025-11-20 18:56:30,991 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-20 18:56:31,044 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-20 18:56:31,103 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-20 18:56:31,166 - app.core.excel.processor - INFO - 解析规格: 600ml*15 -> 包装数量=15 +2025-11-20 18:56:31,230 - app.core.excel.processor - INFO - 提取到 5 个商品信息 +2025-11-20 18:56:31,252 - app.core.excel.processor - INFO - 开始处理5 个产品信息 +2025-11-20 18:56:31,275 - app.core.excel.processor - INFO - 处理商品: 条码=6902538006278, 数量=12.0, 单价=5.166666666666667, 是否赠品=False +2025-11-20 18:56:31,276 - app.core.excel.processor - INFO - 发现正常商品:条码6902538006278, 数量=12.0, 单价=5.166666666666667 +2025-11-20 18:56:31,301 - app.core.excel.processor - INFO - 处理商品: 条码=6902538008920, 数量=15.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-20 18:56:31,327 - app.core.excel.processor - INFO - 发现正常商品:条码6902538008920, 数量=15.0, 单价=3.6666666666666665 +2025-11-20 18:56:31,348 - app.core.excel.processor - INFO - 处理商品: 条码=6902538004045, 数量=30.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-20 18:56:31,366 - app.core.excel.processor - INFO - 发现正常商品:条码6902538004045, 数量=30.0, 单价=3.6666666666666665 +2025-11-20 18:56:31,376 - app.core.excel.processor - INFO - 处理商品: 条码=6902538007169, 数量=15.0, 单价=3.6666666666666665, 是否赠品=False +2025-11-20 18:56:31,397 - app.core.excel.processor - INFO - 发现正常商品:条码6902538007169, 数量=15.0, 单价=3.6666666666666665 +2025-11-20 18:56:31,418 - app.core.excel.processor - INFO - 处理商品: 条码=6902538008401, 数量=15.0, 单价=0, 是否赠品=True +2025-11-20 18:56:31,438 - app.core.excel.processor - INFO - 发现赠品:条码6902538008401, 数量=15.0 +2025-11-20 18:56:31,455 - app.core.excel.processor - INFO - 分组后共5 个不同条码的商品 +2025-11-20 18:56:31,474 - app.core.excel.processor - INFO - 条码 6902538006278 处理结果:正常商品数量12.0,单价5.166666666666667,赠品数量0 +2025-11-20 18:56:31,490 - app.core.excel.processor - INFO - 条码 6902538008920 处理结果:正常商品数量15.0,单价3.6666666666666665,赠品数量0 +2025-11-20 18:56:31,508 - app.core.excel.processor - INFO - 条码 6902538004045 处理结果:正常商品数量30.0,单价3.6666666666666665,赠品数量0 +2025-11-20 18:56:31,525 - app.core.excel.processor - INFO - 条码 6902538007169 处理结果:正常商品数量15.0,单价3.6666666666666665,赠品数量0 +2025-11-20 18:56:31,542 - app.core.excel.processor - INFO - 条码 6902538008401 处理结果:只有赠品,数量=15.0 +2025-11-20 18:56:31,562 - app.core.excel.processor - INFO - 条码 6902538008401 填充:仅有赠品,采购量=0,赠品数量=15.0 +2025-11-20 18:56:31,581 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251116151514_154_108.xls +2025-11-20 18:56:31,600 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251116151514_154_108.xls +2025-12-01 22:21:09,072 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-12-01 22:21:09,080 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-12-01 22:21:09,097 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-12-01 22:21:10,615 - app.core.excel.processor - INFO - 搜索目录 data/output 中的Excel文件 +2025-12-01 22:21:10,639 - app.core.excel.processor - INFO - 找到最新的Excel文件: data/output\微信图片_20251201221738_176_108.xlsx +2025-12-01 22:21:10,663 - app.core.excel.processor - INFO - 开始处理Excel文件: data/output\微信图片_20251201221738_176_108.xlsx +2025-12-01 22:21:10,694 - app.core.excel.processor - INFO - 成功读取Excel文件: data/output\微信图片_20251201221738_176_108.xlsx, 共 10 行 +2025-12-01 22:21:10,712 - app.core.excel.processor - INFO - 找到可能的表头行: 第1行,评分: 35 +2025-12-01 22:21:10,736 - app.core.excel.processor - INFO - 识别到表头在第 1 行 +2025-12-01 22:21:10,764 - app.core.excel.processor - INFO - 使用表头行重新读取数据,共 9 行有效数据 +2025-12-01 22:21:10,778 - app.core.excel.processor - INFO - 找到精确匹配的条码列: 条形码 +2025-12-01 22:21:10,787 - app.core.excel.processor - INFO - 使用条码列: 条形码 +2025-12-01 22:21:10,806 - app.core.excel.processor - INFO - 找到name列: 商品名称 +2025-12-01 22:21:10,824 - app.core.excel.processor - INFO - 找到price列: 销售价 +2025-12-01 22:21:10,833 - app.core.excel.processor - INFO - 找到amount列(部分匹配): 订单金额 +2025-12-01 22:21:10,840 - app.core.excel.processor - INFO - 检测到列映射: {'barcode': '条形码', 'name': '商品名称', 'price': '销售价', 'amount': '订单金额'} +2025-12-01 22:21:10,877 - app.core.excel.processor - INFO - 从商品名称推断规格: 550水24白膜 -> 1*24, 包装数量=24 +2025-12-01 22:21:10,987 - app.core.excel.processor - INFO - 从商品名称推断规格: 500-东方树叶-陈皮白茶1*15-纸 +箱装-普通装 -> 1*15, 包装数量=15 +2025-12-01 22:21:11,076 - app.core.excel.processor - INFO - 数量为空或为0,通过金额(165.0)和单价(55.0)计算得出数量: 3.0 +2025-12-01 22:21:11,108 - app.core.excel.processor - INFO - 从商品名称推断规格: 500树叶青柑普洱15入纸箱 -> 1*15, 包装数量=15 +2025-12-01 22:21:11,163 - app.core.excel.processor - INFO - 数量为空或为0,通过金额(110.0)和单价(55.0)计算得出数量: 2.0 +2025-12-01 22:21:11,201 - app.core.excel.processor - INFO - 从商品名称推断规格: 500树叶茉莉花茶15纸箱 -> 1*15, 包装数量=15 +2025-12-01 22:21:11,286 - app.core.excel.processor - INFO - 数量为空或为0,通过金额(275.0)和单价(55.0)计算得出数量: 5.0 +2025-12-01 22:21:11,303 - app.core.excel.processor - INFO - 从商品名称推断规格: 500树叶乌龙茶15纸箱 -> 1*15, 包装数量=15 +2025-12-01 22:21:11,404 - app.core.excel.processor - INFO - 数量为空或为0,通过金额(165.0)和单价(55.0)计算得出数量: 3.0 +2025-12-01 22:21:11,445 - app.core.excel.processor - INFO - 从商品名称推断规格: 500树叶绿茶15纸箱 -> 1*15, 包装数量=15 +2025-12-01 22:21:11,520 - app.core.excel.processor - INFO - 数量为空或为0,通过金额(165.0)和单价(55.0)计算得出数量: 3.0 +2025-12-01 22:21:11,552 - app.core.excel.processor - INFO - 从商品名称推断规格: 1.5树叶茉莉花茶6入纸箱装 -> 1*6, 包装数量=6 +2025-12-01 22:21:11,614 - app.core.excel.processor - INFO - 数量为空或为0,通过金额(100.0)和单价(50.0)计算得出数量: 2.0 +2025-12-01 22:21:11,630 - app.core.excel.processor - INFO - 从商品名称推断规格: 500茶π西柚茉莉15纸箱 -> 1*15, 包装数量=15 +2025-12-01 22:21:11,726 - app.core.excel.processor - INFO - 数量为空或为0,通过金额(112.0)和单价(56.0)计算得出数量: 2.0 +2025-12-01 22:21:11,745 - app.core.excel.processor - INFO - 提取到 8 个商品信息 +2025-12-01 22:21:11,771 - app.core.excel.processor - INFO - 开始处理8 个产品信息 +2025-12-01 22:21:11,782 - app.core.excel.processor - INFO - 处理商品: 条码=6921168509256, 数量=0.0, 单价=0, 是否赠品=True +2025-12-01 22:21:11,801 - app.core.excel.processor - INFO - 发现赠品:条码6921168509256, 数量=0.0 +2025-12-01 22:21:11,817 - app.core.excel.processor - INFO - 处理商品: 条码=6921168562909, 数量=3.0, 单价=55.0, 是否赠品=False +2025-12-01 22:21:11,824 - app.core.excel.processor - INFO - 发现正常商品:条码6921168562909, 数量=3.0, 单价=55.0 +2025-12-01 22:21:11,842 - app.core.excel.processor - INFO - 处理商品: 条码=6921168596348, 数量=2.0, 单价=55.0, 是否赠品=False +2025-12-01 22:21:11,861 - app.core.excel.processor - INFO - 发现正常商品:条码6921168596348, 数量=2.0, 单价=55.0 +2025-12-01 22:21:11,868 - app.core.excel.processor - INFO - 处理商品: 条码=6921168558049, 数量=5.0, 单价=55.0, 是否赠品=False +2025-12-01 22:21:11,890 - app.core.excel.processor - INFO - 发现正常商品:条码6921168558049, 数量=5.0, 单价=55.0 +2025-12-01 22:21:11,908 - app.core.excel.processor - INFO - 处理商品: 条码=6921168558032, 数量=3.0, 单价=55.0, 是否赠品=False +2025-12-01 22:21:11,915 - app.core.excel.processor - INFO - 发现正常商品:条码6921168558032, 数量=3.0, 单价=55.0 +2025-12-01 22:21:11,923 - app.core.excel.processor - INFO - 处理商品: 条码=6921168558018, 数量=3.0, 单价=55.0, 是否赠品=False +2025-12-01 22:21:11,941 - app.core.excel.processor - INFO - 发现正常商品:条码6921168558018, 数量=3.0, 单价=55.0 +2025-12-01 22:21:11,948 - app.core.excel.processor - INFO - 处理商品: 条码=6921168561445, 数量=2.0, 单价=50.0, 是否赠品=False +2025-12-01 22:21:11,965 - app.core.excel.processor - INFO - 发现正常商品:条码6921168561445, 数量=2.0, 单价=50.0 +2025-12-01 22:21:11,984 - app.core.excel.processor - INFO - 处理商品: 条码=6921168593552, 数量=2.0, 单价=56.0, 是否赠品=False +2025-12-01 22:21:12,001 - app.core.excel.processor - INFO - 发现正常商品:条码6921168593552, 数量=2.0, 单价=56.0 +2025-12-01 22:21:12,019 - app.core.excel.processor - INFO - 分组后共8 个不同条码的商品 +2025-12-01 22:21:12,037 - app.core.excel.processor - INFO - 条码 6921168509256 处理结果:只有赠品,数量=0.0 +2025-12-01 22:21:12,045 - app.core.excel.processor - INFO - 条码 6921168562909 处理结果:正常商品数量3.0,单价55.0,赠品数量0 +2025-12-01 22:21:12,063 - app.core.excel.processor - INFO - 条码 6921168596348 处理结果:正常商品数量2.0,单价55.0,赠品数量0 +2025-12-01 22:21:12,071 - app.core.excel.processor - INFO - 条码 6921168558049 处理结果:正常商品数量5.0,单价55.0,赠品数量0 +2025-12-01 22:21:12,090 - app.core.excel.processor - INFO - 条码 6921168558032 处理结果:正常商品数量3.0,单价55.0,赠品数量0 +2025-12-01 22:21:12,111 - app.core.excel.processor - INFO - 条码 6921168558018 处理结果:正常商品数量3.0,单价55.0,赠品数量0 +2025-12-01 22:21:12,130 - app.core.excel.processor - INFO - 条码 6921168561445 处理结果:正常商品数量2.0,单价50.0,赠品数量0 +2025-12-01 22:21:12,139 - app.core.excel.processor - INFO - 条码 6921168593552 处理结果:正常商品数量2.0,单价56.0,赠品数量0 +2025-12-01 22:21:12,162 - app.core.excel.processor - INFO - 条码 6921168509256 填充:仅有赠品,采购量=0,赠品数量=0.0 +2025-12-01 22:21:12,202 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251201221738_176_108.xls +2025-12-01 22:21:12,214 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_微信图片_20251201221738_176_108.xls +2025-12-12 11:00:14,060 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-12-12 11:00:14,069 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-12-12 11:00:14,085 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-12-12 11:00:14,100 - app.core.excel.processor - INFO - 开始处理Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765440157955.xlsx +2025-12-12 11:00:14,112 - app.core.excel.processor - INFO - 成功读取Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765440157955.xlsx, 共 57 行 +2025-12-12 11:00:14,116 - app.core.excel.processor - INFO - 找到可能的表头行: 第1行,评分: 75 +2025-12-12 11:00:14,117 - app.core.excel.processor - INFO - 识别到表头在第 1 行 +2025-12-12 11:00:14,127 - app.core.excel.processor - INFO - 使用表头行重新读取数据,共 56 行有效数据 +2025-12-12 11:00:14,137 - app.core.excel.processor - INFO - 找到部分匹配的条码列: 商品条码(小条码) (包含关键词: 条码) +2025-12-12 11:00:14,137 - app.core.excel.processor - INFO - 使用条码列: 商品条码(小条码) +2025-12-12 11:00:14,138 - app.core.excel.processor - INFO - 找到name列: 商品名称 +2025-12-12 11:00:14,138 - app.core.excel.processor - INFO - 找到quantity列(部分匹配): 订购数量(小单位) +2025-12-12 11:00:14,138 - app.core.excel.processor - INFO - 找到unit列: 单位 +2025-12-12 11:00:14,139 - app.core.excel.processor - INFO - 找到price列(部分匹配): 单价(小单位) +2025-12-12 11:00:14,139 - app.core.excel.processor - INFO - 找到amount列(部分匹配): 优惠后金额(小单位) +2025-12-12 11:00:14,139 - app.core.excel.processor - INFO - 检测到列映射: {'barcode': '商品条码(小条码)', 'name': '商品名称', 'quantity': '订购数量(小单位)', 'unit': '单位', 'price': '单价(小单位)', 'amount': '优惠后金额(小单位)'} +2025-12-12 11:00:14,144 - app.core.excel.processor - INFO - 从商品名称推断规格: 雪碧2L@ -> 2L*1, 包装数量=1 +2025-12-12 11:00:14,145 - app.core.excel.processor - INFO - 根据规格推断单位: 2L*1 -> 单位=件 +2025-12-12 11:00:14,222 - app.core.excel.processor - INFO - 从商品名称推断规格: 怡宝饮用纯净水2.08L@ -> 2.08L*1, 包装数量=1 +2025-12-12 11:00:14,223 - app.core.excel.processor - INFO - 从商品名称推断规格: 怡宝纯净水4.5L@ -> 4.5L*1, 包装数量=1 +2025-12-12 11:00:14,223 - app.core.excel.processor - INFO - 从商品名称推断规格: 怡宝饮用纯净水1.555L@ -> 1.555L*1, 包装数量=1 +2025-12-12 11:00:14,227 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥薄脆酸甜草莓味95g@ -> 95*None, 包装数量=95 +2025-12-12 11:00:14,230 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥杯奥草莓味55g@ -> 55*None, 包装数量=55 +2025-12-12 11:00:14,232 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥杯奥巧克力55g@ -> 55*None, 包装数量=55 +2025-12-12 11:00:14,232 - app.core.excel.processor - INFO - 从商品名称推断规格: 好丽友蛋黄派2P46g@ -> 46*None, 包装数量=46 +2025-12-12 11:00:14,235 - app.core.excel.processor - INFO - 从商品名称推断规格: 都市牧场爽口含片正梅味38g@ -> 38*None, 包装数量=38 +2025-12-12 11:00:14,236 - app.core.excel.processor - INFO - 从商品名称推断规格: 林振合维C果C软糖什锦味68g -> 68*None, 包装数量=68 +2025-12-12 11:00:14,239 - app.core.excel.processor - INFO - 从商品名称推断规格: 格力高百醇柠檬48g@ -> 48*None, 包装数量=48 +2025-12-12 11:00:14,241 - app.core.excel.processor - INFO - 从商品名称推断规格: 格力高百醇抹茶慕斯味48g@ -> 48*None, 包装数量=48 +2025-12-12 11:00:14,242 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥饼干经典原味48.5g@ -> 48.5*None, 包装数量=48 +2025-12-12 11:00:14,242 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥饼干浓醇巧克力味48.5g@ -> 48.5*None, 包装数量=48 +2025-12-12 11:00:14,246 - app.core.excel.processor - INFO - 从商品名称推断规格: 法丽兹曲奇芝士巧克力70g@ -> 70*None, 包装数量=70 +2025-12-12 11:00:14,246 - app.core.excel.processor - INFO - 从商品名称推断规格: 法丽兹曲奇香草柠檬巧克力味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:00:14,250 - app.core.excel.processor - INFO - 从商品名称推断规格: 太平梳打饼干奶盐味100g@ -> 100*None, 包装数量=100 +2025-12-12 11:00:14,252 - app.core.excel.processor - INFO - 从商品名称推断规格: 太平梳打饼干海苔味100g@ -> 100*None, 包装数量=100 +2025-12-12 11:00:14,253 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园手指饼115g@ -> 115*None, 包装数量=115 +2025-12-12 11:00:14,255 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点杏仁酥饼146g@ -> 146*None, 包装数量=146 +2025-12-12 11:00:14,257 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点核桃酥饼146g@ -> 146*None, 包装数量=146 +2025-12-12 11:00:14,259 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点香脆腰果饼108g@ -> 108*None, 包装数量=108 +2025-12-12 11:00:14,261 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点香脆杏仁饼108g@ -> 108*None, 包装数量=108 +2025-12-12 11:00:14,262 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点香脆核桃饼108g@ -> 108*None, 包装数量=108 +2025-12-12 11:00:14,264 - app.core.excel.processor - INFO - 从商品名称推断规格: 嘉士利威化饼干草莓味115g@ -> 115*None, 包装数量=115 +2025-12-12 11:00:14,264 - app.core.excel.processor - INFO - 从商品名称推断规格: 亨裕饼朱古力味饼干186g -> 186*None, 包装数量=186 +2025-12-12 11:00:14,267 - app.core.excel.processor - INFO - 从商品名称推断规格: 亨裕早茶饼干110g -> 110*None, 包装数量=110 +2025-12-12 11:00:14,267 - app.core.excel.processor - INFO - 从商品名称推断规格: 趣多多香浓巧克力味85g@ -> 85*None, 包装数量=85 +2025-12-12 11:00:14,270 - app.core.excel.processor - INFO - 从商品名称推断规格: 趣多多缤纷逗巧克力85g@ -> 85*None, 包装数量=85 +2025-12-12 11:00:14,270 - app.core.excel.processor - INFO - 从商品名称推断规格: 米老头雪花煎卷椰奶味150g@ -> 150*None, 包装数量=150 +2025-12-12 11:00:14,273 - app.core.excel.processor - INFO - 从商品名称推断规格: 金富士牛乳饼干香浓牛奶味130g@ -> 130*None, 包装数量=130 +2025-12-12 11:00:14,275 - app.core.excel.processor - INFO - 从商品名称推断规格: 嘉士利果乐果香蓝莓味85g@ -> 85*None, 包装数量=85 +2025-12-12 11:00:14,276 - app.core.excel.processor - INFO - 从商品名称推断规格: 嘉士利果乐果香草莓味85g@ -> 85*None, 包装数量=85 +2025-12-12 11:00:14,277 - app.core.excel.processor - INFO - 从商品名称推断规格: 旺旺仙贝52g@ -> 52*None, 包装数量=52 +2025-12-12 11:00:14,277 - app.core.excel.processor - INFO - 从商品名称推断规格: 旺旺雪饼84g@ -> 84*None, 包装数量=84 +2025-12-12 11:00:14,277 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园蛋黄派230g@ -> 230*None, 包装数量=230 +2025-12-12 11:00:14,281 - app.core.excel.processor - INFO - 从商品名称推断规格: 豆多奇鹌鹑蛋豆干烧烤味22g -> 22*None, 包装数量=22 +2025-12-12 11:00:14,284 - app.core.excel.processor - INFO - 从商品名称推断规格: 劲仔手撕肉干麻辣味10g@ -> 10*None, 包装数量=10 +2025-12-12 11:00:14,286 - app.core.excel.processor - INFO - 从商品名称推断规格: 劲仔手撕肉干香辣味10g@ -> 10*None, 包装数量=10 +2025-12-12 11:00:14,342 - app.core.excel.processor - INFO - 从商品名称推断规格: 登荣香辣爽口鸡23g -> 23*None, 包装数量=23 +2025-12-12 11:00:14,342 - app.core.excel.processor - INFO - 从商品名称推断规格: 德芙脆香米脆米心牛奶巧克力12g@ -> 12*None, 包装数量=12 +2025-12-12 11:00:14,347 - app.core.excel.processor - INFO - 从商品名称推断规格: 味芝元洞庭鱼排香辣味26g -> 26*None, 包装数量=26 +2025-12-12 11:00:14,349 - app.core.excel.processor - INFO - 从商品名称推断规格: 劲仔小鱼麻辣小鱼12g@ -> 12*None, 包装数量=12 +2025-12-12 11:00:14,351 - app.core.excel.processor - INFO - 从商品名称推断规格: 缺牙齿素牛肚香辣味16g -> 16*None, 包装数量=16 +2025-12-12 11:00:14,353 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事青柠味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:00:14,353 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事黄瓜味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:00:14,353 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事德克萨斯烧烤味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:00:14,358 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事薯片经典原味23g(串串装)@ -> 23*None, 包装数量=23 +2025-12-12 11:00:14,359 - app.core.excel.processor - INFO - 提取到 51 个商品信息 +2025-12-12 11:00:14,362 - app.core.excel.processor - INFO - 开始处理51 个产品信息 +2025-12-12 11:00:14,362 - app.core.excel.processor - INFO - 处理商品: 条码=6954767432076, 数量=48.0, 单价=55.68, 是否赠品=False +2025-12-12 11:00:14,366 - app.core.excel.processor - INFO - 发现正常商品:条码6954767432076, 数量=48.0, 单价=55.68 +2025-12-12 11:00:14,366 - app.core.excel.processor - INFO - 处理商品: 条码=6954767433073, 数量=8.0, 单价=44.32, 是否赠品=False +2025-12-12 11:00:14,366 - app.core.excel.processor - INFO - 发现正常商品:条码6954767433073, 数量=8.0, 单价=44.32 +2025-12-12 11:00:14,366 - app.core.excel.processor - INFO - 处理商品: 条码=6901285992933, 数量=40.0, 单价=21.52, 是否赠品=False +2025-12-12 11:00:14,366 - app.core.excel.processor - INFO - 发现正常商品:条码6901285992933, 数量=40.0, 单价=21.52 +2025-12-12 11:00:14,367 - app.core.excel.processor - INFO - 处理商品: 条码=6901285991530, 数量=8.0, 单价=26.08, 是否赠品=False +2025-12-12 11:00:14,368 - app.core.excel.processor - INFO - 发现正常商品:条码6901285991530, 数量=8.0, 单价=26.08 +2025-12-12 11:00:14,368 - app.core.excel.processor - INFO - 处理商品: 条码=6901285991271, 数量=60.0, 单价=24.6, 是否赠品=False +2025-12-12 11:00:14,368 - app.core.excel.processor - INFO - 发现正常商品:条码6901285991271, 数量=60.0, 单价=24.6 +2025-12-12 11:00:14,369 - app.core.excel.processor - INFO - 处理商品: 条码=6920584471017, 数量=12.0, 单价=54.0, 是否赠品=False +2025-12-12 11:00:14,369 - app.core.excel.processor - INFO - 发现正常商品:条码6920584471017, 数量=12.0, 单价=54.0 +2025-12-12 11:00:14,369 - app.core.excel.processor - INFO - 处理商品: 条码=6901668934925, 数量=5.0, 单价=6.5, 是否赠品=False +2025-12-12 11:00:14,369 - app.core.excel.processor - INFO - 发现正常商品:条码6901668934925, 数量=5.0, 单价=6.5 +2025-12-12 11:00:14,369 - app.core.excel.processor - INFO - 处理商品: 条码=6901668054715, 数量=4.0, 单价=3.6, 是否赠品=False +2025-12-12 11:00:14,370 - app.core.excel.processor - INFO - 发现正常商品:条码6901668054715, 数量=4.0, 单价=3.6 +2025-12-12 11:00:14,370 - app.core.excel.processor - INFO - 处理商品: 条码=6901668053916, 数量=3.0, 单价=3.6, 是否赠品=False +2025-12-12 11:00:14,370 - app.core.excel.processor - INFO - 发现正常商品:条码6901668053916, 数量=3.0, 单价=3.6 +2025-12-12 11:00:14,370 - app.core.excel.processor - INFO - 处理商品: 条码=6920907800616, 数量=4.0, 单价=3.0, 是否赠品=False +2025-12-12 11:00:14,371 - app.core.excel.processor - INFO - 发现正常商品:条码6920907800616, 数量=4.0, 单价=3.0 +2025-12-12 11:00:14,371 - app.core.excel.processor - INFO - 处理商品: 条码=6935855700383, 数量=8.0, 单价=38.0, 是否赠品=False +2025-12-12 11:00:14,371 - app.core.excel.processor - INFO - 发现正常商品:条码6935855700383, 数量=8.0, 单价=38.0 +2025-12-12 11:00:14,371 - app.core.excel.processor - INFO - 处理商品: 条码=6925683200957, 数量=8.0, 单价=28.0, 是否赠品=False +2025-12-12 11:00:14,372 - app.core.excel.processor - INFO - 发现正常商品:条码6925683200957, 数量=8.0, 单价=28.0 +2025-12-12 11:00:14,372 - app.core.excel.processor - INFO - 处理商品: 条码=6901845044027, 数量=4.0, 单价=5.55, 是否赠品=False +2025-12-12 11:00:14,372 - app.core.excel.processor - INFO - 发现正常商品:条码6901845044027, 数量=4.0, 单价=5.55 +2025-12-12 11:00:14,372 - app.core.excel.processor - INFO - 处理商品: 条码=6901845040968, 数量=5.0, 单价=5.55, 是否赠品=False +2025-12-12 11:00:14,372 - app.core.excel.processor - INFO - 发现正常商品:条码6901845040968, 数量=5.0, 单价=5.55 +2025-12-12 11:00:14,372 - app.core.excel.processor - INFO - 处理商品: 条码=6901668935649, 数量=6.0, 单价=1.99, 是否赠品=False +2025-12-12 11:00:14,372 - app.core.excel.processor - INFO - 发现正常商品:条码6901668935649, 数量=6.0, 单价=1.99 +2025-12-12 11:00:14,372 - app.core.excel.processor - INFO - 处理商品: 条码=6901668935663, 数量=5.0, 单价=1.99, 是否赠品=False +2025-12-12 11:00:14,372 - app.core.excel.processor - INFO - 发现正常商品:条码6901668935663, 数量=5.0, 单价=1.99 +2025-12-12 11:00:14,372 - app.core.excel.processor - INFO - 处理商品: 条码=6947929617534, 数量=4.0, 单价=2.66, 是否赠品=False +2025-12-12 11:00:14,372 - app.core.excel.processor - INFO - 发现正常商品:条码6947929617534, 数量=4.0, 单价=2.66 +2025-12-12 11:00:14,376 - app.core.excel.processor - INFO - 处理商品: 条码=6947929617138, 数量=4.0, 单价=2.66, 是否赠品=False +2025-12-12 11:00:14,376 - app.core.excel.processor - INFO - 发现正常商品:条码6947929617138, 数量=4.0, 单价=2.66 +2025-12-12 11:00:14,376 - app.core.excel.processor - INFO - 处理商品: 条码=6901668200013, 数量=3.0, 单价=3.5, 是否赠品=False +2025-12-12 11:00:14,376 - app.core.excel.processor - INFO - 发现正常商品:条码6901668200013, 数量=3.0, 单价=3.5 +2025-12-12 11:00:14,376 - app.core.excel.processor - INFO - 处理商品: 条码=6901668200303, 数量=3.0, 单价=3.5, 是否赠品=False +2025-12-12 11:00:14,376 - app.core.excel.processor - INFO - 发现正常商品:条码6901668200303, 数量=3.0, 单价=3.5 +2025-12-12 11:00:14,378 - app.core.excel.processor - INFO - 处理商品: 条码=6911988005229, 数量=4.0, 单价=2.25, 是否赠品=False +2025-12-12 11:00:14,378 - app.core.excel.processor - INFO - 发现正常商品:条码6911988005229, 数量=4.0, 单价=2.25 +2025-12-12 11:00:14,378 - app.core.excel.processor - INFO - 处理商品: 条码=6911988000293, 数量=4.0, 单价=3.8, 是否赠品=False +2025-12-12 11:00:14,379 - app.core.excel.processor - INFO - 发现正常商品:条码6911988000293, 数量=4.0, 单价=3.8 +2025-12-12 11:00:14,379 - app.core.excel.processor - INFO - 处理商品: 条码=6911988000286, 数量=3.0, 单价=3.8, 是否赠品=False +2025-12-12 11:00:14,379 - app.core.excel.processor - INFO - 发现正常商品:条码6911988000286, 数量=3.0, 单价=3.8 +2025-12-12 11:00:14,379 - app.core.excel.processor - INFO - 处理商品: 条码=6911988009777, 数量=3.0, 单价=2.85, 是否赠品=False +2025-12-12 11:00:14,380 - app.core.excel.processor - INFO - 发现正常商品:条码6911988009777, 数量=3.0, 单价=2.85 +2025-12-12 11:00:14,380 - app.core.excel.processor - INFO - 处理商品: 条码=6911988009760, 数量=3.0, 单价=2.85, 是否赠品=False +2025-12-12 11:00:14,380 - app.core.excel.processor - INFO - 发现正常商品:条码6911988009760, 数量=3.0, 单价=2.85 +2025-12-12 11:00:14,381 - app.core.excel.processor - INFO - 处理商品: 条码=6911988009784, 数量=3.0, 单价=2.85, 是否赠品=False +2025-12-12 11:00:14,381 - app.core.excel.processor - INFO - 发现正常商品:条码6911988009784, 数量=3.0, 单价=2.85 +2025-12-12 11:00:14,381 - app.core.excel.processor - INFO - 处理商品: 条码=6901180581683, 数量=2.0, 单价=3.8, 是否赠品=False +2025-12-12 11:00:14,382 - app.core.excel.processor - INFO - 发现正常商品:条码6901180581683, 数量=2.0, 单价=3.8 +2025-12-12 11:00:14,382 - app.core.excel.processor - INFO - 处理商品: 条码=6932024200552, 数量=3.0, 单价=3.0, 是否赠品=False +2025-12-12 11:00:14,382 - app.core.excel.processor - INFO - 发现正常商品:条码6932024200552, 数量=3.0, 单价=3.0 +2025-12-12 11:00:14,382 - app.core.excel.processor - INFO - 处理商品: 条码=6932024200583, 数量=4.0, 单价=1.7, 是否赠品=False +2025-12-12 11:00:14,383 - app.core.excel.processor - INFO - 发现正常商品:条码6932024200583, 数量=4.0, 单价=1.7 +2025-12-12 11:00:14,383 - app.core.excel.processor - INFO - 处理商品: 条码=6901668936714, 数量=4.0, 单价=5.2, 是否赠品=False +2025-12-12 11:00:14,383 - app.core.excel.processor - INFO - 发现正常商品:条码6901668936714, 数量=4.0, 单价=5.2 +2025-12-12 11:00:14,383 - app.core.excel.processor - INFO - 处理商品: 条码=6901668062499, 数量=4.0, 单价=5.2, 是否赠品=False +2025-12-12 11:00:14,383 - app.core.excel.processor - INFO - 发现正常商品:条码6901668062499, 数量=4.0, 单价=5.2 +2025-12-12 11:00:14,383 - app.core.excel.processor - INFO - 处理商品: 条码=6925332600046, 数量=3.0, 单价=3.8, 是否赠品=False +2025-12-12 11:00:14,383 - app.core.excel.processor - INFO - 发现正常商品:条码6925332600046, 数量=3.0, 单价=3.8 +2025-12-12 11:00:14,383 - app.core.excel.processor - INFO - 处理商品: 条码=6921233904955, 数量=4.0, 单价=3.8, 是否赠品=False +2025-12-12 11:00:14,383 - app.core.excel.processor - INFO - 发现正常商品:条码6921233904955, 数量=4.0, 单价=3.8 +2025-12-12 11:00:14,383 - app.core.excel.processor - INFO - 处理商品: 条码=6901180993387, 数量=3.0, 单价=3.0, 是否赠品=False +2025-12-12 11:00:14,383 - app.core.excel.processor - INFO - 发现正常商品:条码6901180993387, 数量=3.0, 单价=3.0 +2025-12-12 11:00:14,383 - app.core.excel.processor - INFO - 处理商品: 条码=6901180993486, 数量=3.0, 单价=3.0, 是否赠品=False +2025-12-12 11:00:14,383 - app.core.excel.processor - INFO - 发现正常商品:条码6901180993486, 数量=3.0, 单价=3.0 +2025-12-12 11:00:14,383 - app.core.excel.processor - INFO - 处理商品: 条码=6920546800046, 数量=5.0, 单价=3.95, 是否赠品=False +2025-12-12 11:00:14,387 - app.core.excel.processor - INFO - 发现正常商品:条码6920546800046, 数量=5.0, 单价=3.95 +2025-12-12 11:00:14,387 - app.core.excel.processor - INFO - 处理商品: 条码=6920546800053, 数量=5.0, 单价=4.5, 是否赠品=False +2025-12-12 11:00:14,388 - app.core.excel.processor - INFO - 发现正常商品:条码6920546800053, 数量=5.0, 单价=4.5 +2025-12-12 11:00:14,388 - app.core.excel.processor - INFO - 处理商品: 条码=6911988006783, 数量=1.0, 单价=5.88, 是否赠品=False +2025-12-12 11:00:14,388 - app.core.excel.processor - INFO - 发现正常商品:条码6911988006783, 数量=1.0, 单价=5.88 +2025-12-12 11:00:14,388 - app.core.excel.processor - INFO - 处理商品: 条码=6971295190759, 数量=20.0, 单价=15.0, 是否赠品=False +2025-12-12 11:00:14,389 - app.core.excel.processor - INFO - 发现正常商品:条码6971295190759, 数量=20.0, 单价=15.0 +2025-12-12 11:00:14,389 - app.core.excel.processor - INFO - 处理商品: 条码=6951957217307, 数量=20.0, 单价=26.6, 是否赠品=False +2025-12-12 11:00:14,389 - app.core.excel.processor - INFO - 发现正常商品:条码6951957217307, 数量=20.0, 单价=26.6 +2025-12-12 11:00:14,389 - app.core.excel.processor - INFO - 处理商品: 条码=6951957215723, 数量=20.0, 单价=26.6, 是否赠品=False +2025-12-12 11:00:14,390 - app.core.excel.processor - INFO - 发现正常商品:条码6951957215723, 数量=20.0, 单价=26.6 +2025-12-12 11:00:14,390 - app.core.excel.processor - INFO - 处理商品: 条码=697753026007269253001004, 数量=50.0, 单价=17.5, 是否赠品=False +2025-12-12 11:00:14,390 - app.core.excel.processor - INFO - 发现正常商品:条码697753026007269253001004, 数量=50.0, 单价=17.5 +2025-12-12 11:00:14,391 - app.core.excel.processor - INFO - 处理商品: 条码=6922170800638, 数量=20.0, 单价=15.0, 是否赠品=False +2025-12-12 11:00:14,391 - app.core.excel.processor - INFO - 发现正常商品:条码6922170800638, 数量=20.0, 单价=15.0 +2025-12-12 11:00:14,391 - app.core.excel.processor - INFO - 处理商品: 条码=69029981, 数量=16.0, 单价=23.2, 是否赠品=False +2025-12-12 11:00:14,392 - app.core.excel.processor - INFO - 发现正常商品:条码69029981, 数量=16.0, 单价=23.2 +2025-12-12 11:00:14,392 - app.core.excel.processor - INFO - 处理商品: 条码=6936869215092, 数量=15.0, 单价=1.5, 是否赠品=False +2025-12-12 11:00:14,392 - app.core.excel.processor - INFO - 发现正常商品:条码6936869215092, 数量=15.0, 单价=1.5 +2025-12-12 11:00:14,392 - app.core.excel.processor - INFO - 处理商品: 条码=6951957205762, 数量=20.0, 单价=14.2, 是否赠品=False +2025-12-12 11:00:14,392 - app.core.excel.processor - INFO - 发现正常商品:条码6951957205762, 数量=20.0, 单价=14.2 +2025-12-12 11:00:14,392 - app.core.excel.processor - INFO - 处理商品: 条码=6976481800078, 数量=30.0, 单价=22.5, 是否赠品=False +2025-12-12 11:00:14,392 - app.core.excel.processor - INFO - 发现正常商品:条码6976481800078, 数量=30.0, 单价=22.5 +2025-12-12 11:00:14,392 - app.core.excel.processor - INFO - 处理商品: 条码=6924743919266, 数量=5.0, 单价=4.79, 是否赠品=False +2025-12-12 11:00:14,392 - app.core.excel.processor - INFO - 发现正常商品:条码6924743919266, 数量=5.0, 单价=4.79 +2025-12-12 11:00:14,392 - app.core.excel.processor - INFO - 处理商品: 条码=6924743919259, 数量=5.0, 单价=4.79, 是否赠品=False +2025-12-12 11:00:14,392 - app.core.excel.processor - INFO - 发现正常商品:条码6924743919259, 数量=5.0, 单价=4.79 +2025-12-12 11:00:14,392 - app.core.excel.processor - INFO - 处理商品: 条码=6924743919228, 数量=3.0, 单价=4.79, 是否赠品=False +2025-12-12 11:00:14,392 - app.core.excel.processor - INFO - 发现正常商品:条码6924743919228, 数量=3.0, 单价=4.79 +2025-12-12 11:00:14,392 - app.core.excel.processor - INFO - 处理商品: 条码=6924743928077, 数量=1.0, 单价=1.35, 是否赠品=False +2025-12-12 11:00:14,396 - app.core.excel.processor - INFO - 发现正常商品:条码6924743928077, 数量=1.0, 单价=1.35 +2025-12-12 11:00:14,396 - app.core.excel.processor - INFO - 分组后共51 个不同条码的商品 +2025-12-12 11:00:14,396 - app.core.excel.processor - INFO - 条码 6954767432076 处理结果:正常商品数量48.0,单价55.68,赠品数量0 +2025-12-12 11:00:14,396 - app.core.excel.processor - INFO - 条码 6954767433073 处理结果:正常商品数量8.0,单价44.32,赠品数量0 +2025-12-12 11:00:14,396 - app.core.excel.processor - INFO - 条码 6901285992933 处理结果:正常商品数量40.0,单价21.52,赠品数量0 +2025-12-12 11:00:14,396 - app.core.excel.processor - INFO - 条码 6901285991530 处理结果:正常商品数量8.0,单价26.08,赠品数量0 +2025-12-12 11:00:14,398 - app.core.excel.processor - INFO - 条码 6901285991271 处理结果:正常商品数量60.0,单价24.6,赠品数量0 +2025-12-12 11:00:14,398 - app.core.excel.processor - INFO - 条码 6920584471017 处理结果:正常商品数量12.0,单价54.0,赠品数量0 +2025-12-12 11:00:14,398 - app.core.excel.processor - INFO - 条码 6901668934925 处理结果:正常商品数量5.0,单价6.5,赠品数量0 +2025-12-12 11:00:14,398 - app.core.excel.processor - INFO - 条码 6901668054715 处理结果:正常商品数量4.0,单价3.6,赠品数量0 +2025-12-12 11:00:14,399 - app.core.excel.processor - INFO - 条码 6901668053916 处理结果:正常商品数量3.0,单价3.6,赠品数量0 +2025-12-12 11:00:14,399 - app.core.excel.processor - INFO - 条码 6920907800616 处理结果:正常商品数量4.0,单价3.0,赠品数量0 +2025-12-12 11:00:14,399 - app.core.excel.processor - INFO - 条码 6935855700383 处理结果:正常商品数量8.0,单价38.0,赠品数量0 +2025-12-12 11:00:14,400 - app.core.excel.processor - INFO - 条码 6925683200957 处理结果:正常商品数量8.0,单价28.0,赠品数量0 +2025-12-12 11:00:14,400 - app.core.excel.processor - INFO - 条码 6901845044027 处理结果:正常商品数量4.0,单价5.55,赠品数量0 +2025-12-12 11:00:14,400 - app.core.excel.processor - INFO - 条码 6901845040968 处理结果:正常商品数量5.0,单价5.55,赠品数量0 +2025-12-12 11:00:14,401 - app.core.excel.processor - INFO - 条码 6901668935649 处理结果:正常商品数量6.0,单价1.99,赠品数量0 +2025-12-12 11:00:14,401 - app.core.excel.processor - INFO - 条码 6901668935663 处理结果:正常商品数量5.0,单价1.99,赠品数量0 +2025-12-12 11:00:14,401 - app.core.excel.processor - INFO - 条码 6947929617534 处理结果:正常商品数量4.0,单价2.66,赠品数量0 +2025-12-12 11:00:14,402 - app.core.excel.processor - INFO - 条码 6947929617138 处理结果:正常商品数量4.0,单价2.66,赠品数量0 +2025-12-12 11:00:14,402 - app.core.excel.processor - INFO - 条码 6901668200013 处理结果:正常商品数量3.0,单价3.5,赠品数量0 +2025-12-12 11:00:14,402 - app.core.excel.processor - INFO - 条码 6901668200303 处理结果:正常商品数量3.0,单价3.5,赠品数量0 +2025-12-12 11:00:14,403 - app.core.excel.processor - INFO - 条码 6911988005229 处理结果:正常商品数量4.0,单价2.25,赠品数量0 +2025-12-12 11:00:14,403 - app.core.excel.processor - INFO - 条码 6911988000293 处理结果:正常商品数量4.0,单价3.8,赠品数量0 +2025-12-12 11:00:14,403 - app.core.excel.processor - INFO - 条码 6911988000286 处理结果:正常商品数量3.0,单价3.8,赠品数量0 +2025-12-12 11:00:14,404 - app.core.excel.processor - INFO - 条码 6911988009777 处理结果:正常商品数量3.0,单价2.85,赠品数量0 +2025-12-12 11:00:14,404 - app.core.excel.processor - INFO - 条码 6911988009760 处理结果:正常商品数量3.0,单价2.85,赠品数量0 +2025-12-12 11:00:14,404 - app.core.excel.processor - INFO - 条码 6911988009784 处理结果:正常商品数量3.0,单价2.85,赠品数量0 +2025-12-12 11:00:14,404 - app.core.excel.processor - INFO - 条码 6901180581683 处理结果:正常商品数量2.0,单价3.8,赠品数量0 +2025-12-12 11:00:14,405 - app.core.excel.processor - INFO - 条码 6932024200552 处理结果:正常商品数量3.0,单价3.0,赠品数量0 +2025-12-12 11:00:14,405 - app.core.excel.processor - INFO - 条码 6932024200583 处理结果:正常商品数量4.0,单价1.7,赠品数量0 +2025-12-12 11:00:14,405 - app.core.excel.processor - INFO - 条码 6901668936714 处理结果:正常商品数量4.0,单价5.2,赠品数量0 +2025-12-12 11:00:14,405 - app.core.excel.processor - INFO - 条码 6901668062499 处理结果:正常商品数量4.0,单价5.2,赠品数量0 +2025-12-12 11:00:14,405 - app.core.excel.processor - INFO - 条码 6925332600046 处理结果:正常商品数量3.0,单价3.8,赠品数量0 +2025-12-12 11:00:14,405 - app.core.excel.processor - INFO - 条码 6921233904955 处理结果:正常商品数量4.0,单价3.8,赠品数量0 +2025-12-12 11:00:14,405 - app.core.excel.processor - INFO - 条码 6901180993387 处理结果:正常商品数量3.0,单价3.0,赠品数量0 +2025-12-12 11:00:14,405 - app.core.excel.processor - INFO - 条码 6901180993486 处理结果:正常商品数量3.0,单价3.0,赠品数量0 +2025-12-12 11:00:14,405 - app.core.excel.processor - INFO - 条码 6920546800046 处理结果:正常商品数量5.0,单价3.95,赠品数量0 +2025-12-12 11:00:14,408 - app.core.excel.processor - INFO - 条码 6920546800053 处理结果:正常商品数量5.0,单价4.5,赠品数量0 +2025-12-12 11:00:14,408 - app.core.excel.processor - INFO - 条码 6911988006783 处理结果:正常商品数量1.0,单价5.88,赠品数量0 +2025-12-12 11:00:14,408 - app.core.excel.processor - INFO - 条码 6971295190759 处理结果:正常商品数量20.0,单价15.0,赠品数量0 +2025-12-12 11:00:14,408 - app.core.excel.processor - INFO - 条码 6951957217307 处理结果:正常商品数量20.0,单价26.6,赠品数量0 +2025-12-12 11:00:14,409 - app.core.excel.processor - INFO - 条码 6951957215723 处理结果:正常商品数量20.0,单价26.6,赠品数量0 +2025-12-12 11:00:14,409 - app.core.excel.processor - INFO - 条码 697753026007269253001004 处理结果:正常商品数量50.0,单价17.5,赠品数量0 +2025-12-12 11:00:14,409 - app.core.excel.processor - INFO - 条码 6922170800638 处理结果:正常商品数量20.0,单价15.0,赠品数量0 +2025-12-12 11:00:14,410 - app.core.excel.processor - INFO - 条码 69029981 处理结果:正常商品数量16.0,单价23.2,赠品数量0 +2025-12-12 11:00:14,410 - app.core.excel.processor - INFO - 条码 6936869215092 处理结果:正常商品数量15.0,单价1.5,赠品数量0 +2025-12-12 11:00:14,410 - app.core.excel.processor - INFO - 条码 6951957205762 处理结果:正常商品数量20.0,单价14.2,赠品数量0 +2025-12-12 11:00:14,410 - app.core.excel.processor - INFO - 条码 6976481800078 处理结果:正常商品数量30.0,单价22.5,赠品数量0 +2025-12-12 11:00:14,411 - app.core.excel.processor - INFO - 条码 6924743919266 处理结果:正常商品数量5.0,单价4.79,赠品数量0 +2025-12-12 11:00:14,411 - app.core.excel.processor - INFO - 条码 6924743919259 处理结果:正常商品数量5.0,单价4.79,赠品数量0 +2025-12-12 11:00:14,411 - app.core.excel.processor - INFO - 条码 6924743919228 处理结果:正常商品数量3.0,单价4.79,赠品数量0 +2025-12-12 11:00:14,411 - app.core.excel.processor - INFO - 条码 6924743928077 处理结果:正常商品数量1.0,单价1.35,赠品数量0 +2025-12-12 11:00:14,420 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_蓉城易购-订单1765440157955.xls +2025-12-12 11:00:14,425 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_蓉城易购-订单1765440157955.xls +2025-12-12 11:13:15,277 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-12-12 11:13:15,277 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-12-12 11:13:15,285 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-12-12 11:13:15,289 - app.core.excel.processor - INFO - 开始处理Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765440157955.xlsx +2025-12-12 11:13:15,299 - app.core.excel.processor - INFO - 成功读取Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765440157955.xlsx, 共 58 行 +2025-12-12 11:13:15,304 - app.core.excel.processor - INFO - 找到可能的表头行: 第1行,评分: 75 +2025-12-12 11:13:15,305 - app.core.excel.processor - INFO - 识别到表头在第 1 行 +2025-12-12 11:13:15,312 - app.core.excel.processor - INFO - 使用表头行重新读取数据,共 57 行有效数据 +2025-12-12 11:13:15,316 - app.core.excel.processor - INFO - 找到部分匹配的条码列: 商品条码(小条码) (包含关键词: 条码) +2025-12-12 11:13:15,316 - app.core.excel.processor - INFO - 使用条码列: 商品条码(小条码) +2025-12-12 11:13:15,317 - app.core.excel.processor - INFO - 找到name列: 商品名称 +2025-12-12 11:13:15,317 - app.core.excel.processor - INFO - 找到quantity列(部分匹配): 订购数量(小单位) +2025-12-12 11:13:15,318 - app.core.excel.processor - INFO - 找到unit列: 单位 +2025-12-12 11:13:15,318 - app.core.excel.processor - INFO - 找到price列(部分匹配): 单价(小单位) +2025-12-12 11:13:15,318 - app.core.excel.processor - INFO - 找到amount列(部分匹配): 优惠后金额(小单位) +2025-12-12 11:13:15,319 - app.core.excel.processor - INFO - 检测到列映射: {'barcode': '商品条码(小条码)', 'name': '商品名称', 'quantity': '订购数量(小单位)', 'unit': '单位', 'price': '单价(小单位)', 'amount': '优惠后金额(小单位)'} +2025-12-12 11:13:15,324 - app.core.excel.processor - INFO - 从商品名称推断规格: 雪碧2L@ -> 2L*1, 包装数量=1 +2025-12-12 11:13:15,325 - app.core.excel.processor - INFO - 根据规格推断单位: 2L*1 -> 单位=件 +2025-12-12 11:13:15,326 - app.core.excel.processor - INFO - 从商品名称推断规格: 怡宝饮用纯净水2.08L@ -> 2.08L*1, 包装数量=1 +2025-12-12 11:13:15,330 - app.core.excel.processor - INFO - 从商品名称推断规格: 怡宝纯净水4.5L@ -> 4.5L*1, 包装数量=1 +2025-12-12 11:13:15,331 - app.core.excel.processor - INFO - 从商品名称推断规格: 怡宝饮用纯净水1.555L@ -> 1.555L*1, 包装数量=1 +2025-12-12 11:13:15,333 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥薄脆酸甜草莓味95g@ -> 95*None, 包装数量=95 +2025-12-12 11:13:15,337 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥杯奥草莓味55g@ -> 55*None, 包装数量=55 +2025-12-12 11:13:15,339 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥杯奥巧克力55g@ -> 55*None, 包装数量=55 +2025-12-12 11:13:15,341 - app.core.excel.processor - INFO - 从商品名称推断规格: 好丽友蛋黄派2P46g@ -> 46*None, 包装数量=46 +2025-12-12 11:13:15,344 - app.core.excel.processor - INFO - 从商品名称推断规格: 都市牧场爽口含片正梅味38g@ -> 38*None, 包装数量=38 +2025-12-12 11:13:15,346 - app.core.excel.processor - INFO - 从商品名称推断规格: 林振合维C果C软糖什锦味68g -> 68*None, 包装数量=68 +2025-12-12 11:13:15,348 - app.core.excel.processor - INFO - 从商品名称推断规格: 格力高百醇柠檬48g@ -> 48*None, 包装数量=48 +2025-12-12 11:13:15,350 - app.core.excel.processor - INFO - 从商品名称推断规格: 格力高百醇抹茶慕斯味48g@ -> 48*None, 包装数量=48 +2025-12-12 11:13:15,353 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥饼干经典原味48.5g@ -> 48.5*None, 包装数量=48 +2025-12-12 11:13:15,355 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥饼干浓醇巧克力味48.5g@ -> 48.5*None, 包装数量=48 +2025-12-12 11:13:15,357 - app.core.excel.processor - INFO - 从商品名称推断规格: 法丽兹曲奇芝士巧克力70g@ -> 70*None, 包装数量=70 +2025-12-12 11:13:15,359 - app.core.excel.processor - INFO - 从商品名称推断规格: 法丽兹曲奇香草柠檬巧克力味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:13:15,361 - app.core.excel.processor - INFO - 从商品名称推断规格: 太平梳打饼干奶盐味100g@ -> 100*None, 包装数量=100 +2025-12-12 11:13:15,363 - app.core.excel.processor - INFO - 从商品名称推断规格: 太平梳打饼干海苔味100g@ -> 100*None, 包装数量=100 +2025-12-12 11:13:15,363 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园手指饼115g@ -> 115*None, 包装数量=115 +2025-12-12 11:13:15,367 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点杏仁酥饼146g@ -> 146*None, 包装数量=146 +2025-12-12 11:13:15,370 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点核桃酥饼146g@ -> 146*None, 包装数量=146 +2025-12-12 11:13:15,372 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点香脆腰果饼108g@ -> 108*None, 包装数量=108 +2025-12-12 11:13:15,373 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点香脆杏仁饼108g@ -> 108*None, 包装数量=108 +2025-12-12 11:13:15,374 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点香脆核桃饼108g@ -> 108*None, 包装数量=108 +2025-12-12 11:13:15,374 - app.core.excel.processor - INFO - 从商品名称推断规格: 嘉士利威化饼干草莓味115g@ -> 115*None, 包装数量=115 +2025-12-12 11:13:15,379 - app.core.excel.processor - INFO - 从商品名称推断规格: 亨裕饼朱古力味饼干186g -> 186*None, 包装数量=186 +2025-12-12 11:13:15,381 - app.core.excel.processor - INFO - 从商品名称推断规格: 亨裕早茶饼干110g -> 110*None, 包装数量=110 +2025-12-12 11:13:15,383 - app.core.excel.processor - INFO - 从商品名称推断规格: 趣多多香浓巧克力味85g@ -> 85*None, 包装数量=85 +2025-12-12 11:13:15,385 - app.core.excel.processor - INFO - 从商品名称推断规格: 趣多多缤纷逗巧克力85g@ -> 85*None, 包装数量=85 +2025-12-12 11:13:15,388 - app.core.excel.processor - INFO - 从商品名称推断规格: 米老头雪花煎卷椰奶味150g@ -> 150*None, 包装数量=150 +2025-12-12 11:13:15,390 - app.core.excel.processor - INFO - 从商品名称推断规格: 金富士牛乳饼干香浓牛奶味130g@ -> 130*None, 包装数量=130 +2025-12-12 11:13:15,392 - app.core.excel.processor - INFO - 从商品名称推断规格: 嘉士利果乐果香蓝莓味85g@ -> 85*None, 包装数量=85 +2025-12-12 11:13:15,393 - app.core.excel.processor - INFO - 从商品名称推断规格: 嘉士利果乐果香草莓味85g@ -> 85*None, 包装数量=85 +2025-12-12 11:13:15,393 - app.core.excel.processor - INFO - 从商品名称推断规格: 旺旺仙贝52g@ -> 52*None, 包装数量=52 +2025-12-12 11:13:15,398 - app.core.excel.processor - INFO - 从商品名称推断规格: 旺旺雪饼84g@ -> 84*None, 包装数量=84 +2025-12-12 11:13:15,400 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园蛋黄派230g@ -> 230*None, 包装数量=230 +2025-12-12 11:13:15,402 - app.core.excel.processor - INFO - 从商品名称推断规格: 豆多奇鹌鹑蛋豆干烧烤味22g -> 22*None, 包装数量=22 +2025-12-12 11:13:15,403 - app.core.excel.processor - INFO - 从商品名称推断规格: 劲仔手撕肉干麻辣味10g@ -> 10*None, 包装数量=10 +2025-12-12 11:13:15,404 - app.core.excel.processor - INFO - 从商品名称推断规格: 劲仔手撕肉干香辣味10g@ -> 10*None, 包装数量=10 +2025-12-12 11:13:15,408 - app.core.excel.processor - INFO - 从商品名称推断规格: 登荣香辣爽口鸡23g -> 23*None, 包装数量=23 +2025-12-12 11:13:15,410 - app.core.excel.processor - INFO - 从商品名称推断规格: 德芙脆香米脆米心牛奶巧克力12g@ -> 12*None, 包装数量=12 +2025-12-12 11:13:15,411 - app.core.excel.processor - INFO - 从商品名称推断规格: 味芝元洞庭鱼排香辣味26g -> 26*None, 包装数量=26 +2025-12-12 11:13:15,413 - app.core.excel.processor - INFO - 从商品名称推断规格: 劲仔小鱼麻辣小鱼12g@ -> 12*None, 包装数量=12 +2025-12-12 11:13:15,413 - app.core.excel.processor - INFO - 从商品名称推断规格: 缺牙齿素牛肚香辣味16g -> 16*None, 包装数量=16 +2025-12-12 11:13:15,419 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事青柠味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:13:15,420 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事黄瓜味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:13:15,422 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事德克萨斯烧烤味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:13:15,423 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事薯片经典原味23g(串串装)@ -> 23*None, 包装数量=23 +2025-12-12 11:13:15,423 - app.core.excel.processor - INFO - 提取到 52 个商品信息 +2025-12-12 11:13:15,427 - app.core.excel.processor - INFO - 开始处理52 个产品信息 +2025-12-12 11:13:15,431 - app.core.excel.processor - INFO - 处理商品: 条码=6954767432076, 数量=48.0, 单价=55.68, 是否赠品=False +2025-12-12 11:13:15,431 - app.core.excel.processor - INFO - 发现正常商品:条码6954767432076, 数量=48.0, 单价=55.68 +2025-12-12 11:13:15,432 - app.core.excel.processor - INFO - 处理商品: 条码=6954767433073, 数量=8.0, 单价=44.32, 是否赠品=False +2025-12-12 11:13:15,432 - app.core.excel.processor - INFO - 发现正常商品:条码6954767433073, 数量=8.0, 单价=44.32 +2025-12-12 11:13:15,432 - app.core.excel.processor - INFO - 处理商品: 条码=6901285992933, 数量=40.0, 单价=21.52, 是否赠品=False +2025-12-12 11:13:15,433 - app.core.excel.processor - INFO - 发现正常商品:条码6901285992933, 数量=40.0, 单价=21.52 +2025-12-12 11:13:15,433 - app.core.excel.processor - INFO - 处理商品: 条码=6901285991530, 数量=8.0, 单价=26.08, 是否赠品=False +2025-12-12 11:13:15,433 - app.core.excel.processor - INFO - 发现正常商品:条码6901285991530, 数量=8.0, 单价=26.08 +2025-12-12 11:13:15,434 - app.core.excel.processor - INFO - 处理商品: 条码=6901285991271, 数量=60.0, 单价=24.6, 是否赠品=False +2025-12-12 11:13:15,434 - app.core.excel.processor - INFO - 发现正常商品:条码6901285991271, 数量=60.0, 单价=24.6 +2025-12-12 11:13:15,434 - app.core.excel.processor - INFO - 处理商品: 条码=6920584471017, 数量=12.0, 单价=54.0, 是否赠品=False +2025-12-12 11:13:15,434 - app.core.excel.processor - INFO - 发现正常商品:条码6920584471017, 数量=12.0, 单价=54.0 +2025-12-12 11:13:15,435 - app.core.excel.processor - INFO - 处理商品: 条码=6901668934925, 数量=5.0, 单价=6.5, 是否赠品=False +2025-12-12 11:13:15,435 - app.core.excel.processor - INFO - 发现正常商品:条码6901668934925, 数量=5.0, 单价=6.5 +2025-12-12 11:13:15,435 - app.core.excel.processor - INFO - 处理商品: 条码=6901668054715, 数量=4.0, 单价=3.6, 是否赠品=False +2025-12-12 11:13:15,435 - app.core.excel.processor - INFO - 发现正常商品:条码6901668054715, 数量=4.0, 单价=3.6 +2025-12-12 11:13:15,436 - app.core.excel.processor - INFO - 处理商品: 条码=6901668053916, 数量=3.0, 单价=3.6, 是否赠品=False +2025-12-12 11:13:15,436 - app.core.excel.processor - INFO - 发现正常商品:条码6901668053916, 数量=3.0, 单价=3.6 +2025-12-12 11:13:15,436 - app.core.excel.processor - INFO - 处理商品: 条码=6920907800616, 数量=4.0, 单价=3.0, 是否赠品=False +2025-12-12 11:13:15,437 - app.core.excel.processor - INFO - 发现正常商品:条码6920907800616, 数量=4.0, 单价=3.0 +2025-12-12 11:13:15,438 - app.core.excel.processor - INFO - 处理商品: 条码=6935855700383, 数量=8.0, 单价=38.0, 是否赠品=False +2025-12-12 11:13:15,438 - app.core.excel.processor - INFO - 发现正常商品:条码6935855700383, 数量=8.0, 单价=38.0 +2025-12-12 11:13:15,438 - app.core.excel.processor - INFO - 处理商品: 条码=6925683200957, 数量=8.0, 单价=28.0, 是否赠品=False +2025-12-12 11:13:15,438 - app.core.excel.processor - INFO - 发现正常商品:条码6925683200957, 数量=8.0, 单价=28.0 +2025-12-12 11:13:15,438 - app.core.excel.processor - INFO - 处理商品: 条码=6901845044027, 数量=4.0, 单价=5.55, 是否赠品=False +2025-12-12 11:13:15,439 - app.core.excel.processor - INFO - 发现正常商品:条码6901845044027, 数量=4.0, 单价=5.55 +2025-12-12 11:13:15,439 - app.core.excel.processor - INFO - 处理商品: 条码=6901845040968, 数量=5.0, 单价=5.55, 是否赠品=False +2025-12-12 11:13:15,439 - app.core.excel.processor - INFO - 发现正常商品:条码6901845040968, 数量=5.0, 单价=5.55 +2025-12-12 11:13:15,439 - app.core.excel.processor - INFO - 处理商品: 条码=6901668935649, 数量=6.0, 单价=1.99, 是否赠品=False +2025-12-12 11:13:15,439 - app.core.excel.processor - INFO - 发现正常商品:条码6901668935649, 数量=6.0, 单价=1.99 +2025-12-12 11:13:15,440 - app.core.excel.processor - INFO - 处理商品: 条码=6901668935663, 数量=5.0, 单价=1.99, 是否赠品=False +2025-12-12 11:13:15,440 - app.core.excel.processor - INFO - 发现正常商品:条码6901668935663, 数量=5.0, 单价=1.99 +2025-12-12 11:13:15,440 - app.core.excel.processor - INFO - 处理商品: 条码=6947929617534, 数量=4.0, 单价=2.66, 是否赠品=False +2025-12-12 11:13:15,441 - app.core.excel.processor - INFO - 发现正常商品:条码6947929617534, 数量=4.0, 单价=2.66 +2025-12-12 11:13:15,442 - app.core.excel.processor - INFO - 处理商品: 条码=6947929617138, 数量=4.0, 单价=2.66, 是否赠品=False +2025-12-12 11:13:15,442 - app.core.excel.processor - INFO - 发现正常商品:条码6947929617138, 数量=4.0, 单价=2.66 +2025-12-12 11:13:15,442 - app.core.excel.processor - INFO - 处理商品: 条码=6901668200013, 数量=3.0, 单价=3.5, 是否赠品=False +2025-12-12 11:13:15,442 - app.core.excel.processor - INFO - 发现正常商品:条码6901668200013, 数量=3.0, 单价=3.5 +2025-12-12 11:13:15,442 - app.core.excel.processor - INFO - 处理商品: 条码=6901668200303, 数量=3.0, 单价=3.5, 是否赠品=False +2025-12-12 11:13:15,442 - app.core.excel.processor - INFO - 发现正常商品:条码6901668200303, 数量=3.0, 单价=3.5 +2025-12-12 11:13:15,442 - app.core.excel.processor - INFO - 处理商品: 条码=6911988005229, 数量=4.0, 单价=2.25, 是否赠品=False +2025-12-12 11:13:15,442 - app.core.excel.processor - INFO - 发现正常商品:条码6911988005229, 数量=4.0, 单价=2.25 +2025-12-12 11:13:15,442 - app.core.excel.processor - INFO - 处理商品: 条码=6911988000293, 数量=4.0, 单价=3.8, 是否赠品=False +2025-12-12 11:13:15,442 - app.core.excel.processor - INFO - 发现正常商品:条码6911988000293, 数量=4.0, 单价=3.8 +2025-12-12 11:13:15,442 - app.core.excel.processor - INFO - 处理商品: 条码=6911988000286, 数量=3.0, 单价=3.8, 是否赠品=False +2025-12-12 11:13:15,442 - app.core.excel.processor - INFO - 发现正常商品:条码6911988000286, 数量=3.0, 单价=3.8 +2025-12-12 11:13:15,442 - app.core.excel.processor - INFO - 处理商品: 条码=6911988009777, 数量=3.0, 单价=2.85, 是否赠品=False +2025-12-12 11:13:15,442 - app.core.excel.processor - INFO - 发现正常商品:条码6911988009777, 数量=3.0, 单价=2.85 +2025-12-12 11:13:15,442 - app.core.excel.processor - INFO - 处理商品: 条码=6911988009760, 数量=3.0, 单价=2.85, 是否赠品=False +2025-12-12 11:13:15,446 - app.core.excel.processor - INFO - 发现正常商品:条码6911988009760, 数量=3.0, 单价=2.85 +2025-12-12 11:13:15,446 - app.core.excel.processor - INFO - 处理商品: 条码=6911988009784, 数量=3.0, 单价=2.85, 是否赠品=False +2025-12-12 11:13:15,446 - app.core.excel.processor - INFO - 发现正常商品:条码6911988009784, 数量=3.0, 单价=2.85 +2025-12-12 11:13:15,447 - app.core.excel.processor - INFO - 处理商品: 条码=6901180581683, 数量=2.0, 单价=3.8, 是否赠品=False +2025-12-12 11:13:15,447 - app.core.excel.processor - INFO - 发现正常商品:条码6901180581683, 数量=2.0, 单价=3.8 +2025-12-12 11:13:15,447 - app.core.excel.processor - INFO - 处理商品: 条码=6932024200552, 数量=3.0, 单价=3.0, 是否赠品=False +2025-12-12 11:13:15,447 - app.core.excel.processor - INFO - 发现正常商品:条码6932024200552, 数量=3.0, 单价=3.0 +2025-12-12 11:13:15,448 - app.core.excel.processor - INFO - 处理商品: 条码=6932024200583, 数量=4.0, 单价=1.7, 是否赠品=False +2025-12-12 11:13:15,448 - app.core.excel.processor - INFO - 发现正常商品:条码6932024200583, 数量=4.0, 单价=1.7 +2025-12-12 11:13:15,448 - app.core.excel.processor - INFO - 处理商品: 条码=6901668936714, 数量=4.0, 单价=5.2, 是否赠品=False +2025-12-12 11:13:15,448 - app.core.excel.processor - INFO - 发现正常商品:条码6901668936714, 数量=4.0, 单价=5.2 +2025-12-12 11:13:15,449 - app.core.excel.processor - INFO - 处理商品: 条码=6901668062499, 数量=4.0, 单价=5.2, 是否赠品=False +2025-12-12 11:13:15,449 - app.core.excel.processor - INFO - 发现正常商品:条码6901668062499, 数量=4.0, 单价=5.2 +2025-12-12 11:13:15,449 - app.core.excel.processor - INFO - 处理商品: 条码=6925332600046, 数量=3.0, 单价=3.8, 是否赠品=False +2025-12-12 11:13:15,449 - app.core.excel.processor - INFO - 发现正常商品:条码6925332600046, 数量=3.0, 单价=3.8 +2025-12-12 11:13:15,450 - app.core.excel.processor - INFO - 处理商品: 条码=6921233904955, 数量=4.0, 单价=3.8, 是否赠品=False +2025-12-12 11:13:15,450 - app.core.excel.processor - INFO - 发现正常商品:条码6921233904955, 数量=4.0, 单价=3.8 +2025-12-12 11:13:15,450 - app.core.excel.processor - INFO - 处理商品: 条码=6901180993387, 数量=3.0, 单价=3.0, 是否赠品=False +2025-12-12 11:13:15,450 - app.core.excel.processor - INFO - 发现正常商品:条码6901180993387, 数量=3.0, 单价=3.0 +2025-12-12 11:13:15,451 - app.core.excel.processor - INFO - 处理商品: 条码=6901180993486, 数量=3.0, 单价=3.0, 是否赠品=False +2025-12-12 11:13:15,451 - app.core.excel.processor - INFO - 发现正常商品:条码6901180993486, 数量=3.0, 单价=3.0 +2025-12-12 11:13:15,451 - app.core.excel.processor - INFO - 处理商品: 条码=6920546800046, 数量=5.0, 单价=3.95, 是否赠品=False +2025-12-12 11:13:15,452 - app.core.excel.processor - INFO - 发现正常商品:条码6920546800046, 数量=5.0, 单价=3.95 +2025-12-12 11:13:15,453 - app.core.excel.processor - INFO - 处理商品: 条码=6920546800053, 数量=5.0, 单价=4.5, 是否赠品=False +2025-12-12 11:13:15,453 - app.core.excel.processor - INFO - 发现正常商品:条码6920546800053, 数量=5.0, 单价=4.5 +2025-12-12 11:13:15,453 - app.core.excel.processor - INFO - 处理商品: 条码=6911988006783, 数量=1.0, 单价=5.88, 是否赠品=False +2025-12-12 11:13:15,453 - app.core.excel.processor - INFO - 发现正常商品:条码6911988006783, 数量=1.0, 单价=5.88 +2025-12-12 11:13:15,453 - app.core.excel.processor - INFO - 处理商品: 条码=6971295190759, 数量=20.0, 单价=15.0, 是否赠品=False +2025-12-12 11:13:15,453 - app.core.excel.processor - INFO - 发现正常商品:条码6971295190759, 数量=20.0, 单价=15.0 +2025-12-12 11:13:15,453 - app.core.excel.processor - INFO - 处理商品: 条码=6951957217307, 数量=20.0, 单价=26.6, 是否赠品=False +2025-12-12 11:13:15,453 - app.core.excel.processor - INFO - 发现正常商品:条码6951957217307, 数量=20.0, 单价=26.6 +2025-12-12 11:13:15,453 - app.core.excel.processor - INFO - 处理商品: 条码=6951957215723, 数量=20.0, 单价=26.6, 是否赠品=False +2025-12-12 11:13:15,456 - app.core.excel.processor - INFO - 发现正常商品:条码6951957215723, 数量=20.0, 单价=26.6 +2025-12-12 11:13:15,456 - app.core.excel.processor - INFO - 处理商品: 条码=6977530260072, 数量=25.0, 单价=17.5, 是否赠品=False +2025-12-12 11:13:15,456 - app.core.excel.processor - INFO - 发现正常商品:条码6977530260072, 数量=25.0, 单价=17.5 +2025-12-12 11:13:15,456 - app.core.excel.processor - INFO - 处理商品: 条码=6925300100400, 数量=25.0, 单价=17.5, 是否赠品=False +2025-12-12 11:13:15,456 - app.core.excel.processor - INFO - 发现正常商品:条码6925300100400, 数量=25.0, 单价=17.5 +2025-12-12 11:13:15,456 - app.core.excel.processor - INFO - 处理商品: 条码=6922170800638, 数量=20.0, 单价=15.0, 是否赠品=False +2025-12-12 11:13:15,457 - app.core.excel.processor - INFO - 发现正常商品:条码6922170800638, 数量=20.0, 单价=15.0 +2025-12-12 11:13:15,457 - app.core.excel.processor - INFO - 处理商品: 条码=690299810, 数量=16.0, 单价=23.2, 是否赠品=False +2025-12-12 11:13:15,457 - app.core.excel.processor - INFO - 发现正常商品:条码690299810, 数量=16.0, 单价=23.2 +2025-12-12 11:13:15,457 - app.core.excel.processor - INFO - 处理商品: 条码=6936869215092, 数量=15.0, 单价=1.5, 是否赠品=False +2025-12-12 11:13:15,458 - app.core.excel.processor - INFO - 发现正常商品:条码6936869215092, 数量=15.0, 单价=1.5 +2025-12-12 11:13:15,458 - app.core.excel.processor - INFO - 处理商品: 条码=6951957205762, 数量=20.0, 单价=14.2, 是否赠品=False +2025-12-12 11:13:15,458 - app.core.excel.processor - INFO - 发现正常商品:条码6951957205762, 数量=20.0, 单价=14.2 +2025-12-12 11:13:15,458 - app.core.excel.processor - INFO - 处理商品: 条码=6976481800078, 数量=30.0, 单价=22.5, 是否赠品=False +2025-12-12 11:13:15,459 - app.core.excel.processor - INFO - 发现正常商品:条码6976481800078, 数量=30.0, 单价=22.5 +2025-12-12 11:13:15,459 - app.core.excel.processor - INFO - 处理商品: 条码=6924743919266, 数量=5.0, 单价=4.79, 是否赠品=False +2025-12-12 11:13:15,459 - app.core.excel.processor - INFO - 发现正常商品:条码6924743919266, 数量=5.0, 单价=4.79 +2025-12-12 11:13:15,459 - app.core.excel.processor - INFO - 处理商品: 条码=6924743919259, 数量=5.0, 单价=4.79, 是否赠品=False +2025-12-12 11:13:15,460 - app.core.excel.processor - INFO - 发现正常商品:条码6924743919259, 数量=5.0, 单价=4.79 +2025-12-12 11:13:15,460 - app.core.excel.processor - INFO - 处理商品: 条码=6924743919228, 数量=3.0, 单价=4.79, 是否赠品=False +2025-12-12 11:13:15,460 - app.core.excel.processor - INFO - 发现正常商品:条码6924743919228, 数量=3.0, 单价=4.79 +2025-12-12 11:13:15,460 - app.core.excel.processor - INFO - 处理商品: 条码=6924743928077, 数量=1.0, 单价=1.35, 是否赠品=False +2025-12-12 11:13:15,460 - app.core.excel.processor - INFO - 发现正常商品:条码6924743928077, 数量=1.0, 单价=1.35 +2025-12-12 11:13:15,461 - app.core.excel.processor - INFO - 分组后共52 个不同条码的商品 +2025-12-12 11:13:15,461 - app.core.excel.processor - INFO - 条码 6954767432076 处理结果:正常商品数量48.0,单价55.68,赠品数量0 +2025-12-12 11:13:15,462 - app.core.excel.processor - INFO - 条码 6954767433073 处理结果:正常商品数量8.0,单价44.32,赠品数量0 +2025-12-12 11:13:15,462 - app.core.excel.processor - INFO - 条码 6901285992933 处理结果:正常商品数量40.0,单价21.52,赠品数量0 +2025-12-12 11:13:15,462 - app.core.excel.processor - INFO - 条码 6901285991530 处理结果:正常商品数量8.0,单价26.08,赠品数量0 +2025-12-12 11:13:15,462 - app.core.excel.processor - INFO - 条码 6901285991271 处理结果:正常商品数量60.0,单价24.6,赠品数量0 +2025-12-12 11:13:15,462 - app.core.excel.processor - INFO - 条码 6920584471017 处理结果:正常商品数量12.0,单价54.0,赠品数量0 +2025-12-12 11:13:15,462 - app.core.excel.processor - INFO - 条码 6901668934925 处理结果:正常商品数量5.0,单价6.5,赠品数量0 +2025-12-12 11:13:15,462 - app.core.excel.processor - INFO - 条码 6901668054715 处理结果:正常商品数量4.0,单价3.6,赠品数量0 +2025-12-12 11:13:15,462 - app.core.excel.processor - INFO - 条码 6901668053916 处理结果:正常商品数量3.0,单价3.6,赠品数量0 +2025-12-12 11:13:15,462 - app.core.excel.processor - INFO - 条码 6920907800616 处理结果:正常商品数量4.0,单价3.0,赠品数量0 +2025-12-12 11:13:15,462 - app.core.excel.processor - INFO - 条码 6935855700383 处理结果:正常商品数量8.0,单价38.0,赠品数量0 +2025-12-12 11:13:15,462 - app.core.excel.processor - INFO - 条码 6925683200957 处理结果:正常商品数量8.0,单价28.0,赠品数量0 +2025-12-12 11:13:15,462 - app.core.excel.processor - INFO - 条码 6901845044027 处理结果:正常商品数量4.0,单价5.55,赠品数量0 +2025-12-12 11:13:15,462 - app.core.excel.processor - INFO - 条码 6901845040968 处理结果:正常商品数量5.0,单价5.55,赠品数量0 +2025-12-12 11:13:15,462 - app.core.excel.processor - INFO - 条码 6901668935649 处理结果:正常商品数量6.0,单价1.99,赠品数量0 +2025-12-12 11:13:15,462 - app.core.excel.processor - INFO - 条码 6901668935663 处理结果:正常商品数量5.0,单价1.99,赠品数量0 +2025-12-12 11:13:15,466 - app.core.excel.processor - INFO - 条码 6947929617534 处理结果:正常商品数量4.0,单价2.66,赠品数量0 +2025-12-12 11:13:15,466 - app.core.excel.processor - INFO - 条码 6947929617138 处理结果:正常商品数量4.0,单价2.66,赠品数量0 +2025-12-12 11:13:15,466 - app.core.excel.processor - INFO - 条码 6901668200013 处理结果:正常商品数量3.0,单价3.5,赠品数量0 +2025-12-12 11:13:15,466 - app.core.excel.processor - INFO - 条码 6901668200303 处理结果:正常商品数量3.0,单价3.5,赠品数量0 +2025-12-12 11:13:15,466 - app.core.excel.processor - INFO - 条码 6911988005229 处理结果:正常商品数量4.0,单价2.25,赠品数量0 +2025-12-12 11:13:15,466 - app.core.excel.processor - INFO - 条码 6911988000293 处理结果:正常商品数量4.0,单价3.8,赠品数量0 +2025-12-12 11:13:15,467 - app.core.excel.processor - INFO - 条码 6911988000286 处理结果:正常商品数量3.0,单价3.8,赠品数量0 +2025-12-12 11:13:15,467 - app.core.excel.processor - INFO - 条码 6911988009777 处理结果:正常商品数量3.0,单价2.85,赠品数量0 +2025-12-12 11:13:15,467 - app.core.excel.processor - INFO - 条码 6911988009760 处理结果:正常商品数量3.0,单价2.85,赠品数量0 +2025-12-12 11:13:15,467 - app.core.excel.processor - INFO - 条码 6911988009784 处理结果:正常商品数量3.0,单价2.85,赠品数量0 +2025-12-12 11:13:15,468 - app.core.excel.processor - INFO - 条码 6901180581683 处理结果:正常商品数量2.0,单价3.8,赠品数量0 +2025-12-12 11:13:15,468 - app.core.excel.processor - INFO - 条码 6932024200552 处理结果:正常商品数量3.0,单价3.0,赠品数量0 +2025-12-12 11:13:15,468 - app.core.excel.processor - INFO - 条码 6932024200583 处理结果:正常商品数量4.0,单价1.7,赠品数量0 +2025-12-12 11:13:15,468 - app.core.excel.processor - INFO - 条码 6901668936714 处理结果:正常商品数量4.0,单价5.2,赠品数量0 +2025-12-12 11:13:15,468 - app.core.excel.processor - INFO - 条码 6901668062499 处理结果:正常商品数量4.0,单价5.2,赠品数量0 +2025-12-12 11:13:15,469 - app.core.excel.processor - INFO - 条码 6925332600046 处理结果:正常商品数量3.0,单价3.8,赠品数量0 +2025-12-12 11:13:15,469 - app.core.excel.processor - INFO - 条码 6921233904955 处理结果:正常商品数量4.0,单价3.8,赠品数量0 +2025-12-12 11:13:15,469 - app.core.excel.processor - INFO - 条码 6901180993387 处理结果:正常商品数量3.0,单价3.0,赠品数量0 +2025-12-12 11:13:15,469 - app.core.excel.processor - INFO - 条码 6901180993486 处理结果:正常商品数量3.0,单价3.0,赠品数量0 +2025-12-12 11:13:15,470 - app.core.excel.processor - INFO - 条码 6920546800046 处理结果:正常商品数量5.0,单价3.95,赠品数量0 +2025-12-12 11:13:15,470 - app.core.excel.processor - INFO - 条码 6920546800053 处理结果:正常商品数量5.0,单价4.5,赠品数量0 +2025-12-12 11:13:15,470 - app.core.excel.processor - INFO - 条码 6911988006783 处理结果:正常商品数量1.0,单价5.88,赠品数量0 +2025-12-12 11:13:15,470 - app.core.excel.processor - INFO - 条码 6971295190759 处理结果:正常商品数量20.0,单价15.0,赠品数量0 +2025-12-12 11:13:15,470 - app.core.excel.processor - INFO - 条码 6951957217307 处理结果:正常商品数量20.0,单价26.6,赠品数量0 +2025-12-12 11:13:15,470 - app.core.excel.processor - INFO - 条码 6951957215723 处理结果:正常商品数量20.0,单价26.6,赠品数量0 +2025-12-12 11:13:15,470 - app.core.excel.processor - INFO - 条码 6977530260072 处理结果:正常商品数量25.0,单价17.5,赠品数量0 +2025-12-12 11:13:15,472 - app.core.excel.processor - INFO - 条码 6925300100400 处理结果:正常商品数量25.0,单价17.5,赠品数量0 +2025-12-12 11:13:15,472 - app.core.excel.processor - INFO - 条码 6922170800638 处理结果:正常商品数量20.0,单价15.0,赠品数量0 +2025-12-12 11:13:15,472 - app.core.excel.processor - INFO - 条码 690299810 处理结果:正常商品数量16.0,单价23.2,赠品数量0 +2025-12-12 11:13:15,472 - app.core.excel.processor - INFO - 条码 6936869215092 处理结果:正常商品数量15.0,单价1.5,赠品数量0 +2025-12-12 11:13:15,473 - app.core.excel.processor - INFO - 条码 6951957205762 处理结果:正常商品数量20.0,单价14.2,赠品数量0 +2025-12-12 11:13:15,473 - app.core.excel.processor - INFO - 条码 6976481800078 处理结果:正常商品数量30.0,单价22.5,赠品数量0 +2025-12-12 11:13:15,473 - app.core.excel.processor - INFO - 条码 6924743919266 处理结果:正常商品数量5.0,单价4.79,赠品数量0 +2025-12-12 11:13:15,473 - app.core.excel.processor - INFO - 条码 6924743919259 处理结果:正常商品数量5.0,单价4.79,赠品数量0 +2025-12-12 11:13:15,474 - app.core.excel.processor - INFO - 条码 6924743919228 处理结果:正常商品数量3.0,单价4.79,赠品数量0 +2025-12-12 11:13:15,474 - app.core.excel.processor - INFO - 条码 6924743928077 处理结果:正常商品数量1.0,单价1.35,赠品数量0 +2025-12-12 11:13:15,477 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_蓉城易购-订单1765440157955.xls +2025-12-12 11:13:15,478 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_蓉城易购-订单1765440157955.xls +2025-12-12 11:22:25,990 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-12-12 11:22:25,990 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-12-12 11:22:25,990 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-12-12 11:22:25,990 - app.core.excel.processor - INFO - 开始处理Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765440157955.xlsx +2025-12-12 11:22:26,003 - app.core.excel.processor - INFO - 成功读取Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765440157955.xlsx, 共 57 行 +2025-12-12 11:22:26,006 - app.core.excel.processor - INFO - 找到可能的表头行: 第1行,评分: 75 +2025-12-12 11:22:26,006 - app.core.excel.processor - INFO - 识别到表头在第 1 行 +2025-12-12 11:22:26,018 - app.core.excel.processor - INFO - 使用表头行重新读取数据,共 56 行有效数据 +2025-12-12 11:22:26,018 - app.core.excel.processor - INFO - 找到部分匹配的条码列: 商品条码(小条码) (包含关键词: 条码) +2025-12-12 11:22:26,018 - app.core.excel.processor - INFO - 使用条码列: 商品条码(小条码) +2025-12-12 11:22:26,019 - app.core.excel.processor - INFO - 找到name列: 商品名称 +2025-12-12 11:22:26,019 - app.core.excel.processor - INFO - 找到quantity列(部分匹配): 订购数量(小单位) +2025-12-12 11:22:26,020 - app.core.excel.processor - INFO - 找到unit列: 单位 +2025-12-12 11:22:26,020 - app.core.excel.processor - INFO - 找到price列(部分匹配): 单价(小单位) +2025-12-12 11:22:26,020 - app.core.excel.processor - INFO - 找到amount列(部分匹配): 优惠后金额(小单位) +2025-12-12 11:22:26,021 - app.core.excel.processor - INFO - 检测到列映射: {'barcode': '商品条码(小条码)', 'name': '商品名称', 'quantity': '订购数量(小单位)', 'unit': '单位', 'price': '单价(小单位)', 'amount': '优惠后金额(小单位)'} +2025-12-12 11:22:26,026 - app.core.excel.processor - INFO - 从商品名称推断规格: 雪碧2L@ -> 2L*1, 包装数量=1 +2025-12-12 11:22:26,026 - app.core.excel.processor - INFO - 根据规格推断单位: 2L*1 -> 单位=件 +2025-12-12 11:22:26,028 - app.core.excel.processor - INFO - 从商品名称推断规格: 怡宝饮用纯净水2.08L@ -> 2.08L*1, 包装数量=1 +2025-12-12 11:22:26,031 - app.core.excel.processor - INFO - 从商品名称推断规格: 怡宝纯净水4.5L@ -> 4.5L*1, 包装数量=1 +2025-12-12 11:22:26,033 - app.core.excel.processor - INFO - 从商品名称推断规格: 怡宝饮用纯净水1.555L@ -> 1.555L*1, 包装数量=1 +2025-12-12 11:22:26,035 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥薄脆酸甜草莓味95g@ -> 95*None, 包装数量=95 +2025-12-12 11:22:26,037 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥杯奥草莓味55g@ -> 55*None, 包装数量=55 +2025-12-12 11:22:26,040 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥杯奥巧克力55g@ -> 55*None, 包装数量=55 +2025-12-12 11:22:26,042 - app.core.excel.processor - INFO - 从商品名称推断规格: 好丽友蛋黄派2P46g@ -> 46*None, 包装数量=46 +2025-12-12 11:22:26,043 - app.core.excel.processor - INFO - 从商品名称推断规格: 都市牧场爽口含片正梅味38g@ -> 38*None, 包装数量=38 +2025-12-12 11:22:26,046 - app.core.excel.processor - INFO - 从商品名称推断规格: 林振合维C果C软糖什锦味68g -> 68*None, 包装数量=68 +2025-12-12 11:22:26,048 - app.core.excel.processor - INFO - 从商品名称推断规格: 格力高百醇柠檬48g@ -> 48*None, 包装数量=48 +2025-12-12 11:22:26,050 - app.core.excel.processor - INFO - 从商品名称推断规格: 格力高百醇抹茶慕斯味48g@ -> 48*None, 包装数量=48 +2025-12-12 11:22:26,052 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥饼干经典原味48.5g@ -> 48.5*None, 包装数量=48 +2025-12-12 11:22:26,052 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥饼干浓醇巧克力味48.5g@ -> 48.5*None, 包装数量=48 +2025-12-12 11:22:26,056 - app.core.excel.processor - INFO - 从商品名称推断规格: 法丽兹曲奇芝士巧克力70g@ -> 70*None, 包装数量=70 +2025-12-12 11:22:26,058 - app.core.excel.processor - INFO - 从商品名称推断规格: 法丽兹曲奇香草柠檬巧克力味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:22:26,060 - app.core.excel.processor - INFO - 从商品名称推断规格: 太平梳打饼干奶盐味100g@ -> 100*None, 包装数量=100 +2025-12-12 11:22:26,061 - app.core.excel.processor - INFO - 从商品名称推断规格: 太平梳打饼干海苔味100g@ -> 100*None, 包装数量=100 +2025-12-12 11:22:26,065 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园手指饼115g@ -> 115*None, 包装数量=115 +2025-12-12 11:22:26,066 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点杏仁酥饼146g@ -> 146*None, 包装数量=146 +2025-12-12 11:22:26,068 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点核桃酥饼146g@ -> 146*None, 包装数量=146 +2025-12-12 11:22:26,070 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点香脆腰果饼108g@ -> 108*None, 包装数量=108 +2025-12-12 11:22:26,072 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点香脆杏仁饼108g@ -> 108*None, 包装数量=108 +2025-12-12 11:22:26,073 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点香脆核桃饼108g@ -> 108*None, 包装数量=108 +2025-12-12 11:22:26,075 - app.core.excel.processor - INFO - 从商品名称推断规格: 嘉士利威化饼干草莓味115g@ -> 115*None, 包装数量=115 +2025-12-12 11:22:26,075 - app.core.excel.processor - INFO - 从商品名称推断规格: 亨裕饼朱古力味饼干186g -> 186*None, 包装数量=186 +2025-12-12 11:22:26,079 - app.core.excel.processor - INFO - 从商品名称推断规格: 亨裕早茶饼干110g -> 110*None, 包装数量=110 +2025-12-12 11:22:26,080 - app.core.excel.processor - INFO - 从商品名称推断规格: 趣多多香浓巧克力味85g@ -> 85*None, 包装数量=85 +2025-12-12 11:22:26,081 - app.core.excel.processor - INFO - 从商品名称推断规格: 趣多多缤纷逗巧克力85g@ -> 85*None, 包装数量=85 +2025-12-12 11:22:26,083 - app.core.excel.processor - INFO - 从商品名称推断规格: 米老头雪花煎卷椰奶味150g@ -> 150*None, 包装数量=150 +2025-12-12 11:22:26,083 - app.core.excel.processor - INFO - 从商品名称推断规格: 金富士牛乳饼干香浓牛奶味130g@ -> 130*None, 包装数量=130 +2025-12-12 11:22:26,087 - app.core.excel.processor - INFO - 从商品名称推断规格: 嘉士利果乐果香蓝莓味85g@ -> 85*None, 包装数量=85 +2025-12-12 11:22:26,089 - app.core.excel.processor - INFO - 从商品名称推断规格: 嘉士利果乐果香草莓味85g@ -> 85*None, 包装数量=85 +2025-12-12 11:22:26,091 - app.core.excel.processor - INFO - 从商品名称推断规格: 旺旺仙贝52g@ -> 52*None, 包装数量=52 +2025-12-12 11:22:26,091 - app.core.excel.processor - INFO - 从商品名称推断规格: 旺旺雪饼84g@ -> 84*None, 包装数量=84 +2025-12-12 11:22:26,095 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园蛋黄派230g@ -> 230*None, 包装数量=230 +2025-12-12 11:22:26,097 - app.core.excel.processor - INFO - 从商品名称推断规格: 豆多奇鹌鹑蛋豆干烧烤味22g -> 22*None, 包装数量=22 +2025-12-12 11:22:26,099 - app.core.excel.processor - INFO - 从商品名称推断规格: 劲仔手撕肉干麻辣味10g@ -> 10*None, 包装数量=10 +2025-12-12 11:22:26,100 - app.core.excel.processor - INFO - 从商品名称推断规格: 劲仔手撕肉干香辣味10g@ -> 10*None, 包装数量=10 +2025-12-12 11:22:26,100 - app.core.excel.processor - INFO - 从商品名称推断规格: 登荣香辣爽口鸡23g -> 23*None, 包装数量=23 +2025-12-12 11:22:26,106 - app.core.excel.processor - INFO - 从商品名称推断规格: 德芙脆香米脆米心牛奶巧克力12g@ -> 12*None, 包装数量=12 +2025-12-12 11:22:26,107 - app.core.excel.processor - INFO - 从商品名称推断规格: 味芝元洞庭鱼排香辣味26g -> 26*None, 包装数量=26 +2025-12-12 11:22:26,109 - app.core.excel.processor - INFO - 从商品名称推断规格: 劲仔小鱼麻辣小鱼12g@ -> 12*None, 包装数量=12 +2025-12-12 11:22:26,110 - app.core.excel.processor - INFO - 从商品名称推断规格: 缺牙齿素牛肚香辣味16g -> 16*None, 包装数量=16 +2025-12-12 11:22:26,111 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事青柠味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:22:26,111 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事黄瓜味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:22:26,116 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事德克萨斯烧烤味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:22:26,118 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事薯片经典原味23g(串串装)@ -> 23*None, 包装数量=23 +2025-12-12 11:22:26,120 - app.core.excel.processor - INFO - 提取到 52 个商品信息 +2025-12-12 11:22:26,123 - app.core.excel.processor - INFO - 开始处理52 个产品信息 +2025-12-12 11:22:26,124 - app.core.excel.processor - INFO - 处理商品: 条码=6954767432076, 数量=48.0, 单价=55.68, 是否赠品=False +2025-12-12 11:22:26,124 - app.core.excel.processor - INFO - 发现正常商品:条码6954767432076, 数量=48.0, 单价=55.68 +2025-12-12 11:22:26,125 - app.core.excel.processor - INFO - 处理商品: 条码=6954767433073, 数量=8.0, 单价=44.32, 是否赠品=False +2025-12-12 11:22:26,125 - app.core.excel.processor - INFO - 发现正常商品:条码6954767433073, 数量=8.0, 单价=44.32 +2025-12-12 11:22:26,125 - app.core.excel.processor - INFO - 处理商品: 条码=6901285992933, 数量=40.0, 单价=21.52, 是否赠品=False +2025-12-12 11:22:26,126 - app.core.excel.processor - INFO - 发现正常商品:条码6901285992933, 数量=40.0, 单价=21.52 +2025-12-12 11:22:26,126 - app.core.excel.processor - INFO - 处理商品: 条码=6901285991530, 数量=8.0, 单价=26.08, 是否赠品=False +2025-12-12 11:22:26,126 - app.core.excel.processor - INFO - 发现正常商品:条码6901285991530, 数量=8.0, 单价=26.08 +2025-12-12 11:22:26,127 - app.core.excel.processor - INFO - 处理商品: 条码=6901285991271, 数量=60.0, 单价=24.6, 是否赠品=False +2025-12-12 11:22:26,127 - app.core.excel.processor - INFO - 发现正常商品:条码6901285991271, 数量=60.0, 单价=24.6 +2025-12-12 11:22:26,128 - app.core.excel.processor - INFO - 处理商品: 条码=6920584471017, 数量=12.0, 单价=54.0, 是否赠品=False +2025-12-12 11:22:26,128 - app.core.excel.processor - INFO - 发现正常商品:条码6920584471017, 数量=12.0, 单价=54.0 +2025-12-12 11:22:26,129 - app.core.excel.processor - INFO - 处理商品: 条码=6901668934925, 数量=5.0, 单价=6.5, 是否赠品=False +2025-12-12 11:22:26,129 - app.core.excel.processor - INFO - 发现正常商品:条码6901668934925, 数量=5.0, 单价=6.5 +2025-12-12 11:22:26,129 - app.core.excel.processor - INFO - 处理商品: 条码=6901668054715, 数量=4.0, 单价=3.6, 是否赠品=False +2025-12-12 11:22:26,130 - app.core.excel.processor - INFO - 发现正常商品:条码6901668054715, 数量=4.0, 单价=3.6 +2025-12-12 11:22:26,130 - app.core.excel.processor - INFO - 处理商品: 条码=6901668053916, 数量=3.0, 单价=3.6, 是否赠品=False +2025-12-12 11:22:26,130 - app.core.excel.processor - INFO - 发现正常商品:条码6901668053916, 数量=3.0, 单价=3.6 +2025-12-12 11:22:26,131 - app.core.excel.processor - INFO - 处理商品: 条码=6920907800616, 数量=4.0, 单价=3.0, 是否赠品=False +2025-12-12 11:22:26,131 - app.core.excel.processor - INFO - 发现正常商品:条码6920907800616, 数量=4.0, 单价=3.0 +2025-12-12 11:22:26,132 - app.core.excel.processor - INFO - 处理商品: 条码=6935855700383, 数量=8.0, 单价=38.0, 是否赠品=False +2025-12-12 11:22:26,132 - app.core.excel.processor - INFO - 发现正常商品:条码6935855700383, 数量=8.0, 单价=38.0 +2025-12-12 11:22:26,132 - app.core.excel.processor - INFO - 处理商品: 条码=6925683200957, 数量=8.0, 单价=28.0, 是否赠品=False +2025-12-12 11:22:26,132 - app.core.excel.processor - INFO - 发现正常商品:条码6925683200957, 数量=8.0, 单价=28.0 +2025-12-12 11:22:26,132 - app.core.excel.processor - INFO - 处理商品: 条码=6901845044027, 数量=4.0, 单价=5.55, 是否赠品=False +2025-12-12 11:22:26,132 - app.core.excel.processor - INFO - 发现正常商品:条码6901845044027, 数量=4.0, 单价=5.55 +2025-12-12 11:22:26,133 - app.core.excel.processor - INFO - 处理商品: 条码=6901845040968, 数量=5.0, 单价=5.55, 是否赠品=False +2025-12-12 11:22:26,133 - app.core.excel.processor - INFO - 发现正常商品:条码6901845040968, 数量=5.0, 单价=5.55 +2025-12-12 11:22:26,133 - app.core.excel.processor - INFO - 处理商品: 条码=6901668935649, 数量=6.0, 单价=1.99, 是否赠品=False +2025-12-12 11:22:26,133 - app.core.excel.processor - INFO - 发现正常商品:条码6901668935649, 数量=6.0, 单价=1.99 +2025-12-12 11:22:26,134 - app.core.excel.processor - INFO - 处理商品: 条码=6901668935663, 数量=5.0, 单价=1.99, 是否赠品=False +2025-12-12 11:22:26,134 - app.core.excel.processor - INFO - 发现正常商品:条码6901668935663, 数量=5.0, 单价=1.99 +2025-12-12 11:22:26,135 - app.core.excel.processor - INFO - 处理商品: 条码=6947929617534, 数量=4.0, 单价=2.66, 是否赠品=False +2025-12-12 11:22:26,135 - app.core.excel.processor - INFO - 发现正常商品:条码6947929617534, 数量=4.0, 单价=2.66 +2025-12-12 11:22:26,136 - app.core.excel.processor - INFO - 处理商品: 条码=6947929617138, 数量=4.0, 单价=2.66, 是否赠品=False +2025-12-12 11:22:26,136 - app.core.excel.processor - INFO - 发现正常商品:条码6947929617138, 数量=4.0, 单价=2.66 +2025-12-12 11:22:26,136 - app.core.excel.processor - INFO - 处理商品: 条码=6901668200013, 数量=3.0, 单价=3.5, 是否赠品=False +2025-12-12 11:22:26,136 - app.core.excel.processor - INFO - 发现正常商品:条码6901668200013, 数量=3.0, 单价=3.5 +2025-12-12 11:22:26,137 - app.core.excel.processor - INFO - 处理商品: 条码=6901668200303, 数量=3.0, 单价=3.5, 是否赠品=False +2025-12-12 11:22:26,137 - app.core.excel.processor - INFO - 发现正常商品:条码6901668200303, 数量=3.0, 单价=3.5 +2025-12-12 11:22:26,137 - app.core.excel.processor - INFO - 处理商品: 条码=6911988005229, 数量=4.0, 单价=2.25, 是否赠品=False +2025-12-12 11:22:26,137 - app.core.excel.processor - INFO - 发现正常商品:条码6911988005229, 数量=4.0, 单价=2.25 +2025-12-12 11:22:26,137 - app.core.excel.processor - INFO - 处理商品: 条码=6911988000293, 数量=4.0, 单价=3.8, 是否赠品=False +2025-12-12 11:22:26,137 - app.core.excel.processor - INFO - 发现正常商品:条码6911988000293, 数量=4.0, 单价=3.8 +2025-12-12 11:22:26,137 - app.core.excel.processor - INFO - 处理商品: 条码=6911988000286, 数量=3.0, 单价=3.8, 是否赠品=False +2025-12-12 11:22:26,137 - app.core.excel.processor - INFO - 发现正常商品:条码6911988000286, 数量=3.0, 单价=3.8 +2025-12-12 11:22:26,137 - app.core.excel.processor - INFO - 处理商品: 条码=6911988009777, 数量=3.0, 单价=2.85, 是否赠品=False +2025-12-12 11:22:26,137 - app.core.excel.processor - INFO - 发现正常商品:条码6911988009777, 数量=3.0, 单价=2.85 +2025-12-12 11:22:26,137 - app.core.excel.processor - INFO - 处理商品: 条码=6911988009760, 数量=3.0, 单价=2.85, 是否赠品=False +2025-12-12 11:22:26,137 - app.core.excel.processor - INFO - 发现正常商品:条码6911988009760, 数量=3.0, 单价=2.85 +2025-12-12 11:22:26,141 - app.core.excel.processor - INFO - 处理商品: 条码=6911988009784, 数量=3.0, 单价=2.85, 是否赠品=False +2025-12-12 11:22:26,141 - app.core.excel.processor - INFO - 发现正常商品:条码6911988009784, 数量=3.0, 单价=2.85 +2025-12-12 11:22:26,141 - app.core.excel.processor - INFO - 处理商品: 条码=6901180581683, 数量=2.0, 单价=3.8, 是否赠品=False +2025-12-12 11:22:26,141 - app.core.excel.processor - INFO - 发现正常商品:条码6901180581683, 数量=2.0, 单价=3.8 +2025-12-12 11:22:26,142 - app.core.excel.processor - INFO - 处理商品: 条码=6932024200552, 数量=3.0, 单价=3.0, 是否赠品=False +2025-12-12 11:22:26,142 - app.core.excel.processor - INFO - 发现正常商品:条码6932024200552, 数量=3.0, 单价=3.0 +2025-12-12 11:22:26,142 - app.core.excel.processor - INFO - 处理商品: 条码=6932024200583, 数量=4.0, 单价=1.7, 是否赠品=False +2025-12-12 11:22:26,143 - app.core.excel.processor - INFO - 发现正常商品:条码6932024200583, 数量=4.0, 单价=1.7 +2025-12-12 11:22:26,143 - app.core.excel.processor - INFO - 处理商品: 条码=6901668936714, 数量=4.0, 单价=5.2, 是否赠品=False +2025-12-12 11:22:26,143 - app.core.excel.processor - INFO - 发现正常商品:条码6901668936714, 数量=4.0, 单价=5.2 +2025-12-12 11:22:26,143 - app.core.excel.processor - INFO - 处理商品: 条码=6901668062499, 数量=4.0, 单价=5.2, 是否赠品=False +2025-12-12 11:22:26,144 - app.core.excel.processor - INFO - 发现正常商品:条码6901668062499, 数量=4.0, 单价=5.2 +2025-12-12 11:22:26,144 - app.core.excel.processor - INFO - 处理商品: 条码=6925332600046, 数量=3.0, 单价=3.8, 是否赠品=False +2025-12-12 11:22:26,144 - app.core.excel.processor - INFO - 发现正常商品:条码6925332600046, 数量=3.0, 单价=3.8 +2025-12-12 11:22:26,145 - app.core.excel.processor - INFO - 处理商品: 条码=6921233904955, 数量=4.0, 单价=3.8, 是否赠品=False +2025-12-12 11:22:26,145 - app.core.excel.processor - INFO - 发现正常商品:条码6921233904955, 数量=4.0, 单价=3.8 +2025-12-12 11:22:26,145 - app.core.excel.processor - INFO - 处理商品: 条码=6901180993387, 数量=3.0, 单价=3.0, 是否赠品=False +2025-12-12 11:22:26,145 - app.core.excel.processor - INFO - 发现正常商品:条码6901180993387, 数量=3.0, 单价=3.0 +2025-12-12 11:22:26,145 - app.core.excel.processor - INFO - 处理商品: 条码=6901180993486, 数量=3.0, 单价=3.0, 是否赠品=False +2025-12-12 11:22:26,145 - app.core.excel.processor - INFO - 发现正常商品:条码6901180993486, 数量=3.0, 单价=3.0 +2025-12-12 11:22:26,145 - app.core.excel.processor - INFO - 处理商品: 条码=6920546800046, 数量=5.0, 单价=3.95, 是否赠品=False +2025-12-12 11:22:26,145 - app.core.excel.processor - INFO - 发现正常商品:条码6920546800046, 数量=5.0, 单价=3.95 +2025-12-12 11:22:26,145 - app.core.excel.processor - INFO - 处理商品: 条码=6920546800053, 数量=5.0, 单价=4.5, 是否赠品=False +2025-12-12 11:22:26,145 - app.core.excel.processor - INFO - 发现正常商品:条码6920546800053, 数量=5.0, 单价=4.5 +2025-12-12 11:22:26,145 - app.core.excel.processor - INFO - 处理商品: 条码=6911988006783, 数量=1.0, 单价=5.88, 是否赠品=False +2025-12-12 11:22:26,145 - app.core.excel.processor - INFO - 发现正常商品:条码6911988006783, 数量=1.0, 单价=5.88 +2025-12-12 11:22:26,145 - app.core.excel.processor - INFO - 处理商品: 条码=6971295190759, 数量=20.0, 单价=15.0, 是否赠品=False +2025-12-12 11:22:26,145 - app.core.excel.processor - INFO - 发现正常商品:条码6971295190759, 数量=20.0, 单价=15.0 +2025-12-12 11:22:26,145 - app.core.excel.processor - INFO - 处理商品: 条码=6951957217307, 数量=20.0, 单价=26.6, 是否赠品=False +2025-12-12 11:22:26,149 - app.core.excel.processor - INFO - 发现正常商品:条码6951957217307, 数量=20.0, 单价=26.6 +2025-12-12 11:22:26,149 - app.core.excel.processor - INFO - 处理商品: 条码=6951957215723, 数量=20.0, 单价=26.6, 是否赠品=False +2025-12-12 11:22:26,149 - app.core.excel.processor - INFO - 发现正常商品:条码6951957215723, 数量=20.0, 单价=26.6 +2025-12-12 11:22:26,149 - app.core.excel.processor - INFO - 处理商品: 条码=6977530260072, 数量=25.0, 单价=17.5, 是否赠品=False +2025-12-12 11:22:26,149 - app.core.excel.processor - INFO - 发现正常商品:条码6977530260072, 数量=25.0, 单价=17.5 +2025-12-12 11:22:26,150 - app.core.excel.processor - INFO - 处理商品: 条码=6925300100400, 数量=25.0, 单价=17.5, 是否赠品=False +2025-12-12 11:22:26,151 - app.core.excel.processor - INFO - 发现正常商品:条码6925300100400, 数量=25.0, 单价=17.5 +2025-12-12 11:22:26,151 - app.core.excel.processor - INFO - 处理商品: 条码=6922170800638, 数量=20.0, 单价=15.0, 是否赠品=False +2025-12-12 11:22:26,151 - app.core.excel.processor - INFO - 发现正常商品:条码6922170800638, 数量=20.0, 单价=15.0 +2025-12-12 11:22:26,151 - app.core.excel.processor - INFO - 处理商品: 条码=690299810, 数量=16.0, 单价=23.2, 是否赠品=False +2025-12-12 11:22:26,152 - app.core.excel.processor - INFO - 发现正常商品:条码690299810, 数量=16.0, 单价=23.2 +2025-12-12 11:22:26,152 - app.core.excel.processor - INFO - 处理商品: 条码=6936869215092, 数量=15.0, 单价=1.5, 是否赠品=False +2025-12-12 11:22:26,152 - app.core.excel.processor - INFO - 发现正常商品:条码6936869215092, 数量=15.0, 单价=1.5 +2025-12-12 11:22:26,152 - app.core.excel.processor - INFO - 处理商品: 条码=6951957205762, 数量=20.0, 单价=14.2, 是否赠品=False +2025-12-12 11:22:26,153 - app.core.excel.processor - INFO - 发现正常商品:条码6951957205762, 数量=20.0, 单价=14.2 +2025-12-12 11:22:26,153 - app.core.excel.processor - INFO - 处理商品: 条码=6976481800078, 数量=30.0, 单价=22.5, 是否赠品=False +2025-12-12 11:22:26,153 - app.core.excel.processor - INFO - 发现正常商品:条码6976481800078, 数量=30.0, 单价=22.5 +2025-12-12 11:22:26,153 - app.core.excel.processor - INFO - 处理商品: 条码=6924743919266, 数量=5.0, 单价=4.79, 是否赠品=False +2025-12-12 11:22:26,154 - app.core.excel.processor - INFO - 发现正常商品:条码6924743919266, 数量=5.0, 单价=4.79 +2025-12-12 11:22:26,154 - app.core.excel.processor - INFO - 处理商品: 条码=6924743919259, 数量=5.0, 单价=4.79, 是否赠品=False +2025-12-12 11:22:26,154 - app.core.excel.processor - INFO - 发现正常商品:条码6924743919259, 数量=5.0, 单价=4.79 +2025-12-12 11:22:26,155 - app.core.excel.processor - INFO - 处理商品: 条码=6924743919228, 数量=3.0, 单价=4.79, 是否赠品=False +2025-12-12 11:22:26,155 - app.core.excel.processor - INFO - 发现正常商品:条码6924743919228, 数量=3.0, 单价=4.79 +2025-12-12 11:22:26,155 - app.core.excel.processor - INFO - 处理商品: 条码=6924743928077, 数量=1.0, 单价=1.35, 是否赠品=False +2025-12-12 11:22:26,155 - app.core.excel.processor - INFO - 发现正常商品:条码6924743928077, 数量=1.0, 单价=1.35 +2025-12-12 11:22:26,155 - app.core.excel.processor - INFO - 分组后共52 个不同条码的商品 +2025-12-12 11:22:26,155 - app.core.excel.processor - INFO - 条码 6954767432076 处理结果:正常商品数量48.0,单价55.68,赠品数量0 +2025-12-12 11:22:26,156 - app.core.excel.processor - INFO - 条码 6954767433073 处理结果:正常商品数量8.0,单价44.32,赠品数量0 +2025-12-12 11:22:26,156 - app.core.excel.processor - INFO - 条码 6901285992933 处理结果:正常商品数量40.0,单价21.52,赠品数量0 +2025-12-12 11:22:26,156 - app.core.excel.processor - INFO - 条码 6901285991530 处理结果:正常商品数量8.0,单价26.08,赠品数量0 +2025-12-12 11:22:26,156 - app.core.excel.processor - INFO - 条码 6901285991271 处理结果:正常商品数量60.0,单价24.6,赠品数量0 +2025-12-12 11:22:26,156 - app.core.excel.processor - INFO - 条码 6920584471017 处理结果:正常商品数量12.0,单价54.0,赠品数量0 +2025-12-12 11:22:26,156 - app.core.excel.processor - INFO - 条码 6901668934925 处理结果:正常商品数量5.0,单价6.5,赠品数量0 +2025-12-12 11:22:26,156 - app.core.excel.processor - INFO - 条码 6901668054715 处理结果:正常商品数量4.0,单价3.6,赠品数量0 +2025-12-12 11:22:26,156 - app.core.excel.processor - INFO - 条码 6901668053916 处理结果:正常商品数量3.0,单价3.6,赠品数量0 +2025-12-12 11:22:26,156 - app.core.excel.processor - INFO - 条码 6920907800616 处理结果:正常商品数量4.0,单价3.0,赠品数量0 +2025-12-12 11:22:26,156 - app.core.excel.processor - INFO - 条码 6935855700383 处理结果:正常商品数量8.0,单价38.0,赠品数量0 +2025-12-12 11:22:26,159 - app.core.excel.processor - INFO - 条码 6925683200957 处理结果:正常商品数量8.0,单价28.0,赠品数量0 +2025-12-12 11:22:26,159 - app.core.excel.processor - INFO - 条码 6901845044027 处理结果:正常商品数量4.0,单价5.55,赠品数量0 +2025-12-12 11:22:26,159 - app.core.excel.processor - INFO - 条码 6901845040968 处理结果:正常商品数量5.0,单价5.55,赠品数量0 +2025-12-12 11:22:26,159 - app.core.excel.processor - INFO - 条码 6901668935649 处理结果:正常商品数量6.0,单价1.99,赠品数量0 +2025-12-12 11:22:26,160 - app.core.excel.processor - INFO - 条码 6901668935663 处理结果:正常商品数量5.0,单价1.99,赠品数量0 +2025-12-12 11:22:26,160 - app.core.excel.processor - INFO - 条码 6947929617534 处理结果:正常商品数量4.0,单价2.66,赠品数量0 +2025-12-12 11:22:26,160 - app.core.excel.processor - INFO - 条码 6947929617138 处理结果:正常商品数量4.0,单价2.66,赠品数量0 +2025-12-12 11:22:26,161 - app.core.excel.processor - INFO - 条码 6901668200013 处理结果:正常商品数量3.0,单价3.5,赠品数量0 +2025-12-12 11:22:26,161 - app.core.excel.processor - INFO - 条码 6901668200303 处理结果:正常商品数量3.0,单价3.5,赠品数量0 +2025-12-12 11:22:26,161 - app.core.excel.processor - INFO - 条码 6911988005229 处理结果:正常商品数量4.0,单价2.25,赠品数量0 +2025-12-12 11:22:26,162 - app.core.excel.processor - INFO - 条码 6911988000293 处理结果:正常商品数量4.0,单价3.8,赠品数量0 +2025-12-12 11:22:26,162 - app.core.excel.processor - INFO - 条码 6911988000286 处理结果:正常商品数量3.0,单价3.8,赠品数量0 +2025-12-12 11:22:26,162 - app.core.excel.processor - INFO - 条码 6911988009777 处理结果:正常商品数量3.0,单价2.85,赠品数量0 +2025-12-12 11:22:26,162 - app.core.excel.processor - INFO - 条码 6911988009760 处理结果:正常商品数量3.0,单价2.85,赠品数量0 +2025-12-12 11:22:26,163 - app.core.excel.processor - INFO - 条码 6911988009784 处理结果:正常商品数量3.0,单价2.85,赠品数量0 +2025-12-12 11:22:26,163 - app.core.excel.processor - INFO - 条码 6901180581683 处理结果:正常商品数量2.0,单价3.8,赠品数量0 +2025-12-12 11:22:26,163 - app.core.excel.processor - INFO - 条码 6932024200552 处理结果:正常商品数量3.0,单价3.0,赠品数量0 +2025-12-12 11:22:26,164 - app.core.excel.processor - INFO - 条码 6932024200583 处理结果:正常商品数量4.0,单价1.7,赠品数量0 +2025-12-12 11:22:26,164 - app.core.excel.processor - INFO - 条码 6901668936714 处理结果:正常商品数量4.0,单价5.2,赠品数量0 +2025-12-12 11:22:26,164 - app.core.excel.processor - INFO - 条码 6901668062499 处理结果:正常商品数量4.0,单价5.2,赠品数量0 +2025-12-12 11:22:26,164 - app.core.excel.processor - INFO - 条码 6925332600046 处理结果:正常商品数量3.0,单价3.8,赠品数量0 +2025-12-12 11:22:26,165 - app.core.excel.processor - INFO - 条码 6921233904955 处理结果:正常商品数量4.0,单价3.8,赠品数量0 +2025-12-12 11:22:26,165 - app.core.excel.processor - INFO - 条码 6901180993387 处理结果:正常商品数量3.0,单价3.0,赠品数量0 +2025-12-12 11:22:26,165 - app.core.excel.processor - INFO - 条码 6901180993486 处理结果:正常商品数量3.0,单价3.0,赠品数量0 +2025-12-12 11:22:26,165 - app.core.excel.processor - INFO - 条码 6920546800046 处理结果:正常商品数量5.0,单价3.95,赠品数量0 +2025-12-12 11:22:26,166 - app.core.excel.processor - INFO - 条码 6920546800053 处理结果:正常商品数量5.0,单价4.5,赠品数量0 +2025-12-12 11:22:26,166 - app.core.excel.processor - INFO - 条码 6911988006783 处理结果:正常商品数量1.0,单价5.88,赠品数量0 +2025-12-12 11:22:26,166 - app.core.excel.processor - INFO - 条码 6971295190759 处理结果:正常商品数量20.0,单价15.0,赠品数量0 +2025-12-12 11:22:26,167 - app.core.excel.processor - INFO - 条码 6951957217307 处理结果:正常商品数量20.0,单价26.6,赠品数量0 +2025-12-12 11:22:26,167 - app.core.excel.processor - INFO - 条码 6951957215723 处理结果:正常商品数量20.0,单价26.6,赠品数量0 +2025-12-12 11:22:26,167 - app.core.excel.processor - INFO - 条码 6977530260072 处理结果:正常商品数量25.0,单价17.5,赠品数量0 +2025-12-12 11:22:26,167 - app.core.excel.processor - INFO - 条码 6925300100400 处理结果:正常商品数量25.0,单价17.5,赠品数量0 +2025-12-12 11:22:26,168 - app.core.excel.processor - INFO - 条码 6922170800638 处理结果:正常商品数量20.0,单价15.0,赠品数量0 +2025-12-12 11:22:26,168 - app.core.excel.processor - INFO - 条码 690299810 处理结果:正常商品数量16.0,单价23.2,赠品数量0 +2025-12-12 11:22:26,168 - app.core.excel.processor - INFO - 条码 6936869215092 处理结果:正常商品数量15.0,单价1.5,赠品数量0 +2025-12-12 11:22:26,169 - app.core.excel.processor - INFO - 条码 6951957205762 处理结果:正常商品数量20.0,单价14.2,赠品数量0 +2025-12-12 11:22:26,169 - app.core.excel.processor - INFO - 条码 6976481800078 处理结果:正常商品数量30.0,单价22.5,赠品数量0 +2025-12-12 11:22:26,170 - app.core.excel.processor - INFO - 条码 6924743919266 处理结果:正常商品数量5.0,单价4.79,赠品数量0 +2025-12-12 11:22:26,170 - app.core.excel.processor - INFO - 条码 6924743919259 处理结果:正常商品数量5.0,单价4.79,赠品数量0 +2025-12-12 11:22:26,170 - app.core.excel.processor - INFO - 条码 6924743919228 处理结果:正常商品数量3.0,单价4.79,赠品数量0 +2025-12-12 11:22:26,170 - app.core.excel.processor - INFO - 条码 6924743928077 处理结果:正常商品数量1.0,单价1.35,赠品数量0 +2025-12-12 11:22:26,173 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_蓉城易购-订单1765440157955.xls +2025-12-12 11:22:26,201 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_蓉城易购-订单1765440157955.xls +2025-12-12 11:32:26,690 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-12-12 11:32:26,690 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-12-12 11:32:26,694 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-12-12 11:32:26,696 - app.core.excel.processor - INFO - 开始处理Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765440157955.xlsx +2025-12-12 11:32:26,708 - app.core.excel.processor - INFO - 成功读取Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765440157955.xlsx, 共 57 行 +2025-12-12 11:32:26,711 - app.core.excel.processor - INFO - 找到可能的表头行: 第1行,评分: 75 +2025-12-12 11:32:26,711 - app.core.excel.processor - INFO - 识别到表头在第 1 行 +2025-12-12 11:32:26,717 - app.core.excel.processor - INFO - 使用表头行重新读取数据,共 56 行有效数据 +2025-12-12 11:32:26,717 - app.core.excel.processor - INFO - 找到部分匹配的条码列: 商品条码(小条码) (包含关键词: 条码) +2025-12-12 11:32:26,722 - app.core.excel.processor - INFO - 使用条码列: 商品条码(小条码) +2025-12-12 11:32:26,722 - app.core.excel.processor - INFO - 找到name列: 商品名称 +2025-12-12 11:32:26,723 - app.core.excel.processor - INFO - 找到quantity列(部分匹配): 订购数量(小单位) +2025-12-12 11:32:26,723 - app.core.excel.processor - INFO - 找到unit列: 单位 +2025-12-12 11:32:26,724 - app.core.excel.processor - INFO - 找到price列(部分匹配): 单价(小单位) +2025-12-12 11:32:26,724 - app.core.excel.processor - INFO - 找到amount列(部分匹配): 优惠后金额(小单位) +2025-12-12 11:32:26,725 - app.core.excel.processor - INFO - 检测到列映射: {'barcode': '商品条码(小条码)', 'name': '商品名称', 'quantity': '订购数量(小单位)', 'unit': '单位', 'price': '单价(小单位)', 'amount': '优惠后金额(小单位)'} +2025-12-12 11:32:26,726 - app.core.excel.processor - INFO - 从商品名称推断规格: 雪碧2L@ -> 2L*1, 包装数量=1 +2025-12-12 11:32:26,726 - app.core.excel.processor - INFO - 根据规格推断单位: 2L*1 -> 单位=件 +2025-12-12 11:32:26,726 - app.core.excel.processor - INFO - 从商品名称推断规格: 怡宝饮用纯净水2.08L@ -> 2.08L*1, 包装数量=1 +2025-12-12 11:32:26,730 - app.core.excel.processor - INFO - 从商品名称推断规格: 怡宝纯净水4.5L@ -> 4.5L*1, 包装数量=1 +2025-12-12 11:32:26,733 - app.core.excel.processor - INFO - 从商品名称推断规格: 怡宝饮用纯净水1.555L@ -> 1.555L*1, 包装数量=1 +2025-12-12 11:32:26,735 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥薄脆酸甜草莓味95g@ -> 95*None, 包装数量=95 +2025-12-12 11:32:26,736 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥杯奥草莓味55g@ -> 55*None, 包装数量=55 +2025-12-12 11:32:26,739 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥杯奥巧克力55g@ -> 55*None, 包装数量=55 +2025-12-12 11:32:26,739 - app.core.excel.processor - INFO - 从商品名称推断规格: 好丽友蛋黄派2P46g@ -> 46*None, 包装数量=46 +2025-12-12 11:32:26,743 - app.core.excel.processor - INFO - 从商品名称推断规格: 都市牧场爽口含片正梅味38g@ -> 38*None, 包装数量=38 +2025-12-12 11:32:26,745 - app.core.excel.processor - INFO - 从商品名称推断规格: 林振合维C果C软糖什锦味68g -> 68*None, 包装数量=68 +2025-12-12 11:32:26,746 - app.core.excel.processor - INFO - 从商品名称推断规格: 格力高百醇柠檬48g@ -> 48*None, 包装数量=48 +2025-12-12 11:32:26,748 - app.core.excel.processor - INFO - 从商品名称推断规格: 格力高百醇抹茶慕斯味48g@ -> 48*None, 包装数量=48 +2025-12-12 11:32:26,748 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥饼干经典原味48.5g@ -> 48.5*None, 包装数量=48 +2025-12-12 11:32:26,753 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥饼干浓醇巧克力味48.5g@ -> 48.5*None, 包装数量=48 +2025-12-12 11:32:26,755 - app.core.excel.processor - INFO - 从商品名称推断规格: 法丽兹曲奇芝士巧克力70g@ -> 70*None, 包装数量=70 +2025-12-12 11:32:26,757 - app.core.excel.processor - INFO - 从商品名称推断规格: 法丽兹曲奇香草柠檬巧克力味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:32:26,759 - app.core.excel.processor - INFO - 从商品名称推断规格: 太平梳打饼干奶盐味100g@ -> 100*None, 包装数量=100 +2025-12-12 11:32:26,761 - app.core.excel.processor - INFO - 从商品名称推断规格: 太平梳打饼干海苔味100g@ -> 100*None, 包装数量=100 +2025-12-12 11:32:26,763 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园手指饼115g@ -> 115*None, 包装数量=115 +2025-12-12 11:32:26,765 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点杏仁酥饼146g@ -> 146*None, 包装数量=146 +2025-12-12 11:32:26,768 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点核桃酥饼146g@ -> 146*None, 包装数量=146 +2025-12-12 11:32:26,770 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点香脆腰果饼108g@ -> 108*None, 包装数量=108 +2025-12-12 11:32:26,771 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点香脆杏仁饼108g@ -> 108*None, 包装数量=108 +2025-12-12 11:32:26,773 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点香脆核桃饼108g@ -> 108*None, 包装数量=108 +2025-12-12 11:32:26,773 - app.core.excel.processor - INFO - 从商品名称推断规格: 嘉士利威化饼干草莓味115g@ -> 115*None, 包装数量=115 +2025-12-12 11:32:26,778 - app.core.excel.processor - INFO - 从商品名称推断规格: 亨裕饼朱古力味饼干186g -> 186*None, 包装数量=186 +2025-12-12 11:32:26,780 - app.core.excel.processor - INFO - 从商品名称推断规格: 亨裕早茶饼干110g -> 110*None, 包装数量=110 +2025-12-12 11:32:26,781 - app.core.excel.processor - INFO - 从商品名称推断规格: 趣多多香浓巧克力味85g@ -> 85*None, 包装数量=85 +2025-12-12 11:32:26,781 - app.core.excel.processor - INFO - 从商品名称推断规格: 趣多多缤纷逗巧克力85g@ -> 85*None, 包装数量=85 +2025-12-12 11:32:26,785 - app.core.excel.processor - INFO - 从商品名称推断规格: 米老头雪花煎卷椰奶味150g@ -> 150*None, 包装数量=150 +2025-12-12 11:32:26,787 - app.core.excel.processor - INFO - 从商品名称推断规格: 金富士牛乳饼干香浓牛奶味130g@ -> 130*None, 包装数量=130 +2025-12-12 11:32:26,789 - app.core.excel.processor - INFO - 从商品名称推断规格: 嘉士利果乐果香蓝莓味85g@ -> 85*None, 包装数量=85 +2025-12-12 11:32:26,791 - app.core.excel.processor - INFO - 从商品名称推断规格: 嘉士利果乐果香草莓味85g@ -> 85*None, 包装数量=85 +2025-12-12 11:32:26,793 - app.core.excel.processor - INFO - 从商品名称推断规格: 旺旺仙贝52g@ -> 52*None, 包装数量=52 +2025-12-12 11:32:26,795 - app.core.excel.processor - INFO - 从商品名称推断规格: 旺旺雪饼84g@ -> 84*None, 包装数量=84 +2025-12-12 11:32:26,797 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园蛋黄派230g@ -> 230*None, 包装数量=230 +2025-12-12 11:32:26,799 - app.core.excel.processor - INFO - 从商品名称推断规格: 豆多奇鹌鹑蛋豆干烧烤味22g -> 22*None, 包装数量=22 +2025-12-12 11:32:26,800 - app.core.excel.processor - INFO - 从商品名称推断规格: 劲仔手撕肉干麻辣味10g@ -> 10*None, 包装数量=10 +2025-12-12 11:32:26,802 - app.core.excel.processor - INFO - 从商品名称推断规格: 劲仔手撕肉干香辣味10g@ -> 10*None, 包装数量=10 +2025-12-12 11:32:26,805 - app.core.excel.processor - INFO - 从商品名称推断规格: 登荣香辣爽口鸡23g -> 23*None, 包装数量=23 +2025-12-12 11:32:26,807 - app.core.excel.processor - INFO - 从商品名称推断规格: 德芙脆香米脆米心牛奶巧克力12g@ -> 12*None, 包装数量=12 +2025-12-12 11:32:26,807 - app.core.excel.processor - INFO - 从商品名称推断规格: 味芝元洞庭鱼排香辣味26g -> 26*None, 包装数量=26 +2025-12-12 11:32:26,811 - app.core.excel.processor - INFO - 从商品名称推断规格: 劲仔小鱼麻辣小鱼12g@ -> 12*None, 包装数量=12 +2025-12-12 11:32:26,813 - app.core.excel.processor - INFO - 从商品名称推断规格: 缺牙齿素牛肚香辣味16g -> 16*None, 包装数量=16 +2025-12-12 11:32:26,815 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事青柠味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:32:26,818 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事黄瓜味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:32:26,819 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事德克萨斯烧烤味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:32:26,821 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事薯片经典原味23g(串串装)@ -> 23*None, 包装数量=23 +2025-12-12 11:32:26,822 - app.core.excel.processor - INFO - 提取到 52 个商品信息 +2025-12-12 11:32:26,825 - app.core.excel.processor - INFO - 开始处理52 个产品信息 +2025-12-12 11:32:26,825 - app.core.excel.processor - INFO - 处理商品: 条码=6954767432076, 数量=48.0, 单价=55.68, 是否赠品=False +2025-12-12 11:32:26,825 - app.core.excel.processor - INFO - 发现正常商品:条码6954767432076, 数量=48.0, 单价=55.68 +2025-12-12 11:32:26,828 - app.core.excel.processor - INFO - 处理商品: 条码=6954767433073, 数量=8.0, 单价=44.32, 是否赠品=False +2025-12-12 11:32:26,828 - app.core.excel.processor - INFO - 发现正常商品:条码6954767433073, 数量=8.0, 单价=44.32 +2025-12-12 11:32:26,828 - app.core.excel.processor - INFO - 处理商品: 条码=6901285992933, 数量=40.0, 单价=21.52, 是否赠品=False +2025-12-12 11:32:26,829 - app.core.excel.processor - INFO - 发现正常商品:条码6901285992933, 数量=40.0, 单价=21.52 +2025-12-12 11:32:26,829 - app.core.excel.processor - INFO - 处理商品: 条码=6901285991530, 数量=8.0, 单价=26.08, 是否赠品=False +2025-12-12 11:32:26,829 - app.core.excel.processor - INFO - 发现正常商品:条码6901285991530, 数量=8.0, 单价=26.08 +2025-12-12 11:32:26,830 - app.core.excel.processor - INFO - 处理商品: 条码=6901285991271, 数量=60.0, 单价=24.6, 是否赠品=False +2025-12-12 11:32:26,830 - app.core.excel.processor - INFO - 发现正常商品:条码6901285991271, 数量=60.0, 单价=24.6 +2025-12-12 11:32:26,830 - app.core.excel.processor - INFO - 处理商品: 条码=6920584471017, 数量=12.0, 单价=54.0, 是否赠品=False +2025-12-12 11:32:26,831 - app.core.excel.processor - INFO - 发现正常商品:条码6920584471017, 数量=12.0, 单价=54.0 +2025-12-12 11:32:26,831 - app.core.excel.processor - INFO - 处理商品: 条码=6901668934925, 数量=5.0, 单价=6.5, 是否赠品=False +2025-12-12 11:32:26,831 - app.core.excel.processor - INFO - 发现正常商品:条码6901668934925, 数量=5.0, 单价=6.5 +2025-12-12 11:32:26,832 - app.core.excel.processor - INFO - 处理商品: 条码=6901668054715, 数量=4.0, 单价=3.6, 是否赠品=False +2025-12-12 11:32:26,832 - app.core.excel.processor - INFO - 发现正常商品:条码6901668054715, 数量=4.0, 单价=3.6 +2025-12-12 11:32:26,833 - app.core.excel.processor - INFO - 处理商品: 条码=6901668053916, 数量=3.0, 单价=3.6, 是否赠品=False +2025-12-12 11:32:26,833 - app.core.excel.processor - INFO - 发现正常商品:条码6901668053916, 数量=3.0, 单价=3.6 +2025-12-12 11:32:26,833 - app.core.excel.processor - INFO - 处理商品: 条码=6920907800616, 数量=4.0, 单价=3.0, 是否赠品=False +2025-12-12 11:32:26,833 - app.core.excel.processor - INFO - 发现正常商品:条码6920907800616, 数量=4.0, 单价=3.0 +2025-12-12 11:32:26,833 - app.core.excel.processor - INFO - 处理商品: 条码=6935855700383, 数量=8.0, 单价=38.0, 是否赠品=False +2025-12-12 11:32:26,833 - app.core.excel.processor - INFO - 发现正常商品:条码6935855700383, 数量=8.0, 单价=38.0 +2025-12-12 11:32:26,833 - app.core.excel.processor - INFO - 处理商品: 条码=6925683200957, 数量=8.0, 单价=28.0, 是否赠品=False +2025-12-12 11:32:26,833 - app.core.excel.processor - INFO - 发现正常商品:条码6925683200957, 数量=8.0, 单价=28.0 +2025-12-12 11:32:26,833 - app.core.excel.processor - INFO - 处理商品: 条码=6901845044027, 数量=4.0, 单价=5.55, 是否赠品=False +2025-12-12 11:32:26,833 - app.core.excel.processor - INFO - 发现正常商品:条码6901845044027, 数量=4.0, 单价=5.55 +2025-12-12 11:32:26,833 - app.core.excel.processor - INFO - 处理商品: 条码=6901845040968, 数量=5.0, 单价=5.55, 是否赠品=False +2025-12-12 11:32:26,833 - app.core.excel.processor - INFO - 发现正常商品:条码6901845040968, 数量=5.0, 单价=5.55 +2025-12-12 11:32:26,833 - app.core.excel.processor - INFO - 处理商品: 条码=6901668935649, 数量=6.0, 单价=1.99, 是否赠品=False +2025-12-12 11:32:26,833 - app.core.excel.processor - INFO - 发现正常商品:条码6901668935649, 数量=6.0, 单价=1.99 +2025-12-12 11:32:26,837 - app.core.excel.processor - INFO - 处理商品: 条码=6901668935663, 数量=5.0, 单价=1.99, 是否赠品=False +2025-12-12 11:32:26,837 - app.core.excel.processor - INFO - 发现正常商品:条码6901668935663, 数量=5.0, 单价=1.99 +2025-12-12 11:32:26,837 - app.core.excel.processor - INFO - 处理商品: 条码=6947929617534, 数量=4.0, 单价=2.66, 是否赠品=False +2025-12-12 11:32:26,837 - app.core.excel.processor - INFO - 发现正常商品:条码6947929617534, 数量=4.0, 单价=2.66 +2025-12-12 11:32:26,837 - app.core.excel.processor - INFO - 处理商品: 条码=6947929617138, 数量=4.0, 单价=2.66, 是否赠品=False +2025-12-12 11:32:26,837 - app.core.excel.processor - INFO - 发现正常商品:条码6947929617138, 数量=4.0, 单价=2.66 +2025-12-12 11:32:26,838 - app.core.excel.processor - INFO - 处理商品: 条码=6901668200013, 数量=3.0, 单价=3.5, 是否赠品=False +2025-12-12 11:32:26,838 - app.core.excel.processor - INFO - 发现正常商品:条码6901668200013, 数量=3.0, 单价=3.5 +2025-12-12 11:32:26,838 - app.core.excel.processor - INFO - 处理商品: 条码=6901668200303, 数量=3.0, 单价=3.5, 是否赠品=False +2025-12-12 11:32:26,838 - app.core.excel.processor - INFO - 发现正常商品:条码6901668200303, 数量=3.0, 单价=3.5 +2025-12-12 11:32:26,839 - app.core.excel.processor - INFO - 处理商品: 条码=6911988005229, 数量=4.0, 单价=2.25, 是否赠品=False +2025-12-12 11:32:26,839 - app.core.excel.processor - INFO - 发现正常商品:条码6911988005229, 数量=4.0, 单价=2.25 +2025-12-12 11:32:26,839 - app.core.excel.processor - INFO - 处理商品: 条码=6911988000293, 数量=4.0, 单价=3.8, 是否赠品=False +2025-12-12 11:32:26,840 - app.core.excel.processor - INFO - 发现正常商品:条码6911988000293, 数量=4.0, 单价=3.8 +2025-12-12 11:32:26,840 - app.core.excel.processor - INFO - 处理商品: 条码=6911988000286, 数量=3.0, 单价=3.8, 是否赠品=False +2025-12-12 11:32:26,840 - app.core.excel.processor - INFO - 发现正常商品:条码6911988000286, 数量=3.0, 单价=3.8 +2025-12-12 11:32:26,840 - app.core.excel.processor - INFO - 处理商品: 条码=6911988009777, 数量=3.0, 单价=2.85, 是否赠品=False +2025-12-12 11:32:26,841 - app.core.excel.processor - INFO - 发现正常商品:条码6911988009777, 数量=3.0, 单价=2.85 +2025-12-12 11:32:26,841 - app.core.excel.processor - INFO - 处理商品: 条码=6911988009760, 数量=3.0, 单价=2.85, 是否赠品=False +2025-12-12 11:32:26,841 - app.core.excel.processor - INFO - 发现正常商品:条码6911988009760, 数量=3.0, 单价=2.85 +2025-12-12 11:32:26,842 - app.core.excel.processor - INFO - 处理商品: 条码=6911988009784, 数量=3.0, 单价=2.85, 是否赠品=False +2025-12-12 11:32:26,842 - app.core.excel.processor - INFO - 发现正常商品:条码6911988009784, 数量=3.0, 单价=2.85 +2025-12-12 11:32:26,842 - app.core.excel.processor - INFO - 处理商品: 条码=6901180581683, 数量=2.0, 单价=3.8, 是否赠品=False +2025-12-12 11:32:26,842 - app.core.excel.processor - INFO - 发现正常商品:条码6901180581683, 数量=2.0, 单价=3.8 +2025-12-12 11:32:26,842 - app.core.excel.processor - INFO - 处理商品: 条码=6932024200552, 数量=3.0, 单价=3.0, 是否赠品=False +2025-12-12 11:32:26,842 - app.core.excel.processor - INFO - 发现正常商品:条码6932024200552, 数量=3.0, 单价=3.0 +2025-12-12 11:32:26,842 - app.core.excel.processor - INFO - 处理商品: 条码=6932024200583, 数量=4.0, 单价=1.7, 是否赠品=False +2025-12-12 11:32:26,842 - app.core.excel.processor - INFO - 发现正常商品:条码6932024200583, 数量=4.0, 单价=1.7 +2025-12-12 11:32:26,842 - app.core.excel.processor - INFO - 处理商品: 条码=6901668936714, 数量=4.0, 单价=5.2, 是否赠品=False +2025-12-12 11:32:26,842 - app.core.excel.processor - INFO - 发现正常商品:条码6901668936714, 数量=4.0, 单价=5.2 +2025-12-12 11:32:26,842 - app.core.excel.processor - INFO - 处理商品: 条码=6901668062499, 数量=4.0, 单价=5.2, 是否赠品=False +2025-12-12 11:32:26,842 - app.core.excel.processor - INFO - 发现正常商品:条码6901668062499, 数量=4.0, 单价=5.2 +2025-12-12 11:32:26,842 - app.core.excel.processor - INFO - 处理商品: 条码=6925332600046, 数量=3.0, 单价=3.8, 是否赠品=False +2025-12-12 11:32:26,846 - app.core.excel.processor - INFO - 发现正常商品:条码6925332600046, 数量=3.0, 单价=3.8 +2025-12-12 11:32:26,846 - app.core.excel.processor - INFO - 处理商品: 条码=6921233904955, 数量=4.0, 单价=3.8, 是否赠品=False +2025-12-12 11:32:26,846 - app.core.excel.processor - INFO - 发现正常商品:条码6921233904955, 数量=4.0, 单价=3.8 +2025-12-12 11:32:26,846 - app.core.excel.processor - INFO - 处理商品: 条码=6901180993387, 数量=3.0, 单价=3.0, 是否赠品=False +2025-12-12 11:32:26,847 - app.core.excel.processor - INFO - 发现正常商品:条码6901180993387, 数量=3.0, 单价=3.0 +2025-12-12 11:32:26,847 - app.core.excel.processor - INFO - 处理商品: 条码=6901180993486, 数量=3.0, 单价=3.0, 是否赠品=False +2025-12-12 11:32:26,847 - app.core.excel.processor - INFO - 发现正常商品:条码6901180993486, 数量=3.0, 单价=3.0 +2025-12-12 11:32:26,847 - app.core.excel.processor - INFO - 处理商品: 条码=6920546800046, 数量=5.0, 单价=3.95, 是否赠品=False +2025-12-12 11:32:26,848 - app.core.excel.processor - INFO - 发现正常商品:条码6920546800046, 数量=5.0, 单价=3.95 +2025-12-12 11:32:26,848 - app.core.excel.processor - INFO - 处理商品: 条码=6920546800053, 数量=5.0, 单价=4.5, 是否赠品=False +2025-12-12 11:32:26,848 - app.core.excel.processor - INFO - 发现正常商品:条码6920546800053, 数量=5.0, 单价=4.5 +2025-12-12 11:32:26,848 - app.core.excel.processor - INFO - 处理商品: 条码=6911988006783, 数量=1.0, 单价=5.88, 是否赠品=False +2025-12-12 11:32:26,848 - app.core.excel.processor - INFO - 发现正常商品:条码6911988006783, 数量=1.0, 单价=5.88 +2025-12-12 11:32:26,849 - app.core.excel.processor - INFO - 处理商品: 条码=6971295190759, 数量=20.0, 单价=15.0, 是否赠品=False +2025-12-12 11:32:26,849 - app.core.excel.processor - INFO - 发现正常商品:条码6971295190759, 数量=20.0, 单价=15.0 +2025-12-12 11:32:26,849 - app.core.excel.processor - INFO - 处理商品: 条码=6951957217307, 数量=20.0, 单价=26.6, 是否赠品=False +2025-12-12 11:32:26,849 - app.core.excel.processor - INFO - 发现正常商品:条码6951957217307, 数量=20.0, 单价=26.6 +2025-12-12 11:32:26,850 - app.core.excel.processor - INFO - 处理商品: 条码=6951957215723, 数量=20.0, 单价=26.6, 是否赠品=False +2025-12-12 11:32:26,850 - app.core.excel.processor - INFO - 发现正常商品:条码6951957215723, 数量=20.0, 单价=26.6 +2025-12-12 11:32:26,850 - app.core.excel.processor - INFO - 处理商品: 条码=6977530260072, 数量=25.0, 单价=17.5, 是否赠品=False +2025-12-12 11:32:26,850 - app.core.excel.processor - INFO - 发现正常商品:条码6977530260072, 数量=25.0, 单价=17.5 +2025-12-12 11:32:26,851 - app.core.excel.processor - INFO - 处理商品: 条码=6925300100400, 数量=25.0, 单价=17.5, 是否赠品=False +2025-12-12 11:32:26,851 - app.core.excel.processor - INFO - 发现正常商品:条码6925300100400, 数量=25.0, 单价=17.5 +2025-12-12 11:32:26,851 - app.core.excel.processor - INFO - 处理商品: 条码=6922170800638, 数量=20.0, 单价=15.0, 是否赠品=False +2025-12-12 11:32:26,852 - app.core.excel.processor - INFO - 发现正常商品:条码6922170800638, 数量=20.0, 单价=15.0 +2025-12-12 11:32:26,852 - app.core.excel.processor - INFO - 处理商品: 条码=690299810, 数量=16.0, 单价=23.2, 是否赠品=False +2025-12-12 11:32:26,852 - app.core.excel.processor - INFO - 发现正常商品:条码690299810, 数量=16.0, 单价=23.2 +2025-12-12 11:32:26,852 - app.core.excel.processor - INFO - 处理商品: 条码=6936869215092, 数量=15.0, 单价=1.5, 是否赠品=False +2025-12-12 11:32:26,852 - app.core.excel.processor - INFO - 发现正常商品:条码6936869215092, 数量=15.0, 单价=1.5 +2025-12-12 11:32:26,853 - app.core.excel.processor - INFO - 处理商品: 条码=6951957205762, 数量=20.0, 单价=14.2, 是否赠品=False +2025-12-12 11:32:26,853 - app.core.excel.processor - INFO - 发现正常商品:条码6951957205762, 数量=20.0, 单价=14.2 +2025-12-12 11:32:26,853 - app.core.excel.processor - INFO - 处理商品: 条码=6976481800078, 数量=30.0, 单价=22.5, 是否赠品=False +2025-12-12 11:32:26,853 - app.core.excel.processor - INFO - 发现正常商品:条码6976481800078, 数量=30.0, 单价=22.5 +2025-12-12 11:32:26,853 - app.core.excel.processor - INFO - 处理商品: 条码=6924743919266, 数量=5.0, 单价=4.79, 是否赠品=False +2025-12-12 11:32:26,853 - app.core.excel.processor - INFO - 发现正常商品:条码6924743919266, 数量=5.0, 单价=4.79 +2025-12-12 11:32:26,853 - app.core.excel.processor - INFO - 处理商品: 条码=6924743919259, 数量=5.0, 单价=4.79, 是否赠品=False +2025-12-12 11:32:26,853 - app.core.excel.processor - INFO - 发现正常商品:条码6924743919259, 数量=5.0, 单价=4.79 +2025-12-12 11:32:26,853 - app.core.excel.processor - INFO - 处理商品: 条码=6924743919228, 数量=3.0, 单价=4.79, 是否赠品=False +2025-12-12 11:32:26,853 - app.core.excel.processor - INFO - 发现正常商品:条码6924743919228, 数量=3.0, 单价=4.79 +2025-12-12 11:32:26,853 - app.core.excel.processor - INFO - 处理商品: 条码=6924743928077, 数量=1.0, 单价=1.35, 是否赠品=False +2025-12-12 11:32:26,853 - app.core.excel.processor - INFO - 发现正常商品:条码6924743928077, 数量=1.0, 单价=1.35 +2025-12-12 11:32:26,853 - app.core.excel.processor - INFO - 分组后共52 个不同条码的商品 +2025-12-12 11:32:26,853 - app.core.excel.processor - INFO - 条码 6954767432076 处理结果:正常商品数量48.0,单价55.68,赠品数量0 +2025-12-12 11:32:26,857 - app.core.excel.processor - INFO - 条码 6954767433073 处理结果:正常商品数量8.0,单价44.32,赠品数量0 +2025-12-12 11:32:26,858 - app.core.excel.processor - INFO - 条码 6901285992933 处理结果:正常商品数量40.0,单价21.52,赠品数量0 +2025-12-12 11:32:26,858 - app.core.excel.processor - INFO - 条码 6901285991530 处理结果:正常商品数量8.0,单价26.08,赠品数量0 +2025-12-12 11:32:26,858 - app.core.excel.processor - INFO - 条码 6901285991271 处理结果:正常商品数量60.0,单价24.6,赠品数量0 +2025-12-12 11:32:26,859 - app.core.excel.processor - INFO - 条码 6920584471017 处理结果:正常商品数量12.0,单价54.0,赠品数量0 +2025-12-12 11:32:26,859 - app.core.excel.processor - INFO - 条码 6901668934925 处理结果:正常商品数量5.0,单价6.5,赠品数量0 +2025-12-12 11:32:26,859 - app.core.excel.processor - INFO - 条码 6901668054715 处理结果:正常商品数量4.0,单价3.6,赠品数量0 +2025-12-12 11:32:26,859 - app.core.excel.processor - INFO - 条码 6901668053916 处理结果:正常商品数量3.0,单价3.6,赠品数量0 +2025-12-12 11:32:26,860 - app.core.excel.processor - INFO - 条码 6920907800616 处理结果:正常商品数量4.0,单价3.0,赠品数量0 +2025-12-12 11:32:26,860 - app.core.excel.processor - INFO - 条码 6935855700383 处理结果:正常商品数量8.0,单价38.0,赠品数量0 +2025-12-12 11:32:26,860 - app.core.excel.processor - INFO - 条码 6925683200957 处理结果:正常商品数量8.0,单价28.0,赠品数量0 +2025-12-12 11:32:26,860 - app.core.excel.processor - INFO - 条码 6901845044027 处理结果:正常商品数量4.0,单价5.55,赠品数量0 +2025-12-12 11:32:26,860 - app.core.excel.processor - INFO - 条码 6901845040968 处理结果:正常商品数量5.0,单价5.55,赠品数量0 +2025-12-12 11:32:26,860 - app.core.excel.processor - INFO - 条码 6901668935649 处理结果:正常商品数量6.0,单价1.99,赠品数量0 +2025-12-12 11:32:26,861 - app.core.excel.processor - INFO - 条码 6901668935663 处理结果:正常商品数量5.0,单价1.99,赠品数量0 +2025-12-12 11:32:26,861 - app.core.excel.processor - INFO - 条码 6947929617534 处理结果:正常商品数量4.0,单价2.66,赠品数量0 +2025-12-12 11:32:26,861 - app.core.excel.processor - INFO - 条码 6947929617138 处理结果:正常商品数量4.0,单价2.66,赠品数量0 +2025-12-12 11:32:26,862 - app.core.excel.processor - INFO - 条码 6901668200013 处理结果:正常商品数量3.0,单价3.5,赠品数量0 +2025-12-12 11:32:26,862 - app.core.excel.processor - INFO - 条码 6901668200303 处理结果:正常商品数量3.0,单价3.5,赠品数量0 +2025-12-12 11:32:26,863 - app.core.excel.processor - INFO - 条码 6911988005229 处理结果:正常商品数量4.0,单价2.25,赠品数量0 +2025-12-12 11:32:26,863 - app.core.excel.processor - INFO - 条码 6911988000293 处理结果:正常商品数量4.0,单价3.8,赠品数量0 +2025-12-12 11:32:26,863 - app.core.excel.processor - INFO - 条码 6911988000286 处理结果:正常商品数量3.0,单价3.8,赠品数量0 +2025-12-12 11:32:26,863 - app.core.excel.processor - INFO - 条码 6911988009777 处理结果:正常商品数量3.0,单价2.85,赠品数量0 +2025-12-12 11:32:26,863 - app.core.excel.processor - INFO - 条码 6911988009760 处理结果:正常商品数量3.0,单价2.85,赠品数量0 +2025-12-12 11:32:26,863 - app.core.excel.processor - INFO - 条码 6911988009784 处理结果:正常商品数量3.0,单价2.85,赠品数量0 +2025-12-12 11:32:26,863 - app.core.excel.processor - INFO - 条码 6901180581683 处理结果:正常商品数量2.0,单价3.8,赠品数量0 +2025-12-12 11:32:26,863 - app.core.excel.processor - INFO - 条码 6932024200552 处理结果:正常商品数量3.0,单价3.0,赠品数量0 +2025-12-12 11:32:26,863 - app.core.excel.processor - INFO - 条码 6932024200583 处理结果:正常商品数量4.0,单价1.7,赠品数量0 +2025-12-12 11:32:26,863 - app.core.excel.processor - INFO - 条码 6901668936714 处理结果:正常商品数量4.0,单价5.2,赠品数量0 +2025-12-12 11:32:26,866 - app.core.excel.processor - INFO - 条码 6901668062499 处理结果:正常商品数量4.0,单价5.2,赠品数量0 +2025-12-12 11:32:26,866 - app.core.excel.processor - INFO - 条码 6925332600046 处理结果:正常商品数量3.0,单价3.8,赠品数量0 +2025-12-12 11:32:26,866 - app.core.excel.processor - INFO - 条码 6921233904955 处理结果:正常商品数量4.0,单价3.8,赠品数量0 +2025-12-12 11:32:26,866 - app.core.excel.processor - INFO - 条码 6901180993387 处理结果:正常商品数量3.0,单价3.0,赠品数量0 +2025-12-12 11:32:26,866 - app.core.excel.processor - INFO - 条码 6901180993486 处理结果:正常商品数量3.0,单价3.0,赠品数量0 +2025-12-12 11:32:26,866 - app.core.excel.processor - INFO - 条码 6920546800046 处理结果:正常商品数量5.0,单价3.95,赠品数量0 +2025-12-12 11:32:26,867 - app.core.excel.processor - INFO - 条码 6920546800053 处理结果:正常商品数量5.0,单价4.5,赠品数量0 +2025-12-12 11:32:26,868 - app.core.excel.processor - INFO - 条码 6911988006783 处理结果:正常商品数量1.0,单价5.88,赠品数量0 +2025-12-12 11:32:26,868 - app.core.excel.processor - INFO - 条码 6971295190759 处理结果:正常商品数量20.0,单价15.0,赠品数量0 +2025-12-12 11:32:26,868 - app.core.excel.processor - INFO - 条码 6951957217307 处理结果:正常商品数量20.0,单价26.6,赠品数量0 +2025-12-12 11:32:26,869 - app.core.excel.processor - INFO - 条码 6951957215723 处理结果:正常商品数量20.0,单价26.6,赠品数量0 +2025-12-12 11:32:26,869 - app.core.excel.processor - INFO - 条码 6977530260072 处理结果:正常商品数量25.0,单价17.5,赠品数量0 +2025-12-12 11:32:26,869 - app.core.excel.processor - INFO - 条码 6925300100400 处理结果:正常商品数量25.0,单价17.5,赠品数量0 +2025-12-12 11:32:26,869 - app.core.excel.processor - INFO - 条码 6922170800638 处理结果:正常商品数量20.0,单价15.0,赠品数量0 +2025-12-12 11:32:26,870 - app.core.excel.processor - INFO - 条码 690299810 处理结果:正常商品数量16.0,单价23.2,赠品数量0 +2025-12-12 11:32:26,870 - app.core.excel.processor - INFO - 条码 6936869215092 处理结果:正常商品数量15.0,单价1.5,赠品数量0 +2025-12-12 11:32:26,870 - app.core.excel.processor - INFO - 条码 6951957205762 处理结果:正常商品数量20.0,单价14.2,赠品数量0 +2025-12-12 11:32:26,870 - app.core.excel.processor - INFO - 条码 6976481800078 处理结果:正常商品数量30.0,单价22.5,赠品数量0 +2025-12-12 11:32:26,871 - app.core.excel.processor - INFO - 条码 6924743919266 处理结果:正常商品数量5.0,单价4.79,赠品数量0 +2025-12-12 11:32:26,871 - app.core.excel.processor - INFO - 条码 6924743919259 处理结果:正常商品数量5.0,单价4.79,赠品数量0 +2025-12-12 11:32:26,871 - app.core.excel.processor - INFO - 条码 6924743919228 处理结果:正常商品数量3.0,单价4.79,赠品数量0 +2025-12-12 11:32:26,871 - app.core.excel.processor - INFO - 条码 6924743928077 处理结果:正常商品数量1.0,单价1.35,赠品数量0 +2025-12-12 11:32:26,873 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_蓉城易购-订单1765440157955.xls +2025-12-12 11:32:26,874 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_蓉城易购-订单1765440157955.xls +2025-12-12 11:34:40,235 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-12-12 11:34:40,235 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-12-12 11:34:40,235 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-12-12 11:34:40,241 - app.core.excel.processor - INFO - 开始处理Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765440157955.xlsx +2025-12-12 11:34:40,253 - app.core.excel.processor - INFO - 成功读取Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765440157955.xlsx, 共 58 行 +2025-12-12 11:34:40,255 - app.core.excel.processor - INFO - 找到可能的表头行: 第1行,评分: 75 +2025-12-12 11:34:40,255 - app.core.excel.processor - INFO - 识别到表头在第 1 行 +2025-12-12 11:34:40,267 - app.core.excel.processor - INFO - 使用表头行重新读取数据,共 57 行有效数据 +2025-12-12 11:34:40,268 - app.core.excel.processor - INFO - 找到部分匹配的条码列: 商品条码(小条码) (包含关键词: 条码) +2025-12-12 11:34:40,269 - app.core.excel.processor - INFO - 使用条码列: 商品条码(小条码) +2025-12-12 11:34:40,269 - app.core.excel.processor - INFO - 找到name列: 商品名称 +2025-12-12 11:34:40,269 - app.core.excel.processor - INFO - 找到quantity列(部分匹配): 订购数量(小单位) +2025-12-12 11:34:40,270 - app.core.excel.processor - INFO - 找到unit列: 单位 +2025-12-12 11:34:40,270 - app.core.excel.processor - INFO - 找到price列(部分匹配): 单价(小单位) +2025-12-12 11:34:40,270 - app.core.excel.processor - INFO - 找到amount列(部分匹配): 优惠后金额(小单位) +2025-12-12 11:34:40,271 - app.core.excel.processor - INFO - 检测到列映射: {'barcode': '商品条码(小条码)', 'name': '商品名称', 'quantity': '订购数量(小单位)', 'unit': '单位', 'price': '单价(小单位)', 'amount': '优惠后金额(小单位)'} +2025-12-12 11:34:40,275 - app.core.excel.processor - INFO - 从商品名称推断规格: 雪碧2L@ -> 2L*1, 包装数量=1 +2025-12-12 11:34:40,277 - app.core.excel.processor - INFO - 从商品名称推断规格: 怡宝饮用纯净水2.08L@ -> 2.08L*1, 包装数量=1 +2025-12-12 11:34:40,280 - app.core.excel.processor - INFO - 从商品名称推断规格: 怡宝纯净水4.5L@ -> 4.5L*1, 包装数量=1 +2025-12-12 11:34:40,282 - app.core.excel.processor - INFO - 从商品名称推断规格: 怡宝饮用纯净水1.555L@ -> 1.555L*1, 包装数量=1 +2025-12-12 11:34:40,284 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥薄脆酸甜草莓味95g@ -> 95*None, 包装数量=95 +2025-12-12 11:34:40,287 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥杯奥草莓味55g@ -> 55*None, 包装数量=55 +2025-12-12 11:34:40,289 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥杯奥巧克力55g@ -> 55*None, 包装数量=55 +2025-12-12 11:34:40,291 - app.core.excel.processor - INFO - 从商品名称推断规格: 好丽友蛋黄派2P46g@ -> 46*None, 包装数量=46 +2025-12-12 11:34:40,293 - app.core.excel.processor - INFO - 从商品名称推断规格: 都市牧场爽口含片正梅味38g@ -> 38*None, 包装数量=38 +2025-12-12 11:34:40,294 - app.core.excel.processor - INFO - 从商品名称推断规格: 林振合维C果C软糖什锦味68g -> 68*None, 包装数量=68 +2025-12-12 11:34:40,298 - app.core.excel.processor - INFO - 从商品名称推断规格: 格力高百醇柠檬48g@ -> 48*None, 包装数量=48 +2025-12-12 11:34:40,300 - app.core.excel.processor - INFO - 从商品名称推断规格: 格力高百醇抹茶慕斯味48g@ -> 48*None, 包装数量=48 +2025-12-12 11:34:40,302 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥饼干经典原味48.5g@ -> 48.5*None, 包装数量=48 +2025-12-12 11:34:40,304 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥饼干浓醇巧克力味48.5g@ -> 48.5*None, 包装数量=48 +2025-12-12 11:34:40,304 - app.core.excel.processor - INFO - 从商品名称推断规格: 法丽兹曲奇芝士巧克力70g@ -> 70*None, 包装数量=70 +2025-12-12 11:34:40,308 - app.core.excel.processor - INFO - 从商品名称推断规格: 法丽兹曲奇香草柠檬巧克力味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:34:40,310 - app.core.excel.processor - INFO - 从商品名称推断规格: 太平梳打饼干奶盐味100g@ -> 100*None, 包装数量=100 +2025-12-12 11:34:40,312 - app.core.excel.processor - INFO - 从商品名称推断规格: 太平梳打饼干海苔味100g@ -> 100*None, 包装数量=100 +2025-12-12 11:34:40,314 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园手指饼115g@ -> 115*None, 包装数量=115 +2025-12-12 11:34:40,315 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点杏仁酥饼146g@ -> 146*None, 包装数量=146 +2025-12-12 11:34:40,317 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点核桃酥饼146g@ -> 146*None, 包装数量=146 +2025-12-12 11:34:40,319 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点香脆腰果饼108g@ -> 108*None, 包装数量=108 +2025-12-12 11:34:40,321 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点香脆杏仁饼108g@ -> 108*None, 包装数量=108 +2025-12-12 11:34:40,324 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点香脆核桃饼108g@ -> 108*None, 包装数量=108 +2025-12-12 11:34:40,325 - app.core.excel.processor - INFO - 从商品名称推断规格: 嘉士利威化饼干草莓味115g@ -> 115*None, 包装数量=115 +2025-12-12 11:34:40,325 - app.core.excel.processor - INFO - 从商品名称推断规格: 亨裕饼朱古力味饼干186g -> 186*None, 包装数量=186 +2025-12-12 11:34:40,329 - app.core.excel.processor - INFO - 从商品名称推断规格: 亨裕早茶饼干110g -> 110*None, 包装数量=110 +2025-12-12 11:34:40,331 - app.core.excel.processor - INFO - 从商品名称推断规格: 趣多多香浓巧克力味85g@ -> 85*None, 包装数量=85 +2025-12-12 11:34:40,334 - app.core.excel.processor - INFO - 从商品名称推断规格: 趣多多缤纷逗巧克力85g@ -> 85*None, 包装数量=85 +2025-12-12 11:34:40,334 - app.core.excel.processor - INFO - 从商品名称推断规格: 米老头雪花煎卷椰奶味150g@ -> 150*None, 包装数量=150 +2025-12-12 11:34:40,338 - app.core.excel.processor - INFO - 从商品名称推断规格: 金富士牛乳饼干香浓牛奶味130g@ -> 130*None, 包装数量=130 +2025-12-12 11:34:40,340 - app.core.excel.processor - INFO - 从商品名称推断规格: 嘉士利果乐果香蓝莓味85g@ -> 85*None, 包装数量=85 +2025-12-12 11:34:40,342 - app.core.excel.processor - INFO - 从商品名称推断规格: 嘉士利果乐果香草莓味85g@ -> 85*None, 包装数量=85 +2025-12-12 11:34:40,345 - app.core.excel.processor - INFO - 从商品名称推断规格: 旺旺仙贝52g@ -> 52*None, 包装数量=52 +2025-12-12 11:34:40,347 - app.core.excel.processor - INFO - 从商品名称推断规格: 旺旺雪饼84g@ -> 84*None, 包装数量=84 +2025-12-12 11:34:40,349 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园蛋黄派230g@ -> 230*None, 包装数量=230 +2025-12-12 11:34:40,351 - app.core.excel.processor - INFO - 从商品名称推断规格: 豆多奇鹌鹑蛋豆干烧烤味22g -> 22*None, 包装数量=22 +2025-12-12 11:34:40,353 - app.core.excel.processor - INFO - 从商品名称推断规格: 劲仔手撕肉干麻辣味10g@ -> 10*None, 包装数量=10 +2025-12-12 11:34:40,355 - app.core.excel.processor - INFO - 从商品名称推断规格: 劲仔手撕肉干香辣味10g@ -> 10*None, 包装数量=10 +2025-12-12 11:34:40,357 - app.core.excel.processor - INFO - 从商品名称推断规格: 登荣香辣爽口鸡23g -> 23*None, 包装数量=23 +2025-12-12 11:34:40,360 - app.core.excel.processor - INFO - 从商品名称推断规格: 德芙脆香米脆米心牛奶巧克力12g@ -> 12*None, 包装数量=12 +2025-12-12 11:34:40,361 - app.core.excel.processor - INFO - 从商品名称推断规格: 味芝元洞庭鱼排香辣味26g -> 26*None, 包装数量=26 +2025-12-12 11:34:40,364 - app.core.excel.processor - INFO - 从商品名称推断规格: 劲仔小鱼麻辣小鱼12g@ -> 12*None, 包装数量=12 +2025-12-12 11:34:40,366 - app.core.excel.processor - INFO - 从商品名称推断规格: 缺牙齿素牛肚香辣味16g -> 16*None, 包装数量=16 +2025-12-12 11:34:40,368 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事青柠味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:34:40,370 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事黄瓜味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:34:40,371 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事德克萨斯烧烤味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:34:40,371 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事薯片经典原味23g(串串装)@ -> 23*None, 包装数量=23 +2025-12-12 11:34:40,376 - app.core.excel.processor - INFO - 提取到 52 个商品信息 +2025-12-12 11:34:40,380 - app.core.excel.processor - INFO - 开始处理52 个产品信息 +2025-12-12 11:34:40,380 - app.core.excel.processor - INFO - 处理商品: 条码=6954767432076, 数量=48.0, 单价=55.68, 是否赠品=False +2025-12-12 11:34:40,381 - app.core.excel.processor - INFO - 发现正常商品:条码6954767432076, 数量=48.0, 单价=55.68 +2025-12-12 11:34:40,381 - app.core.excel.processor - INFO - 处理商品: 条码=6954767433073, 数量=8.0, 单价=44.32, 是否赠品=False +2025-12-12 11:34:40,381 - app.core.excel.processor - INFO - 发现正常商品:条码6954767433073, 数量=8.0, 单价=44.32 +2025-12-12 11:34:40,382 - app.core.excel.processor - INFO - 处理商品: 条码=6901285992933, 数量=40.0, 单价=21.52, 是否赠品=False +2025-12-12 11:34:40,382 - app.core.excel.processor - INFO - 发现正常商品:条码6901285992933, 数量=40.0, 单价=21.52 +2025-12-12 11:34:40,383 - app.core.excel.processor - INFO - 处理商品: 条码=6901285991530, 数量=8.0, 单价=26.08, 是否赠品=False +2025-12-12 11:34:40,383 - app.core.excel.processor - INFO - 发现正常商品:条码6901285991530, 数量=8.0, 单价=26.08 +2025-12-12 11:34:40,383 - app.core.excel.processor - INFO - 处理商品: 条码=6901285991271, 数量=60.0, 单价=24.6, 是否赠品=False +2025-12-12 11:34:40,383 - app.core.excel.processor - INFO - 发现正常商品:条码6901285991271, 数量=60.0, 单价=24.6 +2025-12-12 11:34:40,384 - app.core.excel.processor - INFO - 处理商品: 条码=6920584471017, 数量=12.0, 单价=54.0, 是否赠品=False +2025-12-12 11:34:40,384 - app.core.excel.processor - INFO - 发现正常商品:条码6920584471017, 数量=12.0, 单价=54.0 +2025-12-12 11:34:40,385 - app.core.excel.processor - INFO - 处理商品: 条码=6901668934925, 数量=5.0, 单价=6.5, 是否赠品=False +2025-12-12 11:34:40,385 - app.core.excel.processor - INFO - 发现正常商品:条码6901668934925, 数量=5.0, 单价=6.5 +2025-12-12 11:34:40,385 - app.core.excel.processor - INFO - 处理商品: 条码=6901668054715, 数量=4.0, 单价=3.6, 是否赠品=False +2025-12-12 11:34:40,385 - app.core.excel.processor - INFO - 发现正常商品:条码6901668054715, 数量=4.0, 单价=3.6 +2025-12-12 11:34:40,386 - app.core.excel.processor - INFO - 处理商品: 条码=6901668053916, 数量=3.0, 单价=3.6, 是否赠品=False +2025-12-12 11:34:40,386 - app.core.excel.processor - INFO - 发现正常商品:条码6901668053916, 数量=3.0, 单价=3.6 +2025-12-12 11:34:40,386 - app.core.excel.processor - INFO - 处理商品: 条码=6920907800616, 数量=4.0, 单价=3.0, 是否赠品=False +2025-12-12 11:34:40,387 - app.core.excel.processor - INFO - 发现正常商品:条码6920907800616, 数量=4.0, 单价=3.0 +2025-12-12 11:34:40,387 - app.core.excel.processor - INFO - 处理商品: 条码=6935855700383, 数量=8.0, 单价=38.0, 是否赠品=False +2025-12-12 11:34:40,387 - app.core.excel.processor - INFO - 发现正常商品:条码6935855700383, 数量=8.0, 单价=38.0 +2025-12-12 11:34:40,388 - app.core.excel.processor - INFO - 处理商品: 条码=6925683200957, 数量=8.0, 单价=28.0, 是否赠品=False +2025-12-12 11:34:40,388 - app.core.excel.processor - INFO - 发现正常商品:条码6925683200957, 数量=8.0, 单价=28.0 +2025-12-12 11:34:40,388 - app.core.excel.processor - INFO - 处理商品: 条码=6901845044027, 数量=4.0, 单价=5.55, 是否赠品=False +2025-12-12 11:34:40,388 - app.core.excel.processor - INFO - 发现正常商品:条码6901845044027, 数量=4.0, 单价=5.55 +2025-12-12 11:34:40,389 - app.core.excel.processor - INFO - 处理商品: 条码=6901845040968, 数量=5.0, 单价=5.55, 是否赠品=False +2025-12-12 11:34:40,389 - app.core.excel.processor - INFO - 发现正常商品:条码6901845040968, 数量=5.0, 单价=5.55 +2025-12-12 11:34:40,389 - app.core.excel.processor - INFO - 处理商品: 条码=6901668935649, 数量=6.0, 单价=1.99, 是否赠品=False +2025-12-12 11:34:40,389 - app.core.excel.processor - INFO - 发现正常商品:条码6901668935649, 数量=6.0, 单价=1.99 +2025-12-12 11:34:40,390 - app.core.excel.processor - INFO - 处理商品: 条码=6901668935663, 数量=5.0, 单价=1.99, 是否赠品=False +2025-12-12 11:34:40,390 - app.core.excel.processor - INFO - 发现正常商品:条码6901668935663, 数量=5.0, 单价=1.99 +2025-12-12 11:34:40,390 - app.core.excel.processor - INFO - 处理商品: 条码=6947929617534, 数量=4.0, 单价=2.66, 是否赠品=False +2025-12-12 11:34:40,390 - app.core.excel.processor - INFO - 发现正常商品:条码6947929617534, 数量=4.0, 单价=2.66 +2025-12-12 11:34:40,391 - app.core.excel.processor - INFO - 处理商品: 条码=6947929617138, 数量=4.0, 单价=2.66, 是否赠品=False +2025-12-12 11:34:40,391 - app.core.excel.processor - INFO - 发现正常商品:条码6947929617138, 数量=4.0, 单价=2.66 +2025-12-12 11:34:40,391 - app.core.excel.processor - INFO - 处理商品: 条码=6901668200013, 数量=3.0, 单价=3.5, 是否赠品=False +2025-12-12 11:34:40,392 - app.core.excel.processor - INFO - 发现正常商品:条码6901668200013, 数量=3.0, 单价=3.5 +2025-12-12 11:34:40,392 - app.core.excel.processor - INFO - 处理商品: 条码=6901668200303, 数量=3.0, 单价=3.5, 是否赠品=False +2025-12-12 11:34:40,392 - app.core.excel.processor - INFO - 发现正常商品:条码6901668200303, 数量=3.0, 单价=3.5 +2025-12-12 11:34:40,392 - app.core.excel.processor - INFO - 处理商品: 条码=6911988005229, 数量=4.0, 单价=2.25, 是否赠品=False +2025-12-12 11:34:40,393 - app.core.excel.processor - INFO - 发现正常商品:条码6911988005229, 数量=4.0, 单价=2.25 +2025-12-12 11:34:40,393 - app.core.excel.processor - INFO - 处理商品: 条码=6911988000293, 数量=4.0, 单价=3.8, 是否赠品=False +2025-12-12 11:34:40,393 - app.core.excel.processor - INFO - 发现正常商品:条码6911988000293, 数量=4.0, 单价=3.8 +2025-12-12 11:34:40,394 - app.core.excel.processor - INFO - 处理商品: 条码=6911988000286, 数量=3.0, 单价=3.8, 是否赠品=False +2025-12-12 11:34:40,394 - app.core.excel.processor - INFO - 发现正常商品:条码6911988000286, 数量=3.0, 单价=3.8 +2025-12-12 11:34:40,395 - app.core.excel.processor - INFO - 处理商品: 条码=6911988009777, 数量=3.0, 单价=2.85, 是否赠品=False +2025-12-12 11:34:40,395 - app.core.excel.processor - INFO - 发现正常商品:条码6911988009777, 数量=3.0, 单价=2.85 +2025-12-12 11:34:40,395 - app.core.excel.processor - INFO - 处理商品: 条码=6911988009760, 数量=3.0, 单价=2.85, 是否赠品=False +2025-12-12 11:34:40,396 - app.core.excel.processor - INFO - 发现正常商品:条码6911988009760, 数量=3.0, 单价=2.85 +2025-12-12 11:34:40,396 - app.core.excel.processor - INFO - 处理商品: 条码=6911988009784, 数量=3.0, 单价=2.85, 是否赠品=False +2025-12-12 11:34:40,396 - app.core.excel.processor - INFO - 发现正常商品:条码6911988009784, 数量=3.0, 单价=2.85 +2025-12-12 11:34:40,396 - app.core.excel.processor - INFO - 处理商品: 条码=6901180581683, 数量=2.0, 单价=3.8, 是否赠品=False +2025-12-12 11:34:40,396 - app.core.excel.processor - INFO - 发现正常商品:条码6901180581683, 数量=2.0, 单价=3.8 +2025-12-12 11:34:40,396 - app.core.excel.processor - INFO - 处理商品: 条码=6932024200552, 数量=3.0, 单价=3.0, 是否赠品=False +2025-12-12 11:34:40,396 - app.core.excel.processor - INFO - 发现正常商品:条码6932024200552, 数量=3.0, 单价=3.0 +2025-12-12 11:34:40,396 - app.core.excel.processor - INFO - 处理商品: 条码=6932024200583, 数量=4.0, 单价=1.7, 是否赠品=False +2025-12-12 11:34:40,396 - app.core.excel.processor - INFO - 发现正常商品:条码6932024200583, 数量=4.0, 单价=1.7 +2025-12-12 11:34:40,396 - app.core.excel.processor - INFO - 处理商品: 条码=6901668936714, 数量=4.0, 单价=5.2, 是否赠品=False +2025-12-12 11:34:40,396 - app.core.excel.processor - INFO - 发现正常商品:条码6901668936714, 数量=4.0, 单价=5.2 +2025-12-12 11:34:40,396 - app.core.excel.processor - INFO - 处理商品: 条码=6901668062499, 数量=4.0, 单价=5.2, 是否赠品=False +2025-12-12 11:34:40,399 - app.core.excel.processor - INFO - 发现正常商品:条码6901668062499, 数量=4.0, 单价=5.2 +2025-12-12 11:34:40,399 - app.core.excel.processor - INFO - 处理商品: 条码=6925332600046, 数量=3.0, 单价=3.8, 是否赠品=False +2025-12-12 11:34:40,399 - app.core.excel.processor - INFO - 发现正常商品:条码6925332600046, 数量=3.0, 单价=3.8 +2025-12-12 11:34:40,400 - app.core.excel.processor - INFO - 处理商品: 条码=6921233904955, 数量=4.0, 单价=3.8, 是否赠品=False +2025-12-12 11:34:40,400 - app.core.excel.processor - INFO - 发现正常商品:条码6921233904955, 数量=4.0, 单价=3.8 +2025-12-12 11:34:40,400 - app.core.excel.processor - INFO - 处理商品: 条码=6901180993387, 数量=3.0, 单价=3.0, 是否赠品=False +2025-12-12 11:34:40,401 - app.core.excel.processor - INFO - 发现正常商品:条码6901180993387, 数量=3.0, 单价=3.0 +2025-12-12 11:34:40,401 - app.core.excel.processor - INFO - 处理商品: 条码=6901180993486, 数量=3.0, 单价=3.0, 是否赠品=False +2025-12-12 11:34:40,401 - app.core.excel.processor - INFO - 发现正常商品:条码6901180993486, 数量=3.0, 单价=3.0 +2025-12-12 11:34:40,401 - app.core.excel.processor - INFO - 处理商品: 条码=6920546800046, 数量=5.0, 单价=3.95, 是否赠品=False +2025-12-12 11:34:40,402 - app.core.excel.processor - INFO - 发现正常商品:条码6920546800046, 数量=5.0, 单价=3.95 +2025-12-12 11:34:40,402 - app.core.excel.processor - INFO - 处理商品: 条码=6920546800053, 数量=5.0, 单价=4.5, 是否赠品=False +2025-12-12 11:34:40,402 - app.core.excel.processor - INFO - 发现正常商品:条码6920546800053, 数量=5.0, 单价=4.5 +2025-12-12 11:34:40,403 - app.core.excel.processor - INFO - 处理商品: 条码=6911988006783, 数量=1.0, 单价=5.88, 是否赠品=False +2025-12-12 11:34:40,403 - app.core.excel.processor - INFO - 发现正常商品:条码6911988006783, 数量=1.0, 单价=5.88 +2025-12-12 11:34:40,403 - app.core.excel.processor - INFO - 处理商品: 条码=6971295190759, 数量=20.0, 单价=15.0, 是否赠品=False +2025-12-12 11:34:40,404 - app.core.excel.processor - INFO - 发现正常商品:条码6971295190759, 数量=20.0, 单价=15.0 +2025-12-12 11:34:40,404 - app.core.excel.processor - INFO - 处理商品: 条码=6951957217307, 数量=20.0, 单价=26.6, 是否赠品=False +2025-12-12 11:34:40,404 - app.core.excel.processor - INFO - 发现正常商品:条码6951957217307, 数量=20.0, 单价=26.6 +2025-12-12 11:34:40,405 - app.core.excel.processor - INFO - 处理商品: 条码=6951957215723, 数量=20.0, 单价=26.6, 是否赠品=False +2025-12-12 11:34:40,405 - app.core.excel.processor - INFO - 发现正常商品:条码6951957215723, 数量=20.0, 单价=26.6 +2025-12-12 11:34:40,405 - app.core.excel.processor - INFO - 处理商品: 条码=6977530260072, 数量=25.0, 单价=17.5, 是否赠品=False +2025-12-12 11:34:40,405 - app.core.excel.processor - INFO - 发现正常商品:条码6977530260072, 数量=25.0, 单价=17.5 +2025-12-12 11:34:40,405 - app.core.excel.processor - INFO - 处理商品: 条码=6925300100400, 数量=25.0, 单价=17.5, 是否赠品=False +2025-12-12 11:34:40,405 - app.core.excel.processor - INFO - 发现正常商品:条码6925300100400, 数量=25.0, 单价=17.5 +2025-12-12 11:34:40,405 - app.core.excel.processor - INFO - 处理商品: 条码=6922170800638, 数量=20.0, 单价=15.0, 是否赠品=False +2025-12-12 11:34:40,405 - app.core.excel.processor - INFO - 发现正常商品:条码6922170800638, 数量=20.0, 单价=15.0 +2025-12-12 11:34:40,405 - app.core.excel.processor - INFO - 处理商品: 条码=690299810, 数量=16.0, 单价=23.2, 是否赠品=False +2025-12-12 11:34:40,408 - app.core.excel.processor - INFO - 发现正常商品:条码690299810, 数量=16.0, 单价=23.2 +2025-12-12 11:34:40,408 - app.core.excel.processor - INFO - 处理商品: 条码=6936869215092, 数量=15.0, 单价=1.5, 是否赠品=False +2025-12-12 11:34:40,408 - app.core.excel.processor - INFO - 发现正常商品:条码6936869215092, 数量=15.0, 单价=1.5 +2025-12-12 11:34:40,408 - app.core.excel.processor - INFO - 处理商品: 条码=6951957205762, 数量=20.0, 单价=14.2, 是否赠品=False +2025-12-12 11:34:40,409 - app.core.excel.processor - INFO - 发现正常商品:条码6951957205762, 数量=20.0, 单价=14.2 +2025-12-12 11:34:40,409 - app.core.excel.processor - INFO - 处理商品: 条码=6976481800078, 数量=30.0, 单价=22.5, 是否赠品=False +2025-12-12 11:34:40,409 - app.core.excel.processor - INFO - 发现正常商品:条码6976481800078, 数量=30.0, 单价=22.5 +2025-12-12 11:34:40,409 - app.core.excel.processor - INFO - 处理商品: 条码=6924743919266, 数量=5.0, 单价=4.79, 是否赠品=False +2025-12-12 11:34:40,411 - app.core.excel.processor - INFO - 发现正常商品:条码6924743919266, 数量=5.0, 单价=4.79 +2025-12-12 11:34:40,411 - app.core.excel.processor - INFO - 处理商品: 条码=6924743919259, 数量=5.0, 单价=4.79, 是否赠品=False +2025-12-12 11:34:40,411 - app.core.excel.processor - INFO - 发现正常商品:条码6924743919259, 数量=5.0, 单价=4.79 +2025-12-12 11:34:40,411 - app.core.excel.processor - INFO - 处理商品: 条码=6924743919228, 数量=3.0, 单价=4.79, 是否赠品=False +2025-12-12 11:34:40,411 - app.core.excel.processor - INFO - 发现正常商品:条码6924743919228, 数量=3.0, 单价=4.79 +2025-12-12 11:34:40,411 - app.core.excel.processor - INFO - 处理商品: 条码=6924743928077, 数量=1.0, 单价=1.35, 是否赠品=False +2025-12-12 11:34:40,412 - app.core.excel.processor - INFO - 发现正常商品:条码6924743928077, 数量=1.0, 单价=1.35 +2025-12-12 11:34:40,412 - app.core.excel.processor - INFO - 分组后共52 个不同条码的商品 +2025-12-12 11:34:40,412 - app.core.excel.processor - INFO - 条码 6954767432076 处理结果:正常商品数量48.0,单价55.68,赠品数量0 +2025-12-12 11:34:40,413 - app.core.excel.processor - INFO - 条码 6954767433073 处理结果:正常商品数量8.0,单价44.32,赠品数量0 +2025-12-12 11:34:40,413 - app.core.excel.processor - INFO - 条码 6901285992933 处理结果:正常商品数量40.0,单价21.52,赠品数量0 +2025-12-12 11:34:40,413 - app.core.excel.processor - INFO - 条码 6901285991530 处理结果:正常商品数量8.0,单价26.08,赠品数量0 +2025-12-12 11:34:40,414 - app.core.excel.processor - INFO - 条码 6901285991271 处理结果:正常商品数量60.0,单价24.6,赠品数量0 +2025-12-12 11:34:40,414 - app.core.excel.processor - INFO - 条码 6920584471017 处理结果:正常商品数量12.0,单价54.0,赠品数量0 +2025-12-12 11:34:40,414 - app.core.excel.processor - INFO - 条码 6901668934925 处理结果:正常商品数量5.0,单价6.5,赠品数量0 +2025-12-12 11:34:40,414 - app.core.excel.processor - INFO - 条码 6901668054715 处理结果:正常商品数量4.0,单价3.6,赠品数量0 +2025-12-12 11:34:40,414 - app.core.excel.processor - INFO - 条码 6901668053916 处理结果:正常商品数量3.0,单价3.6,赠品数量0 +2025-12-12 11:34:40,414 - app.core.excel.processor - INFO - 条码 6920907800616 处理结果:正常商品数量4.0,单价3.0,赠品数量0 +2025-12-12 11:34:40,414 - app.core.excel.processor - INFO - 条码 6935855700383 处理结果:正常商品数量8.0,单价38.0,赠品数量0 +2025-12-12 11:34:40,414 - app.core.excel.processor - INFO - 条码 6925683200957 处理结果:正常商品数量8.0,单价28.0,赠品数量0 +2025-12-12 11:34:40,414 - app.core.excel.processor - INFO - 条码 6901845044027 处理结果:正常商品数量4.0,单价5.55,赠品数量0 +2025-12-12 11:34:40,414 - app.core.excel.processor - INFO - 条码 6901845040968 处理结果:正常商品数量5.0,单价5.55,赠品数量0 +2025-12-12 11:34:40,414 - app.core.excel.processor - INFO - 条码 6901668935649 处理结果:正常商品数量6.0,单价1.99,赠品数量0 +2025-12-12 11:34:40,418 - app.core.excel.processor - INFO - 条码 6901668935663 处理结果:正常商品数量5.0,单价1.99,赠品数量0 +2025-12-12 11:34:40,418 - app.core.excel.processor - INFO - 条码 6947929617534 处理结果:正常商品数量4.0,单价2.66,赠品数量0 +2025-12-12 11:34:40,418 - app.core.excel.processor - INFO - 条码 6947929617138 处理结果:正常商品数量4.0,单价2.66,赠品数量0 +2025-12-12 11:34:40,418 - app.core.excel.processor - INFO - 条码 6901668200013 处理结果:正常商品数量3.0,单价3.5,赠品数量0 +2025-12-12 11:34:40,418 - app.core.excel.processor - INFO - 条码 6901668200303 处理结果:正常商品数量3.0,单价3.5,赠品数量0 +2025-12-12 11:34:40,418 - app.core.excel.processor - INFO - 条码 6911988005229 处理结果:正常商品数量4.0,单价2.25,赠品数量0 +2025-12-12 11:34:40,419 - app.core.excel.processor - INFO - 条码 6911988000293 处理结果:正常商品数量4.0,单价3.8,赠品数量0 +2025-12-12 11:34:40,420 - app.core.excel.processor - INFO - 条码 6911988000286 处理结果:正常商品数量3.0,单价3.8,赠品数量0 +2025-12-12 11:34:40,420 - app.core.excel.processor - INFO - 条码 6911988009777 处理结果:正常商品数量3.0,单价2.85,赠品数量0 +2025-12-12 11:34:40,420 - app.core.excel.processor - INFO - 条码 6911988009760 处理结果:正常商品数量3.0,单价2.85,赠品数量0 +2025-12-12 11:34:40,420 - app.core.excel.processor - INFO - 条码 6911988009784 处理结果:正常商品数量3.0,单价2.85,赠品数量0 +2025-12-12 11:34:40,421 - app.core.excel.processor - INFO - 条码 6901180581683 处理结果:正常商品数量2.0,单价3.8,赠品数量0 +2025-12-12 11:34:40,421 - app.core.excel.processor - INFO - 条码 6932024200552 处理结果:正常商品数量3.0,单价3.0,赠品数量0 +2025-12-12 11:34:40,421 - app.core.excel.processor - INFO - 条码 6932024200583 处理结果:正常商品数量4.0,单价1.7,赠品数量0 +2025-12-12 11:34:40,421 - app.core.excel.processor - INFO - 条码 6901668936714 处理结果:正常商品数量4.0,单价5.2,赠品数量0 +2025-12-12 11:34:40,422 - app.core.excel.processor - INFO - 条码 6901668062499 处理结果:正常商品数量4.0,单价5.2,赠品数量0 +2025-12-12 11:34:40,422 - app.core.excel.processor - INFO - 条码 6925332600046 处理结果:正常商品数量3.0,单价3.8,赠品数量0 +2025-12-12 11:34:40,422 - app.core.excel.processor - INFO - 条码 6921233904955 处理结果:正常商品数量4.0,单价3.8,赠品数量0 +2025-12-12 11:34:40,422 - app.core.excel.processor - INFO - 条码 6901180993387 处理结果:正常商品数量3.0,单价3.0,赠品数量0 +2025-12-12 11:34:40,423 - app.core.excel.processor - INFO - 条码 6901180993486 处理结果:正常商品数量3.0,单价3.0,赠品数量0 +2025-12-12 11:34:40,423 - app.core.excel.processor - INFO - 条码 6920546800046 处理结果:正常商品数量5.0,单价3.95,赠品数量0 +2025-12-12 11:34:40,423 - app.core.excel.processor - INFO - 条码 6920546800053 处理结果:正常商品数量5.0,单价4.5,赠品数量0 +2025-12-12 11:34:40,423 - app.core.excel.processor - INFO - 条码 6911988006783 处理结果:正常商品数量1.0,单价5.88,赠品数量0 +2025-12-12 11:34:40,424 - app.core.excel.processor - INFO - 条码 6971295190759 处理结果:正常商品数量20.0,单价15.0,赠品数量0 +2025-12-12 11:34:40,424 - app.core.excel.processor - INFO - 条码 6951957217307 处理结果:正常商品数量20.0,单价26.6,赠品数量0 +2025-12-12 11:34:40,424 - app.core.excel.processor - INFO - 条码 6951957215723 处理结果:正常商品数量20.0,单价26.6,赠品数量0 +2025-12-12 11:34:40,424 - app.core.excel.processor - INFO - 条码 6977530260072 处理结果:正常商品数量25.0,单价17.5,赠品数量0 +2025-12-12 11:34:40,424 - app.core.excel.processor - INFO - 条码 6925300100400 处理结果:正常商品数量25.0,单价17.5,赠品数量0 +2025-12-12 11:34:40,424 - app.core.excel.processor - INFO - 条码 6922170800638 处理结果:正常商品数量20.0,单价15.0,赠品数量0 +2025-12-12 11:34:40,424 - app.core.excel.processor - INFO - 条码 690299810 处理结果:正常商品数量16.0,单价23.2,赠品数量0 +2025-12-12 11:34:40,424 - app.core.excel.processor - INFO - 条码 6936869215092 处理结果:正常商品数量15.0,单价1.5,赠品数量0 +2025-12-12 11:34:40,424 - app.core.excel.processor - INFO - 条码 6951957205762 处理结果:正常商品数量20.0,单价14.2,赠品数量0 +2025-12-12 11:34:40,424 - app.core.excel.processor - INFO - 条码 6976481800078 处理结果:正常商品数量30.0,单价22.5,赠品数量0 +2025-12-12 11:34:40,424 - app.core.excel.processor - INFO - 条码 6924743919266 处理结果:正常商品数量5.0,单价4.79,赠品数量0 +2025-12-12 11:34:40,424 - app.core.excel.processor - INFO - 条码 6924743919259 处理结果:正常商品数量5.0,单价4.79,赠品数量0 +2025-12-12 11:34:40,424 - app.core.excel.processor - INFO - 条码 6924743919228 处理结果:正常商品数量3.0,单价4.79,赠品数量0 +2025-12-12 11:34:40,424 - app.core.excel.processor - INFO - 条码 6924743928077 处理结果:正常商品数量1.0,单价1.35,赠品数量0 +2025-12-12 11:34:40,428 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_蓉城易购-订单1765440157955.xls +2025-12-12 11:34:40,456 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_蓉城易购-订单1765440157955.xls +2025-12-12 11:38:53,256 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-12-12 11:38:53,256 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-12-12 11:38:53,256 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-12-12 11:38:53,260 - app.core.excel.processor - INFO - 开始处理Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765440157955.xlsx +2025-12-12 11:38:53,272 - app.core.excel.processor - INFO - 成功读取Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765440157955.xlsx, 共 58 行 +2025-12-12 11:38:53,275 - app.core.excel.processor - INFO - 找到可能的表头行: 第1行,评分: 75 +2025-12-12 11:38:53,275 - app.core.excel.processor - INFO - 识别到表头在第 1 行 +2025-12-12 11:38:53,286 - app.core.excel.processor - INFO - 使用表头行重新读取数据,共 57 行有效数据 +2025-12-12 11:38:53,288 - app.core.excel.processor - INFO - 找到部分匹配的条码列: 商品条码(小条码) (包含关键词: 条码) +2025-12-12 11:38:53,288 - app.core.excel.processor - INFO - 使用条码列: 商品条码(小条码) +2025-12-12 11:38:53,288 - app.core.excel.processor - INFO - 找到name列: 商品名称 +2025-12-12 11:38:53,289 - app.core.excel.processor - INFO - 找到quantity列(部分匹配): 订购数量(小单位) +2025-12-12 11:38:53,289 - app.core.excel.processor - INFO - 找到unit列: 单位 +2025-12-12 11:38:53,290 - app.core.excel.processor - INFO - 找到price列(部分匹配): 单价(小单位) +2025-12-12 11:38:53,290 - app.core.excel.processor - INFO - 找到amount列(部分匹配): 优惠后金额(小单位) +2025-12-12 11:38:53,290 - app.core.excel.processor - INFO - 检测到列映射: {'barcode': '商品条码(小条码)', 'name': '商品名称', 'quantity': '订购数量(小单位)', 'unit': '单位', 'price': '单价(小单位)', 'amount': '优惠后金额(小单位)'} +2025-12-12 11:38:53,294 - app.core.excel.processor - INFO - 从商品名称推断规格: 雪碧2L@ -> 2L*1, 包装数量=1 +2025-12-12 11:38:53,298 - app.core.excel.processor - INFO - 从商品名称推断规格: 怡宝饮用纯净水2.08L@ -> 2.08L*1, 包装数量=1 +2025-12-12 11:38:53,301 - app.core.excel.processor - INFO - 从商品名称推断规格: 怡宝纯净水4.5L@ -> 4.5L*1, 包装数量=1 +2025-12-12 11:38:53,303 - app.core.excel.processor - INFO - 从商品名称推断规格: 怡宝饮用纯净水1.555L@ -> 1.555L*1, 包装数量=1 +2025-12-12 11:38:53,306 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥薄脆酸甜草莓味95g@ -> 95*None, 包装数量=95 +2025-12-12 11:38:53,307 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥杯奥草莓味55g@ -> 55*None, 包装数量=55 +2025-12-12 11:38:53,307 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥杯奥巧克力55g@ -> 55*None, 包装数量=55 +2025-12-12 11:38:53,313 - app.core.excel.processor - INFO - 从商品名称推断规格: 好丽友蛋黄派2P46g@ -> 46*None, 包装数量=46 +2025-12-12 11:38:53,315 - app.core.excel.processor - INFO - 从商品名称推断规格: 都市牧场爽口含片正梅味38g@ -> 38*None, 包装数量=38 +2025-12-12 11:38:53,317 - app.core.excel.processor - INFO - 从商品名称推断规格: 林振合维C果C软糖什锦味68g -> 68*None, 包装数量=68 +2025-12-12 11:38:53,321 - app.core.excel.processor - INFO - 从商品名称推断规格: 格力高百醇柠檬48g@ -> 48*None, 包装数量=48 +2025-12-12 11:38:53,323 - app.core.excel.processor - INFO - 从商品名称推断规格: 格力高百醇抹茶慕斯味48g@ -> 48*None, 包装数量=48 +2025-12-12 11:38:53,325 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥饼干经典原味48.5g@ -> 48.5*None, 包装数量=48 +2025-12-12 11:38:53,328 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥饼干浓醇巧克力味48.5g@ -> 48.5*None, 包装数量=48 +2025-12-12 11:38:53,330 - app.core.excel.processor - INFO - 从商品名称推断规格: 法丽兹曲奇芝士巧克力70g@ -> 70*None, 包装数量=70 +2025-12-12 11:38:53,332 - app.core.excel.processor - INFO - 从商品名称推断规格: 法丽兹曲奇香草柠檬巧克力味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:38:53,335 - app.core.excel.processor - INFO - 从商品名称推断规格: 太平梳打饼干奶盐味100g@ -> 100*None, 包装数量=100 +2025-12-12 11:38:53,337 - app.core.excel.processor - INFO - 从商品名称推断规格: 太平梳打饼干海苔味100g@ -> 100*None, 包装数量=100 +2025-12-12 11:38:53,339 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园手指饼115g@ -> 115*None, 包装数量=115 +2025-12-12 11:38:53,342 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点杏仁酥饼146g@ -> 146*None, 包装数量=146 +2025-12-12 11:38:53,345 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点核桃酥饼146g@ -> 146*None, 包装数量=146 +2025-12-12 11:38:53,347 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点香脆腰果饼108g@ -> 108*None, 包装数量=108 +2025-12-12 11:38:53,350 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点香脆杏仁饼108g@ -> 108*None, 包装数量=108 +2025-12-12 11:38:53,352 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点香脆核桃饼108g@ -> 108*None, 包装数量=108 +2025-12-12 11:38:53,353 - app.core.excel.processor - INFO - 从商品名称推断规格: 嘉士利威化饼干草莓味115g@ -> 115*None, 包装数量=115 +2025-12-12 11:38:53,355 - app.core.excel.processor - INFO - 从商品名称推断规格: 亨裕饼朱古力味饼干186g -> 186*None, 包装数量=186 +2025-12-12 11:38:53,358 - app.core.excel.processor - INFO - 从商品名称推断规格: 亨裕早茶饼干110g -> 110*None, 包装数量=110 +2025-12-12 11:38:53,359 - app.core.excel.processor - INFO - 从商品名称推断规格: 趣多多香浓巧克力味85g@ -> 85*None, 包装数量=85 +2025-12-12 11:38:53,361 - app.core.excel.processor - INFO - 从商品名称推断规格: 趣多多缤纷逗巧克力85g@ -> 85*None, 包装数量=85 +2025-12-12 11:38:53,362 - app.core.excel.processor - INFO - 从商品名称推断规格: 米老头雪花煎卷椰奶味150g@ -> 150*None, 包装数量=150 +2025-12-12 11:38:53,366 - app.core.excel.processor - INFO - 从商品名称推断规格: 金富士牛乳饼干香浓牛奶味130g@ -> 130*None, 包装数量=130 +2025-12-12 11:38:53,367 - app.core.excel.processor - INFO - 从商品名称推断规格: 嘉士利果乐果香蓝莓味85g@ -> 85*None, 包装数量=85 +2025-12-12 11:38:53,369 - app.core.excel.processor - INFO - 从商品名称推断规格: 嘉士利果乐果香草莓味85g@ -> 85*None, 包装数量=85 +2025-12-12 11:38:53,371 - app.core.excel.processor - INFO - 从商品名称推断规格: 旺旺仙贝52g@ -> 52*None, 包装数量=52 +2025-12-12 11:38:53,372 - app.core.excel.processor - INFO - 从商品名称推断规格: 旺旺雪饼84g@ -> 84*None, 包装数量=84 +2025-12-12 11:38:53,372 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园蛋黄派230g@ -> 230*None, 包装数量=230 +2025-12-12 11:38:53,376 - app.core.excel.processor - INFO - 从商品名称推断规格: 豆多奇鹌鹑蛋豆干烧烤味22g -> 22*None, 包装数量=22 +2025-12-12 11:38:53,379 - app.core.excel.processor - INFO - 从商品名称推断规格: 劲仔手撕肉干麻辣味10g@ -> 10*None, 包装数量=10 +2025-12-12 11:38:53,381 - app.core.excel.processor - INFO - 从商品名称推断规格: 劲仔手撕肉干香辣味10g@ -> 10*None, 包装数量=10 +2025-12-12 11:38:53,385 - app.core.excel.processor - INFO - 从商品名称推断规格: 登荣香辣爽口鸡23g -> 23*None, 包装数量=23 +2025-12-12 11:38:53,387 - app.core.excel.processor - INFO - 从商品名称推断规格: 德芙脆香米脆米心牛奶巧克力12g@ -> 12*None, 包装数量=12 +2025-12-12 11:38:53,389 - app.core.excel.processor - INFO - 从商品名称推断规格: 味芝元洞庭鱼排香辣味26g -> 26*None, 包装数量=26 +2025-12-12 11:38:53,391 - app.core.excel.processor - INFO - 从商品名称推断规格: 劲仔小鱼麻辣小鱼12g@ -> 12*None, 包装数量=12 +2025-12-12 11:38:53,393 - app.core.excel.processor - INFO - 从商品名称推断规格: 缺牙齿素牛肚香辣味16g -> 16*None, 包装数量=16 +2025-12-12 11:38:53,395 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事青柠味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:38:53,397 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事黄瓜味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:38:53,398 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事德克萨斯烧烤味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:38:53,399 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事薯片经典原味23g(串串装)@ -> 23*None, 包装数量=23 +2025-12-12 11:38:53,399 - app.core.excel.processor - INFO - 提取到 52 个商品信息 +2025-12-12 11:38:53,406 - app.core.excel.processor - INFO - 开始处理52 个产品信息 +2025-12-12 11:38:53,406 - app.core.excel.processor - INFO - 处理商品: 条码=6954767432076, 数量=48.0, 单价=55.68, 是否赠品=False +2025-12-12 11:38:53,407 - app.core.excel.processor - INFO - 发现正常商品:条码6954767432076, 数量=48.0, 单价=55.68 +2025-12-12 11:38:53,408 - app.core.excel.processor - INFO - 处理商品: 条码=6954767433073, 数量=8.0, 单价=44.32, 是否赠品=False +2025-12-12 11:38:53,408 - app.core.excel.processor - INFO - 发现正常商品:条码6954767433073, 数量=8.0, 单价=44.32 +2025-12-12 11:38:53,408 - app.core.excel.processor - INFO - 处理商品: 条码=6901285992933, 数量=40.0, 单价=21.52, 是否赠品=False +2025-12-12 11:38:53,408 - app.core.excel.processor - INFO - 发现正常商品:条码6901285992933, 数量=40.0, 单价=21.52 +2025-12-12 11:38:53,409 - app.core.excel.processor - INFO - 处理商品: 条码=6901285991530, 数量=8.0, 单价=26.08, 是否赠品=False +2025-12-12 11:38:53,409 - app.core.excel.processor - INFO - 发现正常商品:条码6901285991530, 数量=8.0, 单价=26.08 +2025-12-12 11:38:53,409 - app.core.excel.processor - INFO - 处理商品: 条码=6901285991271, 数量=60.0, 单价=24.6, 是否赠品=False +2025-12-12 11:38:53,410 - app.core.excel.processor - INFO - 发现正常商品:条码6901285991271, 数量=60.0, 单价=24.6 +2025-12-12 11:38:53,410 - app.core.excel.processor - INFO - 处理商品: 条码=6920584471017, 数量=12.0, 单价=54.0, 是否赠品=False +2025-12-12 11:38:53,411 - app.core.excel.processor - INFO - 发现正常商品:条码6920584471017, 数量=12.0, 单价=54.0 +2025-12-12 11:38:53,411 - app.core.excel.processor - INFO - 处理商品: 条码=6901668934925, 数量=5.0, 单价=6.5, 是否赠品=False +2025-12-12 11:38:53,411 - app.core.excel.processor - INFO - 发现正常商品:条码6901668934925, 数量=5.0, 单价=6.5 +2025-12-12 11:38:53,412 - app.core.excel.processor - INFO - 处理商品: 条码=6901668054715, 数量=4.0, 单价=3.6, 是否赠品=False +2025-12-12 11:38:53,412 - app.core.excel.processor - INFO - 发现正常商品:条码6901668054715, 数量=4.0, 单价=3.6 +2025-12-12 11:38:53,412 - app.core.excel.processor - INFO - 处理商品: 条码=6901668053916, 数量=3.0, 单价=3.6, 是否赠品=False +2025-12-12 11:38:53,413 - app.core.excel.processor - INFO - 发现正常商品:条码6901668053916, 数量=3.0, 单价=3.6 +2025-12-12 11:38:53,413 - app.core.excel.processor - INFO - 处理商品: 条码=6920907800616, 数量=4.0, 单价=3.0, 是否赠品=False +2025-12-12 11:38:53,413 - app.core.excel.processor - INFO - 发现正常商品:条码6920907800616, 数量=4.0, 单价=3.0 +2025-12-12 11:38:53,414 - app.core.excel.processor - INFO - 处理商品: 条码=6935855700383, 数量=8.0, 单价=38.0, 是否赠品=False +2025-12-12 11:38:53,414 - app.core.excel.processor - INFO - 发现正常商品:条码6935855700383, 数量=8.0, 单价=38.0 +2025-12-12 11:38:53,414 - app.core.excel.processor - INFO - 处理商品: 条码=6925683200957, 数量=8.0, 单价=28.0, 是否赠品=False +2025-12-12 11:38:53,414 - app.core.excel.processor - INFO - 发现正常商品:条码6925683200957, 数量=8.0, 单价=28.0 +2025-12-12 11:38:53,415 - app.core.excel.processor - INFO - 处理商品: 条码=6901845044027, 数量=4.0, 单价=5.55, 是否赠品=False +2025-12-12 11:38:53,415 - app.core.excel.processor - INFO - 发现正常商品:条码6901845044027, 数量=4.0, 单价=5.55 +2025-12-12 11:38:53,415 - app.core.excel.processor - INFO - 处理商品: 条码=6901845040968, 数量=5.0, 单价=5.55, 是否赠品=False +2025-12-12 11:38:53,416 - app.core.excel.processor - INFO - 发现正常商品:条码6901845040968, 数量=5.0, 单价=5.55 +2025-12-12 11:38:53,416 - app.core.excel.processor - INFO - 处理商品: 条码=6901668935649, 数量=6.0, 单价=1.99, 是否赠品=False +2025-12-12 11:38:53,417 - app.core.excel.processor - INFO - 发现正常商品:条码6901668935649, 数量=6.0, 单价=1.99 +2025-12-12 11:38:53,417 - app.core.excel.processor - INFO - 处理商品: 条码=6901668935663, 数量=5.0, 单价=1.99, 是否赠品=False +2025-12-12 11:38:53,418 - app.core.excel.processor - INFO - 发现正常商品:条码6901668935663, 数量=5.0, 单价=1.99 +2025-12-12 11:38:53,418 - app.core.excel.processor - INFO - 处理商品: 条码=6947929617534, 数量=4.0, 单价=2.66, 是否赠品=False +2025-12-12 11:38:53,418 - app.core.excel.processor - INFO - 发现正常商品:条码6947929617534, 数量=4.0, 单价=2.66 +2025-12-12 11:38:53,419 - app.core.excel.processor - INFO - 处理商品: 条码=6947929617138, 数量=4.0, 单价=2.66, 是否赠品=False +2025-12-12 11:38:53,419 - app.core.excel.processor - INFO - 发现正常商品:条码6947929617138, 数量=4.0, 单价=2.66 +2025-12-12 11:38:53,419 - app.core.excel.processor - INFO - 处理商品: 条码=6901668200013, 数量=3.0, 单价=3.5, 是否赠品=False +2025-12-12 11:38:53,420 - app.core.excel.processor - INFO - 发现正常商品:条码6901668200013, 数量=3.0, 单价=3.5 +2025-12-12 11:38:53,420 - app.core.excel.processor - INFO - 处理商品: 条码=6901668200303, 数量=3.0, 单价=3.5, 是否赠品=False +2025-12-12 11:38:53,420 - app.core.excel.processor - INFO - 发现正常商品:条码6901668200303, 数量=3.0, 单价=3.5 +2025-12-12 11:38:53,420 - app.core.excel.processor - INFO - 处理商品: 条码=6911988005229, 数量=4.0, 单价=2.25, 是否赠品=False +2025-12-12 11:38:53,420 - app.core.excel.processor - INFO - 发现正常商品:条码6911988005229, 数量=4.0, 单价=2.25 +2025-12-12 11:38:53,420 - app.core.excel.processor - INFO - 处理商品: 条码=6911988000293, 数量=4.0, 单价=3.8, 是否赠品=False +2025-12-12 11:38:53,420 - app.core.excel.processor - INFO - 发现正常商品:条码6911988000293, 数量=4.0, 单价=3.8 +2025-12-12 11:38:53,420 - app.core.excel.processor - INFO - 处理商品: 条码=6911988000286, 数量=3.0, 单价=3.8, 是否赠品=False +2025-12-12 11:38:53,420 - app.core.excel.processor - INFO - 发现正常商品:条码6911988000286, 数量=3.0, 单价=3.8 +2025-12-12 11:38:53,420 - app.core.excel.processor - INFO - 处理商品: 条码=6911988009777, 数量=3.0, 单价=2.85, 是否赠品=False +2025-12-12 11:38:53,422 - app.core.excel.processor - INFO - 发现正常商品:条码6911988009777, 数量=3.0, 单价=2.85 +2025-12-12 11:38:53,423 - app.core.excel.processor - INFO - 处理商品: 条码=6911988009760, 数量=3.0, 单价=2.85, 是否赠品=False +2025-12-12 11:38:53,423 - app.core.excel.processor - INFO - 发现正常商品:条码6911988009760, 数量=3.0, 单价=2.85 +2025-12-12 11:38:53,423 - app.core.excel.processor - INFO - 处理商品: 条码=6911988009784, 数量=3.0, 单价=2.85, 是否赠品=False +2025-12-12 11:38:53,424 - app.core.excel.processor - INFO - 发现正常商品:条码6911988009784, 数量=3.0, 单价=2.85 +2025-12-12 11:38:53,424 - app.core.excel.processor - INFO - 处理商品: 条码=6901180581683, 数量=2.0, 单价=3.8, 是否赠品=False +2025-12-12 11:38:53,424 - app.core.excel.processor - INFO - 发现正常商品:条码6901180581683, 数量=2.0, 单价=3.8 +2025-12-12 11:38:53,425 - app.core.excel.processor - INFO - 处理商品: 条码=6932024200552, 数量=3.0, 单价=3.0, 是否赠品=False +2025-12-12 11:38:53,425 - app.core.excel.processor - INFO - 发现正常商品:条码6932024200552, 数量=3.0, 单价=3.0 +2025-12-12 11:38:53,425 - app.core.excel.processor - INFO - 处理商品: 条码=6932024200583, 数量=4.0, 单价=1.7, 是否赠品=False +2025-12-12 11:38:53,425 - app.core.excel.processor - INFO - 发现正常商品:条码6932024200583, 数量=4.0, 单价=1.7 +2025-12-12 11:38:53,426 - app.core.excel.processor - INFO - 处理商品: 条码=6901668936714, 数量=4.0, 单价=5.2, 是否赠品=False +2025-12-12 11:38:53,426 - app.core.excel.processor - INFO - 发现正常商品:条码6901668936714, 数量=4.0, 单价=5.2 +2025-12-12 11:38:53,426 - app.core.excel.processor - INFO - 处理商品: 条码=6901668062499, 数量=4.0, 单价=5.2, 是否赠品=False +2025-12-12 11:38:53,426 - app.core.excel.processor - INFO - 发现正常商品:条码6901668062499, 数量=4.0, 单价=5.2 +2025-12-12 11:38:53,427 - app.core.excel.processor - INFO - 处理商品: 条码=6925332600046, 数量=3.0, 单价=3.8, 是否赠品=False +2025-12-12 11:38:53,427 - app.core.excel.processor - INFO - 发现正常商品:条码6925332600046, 数量=3.0, 单价=3.8 +2025-12-12 11:38:53,427 - app.core.excel.processor - INFO - 处理商品: 条码=6921233904955, 数量=4.0, 单价=3.8, 是否赠品=False +2025-12-12 11:38:53,427 - app.core.excel.processor - INFO - 发现正常商品:条码6921233904955, 数量=4.0, 单价=3.8 +2025-12-12 11:38:53,427 - app.core.excel.processor - INFO - 处理商品: 条码=6901180993387, 数量=3.0, 单价=3.0, 是否赠品=False +2025-12-12 11:38:53,428 - app.core.excel.processor - INFO - 发现正常商品:条码6901180993387, 数量=3.0, 单价=3.0 +2025-12-12 11:38:53,428 - app.core.excel.processor - INFO - 处理商品: 条码=6901180993486, 数量=3.0, 单价=3.0, 是否赠品=False +2025-12-12 11:38:53,428 - app.core.excel.processor - INFO - 发现正常商品:条码6901180993486, 数量=3.0, 单价=3.0 +2025-12-12 11:38:53,428 - app.core.excel.processor - INFO - 处理商品: 条码=6920546800046, 数量=5.0, 单价=3.95, 是否赠品=False +2025-12-12 11:38:53,429 - app.core.excel.processor - INFO - 发现正常商品:条码6920546800046, 数量=5.0, 单价=3.95 +2025-12-12 11:38:53,429 - app.core.excel.processor - INFO - 处理商品: 条码=6920546800053, 数量=5.0, 单价=4.5, 是否赠品=False +2025-12-12 11:38:53,429 - app.core.excel.processor - INFO - 发现正常商品:条码6920546800053, 数量=5.0, 单价=4.5 +2025-12-12 11:38:53,429 - app.core.excel.processor - INFO - 处理商品: 条码=6911988006783, 数量=1.0, 单价=5.88, 是否赠品=False +2025-12-12 11:38:53,429 - app.core.excel.processor - INFO - 发现正常商品:条码6911988006783, 数量=1.0, 单价=5.88 +2025-12-12 11:38:53,429 - app.core.excel.processor - INFO - 处理商品: 条码=6971295190759, 数量=20.0, 单价=15.0, 是否赠品=False +2025-12-12 11:38:53,429 - app.core.excel.processor - INFO - 发现正常商品:条码6971295190759, 数量=20.0, 单价=15.0 +2025-12-12 11:38:53,429 - app.core.excel.processor - INFO - 处理商品: 条码=6951957217307, 数量=20.0, 单价=26.6, 是否赠品=False +2025-12-12 11:38:53,429 - app.core.excel.processor - INFO - 发现正常商品:条码6951957217307, 数量=20.0, 单价=26.6 +2025-12-12 11:38:53,429 - app.core.excel.processor - INFO - 处理商品: 条码=6951957215723, 数量=20.0, 单价=26.6, 是否赠品=False +2025-12-12 11:38:53,429 - app.core.excel.processor - INFO - 发现正常商品:条码6951957215723, 数量=20.0, 单价=26.6 +2025-12-12 11:38:53,432 - app.core.excel.processor - INFO - 处理商品: 条码=6977530260072, 数量=25.0, 单价=17.5, 是否赠品=False +2025-12-12 11:38:53,432 - app.core.excel.processor - INFO - 发现正常商品:条码6977530260072, 数量=25.0, 单价=17.5 +2025-12-12 11:38:53,433 - app.core.excel.processor - INFO - 处理商品: 条码=6925300100400, 数量=25.0, 单价=17.5, 是否赠品=False +2025-12-12 11:38:53,433 - app.core.excel.processor - INFO - 发现正常商品:条码6925300100400, 数量=25.0, 单价=17.5 +2025-12-12 11:38:53,433 - app.core.excel.processor - INFO - 处理商品: 条码=6922170800638, 数量=20.0, 单价=15.0, 是否赠品=False +2025-12-12 11:38:53,433 - app.core.excel.processor - INFO - 发现正常商品:条码6922170800638, 数量=20.0, 单价=15.0 +2025-12-12 11:38:53,434 - app.core.excel.processor - INFO - 处理商品: 条码=690299810, 数量=16.0, 单价=23.2, 是否赠品=False +2025-12-12 11:38:53,434 - app.core.excel.processor - INFO - 发现正常商品:条码690299810, 数量=16.0, 单价=23.2 +2025-12-12 11:38:53,434 - app.core.excel.processor - INFO - 处理商品: 条码=6936869215092, 数量=15.0, 单价=1.5, 是否赠品=False +2025-12-12 11:38:53,435 - app.core.excel.processor - INFO - 发现正常商品:条码6936869215092, 数量=15.0, 单价=1.5 +2025-12-12 11:38:53,435 - app.core.excel.processor - INFO - 处理商品: 条码=6951957205762, 数量=20.0, 单价=14.2, 是否赠品=False +2025-12-12 11:38:53,435 - app.core.excel.processor - INFO - 发现正常商品:条码6951957205762, 数量=20.0, 单价=14.2 +2025-12-12 11:38:53,435 - app.core.excel.processor - INFO - 处理商品: 条码=6976481800078, 数量=30.0, 单价=22.5, 是否赠品=False +2025-12-12 11:38:53,436 - app.core.excel.processor - INFO - 发现正常商品:条码6976481800078, 数量=30.0, 单价=22.5 +2025-12-12 11:38:53,436 - app.core.excel.processor - INFO - 处理商品: 条码=6924743919266, 数量=5.0, 单价=4.79, 是否赠品=False +2025-12-12 11:38:53,436 - app.core.excel.processor - INFO - 发现正常商品:条码6924743919266, 数量=5.0, 单价=4.79 +2025-12-12 11:38:53,437 - app.core.excel.processor - INFO - 处理商品: 条码=6924743919259, 数量=5.0, 单价=4.79, 是否赠品=False +2025-12-12 11:38:53,437 - app.core.excel.processor - INFO - 发现正常商品:条码6924743919259, 数量=5.0, 单价=4.79 +2025-12-12 11:38:53,437 - app.core.excel.processor - INFO - 处理商品: 条码=6924743919228, 数量=3.0, 单价=4.79, 是否赠品=False +2025-12-12 11:38:53,437 - app.core.excel.processor - INFO - 发现正常商品:条码6924743919228, 数量=3.0, 单价=4.79 +2025-12-12 11:38:53,437 - app.core.excel.processor - INFO - 处理商品: 条码=6924743928077, 数量=1.0, 单价=1.35, 是否赠品=False +2025-12-12 11:38:53,437 - app.core.excel.processor - INFO - 发现正常商品:条码6924743928077, 数量=1.0, 单价=1.35 +2025-12-12 11:38:53,437 - app.core.excel.processor - INFO - 分组后共52 个不同条码的商品 +2025-12-12 11:38:53,437 - app.core.excel.processor - INFO - 条码 6954767432076 处理结果:正常商品数量48.0,单价55.68,赠品数量0 +2025-12-12 11:38:53,437 - app.core.excel.processor - INFO - 条码 6954767433073 处理结果:正常商品数量8.0,单价44.32,赠品数量0 +2025-12-12 11:38:53,437 - app.core.excel.processor - INFO - 条码 6901285992933 处理结果:正常商品数量40.0,单价21.52,赠品数量0 +2025-12-12 11:38:53,437 - app.core.excel.processor - INFO - 条码 6901285991530 处理结果:正常商品数量8.0,单价26.08,赠品数量0 +2025-12-12 11:38:53,440 - app.core.excel.processor - INFO - 条码 6901285991271 处理结果:正常商品数量60.0,单价24.6,赠品数量0 +2025-12-12 11:38:53,440 - app.core.excel.processor - INFO - 条码 6920584471017 处理结果:正常商品数量12.0,单价54.0,赠品数量0 +2025-12-12 11:38:53,440 - app.core.excel.processor - INFO - 条码 6901668934925 处理结果:正常商品数量5.0,单价6.5,赠品数量0 +2025-12-12 11:38:53,441 - app.core.excel.processor - INFO - 条码 6901668054715 处理结果:正常商品数量4.0,单价3.6,赠品数量0 +2025-12-12 11:38:53,441 - app.core.excel.processor - INFO - 条码 6901668053916 处理结果:正常商品数量3.0,单价3.6,赠品数量0 +2025-12-12 11:38:53,441 - app.core.excel.processor - INFO - 条码 6920907800616 处理结果:正常商品数量4.0,单价3.0,赠品数量0 +2025-12-12 11:38:53,441 - app.core.excel.processor - INFO - 条码 6935855700383 处理结果:正常商品数量8.0,单价38.0,赠品数量0 +2025-12-12 11:38:53,443 - app.core.excel.processor - INFO - 条码 6925683200957 处理结果:正常商品数量8.0,单价28.0,赠品数量0 +2025-12-12 11:38:53,443 - app.core.excel.processor - INFO - 条码 6901845044027 处理结果:正常商品数量4.0,单价5.55,赠品数量0 +2025-12-12 11:38:53,443 - app.core.excel.processor - INFO - 条码 6901845040968 处理结果:正常商品数量5.0,单价5.55,赠品数量0 +2025-12-12 11:38:53,444 - app.core.excel.processor - INFO - 条码 6901668935649 处理结果:正常商品数量6.0,单价1.99,赠品数量0 +2025-12-12 11:38:53,444 - app.core.excel.processor - INFO - 条码 6901668935663 处理结果:正常商品数量5.0,单价1.99,赠品数量0 +2025-12-12 11:38:53,444 - app.core.excel.processor - INFO - 条码 6947929617534 处理结果:正常商品数量4.0,单价2.66,赠品数量0 +2025-12-12 11:38:53,444 - app.core.excel.processor - INFO - 条码 6947929617138 处理结果:正常商品数量4.0,单价2.66,赠品数量0 +2025-12-12 11:38:53,445 - app.core.excel.processor - INFO - 条码 6901668200013 处理结果:正常商品数量3.0,单价3.5,赠品数量0 +2025-12-12 11:38:53,445 - app.core.excel.processor - INFO - 条码 6901668200303 处理结果:正常商品数量3.0,单价3.5,赠品数量0 +2025-12-12 11:38:53,445 - app.core.excel.processor - INFO - 条码 6911988005229 处理结果:正常商品数量4.0,单价2.25,赠品数量0 +2025-12-12 11:38:53,446 - app.core.excel.processor - INFO - 条码 6911988000293 处理结果:正常商品数量4.0,单价3.8,赠品数量0 +2025-12-12 11:38:53,446 - app.core.excel.processor - INFO - 条码 6911988000286 处理结果:正常商品数量3.0,单价3.8,赠品数量0 +2025-12-12 11:38:53,446 - app.core.excel.processor - INFO - 条码 6911988009777 处理结果:正常商品数量3.0,单价2.85,赠品数量0 +2025-12-12 11:38:53,447 - app.core.excel.processor - INFO - 条码 6911988009760 处理结果:正常商品数量3.0,单价2.85,赠品数量0 +2025-12-12 11:38:53,447 - app.core.excel.processor - INFO - 条码 6911988009784 处理结果:正常商品数量3.0,单价2.85,赠品数量0 +2025-12-12 11:38:53,447 - app.core.excel.processor - INFO - 条码 6901180581683 处理结果:正常商品数量2.0,单价3.8,赠品数量0 +2025-12-12 11:38:53,448 - app.core.excel.processor - INFO - 条码 6932024200552 处理结果:正常商品数量3.0,单价3.0,赠品数量0 +2025-12-12 11:38:53,448 - app.core.excel.processor - INFO - 条码 6932024200583 处理结果:正常商品数量4.0,单价1.7,赠品数量0 +2025-12-12 11:38:53,448 - app.core.excel.processor - INFO - 条码 6901668936714 处理结果:正常商品数量4.0,单价5.2,赠品数量0 +2025-12-12 11:38:53,448 - app.core.excel.processor - INFO - 条码 6901668062499 处理结果:正常商品数量4.0,单价5.2,赠品数量0 +2025-12-12 11:38:53,448 - app.core.excel.processor - INFO - 条码 6925332600046 处理结果:正常商品数量3.0,单价3.8,赠品数量0 +2025-12-12 11:38:53,448 - app.core.excel.processor - INFO - 条码 6921233904955 处理结果:正常商品数量4.0,单价3.8,赠品数量0 +2025-12-12 11:38:53,448 - app.core.excel.processor - INFO - 条码 6901180993387 处理结果:正常商品数量3.0,单价3.0,赠品数量0 +2025-12-12 11:38:53,448 - app.core.excel.processor - INFO - 条码 6901180993486 处理结果:正常商品数量3.0,单价3.0,赠品数量0 +2025-12-12 11:38:53,448 - app.core.excel.processor - INFO - 条码 6920546800046 处理结果:正常商品数量5.0,单价3.95,赠品数量0 +2025-12-12 11:38:53,448 - app.core.excel.processor - INFO - 条码 6920546800053 处理结果:正常商品数量5.0,单价4.5,赠品数量0 +2025-12-12 11:38:53,448 - app.core.excel.processor - INFO - 条码 6911988006783 处理结果:正常商品数量1.0,单价5.88,赠品数量0 +2025-12-12 11:38:53,448 - app.core.excel.processor - INFO - 条码 6971295190759 处理结果:正常商品数量20.0,单价15.0,赠品数量0 +2025-12-12 11:38:53,448 - app.core.excel.processor - INFO - 条码 6951957217307 处理结果:正常商品数量20.0,单价26.6,赠品数量0 +2025-12-12 11:38:53,448 - app.core.excel.processor - INFO - 条码 6951957215723 处理结果:正常商品数量20.0,单价26.6,赠品数量0 +2025-12-12 11:38:53,452 - app.core.excel.processor - INFO - 条码 6977530260072 处理结果:正常商品数量25.0,单价17.5,赠品数量0 +2025-12-12 11:38:53,452 - app.core.excel.processor - INFO - 条码 6925300100400 处理结果:正常商品数量25.0,单价17.5,赠品数量0 +2025-12-12 11:38:53,452 - app.core.excel.processor - INFO - 条码 6922170800638 处理结果:正常商品数量20.0,单价15.0,赠品数量0 +2025-12-12 11:38:53,452 - app.core.excel.processor - INFO - 条码 690299810 处理结果:正常商品数量16.0,单价23.2,赠品数量0 +2025-12-12 11:38:53,452 - app.core.excel.processor - INFO - 条码 6936869215092 处理结果:正常商品数量15.0,单价1.5,赠品数量0 +2025-12-12 11:38:53,452 - app.core.excel.processor - INFO - 条码 6951957205762 处理结果:正常商品数量20.0,单价14.2,赠品数量0 +2025-12-12 11:38:53,453 - app.core.excel.processor - INFO - 条码 6976481800078 处理结果:正常商品数量30.0,单价22.5,赠品数量0 +2025-12-12 11:38:53,453 - app.core.excel.processor - INFO - 条码 6924743919266 处理结果:正常商品数量5.0,单价4.79,赠品数量0 +2025-12-12 11:38:53,453 - app.core.excel.processor - INFO - 条码 6924743919259 处理结果:正常商品数量5.0,单价4.79,赠品数量0 +2025-12-12 11:38:53,454 - app.core.excel.processor - INFO - 条码 6924743919228 处理结果:正常商品数量3.0,单价4.79,赠品数量0 +2025-12-12 11:38:53,454 - app.core.excel.processor - INFO - 条码 6924743928077 处理结果:正常商品数量1.0,单价1.35,赠品数量0 +2025-12-12 11:38:53,457 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_蓉城易购-订单1765440157955.xls +2025-12-12 11:38:53,458 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_蓉城易购-订单1765440157955.xls +2025-12-12 11:49:38,203 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-12-12 11:49:38,203 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-12-12 11:49:38,203 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-12-12 11:49:38,206 - app.core.excel.processor - INFO - 开始处理Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765440157955.xlsx +2025-12-12 11:49:38,217 - app.core.excel.processor - INFO - 成功读取Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765440157955.xlsx, 共 58 行 +2025-12-12 11:49:38,217 - app.core.excel.processor - INFO - 找到可能的表头行: 第1行,评分: 75 +2025-12-12 11:49:38,221 - app.core.excel.processor - INFO - 识别到表头在第 1 行 +2025-12-12 11:49:38,231 - app.core.excel.processor - INFO - 使用表头行重新读取数据,共 57 行有效数据 +2025-12-12 11:49:38,233 - app.core.excel.processor - INFO - 找到部分匹配的条码列: 商品条码(小条码) (包含关键词: 条码) +2025-12-12 11:49:38,233 - app.core.excel.processor - INFO - 使用条码列: 商品条码(小条码) +2025-12-12 11:49:38,234 - app.core.excel.processor - INFO - 找到name列: 商品名称 +2025-12-12 11:49:38,234 - app.core.excel.processor - INFO - 找到quantity列(部分匹配): 订购数量(小单位) +2025-12-12 11:49:38,234 - app.core.excel.processor - INFO - 找到unit列: 单位 +2025-12-12 11:49:38,235 - app.core.excel.processor - INFO - 找到price列(部分匹配): 单价(小单位) +2025-12-12 11:49:38,235 - app.core.excel.processor - INFO - 找到amount列(部分匹配): 优惠后金额(小单位) +2025-12-12 11:49:38,235 - app.core.excel.processor - INFO - 检测到列映射: {'barcode': '商品条码(小条码)', 'name': '商品名称', 'quantity': '订购数量(小单位)', 'unit': '单位', 'price': '单价(小单位)', 'amount': '优惠后金额(小单位)'} +2025-12-12 11:49:38,240 - app.core.excel.processor - INFO - 从商品名称推断规格: 雪碧2L@ -> 2L*1, 包装数量=1 +2025-12-12 11:49:38,243 - app.core.excel.processor - INFO - 从商品名称推断规格: 怡宝饮用纯净水2.08L@ -> 2.08L*1, 包装数量=1 +2025-12-12 11:49:38,245 - app.core.excel.processor - INFO - 从商品名称推断规格: 怡宝纯净水4.5L@ -> 4.5L*1, 包装数量=1 +2025-12-12 11:49:38,245 - app.core.excel.processor - INFO - 从商品名称推断规格: 怡宝饮用纯净水1.555L@ -> 1.555L*1, 包装数量=1 +2025-12-12 11:49:38,250 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥薄脆酸甜草莓味95g@ -> 95*None, 包装数量=95 +2025-12-12 11:49:38,253 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥杯奥草莓味55g@ -> 55*None, 包装数量=55 +2025-12-12 11:49:38,255 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥杯奥巧克力55g@ -> 55*None, 包装数量=55 +2025-12-12 11:49:38,256 - app.core.excel.processor - INFO - 从商品名称推断规格: 好丽友蛋黄派2P46g@ -> 46*None, 包装数量=46 +2025-12-12 11:49:38,259 - app.core.excel.processor - INFO - 从商品名称推断规格: 都市牧场爽口含片正梅味38g@ -> 38*None, 包装数量=38 +2025-12-12 11:49:38,260 - app.core.excel.processor - INFO - 从商品名称推断规格: 林振合维C果C软糖什锦味68g -> 68*None, 包装数量=68 +2025-12-12 11:49:38,260 - app.core.excel.processor - INFO - 从商品名称推断规格: 格力高百醇柠檬48g@ -> 48*None, 包装数量=48 +2025-12-12 11:49:38,264 - app.core.excel.processor - INFO - 从商品名称推断规格: 格力高百醇抹茶慕斯味48g@ -> 48*None, 包装数量=48 +2025-12-12 11:49:38,266 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥饼干经典原味48.5g@ -> 48.5*None, 包装数量=48 +2025-12-12 11:49:38,268 - app.core.excel.processor - INFO - 从商品名称推断规格: 奥利奥饼干浓醇巧克力味48.5g@ -> 48.5*None, 包装数量=48 +2025-12-12 11:49:38,270 - app.core.excel.processor - INFO - 从商品名称推断规格: 法丽兹曲奇芝士巧克力70g@ -> 70*None, 包装数量=70 +2025-12-12 11:49:38,272 - app.core.excel.processor - INFO - 从商品名称推断规格: 法丽兹曲奇香草柠檬巧克力味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:49:38,274 - app.core.excel.processor - INFO - 从商品名称推断规格: 太平梳打饼干奶盐味100g@ -> 100*None, 包装数量=100 +2025-12-12 11:49:38,275 - app.core.excel.processor - INFO - 从商品名称推断规格: 太平梳打饼干海苔味100g@ -> 100*None, 包装数量=100 +2025-12-12 11:49:38,275 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园手指饼115g@ -> 115*None, 包装数量=115 +2025-12-12 11:49:38,279 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点杏仁酥饼146g@ -> 146*None, 包装数量=146 +2025-12-12 11:49:38,281 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点核桃酥饼146g@ -> 146*None, 包装数量=146 +2025-12-12 11:49:38,284 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点香脆腰果饼108g@ -> 108*None, 包装数量=108 +2025-12-12 11:49:38,285 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点香脆杏仁饼108g@ -> 108*None, 包装数量=108 +2025-12-12 11:49:38,285 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园好吃点香脆核桃饼108g@ -> 108*None, 包装数量=108 +2025-12-12 11:49:38,289 - app.core.excel.processor - INFO - 从商品名称推断规格: 嘉士利威化饼干草莓味115g@ -> 115*None, 包装数量=115 +2025-12-12 11:49:38,293 - app.core.excel.processor - INFO - 从商品名称推断规格: 亨裕饼朱古力味饼干186g -> 186*None, 包装数量=186 +2025-12-12 11:49:38,295 - app.core.excel.processor - INFO - 从商品名称推断规格: 亨裕早茶饼干110g -> 110*None, 包装数量=110 +2025-12-12 11:49:38,296 - app.core.excel.processor - INFO - 从商品名称推断规格: 趣多多香浓巧克力味85g@ -> 85*None, 包装数量=85 +2025-12-12 11:49:38,298 - app.core.excel.processor - INFO - 从商品名称推断规格: 趣多多缤纷逗巧克力85g@ -> 85*None, 包装数量=85 +2025-12-12 11:49:38,301 - app.core.excel.processor - INFO - 从商品名称推断规格: 米老头雪花煎卷椰奶味150g@ -> 150*None, 包装数量=150 +2025-12-12 11:49:38,303 - app.core.excel.processor - INFO - 从商品名称推断规格: 金富士牛乳饼干香浓牛奶味130g@ -> 130*None, 包装数量=130 +2025-12-12 11:49:38,305 - app.core.excel.processor - INFO - 从商品名称推断规格: 嘉士利果乐果香蓝莓味85g@ -> 85*None, 包装数量=85 +2025-12-12 11:49:38,305 - app.core.excel.processor - INFO - 从商品名称推断规格: 嘉士利果乐果香草莓味85g@ -> 85*None, 包装数量=85 +2025-12-12 11:49:38,309 - app.core.excel.processor - INFO - 从商品名称推断规格: 旺旺仙贝52g@ -> 52*None, 包装数量=52 +2025-12-12 11:49:38,310 - app.core.excel.processor - INFO - 从商品名称推断规格: 旺旺雪饼84g@ -> 84*None, 包装数量=84 +2025-12-12 11:49:38,312 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园蛋黄派230g@ -> 230*None, 包装数量=230 +2025-12-12 11:49:38,313 - app.core.excel.processor - INFO - 从商品名称推断规格: 豆多奇鹌鹑蛋豆干烧烤味22g -> 22*None, 包装数量=22 +2025-12-12 11:49:38,315 - app.core.excel.processor - INFO - 从商品名称推断规格: 劲仔手撕肉干麻辣味10g@ -> 10*None, 包装数量=10 +2025-12-12 11:49:38,349 - app.core.excel.processor - INFO - 从商品名称推断规格: 劲仔手撕肉干香辣味10g@ -> 10*None, 包装数量=10 +2025-12-12 11:49:38,353 - app.core.excel.processor - INFO - 从商品名称推断规格: 登荣香辣爽口鸡23g -> 23*None, 包装数量=23 +2025-12-12 11:49:38,356 - app.core.excel.processor - INFO - 从商品名称推断规格: 德芙脆香米脆米心牛奶巧克力12g@ -> 12*None, 包装数量=12 +2025-12-12 11:49:38,358 - app.core.excel.processor - INFO - 从商品名称推断规格: 味芝元洞庭鱼排香辣味26g -> 26*None, 包装数量=26 +2025-12-12 11:49:38,360 - app.core.excel.processor - INFO - 从商品名称推断规格: 劲仔小鱼麻辣小鱼12g@ -> 12*None, 包装数量=12 +2025-12-12 11:49:38,362 - app.core.excel.processor - INFO - 从商品名称推断规格: 缺牙齿素牛肚香辣味16g -> 16*None, 包装数量=16 +2025-12-12 11:49:38,364 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事青柠味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:49:38,366 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事黄瓜味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:49:38,368 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事德克萨斯烧烤味70g@ -> 70*None, 包装数量=70 +2025-12-12 11:49:38,368 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事薯片经典原味23g(串串装)@ -> 23*None, 包装数量=23 +2025-12-12 11:49:38,371 - app.core.excel.processor - INFO - 提取到 52 个商品信息 +2025-12-12 11:49:38,375 - app.core.excel.processor - INFO - 开始处理52 个产品信息 +2025-12-12 11:49:38,376 - app.core.excel.processor - INFO - 处理商品: 条码=6954767432076, 数量=48.0, 单价=2.2, 是否赠品=False +2025-12-12 11:49:38,376 - app.core.excel.processor - INFO - 发现正常商品:条码6954767432076, 数量=48.0, 单价=2.2 +2025-12-12 11:49:38,377 - app.core.excel.processor - INFO - 处理商品: 条码=6954767433073, 数量=8.0, 单价=5.26, 是否赠品=False +2025-12-12 11:49:38,377 - app.core.excel.processor - INFO - 发现正常商品:条码6954767433073, 数量=8.0, 单价=5.26 +2025-12-12 11:49:38,377 - app.core.excel.processor - INFO - 处理商品: 条码=6901285992933, 数量=40.0, 单价=2.56, 是否赠品=False +2025-12-12 11:49:38,378 - app.core.excel.processor - INFO - 发现正常商品:条码6901285992933, 数量=40.0, 单价=2.56 +2025-12-12 11:49:38,378 - app.core.excel.processor - INFO - 处理商品: 条码=6901285991530, 数量=8.0, 单价=6.19, 是否赠品=False +2025-12-12 11:49:38,378 - app.core.excel.processor - INFO - 发现正常商品:条码6901285991530, 数量=8.0, 单价=6.19 +2025-12-12 11:49:38,378 - app.core.excel.processor - INFO - 处理商品: 条码=6901285991271, 数量=60.0, 单价=1.95, 是否赠品=False +2025-12-12 11:49:38,379 - app.core.excel.processor - INFO - 发现正常商品:条码6901285991271, 数量=60.0, 单价=1.95 +2025-12-12 11:49:38,379 - app.core.excel.processor - INFO - 处理商品: 条码=6920584471017, 数量=12.0, 单价=4.27, 是否赠品=False +2025-12-12 11:49:38,380 - app.core.excel.processor - INFO - 发现正常商品:条码6920584471017, 数量=12.0, 单价=4.27 +2025-12-12 11:49:38,380 - app.core.excel.processor - INFO - 处理商品: 条码=6901668934925, 数量=5.0, 单价=5.66, 是否赠品=False +2025-12-12 11:49:38,380 - app.core.excel.processor - INFO - 发现正常商品:条码6901668934925, 数量=5.0, 单价=5.66 +2025-12-12 11:49:38,381 - app.core.excel.processor - INFO - 处理商品: 条码=6901668054715, 数量=4.0, 单价=3.42, 是否赠品=False +2025-12-12 11:49:38,381 - app.core.excel.processor - INFO - 发现正常商品:条码6901668054715, 数量=4.0, 单价=3.42 +2025-12-12 11:49:38,381 - app.core.excel.processor - INFO - 处理商品: 条码=6901668053916, 数量=3.0, 单价=3.42, 是否赠品=False +2025-12-12 11:49:38,381 - app.core.excel.processor - INFO - 发现正常商品:条码6901668053916, 数量=3.0, 单价=3.42 +2025-12-12 11:49:38,381 - app.core.excel.processor - INFO - 处理商品: 条码=6920907800616, 数量=4.0, 单价=2.85, 是否赠品=False +2025-12-12 11:49:38,381 - app.core.excel.processor - INFO - 发现正常商品:条码6920907800616, 数量=4.0, 单价=2.85 +2025-12-12 11:49:38,382 - app.core.excel.processor - INFO - 处理商品: 条码=6935855700383, 数量=8.0, 单价=4.51, 是否赠品=False +2025-12-12 11:49:38,382 - app.core.excel.processor - INFO - 发现正常商品:条码6935855700383, 数量=8.0, 单价=4.51 +2025-12-12 11:49:38,382 - app.core.excel.processor - INFO - 处理商品: 条码=6925683200957, 数量=8.0, 单价=3.32, 是否赠品=False +2025-12-12 11:49:38,383 - app.core.excel.processor - INFO - 发现正常商品:条码6925683200957, 数量=8.0, 单价=3.32 +2025-12-12 11:49:38,383 - app.core.excel.processor - INFO - 处理商品: 条码=6901845044027, 数量=4.0, 单价=5.27, 是否赠品=False +2025-12-12 11:49:38,383 - app.core.excel.processor - INFO - 发现正常商品:条码6901845044027, 数量=4.0, 单价=5.27 +2025-12-12 11:49:38,383 - app.core.excel.processor - INFO - 处理商品: 条码=6901845040968, 数量=5.0, 单价=5.27, 是否赠品=False +2025-12-12 11:49:38,383 - app.core.excel.processor - INFO - 发现正常商品:条码6901845040968, 数量=5.0, 单价=5.27 +2025-12-12 11:49:38,383 - app.core.excel.processor - INFO - 处理商品: 条码=6901668935649, 数量=6.0, 单价=1.89, 是否赠品=False +2025-12-12 11:49:38,383 - app.core.excel.processor - INFO - 发现正常商品:条码6901668935649, 数量=6.0, 单价=1.89 +2025-12-12 11:49:38,383 - app.core.excel.processor - INFO - 处理商品: 条码=6901668935663, 数量=5.0, 单价=1.89, 是否赠品=False +2025-12-12 11:49:38,383 - app.core.excel.processor - INFO - 发现正常商品:条码6901668935663, 数量=5.0, 单价=1.89 +2025-12-12 11:49:38,383 - app.core.excel.processor - INFO - 处理商品: 条码=6947929617534, 数量=4.0, 单价=2.53, 是否赠品=False +2025-12-12 11:49:38,386 - app.core.excel.processor - INFO - 发现正常商品:条码6947929617534, 数量=4.0, 单价=2.53 +2025-12-12 11:49:38,387 - app.core.excel.processor - INFO - 处理商品: 条码=6947929617138, 数量=4.0, 单价=2.53, 是否赠品=False +2025-12-12 11:49:38,387 - app.core.excel.processor - INFO - 发现正常商品:条码6947929617138, 数量=4.0, 单价=2.53 +2025-12-12 11:49:38,387 - app.core.excel.processor - INFO - 处理商品: 条码=6901668200013, 数量=3.0, 单价=3.05, 是否赠品=False +2025-12-12 11:49:38,388 - app.core.excel.processor - INFO - 发现正常商品:条码6901668200013, 数量=3.0, 单价=3.05 +2025-12-12 11:49:38,388 - app.core.excel.processor - INFO - 处理商品: 条码=6901668200303, 数量=3.0, 单价=3.05, 是否赠品=False +2025-12-12 11:49:38,388 - app.core.excel.processor - INFO - 发现正常商品:条码6901668200303, 数量=3.0, 单价=3.05 +2025-12-12 11:49:38,388 - app.core.excel.processor - INFO - 处理商品: 条码=6911988005229, 数量=4.0, 单价=2.14, 是否赠品=False +2025-12-12 11:49:38,389 - app.core.excel.processor - INFO - 发现正常商品:条码6911988005229, 数量=4.0, 单价=2.14 +2025-12-12 11:49:38,389 - app.core.excel.processor - INFO - 处理商品: 条码=6911988000293, 数量=4.0, 单价=3.61, 是否赠品=False +2025-12-12 11:49:38,389 - app.core.excel.processor - INFO - 发现正常商品:条码6911988000293, 数量=4.0, 单价=3.61 +2025-12-12 11:49:38,390 - app.core.excel.processor - INFO - 处理商品: 条码=6911988000286, 数量=3.0, 单价=3.61, 是否赠品=False +2025-12-12 11:49:38,390 - app.core.excel.processor - INFO - 发现正常商品:条码6911988000286, 数量=3.0, 单价=3.61 +2025-12-12 11:49:38,390 - app.core.excel.processor - INFO - 处理商品: 条码=6911988009777, 数量=3.0, 单价=2.71, 是否赠品=False +2025-12-12 11:49:38,391 - app.core.excel.processor - INFO - 发现正常商品:条码6911988009777, 数量=3.0, 单价=2.71 +2025-12-12 11:49:38,391 - app.core.excel.processor - INFO - 处理商品: 条码=6911988009760, 数量=3.0, 单价=2.71, 是否赠品=False +2025-12-12 11:49:38,391 - app.core.excel.processor - INFO - 发现正常商品:条码6911988009760, 数量=3.0, 单价=2.71 +2025-12-12 11:49:38,391 - app.core.excel.processor - INFO - 处理商品: 条码=6911988009784, 数量=3.0, 单价=2.71, 是否赠品=False +2025-12-12 11:49:38,392 - app.core.excel.processor - INFO - 发现正常商品:条码6911988009784, 数量=3.0, 单价=2.71 +2025-12-12 11:49:38,392 - app.core.excel.processor - INFO - 处理商品: 条码=6901180581683, 数量=2.0, 单价=3.61, 是否赠品=False +2025-12-12 11:49:38,392 - app.core.excel.processor - INFO - 发现正常商品:条码6901180581683, 数量=2.0, 单价=3.61 +2025-12-12 11:49:38,393 - app.core.excel.processor - INFO - 处理商品: 条码=6932024200552, 数量=3.0, 单价=2.85, 是否赠品=False +2025-12-12 11:49:38,393 - app.core.excel.processor - INFO - 发现正常商品:条码6932024200552, 数量=3.0, 单价=2.85 +2025-12-12 11:49:38,393 - app.core.excel.processor - INFO - 处理商品: 条码=6932024200583, 数量=4.0, 单价=1.61, 是否赠品=False +2025-12-12 11:49:38,393 - app.core.excel.processor - INFO - 发现正常商品:条码6932024200583, 数量=4.0, 单价=1.61 +2025-12-12 11:49:38,393 - app.core.excel.processor - INFO - 处理商品: 条码=6901668936714, 数量=4.0, 单价=4.52, 是否赠品=False +2025-12-12 11:49:38,393 - app.core.excel.processor - INFO - 发现正常商品:条码6901668936714, 数量=4.0, 单价=4.52 +2025-12-12 11:49:38,395 - app.core.excel.processor - INFO - 处理商品: 条码=6901668062499, 数量=4.0, 单价=4.52, 是否赠品=False +2025-12-12 11:49:38,395 - app.core.excel.processor - INFO - 发现正常商品:条码6901668062499, 数量=4.0, 单价=4.52 +2025-12-12 11:49:38,395 - app.core.excel.processor - INFO - 处理商品: 条码=6925332600046, 数量=3.0, 单价=3.61, 是否赠品=False +2025-12-12 11:49:38,395 - app.core.excel.processor - INFO - 发现正常商品:条码6925332600046, 数量=3.0, 单价=3.61 +2025-12-12 11:49:38,395 - app.core.excel.processor - INFO - 处理商品: 条码=6921233904955, 数量=4.0, 单价=3.61, 是否赠品=False +2025-12-12 11:49:38,395 - app.core.excel.processor - INFO - 发现正常商品:条码6921233904955, 数量=4.0, 单价=3.61 +2025-12-12 11:49:38,396 - app.core.excel.processor - INFO - 处理商品: 条码=6901180993387, 数量=3.0, 单价=2.85, 是否赠品=False +2025-12-12 11:49:38,396 - app.core.excel.processor - INFO - 发现正常商品:条码6901180993387, 数量=3.0, 单价=2.85 +2025-12-12 11:49:38,397 - app.core.excel.processor - INFO - 处理商品: 条码=6901180993486, 数量=3.0, 单价=2.85, 是否赠品=False +2025-12-12 11:49:38,397 - app.core.excel.processor - INFO - 发现正常商品:条码6901180993486, 数量=3.0, 单价=2.85 +2025-12-12 11:49:38,397 - app.core.excel.processor - INFO - 处理商品: 条码=6920546800046, 数量=5.0, 单价=3.75, 是否赠品=False +2025-12-12 11:49:38,398 - app.core.excel.processor - INFO - 发现正常商品:条码6920546800046, 数量=5.0, 单价=3.75 +2025-12-12 11:49:38,398 - app.core.excel.processor - INFO - 处理商品: 条码=6920546800053, 数量=5.0, 单价=4.27, 是否赠品=False +2025-12-12 11:49:38,398 - app.core.excel.processor - INFO - 发现正常商品:条码6920546800053, 数量=5.0, 单价=4.27 +2025-12-12 11:49:38,398 - app.core.excel.processor - INFO - 处理商品: 条码=6911988006783, 数量=1.0, 单价=5.59, 是否赠品=False +2025-12-12 11:49:38,399 - app.core.excel.processor - INFO - 发现正常商品:条码6911988006783, 数量=1.0, 单价=5.59 +2025-12-12 11:49:38,399 - app.core.excel.processor - INFO - 处理商品: 条码=6971295190759, 数量=20.0, 单价=0.71, 是否赠品=False +2025-12-12 11:49:38,399 - app.core.excel.processor - INFO - 发现正常商品:条码6971295190759, 数量=20.0, 单价=0.71 +2025-12-12 11:49:38,400 - app.core.excel.processor - INFO - 处理商品: 条码=6951957217307, 数量=20.0, 单价=1.26, 是否赠品=False +2025-12-12 11:49:38,400 - app.core.excel.processor - INFO - 发现正常商品:条码6951957217307, 数量=20.0, 单价=1.26 +2025-12-12 11:49:38,400 - app.core.excel.processor - INFO - 处理商品: 条码=6951957215723, 数量=20.0, 单价=1.26, 是否赠品=False +2025-12-12 11:49:38,400 - app.core.excel.processor - INFO - 发现正常商品:条码6951957215723, 数量=20.0, 单价=1.26 +2025-12-12 11:49:38,400 - app.core.excel.processor - INFO - 处理商品: 条码=6977530260072, 数量=25.0, 单价=0.33, 是否赠品=False +2025-12-12 11:49:38,400 - app.core.excel.processor - INFO - 发现正常商品:条码6977530260072, 数量=25.0, 单价=0.33 +2025-12-12 11:49:38,401 - app.core.excel.processor - INFO - 处理商品: 条码=6925300100400, 数量=25.0, 单价=0.33, 是否赠品=False +2025-12-12 11:49:38,401 - app.core.excel.processor - INFO - 发现正常商品:条码6925300100400, 数量=25.0, 单价=0.33 +2025-12-12 11:49:38,401 - app.core.excel.processor - INFO - 处理商品: 条码=6922170800638, 数量=20.0, 单价=0.71, 是否赠品=False +2025-12-12 11:49:38,402 - app.core.excel.processor - INFO - 发现正常商品:条码6922170800638, 数量=20.0, 单价=0.71 +2025-12-12 11:49:38,402 - app.core.excel.processor - INFO - 处理商品: 条码=690299810, 数量=16.0, 单价=1.38, 是否赠品=False +2025-12-12 11:49:38,402 - app.core.excel.processor - INFO - 发现正常商品:条码690299810, 数量=16.0, 单价=1.38 +2025-12-12 11:49:38,402 - app.core.excel.processor - INFO - 处理商品: 条码=6936869215092, 数量=15.0, 单价=1.42, 是否赠品=False +2025-12-12 11:49:38,403 - app.core.excel.processor - INFO - 发现正常商品:条码6936869215092, 数量=15.0, 单价=1.42 +2025-12-12 11:49:38,403 - app.core.excel.processor - INFO - 处理商品: 条码=6951957205762, 数量=20.0, 单价=0.67, 是否赠品=False +2025-12-12 11:49:38,403 - app.core.excel.processor - INFO - 发现正常商品:条码6951957205762, 数量=20.0, 单价=0.67 +2025-12-12 11:49:38,403 - app.core.excel.processor - INFO - 处理商品: 条码=6976481800078, 数量=30.0, 单价=0.71, 是否赠品=False +2025-12-12 11:49:38,404 - app.core.excel.processor - INFO - 发现正常商品:条码6976481800078, 数量=30.0, 单价=0.71 +2025-12-12 11:49:38,404 - app.core.excel.processor - INFO - 处理商品: 条码=6924743919266, 数量=5.0, 单价=4.55, 是否赠品=False +2025-12-12 11:49:38,404 - app.core.excel.processor - INFO - 发现正常商品:条码6924743919266, 数量=5.0, 单价=4.55 +2025-12-12 11:49:38,404 - app.core.excel.processor - INFO - 处理商品: 条码=6924743919259, 数量=5.0, 单价=4.55, 是否赠品=False +2025-12-12 11:49:38,405 - app.core.excel.processor - INFO - 发现正常商品:条码6924743919259, 数量=5.0, 单价=4.55 +2025-12-12 11:49:38,406 - app.core.excel.processor - INFO - 处理商品: 条码=6924743919228, 数量=3.0, 单价=4.55, 是否赠品=False +2025-12-12 11:49:38,406 - app.core.excel.processor - INFO - 发现正常商品:条码6924743919228, 数量=3.0, 单价=4.55 +2025-12-12 11:49:38,406 - app.core.excel.processor - INFO - 处理商品: 条码=6924743928077, 数量=1.0, 单价=1.35, 是否赠品=False +2025-12-12 11:49:38,406 - app.core.excel.processor - INFO - 发现正常商品:条码6924743928077, 数量=1.0, 单价=1.35 +2025-12-12 11:49:38,406 - app.core.excel.processor - INFO - 分组后共52 个不同条码的商品 +2025-12-12 11:49:38,406 - app.core.excel.processor - INFO - 条码 6954767432076 处理结果:正常商品数量48.0,单价2.2,赠品数量0 +2025-12-12 11:49:38,406 - app.core.excel.processor - INFO - 条码 6954767433073 处理结果:正常商品数量8.0,单价5.26,赠品数量0 +2025-12-12 11:49:38,406 - app.core.excel.processor - INFO - 条码 6901285992933 处理结果:正常商品数量40.0,单价2.56,赠品数量0 +2025-12-12 11:49:38,406 - app.core.excel.processor - INFO - 条码 6901285991530 处理结果:正常商品数量8.0,单价6.19,赠品数量0 +2025-12-12 11:49:38,406 - app.core.excel.processor - INFO - 条码 6901285991271 处理结果:正常商品数量60.0,单价1.95,赠品数量0 +2025-12-12 11:49:38,406 - app.core.excel.processor - INFO - 条码 6920584471017 处理结果:正常商品数量12.0,单价4.27,赠品数量0 +2025-12-12 11:49:38,409 - app.core.excel.processor - INFO - 条码 6901668934925 处理结果:正常商品数量5.0,单价5.66,赠品数量0 +2025-12-12 11:49:38,409 - app.core.excel.processor - INFO - 条码 6901668054715 处理结果:正常商品数量4.0,单价3.42,赠品数量0 +2025-12-12 11:49:38,409 - app.core.excel.processor - INFO - 条码 6901668053916 处理结果:正常商品数量3.0,单价3.42,赠品数量0 +2025-12-12 11:49:38,410 - app.core.excel.processor - INFO - 条码 6920907800616 处理结果:正常商品数量4.0,单价2.85,赠品数量0 +2025-12-12 11:49:38,410 - app.core.excel.processor - INFO - 条码 6935855700383 处理结果:正常商品数量8.0,单价4.51,赠品数量0 +2025-12-12 11:49:38,410 - app.core.excel.processor - INFO - 条码 6925683200957 处理结果:正常商品数量8.0,单价3.32,赠品数量0 +2025-12-12 11:49:38,410 - app.core.excel.processor - INFO - 条码 6901845044027 处理结果:正常商品数量4.0,单价5.27,赠品数量0 +2025-12-12 11:49:38,410 - app.core.excel.processor - INFO - 条码 6901845040968 处理结果:正常商品数量5.0,单价5.27,赠品数量0 +2025-12-12 11:49:38,412 - app.core.excel.processor - INFO - 条码 6901668935649 处理结果:正常商品数量6.0,单价1.89,赠品数量0 +2025-12-12 11:49:38,412 - app.core.excel.processor - INFO - 条码 6901668935663 处理结果:正常商品数量5.0,单价1.89,赠品数量0 +2025-12-12 11:49:38,412 - app.core.excel.processor - INFO - 条码 6947929617534 处理结果:正常商品数量4.0,单价2.53,赠品数量0 +2025-12-12 11:49:38,412 - app.core.excel.processor - INFO - 条码 6947929617138 处理结果:正常商品数量4.0,单价2.53,赠品数量0 +2025-12-12 11:49:38,413 - app.core.excel.processor - INFO - 条码 6901668200013 处理结果:正常商品数量3.0,单价3.05,赠品数量0 +2025-12-12 11:49:38,413 - app.core.excel.processor - INFO - 条码 6901668200303 处理结果:正常商品数量3.0,单价3.05,赠品数量0 +2025-12-12 11:49:38,413 - app.core.excel.processor - INFO - 条码 6911988005229 处理结果:正常商品数量4.0,单价2.14,赠品数量0 +2025-12-12 11:49:38,414 - app.core.excel.processor - INFO - 条码 6911988000293 处理结果:正常商品数量4.0,单价3.61,赠品数量0 +2025-12-12 11:49:38,414 - app.core.excel.processor - INFO - 条码 6911988000286 处理结果:正常商品数量3.0,单价3.61,赠品数量0 +2025-12-12 11:49:38,414 - app.core.excel.processor - INFO - 条码 6911988009777 处理结果:正常商品数量3.0,单价2.71,赠品数量0 +2025-12-12 11:49:38,414 - app.core.excel.processor - INFO - 条码 6911988009760 处理结果:正常商品数量3.0,单价2.71,赠品数量0 +2025-12-12 11:49:38,415 - app.core.excel.processor - INFO - 条码 6911988009784 处理结果:正常商品数量3.0,单价2.71,赠品数量0 +2025-12-12 11:49:38,415 - app.core.excel.processor - INFO - 条码 6901180581683 处理结果:正常商品数量2.0,单价3.61,赠品数量0 +2025-12-12 11:49:38,415 - app.core.excel.processor - INFO - 条码 6932024200552 处理结果:正常商品数量3.0,单价2.85,赠品数量0 +2025-12-12 11:49:38,416 - app.core.excel.processor - INFO - 条码 6932024200583 处理结果:正常商品数量4.0,单价1.61,赠品数量0 +2025-12-12 11:49:38,416 - app.core.excel.processor - INFO - 条码 6901668936714 处理结果:正常商品数量4.0,单价4.52,赠品数量0 +2025-12-12 11:49:38,416 - app.core.excel.processor - INFO - 条码 6901668062499 处理结果:正常商品数量4.0,单价4.52,赠品数量0 +2025-12-12 11:49:38,416 - app.core.excel.processor - INFO - 条码 6925332600046 处理结果:正常商品数量3.0,单价3.61,赠品数量0 +2025-12-12 11:49:38,417 - app.core.excel.processor - INFO - 条码 6921233904955 处理结果:正常商品数量4.0,单价3.61,赠品数量0 +2025-12-12 11:49:38,417 - app.core.excel.processor - INFO - 条码 6901180993387 处理结果:正常商品数量3.0,单价2.85,赠品数量0 +2025-12-12 11:49:38,417 - app.core.excel.processor - INFO - 条码 6901180993486 处理结果:正常商品数量3.0,单价2.85,赠品数量0 +2025-12-12 11:49:38,417 - app.core.excel.processor - INFO - 条码 6920546800046 处理结果:正常商品数量5.0,单价3.75,赠品数量0 +2025-12-12 11:49:38,417 - app.core.excel.processor - INFO - 条码 6920546800053 处理结果:正常商品数量5.0,单价4.27,赠品数量0 +2025-12-12 11:49:38,417 - app.core.excel.processor - INFO - 条码 6911988006783 处理结果:正常商品数量1.0,单价5.59,赠品数量0 +2025-12-12 11:49:38,417 - app.core.excel.processor - INFO - 条码 6971295190759 处理结果:正常商品数量20.0,单价0.71,赠品数量0 +2025-12-12 11:49:38,417 - app.core.excel.processor - INFO - 条码 6951957217307 处理结果:正常商品数量20.0,单价1.26,赠品数量0 +2025-12-12 11:49:38,417 - app.core.excel.processor - INFO - 条码 6951957215723 处理结果:正常商品数量20.0,单价1.26,赠品数量0 +2025-12-12 11:49:38,417 - app.core.excel.processor - INFO - 条码 6977530260072 处理结果:正常商品数量25.0,单价0.33,赠品数量0 +2025-12-12 11:49:38,417 - app.core.excel.processor - INFO - 条码 6925300100400 处理结果:正常商品数量25.0,单价0.33,赠品数量0 +2025-12-12 11:49:38,417 - app.core.excel.processor - INFO - 条码 6922170800638 处理结果:正常商品数量20.0,单价0.71,赠品数量0 +2025-12-12 11:49:38,417 - app.core.excel.processor - INFO - 条码 690299810 处理结果:正常商品数量16.0,单价1.38,赠品数量0 +2025-12-12 11:49:38,417 - app.core.excel.processor - INFO - 条码 6936869215092 处理结果:正常商品数量15.0,单价1.42,赠品数量0 +2025-12-12 11:49:38,421 - app.core.excel.processor - INFO - 条码 6951957205762 处理结果:正常商品数量20.0,单价0.67,赠品数量0 +2025-12-12 11:49:38,422 - app.core.excel.processor - INFO - 条码 6976481800078 处理结果:正常商品数量30.0,单价0.71,赠品数量0 +2025-12-12 11:49:38,422 - app.core.excel.processor - INFO - 条码 6924743919266 处理结果:正常商品数量5.0,单价4.55,赠品数量0 +2025-12-12 11:49:38,422 - app.core.excel.processor - INFO - 条码 6924743919259 处理结果:正常商品数量5.0,单价4.55,赠品数量0 +2025-12-12 11:49:38,423 - app.core.excel.processor - INFO - 条码 6924743919228 处理结果:正常商品数量3.0,单价4.55,赠品数量0 +2025-12-12 11:49:38,423 - app.core.excel.processor - INFO - 条码 6924743928077 处理结果:正常商品数量1.0,单价1.35,赠品数量0 +2025-12-12 11:49:38,426 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_蓉城易购-订单1765440157955.xls +2025-12-12 11:49:38,427 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_蓉城易购-订单1765440157955.xls +2025-12-12 12:30:07,696 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-12-12 12:30:07,696 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-12-12 12:30:07,698 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-12-12 12:30:07,700 - app.core.excel.processor - INFO - 开始处理Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765513775092.xlsx +2025-12-12 12:30:07,708 - app.core.excel.processor - INFO - 成功读取Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765513775092.xlsx, 共 66 行 +2025-12-12 12:30:07,712 - app.core.excel.processor - INFO - 找到可能的表头行: 第1行,评分: 75 +2025-12-12 12:30:07,712 - app.core.excel.processor - INFO - 识别到表头在第 1 行 +2025-12-12 12:30:07,723 - app.core.excel.processor - INFO - 使用表头行重新读取数据,共 65 行有效数据 +2025-12-12 12:30:07,726 - app.core.excel.processor - INFO - 找到部分匹配的条码列: 商品条码(小条码) (包含关键词: 条码) +2025-12-12 12:30:07,726 - app.core.excel.processor - INFO - 使用条码列: 商品条码(小条码) +2025-12-12 12:30:07,726 - app.core.excel.processor - INFO - 找到name列: 商品名称 +2025-12-12 12:30:07,726 - app.core.excel.processor - INFO - 找到quantity列(部分匹配): 订购数量(小单位) +2025-12-12 12:30:07,726 - app.core.excel.processor - INFO - 找到unit列: 单位 +2025-12-12 12:30:07,726 - app.core.excel.processor - INFO - 找到price列(部分匹配): 单价(小单位) +2025-12-12 12:30:07,726 - app.core.excel.processor - INFO - 找到amount列(部分匹配): 优惠后金额(小单位) +2025-12-12 12:30:07,726 - app.core.excel.processor - INFO - 检测到列映射: {'barcode': '商品条码(小条码)', 'name': '商品名称', 'quantity': '订购数量(小单位)', 'unit': '单位', 'price': '单价(小单位)', 'amount': '优惠后金额(小单位)'} +2025-12-12 12:30:07,726 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事墨西哥鸡汁番茄味70g@ -> 70*None, 包装数量=70 +2025-12-12 12:30:07,730 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事美国经典原味70g@ -> 70*None, 包装数量=70 +2025-12-12 12:30:07,730 - app.core.excel.processor - INFO - 从商品名称推断规格: 子弟原切马铃薯片清怡黄瓜味95g@ -> 95*None, 包装数量=95 +2025-12-12 12:30:07,734 - app.core.excel.processor - INFO - 从商品名称推断规格: 子弟原切马铃薯片美滋番茄味95g@ -> 95*None, 包装数量=95 +2025-12-12 12:30:07,734 - app.core.excel.processor - INFO - 从商品名称推断规格: 子弟原切马铃薯片经典麻辣味95g@ -> 95*None, 包装数量=95 +2025-12-12 12:30:07,738 - app.core.excel.processor - INFO - 从商品名称推断规格: 子弟原切马铃薯片劲爆麻辣味95g@ -> 95*None, 包装数量=95 +2025-12-12 12:30:07,738 - app.core.excel.processor - INFO - 从商品名称推断规格: 飘零大叔香辣猪肉脯50g@ -> 50*None, 包装数量=50 +2025-12-12 12:30:07,742 - app.core.excel.processor - INFO - 从商品名称推断规格: 飘零大叔川味烤香肠香辣味65g@ -> 65*None, 包装数量=65 +2025-12-12 12:30:07,742 - app.core.excel.processor - INFO - 从商品名称推断规格: 川牛娃老成都五香牛肉干60g -> 60*None, 包装数量=60 +2025-12-12 12:30:07,742 - app.core.excel.processor - INFO - 从商品名称推断规格: 王小卤虎皮凤爪卤香味 105g@ -> 105*None, 包装数量=105 +2025-12-12 12:30:07,746 - app.core.excel.processor - INFO - 从商品名称推断规格: 王小卤虎皮凤爪火锅味105g@ -> 105*None, 包装数量=105 +2025-12-12 12:30:07,746 - app.core.excel.processor - INFO - 从商品名称推断规格: 四味王酱鸭脖猛辣味60g@ -> 60*None, 包装数量=60 +2025-12-12 12:30:07,750 - app.core.excel.processor - INFO - 从商品名称推断规格: 四味王酱鸭脖微辣味60g@ -> 60*None, 包装数量=60 +2025-12-12 12:30:07,753 - app.core.excel.processor - INFO - 从商品名称推断规格: 麦得赞盐焗烤腿90g -> 90*None, 包装数量=90 +2025-12-12 12:30:07,754 - app.core.excel.processor - INFO - 从商品名称推断规格: 杨记老卤双爪多味70g -> 70*None, 包装数量=70 +2025-12-12 12:30:07,756 - app.core.excel.processor - INFO - 从商品名称推断规格: 逍遥嘴花椒鸡味180g -> 180*None, 包装数量=180 +2025-12-12 12:30:07,758 - app.core.excel.processor - INFO - 从商品名称推断规格: 茂林炭烤鱿鱼丝60g -> 60*None, 包装数量=60 +2025-12-12 12:30:07,759 - app.core.excel.processor - INFO - 从商品名称推断规格: 金满福手工辣条素龙虾味152g -> 152*None, 包装数量=152 +2025-12-12 12:30:07,759 - app.core.excel.processor - INFO - 从商品名称推断规格: 卫龙大面筋102g@ -> 102*None, 包装数量=102 +2025-12-12 12:30:07,763 - app.core.excel.processor - INFO - 从商品名称推断规格: 麻辣王子地道辣条很麻很辣73g -> 73*None, 包装数量=73 +2025-12-12 12:30:07,763 - app.core.excel.processor - INFO - 从商品名称推断规格: 麻辣王子地道辣条微麻微辣73g -> 73*None, 包装数量=73 +2025-12-12 12:30:07,767 - app.core.excel.processor - INFO - 从商品名称推断规格: 展华大辣棒麻辣牛肉味138g -> 138*None, 包装数量=138 +2025-12-12 12:30:07,767 - app.core.excel.processor - INFO - 从商品名称推断规格: 徐福记米果卷香烤牛排90g@ -> 90*None, 包装数量=90 +2025-12-12 12:30:07,767 - app.core.excel.processor - INFO - 从商品名称推断规格: 徐福记米果卷奶油玉米90g@ -> 90*None, 包装数量=90 +2025-12-12 12:30:07,771 - app.core.excel.processor - INFO - 从商品名称推断规格: 登荣素口水鸡65g -> 65*None, 包装数量=65 +2025-12-12 12:30:07,771 - app.core.excel.processor - INFO - 从商品名称推断规格: 太哥辣白菜味调味面制品58g -> 58*None, 包装数量=58 +2025-12-12 12:30:07,775 - app.core.excel.processor - INFO - 从商品名称推断规格: 小渝儿泡椒牛板筋泡椒80g@ -> 80*None, 包装数量=80 +2025-12-12 12:30:07,775 - app.core.excel.processor - INFO - 从商品名称推断规格: 小渝儿泡椒臭干子泡椒80g@ -> 80*None, 包装数量=80 +2025-12-12 12:30:07,779 - app.core.excel.processor - INFO - 从商品名称推断规格: 郎阿哥牛羊配辣味90g -> 90*None, 包装数量=90 +2025-12-12 12:30:07,779 - app.core.excel.processor - INFO - 从商品名称推断规格: 卫龙大面筋106g@ -> 106*None, 包装数量=106 +2025-12-12 12:30:07,779 - app.core.excel.processor - INFO - 从商品名称推断规格: 小滑头薄片(经典)72g -> 72*None, 包装数量=72 +2025-12-12 12:30:07,784 - app.core.excel.processor - INFO - 从商品名称推断规格: 溜溜梅西梅60g@ -> 60*None, 包装数量=60 +2025-12-12 12:30:07,786 - app.core.excel.processor - INFO - 从商品名称推断规格: 溜溜梅清梅60g@ -> 60*None, 包装数量=60 +2025-12-12 12:30:07,788 - app.core.excel.processor - INFO - 从商品名称推断规格: 溜溜梅雪梅60g@ -> 60*None, 包装数量=60 +2025-12-12 12:30:07,788 - app.core.excel.processor - INFO - 从商品名称推断规格: 溜溜梅西梅160g@ -> 160*None, 包装数量=160 +2025-12-12 12:30:07,791 - app.core.excel.processor - INFO - 从商品名称推断规格: 溜溜梅清梅160g@ -> 160*None, 包装数量=160 +2025-12-12 12:30:07,791 - app.core.excel.processor - INFO - 从商品名称推断规格: 溜溜梅杨梅50g@ -> 50*None, 包装数量=50 +2025-12-12 12:30:07,795 - app.core.excel.processor - INFO - 从商品名称推断规格: 天马达利雪梅65g -> 65*None, 包装数量=65 +2025-12-12 12:30:07,795 - app.core.excel.processor - INFO - 从商品名称推断规格: 必吃客雪花山楂条142g -> 142*None, 包装数量=142 +2025-12-12 12:30:07,799 - app.core.excel.processor - INFO - 从商品名称推断规格: 必吃客零售瓶红薯果脯140g -> 140*None, 包装数量=140 +2025-12-12 12:30:07,799 - app.core.excel.processor - INFO - 从商品名称推断规格: 75g旺宝香蕉脆片 -> 75*None, 包装数量=75 +2025-12-12 12:30:07,799 - app.core.excel.processor - INFO - 从商品名称推断规格: 旺宝开心果100g -> 100*None, 包装数量=100 +2025-12-12 12:30:07,803 - app.core.excel.processor - INFO - 从商品名称推断规格: 金枣庄阿胶枣200g -> 200*None, 包装数量=200 +2025-12-12 12:30:07,803 - app.core.excel.processor - INFO - 从商品名称推断规格: 大白兔奶糖114g@ -> 114*None, 包装数量=114 +2025-12-12 12:30:07,807 - app.core.excel.processor - INFO - 从商品名称推断规格: 佳宝无核葡萄干90g -> 90*None, 包装数量=90 +2025-12-12 12:30:07,807 - app.core.excel.processor - INFO - 从商品名称推断规格: 老程华甲级杂糖140g -> 140*None, 包装数量=140 +2025-12-12 12:30:07,811 - app.core.excel.processor - INFO - 从商品名称推断规格: 飘零大叔香卤铁蛋88g@ -> 88*None, 包装数量=88 +2025-12-12 12:30:07,811 - app.core.excel.processor - INFO - 从商品名称推断规格: 80g调皮猴鹌鹑蛋(麻辣味) -> 80*None, 包装数量=80 +2025-12-12 12:30:07,815 - app.core.excel.processor - INFO - 从商品名称推断规格: 有友卤香鸡翅120g@ -> 120*None, 包装数量=120 +2025-12-12 12:30:07,817 - app.core.excel.processor - INFO - 从商品名称推断规格: 125g千百度卤香鸡翅(五香味) -> 125*None, 包装数量=125 +2025-12-12 12:30:07,819 - app.core.excel.processor - INFO - 从商品名称推断规格: 逍遥派盐焗鸡腿100g -> 100*None, 包装数量=100 +2025-12-12 12:30:07,821 - app.core.excel.processor - INFO - 从商品名称推断规格: 周小贱功夫鸭脖疯狂香辣味55g -> 55*None, 包装数量=55 +2025-12-12 12:30:07,821 - app.core.excel.processor - INFO - 从商品名称推断规格: 好巴食豆腐干麻辣味涨95g -> 95*None, 包装数量=95 +2025-12-12 12:30:07,821 - app.core.excel.processor - INFO - 从商品名称推断规格: 好巴食豆腐干烧烤味涨95g -> 95*None, 包装数量=95 +2025-12-12 12:30:07,825 - app.core.excel.processor - INFO - 从商品名称推断规格: 好巴食南溪豆干五香味涨95g -> 95*None, 包装数量=95 +2025-12-12 12:30:07,825 - app.core.excel.processor - INFO - 从商品名称推断规格: 香香嘴卤制豆腐干香辣味80g@ -> 80*None, 包装数量=80 +2025-12-12 12:30:07,829 - app.core.excel.processor - INFO - 从商品名称推断规格: 老灶煮花生130g -> 130*None, 包装数量=130 +2025-12-12 12:30:07,829 - app.core.excel.processor - INFO - 从商品名称推断规格: 老灶花生292g -> 292*None, 包装数量=292 +2025-12-12 12:30:07,833 - app.core.excel.processor - INFO - 从商品名称推断规格: 老灶花生186g -> 186*None, 包装数量=186 +2025-12-12 12:30:07,833 - app.core.excel.processor - INFO - 从商品名称推断规格: 洽洽奶香瓜子285g@ -> 285*None, 包装数量=285 +2025-12-12 12:30:07,833 - app.core.excel.processor - INFO - 提取到 60 个商品信息 +2025-12-12 12:30:07,837 - app.core.excel.processor - INFO - 开始处理60 个产品信息 +2025-12-12 12:30:07,837 - app.core.excel.processor - INFO - 处理商品: 条码=6924743919242, 数量=5.0, 单价=4.55, 是否赠品=False +2025-12-12 12:30:07,837 - app.core.excel.processor - INFO - 发现正常商品:条码6924743919242, 数量=5.0, 单价=4.55 +2025-12-12 12:30:07,837 - app.core.excel.processor - INFO - 处理商品: 条码=6924743919211, 数量=3.0, 单价=4.55, 是否赠品=False +2025-12-12 12:30:07,837 - app.core.excel.processor - INFO - 发现正常商品:条码6924743919211, 数量=3.0, 单价=4.55 +2025-12-12 12:30:07,841 - app.core.excel.processor - INFO - 处理商品: 条码=6922222020038, 数量=6.0, 单价=5.32, 是否赠品=False +2025-12-12 12:30:07,841 - app.core.excel.processor - INFO - 发现正常商品:条码6922222020038, 数量=6.0, 单价=5.32 +2025-12-12 12:30:07,841 - app.core.excel.processor - INFO - 处理商品: 条码=6922222020267, 数量=6.0, 单价=5.32, 是否赠品=False +2025-12-12 12:30:07,841 - app.core.excel.processor - INFO - 发现正常商品:条码6922222020267, 数量=6.0, 单价=5.32 +2025-12-12 12:30:07,841 - app.core.excel.processor - INFO - 处理商品: 条码=6922222021868, 数量=6.0, 单价=5.32, 是否赠品=False +2025-12-12 12:30:07,841 - app.core.excel.processor - INFO - 发现正常商品:条码6922222021868, 数量=6.0, 单价=5.32 +2025-12-12 12:30:07,841 - app.core.excel.processor - INFO - 处理商品: 条码=6922222098952, 数量=6.0, 单价=5.32, 是否赠品=False +2025-12-12 12:30:07,841 - app.core.excel.processor - INFO - 发现正常商品:条码6922222098952, 数量=6.0, 单价=5.32 +2025-12-12 12:30:07,841 - app.core.excel.processor - INFO - 处理商品: 条码=6953663016052, 数量=4.0, 单价=5.46, 是否赠品=False +2025-12-12 12:30:07,841 - app.core.excel.processor - INFO - 发现正常商品:条码6953663016052, 数量=4.0, 单价=5.46 +2025-12-12 12:30:07,841 - app.core.excel.processor - INFO - 处理商品: 条码=6953663027102, 数量=4.0, 单价=6.77, 是否赠品=False +2025-12-12 12:30:07,841 - app.core.excel.processor - INFO - 发现正常商品:条码6953663027102, 数量=4.0, 单价=6.77 +2025-12-12 12:30:07,841 - app.core.excel.processor - INFO - 处理商品: 条码=6924128100227, 数量=4.0, 单价=9.03, 是否赠品=False +2025-12-12 12:30:07,841 - app.core.excel.processor - INFO - 发现正常商品:条码6924128100227, 数量=4.0, 单价=9.03 +2025-12-12 12:30:07,841 - app.core.excel.processor - INFO - 处理商品: 条码=6972636670213, 数量=3.0, 单价=10.36, 是否赠品=False +2025-12-12 12:30:07,845 - app.core.excel.processor - INFO - 发现正常商品:条码6972636670213, 数量=3.0, 单价=10.36 +2025-12-12 12:30:07,845 - app.core.excel.processor - INFO - 处理商品: 条码=6972636670602, 数量=2.0, 单价=10.36, 是否赠品=False +2025-12-12 12:30:07,845 - app.core.excel.processor - INFO - 发现正常商品:条码6972636670602, 数量=2.0, 单价=10.36 +2025-12-12 12:30:07,845 - app.core.excel.processor - INFO - 处理商品: 条码=6946296590051, 数量=2.0, 单价=4.66, 是否赠品=False +2025-12-12 12:30:07,845 - app.core.excel.processor - INFO - 发现正常商品:条码6946296590051, 数量=2.0, 单价=4.66 +2025-12-12 12:30:07,845 - app.core.excel.processor - INFO - 处理商品: 条码=6946296501576, 数量=3.0, 单价=4.66, 是否赠品=False +2025-12-12 12:30:07,845 - app.core.excel.processor - INFO - 发现正常商品:条码6946296501576, 数量=3.0, 单价=4.66 +2025-12-12 12:30:07,847 - app.core.excel.processor - INFO - 处理商品: 条码=6970660432425, 数量=4.0, 单价=3.71, 是否赠品=False +2025-12-12 12:30:07,847 - app.core.excel.processor - INFO - 发现正常商品:条码6970660432425, 数量=4.0, 单价=3.71 +2025-12-12 12:30:07,847 - app.core.excel.processor - INFO - 处理商品: 条码=6970813651017, 数量=4.0, 单价=3.8, 是否赠品=False +2025-12-12 12:30:07,847 - app.core.excel.processor - INFO - 发现正常商品:条码6970813651017, 数量=4.0, 单价=3.8 +2025-12-12 12:30:07,848 - app.core.excel.processor - INFO - 处理商品: 条码=6957845201106, 数量=6.0, 单价=2.85, 是否赠品=False +2025-12-12 12:30:07,848 - app.core.excel.processor - INFO - 发现正常商品:条码6957845201106, 数量=6.0, 单价=2.85 +2025-12-12 12:30:07,848 - app.core.excel.processor - INFO - 处理商品: 条码=6920713212641, 数量=5.0, 单价=8.46, 是否赠品=False +2025-12-12 12:30:07,848 - app.core.excel.processor - INFO - 发现正常商品:条码6920713212641, 数量=5.0, 单价=8.46 +2025-12-12 12:30:07,848 - app.core.excel.processor - INFO - 处理商品: 条码=6924050713793, 数量=4.0, 单价=2.95, 是否赠品=False +2025-12-12 12:30:07,848 - app.core.excel.processor - INFO - 发现正常商品:条码6924050713793, 数量=4.0, 单价=2.95 +2025-12-12 12:30:07,848 - app.core.excel.processor - INFO - 处理商品: 条码=6935284499995, 数量=6.0, 单价=2.58, 是否赠品=False +2025-12-12 12:30:07,848 - app.core.excel.processor - INFO - 发现正常商品:条码6935284499995, 数量=6.0, 单价=2.58 +2025-12-12 12:30:07,848 - app.core.excel.processor - INFO - 处理商品: 条码=6930487920796, 数量=5.0, 单价=3.61, 是否赠品=False +2025-12-12 12:30:07,848 - app.core.excel.processor - INFO - 发现正常商品:条码6930487920796, 数量=5.0, 单价=3.61 +2025-12-12 12:30:07,848 - app.core.excel.processor - INFO - 处理商品: 条码=6930487920802, 数量=6.0, 单价=3.61, 是否赠品=False +2025-12-12 12:30:07,848 - app.core.excel.processor - INFO - 发现正常商品:条码6930487920802, 数量=6.0, 单价=3.61 +2025-12-12 12:30:07,848 - app.core.excel.processor - INFO - 处理商品: 条码=6975319460583, 数量=6.0, 单价=2.95, 是否赠品=False +2025-12-12 12:30:07,851 - app.core.excel.processor - INFO - 发现正常商品:条码6975319460583, 数量=6.0, 单价=2.95 +2025-12-12 12:30:07,851 - app.core.excel.processor - INFO - 处理商品: 条码=6914782202504, 数量=2.0, 单价=4.62, 是否赠品=False +2025-12-12 12:30:07,851 - app.core.excel.processor - INFO - 发现正常商品:条码6914782202504, 数量=2.0, 单价=4.62 +2025-12-12 12:30:07,851 - app.core.excel.processor - INFO - 处理商品: 条码=6914782202498, 数量=2.0, 单价=4.62, 是否赠品=False +2025-12-12 12:30:07,851 - app.core.excel.processor - INFO - 发现正常商品:条码6914782202498, 数量=2.0, 单价=4.62 +2025-12-12 12:30:07,851 - app.core.excel.processor - INFO - 处理商品: 条码=6922170800072, 数量=4.0, 单价=1.52, 是否赠品=False +2025-12-12 12:30:07,851 - app.core.excel.processor - INFO - 发现正常商品:条码6922170800072, 数量=4.0, 单价=1.52 +2025-12-12 12:30:07,851 - app.core.excel.processor - INFO - 处理商品: 条码=6977164310136, 数量=10.0, 单价=1.43, 是否赠品=False +2025-12-12 12:30:07,851 - app.core.excel.processor - INFO - 发现正常商品:条码6977164310136, 数量=10.0, 单价=1.43 +2025-12-12 12:30:07,851 - app.core.excel.processor - INFO - 处理商品: 条码=6944204200535, 数量=4.0, 单价=1.38, 是否赠品=False +2025-12-12 12:30:07,851 - app.core.excel.processor - INFO - 发现正常商品:条码6944204200535, 数量=4.0, 单价=1.38 +2025-12-12 12:30:07,851 - app.core.excel.processor - INFO - 处理商品: 条码=6944204200313, 数量=6.0, 单价=1.22, 是否赠品=False +2025-12-12 12:30:07,851 - app.core.excel.processor - INFO - 发现正常商品:条码6944204200313, 数量=6.0, 单价=1.22 +2025-12-12 12:30:07,851 - app.core.excel.processor - INFO - 处理商品: 条码=6974107050067, 数量=6.0, 单价=2.09, 是否赠品=False +2025-12-12 12:30:07,851 - app.core.excel.processor - INFO - 发现正常商品:条码6974107050067, 数量=6.0, 单价=2.09 +2025-12-12 12:30:07,851 - app.core.excel.processor - INFO - 处理商品: 条码=6935284412918, 数量=5.0, 单价=3.13, 是否赠品=False +2025-12-12 12:30:07,851 - app.core.excel.processor - INFO - 发现正常商品:条码6935284412918, 数量=5.0, 单价=3.13 +2025-12-12 12:30:07,855 - app.core.excel.processor - INFO - 处理商品: 条码=6928822302901, 数量=5.0, 单价=1.43, 是否赠品=False +2025-12-12 12:30:07,855 - app.core.excel.processor - INFO - 发现正常商品:条码6928822302901, 数量=5.0, 单价=1.43 +2025-12-12 12:30:07,855 - app.core.excel.processor - INFO - 处理商品: 条码=6952480069692, 数量=4.0, 单价=3.61, 是否赠品=False +2025-12-12 12:30:07,855 - app.core.excel.processor - INFO - 发现正常商品:条码6952480069692, 数量=4.0, 单价=3.61 +2025-12-12 12:30:07,855 - app.core.excel.processor - INFO - 处理商品: 条码=6923976113137, 数量=3.0, 单价=3.61, 是否赠品=False +2025-12-12 12:30:07,855 - app.core.excel.processor - INFO - 发现正常商品:条码6923976113137, 数量=3.0, 单价=3.61 +2025-12-12 12:30:07,855 - app.core.excel.processor - INFO - 处理商品: 条码=6923976111171, 数量=5.0, 单价=3.61, 是否赠品=False +2025-12-12 12:30:07,855 - app.core.excel.processor - INFO - 发现正常商品:条码6923976111171, 数量=5.0, 单价=3.61 +2025-12-12 12:30:07,855 - app.core.excel.processor - INFO - 处理商品: 条码=6952480069678, 数量=3.0, 单价=8.55, 是否赠品=False +2025-12-12 12:30:07,855 - app.core.excel.processor - INFO - 发现正常商品:条码6952480069678, 数量=3.0, 单价=8.55 +2025-12-12 12:30:07,855 - app.core.excel.processor - INFO - 处理商品: 条码=6923976110136, 数量=3.0, 单价=8.55, 是否赠品=False +2025-12-12 12:30:07,855 - app.core.excel.processor - INFO - 发现正常商品:条码6923976110136, 数量=3.0, 单价=8.55 +2025-12-12 12:30:07,855 - app.core.excel.processor - INFO - 处理商品: 条码=6952480080536, 数量=3.0, 单价=3.61, 是否赠品=False +2025-12-12 12:30:07,855 - app.core.excel.processor - INFO - 发现正常商品:条码6952480080536, 数量=3.0, 单价=3.61 +2025-12-12 12:30:07,855 - app.core.excel.processor - INFO - 处理商品: 条码=6905175015139, 数量=3.0, 单价=2.38, 是否赠品=False +2025-12-12 12:30:07,855 - app.core.excel.processor - INFO - 发现正常商品:条码6905175015139, 数量=3.0, 单价=2.38 +2025-12-12 12:30:07,855 - app.core.excel.processor - INFO - 处理商品: 条码=6921757581809, 数量=5.0, 单价=3.9, 是否赠品=False +2025-12-12 12:30:07,859 - app.core.excel.processor - INFO - 发现正常商品:条码6921757581809, 数量=5.0, 单价=3.9 +2025-12-12 12:30:07,859 - app.core.excel.processor - INFO - 处理商品: 条码=6921757586118, 数量=3.0, 单价=3.99, 是否赠品=False +2025-12-12 12:30:07,859 - app.core.excel.processor - INFO - 发现正常商品:条码6921757586118, 数量=3.0, 单价=3.99 +2025-12-12 12:30:07,859 - app.core.excel.processor - INFO - 处理商品: 条码=6972780130373, 数量=3.0, 单价=3.04, 是否赠品=False +2025-12-12 12:30:07,859 - app.core.excel.processor - INFO - 发现正常商品:条码6972780130373, 数量=3.0, 单价=3.04 +2025-12-12 12:30:07,859 - app.core.excel.processor - INFO - 处理商品: 条码=6940764201050, 数量=3.0, 单价=9.98, 是否赠品=False +2025-12-12 12:30:07,859 - app.core.excel.processor - INFO - 发现正常商品:条码6940764201050, 数量=3.0, 单价=9.98 +2025-12-12 12:30:07,859 - app.core.excel.processor - INFO - 处理商品: 条码=6940369900105, 数量=3.0, 单价=2.52, 是否赠品=False +2025-12-12 12:30:07,859 - app.core.excel.processor - INFO - 发现正常商品:条码6940369900105, 数量=3.0, 单价=2.52 +2025-12-12 12:30:07,859 - app.core.excel.processor - INFO - 处理商品: 条码=6922024730029, 数量=3.0, 单价=5.69, 是否赠品=False +2025-12-12 12:30:07,859 - app.core.excel.processor - INFO - 发现正常商品:条码6922024730029, 数量=3.0, 单价=5.69 +2025-12-12 12:30:07,859 - app.core.excel.processor - INFO - 处理商品: 条码=6901097790178, 数量=4.0, 单价=3.33, 是否赠品=False +2025-12-12 12:30:07,859 - app.core.excel.processor - INFO - 发现正常商品:条码6901097790178, 数量=4.0, 单价=3.33 +2025-12-12 12:30:07,859 - app.core.excel.processor - INFO - 处理商品: 条码=6938270511220, 数量=3.0, 单价=3.42, 是否赠品=False +2025-12-12 12:30:07,859 - app.core.excel.processor - INFO - 发现正常商品:条码6938270511220, 数量=3.0, 单价=3.42 +2025-12-12 12:30:07,859 - app.core.excel.processor - INFO - 处理商品: 条码=6953663018964, 数量=3.0, 单价=5.15, 是否赠品=False +2025-12-12 12:30:07,863 - app.core.excel.processor - INFO - 发现正常商品:条码6953663018964, 数量=3.0, 单价=5.15 +2025-12-12 12:30:07,863 - app.core.excel.processor - INFO - 处理商品: 条码=6938830600159, 数量=3.0, 单价=2.38, 是否赠品=False +2025-12-12 12:30:07,863 - app.core.excel.processor - INFO - 发现正常商品:条码6938830600159, 数量=3.0, 单价=2.38 +2025-12-12 12:30:07,863 - app.core.excel.processor - INFO - 处理商品: 条码=6922145850118, 数量=3.0, 单价=12.35, 是否赠品=False +2025-12-12 12:30:07,863 - app.core.excel.processor - INFO - 发现正常商品:条码6922145850118, 数量=3.0, 单价=12.35 +2025-12-12 12:30:07,863 - app.core.excel.processor - INFO - 处理商品: 条码=6925998800286, 数量=3.0, 单价=11.6, 是否赠品=False +2025-12-12 12:30:07,863 - app.core.excel.processor - INFO - 发现正常商品:条码6925998800286, 数量=3.0, 单价=11.6 +2025-12-12 12:30:07,863 - app.core.excel.processor - INFO - 处理商品: 条码=6933811920318, 数量=3.0, 单价=8.27, 是否赠品=False +2025-12-12 12:30:07,863 - app.core.excel.processor - INFO - 发现正常商品:条码6933811920318, 数量=3.0, 单价=8.27 +2025-12-12 12:30:07,863 - app.core.excel.processor - INFO - 处理商品: 条码=6972158461153, 数量=6.0, 单价=4.28, 是否赠品=False +2025-12-12 12:30:07,863 - app.core.excel.processor - INFO - 发现正常商品:条码6972158461153, 数量=6.0, 单价=4.28 +2025-12-12 12:30:07,863 - app.core.excel.processor - INFO - 处理商品: 条码=6927849460571, 数量=4.0, 单价=3.33, 是否赠品=False +2025-12-12 12:30:07,863 - app.core.excel.processor - INFO - 发现正常商品:条码6927849460571, 数量=4.0, 单价=3.33 +2025-12-12 12:30:07,863 - app.core.excel.processor - INFO - 处理商品: 条码=6927849460601, 数量=3.0, 单价=3.33, 是否赠品=False +2025-12-12 12:30:07,863 - app.core.excel.processor - INFO - 发现正常商品:条码6927849460601, 数量=3.0, 单价=3.33 +2025-12-12 12:30:07,863 - app.core.excel.processor - INFO - 处理商品: 条码=6927849460595, 数量=5.0, 单价=3.33, 是否赠品=False +2025-12-12 12:30:07,863 - app.core.excel.processor - INFO - 发现正常商品:条码6927849460595, 数量=5.0, 单价=3.33 +2025-12-12 12:30:07,867 - app.core.excel.processor - INFO - 处理商品: 条码=6923696800645, 数量=5.0, 单价=2.66, 是否赠品=False +2025-12-12 12:30:07,867 - app.core.excel.processor - INFO - 发现正常商品:条码6923696800645, 数量=5.0, 单价=2.66 +2025-12-12 12:30:07,867 - app.core.excel.processor - INFO - 处理商品: 条码=6938029400607, 数量=5.0, 单价=3.5, 是否赠品=False +2025-12-12 12:30:07,867 - app.core.excel.processor - INFO - 发现正常商品:条码6938029400607, 数量=5.0, 单价=3.5 +2025-12-12 12:30:07,867 - app.core.excel.processor - INFO - 处理商品: 条码=6938029400126, 数量=5.0, 单价=6.63, 是否赠品=False +2025-12-12 12:30:07,867 - app.core.excel.processor - INFO - 发现正常商品:条码6938029400126, 数量=5.0, 单价=6.63 +2025-12-12 12:30:07,867 - app.core.excel.processor - INFO - 处理商品: 条码=6938029400096, 数量=8.0, 单价=4.9, 是否赠品=False +2025-12-12 12:30:07,867 - app.core.excel.processor - INFO - 发现正常商品:条码6938029400096, 数量=8.0, 单价=4.9 +2025-12-12 12:30:07,867 - app.core.excel.processor - INFO - 处理商品: 条码=6924187824959, 数量=5.0, 单价=9.63, 是否赠品=False +2025-12-12 12:30:07,867 - app.core.excel.processor - INFO - 发现正常商品:条码6924187824959, 数量=5.0, 单价=9.63 +2025-12-12 12:30:07,867 - app.core.excel.processor - INFO - 分组后共60 个不同条码的商品 +2025-12-12 12:30:07,867 - app.core.excel.processor - INFO - 条码 6924743919242 处理结果:正常商品数量5.0,单价4.55,赠品数量0 +2025-12-12 12:30:07,867 - app.core.excel.processor - INFO - 条码 6924743919211 处理结果:正常商品数量3.0,单价4.55,赠品数量0 +2025-12-12 12:30:07,867 - app.core.excel.processor - INFO - 条码 6922222020038 处理结果:正常商品数量6.0,单价5.32,赠品数量0 +2025-12-12 12:30:07,867 - app.core.excel.processor - INFO - 条码 6922222020267 处理结果:正常商品数量6.0,单价5.32,赠品数量0 +2025-12-12 12:30:07,867 - app.core.excel.processor - INFO - 条码 6922222021868 处理结果:正常商品数量6.0,单价5.32,赠品数量0 +2025-12-12 12:30:07,867 - app.core.excel.processor - INFO - 条码 6922222098952 处理结果:正常商品数量6.0,单价5.32,赠品数量0 +2025-12-12 12:30:07,871 - app.core.excel.processor - INFO - 条码 6953663016052 处理结果:正常商品数量4.0,单价5.46,赠品数量0 +2025-12-12 12:30:07,871 - app.core.excel.processor - INFO - 条码 6953663027102 处理结果:正常商品数量4.0,单价6.77,赠品数量0 +2025-12-12 12:30:07,871 - app.core.excel.processor - INFO - 条码 6924128100227 处理结果:正常商品数量4.0,单价9.03,赠品数量0 +2025-12-12 12:30:07,871 - app.core.excel.processor - INFO - 条码 6972636670213 处理结果:正常商品数量3.0,单价10.36,赠品数量0 +2025-12-12 12:30:07,871 - app.core.excel.processor - INFO - 条码 6972636670602 处理结果:正常商品数量2.0,单价10.36,赠品数量0 +2025-12-12 12:30:07,871 - app.core.excel.processor - INFO - 条码 6946296590051 处理结果:正常商品数量2.0,单价4.66,赠品数量0 +2025-12-12 12:30:07,871 - app.core.excel.processor - INFO - 条码 6946296501576 处理结果:正常商品数量3.0,单价4.66,赠品数量0 +2025-12-12 12:30:07,871 - app.core.excel.processor - INFO - 条码 6970660432425 处理结果:正常商品数量4.0,单价3.71,赠品数量0 +2025-12-12 12:30:07,871 - app.core.excel.processor - INFO - 条码 6970813651017 处理结果:正常商品数量4.0,单价3.8,赠品数量0 +2025-12-12 12:30:07,871 - app.core.excel.processor - INFO - 条码 6957845201106 处理结果:正常商品数量6.0,单价2.85,赠品数量0 +2025-12-12 12:30:07,871 - app.core.excel.processor - INFO - 条码 6920713212641 处理结果:正常商品数量5.0,单价8.46,赠品数量0 +2025-12-12 12:30:07,871 - app.core.excel.processor - INFO - 条码 6924050713793 处理结果:正常商品数量4.0,单价2.95,赠品数量0 +2025-12-12 12:30:07,871 - app.core.excel.processor - INFO - 条码 6935284499995 处理结果:正常商品数量6.0,单价2.58,赠品数量0 +2025-12-12 12:30:07,871 - app.core.excel.processor - INFO - 条码 6930487920796 处理结果:正常商品数量5.0,单价3.61,赠品数量0 +2025-12-12 12:30:07,871 - app.core.excel.processor - INFO - 条码 6930487920802 处理结果:正常商品数量6.0,单价3.61,赠品数量0 +2025-12-12 12:30:07,871 - app.core.excel.processor - INFO - 条码 6975319460583 处理结果:正常商品数量6.0,单价2.95,赠品数量0 +2025-12-12 12:30:07,871 - app.core.excel.processor - INFO - 条码 6914782202504 处理结果:正常商品数量2.0,单价4.62,赠品数量0 +2025-12-12 12:30:07,871 - app.core.excel.processor - INFO - 条码 6914782202498 处理结果:正常商品数量2.0,单价4.62,赠品数量0 +2025-12-12 12:30:07,875 - app.core.excel.processor - INFO - 条码 6922170800072 处理结果:正常商品数量4.0,单价1.52,赠品数量0 +2025-12-12 12:30:07,875 - app.core.excel.processor - INFO - 条码 6977164310136 处理结果:正常商品数量10.0,单价1.43,赠品数量0 +2025-12-12 12:30:07,875 - app.core.excel.processor - INFO - 条码 6944204200535 处理结果:正常商品数量4.0,单价1.38,赠品数量0 +2025-12-12 12:30:07,875 - app.core.excel.processor - INFO - 条码 6944204200313 处理结果:正常商品数量6.0,单价1.22,赠品数量0 +2025-12-12 12:30:07,875 - app.core.excel.processor - INFO - 条码 6974107050067 处理结果:正常商品数量6.0,单价2.09,赠品数量0 +2025-12-12 12:30:07,875 - app.core.excel.processor - INFO - 条码 6935284412918 处理结果:正常商品数量5.0,单价3.13,赠品数量0 +2025-12-12 12:30:07,875 - app.core.excel.processor - INFO - 条码 6928822302901 处理结果:正常商品数量5.0,单价1.43,赠品数量0 +2025-12-12 12:30:07,875 - app.core.excel.processor - INFO - 条码 6952480069692 处理结果:正常商品数量4.0,单价3.61,赠品数量0 +2025-12-12 12:30:07,875 - app.core.excel.processor - INFO - 条码 6923976113137 处理结果:正常商品数量3.0,单价3.61,赠品数量0 +2025-12-12 12:30:07,875 - app.core.excel.processor - INFO - 条码 6923976111171 处理结果:正常商品数量5.0,单价3.61,赠品数量0 +2025-12-12 12:30:07,878 - app.core.excel.processor - INFO - 条码 6952480069678 处理结果:正常商品数量3.0,单价8.55,赠品数量0 +2025-12-12 12:30:07,878 - app.core.excel.processor - INFO - 条码 6923976110136 处理结果:正常商品数量3.0,单价8.55,赠品数量0 +2025-12-12 12:30:07,878 - app.core.excel.processor - INFO - 条码 6952480080536 处理结果:正常商品数量3.0,单价3.61,赠品数量0 +2025-12-12 12:30:07,878 - app.core.excel.processor - INFO - 条码 6905175015139 处理结果:正常商品数量3.0,单价2.38,赠品数量0 +2025-12-12 12:30:07,878 - app.core.excel.processor - INFO - 条码 6921757581809 处理结果:正常商品数量5.0,单价3.9,赠品数量0 +2025-12-12 12:30:07,879 - app.core.excel.processor - INFO - 条码 6921757586118 处理结果:正常商品数量3.0,单价3.99,赠品数量0 +2025-12-12 12:30:07,879 - app.core.excel.processor - INFO - 条码 6972780130373 处理结果:正常商品数量3.0,单价3.04,赠品数量0 +2025-12-12 12:30:07,879 - app.core.excel.processor - INFO - 条码 6940764201050 处理结果:正常商品数量3.0,单价9.98,赠品数量0 +2025-12-12 12:30:07,879 - app.core.excel.processor - INFO - 条码 6940369900105 处理结果:正常商品数量3.0,单价2.52,赠品数量0 +2025-12-12 12:30:07,880 - app.core.excel.processor - INFO - 条码 6922024730029 处理结果:正常商品数量3.0,单价5.69,赠品数量0 +2025-12-12 12:30:07,880 - app.core.excel.processor - INFO - 条码 6901097790178 处理结果:正常商品数量4.0,单价3.33,赠品数量0 +2025-12-12 12:30:07,880 - app.core.excel.processor - INFO - 条码 6938270511220 处理结果:正常商品数量3.0,单价3.42,赠品数量0 +2025-12-12 12:30:07,880 - app.core.excel.processor - INFO - 条码 6953663018964 处理结果:正常商品数量3.0,单价5.15,赠品数量0 +2025-12-12 12:30:07,881 - app.core.excel.processor - INFO - 条码 6938830600159 处理结果:正常商品数量3.0,单价2.38,赠品数量0 +2025-12-12 12:30:07,881 - app.core.excel.processor - INFO - 条码 6922145850118 处理结果:正常商品数量3.0,单价12.35,赠品数量0 +2025-12-12 12:30:07,881 - app.core.excel.processor - INFO - 条码 6925998800286 处理结果:正常商品数量3.0,单价11.6,赠品数量0 +2025-12-12 12:30:07,881 - app.core.excel.processor - INFO - 条码 6933811920318 处理结果:正常商品数量3.0,单价8.27,赠品数量0 +2025-12-12 12:30:07,882 - app.core.excel.processor - INFO - 条码 6972158461153 处理结果:正常商品数量6.0,单价4.28,赠品数量0 +2025-12-12 12:30:07,882 - app.core.excel.processor - INFO - 条码 6927849460571 处理结果:正常商品数量4.0,单价3.33,赠品数量0 +2025-12-12 12:30:07,882 - app.core.excel.processor - INFO - 条码 6927849460601 处理结果:正常商品数量3.0,单价3.33,赠品数量0 +2025-12-12 12:30:07,882 - app.core.excel.processor - INFO - 条码 6927849460595 处理结果:正常商品数量5.0,单价3.33,赠品数量0 +2025-12-12 12:30:07,882 - app.core.excel.processor - INFO - 条码 6923696800645 处理结果:正常商品数量5.0,单价2.66,赠品数量0 +2025-12-12 12:30:07,882 - app.core.excel.processor - INFO - 条码 6938029400607 处理结果:正常商品数量5.0,单价3.5,赠品数量0 +2025-12-12 12:30:07,882 - app.core.excel.processor - INFO - 条码 6938029400126 处理结果:正常商品数量5.0,单价6.63,赠品数量0 +2025-12-12 12:30:07,882 - app.core.excel.processor - INFO - 条码 6938029400096 处理结果:正常商品数量8.0,单价4.9,赠品数量0 +2025-12-12 12:30:07,882 - app.core.excel.processor - INFO - 条码 6924187824959 处理结果:正常商品数量5.0,单价9.63,赠品数量0 +2025-12-12 12:30:07,886 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_蓉城易购-订单1765513775092.xls +2025-12-12 12:30:07,886 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_蓉城易购-订单1765513775092.xls +2025-12-12 12:32:20,577 - app.core.excel.processor - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-12-12 12:32:20,578 - app.core.excel.processor - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-12-12 12:32:20,578 - app.core.excel.processor - INFO - 初始化ExcelProcessor完成,模板文件: templates/银豹-采购单模板.xls +2025-12-12 12:32:20,581 - app.core.excel.processor - INFO - 开始处理Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765513867817.xlsx +2025-12-12 12:32:20,587 - app.core.excel.processor - INFO - 成功读取Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765513867817.xlsx, 共 39 行 +2025-12-12 12:32:20,592 - app.core.excel.processor - INFO - 找到可能的表头行: 第1行,评分: 75 +2025-12-12 12:32:20,592 - app.core.excel.processor - INFO - 识别到表头在第 1 行 +2025-12-12 12:32:20,600 - app.core.excel.processor - INFO - 使用表头行重新读取数据,共 38 行有效数据 +2025-12-12 12:32:20,602 - app.core.excel.processor - INFO - 找到部分匹配的条码列: 商品条码(小条码) (包含关键词: 条码) +2025-12-12 12:32:20,602 - app.core.excel.processor - INFO - 使用条码列: 商品条码(小条码) +2025-12-12 12:32:20,603 - app.core.excel.processor - INFO - 找到name列: 商品名称 +2025-12-12 12:32:20,603 - app.core.excel.processor - INFO - 找到quantity列(部分匹配): 订购数量(小单位) +2025-12-12 12:32:20,603 - app.core.excel.processor - INFO - 找到unit列: 单位 +2025-12-12 12:32:20,603 - app.core.excel.processor - INFO - 找到price列(部分匹配): 单价(小单位) +2025-12-12 12:32:20,603 - app.core.excel.processor - INFO - 找到amount列(部分匹配): 优惠后金额(小单位) +2025-12-12 12:32:20,603 - app.core.excel.processor - INFO - 检测到列映射: {'barcode': '商品条码(小条码)', 'name': '商品名称', 'quantity': '订购数量(小单位)', 'unit': '单位', 'price': '单价(小单位)', 'amount': '优惠后金额(小单位)'} +2025-12-12 12:32:20,606 - app.core.excel.processor - INFO - 从商品名称推断规格: 洽洽香瓜子260g@ -> 260*None, 包装数量=260 +2025-12-12 12:32:20,606 - app.core.excel.processor - INFO - 从商品名称推断规格: 洽洽香瓜子200g@ -> 200*None, 包装数量=200 +2025-12-12 12:32:20,610 - app.core.excel.processor - INFO - 从商品名称推断规格: 洽洽香瓜子160g@ -> 160*None, 包装数量=160 +2025-12-12 12:32:20,610 - app.core.excel.processor - INFO - 从商品名称推断规格: 洽洽香瓜子110g@ -> 110*None, 包装数量=110 +2025-12-12 12:32:20,614 - app.core.excel.processor - INFO - 从商品名称推断规格: 洽洽原香瓜子142g@ -> 142*None, 包装数量=142 +2025-12-12 12:32:20,614 - app.core.excel.processor - INFO - 从商品名称推断规格: 徽记生瓜子涨115g -> 115*None, 包装数量=115 +2025-12-12 12:32:20,619 - app.core.excel.processor - INFO - 从商品名称推断规格: 徽记煮瓜子涨140g -> 140*None, 包装数量=140 +2025-12-12 12:32:20,619 - app.core.excel.processor - INFO - 从商品名称推断规格: 洽洽瓜子山核桃108g@ -> 108*None, 包装数量=108 +2025-12-12 12:32:20,622 - app.core.excel.processor - INFO - 从商品名称推断规格: 洽洽瓜子焦糖味88g@ -> 88*None, 包装数量=88 +2025-12-12 12:32:20,622 - app.core.excel.processor - INFO - 从商品名称推断规格: 百世兴酒鬼花生原味100g -> 100*None, 包装数量=100 +2025-12-12 12:32:20,626 - app.core.excel.processor - INFO - 从商品名称推断规格: 百世兴酒鬼花生80g -> 80*None, 包装数量=80 +2025-12-12 12:32:20,629 - app.core.excel.processor - INFO - 从商品名称推断规格: 老程华怪味胡豆140g -> 140*None, 包装数量=140 +2025-12-12 12:32:20,630 - app.core.excel.processor - INFO - 从商品名称推断规格: 老程华重庆怪味胡豆190g -> 190*None, 包装数量=190 +2025-12-12 12:32:20,630 - app.core.excel.processor - INFO - 从商品名称推断规格: 甘源瓜子仁蟹黄味75g@ -> 75*None, 包装数量=75 +2025-12-12 12:32:20,635 - app.core.excel.processor - INFO - 从商品名称推断规格: 甘源青豌豆蒜香味75g@ -> 75*None, 包装数量=75 +2025-12-12 12:32:20,635 - app.core.excel.processor - INFO - 从商品名称推断规格: 素味居泡山椒笋尖100g -> 100*None, 包装数量=100 +2025-12-12 12:32:20,639 - app.core.excel.processor - INFO - 从商品名称推断规格: 卧龙酥脆小麻花烧烤味138g -> 138*None, 包装数量=138 +2025-12-12 12:32:20,639 - app.core.excel.processor - INFO - 从商品名称推断规格: 川洋黑米锅巴香葱味82g@ -> 82*None, 包装数量=82 +2025-12-12 12:32:20,643 - app.core.excel.processor - INFO - 从商品名称推断规格: 寻唐记锅巴牛肉味70g -> 70*None, 包装数量=70 +2025-12-12 12:32:20,643 - app.core.excel.processor - INFO - 从商品名称推断规格: 吴氏远久肥肠酥192g -> 192*None, 包装数量=192 +2025-12-12 12:32:20,647 - app.core.excel.processor - INFO - 从商品名称推断规格: 吴氏远久猫耳朵192g -> 192*None, 包装数量=192 +2025-12-12 12:32:20,647 - app.core.excel.processor - INFO - 从商品名称推断规格: 吴氏远久麻辣鱼卷192g -> 192*None, 包装数量=192 +2025-12-12 12:32:20,651 - app.core.excel.processor - INFO - 从商品名称推断规格: 盼盼薯片100g@ -> 100*None, 包装数量=100 +2025-12-12 12:32:20,651 - app.core.excel.processor - INFO - 从商品名称推断规格: 盼盼金虾条分享装烤肉味75g@ -> 75*None, 包装数量=75 +2025-12-12 12:32:20,655 - app.core.excel.processor - INFO - 从商品名称推断规格: 30g东莱泡椒鸡蛋 -> 30*None, 包装数量=30 +2025-12-12 12:32:20,655 - app.core.excel.processor - INFO - 从商品名称推断规格: 30g东莱卤鸡蛋 -> 30*None, 包装数量=30 +2025-12-12 12:32:20,659 - app.core.excel.processor - INFO - 从商品名称推断规格: 达利园可比克听装薯片番茄味45g@ -> 45*None, 包装数量=45 +2025-12-12 12:32:20,661 - app.core.excel.processor - INFO - 从商品名称推断规格: 乐事无限嗞嗞烤肉味90g@ -> 90*None, 包装数量=90 +2025-12-12 12:32:20,663 - app.core.excel.processor - INFO - 从商品名称推断规格: 贤哥每日杂粮36g@ -> 36*None, 包装数量=36 +2025-12-12 12:32:20,665 - app.core.excel.processor - INFO - 从商品名称推断规格: 狗牙儿披萨卷香辣味188g@ -> 188*None, 包装数量=188 +2025-12-12 12:32:20,665 - app.core.excel.processor - INFO - 从商品名称推断规格: 滇二娃土豆片麻辣味40g -> 40*None, 包装数量=40 +2025-12-12 12:32:20,668 - app.core.excel.processor - INFO - 从商品名称推断规格: 脆升升薯片蜂蜜黄油味60g@ -> 60*None, 包装数量=60 +2025-12-12 12:32:20,668 - app.core.excel.processor - INFO - 从商品名称推断规格: 娃哈哈纯净水1.5L@ -> 1.5L*1, 包装数量=1 +2025-12-12 12:32:20,672 - app.core.excel.processor - INFO - 提取到 33 个商品信息 +2025-12-12 12:32:20,676 - app.core.excel.processor - INFO - 开始处理33 个产品信息 +2025-12-12 12:32:20,676 - app.core.excel.processor - INFO - 处理商品: 条码=6924187821644, 数量=5.0, 单价=8.6, 是否赠品=False +2025-12-12 12:32:20,676 - app.core.excel.processor - INFO - 发现正常商品:条码6924187821644, 数量=5.0, 单价=8.6 +2025-12-12 12:32:20,676 - app.core.excel.processor - INFO - 处理商品: 条码=6924187832657, 数量=5.0, 单价=6.35, 是否赠品=False +2025-12-12 12:32:20,676 - app.core.excel.processor - INFO - 发现正常商品:条码6924187832657, 数量=5.0, 单价=6.35 +2025-12-12 12:32:20,676 - app.core.excel.processor - INFO - 处理商品: 条码=6924187820067, 数量=3.0, 单价=5.35, 是否赠品=False +2025-12-12 12:32:20,676 - app.core.excel.processor - INFO - 发现正常商品:条码6924187820067, 数量=3.0, 单价=5.35 +2025-12-12 12:32:20,676 - app.core.excel.processor - INFO - 处理商品: 条码=6924187834781, 数量=6.0, 单价=3.56, 是否赠品=False +2025-12-12 12:32:20,676 - app.core.excel.processor - INFO - 发现正常商品:条码6924187834781, 数量=6.0, 单价=3.56 +2025-12-12 12:32:20,676 - app.core.excel.processor - INFO - 处理商品: 条码=6924187828759, 数量=5.0, 单价=5.35, 是否赠品=False +2025-12-12 12:32:20,680 - app.core.excel.processor - INFO - 发现正常商品:条码6924187828759, 数量=5.0, 单价=5.35 +2025-12-12 12:32:20,681 - app.core.excel.processor - INFO - 处理商品: 条码=6927849455553, 数量=5.0, 单价=4.11, 是否赠品=False +2025-12-12 12:32:20,681 - app.core.excel.processor - INFO - 发现正常商品:条码6927849455553, 数量=5.0, 单价=4.11 +2025-12-12 12:32:20,681 - app.core.excel.processor - INFO - 处理商品: 条码=6927849433339, 数量=3.0, 单价=4.68, 是否赠品=False +2025-12-12 12:32:20,681 - app.core.excel.processor - INFO - 发现正常商品:条码6927849433339, 数量=3.0, 单价=4.68 +2025-12-12 12:32:20,681 - app.core.excel.processor - INFO - 处理商品: 条码=6924187851184, 数量=3.0, 单价=5.08, 是否赠品=False +2025-12-12 12:32:20,681 - app.core.excel.processor - INFO - 发现正常商品:条码6924187851184, 数量=3.0, 单价=5.08 +2025-12-12 12:32:20,683 - app.core.excel.processor - INFO - 处理商品: 条码=6924187872035, 数量=6.0, 单价=4.59, 是否赠品=False +2025-12-12 12:32:20,683 - app.core.excel.processor - INFO - 发现正常商品:条码6924187872035, 数量=6.0, 单价=4.59 +2025-12-12 12:32:20,683 - app.core.excel.processor - INFO - 处理商品: 条码=6942910308187, 数量=5.0, 单价=3.82, 是否赠品=False +2025-12-12 12:32:20,683 - app.core.excel.processor - INFO - 发现正常商品:条码6942910308187, 数量=5.0, 单价=3.82 +2025-12-12 12:32:20,683 - app.core.excel.processor - INFO - 处理商品: 条码=6942910300693, 数量=3.0, 单价=3.34, 是否赠品=False +2025-12-12 12:32:20,683 - app.core.excel.processor - INFO - 发现正常商品:条码6942910300693, 数量=3.0, 单价=3.34 +2025-12-12 12:32:20,685 - app.core.excel.processor - INFO - 处理商品: 条码=6938270511244, 数量=5.0, 单价=3.06, 是否赠品=False +2025-12-12 12:32:20,685 - app.core.excel.processor - INFO - 发现正常商品:条码6938270511244, 数量=5.0, 单价=3.06 +2025-12-12 12:32:20,685 - app.core.excel.processor - INFO - 处理商品: 条码=6938270511886, 数量=5.0, 单价=3.92, 是否赠品=False +2025-12-12 12:32:20,685 - app.core.excel.processor - INFO - 发现正常商品:条码6938270511886, 数量=5.0, 单价=3.92 +2025-12-12 12:32:20,685 - app.core.excel.processor - INFO - 处理商品: 条码=6940188803618, 数量=3.0, 单价=3.06, 是否赠品=False +2025-12-12 12:32:20,685 - app.core.excel.processor - INFO - 发现正常商品:条码6940188803618, 数量=3.0, 单价=3.06 +2025-12-12 12:32:20,685 - app.core.excel.processor - INFO - 处理商品: 条码=6940188804066, 数量=5.0, 单价=3.06, 是否赠品=False +2025-12-12 12:32:20,685 - app.core.excel.processor - INFO - 发现正常商品:条码6940188804066, 数量=5.0, 单价=3.06 +2025-12-12 12:32:20,685 - app.core.excel.processor - INFO - 处理商品: 条码=6940509101737, 数量=5.0, 单价=2.73, 是否赠品=False +2025-12-12 12:32:20,685 - app.core.excel.processor - INFO - 发现正常商品:条码6940509101737, 数量=5.0, 单价=2.73 +2025-12-12 12:32:20,685 - app.core.excel.processor - INFO - 处理商品: 条码=6931286064292, 数量=5.0, 单价=4.01, 是否赠品=False +2025-12-12 12:32:20,685 - app.core.excel.processor - INFO - 发现正常商品:条码6931286064292, 数量=5.0, 单价=4.01 +2025-12-12 12:32:20,685 - app.core.excel.processor - INFO - 处理商品: 条码=6933280900828, 数量=3.0, 单价=2.45, 是否赠品=False +2025-12-12 12:32:20,689 - app.core.excel.processor - INFO - 发现正常商品:条码6933280900828, 数量=3.0, 单价=2.45 +2025-12-12 12:32:20,689 - app.core.excel.processor - INFO - 处理商品: 条码=6932459700894, 数量=5.0, 单价=1.91, 是否赠品=False +2025-12-12 12:32:20,689 - app.core.excel.processor - INFO - 发现正常商品:条码6932459700894, 数量=5.0, 单价=1.91 +2025-12-12 12:32:20,689 - app.core.excel.processor - INFO - 处理商品: 条码=6933319064019, 数量=5.0, 单价=2.77, 是否赠品=False +2025-12-12 12:32:20,689 - app.core.excel.processor - INFO - 发现正常商品:条码6933319064019, 数量=5.0, 单价=2.77 +2025-12-12 12:32:20,690 - app.core.excel.processor - INFO - 处理商品: 条码=6933319064002, 数量=5.0, 单价=2.77, 是否赠品=False +2025-12-12 12:32:20,690 - app.core.excel.processor - INFO - 发现正常商品:条码6933319064002, 数量=5.0, 单价=2.77 +2025-12-12 12:32:20,690 - app.core.excel.processor - INFO - 处理商品: 条码=6933319064101, 数量=5.0, 单价=2.77, 是否赠品=False +2025-12-12 12:32:20,691 - app.core.excel.processor - INFO - 发现正常商品:条码6933319064101, 数量=5.0, 单价=2.77 +2025-12-12 12:32:20,691 - app.core.excel.processor - INFO - 处理商品: 条码=6920912340602, 数量=5.0, 单价=2.63, 是否赠品=False +2025-12-12 12:32:20,691 - app.core.excel.processor - INFO - 发现正常商品:条码6920912340602, 数量=5.0, 单价=2.63 +2025-12-12 12:32:20,691 - app.core.excel.processor - INFO - 处理商品: 条码=6928402011667, 数量=5.0, 单价=2.39, 是否赠品=False +2025-12-12 12:32:20,691 - app.core.excel.processor - INFO - 发现正常商品:条码6928402011667, 数量=5.0, 单价=2.39 +2025-12-12 12:32:20,691 - app.core.excel.processor - INFO - 处理商品: 条码=6923512599517, 数量=10.0, 单价=1.08, 是否赠品=False +2025-12-12 12:32:20,691 - app.core.excel.processor - INFO - 发现正常商品:条码6923512599517, 数量=10.0, 单价=1.08 +2025-12-12 12:32:20,691 - app.core.excel.processor - INFO - 处理商品: 条码=6923512599043, 数量=10.0, 单价=1.08, 是否赠品=False +2025-12-12 12:32:20,691 - app.core.excel.processor - INFO - 发现正常商品:条码6923512599043, 数量=10.0, 单价=1.08 +2025-12-12 12:32:20,691 - app.core.excel.processor - INFO - 处理商品: 条码=6911988006523, 数量=3.0, 单价=2.72, 是否赠品=False +2025-12-12 12:32:20,691 - app.core.excel.processor - INFO - 发现正常商品:条码6911988006523, 数量=3.0, 单价=2.72 +2025-12-12 12:32:20,691 - app.core.excel.processor - INFO - 处理商品: 条码=6924743927902, 数量=3.0, 单价=6.21, 是否赠品=False +2025-12-12 12:32:20,691 - app.core.excel.processor - INFO - 发现正常商品:条码6924743927902, 数量=3.0, 单价=6.21 +2025-12-12 12:32:20,691 - app.core.excel.processor - INFO - 处理商品: 条码=6959836918147, 数量=30.0, 单价=0.66, 是否赠品=False +2025-12-12 12:32:20,691 - app.core.excel.processor - INFO - 发现正常商品:条码6959836918147, 数量=30.0, 单价=0.66 +2025-12-12 12:32:20,691 - app.core.excel.processor - INFO - 处理商品: 条码=6938803994766, 数量=5.0, 单价=4.2, 是否赠品=False +2025-12-12 12:32:20,695 - app.core.excel.processor - INFO - 发现正常商品:条码6938803994766, 数量=5.0, 单价=4.2 +2025-12-12 12:32:20,696 - app.core.excel.processor - INFO - 处理商品: 条码=6975795361022, 数量=6.0, 单价=1.72, 是否赠品=False +2025-12-12 12:32:20,696 - app.core.excel.processor - INFO - 发现正常商品:条码6975795361022, 数量=6.0, 单价=1.72 +2025-12-12 12:32:20,696 - app.core.excel.processor - INFO - 处理商品: 条码=6937439913981, 数量=5.0, 单价=4.59, 是否赠品=False +2025-12-12 12:32:20,696 - app.core.excel.processor - INFO - 发现正常商品:条码6937439913981, 数量=5.0, 单价=4.59 +2025-12-12 12:32:20,696 - app.core.excel.processor - INFO - 处理商品: 条码=6902083881412, 数量=48.0, 单价=2.1, 是否赠品=False +2025-12-12 12:32:20,696 - app.core.excel.processor - INFO - 发现正常商品:条码6902083881412, 数量=48.0, 单价=2.1 +2025-12-12 12:32:20,696 - app.core.excel.processor - INFO - 分组后共33 个不同条码的商品 +2025-12-12 12:32:20,696 - app.core.excel.processor - INFO - 条码 6924187821644 处理结果:正常商品数量5.0,单价8.6,赠品数量0 +2025-12-12 12:32:20,696 - app.core.excel.processor - INFO - 条码 6924187832657 处理结果:正常商品数量5.0,单价6.35,赠品数量0 +2025-12-12 12:32:20,696 - app.core.excel.processor - INFO - 条码 6924187820067 处理结果:正常商品数量3.0,单价5.35,赠品数量0 +2025-12-12 12:32:20,696 - app.core.excel.processor - INFO - 条码 6924187834781 处理结果:正常商品数量6.0,单价3.56,赠品数量0 +2025-12-12 12:32:20,696 - app.core.excel.processor - INFO - 条码 6924187828759 处理结果:正常商品数量5.0,单价5.35,赠品数量0 +2025-12-12 12:32:20,696 - app.core.excel.processor - INFO - 条码 6927849455553 处理结果:正常商品数量5.0,单价4.11,赠品数量0 +2025-12-12 12:32:20,696 - app.core.excel.processor - INFO - 条码 6927849433339 处理结果:正常商品数量3.0,单价4.68,赠品数量0 +2025-12-12 12:32:20,699 - app.core.excel.processor - INFO - 条码 6924187851184 处理结果:正常商品数量3.0,单价5.08,赠品数量0 +2025-12-12 12:32:20,699 - app.core.excel.processor - INFO - 条码 6924187872035 处理结果:正常商品数量6.0,单价4.59,赠品数量0 +2025-12-12 12:32:20,699 - app.core.excel.processor - INFO - 条码 6942910308187 处理结果:正常商品数量5.0,单价3.82,赠品数量0 +2025-12-12 12:32:20,699 - app.core.excel.processor - INFO - 条码 6942910300693 处理结果:正常商品数量3.0,单价3.34,赠品数量0 +2025-12-12 12:32:20,699 - app.core.excel.processor - INFO - 条码 6938270511244 处理结果:正常商品数量5.0,单价3.06,赠品数量0 +2025-12-12 12:32:20,699 - app.core.excel.processor - INFO - 条码 6938270511886 处理结果:正常商品数量5.0,单价3.92,赠品数量0 +2025-12-12 12:32:20,699 - app.core.excel.processor - INFO - 条码 6940188803618 处理结果:正常商品数量3.0,单价3.06,赠品数量0 +2025-12-12 12:32:20,699 - app.core.excel.processor - INFO - 条码 6940188804066 处理结果:正常商品数量5.0,单价3.06,赠品数量0 +2025-12-12 12:32:20,699 - app.core.excel.processor - INFO - 条码 6940509101737 处理结果:正常商品数量5.0,单价2.73,赠品数量0 +2025-12-12 12:32:20,699 - app.core.excel.processor - INFO - 条码 6931286064292 处理结果:正常商品数量5.0,单价4.01,赠品数量0 +2025-12-12 12:32:20,699 - app.core.excel.processor - INFO - 条码 6933280900828 处理结果:正常商品数量3.0,单价2.45,赠品数量0 +2025-12-12 12:32:20,699 - app.core.excel.processor - INFO - 条码 6932459700894 处理结果:正常商品数量5.0,单价1.91,赠品数量0 +2025-12-12 12:32:20,699 - app.core.excel.processor - INFO - 条码 6933319064019 处理结果:正常商品数量5.0,单价2.77,赠品数量0 +2025-12-12 12:32:20,699 - app.core.excel.processor - INFO - 条码 6933319064002 处理结果:正常商品数量5.0,单价2.77,赠品数量0 +2025-12-12 12:32:20,699 - app.core.excel.processor - INFO - 条码 6933319064101 处理结果:正常商品数量5.0,单价2.77,赠品数量0 +2025-12-12 12:32:20,703 - app.core.excel.processor - INFO - 条码 6920912340602 处理结果:正常商品数量5.0,单价2.63,赠品数量0 +2025-12-12 12:32:20,703 - app.core.excel.processor - INFO - 条码 6928402011667 处理结果:正常商品数量5.0,单价2.39,赠品数量0 +2025-12-12 12:32:20,703 - app.core.excel.processor - INFO - 条码 6923512599517 处理结果:正常商品数量10.0,单价1.08,赠品数量0 +2025-12-12 12:32:20,703 - app.core.excel.processor - INFO - 条码 6923512599043 处理结果:正常商品数量10.0,单价1.08,赠品数量0 +2025-12-12 12:32:20,703 - app.core.excel.processor - INFO - 条码 6911988006523 处理结果:正常商品数量3.0,单价2.72,赠品数量0 +2025-12-12 12:32:20,703 - app.core.excel.processor - INFO - 条码 6924743927902 处理结果:正常商品数量3.0,单价6.21,赠品数量0 +2025-12-12 12:32:20,703 - app.core.excel.processor - INFO - 条码 6959836918147 处理结果:正常商品数量30.0,单价0.66,赠品数量0 +2025-12-12 12:32:20,703 - app.core.excel.processor - INFO - 条码 6938803994766 处理结果:正常商品数量5.0,单价4.2,赠品数量0 +2025-12-12 12:32:20,703 - app.core.excel.processor - INFO - 条码 6975795361022 处理结果:正常商品数量6.0,单价1.72,赠品数量0 +2025-12-12 12:32:20,703 - app.core.excel.processor - INFO - 条码 6937439913981 处理结果:正常商品数量5.0,单价4.59,赠品数量0 +2025-12-12 12:32:20,703 - app.core.excel.processor - INFO - 条码 6902083881412 处理结果:正常商品数量48.0,单价2.1,赠品数量0 +2025-12-12 12:32:20,707 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_蓉城易购-订单1765513867817.xls +2025-12-12 12:32:20,707 - app.core.excel.processor - INFO - 采购单已保存到: data/result\采购单_蓉城易购-订单1765513867817.xls diff --git a/logs/app.core.excel.validators.log b/logs/app.core.excel.validators.log index be4d49d..a63271c 100644 --- a/logs/app.core.excel.validators.log +++ b/logs/app.core.excel.validators.log @@ -4881,3 +4881,497 @@ 2025-11-15 18:01:52,653 - app.core.excel.validators - WARNING - 数量验证失败: 数量必须大于0,当前值: 0.0 2025-11-15 18:01:52,732 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 2025-11-15 18:01:52,748 - app.core.excel.validators - WARNING - 数量验证失败: 数量必须大于0,当前值: 0.0 +2025-11-16 14:25:56,005 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 14:25:56,091 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 14:25:56,161 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 14:25:56,222 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 14:25:56,287 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 14:25:56,350 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 14:25:56,426 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 14:25:56,490 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 14:59:35,461 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 14:59:35,464 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 14:59:35,467 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 14:59:35,469 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 14:59:35,472 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 14:59:35,475 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 14:59:35,478 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 14:59:35,481 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:03:21,917 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:03:21,920 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:03:21,923 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:03:21,925 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:03:21,928 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:03:21,930 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:03:21,932 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:03:21,935 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:08:33,568 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:08:33,572 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:08:33,575 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:08:33,577 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:08:33,579 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:08:33,582 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:08:33,584 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:08:33,586 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:11:11,648 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:11:11,726 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:11:11,790 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:13:49,833 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:13:49,913 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:13:50,010 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:13:50,083 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:13:50,192 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:13:50,303 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:15:38,242 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:15:38,321 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:15:38,401 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:15:38,466 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-16 15:15:38,542 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:36:13,651 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:36:13,707 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:36:13,749 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:36:13,793 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:36:13,849 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:36:42,467 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:36:42,536 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:36:42,612 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:36:42,687 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:36:42,773 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:42:26,275 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:42:26,316 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:42:26,374 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:42:26,426 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:42:26,481 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:44:11,681 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:44:11,745 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:44:11,818 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:44:11,888 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:44:11,969 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:47:04,472 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:47:04,540 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:47:04,611 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:47:04,697 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:47:04,784 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:56:30,851 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:56:31,004 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:56:31,061 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:56:31,123 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-11-20 18:56:31,185 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-01 22:21:10,895 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-01 22:21:10,914 - app.core.excel.validators - WARNING - 数量验证失败: 数量必须大于0,当前值: 0.0 +2025-12-01 22:21:11,006 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-01 22:21:11,025 - app.core.excel.validators - WARNING - 数量验证失败: 数量必须大于0,当前值: 0.0 +2025-12-01 22:21:11,117 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-01 22:21:11,126 - app.core.excel.validators - WARNING - 数量验证失败: 数量必须大于0,当前值: 0.0 +2025-12-01 22:21:11,221 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-01 22:21:11,229 - app.core.excel.validators - WARNING - 数量验证失败: 数量必须大于0,当前值: 0.0 +2025-12-01 22:21:11,323 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-01 22:21:11,343 - app.core.excel.validators - WARNING - 数量验证失败: 数量必须大于0,当前值: 0.0 +2025-12-01 22:21:11,464 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-01 22:21:11,486 - app.core.excel.validators - WARNING - 数量验证失败: 数量必须大于0,当前值: 0.0 +2025-12-01 22:21:11,560 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-01 22:21:11,579 - app.core.excel.validators - WARNING - 数量验证失败: 数量必须大于0,当前值: 0.0 +2025-12-01 22:21:11,649 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-01 22:21:11,668 - app.core.excel.validators - WARNING - 数量验证失败: 数量必须大于0,当前值: 0.0 +2025-12-12 11:00:14,287 - app.core.excel.validators - INFO - 修正条码长度: 从26位截断到24位 +2025-12-12 11:00:14,338 - app.core.excel.validators - WARNING - 条码长度异常: 697753026007269253001004, 长度=24 +2025-12-12 11:00:14,342 - app.core.excel.validators - WARNING - 条码验证失败: 条码长度异常: 697753026007269253001004, 长度=24 +2025-12-12 11:13:15,322 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,325 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,326 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,330 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,331 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,333 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,333 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,337 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,339 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,341 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,344 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,346 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,348 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,351 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,353 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,355 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,357 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,359 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,361 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,363 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,363 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,367 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,370 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,372 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,374 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,374 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,374 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,379 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,381 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,384 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,386 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,388 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,390 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,392 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,393 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,393 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,398 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,400 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,402 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,404 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,404 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,404 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,404 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,408 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,412 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,413 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,417 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,419 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,421 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,423 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:13:15,423 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,023 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,026 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,029 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,031 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,033 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,034 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,035 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,038 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,040 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,042 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,045 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,047 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,049 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,050 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,052 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,052 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,056 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,058 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,061 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,061 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,065 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,066 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,068 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,070 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,072 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,073 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,075 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,075 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,079 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,080 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,082 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,083 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,086 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,087 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,089 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,091 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,091 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,096 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,098 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,099 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,100 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,100 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,100 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,104 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,108 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,109 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,111 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,111 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,111 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,117 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:22:26,118 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,725 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,726 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,726 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,730 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,733 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,733 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,735 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,736 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,739 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,742 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,743 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,745 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,746 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,748 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,748 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,753 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,756 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,757 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,759 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,761 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,765 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,767 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,768 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,770 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,772 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,773 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,773 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,778 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,780 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,781 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,781 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,785 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,787 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,789 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,792 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,793 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,795 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,797 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,799 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,801 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,802 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,803 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,804 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,805 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,807 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,812 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,813 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,815 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,818 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,820 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:32:26,821 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,273 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,275 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,278 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,280 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,282 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,283 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,285 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,287 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,289 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,291 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,294 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,294 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,298 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,300 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,302 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,304 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,304 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,308 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,310 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,312 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,314 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,315 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,317 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,320 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,321 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,324 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,325 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,325 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,329 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,331 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,334 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,334 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,338 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,340 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,343 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,345 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,347 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,349 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,351 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,353 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,355 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,356 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,356 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,357 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,362 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,365 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,367 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,369 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,370 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,371 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:34:40,374 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,290 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,294 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,299 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,301 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,303 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,304 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,307 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,307 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,311 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,313 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,315 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,317 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,321 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,324 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,326 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,328 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,331 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,332 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,335 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,338 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,340 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,343 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,345 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,348 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,350 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,352 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,354 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,355 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,358 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,359 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,361 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,362 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,366 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,367 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,369 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,371 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,372 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,372 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,376 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,379 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,382 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,383 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,383 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,385 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,389 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,391 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,394 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,395 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,397 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,399 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:38:53,399 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,238 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,240 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,243 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,245 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,245 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,248 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,251 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,253 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,255 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,257 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,259 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,260 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,260 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,264 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,266 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,268 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,270 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,272 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,274 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,275 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,275 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,280 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,282 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,284 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,285 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,285 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,289 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,293 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,295 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,296 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,298 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,301 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,303 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,305 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,305 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,309 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,310 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,312 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,314 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,316 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,349 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,349 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,353 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,353 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,358 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,360 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,362 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,364 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,366 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,368 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 11:49:38,368 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,726 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,730 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,730 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,734 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,734 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,738 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,738 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,742 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,742 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,742 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,746 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,746 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,750 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,753 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,755 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,756 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,758 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,759 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,759 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,763 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,763 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,767 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,767 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,771 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,771 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,771 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,775 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,775 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,779 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,779 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,779 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,784 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,786 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,788 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,788 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,791 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,791 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,795 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,795 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,799 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,799 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,799 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,803 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,803 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,807 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,807 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,811 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,811 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,816 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,818 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,819 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,821 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,821 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,825 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,825 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,825 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,829 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,829 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,833 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:30:07,833 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,606 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,606 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,610 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,610 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,614 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,614 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,619 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,619 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,622 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,622 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,626 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,629 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,630 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,630 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,635 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,635 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,639 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,639 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,643 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,643 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,647 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,647 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,651 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,651 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,655 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,655 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,660 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,662 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,663 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,665 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,668 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,668 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 +2025-12-12 12:32:20,668 - app.core.excel.validators - INFO - 修正条码长度: 从14位截断到13位 diff --git a/logs/app.core.ocr.baidu_ocr.log b/logs/app.core.ocr.baidu_ocr.log index 7023616..5acb4a9 100644 --- a/logs/app.core.ocr.baidu_ocr.log +++ b/logs/app.core.ocr.baidu_ocr.log @@ -14,3 +14,8 @@ 2025-11-15 16:39:06,073 - app.core.ocr.baidu_ocr - INFO - 成功获取访问令牌 2025-11-15 17:28:47,324 - app.core.ocr.baidu_ocr - INFO - 成功获取访问令牌 2025-11-15 18:00:04,623 - app.core.ocr.baidu_ocr - INFO - 成功获取访问令牌 +2025-11-16 12:50:38,921 - app.core.ocr.baidu_ocr - INFO - 成功获取访问令牌 +2025-11-16 15:11:07,710 - app.core.ocr.baidu_ocr - INFO - 成功获取访问令牌 +2025-11-16 15:13:47,756 - app.core.ocr.baidu_ocr - INFO - 成功获取访问令牌 +2025-11-16 15:15:36,568 - app.core.ocr.baidu_ocr - INFO - 成功获取访问令牌 +2025-12-01 22:21:09,536 - app.core.ocr.baidu_ocr - INFO - 成功获取访问令牌 diff --git a/logs/app.core.ocr.table_ocr.log b/logs/app.core.ocr.table_ocr.log index f7be42f..66cfac7 100644 --- a/logs/app.core.ocr.table_ocr.log +++ b/logs/app.core.ocr.table_ocr.log @@ -268,3 +268,133 @@ 2025-11-15 18:00:04,278 - app.core.ocr.table_ocr - INFO - 开始处理图片: data/input\微信图片_20251114131924_600_278.jpg 2025-11-15 18:00:05,870 - app.core.ocr.table_ocr - INFO - 图片处理成功: data/input\微信图片_20251114131924_600_278.jpg, 输出文件: data/output\微信图片_20251114131924_600_278.xlsx 2025-11-15 18:00:05,872 - app.core.ocr.table_ocr - INFO - 所有图片处理完成, 总计: 1, 成功: 1 +2025-11-16 11:23:59,369 - app.core.ocr.table_ocr - INFO - 使用输入目录: E:\2025Code\python\orc-order-v2\data\input +2025-11-16 11:23:59,369 - app.core.ocr.table_ocr - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 11:23:59,369 - app.core.ocr.table_ocr - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 11:23:59,369 - app.core.ocr.table_ocr - INFO - 允许的文件类型: ['.jpg', '.jpeg', '.png', '.bmp'] +2025-11-16 11:23:59,369 - app.core.ocr.table_ocr - INFO - 初始化OCRProcessor完成:输入目录=data/input, 输出目录=data/output +2025-11-16 11:26:06,790 - app.core.ocr.table_ocr - INFO - 使用输入目录: E:\2025Code\python\orc-order-v2\data\input +2025-11-16 11:26:06,791 - app.core.ocr.table_ocr - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 11:26:06,791 - app.core.ocr.table_ocr - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 11:26:06,791 - app.core.ocr.table_ocr - INFO - 允许的文件类型: ['.jpg', '.jpeg', '.png', '.bmp'] +2025-11-16 11:26:06,792 - app.core.ocr.table_ocr - INFO - 初始化OCRProcessor完成:输入目录=data/input, 输出目录=data/output +2025-11-16 12:50:38,502 - app.core.ocr.table_ocr - INFO - 使用输入目录: E:\2025Code\python\orc-order-v2\data\input +2025-11-16 12:50:38,503 - app.core.ocr.table_ocr - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 12:50:38,504 - app.core.ocr.table_ocr - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 12:50:38,506 - app.core.ocr.table_ocr - INFO - 允许的文件类型: ['.jpg', '.jpeg', '.png', '.bmp'] +2025-11-16 12:50:38,508 - app.core.ocr.table_ocr - INFO - 初始化OCRProcessor完成:输入目录=data/input, 输出目录=data/output +2025-11-16 12:50:38,541 - app.core.ocr.table_ocr - INFO - 找到 1 个图片文件,其中 1 个未处理 +2025-11-16 12:50:38,550 - app.core.ocr.table_ocr - INFO - 处理批次 1/1: 1 个文件 +2025-11-16 12:50:38,560 - app.core.ocr.table_ocr - INFO - 开始处理图片: data/input\微信图片_20251115212128_148_108.jpg +2025-11-16 12:50:40,143 - app.core.ocr.table_ocr - INFO - 图片处理成功: data/input\微信图片_20251115212128_148_108.jpg, 输出文件: data/output\微信图片_20251115212128_148_108.xlsx +2025-11-16 12:50:40,149 - app.core.ocr.table_ocr - INFO - 所有图片处理完成, 总计: 1, 成功: 1 +2025-11-16 12:51:06,904 - app.core.ocr.table_ocr - INFO - 使用输入目录: E:\2025Code\python\orc-order-v2\data\input +2025-11-16 12:51:06,906 - app.core.ocr.table_ocr - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 12:51:06,906 - app.core.ocr.table_ocr - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 12:51:06,906 - app.core.ocr.table_ocr - INFO - 允许的文件类型: ['.jpg', '.jpeg', '.png', '.bmp'] +2025-11-16 12:51:06,907 - app.core.ocr.table_ocr - INFO - 初始化OCRProcessor完成:输入目录=data/input, 输出目录=data/output +2025-11-16 13:03:10,557 - app.core.ocr.table_ocr - INFO - 使用输入目录: E:\2025Code\python\orc-order-v2\data\input +2025-11-16 13:03:10,557 - app.core.ocr.table_ocr - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 13:03:10,557 - app.core.ocr.table_ocr - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 13:03:10,558 - app.core.ocr.table_ocr - INFO - 允许的文件类型: ['.jpg', '.jpeg', '.png', '.bmp'] +2025-11-16 13:03:10,558 - app.core.ocr.table_ocr - INFO - 初始化OCRProcessor完成:输入目录=data/input, 输出目录=data/output +2025-11-16 13:03:10,578 - app.core.ocr.table_ocr - INFO - 使用输入目录: E:\2025Code\python\orc-order-v2\data\input +2025-11-16 13:03:10,578 - app.core.ocr.table_ocr - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 13:03:10,579 - app.core.ocr.table_ocr - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 13:03:10,579 - app.core.ocr.table_ocr - INFO - 允许的文件类型: ['.jpg', '.jpeg', '.png', '.bmp'] +2025-11-16 13:03:10,580 - app.core.ocr.table_ocr - INFO - 初始化OCRProcessor完成:输入目录=data/input, 输出目录=data/output +2025-11-16 13:18:18,243 - app.core.ocr.table_ocr - INFO - 使用输入目录: E:\2025Code\python\orc-order-v2\data\input +2025-11-16 13:18:18,243 - app.core.ocr.table_ocr - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 13:18:18,244 - app.core.ocr.table_ocr - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 13:18:18,244 - app.core.ocr.table_ocr - INFO - 允许的文件类型: ['.jpg', '.jpeg', '.png', '.bmp'] +2025-11-16 13:18:18,244 - app.core.ocr.table_ocr - INFO - 初始化OCRProcessor完成:输入目录=data/input, 输出目录=data/output +2025-11-16 13:18:18,265 - app.core.ocr.table_ocr - INFO - 使用输入目录: E:\2025Code\python\orc-order-v2\data\input +2025-11-16 13:18:18,265 - app.core.ocr.table_ocr - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 13:18:18,266 - app.core.ocr.table_ocr - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 13:18:18,266 - app.core.ocr.table_ocr - INFO - 允许的文件类型: ['.jpg', '.jpeg', '.png', '.bmp'] +2025-11-16 13:18:18,267 - app.core.ocr.table_ocr - INFO - 初始化OCRProcessor完成:输入目录=data/input, 输出目录=data/output +2025-11-16 13:51:09,012 - app.core.ocr.table_ocr - INFO - 使用输入目录: E:\2025Code\python\orc-order-v2\data\input +2025-11-16 13:51:09,013 - app.core.ocr.table_ocr - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 13:51:09,013 - app.core.ocr.table_ocr - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 13:51:09,013 - app.core.ocr.table_ocr - INFO - 允许的文件类型: ['.jpg', '.jpeg', '.png', '.bmp'] +2025-11-16 13:51:09,014 - app.core.ocr.table_ocr - INFO - 初始化OCRProcessor完成:输入目录=data/input, 输出目录=data/output +2025-11-16 14:39:42,975 - app.core.ocr.table_ocr - INFO - 使用输入目录: E:\2025Code\python\orc-order-v2\data\input +2025-11-16 14:39:42,976 - app.core.ocr.table_ocr - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 14:39:42,976 - app.core.ocr.table_ocr - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 14:39:42,976 - app.core.ocr.table_ocr - INFO - 允许的文件类型: ['.jpg', '.jpeg', '.png', '.bmp'] +2025-11-16 14:39:42,977 - app.core.ocr.table_ocr - INFO - 初始化OCRProcessor完成:输入目录=data/input, 输出目录=data/output +2025-11-16 14:39:42,990 - app.core.ocr.table_ocr - INFO - 使用输入目录: E:\2025Code\python\orc-order-v2\data\input +2025-11-16 14:39:42,991 - app.core.ocr.table_ocr - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 14:39:42,991 - app.core.ocr.table_ocr - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 14:39:42,991 - app.core.ocr.table_ocr - INFO - 允许的文件类型: ['.jpg', '.jpeg', '.png', '.bmp'] +2025-11-16 14:39:42,992 - app.core.ocr.table_ocr - INFO - 初始化OCRProcessor完成:输入目录=data/input, 输出目录=data/output +2025-11-16 15:11:05,478 - app.core.ocr.table_ocr - INFO - 使用输入目录: E:\2025Code\python\orc-order-v2\data\input +2025-11-16 15:11:05,485 - app.core.ocr.table_ocr - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 15:11:05,487 - app.core.ocr.table_ocr - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 15:11:05,489 - app.core.ocr.table_ocr - INFO - 允许的文件类型: ['.jpg', '.jpeg', '.png', '.bmp'] +2025-11-16 15:11:05,498 - app.core.ocr.table_ocr - INFO - 初始化OCRProcessor完成:输入目录=data/input, 输出目录=data/output +2025-11-16 15:11:05,536 - app.core.ocr.table_ocr - INFO - 找到 2 个图片文件,其中 1 个未处理 +2025-11-16 15:11:05,549 - app.core.ocr.table_ocr - INFO - 处理批次 1/1: 1 个文件 +2025-11-16 15:11:05,571 - app.core.ocr.table_ocr - INFO - 开始处理图片: data/input\微信图片_20251116151001_152_108.jpg +2025-11-16 15:11:08,994 - app.core.ocr.table_ocr - INFO - 图片处理成功: data/input\微信图片_20251116151001_152_108.jpg, 输出文件: data/output\微信图片_20251116151001_152_108.xlsx +2025-11-16 15:11:08,995 - app.core.ocr.table_ocr - INFO - 所有图片处理完成, 总计: 1, 成功: 1 +2025-11-16 15:13:47,370 - app.core.ocr.table_ocr - INFO - 使用输入目录: E:\2025Code\python\orc-order-v2\data\input +2025-11-16 15:13:47,372 - app.core.ocr.table_ocr - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 15:13:47,375 - app.core.ocr.table_ocr - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 15:13:47,381 - app.core.ocr.table_ocr - INFO - 允许的文件类型: ['.jpg', '.jpeg', '.png', '.bmp'] +2025-11-16 15:13:47,383 - app.core.ocr.table_ocr - INFO - 初始化OCRProcessor完成:输入目录=data/input, 输出目录=data/output +2025-11-16 15:13:47,457 - app.core.ocr.table_ocr - INFO - 找到 3 个图片文件,其中 1 个未处理 +2025-11-16 15:13:47,470 - app.core.ocr.table_ocr - INFO - 处理批次 1/1: 1 个文件 +2025-11-16 15:13:47,510 - app.core.ocr.table_ocr - INFO - 开始处理图片: data/input\微信图片_20251116151334_153_108.jpg +2025-11-16 15:13:49,392 - app.core.ocr.table_ocr - INFO - 图片处理成功: data/input\微信图片_20251116151334_153_108.jpg, 输出文件: data/output\微信图片_20251116151334_153_108.xlsx +2025-11-16 15:13:49,397 - app.core.ocr.table_ocr - INFO - 所有图片处理完成, 总计: 1, 成功: 1 +2025-11-16 15:15:36,173 - app.core.ocr.table_ocr - INFO - 使用输入目录: E:\2025Code\python\orc-order-v2\data\input +2025-11-16 15:15:36,173 - app.core.ocr.table_ocr - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-16 15:15:36,174 - app.core.ocr.table_ocr - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-16 15:15:36,175 - app.core.ocr.table_ocr - INFO - 允许的文件类型: ['.jpg', '.jpeg', '.png', '.bmp'] +2025-11-16 15:15:36,177 - app.core.ocr.table_ocr - INFO - 初始化OCRProcessor完成:输入目录=data/input, 输出目录=data/output +2025-11-16 15:15:36,243 - app.core.ocr.table_ocr - INFO - 找到 1 个图片文件,其中 1 个未处理 +2025-11-16 15:15:36,257 - app.core.ocr.table_ocr - INFO - 处理批次 1/1: 1 个文件 +2025-11-16 15:15:36,299 - app.core.ocr.table_ocr - INFO - 开始处理图片: data/input\微信图片_20251116151514_154_108.jpg +2025-11-16 15:15:37,808 - app.core.ocr.table_ocr - INFO - 图片处理成功: data/input\微信图片_20251116151514_154_108.jpg, 输出文件: data/output\微信图片_20251116151514_154_108.xlsx +2025-11-16 15:15:37,809 - app.core.ocr.table_ocr - INFO - 所有图片处理完成, 总计: 1, 成功: 1 +2025-11-20 18:44:11,080 - app.core.ocr.table_ocr - INFO - 使用输入目录: E:\2025Code\python\orc-order-v2\data\input +2025-11-20 18:44:11,083 - app.core.ocr.table_ocr - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-20 18:44:11,087 - app.core.ocr.table_ocr - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-20 18:44:11,089 - app.core.ocr.table_ocr - INFO - 允许的文件类型: ['.jpg', '.jpeg', '.png', '.bmp'] +2025-11-20 18:44:11,094 - app.core.ocr.table_ocr - INFO - 初始化OCRProcessor完成:输入目录=data/input, 输出目录=data/output +2025-11-20 18:44:11,194 - app.core.ocr.table_ocr - INFO - 找到 1 个图片文件,其中 1 个未处理 +2025-11-20 18:44:11,216 - app.core.ocr.table_ocr - INFO - 处理批次 1/1: 1 个文件 +2025-11-20 18:44:11,261 - app.core.ocr.table_ocr - INFO - 开始处理图片: data/input\微信图片_20251116151514_154_108.jpg +2025-11-20 18:44:11,261 - app.core.ocr.table_ocr - INFO - 已存在对应的Excel文件,跳过处理: 微信图片_20251116151514_154_108.jpg -> 微信图片_20251116151514_154_108.xlsx +2025-11-20 18:44:11,295 - app.core.ocr.table_ocr - INFO - 所有图片处理完成, 总计: 1, 成功: 1 +2025-11-20 18:47:03,864 - app.core.ocr.table_ocr - INFO - 使用输入目录: E:\2025Code\python\orc-order-v2\data\input +2025-11-20 18:47:03,867 - app.core.ocr.table_ocr - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-20 18:47:03,867 - app.core.ocr.table_ocr - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-20 18:47:03,869 - app.core.ocr.table_ocr - INFO - 允许的文件类型: ['.jpg', '.jpeg', '.png', '.bmp'] +2025-11-20 18:47:03,871 - app.core.ocr.table_ocr - INFO - 初始化OCRProcessor完成:输入目录=data/input, 输出目录=data/output +2025-11-20 18:47:03,990 - app.core.ocr.table_ocr - INFO - 找到 1 个图片文件,其中 1 个未处理 +2025-11-20 18:47:04,011 - app.core.ocr.table_ocr - INFO - 处理批次 1/1: 1 个文件 +2025-11-20 18:47:04,048 - app.core.ocr.table_ocr - INFO - 开始处理图片: data/input\微信图片_20251116151514_154_108.jpg +2025-11-20 18:47:04,058 - app.core.ocr.table_ocr - INFO - 已存在对应的Excel文件,跳过处理: 微信图片_20251116151514_154_108.jpg -> 微信图片_20251116151514_154_108.xlsx +2025-11-20 18:47:04,080 - app.core.ocr.table_ocr - INFO - 所有图片处理完成, 总计: 1, 成功: 1 +2025-11-20 18:56:30,283 - app.core.ocr.table_ocr - INFO - 使用输入目录: E:\2025Code\python\orc-order-v2\data\input +2025-11-20 18:56:30,284 - app.core.ocr.table_ocr - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-11-20 18:56:30,287 - app.core.ocr.table_ocr - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-11-20 18:56:30,289 - app.core.ocr.table_ocr - INFO - 允许的文件类型: ['.jpg', '.jpeg', '.png', '.bmp'] +2025-11-20 18:56:30,291 - app.core.ocr.table_ocr - INFO - 初始化OCRProcessor完成:输入目录=data/input, 输出目录=data/output +2025-11-20 18:56:30,417 - app.core.ocr.table_ocr - INFO - 找到 1 个图片文件,其中 1 个未处理 +2025-11-20 18:56:30,439 - app.core.ocr.table_ocr - INFO - 处理批次 1/1: 1 个文件 +2025-11-20 18:56:30,483 - app.core.ocr.table_ocr - INFO - 开始处理图片: data/input\微信图片_20251116151514_154_108.jpg +2025-11-20 18:56:30,483 - app.core.ocr.table_ocr - INFO - 已存在对应的Excel文件,跳过处理: 微信图片_20251116151514_154_108.jpg -> 微信图片_20251116151514_154_108.xlsx +2025-11-20 18:56:30,495 - app.core.ocr.table_ocr - INFO - 所有图片处理完成, 总计: 1, 成功: 1 +2025-12-01 22:21:09,028 - app.core.ocr.table_ocr - INFO - 使用输入目录: E:\2025Code\python\orc-order-v2\data\input +2025-12-01 22:21:09,043 - app.core.ocr.table_ocr - INFO - 使用输出目录: E:\2025Code\python\orc-order-v2\data\output +2025-12-01 22:21:09,046 - app.core.ocr.table_ocr - INFO - 使用临时目录: E:\2025Code\python\orc-order-v2\data\temp +2025-12-01 22:21:09,048 - app.core.ocr.table_ocr - INFO - 允许的文件类型: ['.jpg', '.jpeg', '.png', '.bmp'] +2025-12-01 22:21:09,052 - app.core.ocr.table_ocr - INFO - 初始化OCRProcessor完成:输入目录=data/input, 输出目录=data/output +2025-12-01 22:21:09,173 - app.core.ocr.table_ocr - INFO - 找到 1 个图片文件,其中 1 个未处理 +2025-12-01 22:21:09,198 - app.core.ocr.table_ocr - INFO - 处理批次 1/1: 1 个文件 +2025-12-01 22:21:09,246 - app.core.ocr.table_ocr - INFO - 开始处理图片: data/input\微信图片_20251201221738_176_108.jpg +2025-12-01 22:21:10,536 - app.core.ocr.table_ocr - INFO - 图片处理成功: data/input\微信图片_20251201221738_176_108.jpg, 输出文件: data/output\微信图片_20251201221738_176_108.xlsx +2025-12-01 22:21:10,538 - app.core.ocr.table_ocr - INFO - 所有图片处理完成, 总计: 1, 成功: 1 diff --git a/logs/app.core.utils.file_utils.log b/logs/app.core.utils.file_utils.log index 43e2835..0898a20 100644 --- a/logs/app.core.utils.file_utils.log +++ b/logs/app.core.utils.file_utils.log @@ -1 +1,4 @@ 2025-11-14 21:55:05,688 - app.core.utils.file_utils - WARNING - 未在目录 data/output 中找到符合条件的文件 +2025-11-16 10:48:45,595 - app.core.utils.file_utils - WARNING - 未在目录 data/output 中找到符合条件的文件 +2025-11-16 10:48:45,656 - app.core.utils.file_utils - WARNING - 未在目录 data/output 中找到符合条件的文件 +2025-11-16 10:56:22,516 - app.core.utils.file_utils - WARNING - 未在目录 data/output 中找到符合条件的文件 diff --git a/logs/app.services.ocr_service.log b/logs/app.services.ocr_service.log index d9e21d9..b903bfb 100644 --- a/logs/app.services.ocr_service.log +++ b/logs/app.services.ocr_service.log @@ -535,3 +535,55 @@ 2025-11-15 18:00:04,120 - app.services.ocr_service - INFO - OCRService初始化完成 2025-11-15 18:00:04,212 - app.services.ocr_service - INFO - OCRService.batch_process被调用,转发到process_images_batch 2025-11-15 18:00:04,213 - app.services.ocr_service - INFO - OCRService开始批量处理图片, batch_size=None, max_workers=None +2025-11-16 11:23:59,366 - app.services.ocr_service - INFO - 初始化OCRService +2025-11-16 11:23:59,369 - app.services.ocr_service - INFO - OCRService初始化完成 +2025-11-16 11:26:06,789 - app.services.ocr_service - INFO - 初始化OCRService +2025-11-16 11:26:06,792 - app.services.ocr_service - INFO - OCRService初始化完成 +2025-11-16 12:50:38,497 - app.services.ocr_service - INFO - 初始化OCRService +2025-11-16 12:50:38,510 - app.services.ocr_service - INFO - OCRService初始化完成 +2025-11-16 12:50:38,512 - app.services.ocr_service - INFO - OCRService.batch_process被调用,转发到process_images_batch +2025-11-16 12:50:38,524 - app.services.ocr_service - INFO - OCRService开始批量处理图片, batch_size=None, max_workers=None +2025-11-16 12:51:06,904 - app.services.ocr_service - INFO - 初始化OCRService +2025-11-16 12:51:06,907 - app.services.ocr_service - INFO - OCRService初始化完成 +2025-11-16 13:03:10,556 - app.services.ocr_service - INFO - 初始化OCRService +2025-11-16 13:03:10,559 - app.services.ocr_service - INFO - OCRService初始化完成 +2025-11-16 13:03:10,577 - app.services.ocr_service - INFO - 初始化OCRService +2025-11-16 13:03:10,580 - app.services.ocr_service - INFO - OCRService初始化完成 +2025-11-16 13:18:18,242 - app.services.ocr_service - INFO - 初始化OCRService +2025-11-16 13:18:18,246 - app.services.ocr_service - INFO - OCRService初始化完成 +2025-11-16 13:18:18,264 - app.services.ocr_service - INFO - 初始化OCRService +2025-11-16 13:18:18,267 - app.services.ocr_service - INFO - OCRService初始化完成 +2025-11-16 13:51:09,011 - app.services.ocr_service - INFO - 初始化OCRService +2025-11-16 13:51:09,014 - app.services.ocr_service - INFO - OCRService初始化完成 +2025-11-16 14:39:42,974 - app.services.ocr_service - INFO - 初始化OCRService +2025-11-16 14:39:42,977 - app.services.ocr_service - INFO - OCRService初始化完成 +2025-11-16 14:39:42,990 - app.services.ocr_service - INFO - 初始化OCRService +2025-11-16 14:39:42,993 - app.services.ocr_service - INFO - OCRService初始化完成 +2025-11-16 15:11:05,474 - app.services.ocr_service - INFO - 初始化OCRService +2025-11-16 15:11:05,507 - app.services.ocr_service - INFO - OCRService初始化完成 +2025-11-16 15:11:05,514 - app.services.ocr_service - INFO - OCRService.batch_process被调用,转发到process_images_batch +2025-11-16 15:11:05,525 - app.services.ocr_service - INFO - OCRService开始批量处理图片, batch_size=None, max_workers=None +2025-11-16 15:13:47,369 - app.services.ocr_service - INFO - 初始化OCRService +2025-11-16 15:13:47,385 - app.services.ocr_service - INFO - OCRService初始化完成 +2025-11-16 15:13:47,444 - app.services.ocr_service - INFO - OCRService.batch_process被调用,转发到process_images_batch +2025-11-16 15:13:47,445 - app.services.ocr_service - INFO - OCRService开始批量处理图片, batch_size=None, max_workers=None +2025-11-16 15:15:36,170 - app.services.ocr_service - INFO - 初始化OCRService +2025-11-16 15:15:36,181 - app.services.ocr_service - INFO - OCRService初始化完成 +2025-11-16 15:15:36,232 - app.services.ocr_service - INFO - OCRService.batch_process被调用,转发到process_images_batch +2025-11-16 15:15:36,232 - app.services.ocr_service - INFO - OCRService开始批量处理图片, batch_size=None, max_workers=None +2025-11-20 18:44:11,053 - app.services.ocr_service - INFO - 初始化OCRService +2025-11-20 18:44:11,098 - app.services.ocr_service - INFO - OCRService初始化完成 +2025-11-20 18:44:11,171 - app.services.ocr_service - INFO - OCRService.batch_process被调用,转发到process_images_batch +2025-11-20 18:44:11,173 - app.services.ocr_service - INFO - OCRService开始批量处理图片, batch_size=None, max_workers=None +2025-11-20 18:47:03,863 - app.services.ocr_service - INFO - 初始化OCRService +2025-11-20 18:47:03,876 - app.services.ocr_service - INFO - OCRService初始化完成 +2025-11-20 18:47:03,967 - app.services.ocr_service - INFO - OCRService.batch_process被调用,转发到process_images_batch +2025-11-20 18:47:03,967 - app.services.ocr_service - INFO - OCRService开始批量处理图片, batch_size=None, max_workers=None +2025-11-20 18:56:30,280 - app.services.ocr_service - INFO - 初始化OCRService +2025-11-20 18:56:30,296 - app.services.ocr_service - INFO - OCRService初始化完成 +2025-11-20 18:56:30,390 - app.services.ocr_service - INFO - OCRService.batch_process被调用,转发到process_images_batch +2025-11-20 18:56:30,399 - app.services.ocr_service - INFO - OCRService开始批量处理图片, batch_size=None, max_workers=None +2025-12-01 22:21:09,016 - app.services.ocr_service - INFO - 初始化OCRService +2025-12-01 22:21:09,058 - app.services.ocr_service - INFO - OCRService初始化完成 +2025-12-01 22:21:09,151 - app.services.ocr_service - INFO - OCRService.batch_process被调用,转发到process_images_batch +2025-12-01 22:21:09,161 - app.services.ocr_service - INFO - OCRService开始批量处理图片, batch_size=None, max_workers=None diff --git a/logs/app.services.order_service.log b/logs/app.services.order_service.log index 3351d91..f7bf6bd 100644 --- a/logs/app.services.order_service.log +++ b/logs/app.services.order_service.log @@ -591,3 +591,100 @@ 2025-11-15 18:01:51,643 - app.services.order_service - INFO - 初始化OrderService 2025-11-15 18:01:51,715 - app.services.order_service - INFO - OrderService初始化完成 2025-11-15 18:01:51,763 - app.services.order_service - INFO - OrderService开始处理最新Excel文件 +2025-11-16 10:48:45,445 - app.services.order_service - INFO - 初始化OrderService +2025-11-16 10:48:45,564 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-16 10:48:45,630 - app.services.order_service - INFO - OrderService开始处理最新Excel文件 +2025-11-16 10:56:22,512 - app.services.order_service - INFO - 初始化OrderService +2025-11-16 10:56:22,516 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-16 11:23:59,369 - app.services.order_service - INFO - 初始化OrderService +2025-11-16 11:23:59,374 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-16 11:26:06,793 - app.services.order_service - INFO - 初始化OrderService +2025-11-16 11:26:06,795 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-16 12:51:06,907 - app.services.order_service - INFO - 初始化OrderService +2025-11-16 12:51:06,910 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-16 13:03:10,559 - app.services.order_service - INFO - 初始化OrderService +2025-11-16 13:03:10,563 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-16 13:03:10,580 - app.services.order_service - INFO - 初始化OrderService +2025-11-16 13:03:10,584 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-16 13:18:18,246 - app.services.order_service - INFO - 初始化OrderService +2025-11-16 13:18:18,248 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-16 13:18:18,268 - app.services.order_service - INFO - 初始化OrderService +2025-11-16 13:18:18,271 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-16 13:51:09,015 - app.services.order_service - INFO - 初始化OrderService +2025-11-16 13:51:09,018 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-16 14:25:50,009 - app.services.order_service - INFO - 初始化OrderService +2025-11-16 14:25:50,033 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-16 14:25:50,107 - app.services.order_service - INFO - OrderService开始处理最新Excel文件 +2025-11-16 14:25:55,548 - app.services.order_service - INFO - 初始化OrderService +2025-11-16 14:25:55,619 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-16 14:25:55,699 - app.services.order_service - INFO - OrderService开始处理最新Excel文件 +2025-11-16 14:39:42,977 - app.services.order_service - INFO - 初始化OrderService +2025-11-16 14:39:42,981 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-16 14:39:42,993 - app.services.order_service - INFO - 初始化OrderService +2025-11-16 14:39:42,996 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-16 14:59:35,433 - app.services.order_service - INFO - 初始化OrderService +2025-11-16 14:59:35,437 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-16 14:59:35,437 - app.services.order_service - INFO - OrderService开始处理指定Excel文件: E:/2025Code/python/orc-order-v2/data/output/微信图片_20251115212128_148_108.xlsx +2025-11-16 15:03:21,889 - app.services.order_service - INFO - 初始化OrderService +2025-11-16 15:03:21,893 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-16 15:03:21,894 - app.services.order_service - INFO - OrderService开始处理指定Excel文件: E:/2025Code/python/orc-order-v2/data/output/微信图片_20251115212128_148_108.xlsx +2025-11-16 15:08:33,542 - app.services.order_service - INFO - 初始化OrderService +2025-11-16 15:08:33,546 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-16 15:08:33,546 - app.services.order_service - INFO - OrderService开始处理指定Excel文件: E:/2025Code/python/orc-order-v2/data/output/微信图片_20251115212128_148_108.xlsx +2025-11-16 15:11:11,179 - app.services.order_service - INFO - 初始化OrderService +2025-11-16 15:11:11,268 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-16 15:11:11,345 - app.services.order_service - INFO - OrderService开始处理最新Excel文件 +2025-11-16 15:13:47,387 - app.services.order_service - INFO - 初始化OrderService +2025-11-16 15:13:47,411 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-16 15:13:49,534 - app.services.order_service - INFO - OrderService开始处理最新Excel文件 +2025-11-16 15:15:36,186 - app.services.order_service - INFO - 初始化OrderService +2025-11-16 15:15:36,205 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-16 15:15:37,909 - app.services.order_service - INFO - OrderService开始处理最新Excel文件 +2025-11-20 18:36:13,245 - app.services.order_service - INFO - 初始化OrderService +2025-11-20 18:36:13,299 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-20 18:36:13,371 - app.services.order_service - INFO - OrderService开始处理最新Excel文件 +2025-11-20 18:36:42,069 - app.services.order_service - INFO - 初始化OrderService +2025-11-20 18:36:42,111 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-20 18:36:42,174 - app.services.order_service - INFO - OrderService开始处理最新Excel文件 +2025-11-20 18:42:25,860 - app.services.order_service - INFO - 初始化OrderService +2025-11-20 18:42:25,947 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-20 18:42:26,024 - app.services.order_service - INFO - OrderService开始处理最新Excel文件 +2025-11-20 18:44:11,101 - app.services.order_service - INFO - 初始化OrderService +2025-11-20 18:44:11,134 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-20 18:44:11,376 - app.services.order_service - INFO - OrderService开始处理最新Excel文件 +2025-11-20 18:47:03,878 - app.services.order_service - INFO - 初始化OrderService +2025-11-20 18:47:03,927 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-20 18:47:04,166 - app.services.order_service - INFO - OrderService开始处理最新Excel文件 +2025-11-20 18:56:30,301 - app.services.order_service - INFO - 初始化OrderService +2025-11-20 18:56:30,361 - app.services.order_service - INFO - OrderService初始化完成 +2025-11-20 18:56:30,593 - app.services.order_service - INFO - OrderService开始处理最新Excel文件 +2025-12-01 22:21:09,063 - app.services.order_service - INFO - 初始化OrderService +2025-12-01 22:21:09,121 - app.services.order_service - INFO - OrderService初始化完成 +2025-12-01 22:21:10,614 - app.services.order_service - INFO - OrderService开始处理最新Excel文件 +2025-12-12 11:00:14,048 - app.services.order_service - INFO - 初始化OrderService +2025-12-12 11:00:14,096 - app.services.order_service - INFO - OrderService初始化完成 +2025-12-12 11:00:14,097 - app.services.order_service - INFO - OrderService开始处理指定Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765440157955.xlsx +2025-12-12 11:13:15,273 - app.services.order_service - INFO - 初始化OrderService +2025-12-12 11:13:15,288 - app.services.order_service - INFO - OrderService初始化完成 +2025-12-12 11:13:15,289 - app.services.order_service - INFO - OrderService开始处理指定Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765440157955.xlsx +2025-12-12 11:22:25,989 - app.services.order_service - INFO - 初始化OrderService +2025-12-12 11:22:25,990 - app.services.order_service - INFO - OrderService初始化完成 +2025-12-12 11:22:25,990 - app.services.order_service - INFO - OrderService开始处理指定Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765440157955.xlsx +2025-12-12 11:32:26,688 - app.services.order_service - INFO - 初始化OrderService +2025-12-12 11:32:26,694 - app.services.order_service - INFO - OrderService初始化完成 +2025-12-12 11:32:26,696 - app.services.order_service - INFO - OrderService开始处理指定Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765440157955.xlsx +2025-12-12 11:34:40,235 - app.services.order_service - INFO - 初始化OrderService +2025-12-12 11:34:40,238 - app.services.order_service - INFO - OrderService初始化完成 +2025-12-12 11:34:40,238 - app.services.order_service - INFO - OrderService开始处理指定Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765440157955.xlsx +2025-12-12 11:38:53,256 - app.services.order_service - INFO - 初始化OrderService +2025-12-12 11:38:53,260 - app.services.order_service - INFO - OrderService初始化完成 +2025-12-12 11:38:53,260 - app.services.order_service - INFO - OrderService开始处理指定Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765440157955.xlsx +2025-12-12 11:49:38,202 - app.services.order_service - INFO - 初始化OrderService +2025-12-12 11:49:38,203 - app.services.order_service - INFO - OrderService初始化完成 +2025-12-12 11:49:38,206 - app.services.order_service - INFO - OrderService开始处理指定Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765440157955.xlsx +2025-12-12 12:30:07,696 - app.services.order_service - INFO - 初始化OrderService +2025-12-12 12:30:07,700 - app.services.order_service - INFO - OrderService初始化完成 +2025-12-12 12:30:07,700 - app.services.order_service - INFO - OrderService开始处理指定Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765513775092.xlsx +2025-12-12 12:32:20,576 - app.services.order_service - INFO - 初始化OrderService +2025-12-12 12:32:20,579 - app.services.order_service - INFO - OrderService初始化完成 +2025-12-12 12:32:20,579 - app.services.order_service - INFO - OrderService开始处理指定Excel文件: E:\2025Code\python\orc-order-v2\data\output\蓉城易购-订单1765513867817.xlsx diff --git a/templates/商品资料.xlsx b/templates/商品资料.xlsx new file mode 100644 index 0000000..5ff919d Binary files /dev/null and b/templates/商品资料.xlsx differ diff --git a/启动器.py b/启动器.py index 952b6ed..bc35ea9 100644 --- a/启动器.py +++ b/启动器.py @@ -442,6 +442,7 @@ def run_command_with_logging(command, log_widget, status_bar=None, on_complete=N # 记录命令开始执行的时间 start_time = datetime.datetime.now() + start_perf = time.perf_counter() log_widget.configure(state=tk.NORMAL) log_widget.delete(1.0, tk.END) # 清空之前的日志 log_widget.insert(tk.END, f"执行命令: {' '.join(command)}\n", "command") @@ -505,12 +506,12 @@ def run_command_with_logging(command, log_widget, status_bar=None, on_complete=N # 记录命令结束时间 end_time = datetime.datetime.now() - duration = end_time - start_time + duration_sec = max(0.0, time.perf_counter() - start_perf) print(f"\n{'=' * 50}") print(f"执行完毕!返回码: {process.returncode}") print(f"结束时间: {end_time.strftime('%Y-%m-%d %H:%M:%S')}") - print(f"耗时: {duration.total_seconds():.2f} 秒") + print(f"耗时: {duration_sec:.2f} 秒") # 获取输出内容 output_text = ''.join(output_data) @@ -1145,7 +1146,7 @@ def create_collapsible_frame(parent, title, initial_state=True): def process_single_image_with_status(log_widget, status_bar): status_bar.set_status("选择图片中...") - file_path = select_file(log_widget) + file_path = select_file(log_widget, [("图片文件", "*.jpg *.jpeg *.png *.bmp"), ("所有文件", "*.*")], "选择图片") if not file_path: status_bar.set_status("操作已取消") add_to_log(log_widget, "未选择文件,操作已取消\n", "warning") @@ -1229,6 +1230,7 @@ def run_pipeline_directly(log_widget, status_bar): # 记录开始时间 start_time = datetime.datetime.now() + start_perf = time.perf_counter() log_widget.configure(state=tk.NORMAL) log_widget.delete(1.0, tk.END) # 清空之前的日志 log_widget.insert(tk.END, f"执行命令: 完整处理流程\n", "command") @@ -1292,6 +1294,10 @@ def run_pipeline_directly(log_widget, status_bar): add_recent_file(result) except Exception: pass + try: + validate_unit_price_against_item_data(result, log_widget) + except Exception: + pass pass # 3. 可选的合并步骤(如果有多个采购单) @@ -1335,12 +1341,12 @@ def run_pipeline_directly(log_widget, status_bar): # 记录结束时间 end_time = datetime.datetime.now() - duration = end_time - start_time + duration_sec = max(0.0, time.perf_counter() - start_perf) add_to_log(log_widget, f"\n{'=' * 50}\n", "separator") add_to_log(log_widget, f"完整处理流程执行完毕!\n", "success") add_to_log(log_widget, f"结束时间: {end_time.strftime('%Y-%m-%d %H:%M:%S')}\n", "time") - add_to_log(log_widget, f"耗时: {duration.total_seconds():.2f} 秒\n", "time") + add_to_log(log_widget, f"耗时: {duration_sec:.2f} 秒\n", "time") reporter.set("处理完成", 100) pass @@ -1445,6 +1451,10 @@ def batch_process_orders_with_status(log_widget, status_bar): if result: add_to_log(log_widget, "Excel处理完成\n", "success") + try: + validate_unit_price_against_item_data(result, log_widget) + except Exception: + pass reporter.set("检查是否需要合并采购单...", 70) add_to_log(log_widget, "检查是否需要合并采购单...\n", "info") @@ -1531,6 +1541,10 @@ def merge_orders_with_status(log_widget, status_bar): add_recent_file(result) except Exception: pass + try: + validate_unit_price_against_item_data(result, log_widget) + except Exception: + pass pass else: add_to_log(log_widget, "采购单合并失败\n", "error") @@ -1617,18 +1631,114 @@ def process_rongcheng_yigou_with_status(log_widget, status_bar): candidates.sort(key=lambda x: x[1], reverse=True) src_path = candidates[0][0] reporter.set("读取并清洗数据...", 25) - df = pd.read_excel(src_path) - df = df.iloc[2:].reset_index(drop=True) - keep_idx = [0, 2, 3, 9, 12, 15, 17] - keep_idx = [i for i in keep_idx if i < df.shape[1]] - df2 = df.iloc[:, keep_idx].copy() - target_cols = ['序号','商品名称','商品条码','单位','数量','单价','金额'] - df2.columns = target_cols[:len(df2.columns)] + def _pick_col(df, exact_list=None, contains_list=None): + cols = list(df.columns) + if exact_list: + for name in exact_list: + for c in cols: + if str(c).strip() == str(name).strip(): + return c + if contains_list: + for kw in contains_list: + for c in cols: + if kw in str(c): + return c + return None + try: + df_raw = pd.read_excel(src_path, header=2) + except Exception: + df_raw = pd.read_excel(src_path) + df_raw = df_raw.iloc[2:].reset_index(drop=True) + # 去除全空列与行 + df_raw = df_raw.dropna(how='all', axis=1).dropna(how='all', axis=0) + # 选择关键列(包含关键词) + col_no = _pick_col(df_raw, contains_list=['序号']) + col_name = _pick_col(df_raw, contains_list=['商品名称','品名','名称']) + col_bc = _pick_col(df_raw, contains_list=['商品条码','条码']) + col_unit = _pick_col(df_raw, exact_list=['单位(订购单位)'], contains_list=['订购单位','小单位','单位']) + col_qty = _pick_col(df_raw, contains_list=['订购数量','订货数量','数量']) + # 新模板映射:优惠后金额(小单位)作为“单价(小单位)”,出库小计(元)作为“优惠后金额(小单位)” + col_price= _pick_col(df_raw, exact_list=['优惠后金额(小单位)'], contains_list=['单价','销售价','进货价','优惠后金额']) + col_amt = _pick_col(df_raw, exact_list=['出库小计(元)'], contains_list=['金额','优惠后金额','小计','合计','出库小计']) + selected = [c for c in [col_no,col_name,col_bc,col_unit,col_qty,col_price,col_amt] if c] + if not selected or len(selected) < 4: + # 兜底:沿用旧逻辑(索引选列) + df = pd.read_excel(src_path) + df = df.iloc[2:].reset_index(drop=True) + keep_idx = [0, 2, 3, 9, 12, 15, 17] + keep_idx = [i for i in keep_idx if i < df.shape[1]] + df2 = df.iloc[:, keep_idx].copy() + target_cols = ['序号','商品名称','商品条码','单位','数量','单价','金额'] + df2.columns = target_cols[:len(df2.columns)] + else: + df2 = df_raw[selected].copy() + # 统一列名到旧配置期望的列名,便于后续映射 + rename_map = {} + if col_no: rename_map[col_no] = '序号' + if col_name: rename_map[col_name] = '商品名称' + if col_bc: rename_map[col_bc] = '商品条码(小条码)' + if col_unit: rename_map[col_unit] = '单位' + if col_qty: rename_map[col_qty] = '订购数量(小单位)' + if col_price: rename_map[col_price] = '单价(小单位)' + if col_amt: rename_map[col_amt] = '优惠后金额(小单位)' + df2 = df2.rename(columns=rename_map) + # 单位清洗(与旧版一致:将“件”改为“份”,并去除空白) if '单位' in df2.columns: try: - df2['单位'] = df2['单位'].astype(str).str.replace('件','份', regex=False) + df2['单位'] = df2['单位'].astype(str).str.strip().replace({'件':'份'}) except Exception: pass + # 保留原始订购单位 + # 分裂多条码行并均分数量 + try: + bc_col = '商品条码(小条码)' if '商品条码(小条码)' in df2.columns else ('商品条码' if '商品条码' in df2.columns else ('条码' if '条码' in df2.columns else None)) + qty_col = '订购数量(小单位)' if '订购数量(小单位)' in df2.columns else ('订购数量' if '订购数量' in df2.columns else ('数量' if '数量' in df2.columns else None)) + up_col = '单价(小单位)' if '单价(小单位)' in df2.columns else ('单价' if '单价' in df2.columns else ('销售价' if '销售价' in df2.columns else None)) + amt_col = '优惠后金额(小单位)' if '优惠后金额(小单位)' in df2.columns else ('金额' if '金额' in df2.columns else ('小计' if '小计' in df2.columns else None)) + if bc_col and qty_col: + rows = [] + for _, row in df2.iterrows(): + bc_val = str(row.get(bc_col, '')).strip() + if bc_val and (',' in bc_val or ',' in bc_val or '、' in bc_val or ' ' in bc_val or '/' in bc_val): + parts = [] + for sep in [',',',','、','/',' ']: + bc_val = bc_val.replace(sep, ' ') + for token in bc_val.split(): + tok = ''.join([ch for ch in token if ch.isdigit()]) + if tok: + parts.append(tok) + parts = [p for p in parts if p] + if len(parts) >= 2: + try: + q_total = float(row.get(qty_col, 0) or 0) + except Exception: + q_total = 0 + if q_total > 0: + n = len(parts) + base = int(q_total) // n if q_total.is_integer() else q_total / n + remainder = int(q_total) % n if q_total.is_integer() else 0 + for i, bc in enumerate(parts): + new_row = row.copy() + new_row[bc_col] = bc + q_each = base + (1 if remainder > 0 and i < remainder else 0) + new_row[qty_col] = q_each + if up_col and amt_col: + try: + upv = float(new_row.get(up_col, 0) or 0) + new_row[amt_col] = upv * float(q_each) + except Exception: + pass + rows.append(new_row) + else: + # 无法分配数量,保留原行 + rows.append(row) + else: + rows.append(row) + else: + rows.append(row) + df2 = pd.DataFrame(rows) + except Exception: + pass base = os.path.basename(src_path) inter_name = f"蓉城易购_处理后_{base}" inter_path = os.path.join(out_dir, inter_name) @@ -1654,6 +1764,10 @@ def process_rongcheng_yigou_with_status(log_widget, status_bar): if result: add_to_log(log_widget, "Excel普通处理完成\n", "success") add_recent_file(result) + try: + validate_unit_price_against_item_data(result, log_widget) + except Exception: + pass open_result_directory_from_settings() reporter.set("处理完成", 100) else: @@ -1719,6 +1833,10 @@ def process_excel_file_with_status(log_widget, status_bar): add_recent_file(result) except Exception: pass + try: + validate_unit_price_against_item_data(result, log_widget) + except Exception: + pass pass else: add_to_log(log_widget, "Excel文件处理失败\n", "error") @@ -1762,7 +1880,12 @@ def main(): settings = load_user_settings() global THEME_MODE THEME_MODE = settings.get('theme_mode', THEME_MODE) - root.title("益选-OCR订单处理系统 by 欢欢欢") + try: + cfg_for_title = ConfigManager() + ver = cfg_for_title.get('App','version', fallback='dev') + root.title(f"益选-OCR订单处理系统 v{ver} by 欢欢欢") + except Exception: + root.title("益选-OCR订单处理系统 by 欢欢欢") default_size = settings.get('window_size', "900x600") root.geometry("900x600") settings['window_size'] = "900x600" @@ -2043,7 +2166,7 @@ def main(): create_modern_button( core_row1, "单个识别", - lambda: open_input_directory_from_settings(), + lambda: process_single_image_with_status(log_text, status_bar), "primary", px_width=72, px_height=32 @@ -2128,6 +2251,7 @@ def main(): px_width=72, px_height=32 ).pack(side=tk.LEFT, padx=(3, 0)) + # 列映射向导与模板管理入口已移至右侧系统设置区 # 工具功能区 tools_section = tk.LabelFrame( @@ -2245,6 +2369,228 @@ def main(): + def open_validation_panel(log_widget): + try: + import json + import pandas as pd + import xlrd + dlg = tk.Toplevel() + dlg.title("验证匹配") + dlg.geometry("900x680") + center_window(dlg) + try: + dlg.lift() + dlg.attributes('-topmost', True) + dlg.after(200, lambda: dlg.attributes('-topmost', False)) + dlg.focus_force() + except Exception: + pass + outer = ttk.Frame(dlg) + outer.pack(fill=tk.BOTH, expand=True) + canvas = tk.Canvas(outer) + vsb = ttk.Scrollbar(outer, orient='vertical', command=canvas.yview) + canvas.configure(yscrollcommand=vsb.set) + canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) + vsb.pack(side=tk.RIGHT, fill=tk.Y) + frame = ttk.Frame(canvas) + canvas.create_window((0,0), window=frame, anchor='nw') + frame.bind("", lambda e: canvas.configure(scrollregion=canvas.bbox("all"))) + cfg_path = os.path.join("config","suppliers_config.json") + suppliers = [] + data_cfg = {"suppliers": []} + try: + if os.path.exists(cfg_path): + with open(cfg_path,'r',encoding='utf-8') as f: + data_cfg = json.load(f) + suppliers = [s.get('name','') for s in data_cfg.get('suppliers',[])] + except Exception: + pass + row1 = ttk.Frame(frame) + row1.pack(fill=tk.X, pady=6) + ttk.Label(row1, text="供应商").pack(side=tk.LEFT) + sup_var = tk.StringVar() + ttk.Combobox(row1, textvariable=sup_var, state='readonly', values=suppliers).pack(side=tk.LEFT, padx=6) + row2 = ttk.Frame(frame) + row2.pack(fill=tk.X, pady=6) + ttk.Label(row2, text="原始文件").pack(side=tk.LEFT) + orig_var = tk.StringVar() + ttk.Entry(row2, textvariable=orig_var).pack(side=tk.LEFT, fill=tk.X, expand=True, padx=6) + ttk.Button(row2, text="浏览", command=lambda: orig_var.set(filedialog.askopenfilename(title="选择原始Excel", filetypes=[("Excel","*.xlsx *.xls")]) or orig_var.get())).pack(side=tk.LEFT) + row3 = ttk.Frame(frame) + row3.pack(fill=tk.X, pady=6) + ttk.Label(row3, text="期望结果").pack(side=tk.LEFT) + expect_var = tk.StringVar() + ttk.Entry(row3, textvariable=expect_var).pack(side=tk.LEFT, fill=tk.X, expand=True, padx=6) + ttk.Button(row3, text="浏览", command=lambda: expect_var.set(filedialog.askopenfilename(title="选择期望结果", filetypes=[("Excel","*.xls *.xlsx")]) or expect_var.get())).pack(side=tk.LEFT) + act_row = ttk.Frame(frame) + act_row.pack(fill=tk.X, pady=8) + result_text = scrolledtext.ScrolledText(frame, height=6) + result_text.pack(fill=tk.BOTH, expand=True) + diff_box = ttk.Frame(frame) + diff_box.pack(fill=tk.BOTH, expand=True, pady=6) + diff_tree = ttk.Treeview(diff_box, show='headings', height=12) + diff_tree.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) + diff_scroll_x = ttk.Scrollbar(frame, orient='horizontal', command=diff_tree.xview) + diff_tree.configure(xscrollcommand=diff_scroll_x.set) + diff_scroll_x.pack(fill=tk.X) + suggestions_cache = [] + def _read_df(path): + ap = os.path.abspath(path) + if ap.lower().endswith('.xlsx'): + return pd.read_excel(ap, engine='openpyxl') + else: + return pd.read_excel(ap, engine='xlrd') + def _run_validation(): + try: + import numpy as np + from app.services.order_service import OrderService + supplier = sup_var.get() + orig = orig_var.get().strip() + expect = expect_var.get().strip() + if not supplier or not orig or not expect: + messagebox.showwarning("提示","请选择供应商、原始文件与期望结果") + return + service = OrderService() + out_path = service.process_excel(orig, progress_cb=lambda p: None) + df_actual = _read_df(out_path) + df_expect = _read_df(expect) + keys = None + if 'barcode' in df_actual.columns and 'barcode' in df_expect.columns: + keys = 'barcode' + elif '条码' in df_actual.columns and '条码' in df_expect.columns: + keys = '条码' + elif 'name' in df_actual.columns and 'name' in df_expect.columns: + keys = 'name' + records = [] + mismatches = 0 + if keys: + a = df_actual.set_index(keys) + e = df_expect.set_index(keys) + idx_union = list(set(a.index.tolist()) | set(e.index.tolist())) + for k in idx_union: + ra = a.loc[k] if k in a.index else None + rexp = e.loc[k] if k in e.index else None + for f in ['barcode','name','specification','quantity','unit','unit_price','total_price']: + va = ra.get(f) if (ra is not None and f in a.columns) else None + ve = rexp.get(f) if (rexp is not None and f in e.columns) else None + if va is None and ve is None: + continue + def _norm(v): + try: + return float(v) + except Exception: + return str(v) if v is not None else '' + if _norm(va) != _norm(ve): + records.append([str(k), f, str(ve), str(va)]) + mismatches += 1 + else: + for i in range(min(len(df_actual), len(df_expect))): + for f in ['barcode','name','specification','quantity','unit','unit_price','total_price']: + va = df_actual.iloc[i].get(f) if f in df_actual.columns else None + ve = df_expect.iloc[i].get(f) if f in df_expect.columns else None + if va is None and ve is None: + continue + def _norm(v): + try: + return float(v) + except Exception: + return str(v) if v is not None else '' + if _norm(va) != _norm(ve): + records.append([str(i), f, str(ve), str(va)]) + mismatches += 1 + diff_tree['columns'] = ['key','field','expected','actual'] + for c in ['key','field','expected','actual']: + diff_tree.heading(c, text=c) + diff_tree.column(c, width=160, stretch=True) + for iid in diff_tree.get_children(): + diff_tree.delete(iid) + for row in records: + diff_tree.insert('', tk.END, values=row) + result_text.configure(state=tk.NORMAL) + result_text.delete(1.0, tk.END) + result_text.insert(tk.END, f"差异条目: {mismatches}\n") + suggestions = [] + try: + unit_vals = df_actual.get('unit') if 'unit' in df_actual.columns else pd.Series([]) + bad_units = unit_vals.astype(str).isin(['箱','件','提','盒']).sum() + if bad_units > 0: + suggestions.append({"type":"normalize_unit","target":"unit","map":{"箱":"件","提":"件","盒":"件"}}) + except Exception: + pass + try: + qty = pd.to_numeric(df_actual.get('quantity'), errors='coerce') if 'quantity' in df_actual.columns else pd.Series([]) + missing_qty = int(qty.isna().sum()) if not qty.empty else 0 + if missing_qty > 0: + cols = df_actual.columns.tolist() + src = None + for cand in ['订单数量','订购量','订货数量']: + if cand in cols: + src = cand + break + if src: + suggestions.append({"type":"split_quantity_unit","source":src}) + except Exception: + pass + try: + spec = df_actual.get('specification') if 'specification' in df_actual.columns else pd.Series([]) + missing_spec = int(spec.isna().sum()) if not spec.empty else 0 + if missing_spec > 0: + suggestions.append({"type":"extract_spec_from_name","source":"name"}) + except Exception: + pass + try: + up = pd.to_numeric(df_actual.get('unit_price'), errors='coerce').fillna(0) if 'unit_price' in df_actual.columns else pd.Series([]) + tp = pd.to_numeric(df_actual.get('total_price'), errors='coerce').fillna(0) if 'total_price' in df_actual.columns else pd.Series([]) + qty = pd.to_numeric(df_actual.get('quantity'), errors='coerce').fillna(np.nan) if 'quantity' in df_actual.columns else pd.Series([]) + if not qty.empty and not up.empty and not tp.empty: + need_compute = ((qty.isna()) & (up > 0) & (tp > 0)).sum() + if need_compute > 0: + suggestions.append({"type":"compute_quantity_from_total"}) + except Exception: + pass + suggestions_cache.clear() + suggestions_cache.extend(suggestions) + if suggestions: + result_text.insert(tk.END, f"建议: {json.dumps(suggestions, ensure_ascii=False)}\n") + result_text.configure(state=tk.DISABLED) + except Exception as e: + messagebox.showerror("验证失败", str(e)) + def _apply_suggestions(): + try: + supplier = sup_var.get() + if not supplier: + return + if os.path.exists(cfg_path): + with open(cfg_path,'r',encoding='utf-8') as f: + data = json.load(f) + for s in data.get('suppliers',[]): + if s.get('name') == supplier: + rules = s.get('rules', []) + for sug in suggestions_cache: + exists = any(r.get('type') == sug.get('type') for r in rules) + if not exists: + rules.append(sug) + s['rules'] = rules + d = s.get('dictionary') or {} + d.setdefault('unit_synonyms', {"箱":"件","提":"件","盒":"件","瓶":"瓶"}) + d.setdefault('pack_multipliers', {"件":24,"箱":24,"提":12,"盒":10}) + s['dictionary'] = d + break + with open(cfg_path,'w',encoding='utf-8') as f: + json.dump(data,f,ensure_ascii=False,indent=2) + result_text.configure(state=tk.NORMAL) + result_text.insert(tk.END, "已应用建议并保存配置\n") + result_text.configure(state=tk.DISABLED) + else: + messagebox.showwarning("提示","配置文件不存在") + except Exception as e: + messagebox.showerror("应用失败", str(e)) + ttk.Button(act_row, text="运行验证", command=_run_validation).pack(side=tk.LEFT) + ttk.Button(act_row, text="应用建议", command=_apply_suggestions).pack(side=tk.LEFT, padx=6) + ttk.Button(act_row, text="关闭", command=dlg.destroy).pack(side=tk.RIGHT) + except Exception as e: + messagebox.showerror("验证匹配错误", str(e)) + # 系统设置区 settings_section = tk.LabelFrame( right_panel_content, @@ -2262,6 +2608,10 @@ def main(): create_modern_button(settings_buttons_frame, "系统设置", lambda: show_config_dialog(root, ConfigManager()), "primary", px_width=132, px_height=32).pack(anchor='w', pady=3) create_modern_button(settings_buttons_frame, "条码映射", lambda: edit_barcode_mappings(log_text), "primary", px_width=132, px_height=32).pack(anchor='w', pady=3) create_modern_button(settings_buttons_frame, "支持类型", lambda: show_supported_processors(log_text), "primary", px_width=132, px_height=32).pack(anchor='w', pady=3) + create_modern_button(settings_buttons_frame, "列映射向导", lambda: open_column_mapping_wizard_alt(log_text), "primary", px_width=132, px_height=32).pack(anchor='w', pady=3) + create_modern_button(settings_buttons_frame, "供应商管理", lambda: open_supplier_manager(log_text), "primary", px_width=132, px_height=32).pack(anchor='w', pady=3) + create_modern_button(settings_buttons_frame, "模板管理", lambda: open_template_manager(log_text), "primary", px_width=132, px_height=32).pack(anchor='w', pady=3) + create_modern_button(settings_buttons_frame, "验证匹配", lambda: open_validation_panel(log_text), "primary", px_width=132, px_height=32).pack(anchor='w', pady=3) @@ -2351,6 +2701,10 @@ def process_dropped_file(log_widget, status_bar, file_path): if result: add_to_log(log_widget, "Excel文件处理完成\n", "success") add_recent_file(result) + try: + validate_unit_price_against_item_data(result, log_widget) + except Exception: + pass else: add_to_log(log_widget, "Excel文件处理失败\n", "error") finally: @@ -2372,6 +2726,62 @@ def select_excel_file(log_widget): "选择Excel文件" ) +def validate_unit_price_against_item_data(result_path: str, log_widget=None): + try: + import pandas as pd + import os + def _read_df(path): + ap = os.path.abspath(path) + if ap.lower().endswith('.xlsx'): + return pd.read_excel(ap, engine='openpyxl') + else: + return pd.read_excel(ap, engine='xlrd') + item_path = os.path.join('templates', '商品资料.xlsx') + if not os.path.exists(item_path): + return + df_item = _read_df(item_path) + df_res = _read_df(result_path) + def _find_col(df, candidates, contains=None): + cols = list(df.columns) + for c in candidates: + if c in cols: + return c + if contains: + for c in cols: + if contains in str(c): + return c + return None + item_barcode_col = _find_col(df_item, ['商品条码','商品条码(小条码)','条码','barcode'], contains='条码') + item_price_col = _find_col(df_item, ['进货价','进货价(必填)'], contains='进货价') + res_barcode_col = _find_col(df_res, ['条码','barcode'], contains='条码') + res_price_col = _find_col(df_res, ['采购单价','unit_price','单价'], contains='单价') + if not all([item_barcode_col, item_price_col, res_barcode_col, res_price_col]): + return + item_map = df_item[[item_barcode_col, item_price_col]].dropna() + item_map[item_price_col] = pd.to_numeric(item_map[item_price_col], errors='coerce') + item_map = item_map.dropna() + imap = dict(zip(item_map[item_barcode_col].astype(str).str.strip(), item_map[item_price_col])) + df_res['_bc_'] = df_res[res_barcode_col].astype(str).str.strip() + df_res['_res_price_'] = pd.to_numeric(df_res[res_price_col], errors='coerce') + df_res['_item_price_'] = df_res['_bc_'].map(imap) + df_check = df_res.dropna(subset=['_res_price_','_item_price_']) + df_check['_diff_'] = (df_check['_res_price_'] - df_check['_item_price_']).abs() + bad = df_check[df_check['_diff_'] > 1.0] + if not bad.empty: + lines = [] + for i in range(min(len(bad), 10)): + r = bad.iloc[i] + lines.append(f"条码 {r['_bc_']}: 采购单价={r['_res_price_']} vs 进货价={r['_item_price_']} 差异={r['_diff_']:.2f}") + import tkinter.messagebox as mb + mb.showwarning("单价校验提示", f"存在{len(bad)}条单价与商品资料进货价差异超过1元:\n" + "\n".join(lines)) + if log_widget is not None: + add_to_log(log_widget, f"单价校验发现{len(bad)}条差异>1元\n", "warning") + else: + if log_widget is not None: + add_to_log(log_widget, "单价校验通过(差异<=1元)\n", "success") + except Exception: + pass + def clean_cache(log_widget): """清除处理缓存""" try: @@ -2488,6 +2898,1308 @@ def show_supported_processors(log_widget): except Exception as e: add_to_log(log_widget, f"显示处理器类型出错: {str(e)}\n", "error") +def safe_open_validation_panel(log_widget): + try: + if 'open_validation_panel' in globals() and callable(globals()['open_validation_panel']): + return globals()['open_validation_panel'](log_widget) + else: + messagebox.showwarning("提示", "验证面板功能尚未加载,请重启程序后重试") + except Exception as e: + messagebox.showerror("错误", str(e)) + +def open_supplier_manager(log_widget): + try: + import json + dlg = tk.Toplevel() + dlg.title("供应商管理") + dlg.geometry("900x700") + center_window(dlg) + try: + dlg.lift() + dlg.attributes('-topmost', True) + dlg.after(200, lambda: dlg.attributes('-topmost', False)) + dlg.focus_force() + except Exception: + pass + cfg_path = os.path.join("config","suppliers_config.json") + data = {"suppliers": []} + if os.path.exists(cfg_path): + with open(cfg_path,'r',encoding='utf-8') as f: + data = json.load(f) + outer = ttk.Frame(dlg) + outer.pack(fill=tk.BOTH, expand=True) + canvas = tk.Canvas(outer) + vsb = ttk.Scrollbar(outer, orient='vertical', command=canvas.yview) + canvas.configure(yscrollcommand=vsb.set) + canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) + vsb.pack(side=tk.RIGHT, fill=tk.Y) + container = ttk.Frame(canvas) + canvas.create_window((0,0), window=container, anchor='nw') + def _on_container_config(evt): + try: + canvas.configure(scrollregion=canvas.bbox("all")) + except Exception: + pass + container.bind("", _on_container_config) + def _on_mousewheel(event): + try: + delta = -1 * int(event.delta / 120) + canvas.yview_scroll(delta, "units") + except Exception: + pass + dlg.bind("", _on_mousewheel) + # inner padding + inner = ttk.Frame(container) + inner.pack(fill=tk.BOTH, expand=True, padx=12, pady=12) + container = inner + container.columnconfigure(0, weight=1) + container.columnconfigure(1, weight=3) + left = ttk.Frame(container) + left.grid(row=0, column=0, sticky='nsew', padx=(0,8)) + right = ttk.Frame(container) + right.grid(row=0, column=1, sticky='nsew') + sup_list = tk.Listbox(left, height=20) + sup_list.pack(fill=tk.BOTH, expand=True) + btns = ttk.Frame(left) + btns.pack(fill=tk.X, pady=6) + def refresh_list(selected_idx=0): + sup_list.delete(0, tk.END) + for s in data.get('suppliers',[]): + sup_list.insert(tk.END, s.get('name','')) + try: + sup_list.select_clear(0, tk.END) + sup_list.select_set(selected_idx) + except Exception: + pass + def new_supplier(): + data.setdefault('suppliers', []).append({ + 'name': '新供应商', + 'description': '', + 'filename_patterns': [], + 'content_indicators': [], + 'column_mapping': {}, + 'header_row': 0, + 'rules': [], + 'dictionary': { + 'ignore_words': [], + 'unit_synonyms': {}, + 'pack_multipliers': {}, + 'name_patterns': [], + 'default_unit': '瓶', + 'default_package_quantity': 1 + }, + 'output_templates': ['templates/银豹-采购单模板.xls'], + 'current_template_index': 0 + }) + refresh_list(len(data['suppliers'])-1) + load_selected() + def copy_supplier(): + sel = sup_list.curselection() + if not sel: + return + idx = sel[0] + import copy + src = data['suppliers'][idx] + cp = copy.deepcopy(src) + cp['name'] = src.get('name','') + '_副本' + data['suppliers'].append(cp) + refresh_list(len(data['suppliers'])-1) + def delete_supplier(): + sel = sup_list.curselection() + if not sel: + return + idx = sel[0] + if 0 <= idx < len(data['suppliers']): + del data['suppliers'][idx] + refresh_list(max(0, idx-1)) + ttk.Button(btns, text="新建", command=new_supplier).pack(side=tk.LEFT) + ttk.Button(btns, text="复制", command=copy_supplier).pack(side=tk.LEFT, padx=6) + ttk.Button(btns, text="删除", command=delete_supplier).pack(side=tk.LEFT) + nb = ttk.Notebook(right) + nb.pack(fill=tk.BOTH, expand=True) + basic_tab = ttk.Frame(nb) + map_tab = ttk.Frame(nb) + rule_tab = ttk.Frame(nb) + tpl_tab = ttk.Frame(nb) + nb.add(basic_tab, text="基本信息") + nb.add(map_tab, text="列映射与表头") + nb.add(rule_tab, text="规则与词典") + nb.add(tpl_tab, text="模板管理") + name_var = tk.StringVar() + desc_var = tk.StringVar() + header_row_var = tk.StringVar() + ttk.Label(basic_tab, text="名称").pack(anchor='w') + ttk.Entry(basic_tab, textvariable=name_var).pack(fill=tk.X, pady=4) + ttk.Label(basic_tab, text="描述").pack(anchor='w') + ttk.Entry(basic_tab, textvariable=desc_var).pack(fill=tk.X, pady=4) + ttk.Label(basic_tab, text="文件名模式(每行一条)").pack(anchor='w') + fp_text = scrolledtext.ScrolledText(basic_tab, height=4) + fp_text.pack(fill=tk.BOTH, pady=4) + ttk.Label(basic_tab, text="内容指示词(每行一条)").pack(anchor='w') + ci_text = scrolledtext.ScrolledText(basic_tab, height=4) + ci_text.pack(fill=tk.BOTH, pady=4) + ttk.Label(basic_tab, text="表头行号(从1开始)").pack(anchor='w') + ttk.Entry(basic_tab, textvariable=header_row_var).pack(fill=tk.X, pady=4) + ttk.Button(map_tab, text="打开列映射向导", command=lambda: open_column_mapping_wizard_alt(log_widget, name_var.get())).pack(anchor='w', pady=6) + ttk.Label(rule_tab, text="忽略词(每行一条)").pack(anchor='w') + ignore_words_text = scrolledtext.ScrolledText(rule_tab, height=4) + ignore_words_text.pack(fill=tk.BOTH, pady=4) + ttk.Label(rule_tab, text="单位同义词(JSON)").pack(anchor='w') + unit_synonyms_var = tk.StringVar(value='{}') + ttk.Entry(rule_tab, textvariable=unit_synonyms_var).pack(fill=tk.X, pady=4) + ttk.Label(rule_tab, text="包装倍数(JSON)").pack(anchor='w') + pack_multipliers_var = tk.StringVar(value='{}') + ttk.Entry(rule_tab, textvariable=pack_multipliers_var).pack(fill=tk.X, pady=4) + ttk.Label(rule_tab, text="名称正则(每行一条)").pack(anchor='w') + name_patterns_text = scrolledtext.ScrolledText(rule_tab, height=4) + name_patterns_text.pack(fill=tk.BOTH, pady=4) + ttk.Label(rule_tab, text="默认单位").pack(anchor='w') + default_unit_var = tk.StringVar(value='瓶') + ttk.Entry(rule_tab, textvariable=default_unit_var).pack(fill=tk.X, pady=4) + ttk.Label(rule_tab, text="默认包装数量").pack(anchor='w') + default_pq_var = tk.StringVar(value='1') + ttk.Entry(rule_tab, textvariable=default_pq_var).pack(fill=tk.X, pady=4) + ttk.Label(rule_tab, text="规则预设").pack(anchor='w') + rule_preset_var = tk.StringVar() + rule_presets = { + "基础拆分与推断": [ + {"type": "split_quantity_unit", "source": "quantity"}, + {"type": "extract_spec_from_name", "source": "name"}, + {"type": "normalize_unit", "target": "unit", "map": {"箱": "件", "提": "件", "盒": "件"}}, + {"type": "compute_quantity_from_total"}, + {"type": "mark_gift"}, + {"type": "fill_missing", "fills": {"unit": "瓶"}} + ] + } + ttk.Combobox(rule_tab, textvariable=rule_preset_var, state='readonly', values=list(rule_presets.keys())).pack(fill=tk.X, pady=4) + rule_file_row = ttk.Frame(rule_tab) + rule_file_row.pack(fill=tk.X, pady=6) + ttk.Label(rule_file_row, text="选择Excel").pack(side=tk.LEFT) + rule_excel_var = tk.StringVar() + ttk.Entry(rule_file_row, textvariable=rule_excel_var).pack(side=tk.LEFT, fill=tk.X, expand=True, padx=6) + def _browse_rule_excel(): + p = filedialog.askopenfilename(title="选择Excel文件", filetypes=[("Excel","*.xlsx *.xls")]) + if p: + rule_excel_var.set(p) + ttk.Button(rule_file_row, text="浏览", command=_browse_rule_excel).pack(side=tk.LEFT) + # 加载列供来源/目标下拉选择 + rule_available_columns = [] + def _load_rule_columns(): + try: + import pandas as pd + p = rule_excel_var.get().strip() + if not p: + messagebox.showwarning("提示","请先选择Excel文件") + return + idx = None + try: + v = header_row_var.get().strip() + if v: + n = int(v) + if n > 0: + idx = n - 1 + except Exception: + pass + df = pd.read_excel(p, engine='openpyxl' if p.lower().endswith('.xlsx') else 'xlrd', header=idx if idx is not None else 0, nrows=5) + cols = [str(c) for c in list(df.columns)] + rule_available_columns.clear() + rule_available_columns.extend(cols) + messagebox.showinfo("成功", f"已加载列: {', '.join(cols)}") + _refresh_rule_params() + except Exception as e: + messagebox.showerror("加载失败", str(e)) + ttk.Button(rule_file_row, text="加载列", command=_load_rule_columns).pack(side=tk.LEFT, padx=6) + rule_preview_box = ttk.Frame(rule_tab) + rule_preview_box.pack(fill=tk.BOTH, expand=True, pady=6) + rule_left_tree = ttk.Treeview(rule_preview_box, show='headings', height=8) + rule_right_tree = ttk.Treeview(rule_preview_box, show='headings', height=8) + rule_left_tree.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) + rule_right_tree.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) + rule_scroll_x_row = ttk.Frame(rule_tab) + rule_scroll_x_row.pack(fill=tk.X) + rule_left_scroll_x = ttk.Scrollbar(rule_scroll_x_row, orient='horizontal', command=rule_left_tree.xview) + rule_right_scroll_x = ttk.Scrollbar(rule_scroll_x_row, orient='horizontal', command=rule_right_tree.xview) + rule_left_tree.configure(xscrollcommand=rule_left_scroll_x.set) + rule_right_tree.configure(xscrollcommand=rule_right_scroll_x.set) + rule_left_scroll_x.pack(side=tk.LEFT, fill=tk.X, expand=True, padx=(0,3)) + rule_right_scroll_x.pack(side=tk.LEFT, fill=tk.X, expand=True, padx=(3,0)) + rule_step_row = ttk.Frame(rule_tab) + rule_step_row.pack(fill=tk.X, pady=6) + ttk.Label(rule_step_row, text="预览步骤").pack(side=tk.LEFT) + rule_step_var = tk.StringVar() + rule_step_cb = ttk.Combobox(rule_step_row, textvariable=rule_step_var, state='readonly') + rule_step_cb.pack(side=tk.LEFT, padx=6) + diff_mode_var = tk.BooleanVar(value=False) + ttk.Checkbutton(rule_step_row, text="仅显示变化列", variable=diff_mode_var).pack(side=tk.LEFT, padx=6) + err_label = ttk.Label(rule_step_row, text="错误计数: -") + err_label.pack(side=tk.LEFT, padx=12) + rule_step_box = ttk.Frame(rule_tab) + rule_step_box.pack(fill=tk.BOTH, expand=True, pady=6) + rule_step_tree = ttk.Treeview(rule_step_box, show='headings', height=8) + rule_step_tree.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) + rule_step_scroll_x = ttk.Scrollbar(rule_tab, orient='horizontal', command=rule_step_tree.xview) + rule_step_tree.configure(xscrollcommand=rule_step_scroll_x.set) + rule_step_scroll_x.pack(fill=tk.X) + def _build_rule_preview(): + try: + import pandas as pd + from app.core.handlers.rule_engine import apply_rules + p = rule_excel_var.get().strip() + if not p: + return + idx = None + try: + v = header_row_var.get().strip() + if v: + n = int(v) + if n > 0: + idx = n - 1 + except Exception: + pass + df = pd.read_excel(p, engine='openpyxl' if p.lower().endswith('.xlsx') else 'xlrd', header=idx if idx is not None else 0, nrows=50) + sel = sup_list.curselection() + cm = {} + rules_cur = [] + if sel: + s = data['suppliers'][sel[0]] + cm = s.get('column_mapping', {}) + rules_cur = s.get('rules', []) + rename_map = cm + df0 = df.rename(columns=rename_map) + dictionary = { + 'ignore_words': [w.strip() for w in ignore_words_text.get(1.0, tk.END).splitlines() if w.strip()], + 'unit_synonyms': json.loads(unit_synonyms_var.get() or '{}'), + 'pack_multipliers': json.loads(pack_multipliers_var.get() or '{}'), + 'name_patterns': [w.strip() for w in name_patterns_text.get(1.0, tk.END).splitlines() if w.strip()], + 'default_unit': default_unit_var.get().strip() or '瓶', + 'default_package_quantity': int(default_pq_var.get() or '1') + } + rules_use = rule_presets.get(rule_preset_var.get(), rules_cur or rule_presets["基础拆分与推断"]) + df1 = apply_rules(df0, rules_use, dictionary) + lcols = list(df0.columns) + rcols = list(df1.columns) + rule_left_tree['columns'] = lcols + rule_right_tree['columns'] = rcols + for c in lcols: + rule_left_tree.heading(c, text=c) + rule_left_tree.column(c, width=120, stretch=True) + for c in rcols: + rule_right_tree.heading(c, text=c) + rule_right_tree.column(c, width=120, stretch=True) + for iid in rule_left_tree.get_children(): + rule_left_tree.delete(iid) + for iid in rule_right_tree.get_children(): + rule_right_tree.delete(iid) + # Diff模式:仅显示变化列 + if diff_mode_var.get(): + changed_cols = [] + for c in set(lcols).intersection(set(rcols)): + try: + if not df0[c].equals(df1[c]): + changed_cols.append(c) + except Exception: + pass + lshow = [c for c in lcols if c in changed_cols] + rshow = [c for c in rcols if c in changed_cols] + rule_left_tree['columns'] = lshow + rule_right_tree['columns'] = rshow + for c in lshow: + rule_left_tree.heading(c, text=c) + rule_left_tree.column(c, width=120, stretch=True) + for c in rshow: + rule_right_tree.heading(c, text=c) + rule_right_tree.column(c, width=120, stretch=True) + for i in range(len(df0)): + rule_left_tree.insert('', tk.END, values=[str(df0.iloc[i].get(c, '')) for c in lshow]) + for i in range(len(df1)): + rule_right_tree.insert('', tk.END, values=[str(df1.iloc[i].get(c, '')) for c in rshow]) + else: + for i in range(len(df0)): + rule_left_tree.insert('', tk.END, values=[str(df0.iloc[i].get(c, '')) for c in lcols]) + for i in range(len(df1)): + rule_right_tree.insert('', tk.END, values=[str(df1.iloc[i].get(c, '')) for c in rcols]) + steps = [("原始", df0)] + cur = df0.copy() + for r in rules_use: + cur = apply_rules(cur, [r], dictionary) + steps.append((r.get('type','step'), cur.copy())) + rule_step_cb['values'] = [t for t,_ in steps] + if steps: + rule_step_var.set(steps[-1][0]) + _show_rule_step_df(steps[-1][1]) + def _on_rule_step_change(evt=None): + sel = rule_step_var.get() + for t, d in steps: + if t == sel: + _show_rule_step_df(d) + break + rule_step_cb.bind('<>', _on_rule_step_change) + rule_step_cb.event_generate('<>') + rule_step_row._steps_cache = steps + # 错误计数:统计缺失单位/规格、无法拆分数量 + try: + empty_unit = int(df1.get('unit').isna().sum()) if 'unit' in df1.columns else len(df1) + empty_qty = int(pd.to_numeric(df1.get('quantity'), errors='coerce').isna().sum()) if 'quantity' in df1.columns else len(df1) + empty_spec = int(df1.get('specification').isna().sum()) if 'specification' in df1.columns else len(df1) + err_label.configure(text=f"错误计数: 单位缺失 {empty_unit},数量缺失 {empty_qty},规格缺失 {empty_spec}") + except Exception: + err_label.configure(text="错误计数: 统计失败") + except Exception as e: + messagebox.showerror("预览失败", str(e)) + def _show_rule_step_df(dfshow): + cols = list(dfshow.columns) + rule_step_tree['columns'] = cols + for c in cols: + rule_step_tree.heading(c, text=c) + rule_step_tree.column(c, width=120, stretch=True) + for iid in rule_step_tree.get_children(): + rule_step_tree.delete(iid) + for i in range(len(dfshow)): + rule_step_tree.insert('', tk.END, values=[str(dfshow.iloc[i].get(c, '')) for c in cols]) + def _export_rule_step_csv(): + try: + if not hasattr(rule_step_row, '_steps_cache'): + return + sel = rule_step_var.get() + for t, d in rule_step_row._steps_cache: + if t == sel: + save_path = filedialog.asksaveasfilename(title="导出预览为CSV", defaultextension=".csv", filetypes=[("CSV","*.csv")]) + if save_path: + d.to_csv(save_path, index=False, encoding='utf-8-sig') + messagebox.showinfo("成功","已导出CSV") + break + except Exception as e: + messagebox.showerror("导出失败", str(e)) + ttk.Button(rule_step_row, text="生成步骤预览", command=_build_rule_preview).pack(side=tk.LEFT, padx=6) + ttk.Button(rule_step_row, text="导出预览CSV", command=_export_rule_step_csv).pack(side=tk.LEFT, padx=6) + + # 规则列表编辑器 + rules_frame = ttk.LabelFrame(rule_tab, text="规则列表") + rules_frame.pack(fill=tk.BOTH, expand=True, pady=6) + rules_list = tk.Listbox(rules_frame, height=8) + rules_list.pack(fill=tk.BOTH, expand=True) + rules_btns = ttk.Frame(rules_frame) + rules_btns.pack(fill=tk.X, pady=4) + RULE_TYPES = { + 'split_quantity_unit': {'label': '拆分数量单位', 'params': [('source','quantity')]}, + 'extract_spec_from_name': {'label': '名称提取规格', 'params': [('source','name')]}, + 'normalize_unit': {'label': '单位归一', 'params': [('target','unit'), ('map','{"箱":"件","提":"件","盒":"件"}')]}, + 'compute_quantity_from_total': {'label': '金额回推数量', 'params': []}, + 'fill_missing': {'label': '缺省填充', 'params': [('fills','{}')]}, + 'mark_gift': {'label': '标记赠品', 'params': []} + } + add_row = ttk.Frame(rules_btns) + add_row.pack(fill=tk.X) + new_rule_var = tk.StringVar() + ttk.Combobox(add_row, textvariable=new_rule_var, state='readonly', values=list(RULE_TYPES.keys())).pack(side=tk.LEFT) + def _add_rule(): + r = new_rule_var.get() + if not r: + return + rules_list.insert(tk.END, r) + new_rule_var.set('') + _refresh_rule_params() + ttk.Button(add_row, text="添加", command=_add_rule).pack(side=tk.LEFT, padx=6) + def _remove_rule(): + sel = rules_list.curselection() + if sel: + rules_list.delete(sel[0]) + _refresh_rule_params() + def _move_up(): + sel = rules_list.curselection() + if sel: + idx = sel[0] + if idx > 0: + val = rules_list.get(idx) + rules_list.delete(idx) + rules_list.insert(idx-1, val) + rules_list.select_set(idx-1) + _refresh_rule_params() + def _move_down(): + sel = rules_list.curselection() + if sel: + idx = sel[0] + if idx < rules_list.size()-1: + val = rules_list.get(idx) + rules_list.delete(idx) + rules_list.insert(idx+1, val) + rules_list.select_set(idx+1) + _refresh_rule_params() + ttk.Button(rules_btns, text="删除", command=_remove_rule).pack(side=tk.LEFT, padx=6) + ttk.Button(rules_btns, text="上移", command=_move_up).pack(side=tk.LEFT, padx=6) + ttk.Button(rules_btns, text="下移", command=_move_down).pack(side=tk.LEFT, padx=6) + rule_params_frame = ttk.LabelFrame(rule_tab, text="规则参数") + rule_params_frame.pack(fill=tk.BOTH, expand=True, pady=6) + rule_param_vars = {} + def _refresh_rule_params(): + for w in rule_params_frame.winfo_children(): + w.destroy() + sel = rules_list.curselection() + if not sel: + return + rkey = rules_list.get(sel[0]) + spec = RULE_TYPES.get(rkey, {'params': []}) + row = ttk.Frame(rule_params_frame) + row.pack(fill=tk.X, pady=4) + rule_param_vars.clear() + for name, default in spec['params']: + r = ttk.Frame(rule_params_frame) + r.pack(fill=tk.X, pady=4) + ttk.Label(r, text=name).pack(side=tk.LEFT) + var = tk.StringVar(value=default) + # 对 source/target 提供下拉列选择 + if name in ('source','target'): + cb = ttk.Combobox(r, textvariable=var, state='readonly', values=rule_available_columns) + cb.pack(side=tk.LEFT, fill=tk.X, expand=True, padx=6) + else: + ttk.Entry(r, textvariable=var).pack(side=tk.LEFT, fill=tk.X, expand=True, padx=6) + rule_param_vars[name] = var + def _build_rules_from_ui(): + rules = [] + for i in range(rules_list.size()): + rkey = rules_list.get(i) + spec = RULE_TYPES.get(rkey, {'params': []}) + rd = {'type': rkey} + # if selected, use edited params; else defaults + if rules_list.curselection() and rules_list.get(rules_list.curselection()[0]) == rkey: + for name, default in spec['params']: + val = rule_param_vars.get(name).get() if name in rule_param_vars else default + try: + rd[name] = json.loads(val) if (val.strip().startswith('{') or val.strip().startswith('[')) else val + except Exception: + rd[name] = val + else: + for name, default in spec['params']: + try: + rd[name] = json.loads(default) if (isinstance(default, str) and (default.strip().startswith('{') or default.strip().startswith('['))) else default + except Exception: + rd[name] = default + rules.append(rd) + return rules + def _apply_quick_template_no_unit(): + try: + rules_list.delete(0, tk.END) + for r in ['split_quantity_unit','extract_spec_from_name','normalize_unit','fill_missing','mark_gift']: + rules_list.insert(tk.END, r) + unit_synonyms_var.set(json.dumps({"箱":"件","提":"件","盒":"件","瓶":"瓶"}, ensure_ascii=False)) + pack_multipliers_var.set(json.dumps({"件":24,"箱":24,"提":12,"盒":10}, ensure_ascii=False)) + default_unit_var.set('瓶') + default_pq_var.set('1') + messagebox.showinfo("成功","已应用无数量/单位快速模板,请在规则参数中选择来源列") + _refresh_rule_params() + except Exception as e: + messagebox.showerror("应用失败", str(e)) + ttk.Button(rules_btns, text="应用无数量/单位模板", command=_apply_quick_template_no_unit).pack(side=tk.LEFT, padx=6) + rules_list.bind('<>', lambda e: _refresh_rule_params()) + def _load_rules_to_ui(rules): + rules_list.delete(0, tk.END) + for r in rules or []: + rtype = r.get('type') + if rtype in RULE_TYPES: + rules_list.insert(tk.END, rtype) + _refresh_rule_params() + tpl_list = tk.Listbox(tpl_tab, height=8) + tpl_list.pack(fill=tk.BOTH, expand=True) + tpl_btns = ttk.Frame(tpl_tab) + tpl_btns.pack(fill=tk.X, pady=6) + current_tpl_idx_var = tk.StringVar(value='0') + ttk.Label(tpl_tab, text="当前模板索引").pack(anchor='w') + ttk.Entry(tpl_tab, textvariable=current_tpl_idx_var).pack(fill=tk.X, pady=4) + def load_selected(): + sel = sup_list.curselection() + if not sel: + return + idx = sel[0] + s = data['suppliers'][idx] + name_var.set(s.get('name','')) + desc_var.set(s.get('description','')) + header_row_var.set(str((s.get('header_row') or 0)+1)) + fp = s.get('filename_patterns',[]) + ci = s.get('content_indicators',[]) + fp_text.delete(1.0, tk.END) + fp_text.insert(tk.END, '\n'.join(fp)) + ci_text.delete(1.0, tk.END) + ci_text.insert(tk.END, '\n'.join(ci)) + d = s.get('dictionary') or {} + ignore_words_text.delete(1.0, tk.END) + ignore_words_text.insert(tk.END, '\n'.join(d.get('ignore_words', []))) + unit_synonyms_var.set(json.dumps(d.get('unit_synonyms', {}), ensure_ascii=False)) + pack_multipliers_var.set(json.dumps(d.get('pack_multipliers', {}), ensure_ascii=False)) + name_patterns_text.delete(1.0, tk.END) + name_patterns_text.insert(tk.END, '\n'.join(d.get('name_patterns', []))) + default_unit_var.set(d.get('default_unit','瓶')) + default_pq_var.set(str(d.get('default_package_quantity',1))) + tpl_list.delete(0, tk.END) + for t in s.get('output_templates', []): + tpl_list.insert(tk.END, t) + current_tpl_idx_var.set(str(s.get('current_template_index', 0))) + # 载入规则列表到UI + _load_rules_to_ui(s.get('rules', [])) + def add_template(): + p = filedialog.askopenfilename(title="选择模板文件", filetypes=[("Excel模板","*.xls *.xlsx")]) + if p: + tpl_list.insert(tk.END, os.path.relpath(p, os.getcwd()) if os.path.isabs(p) else p) + def remove_template(): + sel = tpl_list.curselection() + if sel: + tpl_list.delete(sel[0]) + ttk.Button(tpl_btns, text="添加模板", command=add_template).pack(side=tk.LEFT) + ttk.Button(tpl_btns, text="删除模板", command=remove_template).pack(side=tk.LEFT, padx=6) + def save_supplier(): + try: + sel = sup_list.curselection() + if not sel: + return + idx = sel[0] + s = data['suppliers'][idx] + s['name'] = name_var.get().strip() or s.get('name','') + s['description'] = desc_var.get().strip() + fp = [w.strip() for w in fp_text.get(1.0, tk.END).splitlines() if w.strip()] + ci = [w.strip() for w in ci_text.get(1.0, tk.END).splitlines() if w.strip()] + s['filename_patterns'] = fp + s['content_indicators'] = ci + hr = header_row_var.get().strip() + try: + s['header_row'] = max(0, int(hr)-1) if hr else 0 + except Exception: + s['header_row'] = 0 + s['dictionary'] = { + 'ignore_words': [w.strip() for w in ignore_words_text.get(1.0, tk.END).splitlines() if w.strip()], + 'unit_synonyms': json.loads(unit_synonyms_var.get() or '{}'), + 'pack_multipliers': json.loads(pack_multipliers_var.get() or '{}'), + 'name_patterns': [w.strip() for w in name_patterns_text.get(1.0, tk.END).splitlines() if w.strip()], + 'default_unit': default_unit_var.get().strip() or '瓶', + 'default_package_quantity': int(default_pq_var.get() or '1') + } + # 优先使用自定义规则列表;如未编辑则使用预设或原有 + rules_ui = _build_rules_from_ui() + if rules_ui: + s['rules'] = rules_ui + else: + s['rules'] = rule_presets.get(rule_preset_var.get(), s.get('rules', [])) + s['output_templates'] = [tpl_list.get(i) for i in range(tpl_list.size())] + try: + s['current_template_index'] = int(current_tpl_idx_var.get() or '0') + except Exception: + s['current_template_index'] = 0 + with open(cfg_path,'w',encoding='utf-8') as f: + json.dump(data,f,ensure_ascii=False,indent=2) + try: + global PROCESSOR_SERVICE + if PROCESSOR_SERVICE is None: + PROCESSOR_SERVICE = ProcessorService(ConfigManager()) + PROCESSOR_SERVICE.reload_processors() + except Exception: + pass + add_to_log(log_widget, "供应商配置已保存并重载\n", "success") + refresh_list(idx) + except Exception as e: + messagebox.showerror("保存失败", str(e)) + ctl_row = ttk.Frame(dlg) + ctl_row.pack(fill=tk.X, pady=8) + ttk.Button(ctl_row, text="保存", command=save_supplier).pack(side=tk.RIGHT) + def on_select(evt): + load_selected() + sup_list.bind('<>', on_select) + refresh_list(0) + load_selected() + except Exception as e: + messagebox.showerror("供应商管理错误", str(e)) + +def open_column_mapping_wizard_alt(log_widget, supplier_name: str = None): + try: + import json + import pandas as pd + dlg = tk.Toplevel() + dlg.title("列映射向导") + dlg.geometry("780x660") + center_window(dlg) + try: + dlg.lift() + dlg.attributes('-topmost', True) + dlg.after(200, lambda: dlg.attributes('-topmost', False)) + dlg.focus_force() + except Exception: + pass + container_scroll = ttk.Frame(dlg) + container_scroll.pack(fill=tk.BOTH, expand=True) + canvas = tk.Canvas(container_scroll) + vsb = ttk.Scrollbar(container_scroll, orient='vertical', command=canvas.yview) + canvas.configure(yscrollcommand=vsb.set) + canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) + vsb.pack(side=tk.RIGHT, fill=tk.Y) + frame = ttk.Frame(canvas) + canvas.create_window((0,0), window=frame, anchor='nw') + def _on_frame_config(evt): + try: + canvas.configure(scrollregion=canvas.bbox("all")) + except Exception: + pass + frame.bind("", _on_frame_config) + def _on_mousewheel(event): + try: + delta = -1 * int(event.delta / 120) + canvas.yview_scroll(delta, "units") + except Exception: + pass + dlg.bind("", _on_mousewheel) + # inner padding + inner_pad = ttk.Frame(frame) + inner_pad.pack(fill=tk.BOTH, expand=True, padx=12, pady=12) + frame = inner_pad + ttk.Label(frame, text="选择Excel文件").pack(anchor='w') + excel_path_var = tk.StringVar() + path_row = ttk.Frame(frame) + path_row.pack(fill=tk.X, pady=6) + ttk.Entry(path_row, textvariable=excel_path_var).pack(side=tk.LEFT, fill=tk.X, expand=True) + def _browse_excel(): + p = filedialog.askopenfilename(title="选择Excel文件", filetypes=[("Excel","*.xlsx *.xls")]) + if p: + excel_path_var.set(p) + try: + dlg.lift() + dlg.attributes('-topmost', True) + dlg.after(200, lambda: dlg.attributes('-topmost', False)) + dlg.focus_force() + except Exception: + pass + ttk.Button(path_row, text="浏览", command=_browse_excel).pack(side=tk.LEFT, padx=6) + ttk.Label(frame, text="选择供应商").pack(anchor='w', pady=(8,0)) + supplier_var = tk.StringVar() + supplier_combo = ttk.Combobox(frame, textvariable=supplier_var, state='readonly') + supplier_combo.pack(fill=tk.X) + cfg_path = os.path.join("config","suppliers_config.json") + suppliers = [] + try: + if os.path.exists(cfg_path): + with open(cfg_path,'r',encoding='utf-8') as f: + data = json.load(f) + suppliers = [s.get('name','') for s in data.get('suppliers',[])] + except Exception: + pass + supplier_combo['values'] = suppliers + if supplier_name and supplier_name in suppliers: + supplier_var.set(supplier_name) + elif suppliers: + supplier_var.set(suppliers[0]) + hdr_row = ttk.Frame(frame) + hdr_row.pack(fill=tk.X, pady=6) + ttk.Label(hdr_row, text="表头行号(从1开始)").pack(side=tk.LEFT) + header_row_var = tk.StringVar() + ttk.Entry(hdr_row, textvariable=header_row_var, width=8).pack(side=tk.LEFT, padx=6) + preview_frame = ttk.Frame(frame) + preview_frame.pack(fill=tk.BOTH, expand=True, pady=6) + preview_tree = ttk.Treeview(preview_frame, show='headings', height=8) + preview_tree.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) + preview_scroll_y = ttk.Scrollbar(preview_frame, orient='vertical', command=preview_tree.yview) + preview_tree.configure(yscrollcommand=preview_scroll_y.set) + preview_scroll_y.pack(side=tk.RIGHT, fill=tk.Y) + cols_box = ttk.Frame(frame) + cols_box.pack(fill=tk.BOTH, expand=True, pady=8) + ttk.Label(cols_box, text="源列 → 标准列映射").pack(anchor='w') + map_container = ttk.Frame(cols_box) + map_container.pack(fill=tk.BOTH, expand=True, pady=6) + map_canvas = tk.Canvas(map_container) + map_canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) + map_scroll_y = ttk.Scrollbar(map_container, orient='vertical', command=map_canvas.yview) + map_scroll_y.pack(side=tk.RIGHT, fill=tk.Y) + map_canvas.configure(yscrollcommand=map_scroll_y.set) + map_frame = ttk.Frame(map_canvas) + map_canvas.create_window((0,0), window=map_frame, anchor='nw') + def _on_map_frame_config(evt): + try: + map_canvas.configure(scrollregion=map_canvas.bbox("all")) + except Exception: + pass + map_frame.bind("", _on_map_frame_config) + # 标准字段与中文标签 + std_fields = [ + "barcode","name","specification","quantity","unit", + "unit_price","total_price","category","brand","supplier" + ] + friendly_labels = { + "barcode": "条码", + "name": "商品名称", + "specification": "规格", + "quantity": "数量", + "unit": "单位", + "unit_price": "采购单价", + "total_price": "金额/小计", + "category": "类别", + "brand": "品牌", + "supplier": "供应商" + } + try: + from app.core.handlers.column_mapper import ColumnMapper + cm = ColumnMapper() + # 若项目有更完整集合,替换并生成中文标签 + std_fields = list(cm.STANDARD_COLUMNS.keys()) + for k, v in cm.STANDARD_COLUMNS.items(): + if isinstance(v, dict) and v.get('label_zh'): + friendly_labels[k] = v['label_zh'] + except Exception: + pass + source_col_options = [] + source_cols = [] + def load_columns(): + nonlocal source_cols + p = excel_path_var.get() + if not p: + return + try: + idx = None + try: + val = header_row_var.get().strip() + if val: + n = int(val) + if n > 0: + idx = n - 1 + except Exception: + pass + if p.lower().endswith('.xlsx'): + df = pd.read_excel(p, engine='openpyxl', header=idx if idx is not None else 0) + else: + df = pd.read_excel(p, engine='xlrd', header=idx if idx is not None else 0) + source_cols = [str(c) for c in list(df.columns)] + for cmb in source_col_options: + cmb['values'] = source_cols + if source_cols: + cmb.set(source_cols[0]) + try: + # 1) 先按已保存的映射预填 + if os.path.exists(cfg_path): + with open(cfg_path,'r',encoding='utf-8') as f: + data_cfg = json.load(f) + for s in data_cfg.get('suppliers',[]): + if s.get('name') == supplier_var.get(): + cm_saved = s.get('column_mapping', {}) + for src, target in cm_saved.items(): + if target in entries and src in source_cols: + entries[target].set(src) + break + # 2) 再用关键词建议补齐未映射项 + lower = [str(c).lower() for c in source_cols] + def find_any(keys): + for i, lc in enumerate(lower): + for k in keys: + if k in lc: + return source_cols[i] + return None + mapping_suggestions = { + 'barcode': find_any(['条码','barcode','条形码']), + 'name': find_any(['商品名称','name','品名','商品']), + 'specification': find_any(['规格','型号']), + 'quantity': find_any(['数量','订购量','订货数量','采购数量']), + 'unit': find_any(['单位']), + 'unit_price': find_any(['单价','采购单价','进货价','价格']), + 'total_price': find_any(['金额','小计','合计']), + 'category': find_any(['类别','分类','品类']), + 'brand': find_any(['品牌']), + 'supplier': find_any(['供应商','供货商']) + } + for f, src in mapping_suggestions.items(): + if f in entries and (not entries[f].get()) and src: + entries[f].set(src) + except Exception: + pass + except Exception as e: + messagebox.showerror("加载失败", str(e)) + def preview_rows(): + try: + p = excel_path_var.get() + if not p: + return + if p.lower().endswith('.xlsx'): + df0 = pd.read_excel(p, engine='openpyxl', header=None, nrows=30) + else: + df0 = pd.read_excel(p, engine='xlrd', header=None, nrows=30) + cols = [str(i+1) for i in range(df0.shape[1])] + preview_tree['columns'] = cols + for c in cols: + preview_tree.heading(c, text=c) + preview_tree.column(c, width=120, stretch=True) + for iid in preview_tree.get_children(): + preview_tree.delete(iid) + for r in range(df0.shape[0]): + vals = [str(df0.iloc[r, c]) if c < df0.shape[1] else '' for c in range(df0.shape[1])] + preview_tree.insert('', tk.END, values=vals) + except Exception as e: + messagebox.showerror("加载失败", str(e)) + def on_preview_select(evt): + try: + sel = preview_tree.selection() + if sel: + idx = preview_tree.index(sel[0]) + header_row_var.set(str(idx+1)) + except Exception: + pass + preview_tree.bind('<>', on_preview_select) + ttk.Button(path_row, text="预览前30行", command=preview_rows).pack(side=tk.LEFT, padx=6) + ttk.Button(path_row, text="加载列", command=load_columns).pack(side=tk.LEFT, padx=6) + entries = {} + for i, field in enumerate(std_fields): + row = ttk.Frame(map_frame) + row.pack(fill=tk.X, pady=4) + label_text = field + (f"({friendly_labels.get(field,'')})" if friendly_labels.get(field) else "") + ttk.Label(row, text=label_text, width=22).pack(side=tk.LEFT) + var = tk.StringVar() + cmb = ttk.Combobox(row, textvariable=var, state='readonly') + cmb.pack(side=tk.LEFT, fill=tk.X, expand=True) + source_col_options.append(cmb) + entries[field] = var + act_row = ttk.Frame(frame) + act_row.pack(fill=tk.X, pady=8) + preset_row = ttk.Frame(frame) + preset_row.pack(fill=tk.X, pady=6) + ttk.Label(preset_row, text="规则预设").pack(side=tk.LEFT) + rule_preset_var = tk.StringVar() + rule_presets = { + "基础拆分与推断": [ + {"type": "split_quantity_unit", "source": "quantity"}, + {"type": "extract_spec_from_name", "source": "name"}, + {"type": "normalize_unit", "target": "unit", "map": {"箱": "件", "提": "件", "盒": "件"}}, + {"type": "compute_quantity_from_total"}, + {"type": "mark_gift"}, + {"type": "fill_missing", "fills": {"unit": "瓶"}} + ] + } + preset_cb = ttk.Combobox(preset_row, textvariable=rule_preset_var, state='readonly', values=list(rule_presets.keys())) + preset_cb.pack(side=tk.LEFT, padx=6) + dict_frame = ttk.LabelFrame(frame, text="供应商规则") + dict_frame.pack(fill=tk.BOTH, expand=True, pady=6) + ttk.Label(dict_frame, text="忽略词").pack(anchor='w') + ignore_words_text = scrolledtext.ScrolledText(dict_frame, height=3) + ignore_words_text.pack(fill=tk.X, pady=4) + ttk.Label(dict_frame, text="单位同义词(JSON)").pack(anchor='w') + unit_synonyms_var = tk.StringVar(value='{}') + ttk.Entry(dict_frame, textvariable=unit_synonyms_var).pack(fill=tk.X, pady=4) + ttk.Label(dict_frame, text="包装倍数(JSON)").pack(anchor='w') + pack_multipliers_var = tk.StringVar(value='{}') + ttk.Entry(dict_frame, textvariable=pack_multipliers_var).pack(fill=tk.X, pady=4) + ttk.Label(dict_frame, text="名称正则(每行一条)").pack(anchor='w') + name_patterns_text = scrolledtext.ScrolledText(dict_frame, height=3) + name_patterns_text.pack(fill=tk.X, pady=4) + ttk.Label(dict_frame, text="默认单位").pack(anchor='w') + default_unit_var = tk.StringVar(value='瓶') + ttk.Entry(dict_frame, textvariable=default_unit_var).pack(fill=tk.X, pady=4) + ttk.Label(dict_frame, text="默认包装数量").pack(anchor='w') + default_pq_var = tk.StringVar(value='1') + ttk.Entry(dict_frame, textvariable=default_pq_var).pack(fill=tk.X, pady=4) + def load_dictionary_for_supplier(): + try: + if os.path.exists(cfg_path): + with open(cfg_path,'r',encoding='utf-8') as f: + data = json.load(f) + for s in data.get('suppliers',[]): + if s.get('name') == supplier_var.get(): + d = s.get('dictionary') or {} + ignore_words = '\n'.join(d.get('ignore_words', [])) + ignore_words_text.delete(1.0, tk.END) + ignore_words_text.insert(tk.END, ignore_words) + unit_synonyms_var.set(json.dumps(d.get('unit_synonyms', {}), ensure_ascii=False)) + pack_multipliers_var.set(json.dumps(d.get('pack_multipliers', {}), ensure_ascii=False)) + name_patterns_text.delete(1.0, tk.END) + name_patterns_text.insert(tk.END, '\n'.join(d.get('name_patterns', []))) + default_unit_var.set(d.get('default_unit','瓶')) + default_pq_var.set(str(d.get('default_package_quantity',1))) + break + except Exception: + pass + load_dictionary_for_supplier() + def export_dictionary(): + try: + save_path = filedialog.asksaveasfilename(title="导出规则", defaultextension=".json", filetypes=[("JSON","*.json")]) + if not save_path: + return + payload = { + 'ignore_words': [w.strip() for w in ignore_words_text.get(1.0, tk.END).splitlines() if w.strip()], + 'unit_synonyms': json.loads(unit_synonyms_var.get() or '{}'), + 'pack_multipliers': json.loads(pack_multipliers_var.get() or '{}'), + 'name_patterns': [w.strip() for w in name_patterns_text.get(1.0, tk.END).splitlines() if w.strip()], + 'default_unit': default_unit_var.get().strip() or '瓶', + 'default_package_quantity': int(default_pq_var.get() or '1') + } + with open(save_path,'w',encoding='utf-8') as f: + json.dump(payload,f,ensure_ascii=False,indent=2) + messagebox.showinfo("成功","规则已导出") + except Exception as e: + messagebox.showerror("导出失败", str(e)) + def import_dictionary(): + try: + open_path = filedialog.askopenfilename(title="导入规则", filetypes=[("JSON","*.json")]) + if not open_path: + return + with open(open_path,'r',encoding='utf-8') as f: + payload = json.load(f) + ignore_words_text.delete(1.0, tk.END) + ignore_words_text.insert(tk.END, '\n'.join(payload.get('ignore_words', []))) + unit_synonyms_var.set(json.dumps(payload.get('unit_synonyms', {}), ensure_ascii=False)) + pack_multipliers_var.set(json.dumps(payload.get('pack_multipliers', {}), ensure_ascii=False)) + name_patterns_text.delete(1.0, tk.END) + name_patterns_text.insert(tk.END, '\n'.join(payload.get('name_patterns', []))) + default_unit_var.set(payload.get('default_unit','瓶')) + default_pq_var.set(str(payload.get('default_package_quantity',1))) + messagebox.showinfo("成功","规则已导入,请保存以应用") + except Exception as e: + messagebox.showerror("导入失败", str(e)) + dict_io_row = ttk.Frame(dict_frame) + dict_io_row.pack(fill=tk.X, pady=4) + ttk.Button(dict_io_row, text="导入规则", command=import_dictionary).pack(side=tk.LEFT) + ttk.Button(dict_io_row, text="导出规则", command=export_dictionary).pack(side=tk.LEFT, padx=6) + preview_box = ttk.Frame(frame) + preview_box.pack(fill=tk.BOTH, expand=True, pady=6) + left_tree = ttk.Treeview(preview_box, show='headings', height=8) + right_tree = ttk.Treeview(preview_box, show='headings', height=8) + left_tree.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) + right_tree.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) + scroll_x_row = ttk.Frame(frame) + scroll_x_row.pack(fill=tk.X) + left_scroll_x = ttk.Scrollbar(scroll_x_row, orient='horizontal', command=left_tree.xview) + right_scroll_x = ttk.Scrollbar(scroll_x_row, orient='horizontal', command=right_tree.xview) + left_tree.configure(xscrollcommand=left_scroll_x.set) + right_tree.configure(xscrollcommand=right_scroll_x.set) + left_scroll_x.pack(side=tk.LEFT, fill=tk.X, expand=True, padx=(0,3)) + right_scroll_x.pack(side=tk.LEFT, fill=tk.X, expand=True, padx=(3,0)) + def apply_rules_preview(): + try: + p = excel_path_var.get() + if not p: + return + idx = None + try: + val = header_row_var.get().strip() + if val: + n = int(val) + if n > 0: + idx = n - 1 + except Exception: + pass + df = pd.read_excel(p, engine='openpyxl' if p.lower().endswith('.xlsx') else 'xlrd', header=idx if idx is not None else 0, nrows=15) + rename_map = {} + for f in std_fields: + v = entries[f].get() + if v: + rename_map[v] = f + df0 = df.rename(columns=rename_map) + from app.core.handlers.rule_engine import apply_rules + rules = rule_presets.get(rule_preset_var.get(), rule_presets["基础拆分与推断"]) + dictionary = { + 'ignore_words': [w.strip() for w in ignore_words_text.get(1.0, tk.END).splitlines() if w.strip()], + 'unit_synonyms': json.loads(unit_synonyms_var.get() or '{}'), + 'pack_multipliers': json.loads(pack_multipliers_var.get() or '{}'), + 'name_patterns': [w.strip() for w in name_patterns_text.get(1.0, tk.END).splitlines() if w.strip()], + 'default_unit': default_unit_var.get().strip() or '瓶', + 'default_package_quantity': int(default_pq_var.get() or '1') + } + df1 = apply_rules(df0, rules, dictionary) + lcols = list(df0.columns) + rcols = list(df1.columns) + left_tree['columns'] = lcols + right_tree['columns'] = rcols + for c in lcols: + left_tree.heading(c, text=c) + left_tree.column(c, width=120, stretch=True) + for c in rcols: + right_tree.heading(c, text=c) + right_tree.column(c, width=120, stretch=True) + for iid in left_tree.get_children(): + left_tree.delete(iid) + for iid in right_tree.get_children(): + right_tree.delete(iid) + for i in range(len(df0)): + left_tree.insert('', tk.END, values=[str(df0.iloc[i].get(c, '')) for c in lcols]) + for i in range(len(df1)): + right_tree.insert('', tk.END, values=[str(df1.iloc[i].get(c, '')) for c in rcols]) + except Exception as e: + messagebox.showerror("预览失败", str(e)) + ttk.Button(preset_row, text="应用规则预览", command=apply_rules_preview).pack(side=tk.LEFT, padx=6) + step_row = ttk.Frame(frame) + step_row.pack(fill=tk.X, pady=6) + ttk.Label(step_row, text="预览步骤").pack(side=tk.LEFT) + step_select_var = tk.StringVar() + step_select_cb = ttk.Combobox(step_row, textvariable=step_select_var, state='readonly') + step_select_cb.pack(side=tk.LEFT, padx=6) + step_box = ttk.Frame(frame) + step_box.pack(fill=tk.BOTH, expand=True, pady=6) + step_tree = ttk.Treeview(step_box, show='headings', height=8) + step_tree.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) + step_scroll_x = ttk.Scrollbar(frame, orient='horizontal', command=step_tree.xview) + step_tree.configure(xscrollcommand=step_scroll_x.set) + step_scroll_x.pack(fill=tk.X) + def build_step_preview(): + try: + p = excel_path_var.get() + if not p: + return + idx = None + try: + val = header_row_var.get().strip() + if val: + n = int(val) + if n > 0: + idx = n - 1 + except Exception: + pass + df = pd.read_excel(p, engine='openpyxl' if p.lower().endswith('.xlsx') else 'xlrd', header=idx if idx is not None else 0, nrows=50) + rename_map = {} + for f in std_fields: + v = entries[f].get() + if v: + rename_map[v] = f + df0 = df.rename(columns=rename_map) + from app.core.handlers.rule_engine import apply_rules + rules = rule_presets.get(rule_preset_var.get(), rule_presets["基础拆分与推断"]) + dictionary = { + 'ignore_words': [w.strip() for w in ignore_words_text.get(1.0, tk.END).splitlines() if w.strip()], + 'unit_synonyms': json.loads(unit_synonyms_var.get() or '{}'), + 'pack_multipliers': json.loads(pack_multipliers_var.get() or '{}'), + 'name_patterns': [w.strip() for w in name_patterns_text.get(1.0, tk.END).splitlines() if w.strip()], + 'default_unit': default_unit_var.get().strip() or '瓶', + 'default_package_quantity': int(default_pq_var.get() or '1') + } + steps = [("原始", df0)] + cur = df0.copy() + for r in rules: + cur = apply_rules(cur, [r], dictionary) + steps.append((r.get('type','step'), cur.copy())) + step_select_cb['values'] = [t for t,_ in steps] + if steps: + step_select_var.set(steps[-1][0]) + show_step_df(steps[-1][1]) + def on_step_change(evt=None): + sel = step_select_var.get() + for t, d in steps: + if t == sel: + show_step_df(d) + break + step_select_cb.bind('<>', on_step_change) + step_select_cb.event_generate('<>') + step_row._steps_cache = steps + except Exception as e: + messagebox.showerror("预览失败", str(e)) + def show_step_df(dfshow): + cols = list(dfshow.columns) + step_tree['columns'] = cols + for c in cols: + step_tree.heading(c, text=c) + step_tree.column(c, width=120, stretch=True) + for iid in step_tree.get_children(): + step_tree.delete(iid) + for i in range(len(dfshow)): + step_tree.insert('', tk.END, values=[str(dfshow.iloc[i].get(c, '')) for c in cols]) + def export_step_csv(): + try: + if not hasattr(step_row, '_steps_cache'): + return + sel = step_select_var.get() + for t, d in step_row._steps_cache: + if t == sel: + save_path = filedialog.asksaveasfilename(title="导出预览为CSV", defaultextension=".csv", filetypes=[("CSV","*.csv")]) + if save_path: + d.to_csv(save_path, index=False, encoding='utf-8-sig') + messagebox.showinfo("成功","已导出CSV") + break + except Exception as e: + messagebox.showerror("导出失败", str(e)) + ttk.Button(step_row, text="生成步骤预览", command=build_step_preview).pack(side=tk.LEFT, padx=6) + ttk.Button(step_row, text="导出预览CSV", command=export_step_csv).pack(side=tk.LEFT, padx=6) + def save_mapping(): + try: + if not supplier_var.get(): + messagebox.showwarning("提示","请选择供应商") + return + mapping = {} + for f in std_fields: + v = entries[f].get() + if v: + mapping[v] = f + if not mapping: + messagebox.showwarning("提示","请先加载列并选择映射") + return + if os.path.exists(cfg_path): + with open(cfg_path,'r',encoding='utf-8') as f: + data = json.load(f) + else: + data = {"suppliers":[]} + for s in data.get('suppliers',[]): + if s.get('name') == supplier_var.get(): + s['column_mapping'] = mapping + hr = header_row_var.get().strip() + try: + if hr: + n = int(hr) + if n > 0: + s['header_row'] = n - 1 + except Exception: + pass + if rule_preset_var.get(): + s['rules'] = rule_presets.get(rule_preset_var.get(), []) + s['dictionary'] = { + 'ignore_words': [w.strip() for w in ignore_words_text.get(1.0, tk.END).splitlines() if w.strip()], + 'unit_synonyms': json.loads(unit_synonyms_var.get() or '{}'), + 'pack_multipliers': json.loads(pack_multipliers_var.get() or '{}'), + 'name_patterns': [w.strip() for w in name_patterns_text.get(1.0, tk.END).splitlines() if w.strip()], + 'default_unit': default_unit_var.get().strip() or '瓶', + 'default_package_quantity': int(default_pq_var.get() or '1') + } + with open(cfg_path,'w',encoding='utf-8') as f: + json.dump(data,f,ensure_ascii=False,indent=2) + add_to_log(log_widget, "列映射已保存\n", "success") + messagebox.showinfo("成功","列映射已保存") + dlg.destroy() + except Exception as e: + messagebox.showerror("保存失败", str(e)) + def export_mapping(): + try: + save_path = filedialog.asksaveasfilename(title="导出映射", defaultextension=".json", filetypes=[("JSON","*.json")]) + if not save_path: + return + mapping = {} + for f in std_fields: + v = entries[f].get() + if v: + mapping[v] = f + payload = {'supplier': supplier_var.get(), 'header_row': None, 'column_mapping': mapping} + hr = header_row_var.get().strip() + try: + if hr: + n = int(hr) + if n > 0: + payload['header_row'] = n - 1 + except Exception: + pass + with open(save_path,'w',encoding='utf-8') as f: + json.dump(payload,f,ensure_ascii=False,indent=2) + messagebox.showinfo("成功","映射已导出") + except Exception as e: + messagebox.showerror("导出失败", str(e)) + def import_mapping(): + try: + open_path = filedialog.askopenfilename(title="导入映射", filetypes=[("JSON","*.json")]) + if not open_path: + return + with open(open_path,'r',encoding='utf-8') as f: + payload = json.load(f) + cm = payload.get('column_mapping',{}) + for src, target in cm.items(): + if target in entries: + entries[target].set(src) + hr = payload.get('header_row') + if isinstance(hr,int) and hr >= 0: + header_row_var.set(str(hr+1)) + messagebox.showinfo("成功","映射已导入,请保存以应用") + except Exception as e: + messagebox.showerror("导入失败", str(e)) + ttk.Button(act_row, text="导入映射", command=import_mapping).pack(side=tk.LEFT) + ttk.Button(act_row, text="导出映射", command=export_mapping).pack(side=tk.LEFT, padx=8) + ttk.Button(act_row, text="保存映射", command=save_mapping).pack(side=tk.LEFT, padx=8) + ttk.Button(act_row, text="保存并返回", command=save_mapping).pack(side=tk.LEFT, padx=8) + ttk.Button(act_row, text="取消", command=dlg.destroy).pack(side=tk.RIGHT) + except Exception as e: + messagebox.showerror("向导错误", str(e)) + +def open_template_manager(log_widget): + try: + import json + import xlrd + dlg = tk.Toplevel() + dlg.title("模板管理与校验") + dlg.geometry("780x540") + center_window(dlg) + try: + dlg.lift() + dlg.attributes('-topmost', True) + dlg.after(200, lambda: dlg.attributes('-topmost', False)) + dlg.focus_force() + except Exception: + pass + frame = ttk.Frame(dlg) + frame.pack(fill=tk.BOTH, expand=True, padx=12, pady=12) + cfg_path = os.path.join("config","suppliers_config.json") + suppliers = [] + data = {"suppliers":[]} + try: + if os.path.exists(cfg_path): + with open(cfg_path,'r',encoding='utf-8') as f: + data = json.load(f) + suppliers = [s.get('name','') for s in data.get('suppliers',[])] + except Exception: + pass + ttk.Label(frame, text="选择供应商").pack(anchor='w') + supplier_var = tk.StringVar() + supplier_combo = ttk.Combobox(frame, textvariable=supplier_var, state='readonly', values=suppliers) + supplier_combo.pack(fill=tk.X) + if suppliers: + supplier_var.set(suppliers[0]) + ttk.Label(frame, text="模板文件").pack(anchor='w', pady=(8,0)) + tpl_var = tk.StringVar() + tpl_row = ttk.Frame(frame) + tpl_row.pack(fill=tk.X, pady=6) + ttk.Entry(tpl_row, textvariable=tpl_var).pack(side=tk.LEFT, fill=tk.X, expand=True) + def choose_tpl(): + p = filedialog.askopenfilename(title="选择模板文件", filetypes=[("Excel模板","*.xls *.xlsx")]) + if p: + tpl_var.set(os.path.relpath(p, os.getcwd()) if os.path.isabs(p) else p) + try: + dlg.lift() + dlg.attributes('-topmost', True) + dlg.after(200, lambda: dlg.attributes('-topmost', False)) + dlg.focus_force() + except Exception: + pass + ttk.Button(tpl_row, text="选择", command=choose_tpl).pack(side=tk.LEFT, padx=6) + ttk.Label(frame, text="校验结果").pack(anchor='w', pady=(8,0)) + result_text = scrolledtext.ScrolledText(frame, height=12) + result_text.pack(fill=tk.BOTH, expand=True) + def validate_tpl(): + try: + p = tpl_var.get() + if not p: + messagebox.showwarning("提示","请先选择模板文件") + return + ap = os.path.abspath(p) + wb = xlrd.open_workbook(ap, formatting_info=True) + sh = wb.sheet_by_index(0) + headers = [] + try: + headers = [str(sh.cell_value(0, c)).strip() for c in range(sh.ncols)] + except Exception: + pass + required = ["条码","采购量","赠送量","采购单价"] + missing = [h for h in required if h not in headers] + result_text.configure(state=tk.NORMAL) + result_text.delete(1.0, tk.END) + result_text.insert(tk.END, f"模板列: {headers}\n") + if missing: + result_text.insert(tk.END, f"缺少列: {missing}\n") + else: + result_text.insert(tk.END, "模板校验通过\n") + result_text.configure(state=tk.DISABLED) + except Exception as e: + messagebox.showerror("校验失败", str(e)) + def save_tpl(): + try: + if not supplier_var.get() or not tpl_var.get(): + messagebox.showwarning("提示","请选择供应商并选择模板文件") + return + for s in data.get('suppliers',[]): + if s.get('name') == supplier_var.get(): + s['output_template'] = tpl_var.get() + with open(cfg_path,'w',encoding='utf-8') as f: + json.dump(data,f,ensure_ascii=False,indent=2) + add_to_log(log_widget, "模板路径已保存\n", "success") + messagebox.showinfo("成功","模板路径已保存") + dlg.destroy() + except Exception as e: + messagebox.showerror("保存失败", str(e)) + act = ttk.Frame(frame) + act.pack(fill=tk.X, pady=8) + ttk.Button(act, text="校验模板", command=validate_tpl).pack(side=tk.LEFT) + ttk.Button(act, text="保存", command=save_tpl).pack(side=tk.LEFT, padx=8) + ttk.Button(act, text="取消", command=dlg.destroy).pack(side=tk.RIGHT) + except Exception as e: + messagebox.showerror("模板管理错误", str(e)) + def clean_data_files(log_widget): """清理数据文件(仅清理input和output目录)""" try: @@ -2713,6 +4425,100 @@ def edit_barcode_mappings(log_widget): add_to_log(log_widget, f"编辑条码映射时出错: {str(e)}\n", "error") messagebox.showerror("错误", f"编辑条码映射时出错: {str(e)}") +def open_column_mapping_wizard(log_widget): + try: + import json + from tkinter import ttk + from app.services.order_service import OrderService + from app.core.handlers.column_mapper import ColumnMapper + suppliers = [] + config_path = os.path.abspath(os.path.join('config','suppliers_config.json')) + if os.path.exists(config_path): + with open(config_path,'r',encoding='utf-8') as f: + data = json.load(f) + suppliers = data.get('suppliers', []) + file_path = select_excel_file(log_widget) + if not file_path: + try: + svc = OrderService() + file_path = svc.get_latest_excel() + except Exception: + file_path = None + if not file_path: + messagebox.showwarning("未选择文件","请选择一个用于分析的Excel文件") + return + import pandas as pd + df = pd.read_excel(file_path, nrows=5) + detected_cols = list(df.columns) + dlg = tk.Toplevel() + dlg.title("列映射向导") + dlg.geometry("520x560") + center_window(dlg) + frame = tk.Frame(dlg, bg=THEMES[THEME_MODE]["card_bg"]) + frame.pack(fill=tk.BOTH, expand=True, padx=12, pady=12) + tk.Label(frame, text="供应商", bg=THEMES[THEME_MODE]["card_bg"], fg=THEMES[THEME_MODE]["fg"]).pack(anchor='w') + supplier_names = [s.get('name','') for s in suppliers] + supplier_var = tk.StringVar(value=supplier_names[0] if supplier_names else '') + supplier_cb = ttk.Combobox(frame, values=supplier_names, textvariable=supplier_var, state='readonly') + supplier_cb.pack(fill=tk.X, pady=6) + std_cols = list(ColumnMapper.STANDARD_COLUMNS.keys()) + mapper = ColumnMapper() + suggestions = mapper.suggest_column_mapping(df) + mapping_vars = {} + for sc in std_cols: + row = tk.Frame(frame, bg=THEMES[THEME_MODE]["card_bg"]) + row.pack(fill=tk.X, pady=4) + tk.Label(row, text=sc, width=14, anchor='w', bg=THEMES[THEME_MODE]["card_bg"], fg=THEMES[THEME_MODE]["fg"]).pack(side=tk.LEFT) + var = tk.StringVar() + values = ['未映射'] + detected_cols + cb = ttk.Combobox(row, values=values, textvariable=var, state='readonly') + pre = None + for col, stds in suggestions.items(): + if sc in stds and col in detected_cols: + pre = col + break + var.set(pre if pre else '未映射') + cb.pack(side=tk.LEFT, fill=tk.X, expand=True) + mapping_vars[sc] = var + btn_row = tk.Frame(frame, bg=THEMES[THEME_MODE]["card_bg"]) + btn_row.pack(fill=tk.X, pady=12) + def save_mapping(): + try: + supplier_name = supplier_var.get() + if not supplier_name: + messagebox.showwarning("未选择供应商","请选择一个供应商") + return + updated = False + for s in suppliers: + if s.get('name') == supplier_name: + cm = {} + for sc, var in mapping_vars.items(): + src = var.get() + if src and src != '未映射': + cm[src] = sc + s['column_mapping'] = cm + updated = True + break + if not updated: + messagebox.showerror("错误","未找到供应商配置") + return + with open(config_path,'w',encoding='utf-8') as f: + json.dump({'suppliers': suppliers}, f, ensure_ascii=False, indent=2) + try: + global PROCESSOR_SERVICE + if PROCESSOR_SERVICE is None: + PROCESSOR_SERVICE = ProcessorService(ConfigManager()) + PROCESSOR_SERVICE.reload_processors() + except Exception: + pass + add_to_log(log_widget, "列映射已保存并重新加载供应商配置\n", "success") + dlg.destroy() + except Exception as e: + messagebox.showerror("保存失败", str(e)) + create_modern_button(btn_row, "保存", save_mapping, "primary", px_width=92, px_height=32).pack(side=tk.RIGHT) + except Exception as e: + messagebox.showerror("向导错误", str(e)) + def bind_keyboard_shortcuts(root, log_widget, status_bar): """绑定键盘快捷键""" # Ctrl+O - 处理单个图片 @@ -2814,3 +4620,237 @@ def _extract_path_from_recent_item(s: str) -> str: return p.strip().strip('"') except Exception: return s.strip().strip('"') +def open_validation_panel(log_widget): + try: + import json + import pandas as pd + import xlrd + dlg = tk.Toplevel() + dlg.title("验证匹配") + dlg.geometry("900x680") + center_window(dlg) + try: + dlg.lift() + dlg.attributes('-topmost', True) + dlg.after(200, lambda: dlg.attributes('-topmost', False)) + dlg.focus_force() + except Exception: + pass + outer = ttk.Frame(dlg) + outer.pack(fill=tk.BOTH, expand=True) + canvas = tk.Canvas(outer) + vsb = ttk.Scrollbar(outer, orient='vertical', command=canvas.yview) + canvas.configure(yscrollcommand=vsb.set) + canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) + vsb.pack(side=tk.RIGHT, fill=tk.Y) + frame = ttk.Frame(canvas) + canvas.create_window((0,0), window=frame, anchor='nw') + frame.bind("", lambda e: canvas.configure(scrollregion=canvas.bbox("all"))) + cfg_path = os.path.join("config","suppliers_config.json") + suppliers = [] + data_cfg = {"suppliers": []} + try: + if os.path.exists(cfg_path): + with open(cfg_path,'r',encoding='utf-8') as f: + data_cfg = json.load(f) + suppliers = [s.get('name','') for s in data_cfg.get('suppliers',[])] + except Exception: + pass + row1 = ttk.Frame(frame) + row1.pack(fill=tk.X, pady=6) + ttk.Label(row1, text="供应商").pack(side=tk.LEFT) + sup_var = tk.StringVar() + ttk.Combobox(row1, textvariable=sup_var, state='readonly', values=suppliers).pack(side=tk.LEFT, padx=6) + row2 = ttk.Frame(frame) + row2.pack(fill=tk.X, pady=6) + ttk.Label(row2, text="原始文件").pack(side=tk.LEFT) + orig_var = tk.StringVar() + ttk.Entry(row2, textvariable=orig_var).pack(side=tk.LEFT, fill=tk.X, expand=True, padx=6) + ttk.Button(row2, text="浏览", command=lambda: orig_var.set(filedialog.askopenfilename(title="选择原始Excel", filetypes=[("Excel","*.xlsx *.xls")]) or orig_var.get())).pack(side=tk.LEFT) + row3 = ttk.Frame(frame) + row3.pack(fill=tk.X, pady=6) + ttk.Label(row3, text="期望结果").pack(side=tk.LEFT) + expect_var = tk.StringVar() + ttk.Entry(row3, textvariable=expect_var).pack(side=tk.LEFT, fill=tk.X, expand=True, padx=6) + ttk.Button(row3, text="浏览", command=lambda: expect_var.set(filedialog.askopenfilename(title="选择期望结果", filetypes=[("Excel","*.xls *.xlsx")]) or expect_var.get())).pack(side=tk.LEFT) + act_row = ttk.Frame(frame) + act_row.pack(fill=tk.X, pady=8) + result_text = scrolledtext.ScrolledText(frame, height=6) + result_text.pack(fill=tk.BOTH, expand=True) + diff_box = ttk.Frame(frame) + diff_box.pack(fill=tk.BOTH, expand=True, pady=6) + diff_tree = ttk.Treeview(diff_box, show='headings', height=12) + diff_tree.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) + diff_scroll_x = ttk.Scrollbar(frame, orient='horizontal', command=diff_tree.xview) + diff_tree.configure(xscrollcommand=diff_scroll_x.set) + diff_scroll_x.pack(fill=tk.X) + suggestions_cache = [] + def _run_validation(): + try: + import numpy as np + from app.services.order_service import OrderService + supplier = sup_var.get() + orig = orig_var.get().strip() + expect = expect_var.get().strip() + if not supplier or not orig or not expect: + messagebox.showwarning("提示","请选择供应商、原始文件与期望结果") + return + service = OrderService() + out_path = service.process_excel(orig, progress_cb=lambda p: None) + result_text.configure(state=tk.NORMAL) + result_text.delete(1.0, tk.END) + result_text.insert(tk.END, f"生成结果: {out_path}\n") + def _read_df(path): + ap = os.path.abspath(path) + if ap.lower().endswith('.xlsx'): + return pd.read_excel(ap, engine='openpyxl') + else: + return pd.read_excel(ap, engine='xlrd') + df_actual = _read_df(out_path) + df_expect = _read_df(expect) + keys = None + if 'barcode' in df_actual.columns and 'barcode' in df_expect.columns: + keys = 'barcode' + elif '条码' in df_actual.columns and '条码' in df_expect.columns: + keys = '条码' + elif 'name' in df_actual.columns and 'name' in df_expect.columns: + keys = 'name' + else: + keys = None + fields = ['barcode','name','specification','quantity','unit','unit_price','total_price'] + for c in ['条码','商品名称','规格','采购量','单位','采购单价','金额','小计']: + if c in df_expect.columns and c not in fields: + fields.append(c) + records = [] + mismatches = 0 + if keys: + a = df_actual.set_index(keys) + e = df_expect.set_index(keys) + idx_union = list(set(a.index.tolist()) | set(e.index.tolist())) + for k in idx_union: + ra = a.loc[k] if k in a.index else None + rexp = e.loc[k] if k in e.index else None + for f in ['barcode','name','specification','quantity','unit','unit_price','total_price']: + va = None + ve = None + if ra is not None and f in a.columns: + va = ra.get(f) + if rexp is not None and f in e.columns: + ve = rexp.get(f) + if va is None and ve is None: + continue + def _norm(v): + try: + return float(v) + except Exception: + return str(v) if v is not None else '' + if _norm(va) != _norm(ve): + records.append([str(k), f, str(ve), str(va)]) + mismatches += 1 + else: + for i in range(min(len(df_actual), len(df_expect))): + for f in ['barcode','name','specification','quantity','unit','unit_price','total_price']: + va = df_actual.iloc[i].get(f) if f in df_actual.columns else None + ve = df_expect.iloc[i].get(f) if f in df_expect.columns else None + if va is None and ve is None: + continue + def _norm(v): + try: + return float(v) + except Exception: + return str(v) if v is not None else '' + if _norm(va) != _norm(ve): + records.append([str(i), f, str(ve), str(va)]) + mismatches += 1 + diff_tree['columns'] = ['key','field','expected','actual'] + for c in ['key','field','expected','actual']: + diff_tree.heading(c, text=c) + diff_tree.column(c, width=160, stretch=True) + for iid in diff_tree.get_children(): + diff_tree.delete(iid) + for row in records: + diff_tree.insert('', tk.END, values=row) + result_text.insert(tk.END, f"差异条目: {mismatches}\n") + result_text.configure(state=tk.DISABLED) + suggestions = [] + try: + unit_vals = df_actual.get('unit') if 'unit' in df_actual.columns else pd.Series([]) + bad_units = unit_vals.astype(str).isin(['箱','件','提','盒']).sum() + if bad_units > 0: + suggestions.append({"type":"normalize_unit","target":"unit","map":{"箱":"件","提":"件","盒":"件"}}) + except Exception: + pass + try: + qty = pd.to_numeric(df_actual.get('quantity'), errors='coerce') if 'quantity' in df_actual.columns else pd.Series([]) + missing_qty = int(qty.isna().sum()) if not qty.empty else 0 + if missing_qty > 0: + cols = df_actual.columns.tolist() + src = None + for cand in ['订单数量','订购量','订货数量']: + if cand in cols: + src = cand + break + if src: + suggestions.append({"type":"split_quantity_unit","source":src}) + except Exception: + pass + try: + spec = df_actual.get('specification') if 'specification' in df_actual.columns else pd.Series([]) + missing_spec = int(spec.isna().sum()) if not spec.empty else 0 + if missing_spec > 0: + suggestions.append({"type":"extract_spec_from_name","source":"name"}) + except Exception: + pass + try: + up = pd.to_numeric(df_actual.get('unit_price'), errors='coerce').fillna(0) if 'unit_price' in df_actual.columns else pd.Series([]) + tp = pd.to_numeric(df_actual.get('total_price'), errors='coerce').fillna(0) if 'total_price' in df_actual.columns else pd.Series([]) + qty = pd.to_numeric(df_actual.get('quantity'), errors='coerce').fillna(np.nan) if 'quantity' in df_actual.columns else pd.Series([]) + if not qty.empty and not up.empty and not tp.empty: + need_compute = ((qty.isna()) & (up > 0) & (tp > 0)).sum() + if need_compute > 0: + suggestions.append({"type":"compute_quantity_from_total"}) + except Exception: + pass + suggestions_cache.clear() + suggestions_cache.extend(suggestions) + if suggestions: + result_text.configure(state=tk.NORMAL) + result_text.insert(tk.END, f"建议: {json.dumps(suggestions, ensure_ascii=False)}\n") + result_text.configure(state=tk.DISABLED) + except Exception as e: + messagebox.showerror("验证失败", str(e)) + def _apply_suggestions(): + try: + supplier = sup_var.get() + if not supplier: + return + if os.path.exists(cfg_path): + with open(cfg_path,'r',encoding='utf-8') as f: + data = json.load(f) + for s in data.get('suppliers',[]): + if s.get('name') == supplier: + rules = s.get('rules', []) + for sug in suggestions_cache: + exists = any(r.get('type') == sug.get('type') for r in rules) + if not exists: + rules.append(sug) + s['rules'] = rules + d = s.get('dictionary') or {} + d.setdefault('unit_synonyms', {"箱":"件","提":"件","盒":"件","瓶":"瓶"}) + d.setdefault('pack_multipliers', {"件":24,"箱":24,"提":12,"盒":10}) + s['dictionary'] = d + break + with open(cfg_path,'w',encoding='utf-8') as f: + json.dump(data,f,ensure_ascii=False,indent=2) + result_text.configure(state=tk.NORMAL) + result_text.insert(tk.END, "已应用建议并保存配置\n") + result_text.configure(state=tk.DISABLED) + else: + messagebox.showwarning("提示","配置文件不存在") + except Exception as e: + messagebox.showerror("应用失败", str(e)) + ttk.Button(act_row, text="运行验证", command=_run_validation).pack(side=tk.LEFT) + ttk.Button(act_row, text="应用建议", command=_apply_suggestions).pack(side=tk.LEFT, padx=6) + ttk.Button(act_row, text="关闭", command=dlg.destroy).pack(side=tk.RIGHT) + except Exception as e: + messagebox.showerror("验证匹配错误", str(e))