3 天以前 b852254d90e7d1955db31db154193ec8ee84d8b3
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
@@ -18,7 +18,6 @@
    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, "只能将物料挂载到叶子分类(该分类下存在子分类)");
    // ========== MES 基础数据-计量单位(1-040-101-000) ==========
    ErrorCode MD_UNIT_MEASURE_NOT_EXISTS = new ErrorCode(1_040_101_000, "计量单位不存在");
@@ -33,7 +32,6 @@
    ErrorCode MD_ITEM_NOT_EXISTS = new ErrorCode(1_040_102_000, "物料不存在");
    ErrorCode MD_ITEM_CODE_DUPLICATE = new ErrorCode(1_040_102_001, "物料编码已存在");
    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, "物料已禁用");
@@ -137,6 +135,9 @@
    ErrorCode CAL_TEAM_SHIFT_NOT_EXISTS = new ErrorCode(1_040_201_200, "班组排班记录不存在");
    ErrorCode CAL_TEAM_SHIFT_GENERATE_TEAM_NOT_ENOUGH = new ErrorCode(1_040_201_201, "班组数量不满足轮班方式要求");
    ErrorCode CAL_TEAM_SHIFT_GENERATE_SHIFT_NOT_ENOUGH = new ErrorCode(1_040_201_202, "班次数量不满足轮班方式要求");
    // ========== MES 日历排班-员工级排班明细(1-040-201-300) ==========
    ErrorCode CAL_SCHEDULE_DETAIL_NOT_EXISTS = new ErrorCode(1_040_201_300, "员工排班明细不存在");
    ErrorCode CAL_SCHEDULE_DETAIL_GENERATE_TEAM_MEMBER_EMPTY = new ErrorCode(1_040_201_301, "该计划参与的班组均无班组成员,无法生成员工排班明细");
    // ========== MES 日历排班-排班计划(1-040-202-000) ==========
    ErrorCode CAL_PLAN_NOT_EXISTS = new ErrorCode(1_040_202_000, "排班计划不存在");
@@ -169,6 +170,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, "工作站编码不存在");
    ErrorCode DV_MACHINERY_HAS_ITEM = new ErrorCode(1_040_301_009, "设备已自动生成物料并入设备仓,禁止删除;如需移除请通过库存调整先处理库存");
    ErrorCode DV_MACHINERY_EQUIP_MASTER_MISSING = new ErrorCode(1_040_301_010, "设备入库联动所需主数据未初始化(设备仓或“设备”分类/“台”计量单位缺失),请联系管理员初始化");
    // ========== MES 设备管理-设备数采(1-040-308-000) ==========
    ErrorCode DV_TELEMETRY_NOT_EXISTS = new ErrorCode(1_040_308_000, "数采遥测数据不存在");
    ErrorCode DV_TELEMETRY_PULL_ERROR = new ErrorCode(1_040_308_001, "数采数据拉取失败:{}");
    ErrorCode DV_TELEMETRY_PULL_EMPTY = new ErrorCode(1_040_308_002, "数采接口未返回有效数据");
    // ========== MES 设备管理-点检保养项目(1-040-304-000) ==========
    ErrorCode DV_SUBJECT_NOT_EXISTS = new ErrorCode(1_040_304_000, "点检保养项目不存在");
@@ -216,6 +225,15 @@
    // ========== 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-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, "工具类型编码已存在");
@@ -252,6 +270,7 @@
    // ========== 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 生产管理-工艺路线产品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 物料在此工序已经配置过");
