新增工资/仓储/生产日报等模块,移除旧考勤模块
- 新增 PayRoll(工资)、Wms(仓储)、Prod(车速/缫丝/考勤/丝片检测/丝片台账/纤检日报/质量日报) 模块 - 新增对应 Domain 实体、Application DTO/Service、Api Controller 与前端页面 - 移除旧 Attendance 考勤模块(Controller/Service/Entity/DTO 及 5 个前端页面),由 Prod/Kaoqin 取代 - 调整路由、仪表盘、Lsjl 流丝记录实体与服务 - 更新业务种子数据与 DbSeeder - 补充工作进度文档 14-27
This commit is contained in:
+170
@@ -0,0 +1,170 @@
|
||||
# 工作进度-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` 落丝记录取数口径一致)
|
||||
- **生产车间**:由"全部部门"改为**仅取职责类型为「前缫」的车间**
|
||||
```js
|
||||
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 中已被注释,故未移植
|
||||
|
||||
## 九、下次接续提示
|
||||
|
||||
- 重启后端服务后,新表 / 新列才会在启动时建立
|
||||
- 继续做财务审核时,需新增通用审核记录与生丝出入库审核接口,并在两个列表页加「财务审核状态」列 + 批量审核 / 反审核按钮
|
||||
- **每轮对话结尾记得生成本工作进度文档**
|
||||
Reference in New Issue
Block a user