cloudroam
2025-03-27 4ed001ff84ed21bf32da85dbc4ba53ff2829e987
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
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}个包裹"
        }
    }