# 入库质检列表按实验室入库编码排序 — 设计文档 > 日期:2026-08-17 > 状态:已实现 > 范围:【质检工单】【我的质检任务】的「细胞存储」「科研捐赠」Tab --- ## 1. 背景 当前入库列表后端按工单 `create_time DESC` 分页;前端卡片再按「协议组最新创建时间 + 样本编码」重排,组内工单另按触发来源权重 + 创建时间升序。用户希望细胞存储 / 科研捐赠统一按**实验室入库编码倒序**,同编码下按**创建时间倒序**,且跨页一致。 ## 2. 已确认规则 | 项 | 约定 | |----|------| | 页面 | 仅【质检工单】+【我的质检任务】 | | Tab | 仅 `inbound_cell_storage`、`inbound_research_donation` | | 主排序 | `lab_storage_code` / `labStorageCode` 字符串倒序 | | 次排序 | 工单 `create_time` / `createTime` 倒序 | | 空编码 | 按空字符串 `''` 直接参与倒序比较 | | 分页 | 后端按上述规则排序后再分页(跨页一致) | | 其它 Tab | 「全部 / 出库 / 临时」等不改 | ## 3. 方案(方案 1) 后端入库两 Tab 专用 `ORDER BY`(JOIN 样本接收取编码)+ 前端展示排序对齐同一规则。 不采用:仅前端页内重排;工单表冗余 `lab_storage_code`。 ## 4. 后端 ### 4.1 编码来源 `lab_storage_code` 在 `biz_sample_reception`,不在 `biz_qc_work_order`。列表排序通过 **LEFT JOIN** 取得,`COALESCE(lab_storage_code, '')`。 JOIN 对齐现有 enrich 语义:优先 `BizQcWorkOrder.reception_id`;无接收 ID 时再按 `sample_code + tenant`(及必要的 `del_flag`)关联,避免生产触发等无 `reception_id` 的工单编码全空导致乱序。 ### 4.2 质检工单 `list_work_orders` - 当 `reception_source ∈ {cell_storage, research_donation}`: `ORDER BY COALESCE(lab_storage_code, '') DESC, BizQcWorkOrder.create_time DESC` - 其它来源:保持 `create_time DESC` - 不改筛选条件与返回字段结构 ### 4.3 我的质检任务 `list_mine_tasks` - 查询已 JOIN 工单;当请求带入库两 Tab 的 `reception_source` 时: `ORDER BY COALESCE(lab_storage_code, '') DESC, BizQcWorkOrder.create_time DESC`,并以 `work_order_no` / `task_no` 作为稳定次序 - 其它 Tab:保持现有任务 `create_time DESC` 等规则 - 前端仍 `fetchAllMineTasks` 拉全量;聚合后按同一规则排序再客户端分页 ## 5. 前端 | 文件 | 改动 | |------|------| | `qc-work-order-inbound-sample-cards.ts` | `buildInboundSampleListItems`:卡片序改为编码倒序 → 组内最大 `createTime` 倒序;去掉「协议组再样本编码」主序 | | `qc-work-order-groups.ts` | **仅入库路径**组内排序改为 `createTime` 倒序(取消触发来源权重);出库 `groupOutboundQcWorkOrders` 保持原组内规则不变 | | `qc-mine-task-groups.ts` | 入库两 Tab:分页前对工单条目按编码 DESC → 工单创建时间 DESC 排序 | **不改**:同协议样本胶囊内按 `sampleCode` 的互链排序;全部 / 出库 / 临时展示逻辑。 卡片代表字段: - 编码:组内首个非空 `labStorageCode`,否则 `''` - 时间:组内最大 `createTime`(同编码下新的在前) ## 6. 验收 1. 细胞存储、科研捐赠:两页列表均为「编码倒序,同编码创建时间倒序」;翻页顺序连续。 2. 无编码按空串参与倒序;同一样本多工单时间新的在上。 3. 其它 Tab 无回归。 ## 7. 非目标 - 数据库迁移 / 工单表冗余字段 - 修改「全部」Tab 中入库卡片的全局排序策略 - 改变同协议互链胶囊的展示顺序规则