yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
@@ -18,6 +18,7 @@
    ErrorCode MD_ITEM_TYPE_CODE_DUPLICATE = new ErrorCode(1_040_100_005, "同一父分类下已存在该编码的分类");
    ErrorCode MD_ITEM_TYPE_PARENT_IS_CHILD = new ErrorCode(1_040_100_006, "不能设置自己的子分类为父分类");
    ErrorCode MD_ITEM_TYPE_EXITS_ITEM = new ErrorCode(1_040_100_007, "该分类下存在物料,无法删除");
    ErrorCode MD_ITEM_TYPE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_100_008, "导入物料分类数据不能为空");
    // ========== MES 基础数据-计量单位(1-040-101-000) ==========
    ErrorCode MD_UNIT_MEASURE_NOT_EXISTS = new ErrorCode(1_040_101_000, "计量单位不存在");
@@ -82,12 +83,14 @@
    ErrorCode MD_WORKSHOP_CODE_DUPLICATE = new ErrorCode(1_040_105_001, "车间编码已存在");
    ErrorCode MD_WORKSHOP_NAME_DUPLICATE = new ErrorCode(1_040_105_002, "车间名称已存在");
    ErrorCode MD_WORKSHOP_HAS_WORKSTATION = new ErrorCode(1_040_105_003, "车间下存在工作站,无法删除");
    ErrorCode MD_WORKSHOP_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_105_004, "导入车间数据不能为空");
    // ========== MES 基础数据-工作站(1-040-106-000) ==========
    ErrorCode MD_WORKSTATION_NOT_EXISTS = new ErrorCode(1_040_106_000, "工作站不存在");
    ErrorCode MD_WORKSTATION_CODE_DUPLICATE = new ErrorCode(1_040_106_001, "工作站编码已存在");
    ErrorCode MD_WORKSTATION_NAME_DUPLICATE = new ErrorCode(1_040_106_002, "工作站名称已存在");
    ErrorCode MD_WORKSTATION_IS_DISABLE = new ErrorCode(1_040_106_003, "工作站已禁用");
    ErrorCode MD_WORKSTATION_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_106_004, "导入工作站数据不能为空");
    // ========== MES 基础数据-设备资源(1-040-106-100) ==========
    ErrorCode MD_WORKSTATION_MACHINE_NOT_EXISTS = new ErrorCode(1_040_106_100, "设备资源记录不存在");
    ErrorCode MD_WORKSTATION_MACHINE_EXISTS = new ErrorCode(1_040_106_101, "该设备已分配至工作站:{}");
@@ -119,6 +122,7 @@
    ErrorCode AUTO_CODE_REDIS_ERROR = new ErrorCode(1_040_110_003, "编码生成服务不可用,请稍后重试");
    ErrorCode AUTO_CODE_GENERATE_FAILED = new ErrorCode(1_040_110_004, "编码生成失败");
    ErrorCode AUTO_CODE_PART_SERIAL_NUMBER_DUPLICATE = new ErrorCode(1_040_110_005, "流水号分段只能存在一个");
    ErrorCode AUTO_CODE_RULE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_110_006, "导入编码规则数据不能为空");
    // ========== MES 日历排班-计划班次(1-040-200-000) ==========
    ErrorCode CAL_PLAN_SHIFT_NOT_EXISTS = new ErrorCode(1_040_200_000, "计划班次不存在");
@@ -127,6 +131,7 @@
    // ========== MES 日历排班-班组(1-040-201-000) ==========
    ErrorCode CAL_TEAM_NOT_EXISTS = new ErrorCode(1_040_201_000, "班组不存在");
    ErrorCode CAL_TEAM_CODE_DUPLICATE = new ErrorCode(1_040_201_001, "班组编码已存在");
    ErrorCode CAL_TEAM_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_201_002, "导入班组数据不能为空");
    // ========== MES 日历排班-班组成员(1-040-201-100) ==========
    ErrorCode CAL_TEAM_MEMBER_NOT_EXISTS = new ErrorCode(1_040_201_100, "班组成员不存在");
    ErrorCode CAL_TEAM_MEMBER_USER_DUPLICATE = new ErrorCode(1_040_201_101, "该用户已分配到其他班组");
@@ -144,6 +149,7 @@
    ErrorCode CAL_PLAN_CODE_DUPLICATE = new ErrorCode(1_040_202_001, "排班计划编码已存在");
    ErrorCode CAL_PLAN_NOT_PREPARE = new ErrorCode(1_040_202_002, "排班计划已确认,不允许修改或删除");
    ErrorCode CAL_PLAN_TEAM_COUNT_NOT_MATCH = new ErrorCode(1_040_202_003, "确认排班计划时,分配的班组数量与轮班方式不匹配");
    ErrorCode CAL_PLAN_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_202_004, "导入排班计划数据不能为空");
    // ========== MES 日历排班-计划班组关联(1-040-202-100) ==========
    ErrorCode CAL_PLAN_TEAM_NOT_EXISTS = new ErrorCode(1_040_202_100, "计划班组关联不存在");
    ErrorCode CAL_PLAN_TEAM_DUPLICATE = new ErrorCode(1_040_202_101, "该班组已分配到此计划");
@@ -160,6 +166,7 @@
    ErrorCode DV_MACHINERY_TYPE_CODE_DUPLICATE = new ErrorCode(1_040_300_005, "设备类型编码已存在");
    ErrorCode DV_MACHINERY_TYPE_PARENT_IS_CHILD = new ErrorCode(1_040_300_006, "不能设置自己的子类型为父类型");
    ErrorCode DV_MACHINERY_TYPE_HAS_MACHINERY = new ErrorCode(1_040_300_007, "该类型下存在设备,无法删除");
    ErrorCode DV_MACHINERY_TYPE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_300_008, "导入设备类型数据不能为空");
    // ========== MES 设备管理-设备台账(1-040-301-000) ==========
    ErrorCode DV_MACHINERY_NOT_EXISTS = new ErrorCode(1_040_301_000, "设备不存在");
