8 小时以前 9bad721754fe8bbe2e5f459d0706e0fefac569f3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package cn.iocoder.yudao.module.qcreport.enums;
 
import cn.iocoder.yudao.framework.common.exception.ErrorCode;
 
/**
 * qcreport 智能质检报告设计平台 错误码枚举类
 * <p>
 * qcreport 系统,使用 1-070-000-000 段
 */
public interface ErrorCodeConstants {
 
    // ========== 报告模板(1-070-100-000) ==========
    ErrorCode TEMPLATE_NOT_EXISTS = new ErrorCode(1_070_100_000, "报告模板不存在");
    ErrorCode TEMPLATE_CODE_DUPLICATE = new ErrorCode(1_070_100_001, "报告模板编码已存在");
    ErrorCode TEMPLATE_STATUS_DISABLED = new ErrorCode(1_070_100_002, "报告模板已停用,无法执行该操作");
 
    // ========== 模板版本(1-070-101-000) ==========
    ErrorCode TEMPLATE_VERSION_NOT_EXISTS = new ErrorCode(1_070_101_000, "模板版本不存在");
    ErrorCode TEMPLATE_VERSION_DUPLICATE = new ErrorCode(1_070_101_001, "该版本号已存在,请使用新的版本号");
    ErrorCode TEMPLATE_VERSION_PUBLISHED_CANNOT_MODIFY = new ErrorCode(1_070_101_002, "模板版本已发布,不允许修改,请创建新版本");
    ErrorCode TEMPLATE_VERSION_NOT_PUBLISHED = new ErrorCode(1_070_101_003, "模板版本未发布,无法生成报告");
    ErrorCode TEMPLATE_VERSION_SCHEMA_INVALID = new ErrorCode(1_070_101_004, "模板 Schema 格式不正确,请检查设计器保存的模板内容");
    ErrorCode TEMPLATE_VERSION_SCHEMA_EMPTY = new ErrorCode(1_070_101_005, "模板 Schema 为空,请先在设计器中设计模板内容并保存,再发布版本");
    ErrorCode TEMPLATE_VERSION_RULE_INVALID = new ErrorCode(1_070_101_006, "模板里的判定规则不合法,请修改后重试");
    ErrorCode TEMPLATE_NO_PUBLISHED_VERSION = new ErrorCode(1_070_101_007, "该模板还没有已发布的版本,无法生成报告,请先在设计器中发布一个版本");
    ErrorCode TEMPLATE_VERSION_CANVAS_EMPTY = new ErrorCode(1_070_101_008, "该模板版本没有画布内容,无法生成报告,请先在设计器中设计并保存模板内容");
    ErrorCode TEMPLATE_VERSION_CANVAS_UNSAFE = new ErrorCode(1_070_101_009,
            "模板画布里有不允许出现的内容,已拒绝保存:{}。请在设计器中删掉这些内容后重新保存");
    ErrorCode TEMPLATE_VERSION_CURRENT_CANNOT_DISABLE = new ErrorCode(1_070_101_010,
            "版本「{}」是模板「{}」当前正在使用的版本,不能停用。"
                    + "请先到该模板的版本列表里对另一个已发布版本执行「回滚」,把当前版本切走,再停用本版本;"
                    + "若要让整个模板停止使用,请改为停用模板本身");
 
    // ========== 报告实例(1-070-102-000) ==========
    ErrorCode REPORT_INSTANCE_NOT_EXISTS = new ErrorCode(1_070_102_000, "报告实例不存在");
    ErrorCode REPORT_INSTANCE_NO_DUPLICATE = new ErrorCode(1_070_102_001, "报告编号已存在");
    ErrorCode REPORT_INSTANCE_DATA_SNAPSHOT_MISSING = new ErrorCode(1_070_102_002, "报告实例缺少数据快照,无法重新渲染");
    ErrorCode REPORT_INSTANCE_HTML_MISSING = new ErrorCode(1_070_102_003, "报告实例没有渲染产物 HTML,无法生成 PDF,请先对该报告执行「重新生成」");
 