@@ -261,9 +280,17 @@
    ErrorCode PRO_WORK_ORDER_CODE_DUPLICATE = new ErrorCode(1_040_502_001, "生产工单编码已存在");
    ErrorCode PRO_WORK_ORDER_NOT_PREPARE = new ErrorCode(1_040_502_002, "只有草稿状态的工单才能执行此操作");
    ErrorCode PRO_WORK_ORDER_NOT_CONFIRMED = new ErrorCode(1_040_502_003, "只有已确认状态的工单才能执行此操作");
    ErrorCode PRO_WORK_ORDER_PRODUCTION_NOT_COMPLETE = new ErrorCode(1_040_502_007, "工单实际产出未达到计划数量,不能完成");
    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_BOM_NOT_EXISTS = new ErrorCode(1_040_502_100, "生产工单BOM不存在");
    // ========== MES 生产管理-生产工单工序(1-040-502-300) ==========
    ErrorCode PRO_WORK_ORDER_PROCESS_NOT_EXISTS = new ErrorCode(1_040_502_300, "生产工单工序不存在");
    ErrorCode PRO_WORK_ORDER_PROCESS_SORT_DUPLICATE = new ErrorCode(1_040_502_301, "序号已存在");
    ErrorCode PRO_WORK_ORDER_PROCESS_DUPLICATE = new ErrorCode(1_040_502_302, "不能重复添加工序");
    ErrorCode PRO_WORK_ORDER_PROCESS_KEY_DUPLICATE = new ErrorCode(1_040_502_303, "当前工单已经指定过关键工序");
    // ========== MES 生产管理-生产工单参数记录(1-040-502-200) ==========
    ErrorCode PRO_WORK_ORDER_PARAM_RECORD_NOT_EXISTS = new ErrorCode(1_040_502_200, "工单参数记录不存在");
@@ -271,6 +298,7 @@
    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_TEMPLATE_NOT_CHANGE = new ErrorCode(1_040_502_204, "不允许更换参数模板,请删除后重新创建");
    ErrorCode PRO_WORK_ORDER_SALE_ORDER_NOT_EXISTS = new ErrorCode(1_040_502_205, "关联的营销订单(销售订单)不存在");
    // ========== MES 生产管理-生产任务(1-040-503-000) ==========
    ErrorCode PRO_TASK_NOT_EXISTS = new ErrorCode(1_040_503_000, "生产任务不存在");
@@ -278,9 +306,11 @@
    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_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, "生产任务投料记录不存在");
@@ -308,6 +338,7 @@
    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, "生产任务处于停工状态,无法报工");
    // ========== MES 生产管理-生产流转卡(1-040-507-000) ==========
    ErrorCode PRO_CARD_NOT_EXISTS = new ErrorCode(1_040_507_000, "生产流转卡不存在");
@@ -321,6 +352,18 @@
    // ========== MES 生产管理-工作记录(1-040-508-000) ==========
    ErrorCode WORK_RECORD_NOT_CLOCK_IN = new ErrorCode(1_040_508_001, "当前用户未上工,无法下工");
    ErrorCode WORK_RECORD_ALREADY_CLOCK_IN = new ErrorCode(1_040_508_002, "当前用户已上工,请先下工再操作");
    // ========== MES 生产管理-生产主计划 MPS(1-040-509-000) ==========
    ErrorCode PRO_MPS_NOT_EXISTS = new ErrorCode(1_040_509_000, "MPS 不存在");
    ErrorCode PRO_MPS_NOT_DRAFT = new ErrorCode(1_040_509_001, "只有草稿状态的 MPS 才能执行此操作");
    ErrorCode PRO_MPS_NOT_ISSUED = new ErrorCode(1_040_509_002, "只有已下发状态的 MPS 才能执行此操作");
    ErrorCode PRO_MPS_ALREADY_ISSUED = new ErrorCode(1_040_509_003, "MPS 已下发,无法修改");
    ErrorCode PRO_MPS_MERGE_AT_LEAST_TWO = new ErrorCode(1_040_509_004, "合并下发至少需要选择两条 MPS");
    ErrorCode PRO_MPS_MERGE_PRODUCT_MISMATCH = new ErrorCode(1_040_509_005, "合并下发的 MPS 必须是相同产品");
    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_PRODUCT_TYPE_INVALID = new ErrorCode(1_040_509_009, "排程产品必须是产品类型,禁止使用物料");
    // ========== MES 质量管理-质检方案(1-040-600-000) ==========
    ErrorCode QC_TEMPLATE_NOT_EXISTS = new ErrorCode(1_040_600_000, "质检方案不存在");
@@ -401,6 +444,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, "仓库编码已存在");
@@ -449,6 +499,7 @@
    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_QUANTITY_INVALID = new ErrorCode(1_040_703_015, "调整数量不能为空或零");
    ErrorCode WM_MATERIAL_STOCK_FROZEN = new ErrorCode(1_040_703_016, "库存记录已冻结,无法移库");
    // ========== MES 仓库管理-到货通知单(1-040-704-000) ==========
    ErrorCode WM_ARRIVAL_NOTICE_NOT_EXISTS = new ErrorCode(1_040_704_000, "到货通知单不存在");