@@ -184,6 +191,7 @@
    ErrorCode DV_SUBJECT_CODE_DUPLICATE = new ErrorCode(1_040_304_001, "项目编码已存在");
    ErrorCode DV_SUBJECT_USED_BY_CHECK_PLAN = new ErrorCode(1_040_304_002, "点检保养项目已被点检保养方案使用,无法删除");
    ErrorCode DV_SUBJECT_IS_DISABLE = new ErrorCode(1_040_304_003, "点检保养项目已禁用");
    ErrorCode DV_SUBJECT_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_304_004, "导入点检保养项目数据不能为空");
    // ========== MES 设备管理-点检计划(1-040-302-000) ==========
    ErrorCode DV_CHECK_PLAN_NOT_EXISTS = new ErrorCode(1_040_302_000, "点检计划不存在");
@@ -194,6 +202,7 @@
    ErrorCode DV_CHECK_PLAN_NOT_ENABLED = new ErrorCode(1_040_302_005, "点检保养方案未启用,不允许停用");
    ErrorCode DV_CHECK_PLAN_TYPE_MISMATCH = new ErrorCode(1_040_302_006, "点检保养方案类型与当前业务不匹配");
    ErrorCode DV_CHECK_PLAN_NOT_ENABLED_FOR_RECORD = new ErrorCode(1_040_302_007, "点检保养方案未启用,不允许创建记录");
    ErrorCode DV_CHECK_PLAN_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_302_008, "导入点检保养方案数据不能为空");
    // ========== MES 设备管理-点检方案设备(1-040-302-100) ==========
    ErrorCode DV_CHECK_PLAN_MACHINERY_NOT_EXISTS = new ErrorCode(1_040_302_100, "点检保养方案设备不存在");
    ErrorCode DV_CHECK_PLAN_MACHINERY_DUPLICATE = new ErrorCode(1_040_302_101, "该设备已关联到当前方案,请勿重复添加");
@@ -208,6 +217,7 @@
    ErrorCode DV_REPAIR_CODE_DUPLICATE = new ErrorCode(1_040_303_002, "维修工单编码已存在");
    ErrorCode DV_REPAIR_NOT_CONFIRMED = new ErrorCode(1_040_303_003, "只有维修中状态的维修工单才能完成维修");
    ErrorCode DV_REPAIR_NOT_APPROVING = new ErrorCode(1_040_303_004, "只有待验收状态的维修工单才能验收");
    ErrorCode DV_REPAIR_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_303_005, "导入维修工单数据不能为空");
    // ========== MES 设备管理-维修工单行(1-040-303-100) ==========
    ErrorCode DV_REPAIR_LINE_NOT_EXISTS = new ErrorCode(1_040_303_100, "维修工单行不存在");
@@ -215,6 +225,7 @@
    ErrorCode MAINTEN_RECORD_NOT_EXISTS = new ErrorCode(1_040_305_000, "设备保养记录不存在");
    ErrorCode MAINTEN_RECORD_NOT_DRAFT = new ErrorCode(1_040_305_001, "设备保养记录已提交,不允许修改或删除");
    ErrorCode MAINTEN_RECORD_NO_LINE = new ErrorCode(1_040_305_002, "提交保养记录时,至少需要一条保养项目");
    ErrorCode DV_MAINTEN_RECORD_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_305_003, "导入设备保养记录数据不能为空");
    // ========== MES 设备管理-保养记录明细(1-040-305-100) ==========
    ErrorCode MAINTEN_RECORD_LINE_NOT_EXISTS = new ErrorCode(1_040_305_100, "设备保养记录明细不存在");
@@ -222,6 +233,7 @@
    ErrorCode DV_CHECK_RECORD_NOT_EXISTS = new ErrorCode(1_040_306_000, "设备点检记录不存在");
    ErrorCode DV_CHECK_RECORD_NOT_DRAFT = new ErrorCode(1_040_306_001, "设备点检记录已完成,不允许修改或删除");
    ErrorCode DV_CHECK_RECORD_NO_LINE = new ErrorCode(1_040_306_002, "提交点检记录时,至少需要一条点检项目");
    ErrorCode DV_CHECK_RECORD_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_306_003, "导入设备点检记录数据不能为空");
    // ========== MES 设备管理-点检记录明细(1-040-306-100) ==========
    ErrorCode DV_CHECK_RECORD_LINE_NOT_EXISTS = new ErrorCode(1_040_306_100, "设备点检记录明细不存在");
@@ -229,10 +241,12 @@
    ErrorCode DV_METERING_NOT_EXISTS = new ErrorCode(1_040_307_000, "计量器具不存在");
    ErrorCode DV_METERING_CODE_DUPLICATE = new ErrorCode(1_040_307_001, "计量器具编码已存在");
    ErrorCode DV_METERING_HAS_CHECK_RECORD = new ErrorCode(1_040_307_002, "计量器具已关联检测记录,无法删除");
    ErrorCode DV_METERING_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_307_003, "导入计量器具数据不能为空");
    // ========== MES 设备管理-计量检测记录(1-040-307-100) ==========
    ErrorCode DV_METERING_CHECK_NOT_EXISTS = new ErrorCode(1_040_307_100, "计量检测记录不存在");
    ErrorCode DV_METERING_CHECK_CODE_DUPLICATE = new ErrorCode(1_040_307_101, "计量检测编号已存在");
    ErrorCode DV_METERING_CHECK_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_307_102, "导入计量检测记录数据不能为空");
    // ========== MES 工具管理-工具类型(1-040-400-000) ==========
    ErrorCode TM_TOOL_TYPE_NOT_EXISTS = new ErrorCode(1_040_400_000, "工具类型不存在");
