gaoluyang
6 天以前 7bd10d34e8a8dc2437ec8551eb511e37634d7306
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
@@ -18,7 +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_NOT_LEAF = new ErrorCode(1_040_100_008, "只能将物料挂载到叶子分类(该分类下存在子分类)");
    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, "计量单位不存在");
@@ -32,8 +32,8 @@
    // ========== MES 基础数据-物料(1-040-102-000) ==========
    ErrorCode MD_ITEM_NOT_EXISTS = new ErrorCode(1_040_102_000, "物料不存在");
    ErrorCode MD_ITEM_CODE_DUPLICATE = new ErrorCode(1_040_102_001, "物料编码已存在");
    // 1_040_102_002:物料名称唯一校验已取消(允许同名不同编码,与 MDM 物料对齐),此码仅保留占位,请勿再用于校验
    ErrorCode MD_ITEM_NAME_DUPLICATE = new ErrorCode(1_040_102_002, "物料名称已存在");
    ErrorCode MD_ITEM_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_102_003, "导入物料数据不能为空");
    ErrorCode MD_ITEM_BATCH_REQUIRED = new ErrorCode(1_040_102_004, "当前物料启用了批次管理,请选择批次");
    ErrorCode MD_ITEM_IS_DISABLE = new ErrorCode(1_040_102_005, "物料已禁用");
@@ -41,6 +41,7 @@
    ErrorCode MD_ITEM_BATCH_CONFIG_NOT_EXISTS = new ErrorCode(1_040_102_100, "物料批次属性配置不存在");
    ErrorCode MD_ITEM_BATCH_CONFIG_AT_LEAST_ONE_FLAG = new ErrorCode(1_040_102_101, "批次管理已启用,至少需要配置一个批次属性");
    ErrorCode MD_ITEM_PRODUCT_BOM_REQUIRED = new ErrorCode(1_040_102_102, "产品类物料启用前,必须配置至少一个 BOM 组成");
    ErrorCode MD_ITEM_BATCH_CONFIG_AT_LEAST_ONE_APPROVE_FLAG = new ErrorCode(1_040_102_103, "需要配置一个批次属性,请在审批意见中填写");
    // ========== MES 仓库管理-批次管理(1-040-717-000) ==========
    ErrorCode WM_BATCH_PRODUCE_DATE_REQUIRED = new ErrorCode(1_040_717_000, "批次配置要求生产日期不能为空");
@@ -64,7 +65,6 @@
    // ========== MES 基础数据-客户(1-040-103-000) ==========
    ErrorCode MD_CLIENT_NOT_EXISTS = new ErrorCode(1_040_103_000, "客户不存在");
    ErrorCode MD_CLIENT_CODE_DUPLICATE = new ErrorCode(1_040_103_001, "客户编码已存在");
    ErrorCode MD_CLIENT_NAME_DUPLICATE = new ErrorCode(1_040_103_002, "客户名称已存在");
    ErrorCode MD_CLIENT_NICKNAME_DUPLICATE = new ErrorCode(1_040_103_003, "客户简称已存在");
    ErrorCode MD_CLIENT_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_103_004, "导入客户数据不能为空");
@@ -78,6 +78,12 @@
    ErrorCode MD_VENDOR_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_104_004, "导入供应商数据不能为空");
    ErrorCode MD_VENDOR_HAS_REFERENCE = new ErrorCode(1_040_104_005, "该供应商已被其他业务引用,无法删除");
    ErrorCode MD_VENDOR_IS_DISABLE = new ErrorCode(1_040_104_006, "供应商已禁用");
    // ========== MES 基础数据-工厂(1-040-105-100) ==========
    ErrorCode MD_FACTORY_NOT_EXISTS = new ErrorCode(1_040_105_100, "工厂不存在");
    ErrorCode MD_FACTORY_CODE_DUPLICATE = new ErrorCode(1_040_105_101, "工厂编码已存在");
    ErrorCode MD_FACTORY_NAME_DUPLICATE = new ErrorCode(1_040_105_102, "工厂名称已存在");
    ErrorCode MD_FACTORY_HAS_WORKSHOP = new ErrorCode(1_040_105_103, "工厂下存在车间,无法删除");
    // ========== MES 基础数据-车间(1-040-105-000) ==========
    ErrorCode MD_WORKSHOP_NOT_EXISTS = new ErrorCode(1_040_105_000, "车间不存在");
