DEPLOYMENT_GUIDE.md 6.56 KB

库存过滤修复 - 部署指南

📦 编译完成信息

✅ 后端编译完成

编译时间: 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 (推荐快速部署)

# 停止 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: 完整重新发布

cd /Users/hexiaodong/Desktop/git/erp2025/Antis.Erp.Plat/netcore

# 发布应用
dotnet publish -c Release -o /path/to/publish/

# 替换服务
# 停止服务 → 备份原目录 → 复制新版本 → 启动服务

步骤2️⃣: 部署前端应用 (3000端口)

方式A: 复制到 Web 服务器目录

# 方式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 容器

# 为前端构建新镜像
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参数

// 修改前:缺少 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)

    • 添加门店过滤条件

修改内容:

// 修改前:
var stockQuery = await _db.Queryable<WtSerialNumberEntity>()
    .Where(s => productIds.Contains(s.Spbh) && s.Status == 0)
    .GroupBy(s => s.Spbh)
    .Select(s => new { ... })
    .ToListAsync();

// 修改后:
var stockQuery = await _db.Queryable<WtSerialNumberEntity>()
    .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. 启动服务

    # 启动后端 API (2015端口)
    # 启动前端服务 (3000端口)
    
  2. 打开浏览器

    http://localhost:3000  或  http://你的服务器:3000
    
  3. 测试收银台功能

    • 登录景枫店收银台
    • 搜索一个商品(使用关键词)
    • 查看显示的库存数字
  4. 验证库存显示

    • 修复前: 显示 39 件(全公司库存)❌
    • 修复后: 显示 10 件(景枫店库存)✅

🔍 调试信息

后端日志检查

编译后的 DLL 包含调试输出,可以查看日志:

=== GetList方法开始执行 ===
输入参数: spmc=..., spbm=..., xsmd=...
门店ID: [你输入的门店ID]
开始查询库存,商品数量: ...

浏览器控制台

打开浏览器开发者工具 (F12),查看:

// 应该看到 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 服务已重启
  • [ ] 前端文件已复制
  • [ ] 浏览器缓存已清除
  • [ ] 前端服务已启动
  • [ ] 库存显示正确(显示门店库存,不是全公司库存)
  • [ ] 其他功能正常运行