package cn.iocoder.yudao.module.product.enums;
import cn.iocoder.yudao.framework.common.exception.ErrorCode;

/**
 * 业务异常的错误码区间，解决：解决各模块错误码定义，避免重复，在此只声明不做实际使用
 *
 * 一共 10 位，分成四段
 *
 * 第一段，1 位，类型
 *      1 - 业务module模块的业务级别异常
 *      x - 预留
 * 第二段，3 位，系统类型
 *      001 - 用户系统
 *      010 - basic系统
 *      011 - 模板配置模块
 *      012 - 流通模块
 *      013 - 生产模块
 *      014 - 标识码模块
 *      ... - ...
 * 第三段，3 位，模块
 *      不限制规则。
 *      一般建议，每个系统里面，可能有多个模块，可以再去做分段。以用户系统为例子：
 *          001 - OAuth2 模块
 *          002 - User 模块
 *          003 - MobileCode 模块
 * 第四段，3 位，错误码
 *       不限制规则。
 *       一般建议，每个模块自增。
 *
 * @author 芋道源码
 */
public interface ErrorCodeConstants {

    // 模块 system 错误码区间 [1-000-001-000]
    // 模块 basic 错误码区间 [1-010-000-000]
    ErrorCode BUSINESS_INFO_NOT_EXISTS = new ErrorCode(1010001000, "商户不存在");
    ErrorCode GOODS_INFO_NOT_EXISTS = new ErrorCode(1010005000, "商品不存在");
    // 模块 configure 错误码区间 [1-011-000-000]
    // 模块 flow 错误码区间 [1-012-000-000]
    ErrorCode OUTBOUND_NOT_EXISTS = new ErrorCode(1012000001,"出库单不存在");
    ErrorCode OUTBOUND_NOT_ON_CHAIN_HARVEST_INFO_CAN_DO_UP_CHAIN = new ErrorCode(1012000002, "只有未上链的出库管理数据才可进行上链");
    ErrorCode OUTBOUND_ON_CHAIN_HARVEST_INFO_CAN_DO_UPDATE_CHAIN_STATUS = new ErrorCode(1012000003, "只有已上链的出库管理数据才可修改链状态");
    // 模块 product 错误码区间 [1-013-000-000]
    /********************** 生产模块错误码 **********************/
    /**
     * 投入品采购相关异常 模块代码 001
     **/
    ErrorCode INPUTS_BUY_NOT_EXISTS = new ErrorCode(1013001001, "投入品采购不存在");
    ErrorCode CAN_NOT_FIND_RELA_INPUT_INFO = new ErrorCode(1013001002, "没有找到相关联的投入品");
    ErrorCode OUTBOUND_NOT_ACTIVATION = new ErrorCode(1013001003,"所选出库单未上链");
    ErrorCode ONLY_NOT_ON_CHAIN_INPUTS_BUY_CAN_BE_EDIT = new ErrorCode(1013001004, "只有未上链的投入品采购信息才可进行修改");
    ErrorCode ONLY_NOT_ON_CHAIN_INPUT_BUY_CAN_DO_UP_CHAIN = new ErrorCode(1013001005, "只有未上链的采收入库数据才可进行上链");
    ErrorCode ONLY_ON_CHAIN_INPUT_BUY_CAN_DO_UPDATE_CHAIN_STATUS = new ErrorCode(1013001006, "只有已上链的投入品采购才可修改链状态");
    /**
     * 投入品批次采购相关异常 模块代码 002
     **/
    ErrorCode INPUTS_BATCH_NOT_EXISTS = new ErrorCode(1013002001, "投入品批次不存在");
    ErrorCode CAN_NOT_ADD_THE_SAME_INPUT_INFO = new ErrorCode(1013002002, "无法重复添加同一个投入品");
    ErrorCode EXIST_THE_SAME_INPUT_BATCH = new ErrorCode(1013002003, "存在重复的投入品批次");
    ErrorCode EXIST_DELETED_INPUT_BATCH = new ErrorCode(1013002004, "存在已删除的投入品批次");
    ErrorCode INPUT_BATCH_NOT_ACTIVATION = new ErrorCode(1013002005, "该投入品批次未上链");

    /**
     * 地块相关异常 模块代码 003
     */
    ErrorCode LAND_INFO_NOT_EXISTS = new ErrorCode(1013003001, "农事土地信息不存在");
    ErrorCode LAND_INFO_NOT_LESS_THAN_ZERO = new ErrorCode(1013003002, "农事土地面积不能小于0");
    /**
     * 种植计划相关异常 模块代码 004
     */
    ErrorCode LAND_PLAN_NOT_EXISTS = new ErrorCode(1013004001, "地块作业计划不存在");
    /**
     * 种植作业相关异常 模块代码 005
     */
    ErrorCode LAND_JOB_NOT_EXISTS = new ErrorCode(1013005001, "种植/养殖/畜牧作业不存在");
    ErrorCode LAND_JOB_INPUTS_NOT_EXISTS = new ErrorCode(1013005002, "地块作业投入品不存在");
    ErrorCode ONLY_NOT_ON_CHAIN_LAND_JOB_CAN_DO_UP_CHAIN = new ErrorCode(1013005003, "只有未上链的种植作业才可进行上链");
    ErrorCode ONLY_ON_CHAIN_LAND_JOB_CAN_DO_UPDATE_CHAIN_STATUS = new ErrorCode(1013005004, "只有已上链的种植作业才可修改链状态");