@@ -169,12 +175,14 @@
    ErrorCode DV_MACHINERY_HAS_CHECK_RECORD = new ErrorCode(1_040_301_004, "设备已关联点检记录,无法删除");
    ErrorCode DV_MACHINERY_HAS_MAINTEN_RECORD = new ErrorCode(1_040_301_005, "设备已关联保养记录,无法删除");
    ErrorCode DV_MACHINERY_HAS_REPAIR = new ErrorCode(1_040_301_006, "设备已关联维修工单,无法删除");
    ErrorCode DV_MACHINERY_WORKSTATION_NOT_EXISTS = new ErrorCode(1_040_301_008, "工作站编码不存在");
    // ========== MES 设备管理-点检保养项目(1-040-304-000) ==========
    ErrorCode DV_SUBJECT_NOT_EXISTS = new ErrorCode(1_040_304_000, "点检保养项目不存在");
    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, "点检计划不存在");
@@ -216,6 +224,21 @@
    // ========== MES 设备管理-点检记录明细(1-040-306-100) ==========
    ErrorCode DV_CHECK_RECORD_LINE_NOT_EXISTS = new ErrorCode(1_040_306_100, "设备点检记录明细不存在");
    // ========== MES 设备管理-计量器具(1-040-307-000) ==========
    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, "计量器具已关联检测记录,无法删除");
    // ========== 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, "计量检测编号已存在");
    // ========== MES 设备管理-设备借用归还(1-040-308-000) ==========
    ErrorCode DV_BORROW_NOT_EXISTS = new ErrorCode(1_040_308_000, "设备借用记录不存在");
    ErrorCode DV_BORROW_CODE_DUPLICATE = new ErrorCode(1_040_308_001, "借用单号已存在");
    ErrorCode DV_BORROW_ALREADY_RETURNED = new ErrorCode(1_040_308_002, "该设备借出记录已归还,无需重复归还");
    ErrorCode DV_BORROW_MACHINERY_BORROWED = new ErrorCode(1_040_308_003, "该设备尚有未归还的借用记录,请先归还后再借用");
    // ========== MES 工具管理-工具类型(1-040-400-000) ==========
    ErrorCode TM_TOOL_TYPE_NOT_EXISTS = new ErrorCode(1_040_400_000, "工具类型不存在");
    ErrorCode TM_TOOL_TYPE_CODE_DUPLICATE = new ErrorCode(1_040_400_001, "工具类型编码已存在");
@@ -244,6 +267,7 @@
    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_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, "序号已存在");
@@ -252,6 +276,13 @@
    // ========== MES 生产管理-工艺路线产品(1-040-501-200) ==========
    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, "物料【{}】的主数据类型及MES分类均非成品/半成品,请先核对物料类型");
    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 物料在此工序已经配置过");
@@ -264,6 +295,8 @@
    ErrorCode PRO_WORK_ORDER_HAS_CHILDREN = new ErrorCode(1_040_502_004, "存在子工单,无法删除");
    ErrorCode PRO_WORK_ORDER_PRODUCT_MISMATCH = new ErrorCode(1_040_502_005, "当前产品物料与生产工单产品不一致");
    ErrorCode PRO_WORK_ORDER_SCHEDULE_QUANTITY_EXCEED = new ErrorCode(1_040_502_006, "排产数量超限:工单{}(计划{},已排产{},本次排产{})");
    ErrorCode PRO_WORK_ORDER_ALREADY_STARTED = new ErrorCode(1_040_502_007, "工单已启动生产,无需重复启动");
    ErrorCode PRO_WORK_ORDER_BATCH_NOT_EDITABLE = new ErrorCode(1_040_502_008, "工单已完工或已取消,无法管理批次");
    ErrorCode PRO_WORK_ORDER_BOM_NOT_EXISTS = new ErrorCode(1_040_502_100, "生产工单BOM不存在");
    // ========== MES 生产管理-生产工单工序(1-040-502-300) ==========
