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
|
|
// 添加类型常量
|
companion object {
|
const val TYPE_EXPRESS = "express"
|
const val TYPE_REPAYMENT = "repayment"
|
const val TYPE_INCOME = "income"
|
}
|
|
private var pageType = TYPE_EXPRESS
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
super.onCreate(savedInstanceState)
|
binding = ActivityPickupBinding.inflate(layoutInflater)
|
setContentView(binding.root)
|
|
// 获取页面类型
|
pageType = intent.getStringExtra("page_type") ?: TYPE_EXPRESS
|
|
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.apply {
|
text = getButtonText()
|
setOnClickListener {
|
showPickupConfirmDialog()
|
}
|
}
|
}
|
|
private fun getConfirmMessage(): String {
|
return when (pageType) {
|
TYPE_EXPRESS -> "是否确认取出所有包裹?"
|
TYPE_REPAYMENT -> "是否确认处理所有还款?"
|
TYPE_INCOME -> "是否确认处理所有收入?"
|
else -> "是否确认处理所有项目?"
|
}
|
}
|
|
private fun getButtonText(): String {
|
return when (pageType) {
|
TYPE_EXPRESS -> "全部取件"
|
TYPE_REPAYMENT -> "全部还款"
|
TYPE_INCOME -> "全部收款"
|
else -> "全部处理"
|
}
|
}
|
|
private fun showPickupConfirmDialog() {
|
AlertDialog.Builder(this)
|
.setTitle(getButtonText())
|
.setMessage(getConfirmMessage())
|
.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 = getCountText(0)
|
// 通知MainActivity刷新
|
setResult(RESULT_OK)
|
} catch (e: Exception) {
|
// 处理错误
|
// 如果出错则重新加载数据
|
loadData()
|
}
|
}
|
}
|
|
private fun getCountText(count: Int): String {
|
return when (pageType) {
|
TYPE_EXPRESS -> "共${count}个包裹"
|
TYPE_REPAYMENT -> "共${count}笔还款"
|
TYPE_INCOME -> "共${count}笔收入"
|
else -> "共${count}个"
|
}
|
}
|
|
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 = getCountText(packages.size)
|
}
|
}
|
}
|