package cn.axzo.workflow.common.code;

import cn.axzo.framework.domain.web.code.IModuleRespCode;
import lombok.AllArgsConstructor;
import lombok.Getter;

import static cn.axzo.workflow.common.constant.BpmnConstants.APPROVAL_ASSIGNER_LIMIT_NUMBER;

/**
 * 流程模型响应码
 *
 * @author wangli
 * @since 2023/12/14 16:25
 */
@Getter
@AllArgsConstructor
public enum BpmnTaskRespCode implements IModuleRespCode {
    TASK_COMPLETE_FAIL_NOT_EXISTS("001", "未找到指定审批任务"),
    TASK_COMPLETE_FAIL_ASSIGN_NOT_SELF("002", "该任务的审批人不是你"),
    TASK_APOSTILLE_NOT_SUPPORT("003", "当前加签模式不支持"),
    TASK_REMIND_ERROR_NOT_EXISTS("004", "当前审批节点没有待审批任务, 不能催办"),
    ACTIVITY_TRIGGER_NOT_EXISTS("005", "触发 ID:【{}】不存在"),
    CALC_TASK_ASSIGNEE_ERROR("006", "执行计算审批候选人出现异常: {}"),
    ASSIGNEE_HAS_BEEN_EXISTS("007", "你选择的人员已是审批人，请检查后提交"),
    ACTIVITY_BIZ_SET_ASSIGNEE_ERROR("008", "未找到能设置审批人的业务节点, 触发 ID: 【{}】"),
    ACTIVITY_CANT_SET_ASSIGNEE("009", "当前节点状态不允许设置审批人"),
    CANT_CREATE_SUB_TASK("010", "父任务不存在, 不允许创建子任务"),
    DUMMY_TASK_NOT_EXISTS("011", "机器人节点不存在, 实例 ID: 【{}】, 任务 ID: 【{}】"),
    DUMMY_TASK_CREATED_NOT_SUPPORT("012", "当前审批已结束, 不支持创建机器人节点, 实例 ID: 【{}】"),
    DUMMY_TASK_CANT_CREATED("013", "当前流程状态下, 不允许创建新的机器人节点, 实例 ID: 【{}】"),
    DUMMY_TASK_CANT_REPEAT_CREATE("014", "已存在运行中的机器人节点, 不允许重复创建!"),
    ACTIVITY_BIZ_SET_ASSIGNEE_HAS_REPEAT("015", "业务传入的指定审批人存在重复, 请主动根据 personId 去重! "),
    DUMMY_TASK_CREATED_ERROR("016", "流程实例 ID【{}】: 不存在, 不允许创建机器人节点"),
    TASK_HAS_BEEN_COMPLETE("017", "审批任务已被处理"),
    FIND_TASK_BY_PERSON_ID_ERROR("018", "流程实例中:【{}】未查找指定自然人:【{}】的待处理的流程任务!"),
    PROCESS_INSTANCE_IS_NOT_EXIST("019", "Execution:{} 对应流程实例不存在，流程状态异常!"),
    TASK_TYPE_MISMATCH("020", "节点类型不匹配，当前节点类型：【{}】,指定节点类型：【{}】!"),
    PROCESS_CANT_SET_ASSIGNEE("021", "当前审批状态不允许设置审批人"),
    ASSIGNER_NUMBER_EXCEEDS_NUMBER_LIMIT("022", String.format("人员数量超过限制，节点审批人限制数量为: %d!", APPROVAL_ASSIGNER_LIMIT_NUMBER)),
    BACK_TARGET_ACTIVITY_NOT_EXISTS("023", "回退到指定节点【{}】失败！"),
    BACK_NODE_CANNOT_REACHABLE("024", "退回节点【{}】不可达，不允许退回"),
    REACHED_BACKED_MAXIMUM_NUM("025", "达到回退操作次数上限【{}】次"),
    TRANSFER_TO_SELF("026", "任务不能转交给自己"),
    REMIND_TASK_TOO_MANY("027", "催办任务数据异常"),
    PROCESS_SET_ASSIGNEE_PARAM_ERROR("028", "当前审批业务审批人模型中 NodeId 必传（topNodeId/nodeId均可）, 触发 ID: 【{}】"),
    TASK_OPERATION_PARAM_INVALID("029", "流程实例 ID 与任务 ID 必须二选一"),
    ;

    private final String code;
    private final String message;

    @Override
    public String getModuleCode() {
        return "06";
    }

    @Override
    public String getProjectCode() {
        return "998";
    }

}