@@ -240,11 +254,13 @@
    ErrorCode TM_TOOL_TYPE_NAME_DUPLICATE = new ErrorCode(1_040_400_002, "工具类型名称已存在");
    ErrorCode TM_TOOL_TYPE_HAS_TOOL = new ErrorCode(1_040_400_003, "该工具类型下存在工具,无法删除");
    ErrorCode TM_TOOL_TYPE_HAS_WORKSTATION_TOOL = new ErrorCode(1_040_400_004, "该工具类型已被工作站工装资源引用,无法删除");
    ErrorCode TM_TOOL_TYPE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_400_005, "导入工具类型数据不能为空");
    // ========== MES 工具管理-工具台账(1-040-401-000) ==========
    ErrorCode TM_TOOL_NOT_EXISTS = new ErrorCode(1_040_401_000, "工具不存在");
    ErrorCode TM_TOOL_CODE_DUPLICATE = new ErrorCode(1_040_401_001, "工具编码已存在");
    ErrorCode TM_TOOL_HAS_BATCH = new ErrorCode(1_040_401_002, "该工具已被批次引用,无法删除");
    ErrorCode TM_TOOL_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_401_003, "导入工具数据不能为空");
    // ========== MES 生产管理-工序(1-040-500-000) ==========
    ErrorCode PRO_PROCESS_NOT_EXISTS = new ErrorCode(1_040_500_000, "工序不存在");
@@ -252,6 +268,9 @@
    ErrorCode PRO_PROCESS_NAME_EXISTS = new ErrorCode(1_040_500_002, "工序名称已存在");
    ErrorCode PRO_PROCESS_USED_BY_ROUTE = new ErrorCode(1_040_500_003, "工序已被工艺路线引用,无法删除");
    ErrorCode PRO_PROCESS_IS_DISABLE = new ErrorCode(1_040_500_004, "工序已禁用");
    ErrorCode PRO_PROCESS_PARAM_CONFIG_INVALID = new ErrorCode(1_040_500_006, "参数采集方式不正确");
    ErrorCode PRO_PROCESS_PARAM_TEMPLATE_REQUIRED = new ErrorCode(1_040_500_007, "启用参数采集时必须选择参数模板");
    ErrorCode PRO_PROCESS_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_500_005, "导入工序数据不能为空");
    // ========== MES 生产管理-工序内容(1-040-500-100) ==========
    ErrorCode PRO_PROCESS_CONTENT_NOT_EXISTS = new ErrorCode(1_040_500_100, "工序内容不存在");
@@ -262,6 +281,9 @@
    ErrorCode PRO_ROUTE_ENABLE_NO_KEY_PROCESS = new ErrorCode(1_040_501_003, "工艺路线必须要有关键工序");
    ErrorCode PRO_ROUTE_ENABLE_PRODUCT_NO_BOM = new ErrorCode(1_040_501_004, "产品 {} 未配置工序的 BOM 消耗");
    ErrorCode PRO_ROUTE_IS_ENABLE = new ErrorCode(1_040_501_005, "工艺路线已启用,不允许操作");
    ErrorCode PRO_ROUTE_TEMPLATE_REFERENCE_NOT_FINISHED = new ErrorCode(1_040_501_008, "模板引用请选择成品,不能选择中间半成品");
    ErrorCode PRO_ROUTE_FULL_EXCEL_INVALID = new ErrorCode(1_040_501_007, "工艺流程模板错误:{}");
    ErrorCode PRO_ROUTE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_501_006, "导入工艺路线数据不能为空");
    // ========== MES 生产管理-工艺路线工序(1-040-501-100) ==========
    ErrorCode PRO_ROUTE_PROCESS_NOT_EXISTS = new ErrorCode(1_040_501_100, "工艺路线工序不存在");
    ErrorCode PRO_ROUTE_PROCESS_SORT_DUPLICATE = new ErrorCode(1_040_501_101, "序号已存在");
@@ -271,6 +293,12 @@
    ErrorCode PRO_ROUTE_PRODUCT_NOT_EXISTS = new ErrorCode(1_040_501_200, "工艺路线产品不存在");
    ErrorCode PRO_ROUTE_PRODUCT_ITEM_DUPLICATE = new ErrorCode(1_040_501_201, "此产品已配置了工艺路线");
    ErrorCode PRO_ROUTE_PRODUCT_ITEM_TYPE_INVALID = new ErrorCode(1_040_501_202, "工艺路线只能关联产品类型物料");
    ErrorCode PRO_ROUTE_PRODUCT_WAREHOUSE_REQUIRED = new ErrorCode(1_040_501_203, "产品【{}】未配置报工入库仓库、库区和库位");
    ErrorCode PRO_ROUTE_PROCESS_OUTPUT_REQUIRED = new ErrorCode(1_040_501_204, "工序【{}】未配置产出产品");
    ErrorCode PRO_ROUTE_PROCESS_OUTPUT_NOT_BOUND = new ErrorCode(1_040_501_205, "工序产出产品【{}】未绑定到当前工艺路线");
    ErrorCode PRO_ROUTE_MIDDLE_OUTPUT_INVALID = new ErrorCode(1_040_501_206, "中间工序【{}】只能产出半成品分类产品");
    ErrorCode PRO_ROUTE_LAST_OUTPUT_INVALID = new ErrorCode(1_040_501_207, "末道工序【{}】只能产出成品分类产品,且必须包含全部绑定成品");
    ErrorCode PRO_ROUTE_LAST_OUTPUT_ATTRIBUTION_REQUIRED = new ErrorCode(1_040_501_208, "末道工序【{}】的成品产出必须按产品归属配置,每个成品归属到自身,不能使用“通用”");
    // ========== MES 生产管理-工艺路线产品BOM(1-040-501-300) ==========
    ErrorCode PRO_ROUTE_PRODUCT_BOM_NOT_EXISTS = new ErrorCode(1_040_501_300, "工艺路线产品 BOM 不存在");
    ErrorCode PRO_ROUTE_PRODUCT_BOM_DUPLICATE = new ErrorCode(1_040_501_301, "当前 BOM 物料在此工序已经配置过");