    // ========== 渲染与规则(1-070-103-000) ==========
    ErrorCode RENDER_BUSINESS_DATA_MISSING = new ErrorCode(1_070_103_000, "业务数据为空,无法渲染报告");
    ErrorCode RENDER_DATA_FIELD_NOT_EXISTS = new ErrorCode(1_070_103_001, "数据绑定字段不存在");
    ErrorCode RENDER_RULE_PARSE_FAILED = new ErrorCode(1_070_103_002, "判定规则解析失败");
    ErrorCode RENDER_HTML_FAILED = new ErrorCode(1_070_103_003, "报告 HTML 渲染失败");
    ErrorCode RENDER_PDF_BROWSER_LAUNCH_FAILED = new ErrorCode(1_070_103_004, "PDF 渲染浏览器启动失败,请检查 Chromium 是否已安装");
    ErrorCode RENDER_PDF_FAILED = new ErrorCode(1_070_103_005, "PDF 生成失败");
    ErrorCode RENDER_PDF_ARCHIVE_FAILED = new ErrorCode(1_070_103_006, "PDF 已生成,但归档到附件库失败");
    ErrorCode RENDER_PDF_BUSY = new ErrorCode(1_070_103_007, "当前 PDF 渲染任务已达上限,请稍后重试");
    ErrorCode RENDER_PDF_DISABLED = new ErrorCode(1_070_103_008, "PDF 出件功能未启用,请联系管理员");
 
    // ========== AI 导入模板草稿(1-070-104-000) ==========
    ErrorCode AI_IMPORT_DISABLED = new ErrorCode(1_070_104_000,
            "AI 导入功能未启用(yudao.qcreport.ai-import.enabled 当前为 false),请联系管理员开启后再试");
    ErrorCode AI_IMPORT_BLOB_NOT_FOUND = new ErrorCode(1_070_104_001,
            "上传的文件(blobId={})不存在或已被清理,请重新上传后再试");
    ErrorCode AI_IMPORT_FILE_UNSUPPORTED = new ErrorCode(1_070_104_002,
            "不支持的文件「{}」(扩展名:{})。仅支持 PDF、Word(.docx)、Excel(.xlsx)、"
                    + "图片(png/jpg/jpeg/bmp/gif/webp) 与文本(txt/csv),请转换格式后重新导入");
    ErrorCode AI_IMPORT_FILE_LEGACY_OFFICE = new ErrorCode(1_070_104_003,
            "不支持的文件「{}」(旧版 Office 格式.{})。请用 Office 打开后「另存为」.docx 或 .xlsx 再重新导入");
    ErrorCode AI_IMPORT_FILE_TOO_LARGE = new ErrorCode(1_070_104_004,
            "文件「{}」大小 {}MB,超过单文件上限 {}MB,请压缩或拆分后重新导入");
    ErrorCode AI_IMPORT_FILE_EMPTY = new ErrorCode(1_070_104_005,
            "文件「{}」未解析出任何可用内容(共 {} 页)。若是扫描件,请确认分辨率不低于 200 DPI、"
                    + "文字无严重倾斜或遮挡;推荐改用电子版 PDF 或 Word/Excel");
    ErrorCode AI_IMPORT_TOO_MANY_FILES = new ErrorCode(1_070_104_006,
            "一次最多导入 {} 个文件,本次提交了 {} 个,请分批导入");
    ErrorCode AI_IMPORT_TOO_MANY_PAGES = new ErrorCode(1_070_104_007,
            "文件「{}」共 {} 页,超过单次识别上限 {} 页,请拆分后分批导入");
    ErrorCode AI_IMPORT_CATALOG_INVALID = new ErrorCode(1_070_104_008,
            "组件清单参数不合法({}),请刷新页面后重试");
    ErrorCode AI_IMPORT_SCHEMA_VERSION_UNSUPPORTED = new ErrorCode(1_070_104_009,
            "组件清单的 Schema 版本为「{}」,服务端只接受「{}」,请刷新页面后重试");
    ErrorCode AI_IMPORT_AI_UNAVAILABLE = new ErrorCode(1_070_104_010,
            "AI 识别调用失败(已耗时 {}ms):{}。请到「AI 大模型」中确认对话模型已启用且密钥有效,或稍后重试");
    ErrorCode AI_IMPORT_AI_TIMEOUT = new ErrorCode(1_070_104_011,
            "AI 识别超时(本次已等 {} 秒)。文件页数或数量较多时耗时更长,"
                    + "请减少文件数量,或改用电子版 PDF / Word / Excel");
    ErrorCode AI_IMPORT_RESPONSE_UNPARSEABLE = new ErrorCode(1_070_104_012,
            "AI 返回的内容无法解析为模板草稿(已收到 {} 个字符)。若文件内容很长,请拆分后分批导入;"
                    + "若持续失败,请改用手工设计");
    ErrorCode AI_IMPORT_DRAFT_EMPTY = new ErrorCode(1_070_104_013,
            "AI 未能从文件「{}」中识别出任何可用组件。请确认该文件是检验报告;"
                    + "若确实是,请改用手工设计模板");
    ErrorCode AI_IMPORT_TOO_MANY_PAGES_TOTAL = new ErrorCode(1_070_104_014,
            "本次提交的文件合计 {} 页,超过单次识别上限 {} 页(单文件上限 {} 页),"
                    + "请减少文件数量或分批导入");
    ErrorCode AI_IMPORT_OFFICE_CORRUPT = new ErrorCode(1_070_104_015,
            "文件「{}」无法作为 .{} 打开,内容已损坏或受密码保护。"
                    + "请先用 Office 打开该文件,确认能正常显示后「另存为」.docx / .xlsx 再重新导入;"
                    + "若文件有打开密码,请先解除密码保护");
    ErrorCode AI_IMPORT_AI_BUDGET_EXCEEDED = new ErrorCode(1_070_104_016,
            "本次识别已达到单次导入耗时上限({} 秒,已用时 {} 秒)并提前停止,"
                    + "在文件「{}」中未识别出任何可用组件。请减少文件数量或页数后分批导入;"
                    + "若单个文件也不大,请到「AI 大模型」中检查对话模型是否响应缓慢");
 
