Files
f9-web-ai-test/工作进度/工作进度-18.md
T
yanpeng200212 1f1b184411 新增工资/仓储/生产日报等模块,移除旧考勤模块
- 新增 PayRoll(工资)、Wms(仓储)、Prod(车速/缫丝/考勤/丝片检测/丝片台账/纤检日报/质量日报) 模块
- 新增对应 Domain 实体、Application DTO/Service、Api Controller 与前端页面
- 移除旧 Attendance 考勤模块(Controller/Service/Entity/DTO 及 5 个前端页面),由 Prod/Kaoqin 取代
- 调整路由、仪表盘、Lsjl 流丝记录实体与服务
- 更新业务种子数据与 DbSeeder
- 补充工作进度文档 14-27
2026-10-27 09:09:57 +08:00

8.3 KiB
Raw Blame History

工作进度-18:仓储 · 生丝 模块操作逻辑对齐 F9

协作规则(长期生效):每次对话结尾都要生成工作进度。 即在每轮对话结束前,把本轮完成的内容追加为 工作进度/工作进度-N.md,并在文档中保留本条规则,方便下一轮接续。

一、任务目标

新系统(.NET 8 + Vue 3)的生丝模块功能已具备,但页面操作逻辑与老系统不一致。 目标:以老系统 D:\AntaiProject - 副本\trunk\WinClient\F9.Business.WMS\SS 为基准,把生丝模块的操作逻辑改成与老系统一模一样。

对齐范围(本轮确认):

  • 生丝入库 / 出库的批次驱动录入
  • 生丝批次报检的行内操作(过磅 / 包件 / 公量 / 质检 / 纤度检验)
  • 出入库主从联动
  • 财务审核:本轮不做,用户选择后续单独处理

二、核心差异(新系统改造前的问题)

环节 老系统做法 新系统改造前
入库明细 点「选择生丝批次」→ 勾选待入库批次,自动带出物资 / 批次号 / 批数 / 包件数 / 毛皮净重 手动「添加明细」→ 选物资 + 手填批次号 + 手填重量
出库明细 点「选择批次 + 包件」→ 勾选批次下未出库包件 手动录入,批次与包件脱节
批次状态 批次 / 包件级跟踪出库(Ck_Isck、Ck_Baoshu 等) 仅按批次号字符串整体置"已出库",包件无跟踪
批号格式 正品 10 位数字 / 其他 31EE-7位 无校验
主从联动 主表点行 → 下方明细联动 无,明细只在编辑弹窗
批次报检操作 过磅 / 包件 / 公量 / 质检 / 纤度检验 5 个行内操作 只有编辑、删除
规格 下拉选择(生丝规格) 手填文本框
生产车间 取职责类型为「前缫」的车间 取全部部门,未筛选

三、数据模型变更

新增字段(Domain/Entities/Wms/Wms.cs)

实体 新增字段 对应 F9
WmsPici RkItemId、RkDate、CkLastDate、CkBaoshu、CkJingzhong、KcBaoshu Rk_Item_Id、Rk_Date、CK_LastDate、Ck_Baoshu、Ck_Jingzhong、Kc_Baoshu
WmsPiciBaojian CkIsck、CkItemId、CkDate、CkJingzhong 包件级出库标记
WmsRukuDetail PiciIds SS_Rk_Item.PiciIds
WmsChukuDetail PcAndBjIds SS_Ck_Item.PcAndBjIds

新增实体

实体 表 说明
WmsPiciChuku WmsPiciChukus 批次出库记录(回滚时按此重算库存状态)
WmsPiciQc WmsPiciQcs 批次质检
WmsPiciQcXdjy WmsPiciQcXdjys 批次纤度检验

建表 / 加列(DbSeeder.cs)

  • 新表:由 SyncStructure 反射扫描 BaseEntity 子类自动建立
  • 旧表加列:EnsureColumn 兜底(幂等,列已存在则忽略)

四、后端改动

1. 状态流转(WmsService.cs,对齐 F9 CQRS)

  • 入库:UpdatePiciRukuAsync 按 PiciIds 置批次"已入库",写 RkItemId / RkDate,KcBaoshu = Baoshu
  • 入库回滚:RollbackPiciRukuAsync,若批次已出库则抛错禁止修改 / 删除
  • 出库:UpdatePiciChukuAsync 按 PcAndBjIds(JSON)标记包件 CkIsck,写 WmsPiciChuku;批次按出库包件数流转「部分出库 / 已出库」
  • 出库回滚:RollbackPiciChukuAsync 撤销包件标记、删除出库记录、按剩余记录重算批次状态
  • 校验:待入库不可出库、已全部出库不可再出库

注意:PcAndBjIds 前端序列化为 camelCase(piciId / piciBaojianIds), 反序列化时必须带 PropertyNameCaseInsensitive = true,否则字段匹配不上。

2. 批号格式校验(SavePiciAsync)

对齐 F9 Page_PiciBaojian_Edit:

  • 正品(CodeType = 0):^\d{10}$
  • 其他(CodeType = 1):^31EE-\d{7}$

