/**
 * 字段映射工具
 * 统一管理所有字段的中文映射关系
 */

// 性别映射
export const sexMap = {
  1: '公牛',
  2: '母牛'
};

// 类别映射（统一使用前端标准）
export const categoryMap = {
  1: '犊牛',
  2: '育成母牛',
  3: '架子牛',
  4: '青年牛',
  5: '基础母牛',
  6: '育肥牛'
};

// 来源类型映射
export const sourceTypeMap = {
  1: '合作社',
  2: '农户',
  3: '养殖场',
  4: '进口',
  5: '自繁'
};

// 品系映射（用途）
export const strainMap = {
  1: '乳用',
  2: '肉用',
  3: '乳肉兼用',
  4: '种用'
};

// 血统映射
export const descentMap = {
  1: '纯种',
  2: '杂交一代',
  3: '杂交二代',
  4: '杂交三代'
};

// 等级映射
export const levelMap = {
  1: '特级',
  2: '一级',
  3: '二级',
  4: '三级'
};

// 销售状态映射
export const sellStatusMap = {
  0: '未销售',
  1: '已销售',
  2: '待销售',
  3: '已预订'
};

// 品种映射
export const breedMap = {
  1: '西藏高山牦牛',
  2: '黄牛',
  3: '奶牛',
  4: '西门塔尔牛',
  5: '利木赞牛',
  6: '夏洛莱牛',
  7: '安格斯牛',
  8: '其他品种'
};

/**
 * 获取性别中文名称
 * @param {number} sex - 性别代码
 * @returns {string} 性别中文名称
 */
export const getSexName = (sex) => {
  return sexMap[sex] || '未知';
};

/**
 * 获取类别中文名称
 * @param {number} cate - 类别代码
 * @returns {string} 类别中文名称
 */
export const getCategoryName = (cate) => {
  return categoryMap[cate] || '未知';
};

/**
 * 获取来源类型中文名称
 * @param {number} source - 来源代码
 * @returns {string} 来源类型中文名称
 */
export const getSourceTypeName = (source) => {
  return sourceTypeMap[source] || '未知';
};

/**
 * 获取品系中文名称
 * @param {number} strain - 品系代码
 * @returns {string} 品系中文名称
 */
export const getStrainName = (strain) => {
  return strainMap[strain] || '未知';
};

/**
 * 获取血统中文名称
 * @param {number} descent - 血统代码
 * @returns {string} 血统中文名称
 */
export const getDescentName = (descent) => {
  return descentMap[descent] || '未知';
};

/**
 * 获取等级中文名称
 * @param {number} level - 等级代码
 * @returns {string} 等级中文名称
 */
export const getLevelName = (level) => {
  return levelMap[level] || '未知';
};

/**
 * 获取销售状态中文名称
 * @param {number} sellStatus - 销售状态代码
 * @returns {string} 销售状态中文名称
 */
export const getSellStatusName = (sellStatus) => {
  return sellStatusMap[sellStatus] || '未知';
};

/**
 * 获取品种中文名称
 * @param {number|string} breed - 品种代码或名称
 * @returns {string} 品种中文名称
 */
export const getBreedName = (breed) => {
  // 如果传入的是数字代码，使用映射表
  if (typeof breed === 'number') {
    return breedMap[breed] || '未知品种';
  }
  // 如果传入的已经是字符串，直接返回
  return breed || '未知品种';
};

/**
 * 格式化绑定信息数据
 * @param {Object} cattleInfo - 牛只信息
 * @param {Object} jbqDevice - 设备信息
 * @returns {Object} 格式化后的绑定信息
 */
export const formatBindingInfo = (cattleInfo, jbqDevice) => {
  return {
    // 基础信息
    basicInfo: {
      collarNumber: jbqDevice?.cid || '',
      earTag: cattleInfo?.earNumber || '',
      animalType: getSexName(cattleInfo?.sex),
      breed: getBreedName(cattleInfo?.varieties), // 使用品种映射函数
      category: getCategoryName(cattleInfo?.cate),
      calvingCount: cattleInfo?.parity || 0,
      sourceType: getSourceTypeName(cattleInfo?.source)
    },
    // 出生信息
    birthInfo: {
      birthDate: cattleInfo?.birthday ? new Date(cattleInfo.birthday * 1000).toISOString().split('T')[0] : '',
      birthWeight: cattleInfo?.birthWeight ? parseFloat(cattleInfo.birthWeight).toFixed(2) : '0.00',
      weaningWeight: cattleInfo?.infoWeight ? parseFloat(cattleInfo.infoWeight).toFixed(2) : '0.00',
      entryDate: cattleInfo?.intoTime ? new Date(cattleInfo.intoTime * 1000).toISOString().split('T')[0] : '',
      weaningAge: 0,
      leftTeatCount: '',
      rightTeatCount: ''
    },
    // 系谱信息
    pedigreeInfo: {
      fatherId: cattleInfo?.descent || 'F001',
      motherId: 'M001',
      grandfatherId: 'GF001',
      grandmotherId: 'GM001',
      bloodline: getDescentName(cattleInfo?.descent),
      generation: 'F3'
    },
    // 设备信息
    deviceInfo: {
      deviceId: jbqDevice?.id || '',
      batteryLevel: jbqDevice?.voltage || 0,
      temperature: jbqDevice?.temperature || 0,
      status: jbqDevice?.state === 1 ? '在线' : '离线',
      lastUpdate: jbqDevice?.uptime ? new Date(jbqDevice.uptime * 1000).toISOString() : '',
      location: jbqDevice?.lat && jbqDevice?.lon ? `${jbqDevice.lat}, ${jbqDevice.lon}` : '无定位'
    },
    // 农场信息
    farmInfo: {
      farmName: '未知农场',
      farmAddress: '',
      penName: '未知栏舍',
      batchName: '未知批次'
    },
    // 保险信息
    insuranceInfo: {
      company: '中国平安',
      policyNumber: 'INS2024001',
      amount: '50000',
      period: '2024-01-01 至 2024-12-31',
      status: cattleInfo?.isInsure ? '有效' : '未投保'
    },
    // 贷款信息
    loanInfo: {
      bank: '中国农业银行',
      amount: '100000',
      period: '2024-01-01 至 2025-01-01',
      rate: '4.5%',
      status: cattleInfo?.isMortgage ? '正常' : '无贷款'
    }
  };
};

