feat(出港计重): 对接后端统计分项/计重人/通道号/托盘字段,筛选对齐平板(问题清单 #12~#18)

- #12 三格统计改取 pageQueryTotal 出参 waitCheckInNumber/checkingNumber(一次请求),
  不再依赖 checkIn 入参过滤(内网实测 pageQuery 的 checkIn 过滤仍被忽略,统计出参正确)
- #13 待计重筛选对齐平板:航班日期/代理人/特码(移除通道号/承运人/运单类型)
- #14 计重记录筛选对齐平板:航班日期/代理人/特码(移除入库日期起止;dest/opId 实测被忽略一并移除)
- #15 运单详情「通道号」绑 checked/pageQuery 出参 passageWay
- #16 计重明细/修改记录「计重人」绑 listRecordByWh 出参 opUserName(回退 opId)
- #17 arriveFlag 已回填,「已提前运抵」置灰态生效(无需改代码,实机确认)
- #18 托盘改用平板同款 trayNumber + trayTotalWeight(= 数量 × 自重,自重默认 18kg);
  记录卡片/修改记录托盘自重绑 trayTotalWeight;修复托盘输入框 Double 回写致光标跳位(输 18 存成 81)
- 内网实测:三格 6/5/1;分托计重 trayNumber=2/trayTotalWeight=36 落库;修改记录保存 18.0

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
YANG JIANKUAN
2026-10-09 03:45:18 -07:00
parent 415b685a85
commit 40edbe7c67
16 changed files with 105 additions and 152 deletions

View File

@@ -22,9 +22,16 @@ data class GjcCheckInRecord(
var weight: Double = 0.0, // 运抵重量
var volume: Double = 0.0, // 运抵体积
var whId: Long = 0, // GJC_WAREHOUSE.ID
var carWeight: String = "" // 托盘自重
var carWeight: String = "", // 托盘车重(平板托盘车号反查值)
var trayNumber: Int = 0, // 托盘数量
var trayTotalWeight: Double = 0.0, // 托盘重量(托盘数量 × 托盘自重,与平板端一致)
var opUserName: String = "" // 计重人姓名(opId 关联查询)
) : BaseObservable() {
/** 计重人:优先姓名,为空回退操作员编码 */
val opUserDisplay: String
get() = opUserName.ifEmpty { opId }
// 数据变化回调
var onDataChanged: (() -> Unit)? = null
@@ -54,14 +61,23 @@ data class GjcCheckInRecord(
}
}
// 托盘自重的字符串表示(用于双向绑定,5.5寸手机版「修改记录」覆层)
/**
* 托盘重量输入原文(手机「修改记录」覆层)。保留原文而非由 Double 反推:
* 输入 "1" 时若 getter 返回 "1.0",输入框会被重设、光标回到开头,再输 "8" 就成了 "81"(实机踩过)。
* transient:不参与 Gson 提交序列化。
*/
@Transient
private var trayTotalWeightInput: String? = null
// 托盘重量的字符串表示(用于双向绑定,5.5寸手机版「修改记录」覆层)
@get:Bindable
var carWeightStr: String
get() = carWeight
var trayTotalWeightStr: String
get() = trayTotalWeightInput ?: if (trayTotalWeight == 0.0) "" else trayTotalWeight.toString()
set(value) {
if (carWeight != value) {
carWeight = value
notifyPropertyChanged(BR.carWeightStr)
if (trayTotalWeightStr != value) {
trayTotalWeightInput = value
trayTotalWeight = value.toDoubleOrNull() ?: 0.0
notifyPropertyChanged(BR.trayTotalWeightStr)
onDataChanged?.invoke()
}
}

View File

@@ -76,8 +76,8 @@ data class GjcMaWb(
var carNumber: String? = null, // 车牌号
var passageWay: String? = null, // 通道号
var passageWayId: String? = null,
var palletNumber: String? = null, // 托盘数量(5.5寸手机版开始计重页,后端暂无该入参,见接口问题清单)
var carWeight: String? = null, // 托盘自重(5.5寸手机版手输,后端暂无该入参,见接口问题清单)
var trayNumber: Int? = null, // 托盘数量(splitCheckIn / completeCheckIn 入参,与平板端一致)
var trayTotalWeight: Double? = null, // 托盘重量 = 托盘数量 × 托盘自重
// ==================== 状态信息 ====================
var checkIn: String? = null, // 收运状态。0:待收运,1:已收运,2:收运中

View File

@@ -73,6 +73,7 @@ class GjcWeighingRecordBean : Serializable {
var paperTime: String = "" // 单据时间
var userName: String = "" // 收运人
var passageWay: String = "" // 通道号(计重时选定的通道号名称)
var userId: String = "" // 收运人ID
var remark: String = "" // 备注

View File

@@ -10,4 +10,6 @@ class GjcWeighingStatisticsBean {
var totalPc: Long = 0 // 总件数
var totalWeight: Double = 0.0 // 总重量
var cargoWeight: Double = 0.0 // 总货重
var waitCheckInNumber: Int = 0 // 待计重票数(IntExpCheckIn/pageQueryTotal)
var checkingNumber: Int = 0 // 计重中票数(IntExpCheckIn/pageQueryTotal)
}