- 新增 PayRoll(工资)、Wms(仓储)、Prod(车速/缫丝/考勤/丝片检测/丝片台账/纤检日报/质量日报) 模块 - 新增对应 Domain 实体、Application DTO/Service、Api Controller 与前端页面 - 移除旧 Attendance 考勤模块(Controller/Service/Entity/DTO 及 5 个前端页面),由 Prod/Kaoqin 取代 - 调整路由、仪表盘、Lsjl 流丝记录实体与服务 - 更新业务种子数据与 DbSeeder - 补充工作进度文档 14-27
8.3 KiB
8.3 KiB
工作进度-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.csbackend/F9WebAiTest.Application/Dtos/Wms/WmsDtos.csbackend/F9WebAiTest.Application/Services/Wms/WmsService.csbackend/F9WebAiTest.Api/Controllers/Wms/WmsController.csbackend/F9WebAiTest.Infrastructure/Data/DbSeeder.cs
前端
web/src/views/wms/components/PiciSelectDialog.vue(新建)web/src/views/wms/components/RukuPanel.vueweb/src/views/wms/components/ChukuPanel.vueweb/src/views/wms/components/SsPici.vue
七、验证情况
- 后端
F9WebAiTest.Application编译通过:0 错误 - 解决方案整体编译的报错均为
MSB3021 / MSB3027(后端 API 进程正在运行,DLL 被锁定无法复制),非代码问题 - 前端 lint:0 错误
八、待办 / 遗留
- 财务审核 / 反审核:老系统生丝出入库均有「财务审核状态」列与批量审核 / 反审核按钮, 新系统尚未实现(本轮用户选择暂缓,后续单独处理)
- 生丝出库「选择调拨通知单」自动填充明细:老系统有(
Page_Dbtz_Select),新系统未实现 - 老系统批次报检的「混装」功能在 F9 中已被注释,故未移植
九、下次接续提示
- 重启后端服务后,新表 / 新列才会在启动时建立
- 继续做财务审核时,需新增通用审核记录与生丝出入库审核接口,并在两个列表页加「财务审核状态」列 + 批量审核 / 反审核按钮
- 每轮对话结尾记得生成本工作进度文档