    // ========== 由质检单生成报告(1-070-105-000) ==========
    ErrorCode QC_GENERATE_TYPE_INVALID = new ErrorCode(1_070_105_000,
            "质检类型「{}」不合法,只支持 IQC(来料检验)、IPQC(过程检验)、OQC(出货检验)、RQC(退货检验)");
    ErrorCode QC_GENERATE_ORDER_NOT_EXISTS = new ErrorCode(1_070_105_001,
            "{}的质检单(ID={})不存在或已被删除,请刷新列表后重新选择");
    ErrorCode QC_GENERATE_ORDER_NOT_FINISHED = new ErrorCode(1_070_105_002,
            "{}的质检单「{}」当前状态为「{}」,尚未完成检验,不能生成报告。"
                    + "请先把该单据提交并完成检验判定后再生成");
    ErrorCode QC_GENERATE_ORDER_NOT_JUDGED = new ErrorCode(1_070_105_003,
            "{}的质检单「{}」尚未填写检验判定(判定为空),不能生成报告。"
                    + "请先在该单据上填写判定结论(合格 / 特采 / 不合格退货 / 不合格报废)后再生成");
    // 105_004 / 105_007 两条路径复用既有的 TEMPLATE_NOT_EXISTS / TEMPLATE_STATUS_DISABLED /
    // TEMPLATE_NO_PUBLISHED_VERSION:那几条文案本来就是精确的,再造一遍只会多两条会漂移的副本
    ErrorCode QC_GENERATE_TEMPLATE_TYPE_MISMATCH = new ErrorCode(1_070_105_005,
            "报告模板的报告类型是「{}」,与本次质检单的类型「{}」不一致,无法生成报告。"
                    + "请重新选择一张{}的报告模板");
    ErrorCode QC_GENERATE_NO_ITEM = new ErrorCode(1_070_105_006,
            "{}的质检单「{}」没有可用于出报告的检验项({}),无法生成报告。"
                    + "请先在该单据上录入检验指标与实测值后再生成");
 
}