@@ -297,6 +325,7 @@
    ErrorCode PRO_WORK_ORDER_PARAM_RECORD_TEMPLATE_NO_DETAIL = new ErrorCode(1_040_502_201, "参数模板没有明细,无法创建记录");
    ErrorCode PRO_WORK_ORDER_PARAM_RECORD_DETAIL_NOT_IN_TEMPLATE = new ErrorCode(1_040_502_202, "参数明细不属于所选模板");
    ErrorCode PRO_WORK_ORDER_PARAM_RECORD_REQUIRED_PARAM_MISSING = new ErrorCode(1_040_502_203, "必填参数【{}】未填写");
    ErrorCode PRO_WORK_ORDER_PARAM_RECORD_DUPLICATE_DETAIL = new ErrorCode(1_040_502_206, "参数明细重复");
    ErrorCode PRO_WORK_ORDER_PARAM_RECORD_TEMPLATE_NOT_CHANGE = new ErrorCode(1_040_502_204, "不允许更换参数模板,请删除后重新创建");
    ErrorCode PRO_WORK_ORDER_SALE_ORDER_NOT_EXISTS = new ErrorCode(1_040_502_205, "关联的营销订单(销售订单)不存在");
@@ -339,6 +368,9 @@
    ErrorCode PRO_FEEDBACK_UNCHECK_QUANTITY_EXISTS = new ErrorCode(1_040_506_012, "当前报工单未完成检验(待检数量:{}),无法执行报工");
    ErrorCode PRO_FEEDBACK_BACKFLUSH_BOM_REQUIRED = new ErrorCode(1_040_506_013, "当前工序为倒冲工序,但未配置BOM消耗,无法报工");
    ErrorCode PRO_FEEDBACK_CANNOT_CREATE_WHEN_PAUSED = new ErrorCode(1_040_506_014, "生产任务处于停工状态,无法报工");
    ErrorCode PRO_FEEDBACK_APPROVER_NOT_CONFIGURED = new ErrorCode(1_040_506_015, "报工单未指定审核人,无法审批");
    ErrorCode PRO_FEEDBACK_PARAM_INVALID = new ErrorCode(1_040_506_017, "报工参数错误:{}");
    ErrorCode PRO_FEEDBACK_NOT_APPROVER = new ErrorCode(1_040_506_016, "您不是该报工单的指定审核人,无权审批");
    // ========== MES 生产管理-生产流转卡(1-040-507-000) ==========
    ErrorCode PRO_CARD_NOT_EXISTS = new ErrorCode(1_040_507_000, "生产流转卡不存在");
@@ -368,6 +400,7 @@
    // ========== MES 质量管理-质检方案(1-040-600-000) ==========
    ErrorCode QC_TEMPLATE_NOT_EXISTS = new ErrorCode(1_040_600_000, "质检方案不存在");
    ErrorCode QC_TEMPLATE_CODE_DUPLICATE = new ErrorCode(1_040_600_001, "质检方案编号已存在");
    ErrorCode QC_TEMPLATE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_600_002, "导入质检方案数据不能为空");
    // ========== MES 质量管理-质检方案检测指标项(1-040-600-100) ==========
    ErrorCode QC_TEMPLATE_INDICATOR_NOT_EXISTS = new ErrorCode(1_040_600_100, "质检方案检测指标项不存在");
    // ========== MES 质量管理-质检方案产品关联(1-040-600-200) ==========
@@ -379,11 +412,13 @@
    ErrorCode QC_INDICATOR_CODE_DUPLICATE = new ErrorCode(1_040_601_001, "质检指标编码已存在");
    ErrorCode QC_INDICATOR_NAME_DUPLICATE = new ErrorCode(1_040_601_002, "质检指标名称已存在");
    ErrorCode QC_INDICATOR_RESULT_SPECIFICATION_REQUIRED = new ErrorCode(1_040_601_003, "结果值属性不能为空");
    ErrorCode QC_INDICATOR_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_601_004, "导入质检指标数据不能为空");
    // ========== MES 质量管理-缺陷类型(1-040-602-000) ==========
    ErrorCode QC_DEFECT_NOT_EXISTS = new ErrorCode(1_040_602_000, "缺陷类型不存在");
    ErrorCode QC_DEFECT_CODE_DUPLICATE = new ErrorCode(1_040_602_001, "缺陷类型编码已存在");
    ErrorCode QC_DEFECT_NAME_DUPLICATE = new ErrorCode(1_040_602_002, "缺陷类型名称已存在");
    ErrorCode QC_DEFECT_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_602_003, "导入缺陷类型数据不能为空");
    // ========== MES 质量管理-来料检验 IQC(1-040-603-000) ==========
    ErrorCode QC_IQC_NOT_EXISTS = new ErrorCode(1_040_603_000, "来料检验单不存在");
@@ -394,6 +429,7 @@
    ErrorCode QC_NO_TEMPLATE_FOR_ITEM = new ErrorCode(1_040_603_008, "物料【{}】未配置 IQC 检测模板,请先在质量管理中配置");
    ErrorCode QC_IQC_SOURCE_DOC_PARAMS_MISSING = new ErrorCode(1_040_603_006, "来源单据类型非空时,来源单据 ID 和来源单据行 ID 不能为空");
    ErrorCode QC_IQC_CHECK_RESULT_EMPTY = new ErrorCode(1_040_603_007, "完成检验单前,检测结果必须填写");
    ErrorCode QC_IQC_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_603_009, "导入来料检验单数据不能为空");
    // ========== MES 质量管理-来料检验行(1-040-603-100) ==========
    ErrorCode QC_IQC_LINE_NOT_EXISTS = new ErrorCode(1_040_603_100, "来料检验行不存在");
@@ -409,6 +445,7 @@
    ErrorCode QC_IPQC_SOURCE_LINE_NOT_BELONG = new ErrorCode(1_040_604_009, "来源单据行不属于该报工单");
    ErrorCode QC_IPQC_SOURCE_LINE_REQUIRED = new ErrorCode(1_040_604_010, "来源单据类型为报工时,来源产出行 ID 不能为空");
    ErrorCode QC_IPQC_SOURCE_LINE_NOT_PENDING = new ErrorCode(1_040_604_011, "来源产出行不是待检验状态");
    ErrorCode QC_IPQC_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_604_012, "导入过程检验单数据不能为空");
    // ========== MES 质量管理-过程检验行(1-040-604-100) ==========
    ErrorCode QC_IPQC_LINE_NOT_EXISTS = new ErrorCode(1_040_604_100, "过程检验行不存在");
