仓库测试无限流量卡速度

枫叶
枫叶
管理员
201
文章
0
粉丝
社会感悟评论字数 2028阅读6分45秒阅读模式

WMS 仓库管理主题(wms-2592)项目交接详细说明

一、项目概述

· 主题名称:wms-2592(基于 WordPress 自研仓库管理系统主题)
· 当前状态:已上线使用,功能相对完善,持续优化中
· 核心目标:实现产品管理、出入库记录、库存实时计算、预警、批量导入导出、二维码打印、用户权限、删除审批、库存盘点等功能。

二、文件结构

```
wms-2592/
├── style.css # 前端全部样式(白灰主题、响应式表格、打印样式)
├── functions.php # 核心功能:注册CPT/分类、库存事务、日志、性能缓存、加载inc模块
├── header.php # 导航栏(含用户登录状态)
├── footer.php # 页脚
├── inc/ # 模块目录
│ ├── export-templates.php # 导出模板及字段定义
│ ├── export-csv.php # CSV导出处理(支持日期筛选)
│ ├── settings.php # 仓库设置(登录Logo、访问控制、开放查看记录)
│ ├── user-permissions.php # 用户权限管理(出入库/查看记录/审批权限)
│ ├── import-products.php # 产品导入(含逐字段覆盖预览确认)
│ ├── table-settings.php # 前端表格列自定义(全局+用户个人)
│ ├── delete-requests.php # 删除申请审批(含库存恢复)
│ ├── user-center.php # 用户中心相关钩子(模板加载、保存列设置等)
│ ├── scan-stock.php # 扫码出入库页面注册
│ ├── qr-print-export.php # 二维码批量打印/导出(支持批量名称筛选)
│ ├── admin-product-list.php # 后台产品列表增强(列、筛选、排序)
│ └── inventory-check.php # 库存盘点(导入易飞CSV对比)
└── page-templates/ # 页面模板
├── products.php # 产品列表(搜索、筛选、排序、分页、CSV导出)
├── inbound-records.php # 入库记录(同产品列表功能)
├── outbound-records.php # 出库记录(同产品列表功能)
├── stock-alerts.php # 库存预警(使用缓存低库存ID)
├── warehouse-home.php # 今日汇总(统计卡片+最近记录)
├── product-detail.php # 产品详情(出入库操作、图片上传、二维码打印)
├── user-center.php # 用户中心(个人操作记录、删除申请、自定义列)
└── scan-stock.php # 扫码出入库(产品二维码列表)
```

三、自定义文章类型(CPT)与分类法

CPT

· wh_product:产品(支持标题、编辑器、缩略图,库存等 meta)
· wh_inbound:入库记录(禁止前端手动创建)
· wh_outbound:出库记录(禁止前端手动创建)
· wh_log:操作日志(无菜单,专用页面查看)
· wh_delete_request:删除申请(无菜单,审批用)

分类法

· product_cat:产品分类(层级)
· storage_location:存放位置(标签,用于产品)
· inbound_location:入库位置(标签,用于入库记录)
· outbound_location:出库位置(标签,用于出库记录)

四、关键 Meta 字段

产品 (wh_product)

· _wms_stock:当前库存(整数,默认0)
· _wms_low_stock_threshold:预警阈值(默认5)
· _wms_spec:产品规格(文本)
· _wms_product_code:产品编码(用于盘点匹配)
· _wms_signature:签名图片URL(可选)
· _wms_doc_image:单据图片URL(可选)
· _wms_location2:库位(备用字段)

出入库记录 (wh_inbound/wh_outbound)

· _wms_product_id:关联产品ID
· _wms_quantity:数量(正数)
· _wms_operator:操作人用户名
· _wms_date:操作时间戳
· _wms_balance:操作后结存
· _wms_note:备注
· _wms_customer_note:客户备注(仅入库)
· _wms_customer_note_image:客户备注图片(仅入库)
· _wms_signature / _wms_doc_image:图片
· _wms_location2:库位

操作日志 (wh_log)

· _wms_log_user_id、_wms_log_username
· _wms_log_action、_wms_log_description
· _wms_log_time
· _wms_log_product_id、_wms_log_quantity、_wms_log_balance
· _wms_log_record_id:关联的出入库记录ID(用于删除申请)

五、核心函数索引(重要)

functions.php

· wms_register_post_types() / wms_register_taxonomies()
· wms_get_product_stock() / wms_update_product_stock()
· wms_get_low_stock_threshold()
· wms_add_log():写日志
· wms_handle_stock_forms():处理出入库表单(使用事务和行锁)
· wms_recalculate_product_balances($product_id):重算产品所有记录的结存(删除记录后调用)
· wms_get_low_stock_product_ids():性能优化,使用SQL直接查询低库存产品ID,带缓存
· wms_ensure_stock_meta_exists():确保产品库存meta存在

inc/export-csv.php

· wms_export_csv():导出CSV,支持 inbound、outbound、products 类型,已修复日期筛选

inc/import-products.php

· 导入产品:支持字段级覆盖,预览后勾选确认,已修复缓存问题

inc/delete-requests.php

· wms_process_delete_request():审批删除,已修复库存恢复和结存更新

inc/admin-product-list.php

· 后台产品列表添加列:库存、分类、规格、编码、日期,库存状态筛选

inc/inventory-check.php

· 库存盘点:上传易飞CSV,对比系统库存,勾选调整

六、重要设计要点

1. 并发安全

