新增质量模块(工艺执行书 / 样茧试缫)与报表中心
质量模块: - 11 张工艺执行书表:封面、试产、选剥茧(含混茧明细)、试缫与大样、煮茧(含分车间配温、副煮车间)、自动缫(含大样)、后缫 - 10 张样茧试缫表:原料小样/综合样主表 + 选茧、解舒、茧幅、切剖、清洁洁净、茧丝百回纤度 - 服务与接口、主控指针回写(列表 √ 标记)、封面编号自增、报表数据包 - 前端 8 张报表打印版式、7 类工艺单据与 6 类调查录入弹窗、字段驱动表单/表格组件 - 菜单种子新增「质量」目录,样茧子表增加 YjssType 判别列,避免原料小样与综合样自增 Id 重号串数据 报表中心: - 报表模板管理、锐浪 grhtml5 加载与预览、全屏设计面板、数据源 Provider(落丝记录、职工花名册) 其他:同步工作进度 1-11 文档、开发数据库快照、.gitignore 忽略运行日志目录
This commit is contained in:
+152
@@ -0,0 +1,152 @@
|
||||
# 工作进度-11:新增「质量」模块(工艺执行书 + 样茧试缫)
|
||||
|
||||
> 时间:2026-10-22(承接工作进度-10)
|
||||
> 需求:把 `D:\AntaiProject - 副本`(F9 智慧缫丝 WinForms 版)里 **质量模块 → 工艺执行书** 与 **质量模块 → 样茧试缫** 迁移进本系统,并还原随附的 8 张报表版式。
|
||||
> 参考实现位置:
|
||||
> - 客户端:`WinClient\F9.Business.Prod\Gyzxs\`、`WinClient\F9.Business.Prod\QC\YJSS\`
|
||||
> - 服务端:`F9Servic\BBIT.F9\BBIT.F9.Domain\Entities\Business\PROD\QC\`、`BBIT.F9.Application\CQRS\Business\PROD\QC\YJSS\`、`Application\Implements\Reports\Prod\QC\RepDt_Qc_Yjss_*`
|
||||
> - 报表样例(本次已按 RTF 还原):封面 / 工艺执行书 / 混剥选茧工艺执行书 / 试缫工艺单 / 试缫与大样模板 / 煮茧工艺执行书 / 自动缫车间生产工艺执行书 / 自动缫大样
|
||||
|
||||
---
|
||||
|
||||
## 一、功能地图
|
||||
|
||||
```
|
||||
质量(新一级菜单,sort=7,图标 Medal)
|
||||
├── 工艺执行书 /qc/gyzxs qc/gyzxs/index
|
||||
│ 一行 = 一个工艺庄口;√ 标记 7 张子单据是否已录入
|
||||
│ ├── 封面 (桑蚕丝工艺设计书:编号/规格/原料总量/生产丝量/生产线时间)
|
||||
│ ├── 试产 (试缫工艺单:茧质调查 + 自动缫试缫指标 + 试缫煮茧工艺)
|
||||
│ ├── 选剥茧 (混剥选茧:混茧工艺明细 + 生产/质量/质量控制指标)
|
||||
│ ├── 试缫与大样 (试缫 vs 大样 两行对比 + 技术措施 + 签署)
|
||||
│ ├── 煮茧 (庄口原料性能 + 工艺技术指标 + 真空渗透 + 分车间配温 + 副煮车间)
|
||||
│ ├── 自动缫 (表一:茧质概况 + 生产指标 + 工艺技术指标 + 表二大样)
|
||||
│ └── 后缫 (工艺执行书:生产指标 9 项 + 工艺条件及控制指标 18 项)
|
||||
│ 打印下拉 = 8 张报表任意一张
|
||||
└── 样茧试缫 /qc/yjss qc/yjss/index
|
||||
页签:原料小样 / 综合样
|
||||
├── 选茧调查 11 个茧别 重量 + 比例(按茧重重算)
|
||||
├── 解舒调查 多条记录(缫丝参数/纤度丝长/落绪/蛹体/附煮/屑物)
|
||||
├── 茧幅调查 仅综合样(按茧幅分档,算平均/整齐率/均方差)
|
||||
├── 切剖调查 仅综合样(原量/干量/粒数比例,算茧层率/脱胶率)
|
||||
├── 清洁洁净 匀度 + 洁净档位 + 疵点,自动算清洁/洁净/片数
|
||||
└── 茧丝百回纤度 仅综合样(按回数批量生成 + 自动汇总标注值)
|
||||
打印下拉 = 原料小样报表 / 综合样报表 / 解舒调查报表
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 二、后端
|
||||
|
||||
### 2.1 领域实体(`F9WebAiTest.Domain/Entities/QC/`)
|
||||
|
||||
工艺执行书(`Gyzxs/`,表前缀 `qc_gyzxs_`):
|
||||
|
||||
| 文件 | 表 | 说明 |
|
||||
|---|---|---|
|
||||
| `GyzxsDocVersion.cs` | `qc_gyzxs_doc_version` | 主控:以庄口为键,记录 7 张子单据 Id(列表 √ 来源) |
|
||||
| `GyzxsFengMian.cs` | `qc_gyzxs_fengmian` | 封面(含编号 SJZ-{年}-工艺-{序}、生产时间区间) |
|
||||
| `GyzxsShichan.cs` | `qc_gyzxs_shichan` | 试产:茧质 7 项 + 自动缫 16 项 + 煮茧 11 项 |
|
||||
| `GyzxsXbj.cs` | `qc_gyzxs_xbj` / `qc_gyzxs_xbj_hunjian` | 选剥茧主表 + 混茧比例明细(庄别/重量/包数/比例/混茧包数) |
|
||||
| `GyzxsXbjSsDy.cs` | `qc_gyzxs_xbj_ssdy` | 试缫与大样(Ss*/Dy* 各 10 项 + 技术措施 + 签署) |
|
||||
| `GyzxsZhuJian.cs` | `qc_gyzxs_zhujian` / `_chejian` / `_fuzhu` | 煮茧主表 + 分车间配温 + 副煮车间结果 |
|
||||
| `GyzxsZds.cs` | `qc_gyzxs_zds` / `qc_gyzxs_zds_dyzl` | 自动缫表一 + 大样表二 |
|
||||
| `GyzxsHs.cs` | `qc_gyzxs_hs` | 后缫(工艺执行书本体) |
|
||||
|
||||
样茧试缫(`Yjss/`,表前缀 `qc_yjss_`):`main_ylxy`、`main_zhy`、`dc_xjdc`、`dc_jsdc`、`dc_jfdc_main`、`dc_jfdc_item`、`dc_jsbhxd_main`、`dc_jsbhxd`、`dc_qpdc`、`dc_qjjj`。
|
||||
|
||||
> **与 F9 的差异(有意为之)**:F9 子表只用 `yjss_id` 外键,依赖雪花全局唯一 Id;本系统主表用自增 Id,原料小样与综合样会重号,因此所有子表增加 **`YjssType`(1 原料小样 / 2 综合样)** 判别列,读写一律按 `(YjssId, YjssType)` 定位。
|
||||
> 另:F9 的「综合样茧质」在本系统未单独立表,其指标以冗余字段直接落在选剥茧 / 煮茧 / 自动缫 / 试产表上,报表照常可打。
|
||||
|
||||
### 2.2 服务与接口
|
||||
|
||||
| 服务 | 主要方法 |
|
||||
|---|---|
|
||||
| `GyzxsService` | `GetDocVersionPagedAsync` / `CreateDocVersionAsync` / 7 组 `Get*Async`+`Save*Async` / `GetPrintDataAsync` |
|
||||
| `YjssService` | `GetPagedAsync` / `SaveYlxyAsync` / `SaveZhyAsync` / 6 组子单据读写 / `GetFullAsync` / `GetJsdcSummaryAsync` |
|
||||
|
||||
设计要点:
|
||||
1. **指针回写**:任一张子单据保存后 upsert `qc_gyzxs_doc_version` 对应列(`ZdsDyId` 早前漏检已修);解舒/百回纤度保存后回写主表记录数 `JsdcCt`/`JsbhxdCt`。
|
||||
2. **按「庄口 + 规格」唯一**:试产、试缫与大样、自动缫、大样、后缫均以 `(GyzkId, Guige)` 为业务键;封面、选剥茧、煮茧按庄口唯一。
|
||||
3. **报表数据包**:`GetPrintDataAsync(type, gyzkId, guige)` 返回 `Parameters`(中文键)+ `Main/Sub1/Sub2`,结构与 Grid++ 的 `Report_Data` 对齐,后续可直接被报表中心 Provider 复用。
|
||||
4. **编号自增**:封面新建时按 `SJZ-{年度}-工艺-{n}` 预生成。
|
||||
|
||||
接口一览(均需登录):
|
||||
|
||||
```
|
||||
GET /api/qc/gyzxs?year=&keyword=&pageIndex=&pageSize=
|
||||
POST /api/qc/gyzxs/version?gyzkId= DELETE /api/qc/gyzxs/version/{id}
|
||||
GET|POST /api/qc/gyzxs/fengmian (gyzkId)
|
||||
GET|POST /api/qc/gyzxs/shichan (gyzkId + guige)
|
||||
GET|POST /api/qc/gyzxs/xbj (主表 + hunJian 明细数组)
|
||||
GET|POST /api/qc/gyzxs/ssdy (gyzkId + guige)
|
||||
GET|POST /api/qc/gyzxs/zhujian (主表 + cheJian + fuZhu)
|
||||
GET|POST /api/qc/gyzxs/zds (zds + dyzl)
|
||||
GET|POST /api/qc/gyzxs/hs (gyzkId + guige)
|
||||
GET /api/qc/gyzxs/print/{type}?gyzkId=&guige= type = fengmian|gyzxs|xbj|shichan|ssdy|zhujian|zds|zdsdy
|
||||
|
||||
GET /api/qc/yjss?type=1|2&year=&keyword=
|
||||
POST /api/qc/yjss/ylxy | /zhy DELETE /api/qc/yjss/{type}/{id}
|
||||
GET|POST /api/qc/yjss/xjdc/{yjssId}?type= /api/qc/yjss/xjdc?type=
|
||||
GET|POST /api/qc/yjss/jsdc/{yjssId}?type= /api/qc/yjss/jsdc?type=
|
||||
DELETE /api/qc/yjss/jsdc/{type}/{id}
|
||||
GET|POST /api/qc/yjss/jfdc|qpdc|qjjj|jsbhxd (GET 带 ?type=)
|
||||
GET /api/qc/yjss/full/{type}/{id}
|
||||
GET /api/qc/yjss/jsdc-summary/{yjssId}?type=
|
||||
```
|
||||
|
||||
### 2.3 菜单种子
|
||||
|
||||
`DbSeeder.SeedQcMenus()`:幂等创建 `/qc` 目录 + 两个页面菜单,admin 角色授权,并把一级目录顺序校正为
|
||||
`基础(3) < 员工(4) < 前缫(5) < 后缫(6) < 质量(7) < 消息(8) < 系统(9) < 报表(10)`。
|
||||
|
||||
---
|
||||
|
||||
## 三、前端
|
||||
|
||||
| 文件 | 作用 |
|
||||
|---|---|
|
||||
| `views/qc/components/SchemaForm.vue` | 字段驱动表单(text/number/date/textarea,支持 `dyzl.xxx` 嵌套键) |
|
||||
| `views/qc/components/QcGrid.vue` | 字段驱动可编辑表格(对应 WinForms 的 f9AntdUITable) |
|
||||
| `views/qc/gyzxs/schema.js` | 7 张子单据 + 8 种报表的字段/版式元数据 |
|
||||
| `views/qc/gyzxs/index.vue` | 庄口列表(√ 标记、按年度筛、打印下拉、按庄口新增) |
|
||||
| `views/qc/gyzxs/DocDialog.vue` | 子单据录入弹窗(含「从指定庄口读取数据」跨庄口复制) |
|
||||
| `views/qc/gyzxs/PrintDialog.vue` | 8 张报表版式 + A4 横向打印 |
|
||||
| `views/qc/yjss/index.vue` | 原料小样 / 综合样双页签列表 |
|
||||
| `views/qc/yjss/schema.js` | 6 类调查字段 + 计算规则(比例 / 茧幅 / 茧层率 / 清洁洁净) |
|
||||
| `views/qc/yjss/YjssDocDialog.vue` | 6 类调查录入(解舒为「列表 + 明细弹窗」) |
|
||||
| `views/qc/yjss/YjssPrintDialog.vue` | 原料小样 / 综合样 / 解舒调查 三张报表 |
|
||||
|
||||
业务算法(前端即时计算,保存落库):
|
||||
- 选剥茧:按重量重算比例,总官堆 40 包分摊混茧包数,末行取差额。
|
||||
- 茧幅:`平均 = Σ(茧幅×数量)/Σ数量`,整齐率 = `|茧幅-平均| ≤ 1mm` 占比,均方差按加权。
|
||||
- 茧丝百回纤度:外/中/内三百回为分区间平均,最大/内外开差取极值差。
|
||||
- 清洁洁净:`片数 = Σ洁净档位片数`;`洁净 = Σ(分值×片数)/片数`;`清洁 = 100 - (特大糙×3 + 废丝×3 + 大糙×2 + 黏附糙 + 大长结 + 重螺旋)/片数×100`。
|
||||
- 解舒:`解舒率 = 解舒丝长 / 一茧丝长`,`落绪总粒数 = 外+中+内`。
|
||||
|
||||
---
|
||||
|
||||
## 四、验证记录
|
||||
|
||||
| 项 | 结果 |
|
||||
|---|---|
|
||||
| `dotnet build F9WebAiTest.sln` | ✅ 0 错误(120 条既有 CS8632 可空注解警告) |
|
||||
| `vite build` | ✅ 通过(仅既有 chunk 体积/动态导入警告) |
|
||||
| IDE 诊断(`views/qc/**`、`router/index.js`) | ✅ 0 |
|
||||
| 菜单 | ✅ `质量`(sort=7) → `工艺执行书` / `样茧试缫`,admin 自动授权 |
|
||||
| 工艺执行书 7 张子单据保存 + 回读 | ✅ 封面/试产/选剥茧(2 行混茧)/试缫与大样/煮茧(1 分车间+1 副煮)/自动缫(含大样)/后缫 |
|
||||
| 主控 √ 标记 | ✅ 7 个指针全部回写(`zdsDyId` 漏检缺陷已修) |
|
||||
| 8 张报表数据 | ✅ 每张均返回 title + 参数区(如「工艺执行书」28 个参数),xbj/zhujian/ssdy 有结果集 |
|
||||
| 封面编号 | ✅ 新庄口预生成 `SJZ-2026-工艺-1` |
|
||||
| 样茧试缫(原料小样) | ✅ 主表 + 选茧 + 解舒(1 条) + 清洁洁净,解舒汇总正确 |
|
||||
| 样茧试缫(综合样) | ✅ 主表 + 茧幅(3 档) + 切剖 + 百回纤度(2 行),整页参数区完整 |
|
||||
| 两类样品隔离 | ✅ 同一 `yjssId` 下 `type=1` 有数据、`type=2` 返回空 |
|
||||
|
||||
---
|
||||
|
||||
## 五、后续可做
|
||||
|
||||
1. **报表中心对接**:8 张报表目前用 HTML 打印(版式已按 RTF 还原,A4 横向)。若要进「报表中心」,可基于 `/api/qc/gyzxs/print/{type}` 写 8 个 `RepDt_*` Provider 并制作 .grf 模板,数据结构已预留 `Parameters/Main/Sub1/Sub2`。
|
||||
2. **综合样茧质单独立表**:目前选剥茧/煮茧/自动缫/试产的茧质指标是冗余存储;若需要「综合样茧质」独立维护与联动,可补一张主表并由保存时回填。
|
||||
3. **审批状态机**:设计/审核/审批目前是文本字段,可升级为流程(参考考勤模块的审批流)。
|
||||
4. **单位与精度**:部分指标沿用 F9 的字符串区间表达(如 `185±5`、`20~38`),如后续需要统计,可拆分为「下限/上限/目标值」三列。
|
||||
Reference in New Issue
Block a user