package com.lukouguoji.module_base.bean

import androidx.databinding.ObservableBoolean

/**
 * 国际出港-出港装载Bean
 * 对应API: IntExpLoad/pageQuery
 */
class GjcExportLoad {
    var activeId: String = ""               // 运单活跃号
    var by1: String = ""                    // 第一承运人
    var dep: String = ""                    // 始发港
    var dest: String = ""                   // 目的港
    var range: String = ""                  // 航程
    var fdate: String = ""                  // 申报航班日期
    var fid: String = ""                    // 航班主键id
    var fno: String = ""                    // 申报航班号
    var goods: String = ""                  // 品名
    var lastLoadMsgId: String = ""          // 上一次装载申报编号
    var lastLoadStatus: String = ""         // 上一次装载状态
    var loadMsgId: String = ""              // 报文申报编号
    var loadStatus: String = ""             // 装载申报状态（"01"等状态码）
    var loaddCount: Int = 0                 // 装载删除计次
    var loaddRate: Double = 0.0             // 装载删除费率
    var loadsCount: Int = 0                 // 装载申报计次
    var loadsRate: Double = 0.0             // 装载申报费率
    var no: String = ""                     // 主运单号
    var packageType: String = ""            // 包装类型代码
    var pc: Int = 0                         // 件数
    var prefix: String = ""                 // 主运单前缀
    var response: String = ""               // 海关业务回执
    var spCode: String = ""                 // 特码
    var splitFlag: String = ""              // 分批标志
    var sysId: String = ""                  // 系统ID
    var tallyStatus: String = ""            // 理货状态
    var weight: Double = 0.0                // 重量

    // ========== UI扩展字段 ==========
    val checked: ObservableBoolean = ObservableBoolean(false)  // 选中状态

    // 兼容现有API的isSelected属性
    var isSelected: Boolean
        get() = checked.get()
        set(value) = checked.set(value)

    /**
     * 获取格式化的运单号（prefix + no）
     */
    fun getFullWaybillNo(): String {
        return if (prefix.isNotEmpty()) "$prefix$no" else no
    }

    /**
     * 航程
     * 优先取 range；为空时用 始发港-目的港 拼接
     */
    val rangeText: String
        get() {
            if (range.isNotBlank()) return range
            return if (dep.isNotEmpty() && dest.isNotEmpty()) "$dep-$dest" else dep + dest
        }
}