@@ -623,6 +674,9 @@
    ErrorCode WM_STOCK_TAKING_PLAN_PARAM_NOT_EXISTS = new ErrorCode(1_040_714_104, "盘点方案参数不存在");
    ErrorCode WM_STOCK_TAKING_PLAN_PARAM_EMPTY = new ErrorCode(1_040_714_105, "盘点方案参数不能为空,请先配置盘点参数");
    ErrorCode WM_STOCK_TAKING_PLAN_DYNAMIC_TIME_INVALID = new ErrorCode(1_040_714_106, "动态盘点方案必须设置开始时间和结束时间,且结束时间必须晚于开始时间");
    ErrorCode WM_STOCK_TAKING_PLAN_AUTO_GENERATE_CRON_REQUIRED = new ErrorCode(1_040_714_107, "开启定期自动生成时必须配置生成周期 cron 表达式");
    ErrorCode WM_STOCK_TAKING_PLAN_AUTO_GENERATE_CRON_INVALID = new ErrorCode(1_040_714_108, "生成周期 cron 表达式不合法");
    ErrorCode WM_STOCK_TAKING_PLAN_NOT_AUTO_GENERATE = new ErrorCode(1_040_714_109, "该盘点方案未开启定期自动生成");
    ErrorCode WM_STOCK_TAKING_TASK_NOT_EXISTS = new ErrorCode(1_040_714_110, "盘点任务不存在");
    ErrorCode WM_STOCK_TAKING_TASK_CODE_DUPLICATE = new ErrorCode(1_040_714_111, "盘点任务编码已存在");
    ErrorCode WM_STOCK_TAKING_TASK_NOT_PREPARE = new ErrorCode(1_040_714_112, "只有草稿状态的盘点任务才允许此操作");
@@ -635,6 +689,8 @@
    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_NO_RESULT = new ErrorCode(1_040_714_122, "盘点任务至少需要一条盘点结果才允许提交结果审批");
    ErrorCode WM_STOCK_TAKING_TASK_ALREADY_SUBMIT_APPROVAL = new ErrorCode(1_040_714_123, "盘点结果审批已提交,请勿重复提交");
    // ========== MES 仓库管理-销售出库单(1-040-714-000) ==========
    ErrorCode WM_PRODUCT_SALES_NOT_EXISTS = new ErrorCode(1_040_714_000, "销售出库单不存在");
@@ -717,6 +773,27 @@
    ErrorCode BARCODE_BIZ_TYPE_NOT_EXISTS = new ErrorCode(1_040_731_003, "业务类型不能为空");
    ErrorCode BARCODE_BIZ_CODE_NOT_EXISTS = new ErrorCode(1_040_731_004, "业务编码不能为空");
    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, "条码内容不能为空");
    // ========== MES 仓库管理-SN 码(1-040-732-000) ==========
    ErrorCode WM_SN_NOT_EXISTS = new ErrorCode(1_040_732_000, "SN 码不存在");
    ErrorCode WM_SN_ITEM_NOT_SERIAL = new ErrorCode(1_040_732_001, "物料未启用序列号管理,无法登记 SN");
    ErrorCode WM_SN_ALREADY_IN_STOCK = new ErrorCode(1_040_732_002, "SN 已在库,请先出库再登记入库");
    ErrorCode WM_SN_NOT_IN_STOCK = new ErrorCode(1_040_732_003, "SN 不在库,无法出库");
    ErrorCode WM_SN_ITEM_MISMATCH = new ErrorCode(1_040_732_004, "SN 与物料不匹配");
    ErrorCode WM_SN_LOCATION_MISMATCH = new ErrorCode(1_040_732_005, "SN 不在指定库位在库,无法出库");
    // ========== MES 设备入库单(1-040-733-000) ==========
    ErrorCode WM_EQUIP_RECEIPT_NOT_EXISTS = new ErrorCode(1_040_733_000, "设备入库单不存在");
    ErrorCode WM_EQUIP_RECEIPT_CODE_DUPLICATE = new ErrorCode(1_040_733_001, "设备入库单编码已存在");
    ErrorCode WM_EQUIP_RECEIPT_STATUS_NOT_PREPARE = new ErrorCode(1_040_733_002, "只有草稿状态才允许此操作");
    ErrorCode WM_EQUIP_RECEIPT_STATUS_NOT_APPROVED = new ErrorCode(1_040_733_003, "只有已审批状态才允许执行入库");
    ErrorCode WM_EQUIP_RECEIPT_NO_LINE = new ErrorCode(1_040_733_004, "至少需要一条行项目");
    ErrorCode WM_EQUIP_RECEIPT_CANCEL_NOT_ALLOWED = new ErrorCode(1_040_733_005, "已完成或已取消的入库单不允许取消");
    ErrorCode WM_EQUIP_RECEIPT_LINE_NOT_EXISTS = new ErrorCode(1_040_733_100, "设备入库单行不存在");
    ErrorCode WM_EQUIP_RECEIPT_MACHINERY_NOT_VALID = new ErrorCode(1_040_733_101, "所选设备未关联物料,无法入库");
    ErrorCode WM_EQUIP_RECEIPT_QUANTITY_INVALID = new ErrorCode(1_040_733_102, "入库数量必须大于 0");
    // ========== MES 仓库管理-装箱单(1-040-740-000) ==========
    ErrorCode WM_PACKAGE_NOT_EXISTS = new ErrorCode(1_040_740_000, "装箱单不存在");
