新增工资/仓储/生产日报等模块,移除旧考勤模块
- 新增 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:
+162
@@ -0,0 +1,162 @@
|
||||
# 工作进度-15:生产-后缫完善(秤大丝 / 公量纤度 / 丝片检查 / 丝片台帐)
|
||||
|
||||
> 时间:2026-10-24(承接工作进度-14)
|
||||
> 需求:把 `D:\AntaiProject - 副本` 生产-后缫(`WinClient\F9.Business.Prod\HS\`)尚未落地的模块移植进本系统。
|
||||
> 参考实现:`WinClient\F9.Business.Prod\HS\`(CDS / GLXD / SPJC / SPTZ)、
|
||||
> `Application\CQRS\Business\PROD\HS\`(Cds_SaveCommand / Cds_Lsjl_CalZhibiaoCommand / Glxd_Update / Spjc_*/Sptz_*)、
|
||||
> `Domain\Entities\Business\PROD\HS\`(Cds_Chetai / Cds_Lsjl / Glxd / Spjc / Sptz)。
|
||||
> 移植后本系统「生产-后缫」子菜单由 2 项补齐到 6 项。
|
||||
|
||||
---
|
||||
|
||||
## 一、功能设计
|
||||
|
||||
```
|
||||
生产-后缫
|
||||
├── 纤度检验 (已有)
|
||||
├── 黑板检验 (已有)
|
||||
├── 秤大丝 /prod/houxian/cds 本次新增
|
||||
├── 公量纤度 /prod/houxian/glxd 本次新增
|
||||
├── 丝片检查 /prod/houxian/spjc 本次新增
|
||||
└── 丝片台帐 /prod/houxian/sptz 本次新增
|
||||
```
|
||||
|
||||
| F9 行为 | 本系统实现 |
|
||||
|---|---|
|
||||
| **秤大丝**:列表按「日期 + 车间」列出落丝记录,行 → 弹窗「秤大丝」,按车台录入丝量1~4 | `GET /api/prod/cds/list`、`GET /{lsjlId}`、`POST /save`、`DELETE /{lsjlId}` |
|
||||
| 汇总 = Σ个数 / Σ丝量,并算茧量、缫折、台产(`Cds_Lsjl_CalZhibiaoCommand`) | 服务端保存时重算,列表直接展示 |
|
||||
| **公量纤度**:按「日期 + 车间」整日批量录入,左侧带出纤度检验的平均纤度 | `GET /api/prod/glxd/list`、`POST /save`(整日提交) |
|
||||
| **丝片检查**:按「日期 + 车间 + 工艺庄口 + 规格」记录前缫 7 项 / 后缫 12 项疵点片数 | `GET /api/prod/spjc/list`、`GET /{id}`、`POST /save`、`DELETE /{id}` |
|
||||
| 前缫合计 / 后缫合计自动求和(`Page_Spjc_Edit` 的 getter) | 前端即时重算 + 服务端落库前再算一次 |
|
||||
| **丝片台帐**:按账期月份列出每日台帐;新增时上一日 / 上存取上一本台账 | `GET /api/prod/sptz/list?dateFrom=&dateTo=`、`GET /defaults?date=`、`POST /save`、`DELETE /{id}` |
|
||||
| 台帐派生值:上日遗留/今日新增 = 上存 − 浸丝;今存 = 下丝 + 上日遗留/今日新增 | 前端即时算 + 服务端保存时重算(同 F9 `CalSryl_Jrxz` / `CalJc`) |
|
||||
| 台帐「整理片数」可按当日丝片检查汇总取数(F9 弹窗里的取数按钮) | `GET /defaults` 一并返回 `zlTichu` / `zlZhengpin` |
|
||||
| 新增台帐时若已存在更晚日期的台帐 → 拦截 | 同上(`LatestDate`),前端也做二次校验 |
|
||||
|
||||
**计算口径**:
|
||||
|
||||
```
|
||||
秤大丝:车台.个数 = 丝量1~4 中 >0 的个数;车台.小计丝量 = Σ丝量
|
||||
汇总.已秤数 = Σ个数;汇总.已秤丝量 = Σ小计丝量(g)
|
||||
应秤数 = 车台数 × 4 ×(半车 0.5 / 整车 1);待秤数 = 应秤数 − 已秤数
|
||||
茧量 = 落丝桶数 × 每桶茧量(g)
|
||||
缫折 = 茧量 ÷ 丝量 × 100(≤100 视为异常,不落指标,与 F9 一致)
|
||||
台产 = 丝量 ÷ 落丝时长 ÷ 车台数
|
||||
丝片台帐:上日遗留/今日新增 = 上存 − 浸丝;今存 = 下丝 + 上日遗留/今日新增
|
||||
整理剔除 = Σ当日丝片检查前缫合计
|
||||
整理正品 = Σ(总片数 + 学工片数) − 剔除
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 二、后端
|
||||
|
||||
### 2.1 实体(`Domain/Entities/Prod/`)
|
||||
|
||||
| 类 | 文件 | 表 | 主要字段 |
|
||||
|---|---|---|---|
|
||||
| `CdsLsjl` | `Cds.cs` | `CdsLsjls` | LsjlId(唯一)、Num、Siliang、Jianliang、Saozhe、Taichan |
|
||||
| `CdsChetai` | `Cds.cs` | `CdsChetais` | LsjlId + Chetaihao(唯一)、Sl1~Sl4、Num、Siliang |
|
||||
| `Glxd` | `Glxd.cs` | `Glxds` | LsjlId(唯一)、Gongliangxiandu |
|
||||
| `Spjc` | `Spjc.cs` | `Spjcs` | Date + DeptId + GyzkId + Guige(唯一)、总/学工片数、Qs×7 + QsHeji、Hs×12 + HsHeji、Memo |
|
||||
| `Sptz` | `Sptz.cs` | `Sptzs` | Date(唯一)、DateLast、Js×5、Fs/Bs 片数、Zl 正品/剔除、Memo |
|
||||
| `LsjlRecord` | `LsjlRecord.cs` | `LsjlRecords` | **新增**:Tongshu(落丝桶数)、Meitongjianliang(每桶茧量 g) |
|
||||
|
||||
> 均继承 `BaseEntity`(自增主键 + 软删除),建表沿用 `DbSeeder.SyncStructure`;
|
||||
> `LsjlRecords` 是存量表,`SyncStructure` 不给旧表加列,故在 `SyncStructure` 末尾追加两条
|
||||
> `EnsureColumn(fsql, "LsjlRecords", "Tongshu"/"Meitongjianliang", "INTEGER NOT NULL DEFAULT 0")`。
|
||||
|
||||
### 2.2 服务与接口(路由统一到 `api/prod/*`)
|
||||
|
||||
```
|
||||
GET /api/prod/cds/list?pageIndex=&pageSize=&date=&deptId= 秤大丝列表(落丝记录 + 秤丝汇总)
|
||||
GET /api/prod/cds/{lsjlId} 称重弹窗(首次按车台范围初始化空行)
|
||||
POST /api/prod/cds/save 车台明细先删后建 + 汇总指标重算
|
||||
DELETE /api/prod/cds/{lsjlId} 清除称重数据(汇总 + 明细,F9 的 Cds_Lsjl_Delete)
|
||||
|
||||
GET /api/prod/glxd/list?date=&deptId= 公量纤度列表(含纤度检验平均纤度)
|
||||
POST /api/prod/glxd/save 按日期 + 车间整日批量 upsert
|
||||
|
||||
GET /api/prod/spjc/list?pageIndex=&pageSize=&date=&deptId=&like=
|
||||
GET /api/prod/spjc/{id} 修改回填
|
||||
POST /api/prod/spjc/save 合计服务端重算
|
||||
DELETE /api/prod/spjc/{id} 物理删除(业务键带唯一索引)
|
||||
|
||||
GET /api/prod/sptz/list?dateFrom=&dateTo=&pageIndex=&pageSize= 账期区间查询
|
||||
GET /api/prod/sptz/{id} 修改回填
|
||||
GET /api/prod/sptz/defaults?date= 上一本台账 + 上存 + 丝片检查取数
|
||||
POST /api/prod/sptz/save 派生值服务端重算
|
||||
DELETE /api/prod/sptz/{id} 物理删除(日期唯一)
|
||||
```
|
||||
|
||||
要点:
|
||||
- 唯一性校验在前:丝片检查按「日期+车间+庄口+规格」、丝片台帐按「日期」查重(修改时排除自身),命中返回 400;
|
||||
- 删除走 `HardDelete`(与煮茧日报同一策略),避免「删除后重建」撞唯一索引;
|
||||
- 秤大丝「车台明细先删后建」,保证移除的行真正删除。
|
||||
|
||||
### 2.3 菜单
|
||||
|
||||
`DbSeeder.SeedProdMenus` 生产-后缫子菜单扩到 6 项,并做排序归一;`BusinessSeedData.SeedMenus` 同步追加同名菜单,避免两套种子不一致:
|
||||
|
||||
| 顺序 | 菜单 | 路径 | 组件 | 权限标识 |
|
||||
|---|---|---|---|---|
|
||||
| 1 | 纤度检验 | /prod/houxian/xdjy | prod/xdjy/index | prod:xdjy:list |
|
||||
| 2 | 黑板检验 | /prod/houxian/hbjy | prod/hbjy/index | prod:hbjy:list |
|
||||
| 3 | 秤大丝 | /prod/houxian/cds | prod/cds/index | prod:cds:list |
|
||||
| 4 | 公量纤度 | /prod/houxian/glxd | prod/glxd/index | prod:glxd:list |
|
||||
| 5 | 丝片检查 | /prod/houxian/spjc | prod/spjc/index | prod:spjc:list |
|
||||
| 6 | 丝片台帐 | /prod/houxian/sptz | prod/sptz/index | prod:sptz:list |
|
||||
|
||||
---
|
||||
|
||||
## 三、前端
|
||||
|
||||
| 文件 | 说明 |
|
||||
|---|---|
|
||||
| `views/prod/cds/index.vue` | 秤大丝列表(日期 + 车间)+ 称重弹窗(车台 × 丝量1~4、个数/小计即时重算、汇总栏、偏轻/偏重着色)+ 清除称重 |
|
||||
| `views/prod/glxd/index.vue` | 公量纤度:按「日期 + 车间」一次加载,表格内直接编辑,整日批量保存 |
|
||||
| `views/prod/spjc/index.vue` | 丝片检查:多级表头(前缫 / 后缫)+ 新增/修改/删除弹窗(合计只读实时汇总)+ 工艺庄口选择页 |
|
||||
| `views/prod/sptz/index.vue` | 丝片台帐:账期月份查询 + 多级表头(浸丝/返丝/编丝/整理)+ 新增/修改/删除,派生值只读,「取丝片检查」按钮 |
|
||||
| `views/prod/lsjl/index.vue` | 落丝记录表单补「落丝桶数 / 每桶茧量」(秤大丝算茧量、缫折、台产的输入) |
|
||||
| `router/index.js` | `componentMap` 注册 `prod/cds/index`、`prod/glxd/index`、`prod/spjc/index`、`prod/sptz/index` |
|
||||
|
||||
交互要点:
|
||||
- 丝量 ≤900 g 标绿(偏轻)、≥1200 g 标橙(偏重),与 F9 `CellFormatting` 一致;
|
||||
- 丝片检查 / 丝片台帐的合计、上日遗留今日新增、今存均为只读派生值,避免与服务端口径冲突;
|
||||
- 丝片台帐新增时不允许早于已有最新台账日期(对齐 F9「已生成 X 台账,无法新增该日期台账」)。
|
||||
|
||||
---
|
||||
|
||||
## 四、验证记录
|
||||
|
||||
| 项 | 结果 |
|
||||
|---|---|
|
||||
| `dotnet build`(Domain / Application / Infrastructure) | ✅ 0 错误 |
|
||||
| `dotnet build`(Api,临时输出目录 `obj\verify\`) | ✅ 0 错误 |
|
||||
| IDE 诊断(新增 4 个 vue + `router/index.js` + `lsjl/index.vue`) | ✅ 0 |
|
||||
| `vite build` | ✅ 通过(仅既有 chunk 体积警告) |
|
||||
| 启动种子 | ✅ `[DbSeeder] 生产模块菜单已就绪`,无结构同步异常;`EnsureColumn` 补列生效 |
|
||||
| 菜单与权限 | ✅ `/auth/login` 返回的 permissions 含 `prod:cds:list` / `prod:glxd:list` / `prod:spjc:list` / `prod:sptz:list` |
|
||||
| 四个列表接口 | ✅ 200(`cds` total=3、`glxd` / `spjc` / `sptz` 空表 200) |
|
||||
| 丝片检查保存 | ✅ 前缫合计 13、后缫合计 55(服务端重算) |
|
||||
| 丝片检查唯一性 | ✅ 同「日期+车间+庄口+规格」再存被拒(400),未产生第二条 |
|
||||
| 丝片台帐派生值 | ✅ 上存 120 − 浸丝 40 = 80;下丝 80 + 80 = 今存 160 |
|
||||
| 丝片台帐滚动 | ✅ 次日 `defaults`:`dateLast=2026-10-20`、`jsShangcun=160`(= 上一日今存) |
|
||||
| 丝片台帐取数 | ✅ 当日丝片检查 Σ前缫合计 = 13 → 剔除 13;Σ(总片数+学工片数) 110 − 13 = 正品 97 |
|
||||
| 秤大丝称重 | ✅ 车台 21(900/1100)+ 22(1000)→ 已秤数 3、已秤丝量 3000 g |
|
||||
| 秤大丝指标 | ✅ 茧量 100×600 = 60000、缫折 = 60000/3000×100 = 2000、台产 = 3000/9/20 = 16.67 |
|
||||
| 删除后无残留 | ✅ 删除秤大丝/丝片检查/丝片台帐后列表回到 0 条,「删除后重建」不再撞唯一索引 |
|
||||
| 测试数据清理 | ✅ 验证用的丝片检查、丝片台帐、秤大丝数据已全部删除;`LsjlRecords.Tongshu/Meitongjianliang` 已还原为 0 |
|
||||
|
||||
> 验证方式:另编一份 Api 到 `obj\verify\`,以真实库在 3000 端口启动(原无进程占用该端口),验证完已停止实例并删除临时输出与日志。
|
||||
> Node 不在默认 PATH 里,需先 `set PATH=C:\Users\32453\.workbuddy\binaries\node\versions\22.22.2-6;%PATH%` 才能跑 vite;最终 `vite build` 已通过。
|
||||
|
||||
---
|
||||
|
||||
## 五、说明与后续
|
||||
|
||||
1. **落丝记录新增两个字段**:`Tongshu`(落丝桶数)、`Meitongjianliang`(每桶茧量)是秤大丝算茧量/缫折/台产的必需输入,F9 的 `Lsjl` 实体也有这两个字段(本系统此前漏移植),已在落丝记录表单补上录入项。
|
||||
2. **秤大丝删除**:F9 客户端没有删除按钮(只有 `Cds_Lsjl_DeleteCommand` 未暴露),本系统在列表加了「删除」,用于清除误录的称重数据;默认按 F9 的粒度整条(汇总 + 车台明细)物理删除。
|
||||
3. **未移植 F9 的本地设备能力**:`Page_Cds_Edit` 依赖串口电子秤 + 语音播报 + 本地缓存(`CacheLocalfileService`),Web 端不支持,改为直接录入;偏重/偏轻的语音提示折算UI 上的单元格着色。
|
||||
4. **未移植 HS\XCJC(现场检查)**:F9 只有 `Xcjc` 实体、没有对应页面(未见 `Page_Xcjc*`),本次不做;如有需要可单独加一组「温度/湿度/车速」维护页。
|
||||
5. **待接入**:① 秤大丝/丝片检查/丝片台帐的 Grid++ 打印`(报表中心目前只有 `lsjl.grf`);② 历史的 `biz_prod_hs_cds_*` / `biz_prod_hs_spjc` / `biz_prod_hs_sptz` 数据导出后可按工作进度-13 的 CSV 内嵌 + 幂等策略导入;③ 缫折/台产可作为成本核算与计件工资的数据源。
|
||||
Reference in New Issue
Block a user