@@ -430,6 +467,7 @@
    ErrorCode QC_OQC_NO_TEMPLATE = new ErrorCode(1_040_607_005, "当前产品未配置 OQC 检测模板");
    ErrorCode QC_OQC_CHECK_RESULT_EMPTY = new ErrorCode(1_040_607_006, "完成检验单前,检测结果必须填写");
    ErrorCode QC_OQC_SOURCE_DOC_TYPE_UNKNOWN = new ErrorCode(1_040_607_007, "未知的 OQC 来源单据类型");
    ErrorCode QC_OQC_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_607_008, "导入出货检验单数据不能为空");
    // ========== MES 质量管理-出货检验行(1-040-607-100) ==========
    ErrorCode QC_OQC_LINE_NOT_EXISTS = new ErrorCode(1_040_607_100, "出货检验行不存在");
@@ -441,6 +479,7 @@
    ErrorCode QC_RQC_QUANTITY_MISMATCH = new ErrorCode(1_040_608_004, "合格品与不合格品数量之和须等于检测数量");
    ErrorCode QC_RQC_NO_TEMPLATE = new ErrorCode(1_040_608_005, "当前产品未配置 RQC 检测模板");
    ErrorCode QC_RQC_CHECK_RESULT_EMPTY = new ErrorCode(1_040_608_006, "完成检验单前,检测结果必须填写");
    ErrorCode QC_RQC_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_608_007, "导入退货检验单数据不能为空");
    // ========== MES 质量管理-退货检验行(1-040-608-100) ==========
    ErrorCode QC_RQC_LINE_NOT_EXISTS = new ErrorCode(1_040_608_100, "退货检验行不存在");
@@ -450,6 +489,10 @@
    ErrorCode QC_NCR_NOT_PENDING_REVIEW = new ErrorCode(1_040_609_002, "只有待评审状态的不合格品处理单才可操作");
    ErrorCode QC_NCR_NOT_REVIEWED = new ErrorCode(1_040_609_003, "只有已评审状态的不合格品处理单才可执行处置");
    ErrorCode QC_NCR_NOT_DISPOSED = new ErrorCode(1_040_609_004, "只有已处置状态的不合格品处理单才可关闭");
    ErrorCode QC_NCR_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_609_005, "导入不合格品处理单数据不能为空");
    // ========== MES 质量管理-委外检测/试验单(1-040-610-000) ==========
    ErrorCode QC_OUTSOURCE_TEST_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_610_000, "导入委外检测/试验单数据不能为空");
    // ========== MES 仓库管理-仓库(1-040-700-000) ==========
    ErrorCode WM_WAREHOUSE_NOT_EXISTS = new ErrorCode(1_040_700_000, "仓库不存在");
@@ -459,6 +502,7 @@
    ErrorCode WM_WAREHOUSE_HAS_WORKSTATION = new ErrorCode(1_040_700_004, "仓库已被工作站引用,无法删除");
    ErrorCode WM_WAREHOUSE_HAS_MATERIAL_STOCK = new ErrorCode(1_040_700_005, "仓库下有库存记录,无法删除");
    ErrorCode WM_WAREHOUSE_IS_VIRTUAL = new ErrorCode(1_040_700_006, "虚拟仓库不允许操作");
    ErrorCode WM_WAREHOUSE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_700_007, "导入仓库数据不能为空");
    // ========== MES 仓库管理-库区(1-040-701-000) ==========
    ErrorCode WM_WAREHOUSE_LOCATION_NOT_EXISTS = new ErrorCode(1_040_701_000, "库区不存在");
@@ -470,6 +514,7 @@
    ErrorCode WM_WAREHOUSE_LOCATION_RELATION_INVALID = new ErrorCode(1_040_701_006, "库区不属于所选仓库");
    ErrorCode WM_WAREHOUSE_LOCATION_HAS_MATERIAL_STOCK = new ErrorCode(1_040_701_007, "库区下有库存记录,无法删除");
    ErrorCode WM_WAREHOUSE_LOCATION_IS_VIRTUAL = new ErrorCode(1_040_701_008, "虚拟库区不允许操作");
    ErrorCode WM_WAREHOUSE_LOCATION_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_701_009, "导入库区数据不能为空");
    // ========== MES 仓库管理-库位(1-040-702-000) ==========
    ErrorCode WM_WAREHOUSE_AREA_NOT_EXISTS = new ErrorCode(1_040_702_000, "库位不存在");
@@ -481,8 +526,10 @@
    ErrorCode WM_WAREHOUSE_AREA_HAS_MATERIAL_STOCK = new ErrorCode(1_040_702_006, "库位下有库存记录,无法删除");
    ErrorCode WM_WAREHOUSE_AREA_WAREHOUSE_MISMATCH = new ErrorCode(1_040_702_007, "库位不属于所选仓库");
    ErrorCode WM_WAREHOUSE_AREA_IS_VIRTUAL = new ErrorCode(1_040_702_008, "虚拟库位不允许操作");
    ErrorCode WM_WAREHOUSE_AREA_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_702_009, "导入库位数据不能为空");
    // ========== MES 仓库管理-库存(1-040-703-000) ==========
    ErrorCode WM_STOCK_IMPORT_INVALID = new ErrorCode(1_040_703_017, "库存导入数据无效:{}");
    ErrorCode WM_MATERIAL_STOCK_NOT_EXISTS = new ErrorCode(1_040_703_000, "库存记录不存在");
    ErrorCode WM_MATERIAL_STOCK_INSUFFICIENT = new ErrorCode(1_040_703_001, "库存数量不足");
    ErrorCode WM_TRANSACTION_TYPE_NOT_EXISTS = new ErrorCode(1_040_703_002, "库存事务类型不存在");