@@ -739,6 +816,9 @@
    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, "设计资料不存在");
@@ -758,6 +838,30 @@
    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, "工艺参数模板编码已存在");
    // ========== MES 产品设计-换位导线技术参数(1-040-806-000) ==========
    ErrorCode PD_CTC_NOT_EXISTS = new ErrorCode(1_040_806_000, "换位导线技术参数不存在");
    ErrorCode PD_CTC_ITEM_DUPLICATE = new ErrorCode(1_040_806_001, "该物料已存在换位导线技术参数,请勿重复添加");
    ErrorCode PD_CTC_CALC_PARAM_INVALID = new ErrorCode(1_040_806_002, "计算参数不合法,请检查输入");
    // ========== MES 产品设计-盘具计算(1-040-807-000) ==========
    ErrorCode PD_CTC_REEL_NOT_EXISTS = new ErrorCode(1_040_807_000, "盘具计算记录不存在");
    // ========== MES 产品设计-技术确认函(1-040-808-000) ==========
    ErrorCode PD_TECH_CONFIRM_NOT_EXISTS = new ErrorCode(1_040_808_000, "技术确认函不存在");
    ErrorCode PD_TECH_CONFIRM_NO_DUPLICATE = new ErrorCode(1_040_808_001, "确认函编号已存在");
    // ========== 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_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, "服务套餐不存在");
    ErrorCode PD_PRICE_STANDARD_NOT_EXISTS = new ErrorCode(1_040_809_103, "定价标准不存在");
    ErrorCode PD_DISCOUNT_POLICY_NOT_EXISTS = new ErrorCode(1_040_809_104, "优惠策略不存在");
    ErrorCode PD_TIERED_PRICE_NOT_EXISTS = new ErrorCode(1_040_809_105, "阶梯电价不存在");
    ErrorCode PD_PRICE_CALC_OBJECT_NOT_CONFIGURED = new ErrorCode(1_040_809_200, "阶梯电价未配置,无法计算");
    // ========== MES 仓储物流-审批配置(1-040-900-000) ==========
    ErrorCode WMS_APPROVAL_CONFIG_NOT_EXISTS = new ErrorCode(1_040_900_000, "仓库审批配置不存在");
    ErrorCode WMS_APPROVAL_ORDER_NOT_EXISTS = new ErrorCode(1_040_900_001, "审批单据不存在");
@@ -766,4 +870,10 @@
    ErrorCode WMS_APPROVAL_STATUS_INVALID = new ErrorCode(1_040_900_004, "单据状态不正确,无法提交审批");
    ErrorCode WMS_APPROVAL_ALREADY_SUBMITTED = new ErrorCode(1_040_900_005, "单据已提交审批,请勿重复提交");
    // ========== MES 工艺设计-作业替代方案/电力运维日历(1-040-901-000) ==========
    ErrorCode MES_PRO_ALTERNATIVE_PLAN_NOT_EXISTS = new ErrorCode(1_040_901_000, "作业替代方案不存在");
    ErrorCode MES_PRO_ALTERNATIVE_PLAN_NOT_PREPARE = new ErrorCode(1_040_901_001, "作业替代方案状态不正确,无法执行该操作");
    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, "电力运维日历状态不正确,无法执行该操作");
}