feat: 收运检查-交接单

This commit is contained in:
2025-12-06 15:42:56 +08:00
parent f17b68a94c
commit 21e0857790
7 changed files with 424 additions and 12 deletions

View File

@@ -1,19 +1,305 @@
package com.lukouguoji.gjc.viewModel
import android.app.AlertDialog
import android.content.Intent
import androidx.lifecycle.MutableLiveData
import com.lukouguoji.module_base.base.BaseViewModel
import com.lukouguoji.module_base.bean.GjcHandoverSheetBean
import com.lukouguoji.module_base.common.Constant
import com.lukouguoji.module_base.http.net.NetApply
import com.lukouguoji.module_base.ktx.*
/**
* 国际出港货物交接单 ViewModel
*/
class GjcHandoverViewModel : BaseViewModel() {
// 暂时为静态页面,无业务逻辑
// 运单主键ID
var maWbId: Long = 0L
fun cancelClick() {
// 数据Bean
val dataBean = MutableLiveData(GjcHandoverSheetBean())
// ========== 跨境电商单选框 ==========
val cbEcFlag = MutableLiveData("1") // 默认选中"是"
/**
* 跨境电商RadioButton点击
*/
fun onCbEcFlagClick(value: String) {
cbEcFlag.value = value
}
fun saveClick() {
// ========== 防止隐含危险品检查单 ==========
val goodsNameYes = MutableLiveData(false) // 品名为确指品名-是
val goodsNameNo = MutableLiveData(false) // 品名为确指品名-否
val dangerYes = MutableLiveData(false) // 不含危险品-是
val dangerNo = MutableLiveData(false) // 不含危险品-否
val fishYes = MutableLiveData(false) // 非观赏鱼类-是
val fishNo = MutableLiveData(false) // 非观赏鱼类-否
val packagingYes = MutableLiveData(false) // 无油渍渗漏-是
val packagingNo = MutableLiveData(false) // 无油渍渗漏-否
val labelsYes = MutableLiveData(false) // 清除标记-是
val labelsNo = MutableLiveData(false) // 清除标记-否
// ========== 高风险货物检查单 ==========
val appearanceYes = MutableLiveData(false) // 外观异常-是
val appearanceNo = MutableLiveData(false) // 外观异常-否
val threatYes = MutableLiveData(false) // 情报威胁-是
val threatNo = MutableLiveData(false) // 情报威胁-否
val highRiskYes = MutableLiveData(false) // 高风险-是
val highRiskNo = MutableLiveData(false) // 高风险-否
// ========== 跨境电商检查单 ==========
val submitStatementYes = MutableLiveData(false) // 提交声明-是
val submitStatementNA = MutableLiveData(false) // 提交声明-不适用
val submitStatementNo = MutableLiveData(false) // 提交声明-否
// ========== 安检信息 ==========
val securityChannel = MutableLiveData("") // 安检机通道号
val securityStartTime = MutableLiveData("") // 开始过机时间
val securityEndTime = MutableLiveData("") // 结束过机时间
/**
* 初始化(从Intent获取参数并加载数据)
*/
fun initOnCreated(intent: Intent) {
maWbId = intent.getLongExtra(Constant.Key.MAWB_ID, 0L)
if (maWbId > 0) {
loadData()
}
}
/**
* 加载交接单数据
*/
private fun loadData() {
launchLoadingCollect({ NetApply.api.queryHandoverSheet(maWbId) }) {
onSuccess = { result ->
val response = result.data
val maWb = response?.maWb
val handoverSheet = response?.handoverSheet
// 创建或更新dataBean
val bean = (handoverSheet ?: GjcHandoverSheetBean()).apply {
// 如果handoverSheet为null从maWb填充基础信息
if (handoverSheet == null && maWb != null) {
this.maWbId = maWb.maWbId
this.prefix = maWb.prefix
this.no = maWb.no
this.chargeWeight = maWb.weight // 使用主单重量作为计费重量
this.saleAgentCode = maWb.agentCode
}
}
dataBean.value = bean
// 填充CheckBox状态
updateCheckBoxState(bean)
// 填充安检信息
securityChannel.value = bean.securityChannel ?: ""
securityStartTime.value = bean.securityStartTime ?: ""
securityEndTime.value = bean.securityEndTime ?: ""
}
}
}
/**
* 根据Bean数据更新CheckBox状态
*/
private fun updateCheckBoxState(bean: GjcHandoverSheetBean) {
// 跨境电商
cbEcFlag.value = bean.cbEcFlag ?: "1"
// 防止隐含危险品检查单
goodsNameYes.value = (bean.goodsName == "1")
goodsNameNo.value = (bean.goodsName == "0")
dangerYes.value = (bean.danger == "1")
dangerNo.value = (bean.danger == "0")
fishYes.value = (bean.fish == "1")
fishNo.value = (bean.fish == "0")
packagingYes.value = (bean.packaging == "1")
packagingNo.value = (bean.packaging == "0")
labelsYes.value = (bean.labels == "1")
labelsNo.value = (bean.labels == "0")
// 高风险货物检查单
appearanceYes.value = (bean.appearance == "1")
appearanceNo.value = (bean.appearance == "0")
threatYes.value = (bean.threat == "1")
threatNo.value = (bean.threat == "0")
highRiskYes.value = (bean.highRisk == "1")
highRiskNo.value = (bean.highRisk == "0")
// 跨境电商检查单
submitStatementYes.value = (bean.submitStatement == "1")
submitStatementNA.value = (bean.submitStatement == "2")
submitStatementNo.value = (bean.submitStatement == "0")
}
/**
* CheckBox点击事件处理(防止隐含危险品)
*/
fun onGoodsNameClick(isYes: Boolean) {
if (isYes) {
goodsNameYes.value = true
goodsNameNo.value = false
} else {
goodsNameYes.value = false
goodsNameNo.value = true
}
}
fun onDangerClick(isYes: Boolean) {
if (isYes) {
dangerYes.value = true
dangerNo.value = false
} else {
dangerYes.value = false
dangerNo.value = true
}
}
fun onFishClick(isYes: Boolean) {
if (isYes) {
fishYes.value = true
fishNo.value = false
} else {
fishYes.value = false
fishNo.value = true
}
}
fun onPackagingClick(isYes: Boolean) {
if (isYes) {
packagingYes.value = true
packagingNo.value = false
} else {
packagingYes.value = false
packagingNo.value = true
}
}
fun onLabelsClick(isYes: Boolean) {
if (isYes) {
labelsYes.value = true
labelsNo.value = false
} else {
labelsYes.value = false
labelsNo.value = true
}
}
/**
* CheckBox点击事件处理(高风险货物)
*/
fun onAppearanceClick(isYes: Boolean) {
if (isYes) {
appearanceYes.value = true
appearanceNo.value = false
} else {
appearanceYes.value = false
appearanceNo.value = true
}
}
fun onThreatClick(isYes: Boolean) {
if (isYes) {
threatYes.value = true
threatNo.value = false
} else {
threatYes.value = false
threatNo.value = true
}
}
fun onHighRiskClick(isYes: Boolean) {
if (isYes) {
highRiskYes.value = true
highRiskNo.value = false
} else {
highRiskYes.value = false
highRiskNo.value = true
}
}
/**
* CheckBox点击事件处理(跨境电商)
*/
fun onSubmitStatementClick(type: Int) {
when (type) {
1 -> { // 是
submitStatementYes.value = true
submitStatementNA.value = false
submitStatementNo.value = false
}
2 -> { // 不适用
submitStatementYes.value = false
submitStatementNA.value = true
submitStatementNo.value = false
}
0 -> { // 否
submitStatementYes.value = false
submitStatementNA.value = false
submitStatementNo.value = true
}
}
}
/**
* 取消按钮点击
*/
fun cancelClick() {
AlertDialog.Builder(getTopActivity())
.setTitle("提示")
.setMessage("确定要取消吗?未保存的数据将丢失")
.setPositiveButton("确定") { _, _ -> getTopActivity().finish() }
.setNegativeButton("取消", null)
.show()
}
/**
* 保存按钮点击
*/
fun saveClick() {
val bean = dataBean.value ?: GjcHandoverSheetBean()
// 更新Bean中的CheckBox字段
bean.maWbId = maWbId
bean.cbEcFlag = cbEcFlag.value
// 防止隐含危险品检查单
bean.goodsName = if (goodsNameYes.value == true) "1" else if (goodsNameNo.value == true) "0" else null
bean.danger = if (dangerYes.value == true) "1" else if (dangerNo.value == true) "0" else null
bean.fish = if (fishYes.value == true) "1" else if (fishNo.value == true) "0" else null
bean.packaging = if (packagingYes.value == true) "1" else if (packagingNo.value == true) "0" else null
bean.labels = if (labelsYes.value == true) "1" else if (labelsNo.value == true) "0" else null
// 高风险货物检查单
bean.appearance = if (appearanceYes.value == true) "1" else if (appearanceNo.value == true) "0" else null
bean.threat = if (threatYes.value == true) "1" else if (threatNo.value == true) "0" else null
bean.highRisk = if (highRiskYes.value == true) "1" else if (highRiskNo.value == true) "0" else null
// 跨境电商检查单
bean.submitStatement = when {
submitStatementYes.value == true -> "1"
submitStatementNA.value == true -> "2"
submitStatementNo.value == true -> "0"
else -> null
}
// 安检信息
bean.securityChannel = securityChannel.value
bean.securityStartTime = securityStartTime.value
bean.securityEndTime = securityEndTime.value
// 发送保存请求
launchLoadingCollect({ NetApply.api.saveHandoverSheet(bean.toRequestBody()) }) {
onSuccess = {
showToast("保存成功")
getTopActivity().finish()
}
}
}
}