Files
yanpeng200212 1f1b184411 新增工资/仓储/生产日报等模块,移除旧考勤模块
- 新增 PayRoll(工资)、Wms(仓储)、Prod(车速/缫丝/考勤/丝片检测/丝片台账/纤检日报/质量日报) 模块
- 新增对应 Domain 实体、Application DTO/Service、Api Controller 与前端页面
- 移除旧 Attendance 考勤模块(Controller/Service/Entity/DTO 及 5 个前端页面),由 Prod/Kaoqin 取代
- 调整路由、仪表盘、Lsjl 流丝记录实体与服务
- 更新业务种子数据与 DbSeeder
- 补充工作进度文档 14-27
2026-10-27 09:09:57 +08:00

12 KiB
Raw Permalink Blame History

工作进度-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 内嵌 + 幂等策略导入;③ 缫折/台产可作为成本核算与计件工资的数据源。