@@ -281,13 +314,17 @@
    // ========== MES 生产管理-生产任务(1-040-503-000) ==========
    ErrorCode PRO_TASK_NOT_EXISTS = new ErrorCode(1_040_503_000, "生产任务不存在");
    ErrorCode PRO_TASK_SCHEDULE_INVALID = new ErrorCode(1_040_503_020, "排产校验未通过:{}");
    ErrorCode PRO_TASK_SCHEDULE_PREVIEW_CHANGED = new ErrorCode(1_040_503_021, "排产数据已变化或预览已过期,请重新生成预览后确认");
    ErrorCode PRO_TASK_ALREADY_FINISHED = new ErrorCode(1_040_503_001, "生产任务已完成或已取消,不能继续操作");
    ErrorCode PRO_TASK_WORK_ORDER_MISMATCH = new ErrorCode(1_040_503_002, "生产任务不属于当前生产工单");
    ErrorCode PRO_TASK_WORKSTATION_MISMATCH = new ErrorCode(1_040_503_003, "生产任务不属于当前工作站");
    ErrorCode PRO_TASK_ROUTE_PROCESS_MISMATCH = new ErrorCode(1_040_503_004, "生产任务与当前工艺路线或工序不一致");
    ErrorCode PRO_TASK_ITEM_MISMATCH = new ErrorCode(1_040_503_005, "检验物料与生产任务物料不一致");
    ErrorCode PRO_TASK_HAS_FEEDBACK = new ErrorCode(1_040_503_006, "该任务下存在报工记录,无法删除(避免报工追溯断链)");
    ErrorCode PRO_WORKSTATION_PROCESS_MISMATCH = new ErrorCode(1_040_503_006, "工作站所属工序与当前工序不一致");
    ErrorCode PRO_WORKSTATION_PROCESS_MISMATCH = new ErrorCode(1_040_503_009, "工作站所属工序与当前工序不一致"); // 修正编号冲突
    ErrorCode PRO_TASK_CANNOT_PAUSE = new ErrorCode(1_040_503_007, "只有【草稿】、【生产中】或【部分完成】的任务可以停工");
    ErrorCode PRO_TASK_NOT_PAUSED = new ErrorCode(1_040_503_008, "任务不处于【已停工】状态,无法复工");
    // ========== MES 生产管理-生产任务投料(1-040-503-100) ==========
    ErrorCode PRO_TASK_ISSUE_NOT_EXISTS = new ErrorCode(1_040_503_100, "生产任务投料记录不存在");
@@ -315,6 +352,12 @@
    ErrorCode PRO_FEEDBACK_QUALIFIED_UNQUALIFIED_REQUIRED = new ErrorCode(1_040_506_011, "请输入合格品和不良品数量,且合计须大于 0");
    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_PENDING_PRODUCE_UNREPAIRABLE = new ErrorCode(1_040_506_015,
            "报工对应的产出入库单已存在处理结果,无法自动补生成待检行,请运行质检报工数据修复脚本核对");
    ErrorCode PRO_FEEDBACK_PREV_PROCESS_NOT_FINISHED = new ErrorCode(1_040_506_016,
            "上一道工序「{}」尚未报工完成(剩余 {}),请先完成上一道工序的报工");
    ErrorCode PRO_FEEDBACK_EQUIPMENT_INVALID = new ErrorCode(1_040_506_017, "报工设备校验失败:{}");
    // ========== MES 生产管理-生产流转卡(1-040-507-000) ==========
    ErrorCode PRO_CARD_NOT_EXISTS = new ErrorCode(1_040_507_000, "生产流转卡不存在");
@@ -339,6 +382,11 @@
    ErrorCode PRO_MPS_CODE_DUPLICATE = new ErrorCode(1_040_509_006, "MPS 编码已存在");
    ErrorCode PRO_MPS_HAS_WORK_ORDER = new ErrorCode(1_040_509_007, "MPS 已关联生产工单,无法删除");
    ErrorCode PRO_MPS_MES_PRODUCT_NOT_EXISTS = new ErrorCode(1_040_509_008, "MES 产品不存在,无法创建 MPS,产品:{}");
    ErrorCode PRO_MPS_WORK_ORDER_HAS_FEEDBACK = new ErrorCode(1_040_509_009, "该计划关联的生产订单已有报工记录,无法取消!");
    ErrorCode PRO_MPS_NOT_APPROVED = new ErrorCode(1_040_509_011, "只有已审核状态的 MPS 才能执行此操作,请先提交审核");
    ErrorCode PRO_MPS_NO_MATERIAL_SHORTAGE = new ErrorCode(1_040_509_013, "该计划所需物料库存充足,无需生成采购单");
    ErrorCode PRO_MPS_PROCESS_NOT_DEPLOYED = new ErrorCode(1_040_509_014, "提交审核失败:生产计划审批流程(mes-pro-mps-audit)尚未部署,请联系管理员在「协同办公 - 流程模型」中部署该流程后重新提交");
    ErrorCode PRO_MPS_NO_MATERIAL_BOM = new ErrorCode(1_040_509_015, "生产计划{}的产品【{}】尚未维护产品 BOM 或工艺路线投料 BOM,无法计算物料缺口,请先到「生产基础数据 - 物料BOM维护」或「生产基础数据 - 工艺路线」中配置投料后再生成采购申请单");
    // ========== MES 质量管理-质检方案(1-040-600-000) ==========
    ErrorCode QC_TEMPLATE_NOT_EXISTS = new ErrorCode(1_040_600_000, "质检方案不存在");
