From 88fa5aa9631b263e6e3d99d9ee787f73e78c6fda Mon Sep 17 00:00:00 2001
From: mac <user@users-MacBook-Pro.local>
Date: 星期五, 17 五月 2024 14:54:53 +0800
Subject: [PATCH] 2024年05月17日14:54:51

---
 app/src/main/java/com/hdl/photovoltaic/ui/home/HomePageFragment.java                 |  136 +++++---------
 app/src/main/res/layout/fragment_home_page.xml                                       |   18 +
 app/src/main/res/values/strings.xml                                                  |    4 
 app/src/main/java/com/hdl/photovoltaic/other/HdlPowerStationDataStatisticsLogic.java |   18 +
 app/src/main/java/com/hdl/photovoltaic/ui/home/aachart/BasicChartComposer.java       |    4 
 app/src/main/java/com/hdl/photovoltaic/ui/home/aachart/CustomStyleChartComposer.java |    4 
 app/src/main/java/com/hdl/photovoltaic/utils/SpanUtils.java                          |  193 +++++++++++++++++++++
 app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java                     |   34 +++
 app/src/main/java/com/hdl/photovoltaic/ui/bean/StatisticsBean.java                   |    8 
 app/src/main/java/com/hdl/photovoltaic/utils/TimeUtils.java                          |   64 ++++++
 app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java                     |   23 --
 11 files changed, 371 insertions(+), 135 deletions(-)

diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java
index c866afe..8569903 100644
--- a/app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java
@@ -21,6 +21,8 @@
 
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.net.InetSocketAddress;
 import java.net.Socket;
 import java.util.Hashtable;
@@ -48,6 +50,37 @@
 
         }
         return sHdlCommonLogic;
+    }
+
+    public static String getConvertDoubleUnit(String value) {
+        if (TextUtils.isEmpty(value)) {
+            return HdlDeviceLogic.noValue ;
+        }
+        BigDecimal formattedValue = getBigDecimal(value);
+        return formattedValue.toString() ;
+
+    }
+
+    public static String getConvertDoubleUnit(int value) {
+        if (value == 0) {
+            return HdlDeviceLogic.noValue ;
+        }
+        BigDecimal formattedValue = getBigDecimal(value + "");
+        return formattedValue.toString() ;
+    }
+
+
+    public static String convertString(Object value) {
+        return String.valueOf(value);
+    }
+
+
+    public static BigDecimal getBigDecimal(String value) {
+        if (TextUtils.isEmpty(value)) {
+            return new BigDecimal(0);
+        }
+        double doubleValue = Double.parseDouble(value);
+        return BigDecimal.valueOf(doubleValue).setScale(2, RoundingMode.HALF_UP);
     }
 
 
@@ -131,7 +164,6 @@
 
         }
     }
-
 
 
 }
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 59c99f1..4be1d77 100644
--- a/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
@@ -82,30 +82,7 @@
 
     private List<DeviceBean> mListDevice = new ArrayList<>();
 