@@ -525,6 +572,7 @@
    ErrorCode WM_ITEM_RECEIPT_ALREADY_EXISTS = new ErrorCode(1_040_705_007, "该到货通知单已生成入库单,不能重复生成");
    ErrorCode WM_ITEM_RECEIPT_NOT_APPROVING = new ErrorCode(1_040_705_008, "只有待上架状态的采购入库单才能审核");
    ErrorCode WM_ITEM_RECEIPT_REJECT_REASON_REQUIRED = new ErrorCode(1_040_705_009, "审核不通过时必须填写不通过原因");
    ErrorCode WM_PURCHASE_ORDER_NOT_APPROVED = new ErrorCode(1_040_705_009, "只有已审核的采购订单才能生成到货通知单");
    ErrorCode WM_PURCHASE_ORDER_NOT_EXISTS = new ErrorCode(1_040_705_008, "采购订单不存在");
    ErrorCode WM_PURCHASE_ORDER_NO_ITEM = new ErrorCode(1_040_705_008, "采购订单无明细数据");
    ErrorCode WM_ITEM_RECEIPT_LINE_NOT_EXISTS = new ErrorCode(1_040_705_100, "采购入库单行不存在");
@@ -566,7 +614,7 @@
    ErrorCode WM_PRODUCT_ISSUE_WORKSTATION_NOT_EXISTS = new ErrorCode(1_040_708_005, "工作站不存在");
    ErrorCode WM_PRODUCT_ISSUE_CANCEL_NOT_ALLOWED = new ErrorCode(1_040_708_006, "生产领料出库单已完成或已取消,无法取消");
    ErrorCode WM_PRODUCT_ISSUE_LINE_NOT_EXISTS = new ErrorCode(1_040_708_100, "生产领料出库单行不存在");
    ErrorCode WM_PRODUCT_ISSUE_LINE_ITEM_NOT_IN_BOM = new ErrorCode(1_040_708_101, "当前物料不在生产工单的 BOM 物料清单中");
    ErrorCode WM_PRODUCT_ISSUE_LINE_ITEM_NOT_IN_BOM = new ErrorCode(1_040_708_101, "当前物料不在生产工单或当前任务工序的 BOM 物料清单中");
    ErrorCode WM_PRODUCT_ISSUE_CODE_DUPLICATE = new ErrorCode(1_040_708_102, "领料出库单编码已存在");
    ErrorCode WM_PRODUCT_ISSUE_DETAIL_NOT_EXISTS = new ErrorCode(1_040_708_200, "生产领料出库单明细不存在");
    ErrorCode WM_PRODUCT_ISSUE_DETAIL_ITEM_MISMATCH = new ErrorCode(1_040_708_201, "拣货明细的物料与领料单行的物料不一致");
@@ -666,6 +714,8 @@
    ErrorCode WM_RETURN_SALES_NO_LINE = new ErrorCode(1_040_713_005, "销售退货单至少需要一条行数据");
    ErrorCode WM_RETURN_SALES_DETAIL_QUANTITY_MISMATCH = new ErrorCode(1_040_713_006, "销售退货单行数量与明细数量不一致");
    ErrorCode WM_RETURN_SALES_CANCEL_NOT_ALLOWED = new ErrorCode(1_040_713_007, "销售退货单已完成或已取消,无法取消");
    ErrorCode WM_RETURN_SALES_AFTERSALE_LINKED = new ErrorCode(1_040_713_008, "该销售退货单关联售后申请,不能直接修改单头或删除;需要取消时请走取消流程");
    ErrorCode WM_RETURN_SALES_RQC_SOURCE_INVALID = new ErrorCode(1_040_713_009, "退货检验单来源行与销售退货单不一致,或该行已完成检验");
    ErrorCode WM_RETURN_SALES_LINE_NOT_EXISTS = new ErrorCode(1_040_713_100, "销售退货单行不存在");
    ErrorCode WM_RETURN_SALES_DETAIL_NOT_EXISTS = new ErrorCode(1_040_713_200, "销售退货单明细不存在");
    ErrorCode WM_RETURN_SALES_DETAIL_QUANTITY_EXCEED = new ErrorCode(1_040_713_201, "上架明细总数量不能超过退货行数量");
@@ -697,6 +747,8 @@
    ErrorCode WM_STOCK_TAKING_TASK_ALREADY_SUBMIT_APPROVAL = new ErrorCode(1_040_714_123, "盘点结果审批已提交,请勿重复提交");
    ErrorCode WM_STOCK_TAKING_TASK_RESULT_NOT_SUBMITTED = new ErrorCode(1_040_714_124, "只有已提交结果审批的盘点任务才能审核");
    ErrorCode WM_STOCK_TAKING_TASK_REJECT_REASON_REQUIRED = new ErrorCode(1_040_714_125, "审核不通过时必须填写不通过原因");
    ErrorCode WM_STOCK_TAKING_TASK_RESULT_APPROVAL_PENDING = new ErrorCode(1_040_714_126, "盘点结果审批已提交,审核完成前不允许修改盘点结果");
    ErrorCode WM_STOCK_TAKING_TASK_LINE_NOT_MATCH = new ErrorCode(1_040_714_127, "盘点任务行不属于指定的盘点任务");
    // ========== MES 仓库管理-销售出库单(1-040-714-000) ==========
    ErrorCode WM_PRODUCT_SALES_NOT_EXISTS = new ErrorCode(1_040_714_000, "销售出库单不存在");
@@ -742,6 +794,7 @@
    ErrorCode WM_MISC_ISSUE_REJECT_REASON_REQUIRED = new ErrorCode(1_040_715_007, "审核不通过时必须填写不通过原因");
    ErrorCode WM_MISC_ISSUE_LINE_NOT_EXISTS = new ErrorCode(1_040_715_100, "杂项出库单行不存在");
    ErrorCode WM_MISC_ISSUE_DETAIL_NOT_EXISTS = new ErrorCode(1_040_715_200, "杂项出库单明细不存在");
    ErrorCode WM_MISC_ISSUE_QUANTITY_INVALID = new ErrorCode(1_040_715_008, "杂项出库数量不能为空");
    // ========== MES 仓库管理-杂项入库单(1-040-716-000) ==========
    ErrorCode WM_MISC_RECEIPT_NOT_EXISTS = new ErrorCode(1_040_716_000, "杂项入库单不存在");