    /**
     * 采收入库相关异常 模块代码 006
     */
    ErrorCode HARVEST_INFO_NOT_EXISTS = new ErrorCode(1013006001, "采收入库不存在");
    ErrorCode CAN_NOT_ADD_THE_SAME_GOODS_INFO = new ErrorCode(1013006002, "无法重复添加同一个商品");
    ErrorCode EXIST_THE_SAME_HARVEST_BATCH = new ErrorCode(1013006003, "存在重复的采收批次");
    ErrorCode ONLY_NOT_ON_CHAIN_HARVEST_INFO_CAN_BE_EDIT = new ErrorCode(1013006004, "只有未上链的采收入库数据才可进行修改");
    ErrorCode ONLY_NOT_ON_CHAIN_HARVEST_INFO_CAN_DO_UP_CHAIN = new ErrorCode(1013006005, "只有未上链的采收入库数据才可进行上链");
    ErrorCode CREATE_BLOCK_CERTIFICATE_FAIL = new ErrorCode(1013006006, "生成区块证书失败");
    ErrorCode ONLY_ON_CHAIN_HARVEST_INFO_CAN_DO_UPDATE_CHAIN_STATUS = new ErrorCode(1013006007, "只有已上链的采收入库数据才可修改链状态");
    ErrorCode UPDATE_CREATE_BLOCK_CERTIFICATE_FAIL = new ErrorCode(1013006008, "更新区块证书失败");
    /**
     * 采收批次相关异常 模块代码 007
     */
    ErrorCode HARVEST_BATCH_NOT_EXISTS = new ErrorCode(1013007001, "采收批次不存在");
    ErrorCode HARVEST_BATCH_NOT_ACTIVATION = new ErrorCode(1013007002, "该采收批次未上链");
    ErrorCode CAN_NOT_CREATE_BLOCK_CERTIFICATE_REPEAT = new ErrorCode(1013007003, "无法重复添加配置");
    ErrorCode OPERATE_TITLE_CAN_NOT_BE_NULL = new ErrorCode(1013007004, "标题不能为空");
    ErrorCode GOODS_CONFIG_NOT_EXISTS = new ErrorCode(1013007005, "商品配置信息不存在");
    ErrorCode LINK_CONFIG_NOT_EXISTS = new ErrorCode(1013007006, "环节配置信息不存在");
    ErrorCode OPERATE_DETAIL_NOT_EXISTS = new ErrorCode(1013007007, "上链操作具体信息不存在");
    ErrorCode LINK_CONFIG_CAN_NOT_BE_EMPTY = new ErrorCode(1013007008, "环节配置信息不能为空");
    ErrorCode ON_CHAIN_LINK_CONFIG_CAN_NOT_DELETE = new ErrorCode(1013007009, "无法删除已上链的环节");
    ErrorCode BLOCK_STATE_IS_FREEZE = new ErrorCode(1013007010, "采收批次已冻结");
    ErrorCode FARMING_CONFIG_HAS_ON_CHAIN = new ErrorCode(1013007011, "该农事活动配置已上链");
//    ErrorCode CAN_NOT_CREATE_WHEN_FARMING_CONFIG_HAS_ON_CHAIN = new ErrorCode(1013007011, "该农事活动配置已上链，无法进行新增操作");
    ErrorCode CAN_NOT_FIND_DEFAULT_UNI_TEMPLATE = new ErrorCode(1013007012, "未配置默认小程序模板");
    ErrorCode JOB_OPERATE_TYPE_CAN_NOT_BE_NULL = new ErrorCode(1013007013, "农事作业操作类型不能为空");
    ErrorCode CONFIG_IS_NOT_EXISTS = new ErrorCode(1013007014, "配置信息不存在");
    ErrorCode INSPECTION_ITEM_OPERATE_TYPE_CAN_NOT_BE_NULL = new ErrorCode(1013007015, "检测项目操作类型不能为空");
    ErrorCode INSPECTION_CONFIG_NOT_EXISTS = new ErrorCode(1013007016, "检验检疫配置不存在");
    ErrorCode EXISTS_THE_SAME_INSPECTION_CONFIG = new ErrorCode(1013007017, "存在相同的检验检疫配置");
    ErrorCode SELECTED_UNI_TEMPLATE_NOT_EXITS = new ErrorCode(1013007018, "所选小程序模板不存在或已删除");
    ErrorCode CAN_NOT_FIND__UNI_TEMPLATE = new ErrorCode(1013007019, "所配置的小程序模板不存在或已删除");