@@ -354,6 +402,12 @@
    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_PARENT_NOT_EXISTS = new ErrorCode(1_040_601_004, "父指标不存在");
    ErrorCode QC_INDICATOR_PARENT_NOT_GROUP = new ErrorCode(1_040_601_005, "父指标不是分组项");
    ErrorCode QC_INDICATOR_PARENT_SELF = new ErrorCode(1_040_601_006, "父指标不能是自己");
    ErrorCode QC_INDICATOR_GROUP_CANNOT_NEST = new ErrorCode(1_040_601_007, "分组项不能挂在其它指标下");
    ErrorCode QC_INDICATOR_HAS_CHILDREN = new ErrorCode(1_040_601_008, "该指标下已有子项");
    ErrorCode QC_INDICATOR_RESULT_TYPE_REQUIRED = new ErrorCode(1_040_601_009, "录入项的结果值类型不能为空");
    // ========== MES 质量管理-缺陷类型(1-040-602-000) ==========
    ErrorCode QC_DEFECT_NOT_EXISTS = new ErrorCode(1_040_602_000, "缺陷类型不存在");
@@ -419,6 +473,13 @@
    // ========== MES 质量管理-退货检验行(1-040-608-100) ==========
    ErrorCode QC_RQC_LINE_NOT_EXISTS = new ErrorCode(1_040_608_100, "退货检验行不存在");
    // ========== MES 质量管理-不合格品处理 NCR(1-040-609-000) ==========
    ErrorCode QC_NCR_NOT_EXISTS = new ErrorCode(1_040_609_000, "不合格品处理单不存在");
    ErrorCode QC_NCR_CODE_DUPLICATE = new ErrorCode(1_040_609_001, "不合格品处理单编号已存在");
    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, "只有已处置状态的不合格品处理单才可关闭");
    // ========== MES 仓库管理-仓库(1-040-700-000) ==========
    ErrorCode WM_WAREHOUSE_NOT_EXISTS = new ErrorCode(1_040_700_000, "仓库不存在");
    ErrorCode WM_WAREHOUSE_CODE_DUPLICATE = new ErrorCode(1_040_700_001, "仓库编码已存在");
@@ -465,9 +526,21 @@
    ErrorCode WM_TRANSACTION_LIST_EMPTY = new ErrorCode(1_040_703_011, "库存事务列表不能为空");
    ErrorCode WM_TRANSACTION_BATCH_NOT_EXISTS = new ErrorCode(1_040_703_012, "批次记录不存在");
    ErrorCode WM_MATERIAL_STOCK_REQUIRED = new ErrorCode(1_040_703_013, "库存记录不能为空");
    ErrorCode WM_MATERIAL_STOCK_SELECTION_MISMATCH = new ErrorCode(1_040_703_014, "库存记录与提交的物料、批次或库位信息不一致");
    ErrorCode WM_MATERIAL_STOCK_SELECTION_MISMATCH = new ErrorCode(1_040_703_014, "所选库存记录与单据信息不一致,请核对后重新操作");
    ErrorCode WM_MATERIAL_STOCK_QUANTITY_INVALID = new ErrorCode(1_040_703_015, "调整数量不能为空或零");
    ErrorCode WM_MATERIAL_STOCK_FROZEN = new ErrorCode(1_040_703_016, "库存记录已冻结,无法移库");
    ErrorCode WM_MATERIAL_STOCK_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_040_703_017, "导入的库存数据不能为空");
    ErrorCode WM_MATERIAL_STOCK_IMPORT_FIELD_REQUIRED = new ErrorCode(1_040_703_018, "{}不能为空");
    ErrorCode WM_MATERIAL_STOCK_IMPORT_ITEM_NOT_EXISTS = new ErrorCode(1_040_703_019, "物料编码({})不存在");
    ErrorCode WM_MATERIAL_STOCK_IMPORT_WAREHOUSE_NOT_EXISTS = new ErrorCode(1_040_703_020, "仓库({})不存在");
    ErrorCode WM_MATERIAL_STOCK_IMPORT_LOCATION_NOT_EXISTS = new ErrorCode(1_040_703_021, "库区({})不存在");
    ErrorCode WM_MATERIAL_STOCK_IMPORT_AREA_NOT_EXISTS = new ErrorCode(1_040_703_022, "库位({})不存在");
    ErrorCode WM_MATERIAL_STOCK_IMPORT_BATCH_NOT_EXISTS = new ErrorCode(1_040_703_023, "批次({})不存在");
    ErrorCode WM_MATERIAL_STOCK_IMPORT_VENDOR_NOT_EXISTS = new ErrorCode(1_040_703_024, "供应商({})不存在");
    ErrorCode WM_MATERIAL_STOCK_IMPORT_QUANTITY_INVALID = new ErrorCode(1_040_703_025, "在库数量({})无效");
    ErrorCode WM_MATERIAL_STOCK_IMPORT_EXISTS = new ErrorCode(1_040_703_026, "库存记录已存在");
    ErrorCode WM_MATERIAL_STOCK_IMPORT_OPERATION_INVALID = new ErrorCode(1_040_703_027, "操作类型({})不支持");
    ErrorCode WM_MATERIAL_STOCK_IMPORT_STOCK_NOT_EXISTS = new ErrorCode(1_040_703_028, "库存记录不存在,无法执行该操作");
    // ========== MES 仓库管理-到货通知单(1-040-704-000) ==========
    ErrorCode WM_ARRIVAL_NOTICE_NOT_EXISTS = new ErrorCode(1_040_704_000, "到货通知单不存在");