· 在 wms_handle_stock_forms() 中,使用 START TRANSACTION + SELECT ... FOR UPDATE 锁定产品库存行,防止超卖。
· 所有库存更新前检查 _wms_stock 行是否存在,确保新产品初始化。

2. 删除记录后的数据一致性

· 永久删除(before_delete_post)或审批删除(wms_process_delete_request)后,调用 wms_recalculate_product_balances($product_id) 重新计算所有记录的结存,并更新产品当前库存。
· 该函数按时间顺序累加/扣减,确保结存正确。

3. 二维码保持不变

· 绝对不能修改 wms_get_qr_image_url() 函数中的 $qr_data 生成逻辑。
· 二维码内容 = product-detail 页面链接 + ?product_id=产品ID
· 已打印的二维码继续有效。

4. 性能优化

· wms_get_low_stock_product_ids() 使用SQL直接比较两个meta字段,避免循环所有产品。
· 产品库存和阈值有对象缓存(wp_cache)。
· 导入时使用 wp_suspend_cache_invalidation(true) + 定期 wp_cache_flush(),提高大批量导入速度。

5. CSV导出

· 导出链接携带当前表格列(fields 参数),CSV列与页面显示一致。
· 支持日期范围、分类、排序等筛选条件。

6. 用户权限

· 后台仅管理员可访问(wms_restrict_admin_access)。
· 前端用户权限通过 user_meta 控制:wms_permissions(数组,可能包含 inbound/outbound)、wms_approve_permission、wms_view_inbound_permission、wms_view_outbound_permission。

七、已实现但可能需优化的点

1. 分类筛选性能:在出入库记录页面,按产品分类筛选时先用 get_posts 获取该分类下所有产品ID,再用于 meta_query,产品数量大时可能较慢。可考虑使用SQL JOIN。
2. 二维码导出PDF:仍是HTML预览方式,用户通过浏览器打印另存为PDF。没有真正的PDF生成库。
3. 用户中心“删除记录”标签:用户只能申请删除,无法直接查看自己已删除的记录(回收站中的记录)。未实现。
4. 后台产品列表库存筛选:已使用 posts_where 钩子实现低库存/正常/零库存筛选,可测试是否正常。
5. 移动端导航:导航栏在小屏幕可能拥挤,可添加汉堡菜单。
6. 数据备份:无自动备份机制,建议定期手动备份数据库和文件。

八、下一步工作建议(按优先级)

1. 继续修复用户反馈的具体问题(如导出、分页、筛选等)。
2. 实现用户中心“删除的记录”标签,展示已删除记录(含审批信息)。
3. 优化分类筛选性能(使用自定义SQL或缓存产品分类关系)。
4. 集成真正的PDF生成库(如 Dompdf / TCPDF)用于二维码PDF导出。
5. 增加报表统计图表(如每日出入库趋势)。
6. 完善移动端体验。

九、对接注意事项

· 请务必保留二维码生成逻辑不变。
· 修改任何文件后,建议测试导入、导出、出入库、删除审批、盘点等关键流程。
· 注意缓存清理:更新产品库存后需清除 product_stock_ 和 wms_low_stock_ids 缓存。
· 所有后台新增子菜单均挂在 edit.php?post_type=wh_product 下。

十、当前未完成但用户曾提及的需求

· 用户中心增加“删除的记录”标签,可查看自己删除的记录及审批状态。
· 库存盘点功能已添加,但用户可能未看到菜单(需确认 functions.php 已加载 inc/inventory-check.php)。
· 后台产品列表已增强,但筛选功能可能需进一步调整。

---

以上是完整的项目交接文档,新窗口对话时,请直接粘贴此文档,并告知要处理的具体问题,我将立即继续协助。

文章末尾固定信息

继续阅读
 最后更新:2026-9-4
枫叶
  • 本文由 枫叶 发表于2017年6月27日 00:37:40
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
这就是人性 社会感悟

这就是人性

现实告诉你 没钱连你最亲的人 都会瞧不起你 虚伪,换不来真心 欺骗,得不到尊重 生活告诉你 有什么别有病 人和人之间,尽量将心比心吧, 谁对你好,你就对谁好, 谁冷落你,你就远离谁, 凡事换个角度,做人换个位置, 感情告诉你 不要以为你想的人 同样也会想你 不要以为 你放不下的人 同样会放不下你 鱼...
一位经销商老板挖个鱼塘,结果所有人都惊呆了! 社会感悟

一位经销商老板挖个鱼塘,结果所有人都惊呆了!

前几天一鱼塘开张, 钓鱼费用是100大洋。 老板说没钓到鱼就送一件家具。 于是很多人都去了, 回来时每人拎着一个小椅子。 后来,鱼塘看门老大爷说, 老板本来就是个做家具的, 这鱼塘就没有鱼。 这个方法叫做“去库存”! 过了几天, 另一个鱼塘也开张了。 钓鱼免费, 但钓上的鱼要15元一斤买走。 结果还...
富翁和农民说了一番话,太精辟了! 社会感悟

富翁和农民说了一番话,太精辟了!

如果努力就可以获得成功, 那么满大街打工者都是成功的人。 想成功先要选对方向, 握对工具, 在正确的时间做正确的事, 再加上努力才会成功! 选择比努力重要, 眼光比能力重要, 突破比苦干重要, 改变比勤奋重要, 态度比专业重要! 马云说:“人都是逼出来的”。 每个人都是有潜能的, 生于安乐,死于忧患...
匿名

发表评论

匿名网友

拖动滑块以完成验证