From b1303ee6ba15d8202f7fe95037267feaa4520fc5 Mon Sep 17 00:00:00 2001
From: mac <user@users-MacBook-Pro.local>
Date: 星期日, 28 四月 2024 15:55:48 +0800
Subject: [PATCH] 2024年04月28日15:55:42

---
 app/src/main/java/com/hdl/photovoltaic/ui/home/HomePageFragment.java         |  368 ++++++++++++++----------------------
 app/src/main/res/layout/fragment_home_page.xml                               |   69 +++++-
 app/src/main/res/values/strings.xml                                          |   10 +
 app/src/main/java/com/hdl/photovoltaic/ui/home/BasicChartComposer.java       |    5 
 app/src/main/res/layout/item_data.xml                                        |   10 
 app/src/main/java/com/hdl/photovoltaic/ui/home/CustomStyleChartComposer.java |    3 
 app/src/main/java/com/hdl/photovoltaic/utils/TimeUtils.java                  |  125 +++++++++++-
 app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java             |    5 
 8 files changed, 327 insertions(+), 268 deletions(-)

diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
index d364f58..efd2bd2 100644
--- a/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
@@ -67,6 +67,11 @@
         return sHdlDeviceLogic;
     }
 
+    public static final String kWp = "kWp";
+    public static final String kWh = "kW.h";
+
+    public static final String kW = "kW";
+
 
     /**
      * 鑾峰彇褰撳墠浣忓畢鐨勯�嗗彉鍣ㄥ垪琛�(鍖呮嫭浠庣殑閫嗗彉鍣�)
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/home/BasicChartComposer.java b/app/src/main/java/com/hdl/photovoltaic/ui/home/BasicChartComposer.java
index 8e0a8e1..306aa53 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/home/BasicChartComposer.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/home/BasicChartComposer.java
@@ -51,6 +51,11 @@
 //                .data(new Object[]{3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8});
 
         return configureBasicOptions()
+                .backgroundColor("#EDEFF2")
+                .legendEnabled(false)
+                .markerRadius(0)
+//                .markerSymbol(AAChartSymbolType.Circle)
+//                .markerSymbolStyle(AAChartSymbolStyleType.Normal)
                 .chartType(AAChartType.Area)
                 .categories(new String[]{"涓�鏈�", "浜屾湀", "涓夋湀", "鍥涙湀", "浜旀湀", "鍏湀", "涓冩湀", "鍏湀", "涔濇湀", "鍗佹湀", "鍗佷竴鏈�", "鍗佷簩鏈�"})
                 .series(new AASeriesElement[]{element1});
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/home/CustomStyleChartComposer.java b/app/src/main/java/com/hdl/photovoltaic/ui/home/CustomStyleChartComposer.java
index 035b4fd..041828a 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/home/CustomStyleChartComposer.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/home/CustomStyleChartComposer.java
@@ -195,8 +195,7 @@
         );
         return new AAChartModel()
                 .chartType(AAChartType.Column)
-                .title("Colorful Column Chart")
-                .subtitle("single data array colorful column chart")
+                .backgroundColor("#EDEFF2")
                 .colorsTheme(new String[]{"#38C494",})
                 .categories(new String[]{"涓�鏈�", "浜屾湀", "涓夋湀", "鍥涙湀", "浜旀湀", "鍏湀",
                         "涓冩湀", "鍏湀", "涔濇湀", "鍗佹湀", "鍗佷竴鏈�", "鍗佷簩鏈�", "鍗佷簩鏈�", "鍗佷簩鏈�", "鍗佷簩鏈�", "鍗佷簩鏈�", "鍗佷簩鏈�", "鍗佷簩鏈�", "鍗佷簩鏈�", "鍗佷簩鏈�", "鍗佷簩鏈�", "鍗佷簩鏈�", "鍗佷簩鏈�", "鍗佷簩鏈�", "鍗佷簩鏈�", "鍗佷簩鏈�", "鍗佷簩鏈�", "鍗佷簩鏈�", "鍗佷簩鏈�", "鍗佷簩鏈�", "鍗佷簩鏈�", "鍗佷簩鏈�", "鍗佷簩鏈�", "鍗佷簩鏈�",})
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/home/HomePageFragment.java b/app/src/main/java/com/hdl/photovoltaic/ui/home/HomePageFragment.java
index d0474e4..af3f440 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/home/HomePageFragment.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/home/HomePageFragment.java
@@ -1,63 +1,11 @@
 package com.hdl.photovoltaic.ui.home;
 
 
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.adjustYAxisMaxAndMinValues;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.configureAreaChartThreshold;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.configureChartWithShadowStyle;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.configureColorfulChart;
 import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.configureColorfulColumnChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.configureColorfulDataLabelsStepLineChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.configureColorfulGradientAreaChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.configureColorfulGradientColorAndColorfulDataLabelsStepAreaChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.configureColorfulGradientColorChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.configureColorfulGradientSplineChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.configureColorfulShadowSplineChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.configureDiscontinuousDataChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.configureGradientColorAreasplineChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.configureHexagonRadarChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.configureMaxAndMinDataLabelsForChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.configureMultiLevelStopsArrGradientColorAreasplineMixedLineChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.configureNightingaleRoseChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.configurePentagonRadarChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.configureQuadrangleRadarChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.configureSpecialStyleColumnForNegativeDataMixedPositiveData;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.configureSpecialStyleColumnOfSingleDataElementChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.configureSpecialStyleMarkerOfSingleDataElementChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.configureTriangleRadarChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.connectNullsForSingleAASeriesElement;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.customAreasplineChartWithColorfulGradientColorZones;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.customBarChartHoverColorAndSelectColor;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.customChartHoverAndSelectHaloStyle;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.customColumnChartBorderStyleAndStatesHoverColor;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.customLineChartMarkerSymbolContent;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.customLineChartWithColorfulMarkersAndLines;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.customLineChartWithColorfulMarkersAndLines2;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.customNormalStackingChartDataLabelsContentAndStyle;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.customScatterChartMarkerSymbolContent;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.customSpecialStyleDataLabelOfSingleDataElementChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.customSplineChartMarkerStatesHoverStyle;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.customVerticalXAxisCategoriesLabelsByHTMLBreakLineTag;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.disableSomeOfLinesMouseTrackingEffect;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.disableSplineChartMarkerHoverEffect;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.doubleLayerPieChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.drawLineChartWithPointsCoordinates;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.freeStyleRoundedCornersStackingColumnChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.largeDataStackingColumnChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.lineChartsWithLargeDifferencesInTheNumberOfDataInDifferentSeriesElement;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.noMoreGroupingAndNestedColumnChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.noMoreGroupingAndOverlapEachOtherColumnChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.splineChartHoverLineWithNoChangeAndCustomMarkerStatesHoverStyle;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.topRoundedCornersStackingColumnChart;
-import static com.hdl.photovoltaic.ui.home.CustomStyleChartComposer.upsideDownPyramidChart;
 
-import android.content.Intent;
-import android.graphics.Color;
 import android.os.Bundle;
-import android.provider.Settings;
+import android.text.TextUtils;
 import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.widget.Toast;
 
 import androidx.appcompat.content.res.AppCompatResources;
 
@@ -67,15 +15,15 @@
 import com.github.AAChartModel.AAChartCore.AAChartCreator.AAChartModel;
 import com.github.AAChartModel.AAChartCore.AAChartCreator.AAChartView;
 import com.github.AAChartModel.AAChartCore.AAChartCreator.AAMoveOverEventMessageModel;
-import com.github.AAChartModel.AAChartCore.AAChartEnum.AAChartType;
 import com.hdl.photovoltaic.R;
 import com.hdl.photovoltaic.base.CustomBaseFragment;
-import com.hdl.photovoltaic.config.AppConfigManage;
 import com.hdl.photovoltaic.config.ConstantManage;
 import com.hdl.photovoltaic.config.UserConfigManage;
 import com.hdl.photovoltaic.databinding.FragmentHomePageBinding;
 import com.hdl.photovoltaic.enums.HomepageTitleTabSwitch;
+import com.hdl.photovoltaic.other.HdlDeviceLogic;
 import com.hdl.photovoltaic.other.HdlLogLogic;
+import com.hdl.photovoltaic.other.HdlThreadLogic;
 import com.hdl.photovoltaic.utils.TimeUtils;
 import com.hdl.sdk.link.core.bean.eventbus.BaseEventBus;
 
@@ -86,7 +34,6 @@
 import java.util.Calendar;
 import java.util.Date;
 
-import io.dcloud.common.util.DensityUtils;
 
 /**
  * 棣栭〉妯″潡
@@ -116,6 +63,7 @@
         initView();
         //鍒濆鍖栫晫闈㈢洃鍚櫒
         initEvent();
+
 
     }
 
@@ -151,8 +99,9 @@
                 viewBinding.v3.setVisibility(View.VISIBLE);
                 viewBinding.homePageStationSelectTimeLl.setVisibility(View.VISIBLE);
 
-
-                setUpAAChartView(1);
+                String dataStr = TimeUtils.getDateTimestamp(getCurrentTimestamp(), getTimeDateFormat());
+                viewBinding.yearMonthDayTv.setText(dataStr);
+                setUpAAChartView();
 
             }
         });
@@ -177,8 +126,9 @@
                 viewBinding.v2.setVisibility(View.GONE);
                 viewBinding.v3.setVisibility(View.VISIBLE);
                 viewBinding.homePageStationSelectTimeLl.setVisibility(View.VISIBLE);
-
-                setUpAAChartView(2);
+                String dataStr = TimeUtils.getDateTimestamp(getCurrentTimestamp(), getTimeDateFormat());
+                viewBinding.yearMonthDayTv.setText(dataStr);
+                setUpAAChartView();
 
 
             }
@@ -204,8 +154,9 @@
                 viewBinding.v2.setVisibility(View.GONE);
                 viewBinding.v3.setVisibility(View.GONE);
                 viewBinding.homePageStationSelectTimeLl.setVisibility(View.VISIBLE);
-
-                setUpAAChartView(2);
+                String dataStr = TimeUtils.getDateTimestamp(getCurrentTimestamp(), getTimeDateFormat());
+                viewBinding.yearMonthDayTv.setText(dataStr);
+                setUpAAChartView();
             }
         });
         //鐢熷懡鏈�
@@ -230,32 +181,65 @@
                 viewBinding.v3.setVisibility(View.GONE);
                 viewBinding.homePageStationSelectTimeLl.setVisibility(View.GONE);
 
-                setUpAAChartView(2);
+                setUpAAChartView();
 
             }
         });
         //涓婁竴姝�
-        viewBinding.lastStepIv.setOnClickListener(new View.OnClickListener() {
+        viewBinding.lastStepClickLl.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
+                String currDate = viewBinding.yearMonthDayTv.getText().toString();
+                if (TextUtils.isEmpty(currDate)) {
+                    return;
+                }
+                String timeDateFormat = getTimeDateFormat();
+                Calendar calendar = TimeUtils.stringToCalendar(currDate, timeDateFormat);
+                String time = TimeUtils.subtractDayMonthYearFromDate(calendar, 1, timeDateFormat, timeType);
+                viewBinding.yearMonthDayTv.setText(time);
+
 
             }
         });
         //涓嬩竴姝�
-        viewBinding.nextStepIv.setOnClickListener(new View.OnClickListener() {
+        viewBinding.nextStepClickLl.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
+                String currDate = viewBinding.yearMonthDayTv.getText().toString();
+                if (TextUtils.isEmpty(currDate)) {
+                    return;
+                }
+                String timeDateFormat = getTimeDateFormat();
+                Calendar calendar = TimeUtils.stringToCalendar(currDate, timeDateFormat);
+                String time = TimeUtils.addDayMonthYearToDate(calendar, 1, timeDateFormat, timeType);
+                if (TimeUtils.stringDateToTimestamp(time, timeDateFormat) > getCurrentTimestamp()) {
+                    HdlThreadLogic.toast(_mActivity, getString(R.string.the_query_date_is_exceeded));
 
+                    return;
+                }
+                viewBinding.yearMonthDayTv.setText(time);
             }
         });
     }
 
     private void initView() {
-        String dataStr = TimeUtils.getDateTimestamp(System.currentTimeMillis(), TimeUtils.zhDateFormat);
-        if (!UserConfigManage.getInstance().isZh()) {
-            dataStr = TimeUtils.getDateTimestamp(System.currentTimeMillis(), TimeUtils.enDateFormat);
-        }
+
+        String dataStr = TimeUtils.getDateTimestamp(getCurrentTimestamp(), getTimeDateFormat());
         viewBinding.yearMonthDayTv.setText(dataStr);
+
+        String installed_capacity = getString(R.string.installed_capacity) + "(" + HdlDeviceLogic.kWp + ")";
+        viewBinding.homePageStationInfoRl1Text2Tv.setText(installed_capacity);
+        String generated_power = getString(R.string.generated_power) + "(" + HdlDeviceLogic.kW + ")";
+        viewBinding.homePageStationInfoRl1Text4Tv.setText(generated_power);
+        String generation = getString(R.string.generation) + "(" + HdlDeviceLogic.kWp + ")";
+        viewBinding.homePageStationInfoRl1TitleTv.setText(generation);
+
+        viewBinding.homePageStationInfoRl2DayIc.dataTypeTv.setText(R.string.day_power_generation);
+        viewBinding.homePageStationInfoRl2MonIc.dataTypeTv.setText(R.string.month_power_generation);
+        viewBinding.homePageStationInfoRl2YearIc.dataTypeTv.setText(R.string.year_power_generation);
+        viewBinding.homePageStationInfoRl2CumulativeIc.dataTypeTv.setText(R.string.cumulative_power_generation);
+
+
         viewBinding.dayTv.setBackground(AppCompatResources.getDrawable(_mActivity, R.drawable.time_selected_38c494));
         viewBinding.dayTv.setTextColor(_mActivity.getColor(R.color.text_38C494));
         viewBinding.monthTv.setBackground(AppCompatResources.getDrawable(_mActivity, R.color.text_00000000));
@@ -268,6 +252,7 @@
         viewBinding.v2.setVisibility(View.VISIBLE);
         viewBinding.v3.setVisibility(View.VISIBLE);
         viewBinding.homePageStationSelectTimeLl.setVisibility(View.VISIBLE);
+        setUpAAChartView();//鍥捐〃鍔犺浇
     }
 
 
@@ -275,24 +260,34 @@
      * 鏃堕棿閫夋嫨鍣�
      */
     private void selectedTimePickerBuilder() {
+        String currDate = viewBinding.yearMonthDayTv.getText().toString();
+        if (TextUtils.isEmpty(currDate)) {
+            return;
+        }
         //鏃堕棿閫夋嫨鍣�
-        Calendar selectedDate = Calendar.getInstance();
+        Calendar selectedDate = TimeUtils.stringToCalendar(currDate, getTimeDateFormat());
         Calendar startDate = Calendar.getInstance();
-        //startDate.set(2013,1,1);
-        Calendar endDate = Calendar.getInstance();
-        //endDate.set(2020,1,1);
-
-        //姝g‘璁剧疆鏂瑰紡
-        startDate.set(2024, 1, 1);
-        endDate.set(2025, 4, 25);
-
+        Calendar endDate = TimeUtils.timestampToCalendar(getCurrentTimestamp());
+        //璁剧疆鏃ユ湡銆愬紑濮嬨�戝拰銆愮粨鏉熴��
+        startDate.set(2023, 1, 1);
+        endDate.set(endDate.get(Calendar.YEAR), endDate.get(Calendar.MONTH), endDate.get(Calendar.DAY_OF_MONTH));
+        boolean day = true;
+        boolean month = true;
+        boolean year = true;
+        if (timeType == TimeType.month) {
+            day = false;
+        } else if (timeType == TimeType.year) {
+            day = false;
+            month = false;
+        }
         TimePickerView pvTime = new TimePickerBuilder(_mActivity, new OnTimeSelectListener() {
             @Override
             public void onTimeSelect(Date date, View v) {//閫変腑浜嬩欢鍥炶皟
-//                        tvTime.setText(getTime(date));
+                String timeDateFormat = getTimeDateFormat();
+                String time = TimeUtils.dateToString(date, timeDateFormat);
+                viewBinding.yearMonthDayTv.setText(time);
             }
-        })
-                .setType(new boolean[]{true, true, true, false, false, false})// 榛樿鍏ㄩ儴鏄剧ず
+        }).setType(new boolean[]{year, month, day, false, false, false})// 榛樿鍏ㄩ儴鏄剧ず
                 .setCancelText(_mActivity.getString(R.string.loading_cancel))//鍙栨秷鎸夐挳鏂囧瓧
                 .setSubmitText(_mActivity.getString(R.string.loading_affirm))//纭鎸夐挳鏂囧瓧
                 .setContentTextSize(18)//婊氳疆鏂囧瓧澶у皬
