- 新增 PayRoll(工资)、Wms(仓储)、Prod(车速/缫丝/考勤/丝片检测/丝片台账/纤检日报/质量日报) 模块 - 新增对应 Domain 实体、Application DTO/Service、Api Controller 与前端页面 - 移除旧 Attendance 考勤模块(Controller/Service/Entity/DTO 及 5 个前端页面),由 Prod/Kaoqin 取代 - 调整路由、仪表盘、Lsjl 流丝记录实体与服务 - 更新业务种子数据与 DbSeeder - 补充工作进度文档 14-27
12 KiB
工作进度-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已通过。
五、说明与后续
- 落丝记录新增两个字段:
Tongshu(落丝桶数)、Meitongjianliang(每桶茧量)是秤大丝算茧量/缫折/台产的必需输入,F9 的Lsjl实体也有这两个字段(本系统此前漏移植),已在落丝记录表单补上录入项。 - 秤大丝删除:F9 客户端没有删除按钮(只有
Cds_Lsjl_DeleteCommand未暴露),本系统在列表加了「删除」,用于清除误录的称重数据;默认按 F9 的粒度整条(汇总 + 车台明细)物理删除。 - 未移植 F9 的本地设备能力:
Page_Cds_Edit依赖串口电子秤 + 语音播报 + 本地缓存(CacheLocalfileService),Web 端不支持,改为直接录入;偏重/偏轻的语音提示折算UI 上的单元格着色。 - 未移植 HS\XCJC(现场检查):F9 只有
Xcjc实体、没有对应页面(未见Page_Xcjc*),本次不做;如有需要可单独加一组「温度/湿度/车速」维护页。 - 待接入:① 秤大丝/丝片检查/丝片台帐的 Grid++ 打印
(报表中心目前只有lsjl.grf);② 历史的biz_prod_hs_cds_*/biz_prod_hs_spjc/biz_prod_hs_sptz` 数据导出后可按工作进度-13 的 CSV 内嵌 + 幂等策略导入;③ 缫折/台产可作为成本核算与计件工资的数据源。