package com.example.firstapp.activity
|
|
import android.os.Bundle
|
import android.app.AlertDialog
|
import androidx.appcompat.app.AppCompatActivity
|
import androidx.lifecycle.lifecycleScope
|
import androidx.recyclerview.widget.LinearLayoutManager
|
import com.example.firstapp.adapter.ExpressPackageAdapter
|
import com.example.firstapp.core.Core
|
import com.example.firstapp.databinding.ActivityPickupBinding
|
import com.example.firstapp.model.ExpressPackage
|
import kotlinx.coroutines.launch
|
|
class PickupActivity : AppCompatActivity() {
|
private lateinit var binding: ActivityPickupBinding
|
private lateinit var expressAdapter: ExpressPackageAdapter
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
super.onCreate(savedInstanceState)
|
binding = ActivityPickupBinding.inflate(layoutInflater)
|
setContentView(binding.root)
|
|
initViews()
|
loadData()
|
}
|
|
private fun initViews() {
|
// 初始化适配器,传入取件回调
|
expressAdapter = ExpressPackageAdapter { pack ->
|
handleSinglePickup(pack)
|
}
|
|
binding.rvPackages.apply {
|
layoutManager = LinearLayoutManager(this@PickupActivity)
|
adapter = expressAdapter
|
}
|
|
binding.ivBack.setOnClickListener {
|
finish()
|
}
|
|
// 修改底部按钮点击事件
|
binding.btnPickupAll.setOnClickListener {
|
showPickupConfirmDialog()
|
}
|
|
}
|
|
private fun showPickupConfirmDialog() {
|
AlertDialog.Builder(this)
|
.setTitle("确认取件")
|
.setMessage("是否确认取出所有包裹?")
|
.setPositiveButton("确认") { _, _ ->
|
handlePickupAll()
|
}
|
.setNegativeButton("取消", null)
|
.show()
|
}
|
|
private fun handleSinglePickup(pack: ExpressPackage) {
|
lifecycleScope.launch {
|
try {
|
// 处理单个包裹取件
|
Core.code.pickup(pack.id)
|
// 重新加载数据
|
loadData()
|
// 通知MainActivity刷新
|
setResult(RESULT_OK)
|
} catch (e: Exception) {
|
// 处理错误
|
}
|
}
|
}
|
|
private fun handlePickupAll() {
|
lifecycleScope.launch {
|
try {
|
// 获取当前所有包裹
|
val packages = expressAdapter.currentList
|
// 批量处理取件
|
packages.forEach { pack ->
|
Core.code.pickup(pack.id)
|
}
|
// 清空列表
|
expressAdapter.submitList(emptyList())
|
// 更新包裹数量显示
|
binding.tvPackageCount.text = "共0个包裹"
|
// 通知MainActivity刷新
|
setResult(RESULT_OK)
|
} catch (e: Exception) {
|
// 处理错误
|
// 如果出错则重新加载数据
|
loadData()
|
}
|
}
|
}
|
|
private fun loadData() {
|
val stationName = intent.getStringExtra("station_name") ?: ""
|
val company = intent.getStringExtra("company") ?: ""
|
|
lifecycleScope.launch {
|
val codes = Core.code.getByKeyword(stationName)
|
val packages = codes.map { code ->
|
ExpressPackage(
|
id = code.id,
|
company = code.secondLevel ?: company,
|
trackingNumber = code.code,
|
createTime = code.createTime
|
)
|
}
|
|
expressAdapter.submitList(packages)
|
binding.tvStationName.text = stationName
|
binding.tvPackageCount.text = "共${packages.size}个包裹"
|
}
|
}
|
}
|