@@ -769,12 +822,15 @@
    ErrorCode WM_SALES_NOTICE_LINE_NOT_MATCH = new ErrorCode(1_040_720_012, "发货通知单行不属于指定的发货通知单");
    ErrorCode WM_SALES_NOTICE_SALE_ORDER_NOT_EXISTS = new ErrorCode(1_040_720_013, "销售订单不存在");
    ErrorCode WM_SALES_NOTICE_SALE_ORDER_ITEM_EMPTY = new ErrorCode(1_040_720_014, "销售订单明细为空");
    ErrorCode WM_SALES_NOTICE_SALE_ORDER_NOT_APPROVED = new ErrorCode(1_040_720_016, "只有已审核销售订单才能生成发货通知单");
    ErrorCode WM_SALES_NOTICE_PRODUCTION_NOT_READY = new ErrorCode(1_040_720_017, "订单关联生产计划尚未完成或取消,不能生成发货通知单");
    ErrorCode WM_SALES_NOTICE_ALREADY_EXISTS = new ErrorCode(1_040_720_015, "该销售订单已生成发货通知单,不能重复生成");
    // ========== MES 仓库管理-条码配置(1-040-730-000) ==========
    ErrorCode WM_BARCODE_CONFIG_NOT_EXISTS = new ErrorCode(1_040_730_000, "条码配置不存在");
    ErrorCode WM_BARCODE_CONFIG_BIZ_TYPE_DUPLICATE = new ErrorCode(1_040_730_001, "该业务类型的条码配置已存在");
    ErrorCode WM_BARCODE_CONFIG_HAS_BARCODE = new ErrorCode(1_040_730_002, "该条码配置已被条码记录关联,无法删除");
    ErrorCode WM_BARCODE_CONFIG_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_730_003, "导入条码配置数据不能为空");
    // ========== MES 仓库管理-条码清单(1-040-731-000) ==========
    ErrorCode WM_BARCODE_NOT_EXISTS = new ErrorCode(1_040_731_000, "条码不存在");
@@ -785,6 +841,7 @@
    ErrorCode BARCODE_CONFIG_NOT_EXISTS = new ErrorCode(1_040_731_005, "条码配置不存在");
    ErrorCode BARCODE_FORMAT_INVALID = new ErrorCode(1_040_731_006, "条码格式不支持渲染");
    ErrorCode BARCODE_CONTENT_EMPTY = new ErrorCode(1_040_731_007, "条码内容不能为空");
    ErrorCode WM_BARCODE_DISABLED = new ErrorCode(1_040_731_008, "条码已停用,无法继续扫码使用");
    // ========== MES 仓库管理-SN 码(1-040-732-000) ==========
    ErrorCode WM_SN_NOT_EXISTS = new ErrorCode(1_040_732_000, "SN 码不存在");
@@ -831,6 +888,8 @@
    ErrorCode PD_PROJECT_NOT_UPLOAD_FOR_APPROVAL = new ErrorCode(1_040_800_008, "只有待审核状态的设计项目才能提交审批");
    ErrorCode PD_PROJECT_NOT_APPROVING = new ErrorCode(1_040_800_009, "只有审批中状态的设计项目才能审核");
    ErrorCode PD_PROJECT_AUDIT_REJECT_REASON_REQUIRED = new ErrorCode(1_040_800_010, "审核不通过时必须填写不通过原因");
    ErrorCode PD_PROJECT_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_800_011, "导入设计项目数据不能为空");
    ErrorCode PD_PROJECT_NO_DOCUMENT = new ErrorCode(1_040_800_012, "设计项目至少需要一份资料才允许提交审批");
    // ========== MES 产品设计-资料子表(1-040-801-000) ==========
    ErrorCode PD_DOCUMENT_NOT_EXISTS = new ErrorCode(1_040_801_000, "设计资料不存在");
@@ -845,10 +904,12 @@
    // ========== MES 产品设计-工艺参数(1-040-804-000) ==========
    ErrorCode PD_PROCESS_PARAM_NOT_EXISTS = new ErrorCode(1_040_804_000, "工艺参数不存在");
    ErrorCode PD_PROCESS_PARAM_CODE_DUPLICATE = new ErrorCode(1_040_804_001, "工艺参数编码已存在");
    ErrorCode PD_PROCESS_PARAM_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_804_002, "导入工艺参数数据不能为空");
    // ========== MES 产品设计-工艺参数模板(1-040-805-000) ==========
    ErrorCode PD_PROCESS_PARAM_TEMPLATE_NOT_EXISTS = new ErrorCode(1_040_805_000, "工艺参数模板不存在");
    ErrorCode PD_PROCESS_PARAM_TEMPLATE_CODE_DUPLICATE = new ErrorCode(1_040_805_001, "工艺参数模板编码已存在");
    ErrorCode PD_PROCESS_PARAM_TEMPLATE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_805_002, "导入工艺参数模板数据不能为空");
    // ========== MES 产品设计-换位导线技术参数(1-040-806-000) ==========
    ErrorCode PD_CTC_NOT_EXISTS = new ErrorCode(1_040_806_000, "换位导线技术参数不存在");
@@ -866,11 +927,13 @@
    ErrorCode PD_TECH_CONFIRM_NOT_PENDING_AUDIT = new ErrorCode(1_040_808_004, "只有待审核状态的技术确认函才能审核");
    ErrorCode PD_TECH_CONFIRM_REJECT_REASON_REQUIRED = new ErrorCode(1_040_808_007, "审核不通过时必须填写不通过原因");
    ErrorCode PD_TECH_CONFIRM_NOT_AUDITED_FOR_CUSTOMER_CONFIRM = new ErrorCode(1_040_808_008, "只有已审核状态的技术确认函才能进行客户确认");
    ErrorCode PD_TECH_CONFIRM_NO_REQUIRED = new ErrorCode(1_040_808_009, "确认函编号不能为空");
    // ========== MES 产品设计-产品档案与基础数据(1-040-809-000) ==========
    ErrorCode PD_PRODUCT_NOT_EXISTS = new ErrorCode(1_040_809_000, "产品档案不存在");
    ErrorCode PD_PRODUCT_AUDIT_STATUS_INVALID = new ErrorCode(1_040_809_001, "产品档案状态不正确,无法执行该操作");
    ErrorCode PD_PRODUCT_SUBMIT_DUPLICATE = new ErrorCode(1_040_809_002, "产品档案已提交审批,请勿重复提交");
    ErrorCode PD_PRODUCT_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_809_003, "导入产品档案数据不能为空");
    ErrorCode PD_ELECTRICITY_TYPE_NOT_EXISTS = new ErrorCode(1_040_809_100, "用电类型不存在");
    ErrorCode PD_VOLTAGE_LEVEL_NOT_EXISTS = new ErrorCode(1_040_809_101, "电压等级不存在");
    ErrorCode PD_SERVICE_PACKAGE_NOT_EXISTS = new ErrorCode(1_040_809_102, "服务套餐不存在");
