package com.lukouguoji.module_base.bean

import java.io.Serializable

/**
 * 国际出港-运单明细Bean
 * 对应API: IntExpAssemble/queryAssembled
 */
class GjcWarehouse : Serializable {
    var whId: Long = 0                  // ID
    var no: String = ""                 // 运单号（11位）
    var prefix: String = ""             // 运单前缀
    var wbNo: String = ""               // 主运单编号
    var pc: Long = 0                    // 件数
    var weight: Double = 0.0            // 重量
        set(value) {
            field = value
            onDataChanged?.invoke()
        }
    var volume: Double = 0.0            // 体积
    var agentCode: String = ""          // 代理code
    var agentName: String = ""          // 代理名称
    var dest: String = ""               // 目的港
    var dest1: String = ""              // 卸货站
    var dest2: String = ""              // 第二目的地
    var dep: String = ""                // 始发站
    var spCode: String = ""             // 特码
    var goods: String = ""              // 品名（英）
    var goodsCn: String = ""            // 品名（中）
    var fdate: String = ""              // 航班日期
    var fno: String = ""                // 航班号
    var fclose: String = ""             // 航班关闭时间
    var flight: String = ""             // 航班：航班日期/航班号
    var range: String = ""              // 航程
    var businessType: String = ""       // 业务类型
    var opId: String = ""               // 收运人ID
    var userName: String = ""           // 收运人
    var opDate: String = ""             // 收运时间
    var location: String = ""           // uld
    var checkInPc: Long = 0             // 入库件数
    var checkInWeight: Double = 0.0     // 入库重量
        set(value) {
            field = value
            onDataChanged?.invoke()
        }
    var assembleCount: Int = 0          // 已经组装的数量

    // ========== UI扩展字段 ==========

    /**
     * 重量字符串（用于双向绑定EditText）
     */
    var checkInWeightStr: String
        get() = if (checkInWeight == 0.0) "" else checkInWeight.toString()
        set(value) {
            checkInWeight = value.toDoubleOrNull() ?: 0.0
        }

    /**
     * 数据变化回调（用于实时计算统计）
     */
    @Transient
    var onDataChanged: (() -> Unit)? = null
}
