# 库存过滤修复 - 部署指南 ## 📦 编译完成信息 ### ✅ 后端编译完成 **编译时间**: 2024-10-29 01:43 (约7秒) **编译模式**: Release (.NET 6.0) **编译状态**: 成功 (0 错误, 37 个警告) **输出位置**: ``` /Users/hexiaodong/Desktop/git/erp2025/Antis.Erp.Plat/netcore/src/Application/NCC.API/bin/Release/net6.0/ ``` **关键 DLL 文件**: - `NCC.API.dll` - 主应用程序 - `NCC.API.Core.dll` - 核心库 - `NCC.Extend.dll` - 扩展模块 ✨ **包含库存过滤修复** --- ### ✅ 前端编译完成 **编译时间**: 2024-10-29 01:43 **编译模式**: production (dotNetTest) **编译状态**: 成功 **输出位置**: ``` /Users/hexiaodong/Desktop/git/erp2025/Antis.Erp.Plat/antis-ncc-admin/dist/ ``` **输出内容**: - `index.html` - 主页面 ✨ **包含库存过滤修复** - `static/` - 静态资源 (JS, CSS) - `cdn/` - CDN 资源 (Monaco Editor, ECharts) --- ## 🚀 部署步骤 ### 步骤1️⃣: 部署后端服务 (2015端口) #### 方式A: 直接替换 DLL (推荐快速部署) ```bash # 停止 API 服务 # (根据你的部署方式停止 NCC.API) # 备份原文件 cp -r /path/to/api/bin /path/to/api/bin.bak # 复制新编译的文件 cp -r /Users/hexiaodong/Desktop/git/erp2025/Antis.Erp.Plat/netcore/src/Application/NCC.API/bin/Release/net6.0/* \ /path/to/api/bin/ # 重启 API 服务 # (根据你的部署方式启动 NCC.API) ``` #### 方式B: 完整重新发布 ```bash cd /Users/hexiaodong/Desktop/git/erp2025/Antis.Erp.Plat/netcore # 发布应用 dotnet publish -c Release -o /path/to/publish/ # 替换服务 # 停止服务 → 备份原目录 → 复制新版本 → 启动服务 ``` --- ### 步骤2️⃣: 部署前端应用 (3000端口) #### 方式A: 复制到 Web 服务器目录 ```bash # 方式1: 如果是 Nginx/Apache 提供静态文件 cp -r /Users/hexiaodong/Desktop/git/erp2025/Antis.Erp.Plat/antis-ncc-admin/dist/* \ /var/www/html/admin/ # 方式2: 如果使用 Node.js 开发服务器 cp -r /Users/hexiaodong/Desktop/git/erp2025/Antis.Erp.Plat/antis-ncc-admin/dist/* \ /path/to/frontend/server/public/ ``` #### 方式B: 如果有 Docker 容器 ```bash # 为前端构建新镜像 docker build -f antis-ncc-admin/Dockerfile -t ncc-admin:latest . # 重启容器 docker-compose down docker-compose up -d ``` --- ## ✨ 修改内容总结 ### 前端修改 (index.html) **文件**: `antis-ncc-admin/dist/index.html` 修复:搜索商品时添加门店ID参数 ```javascript // 修改前:缺少 xsmd 参数 params: { keyword: that.keyword, } // 修改后:添加了 xsmd 参数 params: { keyword: that.keyword, xsmd: this.selectedStore.id || mdId // ✨ 新增 } ``` ### 后端修改 (NCC.Extend.dll) **文件**: `NCC.Extend/WtSpService.cs` 修复位置: 1. **GetList 方法**(行154) - 添加门店过滤条件 2. **GetListByKeyword 方法**(行291) - 添加门店过滤条件 修改内容: ```csharp // 修改前: var stockQuery = await _db.Queryable() .Where(s => productIds.Contains(s.Spbh) && s.Status == 0) .GroupBy(s => s.Spbh) .Select(s => new { ... }) .ToListAsync(); // 修改后: var stockQuery = await _db.Queryable() .Where(s => productIds.Contains(s.Spbh) && s.Status == 0) .WhereIF(!string.IsNullOrEmpty(input.xsmd), s => s.InWarehouse == input.xsmd) // ✨ 新增 .GroupBy(s => s.Spbh) .Select(s => new { ... }) .ToListAsync(); ``` --- ## 🧪 验证部署 部署完成后,请按以下步骤验证: ### 验证步骤 1. **启动服务** ```bash # 启动后端 API (2015端口) # 启动前端服务 (3000端口) ``` 2. **打开浏览器** ``` http://localhost:3000 或 http://你的服务器:3000 ``` 3. **测试收银台功能** - 登录景枫店收银台 - 搜索一个商品(使用关键词) - 查看显示的库存数字 4. **验证库存显示** - **修复前**: 显示 39 件(全公司库存)❌ - **修复后**: 显示 10 件(景枫店库存)✅ --- ## 🔍 调试信息 ### 后端日志检查 编译后的 DLL 包含调试输出,可以查看日志: ``` === GetList方法开始执行 === 输入参数: spmc=..., spbm=..., xsmd=... 门店ID: [你输入的门店ID] 开始查询库存,商品数量: ... ``` ### 浏览器控制台 打开浏览器开发者工具 (F12),查看: ```javascript // 应该看到 API 请求包含 xsmd 参数 // 示例: /api/Extend/wtsp/GetListByKeyword?keyword=商品名&xsmd=景枫店ID ``` --- ## ⚠️ 常见问题 ### Q1: 部署后库存仍然显示不正确 **A**: 1. 确认后端 API 已重启(新 DLL 已加载) 2. 确认前端已更新(浏览器清除缓存 Ctrl+Shift+Delete) 3. 检查网络请求中是否包含 `xsmd` 参数 ### Q2: 编译失败怎么办? **A**: 1. 确保 .NET 6.0 SDK 已安装 2. 清理编译输出:`dotnet clean` 3. 恢复依赖:`dotnet restore` 4. 重新编译:`dotnet build -c Release` ### Q3: 前端构建失败怎么办? **A**: 1. 清除依赖:`rm -rf node_modules` 2. 重新安装:`npm install` 3. 重新构建:`npm run build:dotNetTest` --- ## 📌 文件清单 ### 后端编译输出 ``` /Users/hexiaodong/Desktop/git/erp2025/Antis.Erp.Plat/netcore/src/Application/NCC.API/bin/Release/net6.0/ ├── NCC.API.dll ← 主应用程序 ├── NCC.API.Core.dll ← 核心库 ├── NCC.Extend.dll ← ✨ 扩展模块(包含修复) ├── appsettings.json ← 应用配置 ├── web.config ← IIS 配置 └── [其他依赖 DLL] ``` ### 前端编译输出 ``` /Users/hexiaodong/Desktop/git/erp2025/Antis.Erp.Plat/antis-ncc-admin/dist/ ├── index.html ← ✨ 主页面(包含修复) ├── static/ │ ├── js/ ← JavaScript 文件 │ ├── css/ ← 样式文件 │ └── img/ ← 图片资源 ├── cdn/ ← CDN 资源 │ ├── echarts/ ← ECharts 库 │ └── monaco-editor/ ← 代码编辑器 └── [worker 文件] ``` --- ## 📞 需要帮助? 如果部署过程中遇到问题: 1. 检查日志文件 2. 查看浏览器控制台错误 3. 对比本指南的验证步骤 4. 参考详细的技术文档:`INVENTORY_FILTER_FIX.md` --- ## ✅ 部署完成检查清单 - [ ] 后端 DLL 已复制 - [ ] API 服务已重启 - [ ] 前端文件已复制 - [ ] 浏览器缓存已清除 - [ ] 前端服务已启动 - [ ] 库存显示正确(显示门店库存,不是全公司库存) - [ ] 其他功能正常运行