package com.lukouguoji.module_base.bean

import androidx.databinding.ObservableBoolean
import java.io.Serializable

/**
 * 国际进港理货数据
 */
data class GjjImportTally(
    // 有效ID
    var activeId: Long = 0,
    // 代理代码
    var agentCode: String = "",
    // 代理(中文)
    var agentName: String = "",
    // 运单类型(5位代码)
    var awbType: String = "",
    // 运单类型(中文)
    var awbTypeName: String = "",
    // 提单号
    var billsNo: String = "",
    // 车牌号
    var carNumber: String = "",
    // 海关库区(2位代码)
    var customsLib: String = "",
    // 目的地(3位代码)
    var dest: String = "",
    // 航班日期
    var fdate: String = "",
    // 航班目的地(3位代码)
    var fdest: String = "",
    // 航班号
    var fno: String = "",
    // 货物描述
    var goods: String = "",
    // 分单数量
    var haWbNum: Int = 0,
    // 运单号
    var hno: String = "",
    // 理货申报上一次消息ID
    var lastMsgId: String = "",
    // 理货申报上一次状态
    var lastStatus: String = "",
    // 理货申报消息ID
    var msgId: String = "",
    // 编号(8位字符)
    var no: String = "",
    // 操作时间
    var opDate: String = "",
    // 操作人ID
    var opId: String = "",
    // 始发地(3位代码)
    var origin: String = "",
    // 包装类型(2位代码)
    var packageType: String = "",
    // 件数
    var pc: Long = 0,
    // 前缀(3位字符)
    var prefix: String = "",
    // 响应信息
    var response: String = "",
    // 特货代码
    var spCode: String = "",
    // 理货申报状态
    var status: String = "",
    // 理货删除次数
    var tallyDCount: Long = 0,
    // 理货删除费率
    var tallyDRate: Double = 0.0,
    // 理货申报次数
    var tallySCount: Long = 0,
    // 理货申报费率
    var tallySRate: Double = 0.0,
    // 体积(m³)
    var volume: Double = 0.0,
    // 重量(kg)
    var weight: Double = 0.0,
    // 品名(中文)
    var goodsCn: String = "",
    // 品名(英文)
    var goodsEn: String = "",
    // 放行模式(代码)
    var relMode: String = "",
    // 放行模式(名称)
    var releaseMode: String = "",
    // 放行时间(perDate)
    var perDate: String = "",
    // 放行时间
    var releaseTime: String = "",
    // 指令类型(comType)
    var comType: String = "",
    // 指令类型
    var instructionType: String = "",
    // 放行备注
    var relRemark: String = "",
    // 备注
    var remark: String = ""
) : Serializable {
    // 选中状态（用于多选功能）- 不参与序列化
    @Transient
    val checked: ObservableBoolean = ObservableBoolean(false)

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

    // 展开/折叠状态 - 不参与序列化
    @Transient
    val showMore: ObservableBoolean = ObservableBoolean(false)

    // 已加载的分单数据 - 不参与序列化
    @Transient
    var haWbList: MutableList<GjjImportTally>? = null

    // 获取完整运单号
    fun getWaybillNo() = "$prefix$no"

    // 获取航班信息（日期去横杠/航班号）
    fun getFlightSplit(): String {
        if (fdate != "" && fno != "") {
            val (year, mon, day) = fdate.split("-")
            return "${year}${mon}${day}/${fno}"
        }
        return ""
    }
}

