# 数据库存储过程中文错误提示梳理 > 来源存储过程:CS_CHECKSTEPATTRIBUTE、CS_CHECKSTEPSNANDMACODE、CS_SETSTEPRESULT > 整理时间:2026-10-20 ## 一、可直接加入 Lang.xml 的纯中文提示 以下提示不含变量,可直接作为 key 使用。 ### CS_CHECKSTEPATTRIBUTE ```xml ``` ### CS_CHECKSTEPSNANDMACODE ```xml ``` ### CS_SETSTEPRESULT ```xml ``` ## 二、含变量提示(无法直接作为固定 key) 这些提示在数据库里把变量值拼接进去了,例如 `序列号:xxx 已被工单yyy绑定`。由于 xxx/yyy 每次都变,无法写死 key,建议按以下方式处理。 ### 推荐方案 A:数据库返回模板 + 客户端填充 把存储过程改为返回类似 `ERR_SN_ALREADY_BOUND|SN:xxx|WO:yyy` 的结构,客户端按模板翻译: ```xml ``` ### 推荐方案 B:拆成固定中文片段(当前代码可部分支持) 在 `Lang.xml` 里只维护固定中文片段,借助 `TranslateContainedKeys` 做子串替换。但翻译质量取决于片段拆分是否合理,例如: ```xml ``` 这种方式语句会不自然,**仅建议作为临时过渡**。 ### 含变量提示清单 | 存储过程 | 原始中文模板(变量用 {x} 表示) | 说明 | |---|---|---| | CS_CHECKSTEPATTRIBUTE | 岗位资源对应的工序[{0}]不存在或者未审核 | {0}=工序号 | | CS_CHECKSTEPSNANDMACODE | 岗位资源{0}错误,不存在 | {0}=sourcecode | | CS_CHECKSTEPSNANDMACODE | 序列号:{0} 已被工单{1}绑定 | {0}=SN, {1}=工单号 | | CS_CHECKSTEPSNANDMACODE | 序列号:{0}已完工,不允许再进行归属 | {0}=SN | | CS_CHECKSTEPSNANDMACODE | SN:{0} 在多个工单SN范围中,无法自动归属工单 | {0}=SN | | CS_CHECKSTEPSNANDMACODE | SN:{0}已经完工不允许再归属 | {0}=SN | | CS_CHECKSTEPSNANDMACODE | SN:{0} 无工单归属记录,必须先归属工单 | {0}=SN | | CS_CHECKSTEPSNANDMACODE | 序列号:{0} 归属工单号:{1}错误 | {0}=SN, {1}=工单号 | | CS_CHECKSTEPSNANDMACODE | 工单{0}已冻结,不允许采集 | {0}=工单号 | | CS_CHECKSTEPSNANDMACODE | 序列号{0}达到最大测试次数{1}次,不允许测试 | {0}=SN, {1}=次数 | | CS_CHECKSTEPSNANDMACODE | 序列号:{0} 已转SN:{1},不允许使用TSN进行采集! | {0}=原SN, {1}=新SN | | CS_CHECKSTEPSNANDMACODE | 序列号{0}维修完成,处于待QC确认状态,不允许采集 | {0}=SN | | CS_CHECKSTEPSNANDMACODE | 序列号:{0} 处于下地状态,不允许操作,请先取消下地! | {0}=SN | | CS_CHECKSTEPSNANDMACODE | 序列号:{0} 已投产到工单[{1}]! | {0}=SN, {1}=工单号 | | CS_CHECKSTEPSNANDMACODE | 岗位资源对应的工序不是工单途程[{0}]中的工序! | {0}=途程号 | | CS_CHECKSTEPSNANDMACODE | 序列号:{0} 处于待维修状态,请先维修! | {0}=SN | | CS_CHECKSTEPSNANDMACODE | 序列号:{0} 在返工工序:{1},当前资源不允许采集 | {0}=SN, {1}=工序号 | | CS_CHECKSTEPSNANDMACODE | 序列号:{0} 下一返工工序是:{1},当前资源不允许采集 | {0}=SN, {1}=工序号 | | CS_CHECKSTEPSNANDMACODE | 序列号:{0} 已完工,当前资源不允许采集 | {0}=SN | | CS_CHECKSTEPSNANDMACODE | 序列号:{0} 处于待维修状态,请进入维修界面进行操作 | {0}=SN | | CS_CHECKSTEPSNANDMACODE | 序列号:{0} 下一工序是:{1},当前资源不允许采集 | {0}=SN, {1}=工序号 | | CS_CHECKSTEPSNANDMACODE | 序列号:{0} 老化时长不足,剩余时长[{1}]分钟,不允许进行操作! | {0}=SN, {1}=分钟数 | | CS_CHECKSTEPSNANDMACODE | 工单:数量{0}抽检比例[{1}],应抽检数{2},当前抽检数量{3},请抽检足够数量 | {0}=工单号, {1}=比例, {2}=应抽检数, {3}=当前抽检数 | | CS_CHECKSTEPSNANDMACODE | 工单{0}上线数超工单数 | {0}=工单号 | | CS_CHECKSTEPSNANDMACODE | 序列号:{0}错误,不在产品序列号导入SN中! | {0}=SN | | CS_CHECKSTEPSNANDMACODE | 序列号:{0}错误,不在工单导入PSN中! | {0}=SN | | CS_CHECKSTEPSNANDMACODE | 序列号{0}不在工单防呆起始结束范围内! | {0}=SN | | CS_CHECKSTEPSNANDMACODE | 序列号{0}不在合同防呆起始结束范围内! | {0}=SN | | CS_CHECKSTEPSNANDMACODE | 上料子件序列号:{0} 对应的半成品料号必须是:{1} | {0}=SN, {1}=料号 | | CS_CHECKSTEPSNANDMACODE | 序列号:{0} 处于下地状态,不允许归属! | {0}=SN | | CS_CHECKSTEPSNANDMACODE | 序列号:{0} 已经有归属的下一工单[{1}]! | {0}=SN, {1}=工单号 | | CS_CHECKSTEPSNANDMACODE | 序列号:{0} 前一工段中的合同号与待归属的工单的合同号不一致! | {0}=SN | | CS_CHECKSTEPSNANDMACODE | 序列号:{0} 在前一工段中必须是完工状态! | {0}=SN | | CS_CHECKSTEPSNANDMACODE | 序列号{0}在前一工段半成品必须在工单[{1}]用料表中! | {0}=SN, {1}=工单号 | | CS_CHECKSTEPSNANDMACODE | 序列号:{0} 已投入工作中心{1},不允许归属! | {0}=SN, {1}=工作中心 | | CS_CHECKSTEPSNANDMACODE | 批次物料:{0},岗位备料不足 | {0}=物料号 | | CS_CHECKSTEPSNANDMACODE | 序列号:{0}未归属工单,不是工单第一道工序不能自动归属 | {0}=SN | | CS_CHECKSTEPSNANDMACODE | 工单:{0}状态不是已下放,不允许采集 | {0}=工单号 | | CS_SETSTEPRESULT | 工单{0}存在首件检查任务单超时:{1}未审核或者不合格,不允许操作 | {0}=工单号, {1}=结果 | | CS_SETSTEPRESULT | 当前所属上料工序,{0}序列号未进行上料 | {0}=SN | | CS_SETSTEPRESULT | 该产品是按线别+合同号换批,工单:{0}未维护合同号 | {0}=工单号 | | CS_SETSTEPRESULT | AFTERSUCCESS批次物料[{0}],岗位备料剩余数不足生产[{1}]个产品,请及时进行备料采集 | {0}=物料号, {1}=数量 | ## 三、后续建议 1. **先把第一章的纯中文条目复制到 `I18n/Lang.xml`**,立即生效。 2. **含变量提示建议走方案 A**:改存储过程返回错误码 + 参数,客户端用模板翻译。这样最干净,后续新增错误码也只需要加一条字典。 3. 如果暂时不想改存储过程,可以先用方案 B 顶一顶,但翻译质量会打折。