From 27bbd0435881e408f267c99e6a253d2e17873bcc Mon Sep 17 00:00:00 2001
From: tj <1378534974@qq.com>
Date: 星期五, 11 四月 2025 17:44:11 +0800
Subject: [PATCH] 1.2

---
 app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt |   87 ++++++++++++++++++++++++++++++++++++-------
 1 files changed, 73 insertions(+), 14 deletions(-)

diff --git a/app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt b/app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt
index 21cb233..f8808f2 100644
--- a/app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt
+++ b/app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt
@@ -21,17 +21,13 @@
 import java.util.*
 import java.text.SimpleDateFormat
 import android.graphics.Color
-import android.widget.Button
 import android.widget.GridLayout
 import android.widget.Toast
-import androidx.core.content.ContextCompat
 import androidx.lifecycle.lifecycleScope
-import com.bumptech.glide.Glide
 import com.example.firstapp.database.response.UserInfo
 import com.example.firstapp.database.service.RetrofitClient
 import com.example.firstapp.model.DailyStat
 import com.example.firstapp.utils.PreferencesManager
-import com.github.mikephil.charting.components.YAxis
 import kotlinx.coroutines.launch
 
 class DashboardFragment : Fragment() {
@@ -45,6 +41,9 @@
     private lateinit var pieChart: PieChart
     private lateinit var heatmapView: View
     private var currentUserInfo: UserInfo? = null // 确保使用你的实际数据类
+
+    private var startDateCur:String = ""
+    private var endDateCur:String = ""
 
 
     enum class DateType {
@@ -113,6 +112,10 @@
     }
 
     private fun setupTabLayout() {
+        val weekStatsView = binding.layoutWeekStats.root
+        val bar_title:TextView = weekStatsView.findViewById(R.id.bar_title)
+        val pie_title:TextView = weekStatsView.findViewById(R.id.pie_title)
+
         binding.tabDateRange.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
             override fun onTabSelected(tab: TabLayout.Tab?) {
                 currentDateType = when(tab?.position) {
@@ -122,6 +125,40 @@
                     3 -> DateType.YEAR
                     else -> DateType.DAY
                 }
+
+                when (currentDateType) {
+                    DateType.DAY -> {
+                        binding.cardPackageStatsTitleText.text = "本日收到包裹总数"
+                        binding.layoutYearStatsTitleText.text = "包裹取件码记录"
+
+                        binding.cardPackageStatsTitleText.visibility = View.VISIBLE
+                        binding.layoutYearStatsTitleText.visibility =  View.VISIBLE
+                    }
+                    DateType.WEEK -> {
+                        binding.cardPackageStatsTitleText.text = "本周收到包裹总数"
+                        bar_title.text = "本周收到包裹数分布 ->"
+                        pie_title.text = "本周包裹物流公司分布 ->"
+                        binding.cardPackageStatsTitleText.visibility = View.VISIBLE
+                        binding.layoutYearStatsTitleText.visibility =  View.GONE
+
+                    }
+                    DateType.MONTH -> {
+                        binding.cardPackageStatsTitleText.text = "本月收到包裹总数"
+                        bar_title.text = "本月收到包裹数分布 ->"
+                        pie_title.text = "本月包裹物流公司分布 ->"
+                        binding.cardPackageStatsTitleText.visibility = View.VISIBLE
+                        binding.layoutYearStatsTitleText.visibility =  View.GONE
+                    }
+                    DateType.YEAR -> {
+                        bar_title.text = "本年收到包裹数分布 ->"
+                        pie_title.text = "本年包裹物流公司分布 ->"
+                        binding.cardPackageStatsTitleText.visibility = View.GONE
+                        binding.layoutYearStatsTitleText.visibility =  View.GONE
+                    }
+                }
+
+
+
                 updateDateDisplay()
                 updateCharts()
                 loadPackages()
@@ -160,10 +197,13 @@
                 val calendar = currentDate.clone() as Calendar
                 calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY)
                 val startDate = SimpleDateFormat("MM月dd日", Locale.getDefault()).format(calendar.time)
-                
+                startDateCur=SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(calendar.time)
+
                 calendar.add(Calendar.DAY_OF_WEEK, 6)
                 val endDate = SimpleDateFormat("MM月dd日", Locale.getDefault()).format(calendar.time)
-                
+                endDateCur=SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(calendar.time)
+
+
                 "$startDate-$endDate"
             }
             DateType.MONTH -> "yyyy年MM月"
@@ -178,10 +218,15 @@
         }
     }
     private fun setupView(view: View) {
+
         val weekStatsView = binding.layoutWeekStats.root
         barChart = weekStatsView.findViewById(R.id.chart_daily_packages)
         pieChart = weekStatsView.findViewById(R.id.chart_courier_distribution)
         heatmapView = weekStatsView.findViewById(R.id.heatmap_yearly)
+
+        barChart.setViewPortOffsets(100f, 100f, 100f, 200f)
+
+//        barChart.invalidate()
         
         // 初始化时隐藏统计视图
         weekStatsView.visibility = View.GONE
@@ -190,6 +235,7 @@
         setupPieChart()
         setupHeatmap()
         updateCharts()
+
     }
     private fun setupBarChart() {
         barChart.apply {
@@ -240,7 +286,8 @@
     private fun updateBarChartData() {
         val statsFlow = when (currentDateType) {
             DateType.WEEK -> {
-                viewModel.getWeeklyStats(currentDate.timeInMillis, 6)
+//                viewModel.getWeeklyStats(currentDate.timeInMillis, 6)
+                viewModel.getWeeklyStatsChart(startDateCur,endDateCur)
             }
             DateType.MONTH -> {
                 viewModel.getYearMonthlyStats(currentDate.timeInMillis)
@@ -416,14 +463,26 @@
             when (currentDateType) {
                 DateType.DAY -> {
                     binding.textPackageCount.text = "${packages.size}个"
+
+                    // 获取本周统计
+                    viewModel.getPackagesUnread(currentDate.timeInMillis,
+                        currentDateType.name)
+                        .observe(viewLifecycleOwner) { unpackages->
+                            // 只读取未取件的包裹
+                            packageAdapter.updatePackages(unpackages)
+                        }
+
                 }
                 DateType.WEEK -> {
                     // 获取本周统计
-                    viewModel.getCurrentWeekStats(currentDate.timeInMillis)
-                        .observe(viewLifecycleOwner) { stats ->
-                            val weekTotal = stats.sumOf { it.count }
-                            binding.textPackageCount.text = "${weekTotal}个"
-                        }
+                    viewModel.getCurrentWeekStats2(startDateCur,endDateCur).observe(viewLifecycleOwner) { stats ->
+                        binding.textPackageCount.text = "${stats}个"
+                    }
+//                    viewModel.getCurrentWeekStats(currentDate.timeInMillis)
+//                        .observe(viewLifecycleOwner) { stats ->
+//                            val weekTotal = stats.sumOf { it.count }
+//                            binding.textPackageCount.text = "${weekTotal}个"
+//                        }
                 }
                 DateType.MONTH -> {
                     // 获取本月统计
@@ -442,8 +501,8 @@
                         }
                 }
             }
-            packageAdapter.updatePackages(packages)
-            packageAdapter.updatePackages(packages)
+
+//            packageAdapter.updatePackages(packages)
 //            binding.textPackageCount.text = "${packages.size}个"
         }
     }

--
Gitblit v1.9.3