3. 新增接口(WmsController.cs)

方法 路由 说明
GET /api/wms/pici/chuku-select 出库选批次(含未出库包件),支持按物资过滤、排除已选批次
GET /api/wms/pici/qc/{piciId} 读取批次质检
POST /api/wms/pici/qc 保存批次质检
GET /api/wms/pici/xdjy/{piciId} 读取纤度检验
POST /api/wms/pici/xdjy 保存纤度检验

4. 入库主表补"包数"

WmsRukuListDto 新增 BaojianNum,由明细 BaojianNum 汇总(出库主表老系统无包数列,故未加)。

五、前端改动

1. 新建 PiciSelectDialog.vue

生丝批次选择弹窗,两种模式复用:

  • mode="ruku":拉待入库批次(GET /wms/pici?kcStatus=1),勾选批次
  • mode="chuku":拉批次 + 包件(GET /wms/pici/chuku-select),展开行勾选包件, 批次勾选 ↔ 包件勾选双向联动,已出库包件禁用

2. RukuPanel.vue(生丝入库)

  • 明细工具栏:生丝改为「选择生丝批次」,不再自动加空白行
  • 入库类型:仅显示「生产(0) / 退货(1)」(对齐 F9"其他暂未开放")
  • 按物资分组生成明细,回填 piciIds / piciCodes / 批数 / 包件数 / 毛皮净重
  • 物资、批次号、包件数改为只读(由批次带出)
  • 主表:新增「包数」列;新增展开行主从联动
  • 保存校验:生丝明细必须有 piciIds

3. ChukuPanel.vue(生丝出库)

  • 明细工具栏:生丝改为「选择批次包件」
  • 出库类型:仅显示「销售(1)」
  • 往来单位(客户)改标签为「往来单位」并必选
  • 明细回填 pcAndBjIds(JSON [{piciId, piciBaojianIds}])
  • 主表:展开行主从联动

4. SsPici.vue(批次报检)

  • 行内操作补齐:过磅 / 包件 / 公量 / 质检 / 纤度检验
    • 过磅:仅「待入库」状态可用(否则提示并阻止)
    • 包件、公量:复用批次编辑弹窗(编辑包件毛皮重 / 回潮率)
    • 质检:新增质检弹窗(对接 /wms/pici/qc)
    • 纤度检验:新增明细表格弹窗(对接 /wms/pici/xdjy)
  • 规格:由手填 el-input 改为 el-select,数据来自 GET /shengsiguige/all (与 prod/lsjl 落丝记录取数口径一致)
  • 生产车间:由"全部部门"改为仅取职责类型为「前缫」的车间
    import { depOptions, DUTY } from '../../../utils/departments';
    const opts = await depOptions({ duty: [DUTY.前缫] }, { flat: true });
    deptOptions.value = opts.map((o) => ({ id: Number(o.key), name: o.value, ...(o.raw || {}) }));
    
    列表列名同步改为「生产车间」
  • 保存校验补齐(对齐 F9 AddValidateRuls):日期、规格、品名(生丝规格)、批号、基地外购

变量名注意:组件内部门列表变量已改名 deptOptions,避免与工具函数 depOptions 重名冲突。

六、涉及文件

后端

  • backend/F9WebAiTest.Domain/Entities/Wms/Wms.cs
  • backend/F9WebAiTest.Application/Dtos/Wms/WmsDtos.cs
  • backend/F9WebAiTest.Application/Services/Wms/WmsService.cs
  • backend/F9WebAiTest.Api/Controllers/Wms/WmsController.cs
  • backend/F9WebAiTest.Infrastructure/Data/DbSeeder.cs

前端

  • web/src/views/wms/components/PiciSelectDialog.vue(新建)
  • web/src/views/wms/components/RukuPanel.vue
  • web/src/views/wms/components/ChukuPanel.vue
  • web/src/views/wms/components/SsPici.vue

七、验证情况

  • 后端 F9WebAiTest.Application 编译通过:0 错误
  • 解决方案整体编译的报错均为 MSB3021 / MSB3027(后端 API 进程正在运行,DLL 被锁定无法复制),非代码问题
  • 前端 lint:0 错误

八、待办 / 遗留

  1. 财务审核 / 反审核:老系统生丝出入库均有「财务审核状态」列与批量审核 / 反审核按钮, 新系统尚未实现(本轮用户选择暂缓,后续单独处理)
  2. 生丝出库「选择调拨通知单」自动填充明细:老系统有(Page_Dbtz_Select),新系统未实现
  3. 老系统批次报检的「混装」功能在 F9 中已被注释,故未移植

九、下次接续提示

  • 重启后端服务后,新表 / 新列才会在启动时建立
  • 继续做财务审核时,需新增通用审核记录与生丝出入库审核接口,并在两个列表页加「财务审核状态」列 + 批量审核 / 反审核按钮
  • 每轮对话结尾记得生成本工作进度文档