package com.lukouguoji.module_base.bean

/**
 * 国际进港查询-主运单数据模型
 * 对应接口：/IntImpSearch/pageQuery 返回的列表项 (GjjSearchMaWb)
 */
data class IntImpQueryBean(
    var maWbId: Long? = null,          // 主单主键ID
    var wbNo: String? = null,          // 运单号
    var prefix: String? = null,        // 运单号前缀
    var no: String? = null,            // 运单号主体

    // ==================== 货物信息 ====================
    var awbPc: Long? = null,           // 运单件数
    var awbWeight: Double? = null,     // 运单重量
    var inPc: Long? = null,            // 入库件数
    var inWeight: Double? = null,      // 入库重量
    var cashWeight: Double? = null,    // 计费重量
    var goods: String? = null,         // 品名（英）
    var goodsCn: String? = null,       // 品名（中）
    var packageType: String? = null,   // 包装类型
    var unNumber: String? = null,      // UN编号

    // ==================== 航班信息 ====================
    var flight: String? = null,        // 航班: 日期/航班号
    var fno: String? = null,           // 航班号
    var fdate: String? = null,         // 航班日期
    var range: String? = null,         // 航程 (如 LAX-HFE)
    var dest: String? = null,          // 目的地
    var origin: String? = null,        // 货源地
    var by1: String? = null,           // 承运人

    // ==================== 代理与运单类型 ====================
    var agentCode: String? = null,     // 代理人code
    var agentName: String? = null,     // 代理人名称
    var awbType: String? = null,       // 运单类型code
    var awbName: String? = null,       // 运单类型名称
    var businessType: String? = null,  // 业务类型code
    var businessName: String? = null,  // 业务类型名称

    // ==================== 特码 ====================
    var spCode: String? = null,        // 特码

    // ==================== 时间信息 ====================
    var inDate: String? = null,        // 入库时间
    var dlvTime: String? = null,       // 出库时间

    // ==================== 状态信息 ====================
    var mftStatus: String? = null,     // 原始舱单状态
    var tallyStatus: String? = null,   // 理货申报状态
    var lockState: Int? = null,        // 锁定状态（0:未锁, 1:锁定）
    var command: String? = null,       // 海关放行

    // ==================== 其他 ====================
    var remark: String? = null,        // 备注
    var activeId: Long? = null         // 有效值
) {

    /**
     * 5.5寸手机版-进港查询：卡片状态标签。
     * 已出库 = 出库时间（dlvTime）非空；已入库 = 入库时间（inDate）非空；都为空 = 未入库（灰）。
     * 接口无独立状态出参，此判定为前端推断（与平板列表「入库时间/出库时间」两列同源）。
     */
    val isQueryOutbound: Boolean
        get() = !dlvTime.isNullOrEmpty()

    val isQueryStored: Boolean
        get() = !inDate.isNullOrEmpty()

    /** 5.5寸手机版：空值统一占位 "--"（空串与 null 都兜底，布局绑定用） */
    fun orDash(value: String?): String = if (value.isNullOrEmpty()) "--" else value

    /**
     * 5.5寸手机版：代理人展示值（名称优先，空则回退代码）。
     * 不能在 XML 里用 `??` 兜底——转换器会把 JSON null 归一成空串，`??` 只判 null 不判空串。
     */
    val agentDisplay: String?
        get() = if (agentName.isNullOrEmpty()) agentCode else agentName
}