-    public static String getConvertDoubleUnit(String value) {
-        if (TextUtils.isEmpty(value)) {
-            return noValue + kWh;
-        }
-        BigDecimal formattedValue = getBigDecimal(value);
-        return formattedValue + kWh;
 
-    }
-
-    public static String getConvertDoubleUnit(int value) {
-        if (value == 0) {
-            return noValue + kWh;
-        }
-        BigDecimal formattedValue = getBigDecimal(value + "");
-        return formattedValue + kWh;
-    }
-
-    private static BigDecimal getBigDecimal(String value) {
-        if (TextUtils.isEmpty(value)) {
-            return new BigDecimal(0);
-        }
-        double doubleValue = Double.parseDouble(value);
-        return BigDecimal.valueOf(doubleValue).setScale(2, RoundingMode.HALF_UP);
-    }
 
     public void clearDeviceList() {
         if (mListDevice == null) {
diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlPowerStationDataStatisticsLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlPowerStationDataStatisticsLogic.java
index 2976c31..95928d5 100644
--- a/app/src/main/java/com/hdl/photovoltaic/other/HdlPowerStationDataStatisticsLogic.java
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlPowerStationDataStatisticsLogic.java
@@ -6,14 +6,19 @@
 import com.google.gson.JsonObject;
 import com.google.gson.reflect.TypeToken;
 import com.hdl.linkpm.sdk.core.exception.HDLException;
+import com.hdl.photovoltaic.config.UserConfigManage;
+import com.hdl.photovoltaic.enums.TimeType;
 import com.hdl.photovoltaic.internet.HttpClient;
 import com.hdl.photovoltaic.internet.api.HttpApi;
 import com.hdl.photovoltaic.listener.CloudCallBeak;
 import com.hdl.photovoltaic.ui.bean.DataOverBean;
 import com.hdl.photovoltaic.ui.bean.SocialContributionBean;
 import com.hdl.photovoltaic.ui.bean.StatisticsBean;
+import com.hdl.photovoltaic.utils.TimeUtils;
 
 import java.lang.reflect.Type;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.List;
 
 /**
@@ -38,6 +43,7 @@
         }
         return sHdlPowerStationDataStatisticsLogic;
     }
+
 
     /**
      * 鑾峰彇缁熻姒傝鏁版嵁(鍏徃缁村害)
@@ -87,9 +93,19 @@
     public void getStatistics(String type, String time, CloudCallBeak<List<StatisticsBean>> cloudCallBeak) {
         String requestUrl = HttpApi.POST_Home_page_statistics;
         JsonObject json = new JsonObject();
-        json.addProperty("dataType", "GE");//鍙戠數閲�
+        json.addProperty("dataType", "GE");//鍙戠數閲忥紙GE 锛� 鍙戠數閲� ;POWER 锛� 鍙戠數鍔熺巼锛�
         json.addProperty("type", type);//绫诲瀷
         if (!TextUtils.isEmpty(time)) {
+            if (!UserConfigManage.getInstance().isZh()) {
+                //鑻辨枃鐨勬椂鍊欓渶瑕佹棩鏈熸牸寮�
+                if (TimeType.day.equals(type)) {
+                    String[] ary = time.split("/");
+                    time = ary[2] + "/" + ary[1] + "/" + ary[0];
+                } else if (TimeType.month.equals(type)) {
+                    String[] ary = time.split("/");
+                    time = ary[1] + "/" + ary[0];
+                }
+            }
             json.addProperty("time", time);//鏃堕棿
         }
         //json.addProperty("zoneType", "password");//鍖哄煙
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/bean/StatisticsBean.java b/app/src/main/java/com/hdl/photovoltaic/ui/bean/StatisticsBean.java
index 39483f2..a8040cd 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/bean/StatisticsBean.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/bean/StatisticsBean.java
@@ -10,7 +10,7 @@
 public class StatisticsBean implements Serializable {
 
     private String fieldName;//	鎻忚堪
-    private int fieldValue;//鍊�
+    private String fieldValue;//鍊�
     private String time;//	鏃堕棿
 
     public String getFieldName() {
@@ -21,11 +21,11 @@
         this.fieldName = fieldName;
     }
 
-    public int getFieldValue() {
-        return fieldValue;
+    public String getFieldValue() {
+        return fieldValue == null ? "" : fieldValue;
     }
 
-    public void setFieldValue(int fieldValue) {
+    public void setFieldValue(String fieldValue) {
         this.fieldValue = fieldValue;
     }
 
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 c048c81..6f08954 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
@@ -26,6 +26,7 @@
 import com.hdl.photovoltaic.enums.HomepageTitleTabSwitch;
 import com.hdl.photovoltaic.enums.TimeType;
 import com.hdl.photovoltaic.listener.CloudCallBeak;
+import com.hdl.photovoltaic.other.HdlCommonLogic;
 import com.hdl.photovoltaic.other.HdlDeviceLogic;
 import com.hdl.photovoltaic.other.HdlLogLogic;
 import com.hdl.photovoltaic.other.HdlPowerStationDataStatisticsLogic;
@@ -63,8 +64,8 @@
     AAChartModel aaChartModel;
 
 
-    private String[] fieldNames = {"00:00", "02:00", "05:00", "07:00", "09:00", "17:00", "22:00", "23:59"};//鍥炬爣X杞村潗鏍囧�肩殑鏁扮粍
-    private Object[] fieldValues = {35, 70.5, 150.5, 135, 170, 205, 222, 245};//鍥炬爣Y杞村潗鏍囧�肩殑鏁扮粍
+    private String[] fieldNames = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23"};//鍥炬爣X杞村潗鏍囧�肩殑鏁扮粍
+    private Object[] fieldValues = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};//鍥炬爣Y杞村潗鏍囧�肩殑鏁扮粍
 
 
     private String timeType = TimeType.day;//鏃堕棿绫诲瀷(榛樿锛氬ぉ)
@@ -147,7 +148,7 @@
                 viewBinding.v3.setVisibility(View.VISIBLE);
                 viewBinding.homePageStationSelectTimeLl.setVisibility(View.VISIBLE);
 
-                String dataStr = TimeUtils.getDateTimestamp(getCurrentTimestamp(), getTimeDateFormat());
+                String dataStr = TimeUtils.getDateTimestamp(TimeUtils.getCurrentTimestamp(), TimeUtils.getTimeDateFormat(timeType));
                 viewBinding.yearMonthDayTv.setText(dataStr);
                 getStatistics();
 
@@ -178,7 +179,7 @@
                 viewBinding.v2.setVisibility(View.GONE);
                 viewBinding.v3.setVisibility(View.VISIBLE);
                 viewBinding.homePageStationSelectTimeLl.setVisibility(View.VISIBLE);
-                String dataStr = TimeUtils.getDateTimestamp(getCurrentTimestamp(), getTimeDateFormat());
+                String dataStr = TimeUtils.getDateTimestamp(TimeUtils.getCurrentTimestamp(), TimeUtils.getTimeDateFormat(timeType));
                 viewBinding.yearMonthDayTv.setText(dataStr);
                 getStatistics();
 
@@ -210,7 +211,7 @@
                 viewBinding.v2.setVisibility(View.GONE);
                 viewBinding.v3.setVisibility(View.GONE);
                 viewBinding.homePageStationSelectTimeLl.setVisibility(View.VISIBLE);
-                String dataStr = TimeUtils.getDateTimestamp(getCurrentTimestamp(), getTimeDateFormat());
+                String dataStr = TimeUtils.getDateTimestamp(TimeUtils.getCurrentTimestamp(), TimeUtils.getTimeDateFormat(timeType));
                 viewBinding.yearMonthDayTv.setText(dataStr);
                 getStatistics();
             }
@@ -252,11 +253,11 @@
                 if (TextUtils.isEmpty(currDate)) {
                     return;
                 }
-                String timeDateFormat = getTimeDateFormat();
+                String timeDateFormat = TimeUtils.getTimeDateFormat(timeType);
                 Calendar calendar = TimeUtils.stringToCalendar(currDate, timeDateFormat);
                 String time = TimeUtils.subtractDayMonthYearFromDate(calendar, 1, timeDateFormat, timeType);
                 viewBinding.yearMonthDayTv.setText(time);
-
+                getStatistics();
 
             }
         });
@@ -268,15 +269,16 @@
                 if (TextUtils.isEmpty(currDate)) {
                     return;
                 }
-                String timeDateFormat = getTimeDateFormat();
+                String timeDateFormat = TimeUtils.getTimeDateFormat(timeType);
                 Calendar calendar = TimeUtils.stringToCalendar(currDate, timeDateFormat);
                 String time = TimeUtils.addDayMonthYearToDate(calendar, 1, timeDateFormat, timeType);
-                if (TimeUtils.stringDateToTimestamp(time, timeDateFormat) > getCurrentTimestamp()) {
+                if (TimeUtils.stringDateToTimestamp(time, timeDateFormat) > TimeUtils.getCurrentTimestamp()) {
                     HdlThreadLogic.toast(_mActivity, getString(R.string.the_query_date_is_exceeded));
 
                     return;
                 }
                 viewBinding.yearMonthDayTv.setText(time);
+                getStatistics();
             }
         });
         //璁剧疆涓嬫媺绠ご棰滆壊
@@ -298,9 +300,9 @@
     private void selectedTimePickerBuilder() {
         String currDate = viewBinding.yearMonthDayTv.getText().toString();
         //鏃堕棿閫夋嫨鍣�
-        Calendar selectedDate = TimeUtils.stringToCalendar(currDate, getTimeDateFormat());
+        Calendar selectedDate = TimeUtils.stringToCalendar(currDate, TimeUtils.getTimeDateFormat(timeType));
         Calendar startDate = Calendar.getInstance();
-        Calendar endDate = TimeUtils.timestampToCalendar(getCurrentTimestamp());
+        Calendar endDate = TimeUtils.timestampToCalendar(TimeUtils.getCurrentTimestamp());
         //璁剧疆鏃ユ湡銆愬紑濮嬨�戝拰銆愮粨鏉熴��
         startDate.set(2023, 1, 1);
         endDate.set(endDate.get(Calendar.YEAR), endDate.get(Calendar.MONTH), endDate.get(Calendar.DAY_OF_MONTH));
@@ -316,7 +318,7 @@
         TimePickerView pvTime = new TimePickerBuilder(_mActivity, new OnTimeSelectListener() {
             @Override
             public void onTimeSelect(Date date, View v) {//閫変腑浜嬩欢鍥炶皟
-                String timeDateFormat = getTimeDateFormat();
+                String timeDateFormat = TimeUtils.getTimeDateFormat(timeType);
                 String time = TimeUtils.dateToString(date, timeDateFormat);
                 if (viewBinding.yearMonthDayTv.getText().toString().equals(time)) {
                     //琛ㄧず鍚屼竴涓椂闂�
@@ -356,11 +358,11 @@
         aaChartView = viewBinding.autoSizeMyAAChart;
         aaChartView.callBack = this;
         if (TimeType.day.equals(timeType)) {
-            aaChartModel = BasicChartComposer.configureAreaChart("Pv鍙戠數鍔熺巼", fieldNames, fieldValues);
+            aaChartModel = BasicChartComposer.configureAreaChart(getString(R.string.pv_power), fieldNames, fieldValues);
         } else if (TimeType.month.equals(timeType)
                 || TimeType.year.equals(timeType)
                 || TimeType.all.equals(timeType)) {
-            aaChartModel = configureColorfulColumnChart("Pv鍙戠數鍔熺巼", fieldNames, fieldValues);
+            aaChartModel = configureColorfulColumnChart(getString(R.string.pv_power), fieldNames, fieldValues);
         }
         aaChartView.aa_drawChartWithChartModel(aaChartModel);
 
@@ -374,7 +376,7 @@
         viewBinding.homeOfflineIl.stationTitleTv.setText(getString(R.string.my_power_station_off_line));
         viewBinding.homeConnectedIl.stationTitleTv.setText(getString(R.string.to_be_added));
 
-        String dataStr = TimeUtils.getDateTimestamp(getCurrentTimestamp(), getTimeDateFormat());
+        String dataStr = TimeUtils.getDateTimestamp(TimeUtils.getCurrentTimestamp(), TimeUtils.getTimeDateFormat(timeType));
         viewBinding.yearMonthDayTv.setText(dataStr);
 
         String installed_capacity = getString(R.string.installed_capacity) + "(" + HdlDeviceLogic.kWp + ")";
@@ -444,10 +446,10 @@
                 if (statusOverviewBean == null) {
                     return;
                 }
-                viewBinding.homeAllIl.stationTotalTv.setText(statusOverviewBean.getTotal() + "");
-                viewBinding.homeFaultsIl.stationTotalTv.setText(statusOverviewBean.getFault() + "");
-                viewBinding.homeOfflineIl.stationTotalTv.setText(statusOverviewBean.getOffline() + "");
-                viewBinding.homeConnectedIl.stationTotalTv.setText(statusOverviewBean.getConnecting() + "");
+                viewBinding.homeAllIl.stationTotalTv.setText(HdlCommonLogic.convertString(statusOverviewBean.getTotal()));
+                viewBinding.homeFaultsIl.stationTotalTv.setText(HdlCommonLogic.convertString(statusOverviewBean.getFault()));
+                viewBinding.homeOfflineIl.stationTotalTv.setText(HdlCommonLogic.convertString(statusOverviewBean.getOffline()));
+                viewBinding.homeConnectedIl.stationTotalTv.setText(HdlCommonLogic.convertString(statusOverviewBean.getConnecting()));
             }
 
             @Override
@@ -462,6 +464,7 @@
      * 鑾峰彇缁熻姒傝鏁版嵁(鍏徃缁村害)
      */
     private void getDataOver() {
+
         HdlPowerStationDataStatisticsLogic.getInstance().getDataOver(new CloudCallBeak<DataOverBean>() {
             @Override
             public void onSuccess(DataOverBean dataOverBean) {
@@ -471,14 +474,14 @@
                         if (dataOverBean == null) {
                             return;
                         }
-                        viewBinding.infoRl1Text1Tv.setText(HdlDeviceLogic.getConvertDoubleUnit(dataOverBean.getInstalledCapacity()));
-                        viewBinding.infoRl1Text3Tv.setText(HdlDeviceLogic.getConvertDoubleUnit(dataOverBean.getPower()));
+                        viewBinding.infoRl1Text1Tv.setText(HdlCommonLogic.getConvertDoubleUnit(dataOverBean.getInstalledCapacity()));
+                        viewBinding.infoRl1Text3Tv.setText(HdlCommonLogic.getConvertDoubleUnit(dataOverBean.getPower()));
                         viewBinding.infoRl1FText1Tv.setText(dataOverBean.getPowerRatio());
 
-                        viewBinding.homePageStationInfoRl2DayIc.dataTv.setText(HdlDeviceLogic.getConvertDoubleUnit(dataOverBean.getTodayElectricity()));
-                        viewBinding.homePageStationInfoRl2MonIc.dataTv.setText(HdlDeviceLogic.getConvertDoubleUnit(dataOverBean.getMonthElectricity()));
-                        viewBinding.homePageStationInfoRl2YearIc.dataTv.setText(HdlDeviceLogic.getConvertDoubleUnit(dataOverBean.getYearElectricity()));
-                        viewBinding.homePageStationInfoRl2CumulativeIc.dataTv.setText(HdlDeviceLogic.getConvertDoubleUnit(dataOverBean.getTotalElectricity()));
+                        viewBinding.homePageStationInfoRl2DayIc.dataTv.setText(HdlCommonLogic.getConvertDoubleUnit(dataOverBean.getTodayElectricity()));
+                        viewBinding.homePageStationInfoRl2MonIc.dataTv.setText(HdlCommonLogic.getConvertDoubleUnit(dataOverBean.getMonthElectricity()));
+                        viewBinding.homePageStationInfoRl2YearIc.dataTv.setText(HdlCommonLogic.getConvertDoubleUnit(dataOverBean.getYearElectricity()));
+                        viewBinding.homePageStationInfoRl2CumulativeIc.dataTv.setText(HdlCommonLogic.getConvertDoubleUnit(dataOverBean.getTotalElectricity()));
                     }
                 });
             }
@@ -495,21 +498,27 @@
      */
     private void getStatistics() {
         String currDate = viewBinding.yearMonthDayTv.getText().toString();
-        HdlPowerStationDataStatisticsLogic.getInstance().getStatistics(currDate, timeType, new CloudCallBeak<List<StatisticsBean>>() {
+        HdlPowerStationDataStatisticsLogic.getInstance().getStatistics(timeType, currDate, new CloudCallBeak<List<StatisticsBean>>() {
             @Override
             public void onSuccess(List<StatisticsBean> list) {
-                if (list == null || list.size() == 0) {
-                    return;
-                }
-                String[] keys = new String[list.size()];
-                Object[] values = new Object[list.size()];
-                for (int i = 0; i < list.size(); i++) {
-                    keys[i] = list.get(i).getFieldName();
-                    values[i] = list.get(i).getFieldValue();
-                }
-                fieldNames = keys;
-                fieldValues = values;
-                setUpAAChartView();
+                HdlThreadLogic.runMainThread(new Runnable() {
+                    @Override
+                    public void run() {
+                        if (list == null || list.size() == 0) {
+                            return;
+                        }
+                        String[] keys = new String[list.size()];
+                        Object[] values = new Object[list.size()];
+                        for (int i = 0; i < list.size(); i++) {
+                            keys[i] = list.get(i).getFieldName();
+                            values[i] = HdlCommonLogic.getBigDecimal(list.get(i).getFieldValue()).intValue();//鑾峰彇鏁存暟閮ㄥ垎
+                        }
+                        fieldNames = keys;
+                        fieldValues = values;
+                        setUpAAChartView();
+                    }
+                });
+
             }
 
             @Override
@@ -529,9 +538,9 @@
                 if (socialContributionBean == null) {
                     return;
                 }
-                viewBinding.socialContributionData1Tv.setText(socialContributionBean.getCoal());
-                viewBinding.socialContributionData2Tv.setText(socialContributionBean.getCo2());
-                viewBinding.socialContributionData3Tv.setText(socialContributionBean.getTreePlanting());
+                viewBinding.socialContributionData1Tv.setText(HdlCommonLogic.convertString(HdlCommonLogic.getBigDecimal(socialContributionBean.getCoal())));
+                viewBinding.socialContributionData2Tv.setText(HdlCommonLogic.convertString(HdlCommonLogic.getBigDecimal(socialContributionBean.getCo2())));
+                viewBinding.socialContributionData3Tv.setText(HdlCommonLogic.convertString(HdlCommonLogic.getBigDecimal(socialContributionBean.getTreePlanting())));
             }
 
             @Override
@@ -539,51 +548,6 @@
 
             }
         });
-    }
-
-
-    /**
-     * 鑾峰彇褰撳墠绯荤粺鏃ユ湡鏃堕棿鎴�
-     *
-     * @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 TimeType.day: {
-                timeDateFormat = TimeUtils.zhDateYearMonthDayFormat;
-                if (!UserConfigManage.getInstance().isZh()) {
-                    timeDateFormat = TimeUtils.enDateYearMonthDayFormat;
-                }
-            }
-            break;
-            case TimeType.month: {
-                timeDateFormat = TimeUtils.zhDateYearMonthFormat;
-                if (!UserConfigManage.getInstance().isZh()) {
-                    timeDateFormat = TimeUtils.enDateYearMonthFormat;
-                }
-            }
-            break;
-            case TimeType.year:
-            case TimeType.all: {
-                timeDateFormat = TimeUtils.zhDateYearFormat;
-                if (!UserConfigManage.getInstance().isZh()) {
-                    timeDateFormat = TimeUtils.enDateYearFormat;
-                }
-            }
-            break;
-
-        }
-        return timeDateFormat;
     }
 
 
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/home/aachart/BasicChartComposer.java b/app/src/main/java/com/hdl/photovoltaic/ui/home/aachart/BasicChartComposer.java
index 67d941a..9d9686f 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/home/aachart/BasicChartComposer.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/home/aachart/BasicChartComposer.java
@@ -56,7 +56,7 @@
                 .legendEnabled(false)
                 .markerRadius(0)
 //                .markerSymbol(AAChartSymbolType.Circle)
-//                .markerSymbolStyle(AAChartSymbolStyleType.Normal)
+                .markerSymbolStyle(AAChartSymbolStyleType.Normal)
                 .chartType(AAChartType.Area)
                 .categories(new String[]{"涓�鏈�", "浜屾湀", "涓夋湀", "鍥涙湀", "浜旀湀", "鍏湀", "涓冩湀", "鍏湀", "涔濇湀", "鍗佹湀", "鍗佷竴鏈�", "鍗佷簩鏈�"})
                 .series(new AASeriesElement[]{element1});
@@ -95,7 +95,7 @@
 //                .markerSymbolStyle(AAChartSymbolStyleType.Normal)
                 .chartType(AAChartType.Area)
                 .categories(categories)
-//                .zoomType(AAChartZoomType.None)//鎵嬪娍缂╂斁
+                .zoomType(AAChartZoomType.None)//鎵嬪娍缂╂斁
 //                .yAxisMax(500)
                 .yAxisMin(0)
                 .series(new AASeriesElement[]{element1});
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/home/aachart/CustomStyleChartComposer.java b/app/src/main/java/com/hdl/photovoltaic/ui/home/aachart/CustomStyleChartComposer.java
index 102353a..d985836 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/home/aachart/CustomStyleChartComposer.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/home/aachart/CustomStyleChartComposer.java
@@ -195,12 +195,12 @@
                 .colorsTheme(new String[]{"#38C494",})
                 .categories(categories)
                 .xAxisLabelsEnabled(true)
-                .zoomType(AAChartZoomType.XY)
+                .zoomType(AAChartZoomType.None)
                 .legendEnabled(false)
                 .series(new AASeriesElement[]{
                         new AASeriesElement()
 //                                .color(linearGradientColor)
-                                .name("涓滀含")
+                                .name(tipSuspendName)
                                 .data(data)
 //                                .colorByPoint(true)
                                 .tooltip(new AATooltip().style(new AAStyle().backgroundColor("#FFFFFF").fontSize(25)))
diff --git a/app/src/main/java/com/hdl/photovoltaic/utils/SpanUtils.java b/app/src/main/java/com/hdl/photovoltaic/utils/SpanUtils.java
new file mode 100644
index 0000000..cf8ec0a
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/utils/SpanUtils.java
@@ -0,0 +1,193 @@
+package com.hdl.photovoltaic.utils;
+
+import android.graphics.Paint;
+import android.graphics.Typeface;
+import android.text.Spannable;
+import android.text.SpannableString;
+import android.text.TextPaint;
+import android.text.style.BackgroundColorSpan;
+import android.text.style.ClickableSpan;
+import android.text.style.ForegroundColorSpan;
+import android.text.style.MetricAffectingSpan;
+import android.text.style.RelativeSizeSpan;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+
+
+/**
+ * String瀛楃涓查�氳繃鍖洪棿鏉ユ敼鍙橀鑹诧紝澶у皬锛屽瓧浣擄紝涓嬪垝绾跨瓑
+ */
+public class SpanUtils {
+
+    private long mLastClickTime = 0;
+    public static final int TIME_INTERVAL = 1000;
+
+
+    private static volatile SpanUtils sSpanUtils;
+
+
+    /**
+     * 鑾峰彇褰撳墠瀵硅薄
+     *
+     * @return HdlCommonLogic
+     */
+    public static synchronized SpanUtils getInstance() {
+        if (sSpanUtils == null) {
+            synchronized (SpanUtils.class) {
+                if (sSpanUtils == null) {
+                    sSpanUtils = new SpanUtils();
+                }
+            }
+
+        }
+        return sSpanUtils;
+    }
+
+    private SpanUtils() {
+    }
+
+    /**
+     * 鍙樺ぇ鍙樺皬
+     */
+    public CharSequence toSizeSpan(CharSequence charSequence, int start, int end, float scale) {
+
+        SpannableString spannableString = new SpannableString(charSequence);
+
+        spannableString.setSpan(
+                new RelativeSizeSpan(scale),
+                start,
+                end,
+                Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
+
+        return spannableString;
+    }
+
+    /**
+     * 鍙樿壊
+     */
+    public CharSequence toColorSpan(CharSequence charSequence, int start, int end, int color) {
+
+        SpannableString spannableString = new SpannableString(charSequence);
+
+        spannableString.setSpan(
+                new ForegroundColorSpan(color),
+                start,
+                end,
+                Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
+
+        return spannableString;
+    }
+
+    /**
+     * 鍙樿儗鏅壊
+     */
+    public CharSequence toBackgroundColorSpan(CharSequence charSequence, int start, int end, int color) {
+
+        SpannableString spannableString = new SpannableString(charSequence);
+
+        spannableString.setSpan(
+                new BackgroundColorSpan(color),
+                start,
+                end,
+                Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
+
+        return spannableString;
+    }
+
+
+    /**
+     * 鍙偣鍑�-甯︿笅鍒掔嚎
+     */
+    public CharSequence toClickSpan(CharSequence charSequence, int start, int end, int color, boolean needUnderLine, OnSpanClickListener listener) {
+
+        SpannableString spannableString = new SpannableString(charSequence);
+
+        ClickableSpan clickableSpan = new ClickableSpan() {
+            @Override
+            public void onClick(@NonNull View widget) {
+                if (listener != null) {
+                    //闃叉閲嶅鐐瑰嚮
+                    if (System.currentTimeMillis() - mLastClickTime >= TIME_INTERVAL) {
+                        //to do
+                        listener.onClick(charSequence.subSequence(start, end));
+
+                        mLastClickTime = System.currentTimeMillis();
+                    }
+
+                }
+            }
+
+            @Override
+            public void updateDrawState(@NonNull TextPaint ds) {
+                ds.setColor(color);
+                ds.setUnderlineText(needUnderLine);
+            }
+        };
+
+        spannableString.setSpan(
+                clickableSpan,
+                start,
+                end,
+                Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
+
+        return spannableString;
+    }
+
+    public interface OnSpanClickListener {
+        void onClick(CharSequence charSequence);
+    }
+
+
+    /**
+     * 鍙樻垚鑷畾涔夌殑瀛椾綋
+     */
+    public CharSequence toCustomTypeFaceSpan(CharSequence charSequence, int start, int end, Typeface typeface) {
+
+        SpannableString spannableString = new SpannableString(charSequence);
+
+        spannableString.setSpan(
+                new MyTypefaceSpan(typeface),
+                start,
+                end,
+                Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
+
+        return spannableString;
+    }
+
+    /**
+     * 绯荤粺鍘熺敓鐨凾ypefaceSpan鍙兘浣跨敤鍘熺敓鐨勯粯璁ゅ瓧浣�
+     * 濡傛灉浣跨敤鑷畾涔夌殑瀛椾綋锛岄�氳繃杩欎釜鏉ュ疄鐜�
+     */
+    public class MyTypefaceSpan extends MetricAffectingSpan {
+        private final Typeface typeface;
+
+        public MyTypefaceSpan(final Typeface typeface) {
+            this.typeface = typeface;
+        }
+
+        @Override
+        public void updateDrawState(final TextPaint drawState) {
+            apply(drawState);
+        }
+
+        @Override
+        public void updateMeasureState(final TextPaint paint) {
+            apply(paint);
+        }
+
+        private void apply(final Paint paint) {
+            final Typeface oldTypeface = paint.getTypeface();
+            final int oldStyle = oldTypeface != null ? oldTypeface.getStyle() : 0;
+            int fakeStyle = oldStyle & ~typeface.getStyle();
+            if ((fakeStyle & Typeface.BOLD) != 0) {
+                paint.setFakeBoldText(true);
+            }
+            if ((fakeStyle & Typeface.ITALIC) != 0) {
+                paint.setTextSkewX(-0.25f);
+            }
+            paint.setTypeface(typeface);
+        }
+    }
+}
+
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 3d5578d..fee374f 100644
--- a/app/src/main/java/com/hdl/photovoltaic/utils/TimeUtils.java
+++ b/app/src/main/java/com/hdl/photovoltaic/utils/TimeUtils.java
@@ -24,8 +24,52 @@
     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 enDateYearMonthFormat = "MM/yyyy";
     public static final String enDateYearFormat = "yyyy";
+
+    /**
+     * 鑾峰彇褰撳墠绯荤粺鏃ユ湡鏃堕棿鎴�
+     *
+     * @return 鏃堕棿鎴�
+     */
+    public static long getCurrentTimestamp() {
+        return new Date().getTime();
+    }
+
+    /**
+     * 鑾峰彇鏃ユ湡鏍煎紡 (2024/2/09,yyyy/DD/dd)
+     *
+     * @return 鏃ユ湡鏍煎紡 (2024/2/09,yyyy/DD/dd)
+     */
+    public static String getTimeDateFormat(String timeType) {
+        String timeDateFormat = TimeUtils.zhDateYearMonthDayFormat;
+        switch (timeType) {
+            case TimeType.day: {
+                timeDateFormat = TimeUtils.zhDateYearMonthDayFormat;
+                if (!UserConfigManage.getInstance().isZh()) {
+                    timeDateFormat = TimeUtils.enDateYearMonthDayFormat;
+                }
+            }
+            break;
+            case TimeType.month: {
+                timeDateFormat = TimeUtils.zhDateYearMonthFormat;
+                if (!UserConfigManage.getInstance().isZh()) {
+                    timeDateFormat = TimeUtils.enDateYearMonthFormat;
+                }
+            }
+            break;
+            case TimeType.year:
+            case TimeType.all: {
+                timeDateFormat = TimeUtils.zhDateYearFormat;
+                if (!UserConfigManage.getInstance().isZh()) {
+                    timeDateFormat = TimeUtils.enDateYearFormat;
+                }
+            }
+            break;
+
+        }
+        return timeDateFormat;
+    }
 
     /**
      * 鑾峰彇鍒嗛挓
@@ -35,7 +79,7 @@
      */
     public static String getMinuteTime(long timestamp) {
         try {
-            SimpleDateFormat dateFormat = new SimpleDateFormat("mm", Locale.ENGLISH);
+            SimpleDateFormat dateFormat = new SimpleDateFormat("mm", getLocale());
             Date date = new Date(timestamp);
             return dateFormat.format(date);
         } catch (Exception e) {
@@ -53,7 +97,7 @@
      */
     public static String getDateTimestamp(long timestamp, String date_format) {
         try {
-            SimpleDateFormat dateFormat = new SimpleDateFormat(date_format, Locale.ENGLISH);
+            SimpleDateFormat dateFormat = new SimpleDateFormat(date_format, getLocale());
             Date date = new Date(timestamp);
             return dateFormat.format(date);
         } catch (Exception e) {
@@ -74,7 +118,7 @@
             if (UserConfigManage.getInstance().getCurrentAppLanguage().equals(LocalManageUtil.en)) {
                 pattern = "dd-MM-yyyy HH:mm";
             }
-            SimpleDateFormat dateFormat = new SimpleDateFormat(pattern, Locale.ENGLISH);
+            SimpleDateFormat dateFormat = new SimpleDateFormat(pattern, getLocale());
             Date date = new Date(timestamp);
             return dateFormat.format(date);
         } catch (Exception e) {
@@ -184,7 +228,7 @@
      * @return Calendar瀵硅薄
      */
     public static Calendar stringToCalendar(String dateString, String dateFormat) {
-        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, Locale.ENGLISH);
+        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, getLocale());
         Calendar calendar = Calendar.getInstance();
         try {
             Date date = sdf.parse(dateString);
@@ -203,7 +247,7 @@
      * @return Calendar瀵硅薄
      */
     public static String calendarToString(Calendar calendar, String dateFormat) {
-        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, Locale.ENGLISH);
+        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, getLocale());
         return sdf.format(calendar.getTime());
     }
 
@@ -214,7 +258,7 @@
      * @return Calendar瀵硅薄
      */
     public static String dateToString(Date date, String dateFormat) {
-        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, Locale.ENGLISH);
+        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, getLocale());
         return sdf.format(date.getTime());
     }
 
@@ -227,7 +271,7 @@
      */
     public static long stringDateToTimestamp(String dateString, String dateFormat) {
         try {
-            SimpleDateFormat slf = new SimpleDateFormat(dateFormat, Locale.getDefault());
+            SimpleDateFormat slf = new SimpleDateFormat(dateFormat, getLocale());
             Date date = slf.parse(dateString);
             if (date == null) {
                 return 0;
@@ -238,4 +282,8 @@
         return 0;
     }
 
+    private static Locale getLocale() {
+        return Locale.ENGLISH;
+    }
+
 }
diff --git a/app/src/main/res/layout/fragment_home_page.xml b/app/src/main/res/layout/fragment_home_page.xml
index 193afad..b51770e 100644
--- a/app/src/main/res/layout/fragment_home_page.xml
+++ b/app/src/main/res/layout/fragment_home_page.xml
@@ -103,11 +103,13 @@
 
                             <TextView
                                 android:id="@+id/info_rl1_f_text1_tv"
-                                android:layout_width="56dp"
+                                android:layout_width="wrap_content"
                                 android:layout_height="wrap_content"
-                                android:layout_centerVertical="true"
+                                android:layout_centerInParent="true"
+                                android:layout_marginStart="@dimen/dp_6"
                                 android:gravity="end|center_vertical"
                                 android:text="88"
+                                android:textColor="@color/text_E6000000"
                                 android:textSize="@dimen/text_26"
                                 android:textStyle="bold" />
 
@@ -528,8 +530,8 @@
                             android:layout_alignParentStart="true"
                             android:layout_alignParentTop="true"
                             android:layout_marginStart="@dimen/dp_10"
-                            android:layout_marginTop="@dimen/dp_35"
-                            android:text="s"
+                            android:layout_marginTop="@dimen/dp_39"
+                            android:text="@string/saving_standard_coal"
                             android:textColor="@color/text_66000000"
                             android:textSize="@dimen/text_12" />
 
@@ -584,8 +586,8 @@
                             android:layout_alignParentStart="true"
                             android:layout_alignParentTop="true"
                             android:layout_marginStart="@dimen/dp_10"
-                            android:layout_marginTop="@dimen/dp_35"
-                            android:text="s"
+                            android:layout_marginTop="@dimen/dp_39"
+                            android:text="@string/co_reduction_rate"
                             android:textColor="@color/text_66000000"
                             android:textSize="@dimen/text_12" />
 
@@ -639,8 +641,8 @@
                             android:layout_alignParentStart="true"
                             android:layout_alignParentTop="true"
                             android:layout_marginStart="@dimen/dp_10"
-                            android:layout_marginTop="@dimen/dp_35"
-                            android:text="s"
+                            android:layout_marginTop="@dimen/dp_39"
+                            android:text="@string/quantity_of_equivalent_values"
                             android:textColor="@color/text_66000000"
                             android:textSize="@dimen/text_12" />
 
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2c06509..67943ad 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -293,4 +293,8 @@
     <string name="email_address">閭鍦板潃</string>
     <string name="successful_replication">澶嶅埗鎴愬姛</string>
     <string name="to_be_added">寰呮帴鍏�</string>
+    <string name="saving_standard_coal">鑺傜害鏍囧噯鐓�</string>
+    <string name="co_reduction_rate">CO2鍑忔帓</string>
+    <string name="quantity_of_equivalent_values">绛夋晥鍊兼暟閲�</string>
+    <string name="pv_power">Pv鍙戠數鍔熺巼</string>
 </resources>
\ No newline at end of file

--
Gitblit v1.8.0