    /**
     * 检验检疫相关异常 模块代码 008
     */
    ErrorCode INSPECTION_NOT_EXISTS = new ErrorCode(1013008001, "检验检疫不存在");
    ErrorCode CAN_ONLY_BE_EDITED_WHEN_NOT_ON_CHAIN = new ErrorCode(1013008002, "只有未上链时才可进行编辑操作");
    ErrorCode CAN_ONLY_BE_DELETE_WHEN_NOT_ON_CHAIN = new ErrorCode(1013008003, "只有未上链时才可进行删除操作");
    ErrorCode CAN_ONLY_BE_ON_CHAIN_WHEN_NOT_ON_CHAIN = new ErrorCode(1013008004, "只有未上链时才可进行上链操作");
    ErrorCode ONLY_ON_CHAIN_INSPECTION_CAN_DO_UPDATE_CHAIN_STATUS = new ErrorCode(1013008005, "只有已上链的检验检疫数据才可修改链状态");
    /**
     * 检验-检测项目相关异常 模块代码 009
     */
    ErrorCode INSPECTION_ITEM_NOT_EXISTS = new ErrorCode(1013009001, "检验-检测项目不存在");
    /**
     * 设备信息相关异常 模块代码 010
     */
    ErrorCode DEVICE_INFO_NOT_EXISTS = new ErrorCode(1013010001, "设备信息不存在");
    ErrorCode DEVICE_OPERATE_LOG_NOT_EXISTS = new ErrorCode(1013010002, "设备操作日志不存在");
    ErrorCode CAN_NOT_ADD_THE_SAME_DEVICE = new ErrorCode(1013010003, "同一种网关内无法添加同类型设备");
    ErrorCode CAN_NOT_BE_EMPTY_WHEN_TYPE_IS_YOUREN = new ErrorCode(1013010004, "类型为有人网关时从设备不能为空");
    ErrorCode CAN_NOT_GET_URL_HIK_MONITOR = new ErrorCode(1013010005, "海康监控URL获取失败");
    ErrorCode DEVICE_NAME_IS_ERROR_HIK_MONITOR = new ErrorCode(1013010006, "未查询到对应监控点编码，请检查输入内容是否正确");
    ErrorCode HIK_MONITOR_DEVICE_IS_EXISTS = new ErrorCode(1013010007, "监控设备名称重复或监控点已存在");
    ErrorCode ONLY_CONTROLLER_CAN_CHANGE_SWITCH = new ErrorCode(1013010008, "只有控制器才可修改开关状态");
    ErrorCode SEND_CMD_FAIL = new ErrorCode(1013010009, "发送开关指令失败");
    ErrorCode GET_MONITOR_PREVIEW_URL_TIME_OUT = new ErrorCode(1013010010, "请求监控地址超时");
    ErrorCode MONITOR_DEVICE_IS_OFFLINE = new ErrorCode(1013010011, "监控设备不在线");
    ErrorCode MONITOR_DEVICE_INDEX_CODE_IS_NOT_EXISTS = new ErrorCode(1013010012, "唯一编码对应的设备不存在，请联系管理员");
    /**
     * 环境类型相关异常 模块代码 011
     */
    ErrorCode ENV_TYPE_NOT_EXISTS = new ErrorCode(1013011001, "环境类型不存在");
    ErrorCode CAN_NOT_DELETE_WHEN_EXIST_DEVICE_INFO = new ErrorCode(1013011002, "无法删除已关联设备的环境类型");
    /**
     * 环境类型相关异常 模块代码 012
     */
    ErrorCode ENV_DATA_NOT_EXISTS = new ErrorCode(1013012001, "环境数据不存在");
    /**
     * 从设备相关异常 模块代码 013
     */
    ErrorCode SLAVE_DEVICE_NOT_EXISTS = new ErrorCode(1013013001, "从设备信息不存在");
    /**
     * 作业类型相关异常 模块代码 014
     */
    ErrorCode LAND_JOB_TYPE_NOT_EXISTS = new ErrorCode(1013014001, "作业类型不存在");

    ErrorCode LAND_JOB_TYPE_ALREADY_EXIST = new ErrorCode(1013014002, "作业类型已存在");
    /**
     * 地块类型相关异常 模块代码 015
     */
    ErrorCode LAND_INFO_TYPE_NOT_EXISTS = new ErrorCode(1013015001, "地块类型不存在");
    ErrorCode LAND_INFO_TYPE_ALREADY_EXIST = new ErrorCode(1013015002, "地块类型已存在");
    /**
     * 地块状态相关异常 模块代码 016
     */
    ErrorCode LAND_BLOCK_STATE_NOT_EXISTS = new ErrorCode(1013016001, "地块状态不存在");
    ErrorCode LAND_BLOCK_STATE_ALREADY_EXIST = new ErrorCode(1013016002, "地块状态名称已存在");
    // 模块 identity 错误码区间 [1-014-000-000]
}