@@ -539,6 +612,10 @@
    ErrorCode WM_PRODUCT_ISSUE_DETAIL_LINE_NOT_MATCH = new ErrorCode(1_040_708_202, "拣货明细不属于指定的领料出库单");
    ErrorCode WM_PRODUCT_ISSUE_NO_DETAIL = new ErrorCode(1_040_708_203, "领料出库单没有拣货明细,无法执行领出");
    ErrorCode WM_PRODUCT_ISSUE_TASK_NOT_EXISTS = new ErrorCode(1_040_708_204, "生产任务不存在");
    ErrorCode WM_PRODUCT_ISSUE_SUPPLEMENT_REASON_REQUIRED = new ErrorCode(1_040_708_007, "补领辅料必须填写补领原因");
    ErrorCode WM_PRODUCT_ISSUE_SUPPLEMENT_WORK_ORDER_NOT_STARTED = new ErrorCode(1_040_708_008, "工单{}尚未确认,无法补领辅料,请先确认工单");
    ErrorCode WM_PRODUCT_ISSUE_GENERATE_BOM_EMPTY = new ErrorCode(1_040_708_009, "生产工单{}的 BOM 物料清单为空,无法生成领料任务");
    ErrorCode WM_PRODUCT_ISSUE_GENERATE_ALL_ISSUED = new ErrorCode(1_040_708_010, "生产工单{}按 BOM 应领的物料已全部领过,无需重复生成领料任务");
    // ========== MES 仓库管理-生产入库单(1-040-709-000) ==========
    ErrorCode WM_PRODUCT_PRODUCE_NOT_EXISTS = new ErrorCode(1_040_709_000, "生产入库单不存在");
@@ -597,6 +674,9 @@
    ErrorCode WM_RETURN_VENDOR_DETAIL_NOT_EXISTS = new ErrorCode(1_040_711_200, "供应商退货单明细不存在");
    ErrorCode WM_RETURN_VENDOR_DETAIL_QUANTITY_INVALID = new ErrorCode(1_040_711_201, "退货明细数量必须大于 0");
    ErrorCode WM_RETURN_VENDOR_DETAIL_LINE_NOT_MATCH = new ErrorCode(1_040_711_202, "拣货明细不属于指定的供应商退货单");
    ErrorCode WM_RETURN_VENDOR_PURCHASE_ORDER_REQUIRED = new ErrorCode(1_040_711_008, "请先选择采购订单");
    ErrorCode WM_RETURN_VENDOR_PURCHASE_ORDER_NO_ITEM = new ErrorCode(1_040_711_009, "采购订单无明细数据,无法带入物料");
    ErrorCode WM_RETURN_VENDOR_ITEM_NOT_IN_PURCHASE_ORDER = new ErrorCode(1_040_711_010, "退货物料不在所关联采购订单内,无法添加");
    // ========== MES 仓库管理-产品收货单(1-040-712-000) ==========
    ErrorCode WM_PRODUCT_RECPT_NOT_EXISTS = new ErrorCode(1_040_712_000, "产品收货单不存在");
