package cn.iocoder.lyzsys.module.tjt.enums;

import cn.iocoder.lyzsys.framework.common.exception.ErrorCode;

/**
 * 特建投模块错误码
 *
 * @author Codex
 */
public interface ErrorCodeConstants {

    // ========== 项目管理 1-020-001-000 ==========
    ErrorCode PROJECT_NOT_EXISTS = new ErrorCode(1_020_001_000, "项目不存在");

    // ========== 合约规划管理 1-020-002-000 ==========
    ErrorCode PROJECT_PLANNING_NOT_EXISTS = new ErrorCode(1_020_002_000, "合约规划不存在");
    ErrorCode PROJECT_PLANNING_PROJECT_NOT_EXISTS = new ErrorCode(1_020_002_001, "关联项目不存在");
    ErrorCode PROJECT_PLANNING_OWNERSHIP_TYPE_INVALID = new ErrorCode(1_020_002_002, "归属类型不正确");
    ErrorCode PROJECT_PLANNING_CALCULATION_METHOD_INVALID = new ErrorCode(1_020_002_003, "产值计算方式不正确");
    ErrorCode PROJECT_PLANNING_OWNERSHIP_TYPE_IMMUTABLE = new ErrorCode(1_020_002_004, "归属类型保存后不允许修改");
    ErrorCode PROJECT_PLANNING_CALCULATION_METHOD_IMMUTABLE = new ErrorCode(1_020_002_005, "产值计算方式保存后不允许修改");
    ErrorCode PROJECT_PLANNING_VIRTUAL_CALCULATION_METHOD_INVALID = new ErrorCode(1_020_002_006, "虚拟产值计算方式不正确");
    ErrorCode PROJECT_PLANNING_WORKING_DAY_COUNT_REQUIRED = new ErrorCode(1_020_002_007, "工日法下工日不能为空");
    ErrorCode PROJECT_PLANNING_WORKING_DAY_UNIT_PRICE_REQUIRED = new ErrorCode(1_020_002_008, "工日法下工日单价不能为空");
    ErrorCode PROJECT_PLANNING_DESIGN_PART_INVALID = new ErrorCode(1_020_002_009, "设计部位不正确");
    ErrorCode PROJECT_PLANNING_GUIDE_DETAIL_NOT_EXISTS = new ErrorCode(1_020_002_010, "指导价法明细不存在");
    ErrorCode PROJECT_PLANNING_GUIDE_DETAIL_SCENE_INVALID = new ErrorCode(1_020_002_011, "当前合约规划不是专业所指导价法，不能维护指导价法明细");

    // ========== 季度分配管理 1-020-003-000 ==========
    ErrorCode PROJECT_PLANNING_QUARTER_NOT_EXISTS = new ErrorCode(1_020_003_000, "季度分配明细不存在");
    ErrorCode PROJECT_PLANNING_QUARTER_DUPLICATE = new ErrorCode(1_020_003_001, "同一合约规划下该年度季度分配已存在");
    ErrorCode PROJECT_PLANNING_QUARTER_PLANNING_NOT_EXISTS = new ErrorCode(1_020_003_002, "关联合约规划不存在");

    // ========== 页面 4 拆分管理 1-020-004-000 ==========
    ErrorCode PROJECT_OUTPUT_SPLIT_PLANNING_NOT_EXISTS = new ErrorCode(1_020_004_000, "关联合约规划不存在");
    ErrorCode PROJECT_OUTPUT_SPLIT_RATIO_INVALID = new ErrorCode(1_020_004_002, "页面4比例合计必须等于 100%");

    // ========== 页面 5 角色拆分管理 1-020-005-000 ==========
    ErrorCode SPECIALTY_ROLE_SPLIT_OUTPUT_SPLIT_NOT_EXISTS = new ErrorCode(1_020_005_000, "页面4拆分记录不存在");
    ErrorCode SPECIALTY_ROLE_SPLIT_ROLE_RATIO_INVALID = new ErrorCode(1_020_005_001, "页面5五类角色比例合计必须等于 100%");
    ErrorCode SPECIALTY_ROLE_SPLIT_SPECIALTY_INVALID = new ErrorCode(1_020_005_002, "专业编码不正确");
    ErrorCode SPECIALTY_ROLE_SPLIT_ROLE_INVALID = new ErrorCode(1_020_005_003, "角色编码不正确");
    ErrorCode SPECIALTY_ROLE_SPLIT_PERSON_INVALID = new ErrorCode(1_020_005_004, "页面5人员和比例必须同时填写");
    ErrorCode SPECIALTY_ROLE_SPLIT_DESIGN_PERSON_REQUIRED = new ErrorCode(1_020_005_005, "页面5设计角色金额大于 0 时必须配置人员");
    ErrorCode SPECIALTY_ROLE_SPLIT_PERSON_RATIO_INVALID = new ErrorCode(1_020_005_007, "页面5同一角色下人员比例之和不能大于 100%");

    // ========== 年度 K 值管理 1-020-006-000 ==========
    ErrorCode YEAR_K_VALUE_NOT_EXISTS = new ErrorCode(1_020_006_000, "年度 K 值记录不存在");
    ErrorCode YEAR_K_VALUE_DUPLICATE = new ErrorCode(1_020_006_001, "同一年度的 K 值记录已存在");

    // ========== 专业所管理 1-020-007-000 ==========
    ErrorCode OFFICE_NOT_EXISTS = new ErrorCode(1_020_007_000, "专业所记录不存在");
    ErrorCode OFFICE_IN_USE = new ErrorCode(1_020_007_001, "当前专业所已被员工引用，不能删除");

    // ========== 员工管理 1-020-008-000 ==========
    ErrorCode EMPLOYEE_NOT_EXISTS = new ErrorCode(1_020_008_000, "员工记录不存在");
    ErrorCode EMPLOYEE_IN_USE = new ErrorCode(1_020_008_001, "当前员工已被业务数据引用，不能删除");
    ErrorCode EMPLOYEE_NOT_OFFICE_LEADER = new ErrorCode(1_020_008_002, "当前员工未启用或未标记为所长，不能维护年度所长考核产值");

    // ========== 员工年度成本预算 1-020-009-000 ==========
    ErrorCode EMPLOYEE_YEAR_COST_BUDGET_NOT_EXISTS = new ErrorCode(1_020_009_000, "员工年度成本预算记录不存在");
    ErrorCode EMPLOYEE_YEAR_COST_BUDGET_DUPLICATE = new ErrorCode(1_020_009_001, "当前员工该年度预计发生成本已存在");

    // ========== 年度所长考核产值 1-020-010-000 ==========
    ErrorCode EMPLOYEE_YEAR_LEADER_OUTPUT_NOT_EXISTS = new ErrorCode(1_020_010_000, "年度所长考核产值记录不存在");
    ErrorCode EMPLOYEE_YEAR_LEADER_OUTPUT_DUPLICATE = new ErrorCode(1_020_010_001, "当前所长该年度考核产值已存在");

}