@@ -893,4 +956,50 @@
    ErrorCode MES_PRO_MAINTENANCE_CALENDAR_NOT_EXISTS = new ErrorCode(1_040_901_100, "电力运维日历不存在");
    ErrorCode MES_PRO_MAINTENANCE_CALENDAR_NOT_PREPARE = new ErrorCode(1_040_901_101, "电力运维日历状态不正确,无法执行该操作");
    // ========== MES 仓库管理-单据导入(1-040-950-000) ==========
    ErrorCode WM_MISC_ISSUE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_950_000, "导入杂项出库单数据不能为空!");
    ErrorCode WM_MISC_RECEIPT_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_950_001, "导入杂项入库单数据不能为空!");
    ErrorCode WM_OUTSOURCE_ISSUE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_950_002, "导入外协发料单数据不能为空!");
    ErrorCode WM_OUTSOURCE_RECEIPT_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_950_003, "导入外协入库单数据不能为空!");
    ErrorCode WM_PRODUCT_SALES_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_950_004, "导入销售出库单数据不能为空!");
    ErrorCode WM_PRODUCT_ISSUE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_950_005, "导入生产领料出库单数据不能为空!");
    ErrorCode WM_PRODUCT_RECPT_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_950_006, "导入产品收货单数据不能为空!");
    ErrorCode WM_ITEM_RECEIPT_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_950_007, "导入采购入库单数据不能为空!");
    ErrorCode WM_EQUIP_RECEIPT_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_950_008, "导入设备入库单数据不能为空!");
    ErrorCode WM_ARRIVAL_NOTICE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_950_009, "导入到货通知单数据不能为空!");
    ErrorCode WM_SALES_NOTICE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_950_010, "导入发货通知单数据不能为空!");
    ErrorCode WM_RETURN_ISSUE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_950_011, "导入生产退料单数据不能为空!");
    ErrorCode WM_RETURN_SALES_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_950_012, "导入销售退货单数据不能为空!");
    ErrorCode WM_RETURN_VENDOR_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_950_013, "导入供应商退货单数据不能为空!");
    ErrorCode WM_TRANSFER_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_950_014, "导入转移单数据不能为空!");
    ErrorCode WM_PACKAGE_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_950_015, "导入装箱单数据不能为空!");
    // ========== MES 能耗管理(1-040-902-000) ==========
    ErrorCode EM_METER_NOT_EXISTS = new ErrorCode(1_040_902_000, "能耗计量点不存在");
    ErrorCode EM_METER_CODE_DUPLICATE = new ErrorCode(1_040_902_001, "能耗计量点编码已存在");
    ErrorCode EM_METER_HAS_RECORD = new ErrorCode(1_040_902_002, "能耗计量点已存在抄表记录,无法删除");
    ErrorCode EM_METER_OBJECT_NOT_EXISTS = new ErrorCode(1_040_902_003, "计量点关联的车间/产线/设备不存在");
    ErrorCode EM_RECORD_NOT_EXISTS = new ErrorCode(1_040_902_010, "能耗抄表记录不存在");
    ErrorCode EM_RECORD_DATE_DUPLICATE = new ErrorCode(1_040_902_011, "该计量点在当日已存在抄表记录");
    ErrorCode EM_RECORD_READING_INVALID = new ErrorCode(1_040_902_012, "期末读数不能小于期初读数");
    ErrorCode EM_QUOTA_NOT_EXISTS = new ErrorCode(1_040_902_020, "能耗考核指标不存在");
    ErrorCode EM_QUOTA_OBJECT_NOT_EXISTS = new ErrorCode(1_040_902_021, "考核对象不存在");
    ErrorCode EM_ALERT_NOT_EXISTS = new ErrorCode(1_040_902_030, "能耗预警不存在");
    ErrorCode EM_ALERT_ALREADY_HANDLED = new ErrorCode(1_040_902_031, "能耗预警已处理,请勿重复操作");
    // ========== MES 生产模块-单据导入(1-040-960-000) ==========
    ErrorCode MES_PRO_WORK_ORDER_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_960_000, "导入生产工单数据不能为空!");
    ErrorCode MES_PRO_FEEDBACK_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_960_001, "导入生产报工数据不能为空!");
    ErrorCode MES_PRO_TASK_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_960_002, "导入生产任务数据不能为空!");
    ErrorCode MES_PRO_MPS_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_960_003, "导入 MPS 数据不能为空!");
    ErrorCode MES_PRO_CARD_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_960_004, "导入生产流转卡数据不能为空!");
    ErrorCode MES_PRO_EMERGENCY_PLAN_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_960_005, "导入应急处置预案数据不能为空!");
    ErrorCode MES_PRO_ALTERNATIVE_PLAN_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_960_006, "导入作业替代方案数据不能为空!");
    ErrorCode MES_PRO_MAINTENANCE_PLAN_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_960_007, "导入电力作业计划数据不能为空!");
    ErrorCode MES_PRO_MAINTENANCE_CALENDAR_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_960_008, "导入电力运维日历数据不能为空!");
    ErrorCode PD_CTC_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_960_009, "导入换位导线技术参数数据不能为空!");
    ErrorCode PD_CTC_REEL_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_960_010, "导入盘具计算数据不能为空!");
    ErrorCode PD_TECH_CONFIRM_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_960_011, "导入技术确认函数据不能为空!");
}