@@ -654,6 +734,18 @@
    ErrorCode WM_STOCK_TAKING_TASK_RESULT_NOT_EXISTS = new ErrorCode(1_040_714_119, "盘点结果不存在");
    ErrorCode WM_STOCK_TAKING_TASK_LINE_ALREADY_TAKEN = new ErrorCode(1_040_714_120, "该盘点清单行已有盘点记录,不能重复盘点");
    ErrorCode WM_STOCK_TAKING_TASK_NOT_FINISHED = new ErrorCode(1_040_714_121, "只有已完成状态的盘点任务才能处理差异");
    ErrorCode WM_STOCK_TAKING_TASK_DIFFERENCE_PROCESSED = new ErrorCode(1_040_714_122, "该盘点任务的差异已处理过,不能重复调整库存");
    // ========== 库存预警 1_040_750_xxx ==========
    ErrorCode WM_STOCK_WARNING_RULE_NOT_EXISTS = new ErrorCode(1_040_750_000, "库存预警规则不存在");
    ErrorCode WM_STOCK_WARNING_ITEM_NOT_EXISTS = new ErrorCode(1_040_750_001, "所选物料不存在");
    ErrorCode WM_STOCK_WARNING_WAREHOUSE_NOT_EXISTS = new ErrorCode(1_040_750_002, "所选仓库不存在");
    ErrorCode WM_SORT_TASK_NOT_EXISTS = new ErrorCode(1_040_750_100, "分拣任务不存在");
    ErrorCode WM_SORT_TASK_LINE_NOT_EXISTS = new ErrorCode(1_040_750_101, "分拣任务明细不存在");
    ErrorCode WM_SORT_TASK_NOT_PENDING = new ErrorCode(1_040_750_102, "只有待分拣或分拣中的任务才允许此操作");
    ErrorCode WM_SORT_TASK_SCAN_MISMATCH = new ErrorCode(1_040_750_103, "扫码结果与分拣明细不匹配");
    ErrorCode WM_SORT_TASK_NOTICE_EXISTS = new ErrorCode(1_040_750_104, "该发货通知单已存在未完成的分拣任务");
    ErrorCode WM_SORT_TASK_LINE_ALREADY_SORTED = new ErrorCode(1_040_750_105, "该分拣明细已完成,不能重复分拣");
    ErrorCode WM_SORT_TASK_NO_STOCK = new ErrorCode(1_040_750_106, "发货单明细在库位上没有可用库存");
    // ========== MES 仓库管理-销售出库单(1-040-714-000) ==========
    ErrorCode WM_PRODUCT_SALES_NOT_EXISTS = new ErrorCode(1_040_714_000, "销售出库单不存在");
@@ -758,12 +850,17 @@
    ErrorCode PD_PROJECT_NOT_UPLOAD_FOR_AUDIT = new ErrorCode(1_040_800_005, "只有待审核状态的设计项目才能审核");
    ErrorCode PD_PROJECT_NOT_AUDIT_FOR_ARCHIVE = new ErrorCode(1_040_800_006, "只有待归档状态的设计项目才能归档");
    ErrorCode PD_PROJECT_AUDIT_NOT_FINISHED = new ErrorCode(1_040_800_007, "该项目下存在未审核的资料,请先完成所有资料审核");
    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_BPM_CATEGORY_NOT_EXISTS = new ErrorCode(1_040_800_010, "设计项目审批分类不存在,请先配置 BPM 审批流程");
    // ========== MES 产品设计-资料子表(1-040-801-000) ==========
    ErrorCode PD_DOCUMENT_NOT_EXISTS = new ErrorCode(1_040_801_000, "设计资料不存在");
    // ========== MES 产品设计-资料审核(1-040-802-000) ==========
    ErrorCode PD_DOCUMENT_AUDIT_NOT_EXISTS = new ErrorCode(1_040_802_000, "资料审核记录不存在");
    ErrorCode PD_DOCUMENT_AUDIT_STATUS_REQUIRED = new ErrorCode(1_040_802_001, "审核结果不能为空:请选择「审核通过」或「审核不通过」后重新提交");
    ErrorCode PD_DOCUMENT_AUDIT_STATUS_INVALID = new ErrorCode(1_040_802_002, "审核结果不合法:只允许「审核通过」或「审核不通过」,请重新选择后提交");
    // ========== MES 产品设计-归档台账(1-040-803-000) ==========
    ErrorCode PD_ARCHIVE_NOT_EXISTS = new ErrorCode(1_040_803_000, "归档台账不存在");