@@ -305,159 +300,33 @@
                 .setCancelColor(_mActivity.getColor(R.color.text_40000000))//鍙栨秷鎸夐挳鏂囧瓧棰滆壊
                 .setTitleBgColor(_mActivity.getColor(R.color.text_FFFFFFFF))//鏍囬鑳屾櫙棰滆壊 Night mode
                 .setBgColor(_mActivity.getColor(R.color.text_FFFFFFFF))//婊氳疆鑳屾櫙棰滆壊 Night mode
-                .setTextColorCenter(_mActivity.getColor(R.color.text_90000000))
-                .setDate(selectedDate)// 濡傛灉涓嶈缃殑璇濓紝榛樿鏄郴缁熸椂闂�*/
+                .setTextColorCenter(_mActivity.getColor(R.color.text_90000000)).setDate(selectedDate)// 濡傛灉涓嶈缃殑璇濓紝榛樿鏄郴缁熸椂闂�*/
                 .setRangDate(startDate, endDate)//璧峰缁堟骞存湀鏃ヨ瀹�
-                .setLabel(_mActivity.getString(R.string.year), _mActivity.getString(R.string.month), _mActivity.getString(R.string.day), _mActivity.getString(R.string.hour), _mActivity.getString(R.string.minute), _mActivity.getString(R.string.succeed))//榛樿璁剧疆涓哄勾鏈堟棩鏃跺垎绉�
+                .setLabel(_mActivity.getString(R.string.year), _mActivity.getString(R.string.month), _mActivity.getString(R.string.day), _mActivity.getString(R.string.hour), _mActivity.getString(R.string.minute), _mActivity.getString(R.string.seconds))//榛樿璁剧疆涓哄勾鏈堟棩鏃跺垎绉�
                 .isCenterLabel(false) //鏄惁鍙樉绀轰腑闂撮�変腑椤圭殑label鏂囧瓧锛宖alse鍒欐瘡椤筰tem鍏ㄩ儴閮藉甫鏈塴abel銆�
                 .isDialog(false)//鏄惁鏄剧ず涓哄璇濇鏍峰紡
                 .setItemVisibleCount(7)//瀵硅瘽妗嗛珮搴�
-                .setDividerColor(_mActivity.getColor(R.color.text_E1E1E1))
-                .setLineSpacingMultiplier(3f)//
+                .setDividerColor(_mActivity.getColor(R.color.text_E1E1E1)).setLineSpacingMultiplier(3f)//
                 .build();
         pvTime.show();
     }
 
-    private void setUpAAChartView(int value) {
-        if (value == 1) {
-            aaChartView = viewBinding.AAChartView;
-            aaChartView.callBack = this;
-            aaChartModel = configureAAChartModel();
-            aaChartView.aa_drawChartWithChartModel(aaChartModel);
-        } else if (value == 2) {
-            aaChartView = viewBinding.AAChartView;
-            aaChartView.callBack = this;
-            aaChartModel = configureColorfulColumnChart();// configureTheAAChartModel("colorfulColumnChart");
-            aaChartView.aa_drawChartWithChartModel(aaChartModel);
+    /**
+     * 鍥捐〃鍔犺浇
+     */
+    private void setUpAAChartView() {
+        aaChartView = viewBinding.AAChartView;
+        aaChartView.callBack = this;
+        if (TimeType.day == timeType) {
+            aaChartModel = BasicChartComposer.configureAreaChart();
+        } else if (TimeType.month == timeType
+                || TimeType.year == timeType
+                || TimeType.lifecycle == timeType) {
+            aaChartModel = configureColorfulColumnChart();
         }
+        aaChartView.aa_drawChartWithChartModel(aaChartModel);
     }
 
-    private AAChartModel configureAAChartModel() {
-        String chartType = AAChartType.Area;
-        int position = 0;
-        aaChartModel = BasicChartComposer.configureAreaChart();
-        configureTheStyleForDifferentTypeChart(chartType, position);
-        return aaChartModel;
-    }
-
-    private void configureTheStyleForDifferentTypeChart(String chartType, int position) {
-        if ((chartType.equals(AAChartType.Area) || chartType.equals(AAChartType.Line))
-                && (position == 4 || position == 5)) {
-            aaChartModel = BasicChartComposer.configureStepAreaChartAndStepLineChart();
-        } else if (chartType.equals(AAChartType.Column) || chartType.equals(AAChartType.Bar)) {
-
-            aaChartModel = BasicChartComposer.configureColumnChartAndBarChart();
-        } else if (chartType.equals(AAChartType.Area) || chartType.equals(AAChartType.Areaspline)) {
-            aaChartModel = BasicChartComposer.configureAreaChartAndAreasplineChartStyle(chartType);
-        } else if (chartType.equals(AAChartType.Line) || chartType.equals(AAChartType.Spline)) {
-            aaChartModel = BasicChartComposer.configureLineChartAndSplineChartStyle(chartType);
-        }
-        aaChartModel.chartType = chartType;
-    }
-
-    private AAChartModel configureTheAAChartModel(String chartType) {
-        switch (chartType) {
-            case "colorfulChart":
-                return configureColorfulChart();
-            case "gradientColorfulChart":
-                return configureColorfulGradientColorChart();
-            case "discontinuousDataChart":
-                return configureDiscontinuousDataChart();
-            case "colorfulColumnChart":
-                return configureColorfulColumnChart();
-            case "nightingaleRoseChart":
-                return configureNightingaleRoseChart();
-            case "chartWithShadowStyle":
-                return configureChartWithShadowStyle();
-            case "colorfulGradientAreaChart":
-                return configureColorfulGradientAreaChart();
-            case "colorfulGradientSplineChart":
-                return configureColorfulGradientSplineChart();
-            case "gradientColorAreasplineChart":
-                return configureGradientColorAreasplineChart();
-            case "SpecialStyleMarkerOfSingleDataElementChart":
-                return configureSpecialStyleMarkerOfSingleDataElementChart();
-            case "SpecialStyleColumnOfSingleDataElementChart":
-                return configureSpecialStyleColumnOfSingleDataElementChart();
-            case "AreaChartThreshold":
-                return configureAreaChartThreshold();
-            case "customScatterChartMarkerSymbolContent":
-                return customScatterChartMarkerSymbolContent();
-            case "customLineChartMarkerSymbolContent":
-                return customLineChartMarkerSymbolContent();
-            case "TriangleRadarChart":
-                return configureTriangleRadarChart();
-            case "QuadrangleRadarChart":
-                return configureQuadrangleRadarChart();
-            case "PentagonRadarChart":
-                return configurePentagonRadarChart();
-            case "HexagonRadarChart":
-                return configureHexagonRadarChart();
-            case "adjustYAxisMaxAndMinValues":
-                return adjustYAxisMaxAndMinValues();
-            case "customSpecialStyleDataLabelOfSingleDataElementChart":
-                return customSpecialStyleDataLabelOfSingleDataElementChart();
-            case "customBarChartHoverColorAndSelectColor":
-                return customBarChartHoverColorAndSelectColor();
-            case "customChartHoverAndSelectHaloStyle":
-                return customChartHoverAndSelectHaloStyle();
-            case "customSplineChartMarkerStatesHoverStyle":
-                return customSplineChartMarkerStatesHoverStyle();
-            case "splineChartHoverLineWithNoChangeAndCustomMarkerStatesHoverStyle":
-                return splineChartHoverLineWithNoChangeAndCustomMarkerStatesHoverStyle();
-            case "customNormalStackingChartDataLabelsContentAndStyle":
-                return customNormalStackingChartDataLabelsContentAndStyle();
-            case "upsideDownPyramidChart":
-                return upsideDownPyramidChart();
-            case "doubleLayerPieChart":
-                return doubleLayerPieChart();
-            case "disableSomeOfLinesMouseTrackingEffect":
-                return disableSomeOfLinesMouseTrackingEffect();
-            case "configureColorfulShadowSplineChart":
-                return configureColorfulShadowSplineChart();
-            case "configureColorfulDataLabelsStepLineChart":
-                return configureColorfulDataLabelsStepLineChart();
-            case "configureColorfulGradientColorAndColorfulDataLabelsStepAreaChart":
-                return configureColorfulGradientColorAndColorfulDataLabelsStepAreaChart();
-            case "disableSplineChartMarkerHoverEffect":
-                return disableSplineChartMarkerHoverEffect();
-            case "configureMaxAndMinDataLabelsForChart":
-                return configureMaxAndMinDataLabelsForChart();
-            case "customVerticalXAxisCategoriesLabelsByHTMLBreakLineTag":
-                return customVerticalXAxisCategoriesLabelsByHTMLBreakLineTag();
-            case "noMoreGroupingAndOverlapEachOtherColumnChart":
-                return noMoreGroupingAndOverlapEachOtherColumnChart();
-            case "noMoreGroupingAndNestedColumnChart":
-                return noMoreGroupingAndNestedColumnChart();
-            case "topRoundedCornersStackingColumnChart":
-                return topRoundedCornersStackingColumnChart();
-            case "freeStyleRoundedCornersStackingColumnChart":
-                return freeStyleRoundedCornersStackingColumnChart();
-            case "customColumnChartBorderStyleAndStatesHoverColor":
-                return customColumnChartBorderStyleAndStatesHoverColor();
-            case "customLineChartWithColorfulMarkersAndLines":
-                return customLineChartWithColorfulMarkersAndLines();
-            case "customLineChartWithColorfulMarkersAndLines2":
-                return customLineChartWithColorfulMarkersAndLines2();
-            case "drawLineChartWithPointsCoordinates":
-                return drawLineChartWithPointsCoordinates();
-            case "configureSpecialStyleColumnForNegativeDataMixedPositiveData":
-                return configureSpecialStyleColumnForNegativeDataMixedPositiveData();
-            case "configureMultiLevelStopsArrGradientColorAreasplineMixedLineChart":
-                return configureMultiLevelStopsArrGradientColorAreasplineMixedLineChart();
-            case "connectNullsForSingleAASeriesElement":
-                return connectNullsForSingleAASeriesElement();
-            case "lineChartsWithLargeDifferencesInTheNumberOfDataInDifferentSeriesElement":
-                return lineChartsWithLargeDifferencesInTheNumberOfDataInDifferentSeriesElement();
-            case "customAreasplineChartWithColorfulGradientColorZones":
-                return customAreasplineChartWithColorfulGradientColorZones();
-            case "largeDataStackingColumnChart":
-                return largeDataStackingColumnChart();
-
-
-        }
-        return configureColorfulChart();
-    }
 
     @Override
     public void chartViewDidFinishLoad(AAChartView aaChartView) {
@@ -488,10 +357,53 @@
     }
 
 
-    public enum TimeType {
-        day,
-        month,
-        year,
-        lifecycle
+    /**
+     * 鑾峰彇褰撳墠绯荤粺鏃ユ湡鏃堕棿鎴�
+     *
+     * @return 鏃堕棿鎴�
+     */
+    private long getCurrentTimestamp() {
+        return new Date().getTime();
     }
+
+    /**
+     * 鑾峰彇鏃ユ湡鏍煎紡 (2024/2/09,yyyy/DD/dd)
+     *
+     * @return 鏃ユ湡鏍煎紡 (2024/2/09,yyyy/DD/dd)
+     */
+    private String getTimeDateFormat() {
+        String timeDateFormat = TimeUtils.zhDateYearMonthDayFormat;
+        switch (timeType) {
+            case day: {
+                timeDateFormat = TimeUtils.zhDateYearMonthDayFormat;
+                if (!UserConfigManage.getInstance().isZh()) {
+                    timeDateFormat = TimeUtils.enDateYearMonthDayFormat;
+                }
+            }
+            break;
+            case month: {
+                timeDateFormat = TimeUtils.zhDateYearMonthFormat;
+                if (!UserConfigManage.getInstance().isZh()) {
+                    timeDateFormat = TimeUtils.enDateYearMonthFormat;
+                }
+            }
+            break;
+            case year:
+            case lifecycle: {
+                timeDateFormat = TimeUtils.zhDateYearFormat;
+                if (!UserConfigManage.getInstance().isZh()) {
+                    timeDateFormat = TimeUtils.enDateYearFormat;
+                }
+            }
+            break;
+
+        }
+        return timeDateFormat;
+    }
+
+    public enum TimeType {
+        day, month, year, lifecycle
+    }
+
+
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/hdl/photovoltaic/utils/TimeUtils.java b/app/src/main/java/com/hdl/photovoltaic/utils/TimeUtils.java
index 2e9aed4..899010f 100644
--- a/app/src/main/java/com/hdl/photovoltaic/utils/TimeUtils.java
+++ b/app/src/main/java/com/hdl/photovoltaic/utils/TimeUtils.java
@@ -1,9 +1,11 @@
 package com.hdl.photovoltaic.utils;
 
 import android.annotation.SuppressLint;
+import android.text.TextUtils;
 
 import com.hdl.photovoltaic.config.UserConfigManage;
 import com.hdl.photovoltaic.other.HdlThreadLogic;
+import com.hdl.photovoltaic.ui.home.HomePageFragment;
 import com.hdl.sdk.link.core.utils.LanguageUtils;
 
 import java.text.SimpleDateFormat;
@@ -16,8 +18,13 @@
  */
 public class TimeUtils {
 
-    public static final String zhDateFormat = "yyyy/MM/dd";
-    public static final String enDateFormat = "dd/MM/yyyy";
+    public static final String zhDateYearMonthDayFormat = "yyyy/MM/dd";
+    public static final String zhDateYearMonthFormat = "yyyy/MM";
+    public static final String zhDateYearFormat = "yyyy";
+
+    public static final String enDateYearMonthDayFormat = "dd/MM/yyyy";
+    public static final String enDateYearMonthFormat = "/MM/yyyy";
+    public static final String enDateYearFormat = "yyyy";
 
     /**
      * 鑾峰彇鍒嗛挓
@@ -40,7 +47,7 @@
      * 鏃堕棿鎴宠浆鏃堕棿(鏍煎紡:yyyy-MM-dd)
      *
      * @param timestamp   鏃堕棿鎴�
-     * @param date_format 鏃堕棿鏍煎紡(渚嬪"yyyy-MM-dd")
+     * @param date_format 鏃堕棿鏍煎紡(渚嬪"yyyy/MM/dd")
      * @return -
      */
     public static String getDateTimestamp(long timestamp, String date_format) {
@@ -100,30 +107,118 @@
     }
 
     /**
-     * 鍔犲ぉ鏁�
+     * 鍔狅紙鏃ワ紝鏈堬紝骞达級璁$畻
      *
-     * @param date      鏃ュ巻
-     * @param daysToAdd 澶╂暟
+     * @param date              鏃ュ巻
+     * @param dayMonthYearToAdd 澶╂暟锛堟棩锛屾湀锛屽勾锛�
      * @return 鏃ュ巻
      */
-    public static Calendar addDaysToDate(Calendar date, int daysToAdd) {
+    public static String addDayMonthYearToDate(Calendar date, int dayMonthYearToAdd, String dateFormat, HomePageFragment.TimeType timeType) {
         Calendar newDate = (Calendar) date.clone();
-        newDate.add(Calendar.DAY_OF_MONTH, daysToAdd);
-        return newDate;
+        if (timeType == HomePageFragment.TimeType.day) {
+            newDate.add(Calendar.DAY_OF_MONTH, dayMonthYearToAdd);
+        } else if (timeType == HomePageFragment.TimeType.month) {
+            newDate.add(Calendar.MONTH, dayMonthYearToAdd);
+        } else if (timeType == HomePageFragment.TimeType.year || timeType == HomePageFragment.TimeType.lifecycle) {
+            newDate.add(Calendar.YEAR, dayMonthYearToAdd);
+        }
+        return calendarToString(newDate, dateFormat);
     }
 
     /**
-     * 鍑忓ぉ鏁�
+     * 鍑忥紙鏃ワ紝鏈堬紝骞达級璁$畻
      *
-     * @param date           鏃ュ巻
-     * @param daysToSubtract 澶╂暟
+     * @param date                   鏃ュ巻
+     * @param dayMonthYearToSubtract 澶╂暟
      * @return 鏃ュ巻
      */
-    public static Calendar subtractDaysFromDate(Calendar date, int daysToSubtract) {
+    public static String subtractDayMonthYearFromDate(Calendar date, int dayMonthYearToSubtract, String dateFormat, HomePageFragment.TimeType timeType) {
         Calendar newDate = (Calendar) date.clone();
-        newDate.add(Calendar.DAY_OF_MONTH, -daysToSubtract);
-        return newDate;
+        if (timeType == HomePageFragment.TimeType.day) {
+            newDate.add(Calendar.DAY_OF_MONTH, -dayMonthYearToSubtract);
+        } else if (timeType == HomePageFragment.TimeType.month) {
+            newDate.add(Calendar.MONTH, -dayMonthYearToSubtract);
+        } else if (timeType == HomePageFragment.TimeType.year) {
+            newDate.add(Calendar.YEAR, -dayMonthYearToSubtract);
+        }
+        return calendarToString(newDate, dateFormat);
     }
 
+    /**
+     * 鏃堕棿鎴宠浆Calendar
+     *
+     * @param timestamp 鏃堕棿鎴�
+     * @return Calendar瀵硅薄
+     */
+    public static Calendar timestampToCalendar(long timestamp) {
+        // 灏嗘椂闂存埑杞崲涓烘棩鏈�
+        Date date = new Date(timestamp);
+        // 浣跨敤Calendar绫昏缃棩鏈�
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        return calendar;
+    }
+
+    /**
+     * 瀛楃涓叉棩鏈熸牸寮忚浆Calendar
+     *
+     * @param dateString (2023/04/01)
+     * @param dateFormat (yyyy/MM/dd)
+     * @return Calendar瀵硅薄
+     */
+    public static Calendar stringToCalendar(String dateString, String dateFormat) {
+        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, Locale.ENGLISH);
+        Calendar calendar = Calendar.getInstance();
+        try {
+            Date date = sdf.parse(dateString);
+            if (date != null) {
+                calendar.setTime(date);
+            }
+        } catch (Exception ignored) {
+        }
+        return calendar;
+    }
+
+    /**
+     * Calendar杞瓧绗︿覆鏃ユ湡鏍煎紡
+     *
+     * @param dateFormat (yyyy/MM/dd)
+     * @return Calendar瀵硅薄
+     */
+    public static String calendarToString(Calendar calendar, String dateFormat) {
+        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, Locale.ENGLISH);
+        return sdf.format(calendar.getTime());
+    }
+
+    /**
+     * Date杞瓧绗︿覆鏃ユ湡鏍煎紡
+     *
+     * @param dateFormat (yyyy/MM/dd)
+     * @return Calendar瀵硅薄
+     */
+    public static String dateToString(Date date, String dateFormat) {
+        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, Locale.ENGLISH);
+        return sdf.format(date.getTime());
+    }
+
+    /**
+     * 瀛楃涓叉棩鏈熸牸寮忚浆鏃堕棿鎴�
+     *
+     * @param dateString (2024/06/01)
+     * @param dateFormat (yyyy/MM/dd)
+     * @return 鏃堕棿鎴�
+     */
+    public static long stringDateToTimestamp(String dateString, String dateFormat) {
+        try {
+            SimpleDateFormat slf = new SimpleDateFormat(dateFormat, Locale.getDefault());
+            Date date = slf.parse(dateString);
+            if (date == null) {
+                return 0;
+            }
+            return date.getTime(); // 鑾峰彇鏃堕棿鎴�
+        } catch (Exception ignored) {
+        }
+        return 0;
+    }
 
 }
diff --git a/app/src/main/res/layout/fragment_home_page.xml b/app/src/main/res/layout/fragment_home_page.xml
index dc4f322..d500e94 100644
--- a/app/src/main/res/layout/fragment_home_page.xml
+++ b/app/src/main/res/layout/fragment_home_page.xml
@@ -148,7 +148,7 @@
                         android:layout_below="@+id/home_page_station_info_rl1_text1_tv"
                         android:layout_alignStart="@+id/home_page_station_info_rl1_text1_tv"
                         android:layout_marginTop="3dp"
-                        android:text="kw.h" />
+                        android:text="@string/installed_capacity" />
 
                     <TextView
                         android:id="@+id/home_page_station_info_rl1_text3_tv"
@@ -168,7 +168,7 @@
                         android:layout_below="@+id/home_page_station_info_rl1_text3_tv"
                         android:layout_alignStart="@+id/home_page_station_info_rl1_text1_tv"
                         android:layout_marginTop="3dp"
-                        android:text="kw.h" />
+                        android:text="@string/generated_power" />
 
                 </RelativeLayout>
 
@@ -194,7 +194,7 @@
                         android:layout_height="14.5dp"
                         android:layout_marginStart="@dimen/dp_47"
                         android:layout_marginTop="17dp"
-                        android:text="Electricity /kw.h"
+                        android:text="@string/generation"
                         android:textColor="@color/text_191919"
                         android:textSize="@dimen/text_12" />
 
@@ -260,7 +260,7 @@
                     android:layout_width="wrap_content"
                     android:layout_height="18dp"
                     android:layout_marginTop="@dimen/dp_25"
-                    android:text="鐐瑰嚮娴嬭瘯"
+                    android:text="@string/energy_generation_statistics"
                     android:textColor="@color/text_90000000"
                     android:textSize="@dimen/text_14"
                     android:textStyle="bold"
@@ -340,16 +340,31 @@
                     app:layout_constraintEnd_toEndOf="parent"
                     app:layout_constraintStart_toStartOf="parent"
                     app:layout_constraintTop_toBottomOf="@+id/home_page_station_select_time_type_ll">
+                    <!--鍔犲ぇ鐐瑰嚮鐑尯-->
+                    <LinearLayout
+                        android:id="@+id/last_step_click_ll"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
 
-                    <ImageView
-                        android:id="@+id/last_step_iv"
-                        android:layout_width="9dp"
-                        android:layout_height="15dp"
-                        android:scaleType="fitCenter"
-                        android:src="@drawable/last_step" />
+                        <View
+                            android:layout_width="@dimen/dp_16"
+                            android:layout_height="match_parent" />
+
+                        <ImageView
+                            android:id="@+id/last_step_iv"
+                            android:layout_width="9dp"
+                            android:layout_height="15dp"
+                            android:scaleType="fitCenter"
+                            android:src="@drawable/last_step" />
+
+                        <View
+                            android:layout_width="@dimen/dp_16"
+                            android:layout_height="match_parent" />
+                    </LinearLayout>
 
                     <View
-                        android:layout_width="@dimen/dp_32"
+                        android:layout_width="@dimen/dp_16"
                         android:layout_height="match_parent" />
 
 
@@ -364,15 +379,31 @@
                         android:textStyle="bold" />
 
                     <View
-                        android:layout_width="@dimen/dp_32"
+                        android:layout_width="@dimen/dp_16"
                         android:layout_height="match_parent" />
+                    <!--鍔犲ぇ鐐瑰嚮鐑尯-->
+                    <LinearLayout
+                        android:id="@+id/next_step_click_ll"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
 
-                    <ImageView
-                        android:id="@+id/next_step_iv"
-                        android:layout_width="9dp"
-                        android:layout_height="15dp"
-                        android:scaleType="fitCenter"
-                        android:src="@drawable/next_step" />
+                        <View
+                            android:layout_width="@dimen/dp_16"
+                            android:layout_height="match_parent" />
+
+                        <ImageView
+                            android:id="@+id/next_step_iv"
+                            android:layout_width="9dp"
+                            android:layout_height="15dp"
+                            android:scaleType="fitCenter"
+                            android:src="@drawable/next_step" />
+
+                        <View
+                            android:layout_width="@dimen/dp_16"
+                            android:layout_height="match_parent" />
+
+                    </LinearLayout>
 
                 </LinearLayout>
 
@@ -437,7 +468,7 @@
                     android:id="@+id/social_contribution_title_tv"
                     android:layout_width="wrap_content"
                     android:layout_height="17dp"
-                    android:text="Social Contribution"
+                    android:text="@string/social_contribution"
                     android:textColor="@color/text_90000000"
                     android:textSize="@dimen/text_14"
                     android:textStyle="bold"
diff --git a/app/src/main/res/layout/item_data.xml b/app/src/main/res/layout/item_data.xml
index 9c4c3ba..7579de8 100644
--- a/app/src/main/res/layout/item_data.xml
+++ b/app/src/main/res/layout/item_data.xml
@@ -6,21 +6,23 @@
 
     <TextView
         android:id="@+id/data_tv"
-        style="@style/Text20Style"
         android:layout_width="wrap_content"
         android:layout_height="@dimen/dp_24"
-        android:text="33333"
+        android:textColor="@color/text_90000000"
+        android:textSize="@dimen/text_20"
+        android:textStyle="bold"
+        android:text="33"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent" />
 
     <TextView
         android:id="@+id/data_type_tv"
-        style="@style/Text14Style"
         android:layout_width="wrap_content"
         android:layout_height="@dimen/dp_17"
         android:layout_marginTop="3dp"
-        android:text="kw.h"
+        android:textColor="@color/text_40000000"
+        android:textSize="@dimen/text_14"
         app:layout_constraintEnd_toEndOf="@+id/data_tv"
         app:layout_constraintStart_toStartOf="@+id/data_tv"
         app:layout_constraintTop_toBottomOf="@+id/data_tv" />
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 43d90dd..1c28425 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -255,5 +255,15 @@
     <string name="hour">鏃�</string>
     <string name="minutc">鍒�</string>
     <string name="seconds">绉�</string>
+    <string name="the_query_date_is_exceeded">瓒呭嚭鏌ヨ鏃ユ湡.</string>
+    <string name="energy_generation_statistics">鍙戠數閲忕粺璁�</string>
+    <string name="social_contribution">绀句細璐$尞</string>
+    <string name="day_power_generation">褰撴棩鍙戠數閲�</string>
+    <string name="month_power_generation">褰撴湀鍙戠數閲�</string>
+    <string name="year_power_generation">褰撳勾鍙戠數閲�</string>
+    <string name="cumulative_power_generation">绱鍙戠數閲�</string>
+    <string name="generated_power">鍙戠數鍔熺巼</string>
+    <string name="installed_capacity">瑁呮満瀹归噺</string>
+    <string name="generation">鍙戠數閲�</string>
 
 </resources>
\ No newline at end of file

--
Gitblit v1.8.0