From a034e242fe844a1ca45d2a28710cb7face1f8fe6 Mon Sep 17 00:00:00 2001
From: mac <user@users-MacBook-Pro.local>
Date: 星期日, 28 四月 2024 19:07:56 +0800
Subject: [PATCH] 2024年04月28日19:07:49

---
 app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java                     |   10 
 app/src/main/java/com/hdl/photovoltaic/ui/bean/SocialContributionBean.java           |   37 +++
 app/src/main/java/com/hdl/photovoltaic/ui/home/HomePageFragment.java                 |  243 +++++++++++++++-----
 app/src/main/res/layout/fragment_home_page.xml                                       |   27 +-
 app/src/main/java/com/hdl/photovoltaic/ui/home/BasicChartComposer.java               |   38 +++
 app/src/main/java/com/hdl/photovoltaic/other/HdlPowerStationDataStatisticsLogic.java |  158 +++++++++++++
 app/src/main/java/com/hdl/photovoltaic/enums/TimeType.java                           |   16 +
 app/src/main/java/com/hdl/photovoltaic/ui/bean/StatisticsBean.java                   |   41 +++
 app/src/main/java/com/hdl/photovoltaic/ui/bean/DataOverBean.java                     |   75 ++++++
 app/src/main/java/com/hdl/photovoltaic/utils/TimeUtils.java                          |   45 ++-
 10 files changed, 601 insertions(+), 89 deletions(-)

diff --git a/app/src/main/java/com/hdl/photovoltaic/enums/TimeType.java b/app/src/main/java/com/hdl/photovoltaic/enums/TimeType.java
new file mode 100644
index 0000000..689238c
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/enums/TimeType.java
@@ -0,0 +1,16 @@
+package com.hdl.photovoltaic.enums;
+
+import androidx.annotation.StringDef;
+
+@StringDef({TimeType.day, TimeType.month, TimeType.year, TimeType.all})
+public @interface TimeType {
+    //澶�
+    String day = "day";
+    //鏈�
+    String month = "month";
+    //骞�
+    String year = "year";
+    //鐢熷懡鍛ㄦ湡
+    String all = "all";
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java b/app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java
index b7dfcbe..46a7c56 100644
--- a/app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java
+++ b/app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java
@@ -54,7 +54,7 @@
     //娣诲姞閫嗗彉鍣�
     public static final String POST_Device_Add = "/home-wisdom/program/device/independentRegister";
     //鎵归噺娣诲姞閫嗗彉鍣�
-    public static final String POST_Device_Add_All= "/home-wisdom/program/device/batchIndependentRegister";
+    public static final String POST_Device_Add_All = "/home-wisdom/program/device/batchIndependentRegister";
     //鑾峰彇閫嗗彉鍣ㄥ垪琛�
     public static final String POST_Device_List = "/home-wisdom/app/device/inverter/list";
     //鍒犻櫎閫嗗彉鍣�
@@ -93,7 +93,15 @@
     //endregion
 
     //region **********銆怋绔帴鍙c��**********
+    //region -----棣栭〉妯″潡---------
+    //鑾峰彇缁熻姒傝鏁版嵁(鍏徃缁村害)
+    public static final String POST_Home_page_dataOverview = "/home-wisdom/app/powerStation/homePage/dataOverview";
+    //鍙戠數閲忕粺璁�(鍏徃缁村害)
+    public static final String POST_Home_page_statistics = "/home-wisdom/app/powerStation/homePage/statistics";
+    //绀句細璐$尞(鍏徃缁村害)
+    public static final String POST_Home_page_socialContribution = "/home-wisdom/app/powerStation/homePage/socialContribution";
 
+    //endregion
     //region -----鐢ㄦ埛绠$悊---------
     //鑾峰彇璐﹀彿鍖哄煙淇℃伅
     public static final String POST_RegionByUserAccount = "/smart-footstone/region/regionByUserAccount";
diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlPowerStationDataStatisticsLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlPowerStationDataStatisticsLogic.java
new file mode 100644
index 0000000..b7475f0
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlPowerStationDataStatisticsLogic.java
@@ -0,0 +1,158 @@
+package com.hdl.photovoltaic.other;
+
+import android.text.TextUtils;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
+import com.google.gson.reflect.TypeToken;
+import com.hdl.linkpm.sdk.core.exception.HDLException;
+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 java.lang.reflect.Type;
+import java.util.List;
+
+/**
+ * 鐢电珯鏁版嵁缁熻閫昏緫
+ */
+public class HdlPowerStationDataStatisticsLogic {
+    private static volatile HdlPowerStationDataStatisticsLogic sHdlPowerStationDataStatisticsLogic;
+
+    /**
+     * 鑾峰彇褰撳墠瀵硅薄
+     *
+     * @return HdlDeviceLogic
+     */
+    public static synchronized HdlPowerStationDataStatisticsLogic getInstance() {
+        if (sHdlPowerStationDataStatisticsLogic == null) {
+            synchronized (HdlPowerStationDataStatisticsLogic.class) {
+                if (sHdlPowerStationDataStatisticsLogic == null) {
+                    sHdlPowerStationDataStatisticsLogic = new HdlPowerStationDataStatisticsLogic();
+                }
+            }
+
+        }
+        return sHdlPowerStationDataStatisticsLogic;
+    }
+
+    /**
+     * 鑾峰彇缁熻姒傝鏁版嵁(鍏徃缁村害)
+     *
+     * @param cloudCallBeak 鍥炶皟
+     */
+    public void getDataOver(CloudCallBeak<DataOverBean> cloudCallBeak) {
+        String requestUrl = HttpApi.POST_Home_page_dataOverview;
+        JsonObject json = new JsonObject();
+        //json.addProperty("zoneType", "password");//鍖哄煙
+        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
+            @Override
+            public void onSuccess(String jsonStr) {
+                if (TextUtils.isEmpty(jsonStr)) {
+                    if (cloudCallBeak != null) {
+                        cloudCallBeak.onSuccess(null);
+                    }
+                }
+                Gson gson = new Gson();
+                DataOverBean dataOverBean = gson.fromJson(jsonStr, DataOverBean.class);
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onSuccess(dataOverBean);
+                }
+            }
+
+            @Override
+            public void onFailure(HDLException e) {
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onFailure(e);
+                }
+            }
+        });
+
+
+    }
+
+    /**
+     * 鍙戠數閲忕粺璁�(鍏徃缁村害)
+     *
+     * @param type          绫诲瀷(渚嬪:TimeType.day锛氭棩,TimeType.month锛氭湀,TimeType.year 锛� 骞�,TimeType.all 锛� 鐢熷懡鍛ㄦ湡)
+     * @param time          鏃堕棿(type=day(y/M/d),type=month(y/M),type=year(y) ,type = all 鍙笉浼狅紝浼犲�间篃涓嶄娇鐢�)
+     * @param cloudCallBeak 鍥炶皟
+     */
+    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("type", type);//绫诲瀷
+        if (!TextUtils.isEmpty(time)) {
+            json.addProperty("time", time);//鏃堕棿
+        }
+        //json.addProperty("zoneType", "password");//鍖哄煙
+        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
+            @Override
+            public void onSuccess(String jsonStr) {
+                if (TextUtils.isEmpty(jsonStr)) {
+                    if (cloudCallBeak != null) {
+                        cloudCallBeak.onSuccess(null);
+                    }
+                }
+                Gson gson = new Gson();
+                Type typeToken = new TypeToken<List<StatisticsBean>>() {
+                }.getType();
+                List<StatisticsBean> list = gson.fromJson(jsonStr, typeToken);
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onSuccess(list);
+                }
+            }
+
+            @Override
+            public void onFailure(HDLException e) {
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onFailure(e);
+                }
+            }
+        });
+
+
+    }
+
+    /**
+     * 绀句細璐$尞(鍏徃缁村害)
+     *
+     * @param cloudCallBeak 鍥炶皟
+     */
+    public void getSocialContribution(CloudCallBeak<SocialContributionBean> cloudCallBeak) {
+        String requestUrl = HttpApi.POST_Home_page_socialContribution;
+        JsonObject json = new JsonObject();
+        //json.addProperty("zoneType", "password");//鍖哄煙
+        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
+            @Override
+            public void onSuccess(String jsonStr) {
+                if (TextUtils.isEmpty(jsonStr)) {
+                    if (cloudCallBeak != null) {
+                        cloudCallBeak.onSuccess(null);
+                    }
+                }
+                Gson gson = new Gson();
+                SocialContributionBean socialContributionBean = gson.fromJson(jsonStr, SocialContributionBean.class);
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onSuccess(socialContributionBean);
+                }
+            }
+
+            @Override
+            public void onFailure(HDLException e) {
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onFailure(e);
+                }
+            }
+        });
+
+
+    }
+
+
+}
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/bean/DataOverBean.java b/app/src/main/java/com/hdl/photovoltaic/ui/bean/DataOverBean.java
new file mode 100644
index 0000000..23fde4d
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/bean/DataOverBean.java
@@ -0,0 +1,75 @@
+package com.hdl.photovoltaic.ui.bean;
+
+import java.io.Serializable;
+
+/**
+ * 缁熻姒傝鏁版嵁瀹炰綋绫�
+ */
+public class DataOverBean implements Serializable {
+
+    private String installedCapacity;//瑁呮満瀹归噺
+    private String power;//鍙戠數鍔熺巼
+    private String powerRatio;//鍙戠數鍔熺巼鍗犳瘮(褰撴棩鍙戠數鍔熺巼/瑁呮満瀹归噺 * 100%	)
+    private String todayElectricity;//褰撴棩鍙戠數閲�
+    private String monthElectricity;//褰撴湀鍙戠數閲�
+    private String yearElectricity;//褰撳勾鍙戠數閲�
+    private String totalElectricity;//绱鍙戠數閲�
+
+    public String getInstalledCapacity() {
+        return installedCapacity == null ? "" : installedCapacity;
+    }
+
+    public void setInstalledCapacity(String installedCapacity) {
+        this.installedCapacity = installedCapacity;
+    }
+
+    public String getPower() {
+        return power == null ? "" : power;
+    }
+
+    public void setPower(String power) {
+        this.power = power;
+    }
+
+    public String getPowerRatio() {
+        return powerRatio == null ? "" : getPowerRatio();
+    }
+
+    public void setPowerRatio(String powerRatio) {
+        this.powerRatio = powerRatio;
+    }
+
+    public String getTodayElectricity() {
+        return todayElectricity == null ? "" : todayElectricity;
+    }
+
+    public void setTodayElectricity(String todayElectricity) {
+        this.todayElectricity = todayElectricity;
+    }
+
+    public String getMonthElectricity() {
+        return monthElectricity == null ? "" : monthElectricity;
+    }
+
+    public void setMonthElectricity(String monthElectricity) {
+        this.monthElectricity = monthElectricity;
+    }
+
+    public String getYearElectricity() {
+        return yearElectricity == null ? "" : yearElectricity;
+    }
+
+    public void setYearElectricity(String yearElectricity) {
+        this.yearElectricity = yearElectricity;
+    }
+
+    public String getTotalElectricity() {
+        return totalElectricity == null ? "" : totalElectricity;
+    }
+
+    public void setTotalElectricity(String totalElectricity) {
+        this.totalElectricity = totalElectricity;
+    }
+
+
+}
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/bean/SocialContributionBean.java b/app/src/main/java/com/hdl/photovoltaic/ui/bean/SocialContributionBean.java
new file mode 100644
index 0000000..473a94a
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/bean/SocialContributionBean.java
@@ -0,0 +1,37 @@
+package com.hdl.photovoltaic.ui.bean;
+
+/**
+ * 绀句細璐$尞瀹炰綋绫�
+ */
+public class SocialContributionBean {
+
+    private String coal;//鑺傜害鏍囧噯鐓�
+    private String co2;//CO2鍑忔帓閲�
+    private String treePlanting;//绛夋晥妞嶆爲閲�
+
+    public String getCoal() {
+        return coal == null ? "" : coal;
+    }
+
+    public void setCoal(String coal) {
+        this.coal = coal;
+    }
+
+    public String getCo2() {
+        return co2 == null ? "" : co2;
+    }
+
+    public void setCo2(String co2) {
+        this.co2 = co2;
+    }
+
+    public String getTreePlanting() {
+        return treePlanting == null ? "" : treePlanting;
+    }
+
+    public void setTreePlanting(String treePlanting) {
+        this.treePlanting = treePlanting;
+    }
+
+
+}
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
new file mode 100644
index 0000000..39483f2
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/bean/StatisticsBean.java
@@ -0,0 +1,41 @@
+package com.hdl.photovoltaic.ui.bean;
+
+import android.renderscript.Sampler;
+
+import java.io.Serializable;
+
+/**
+ * 鍙戠數閲忓疄浣撶被
+ */
+public class StatisticsBean implements Serializable {
+
+    private String fieldName;//	鎻忚堪
+    private int fieldValue;//鍊�
+    private String time;//	鏃堕棿
+
+    public String getFieldName() {
+        return fieldName == null ? "" : fieldName;
+    }
+
+    public void setFieldName(String fieldName) {
+        this.fieldName = fieldName;
+    }
+
+    public int getFieldValue() {
+        return fieldValue;
+    }
+
+    public void setFieldValue(int fieldValue) {
+        this.fieldValue = fieldValue;
+    }
+
+    public String getTime() {
+        return time == null ? "" : time;
+    }
+
+    public void setTime(String time) {
+        this.time = time;
+    }
+
+
+}
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 306aa53..54fbb8a 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
@@ -61,6 +61,44 @@
                 .series(new AASeriesElement[]{element1});
     }
 
+    public static AAChartModel configureAreaChart(String tipSuspendName, String[] categories, Object[] data) {
+        Map<String, Object> linearGradientColor = AAGradientColor.linearGradient(
+                AALinearGradientDirection.ToBottom,
+                "rgba(56,196,148,0.5)",//娣辩矇鑹�, alpha 閫忔槑搴�1
+                "rgba(255,255,255,0)"//鐑儏鐨勭矇绾�, alpha 閫忔槑搴� 0.1
+        );//棰滆壊瀛楃涓茶缃敮鎸佸崄鍏繘鍒剁被鍨嬪拰 rgba 绫诲瀷
+        AASeriesElement element1 = new AASeriesElement()
+                .name(tipSuspendName)
+//                .colorByPoint(true)
+                .color(AARgba(56, 196, 148, 1.0f))//鐚╃孩鑹�, alpha 閫忔槑搴� 1
+                .lineWidth(1.5)
+//                .borderColor(AARgba(255,255,255,1.0f))
+                .fillColor(linearGradientColor)
+//                .fillOpacity(0.5)//鍖哄煙鑳屾櫙閫忔槑搴︼紝璁剧疆0鐨勮瘽鐪嬩笉鍒板尯鍩熻儗鏅�
+                .data(data);
+//        AASeriesElement element2 = new AASeriesElement()
+//                .name("NewYork")
+//                .data(new Object[]{0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5});
+//        AASeriesElement element3 = new AASeriesElement()
+//                .name("London")
+//                .data(new Object[]{0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0});
+//        AASeriesElement element4 = new AASeriesElement()
+//                .name("Berlin")
+//                .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(categories)
+//                .yAxisMax(500)
+                .yAxisMin(0)
+                .series(new AASeriesElement[]{element1});
+    }
+
     public static AAChartModel configureStepAreaChartAndStepLineChart() {
         AASeriesElement element1 = new AASeriesElement()
                 .name("Tokyo")
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 af3f440..474231d 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
@@ -7,6 +7,7 @@
 import android.text.TextUtils;
 import android.view.View;
 
+import androidx.annotation.RequiresPermission;
 import androidx.appcompat.content.res.AppCompatResources;
 
 import com.bigkoo.pickerview.builder.TimePickerBuilder;
@@ -15,15 +16,23 @@
 import com.github.AAChartModel.AAChartCore.AAChartCreator.AAChartModel;
 import com.github.AAChartModel.AAChartCore.AAChartCreator.AAChartView;
 import com.github.AAChartModel.AAChartCore.AAChartCreator.AAMoveOverEventMessageModel;
+import com.hdl.linkpm.sdk.core.exception.HDLException;
+import com.hdl.photovoltaic.HDLApp;
 import com.hdl.photovoltaic.R;
 import com.hdl.photovoltaic.base.CustomBaseFragment;
 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.enums.TimeType;
+import com.hdl.photovoltaic.listener.CloudCallBeak;
 import com.hdl.photovoltaic.other.HdlDeviceLogic;
 import com.hdl.photovoltaic.other.HdlLogLogic;
+import com.hdl.photovoltaic.other.HdlPowerStationDataStatisticsLogic;
 import com.hdl.photovoltaic.other.HdlThreadLogic;
+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 com.hdl.sdk.link.core.bean.eventbus.BaseEventBus;
 
@@ -33,6 +42,7 @@
 
 import java.util.Calendar;
 import java.util.Date;
+import java.util.List;
 
 
 /**
@@ -48,7 +58,11 @@
     AAChartModel aaChartModel;
 
 
-    private TimeType timeType = TimeType.day;//鏃堕棿绫诲瀷(榛樿锛氬ぉ)
+    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 timeType = TimeType.day;//鏃堕棿绫诲瀷(榛樿锛氬ぉ)
 
 
     @Override
@@ -63,8 +77,24 @@
         initView();
         //鍒濆鍖栫晫闈㈢洃鍚櫒
         initEvent();
+        //璇诲彇鏁版嵁
+        readDate();
 
+    }
 
+    /**
+     * 璇诲彇鏁版嵁
+     */
+    private void readDate() {
+        HdlThreadLogic.runSubThread(new Runnable() {
+            @Override
+            public void run() {
+                getDataOver();
+                getStatistics();
+                getSocialContribution();
+
+            }
+        });
     }
 
     private void initEvent() {
@@ -80,6 +110,10 @@
         viewBinding.dayTv.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
+                if (timeType.equals(TimeType.day)) {
+                    //鐐瑰嚮鍚屼竴涓被鍨�
+                    return;
+                }
                 timeType = TimeType.day;
 
                 viewBinding.dayTv.setBackground(AppCompatResources.getDrawable(_mActivity, R.drawable.time_selected_38c494));
@@ -101,7 +135,7 @@
 
                 String dataStr = TimeUtils.getDateTimestamp(getCurrentTimestamp(), getTimeDateFormat());
                 viewBinding.yearMonthDayTv.setText(dataStr);
-                setUpAAChartView();
+                getStatistics();
 
             }
         });
@@ -109,6 +143,10 @@
         viewBinding.monthTv.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
+                if (timeType.equals(TimeType.month)) {
+                    //鐐瑰嚮鍚屼竴涓被鍨�
+                    return;
+                }
                 timeType = TimeType.month;
                 viewBinding.dayTv.setBackground(AppCompatResources.getDrawable(_mActivity, R.color.text_00000000));
                 viewBinding.dayTv.setTextColor(_mActivity.getColor(R.color.text_40000000));
@@ -128,7 +166,7 @@
                 viewBinding.homePageStationSelectTimeLl.setVisibility(View.VISIBLE);
                 String dataStr = TimeUtils.getDateTimestamp(getCurrentTimestamp(), getTimeDateFormat());
                 viewBinding.yearMonthDayTv.setText(dataStr);
-                setUpAAChartView();
+                getStatistics();
 
 
             }
@@ -137,6 +175,10 @@
         viewBinding.yearTv.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
+                if (timeType.equals(TimeType.year)) {
+                    //鐐瑰嚮鍚屼竴涓被鍨�
+                    return;
+                }
                 timeType = TimeType.year;
                 viewBinding.dayTv.setBackground(AppCompatResources.getDrawable(_mActivity, R.color.text_00000000));
                 viewBinding.dayTv.setTextColor(_mActivity.getColor(R.color.text_40000000));
@@ -156,14 +198,18 @@
                 viewBinding.homePageStationSelectTimeLl.setVisibility(View.VISIBLE);
                 String dataStr = TimeUtils.getDateTimestamp(getCurrentTimestamp(), getTimeDateFormat());
                 viewBinding.yearMonthDayTv.setText(dataStr);
-                setUpAAChartView();
+                getStatistics();
             }
         });
         //鐢熷懡鏈�
         viewBinding.lifeCycleTv.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                timeType = TimeType.lifecycle;
+                if (timeType.equals(TimeType.all)) {
+                    //鐐瑰嚮鍚屼竴涓被鍨�
+                    return;
+                }
+                timeType = TimeType.all;
                 viewBinding.dayTv.setBackground(AppCompatResources.getDrawable(_mActivity, R.color.text_00000000));
                 viewBinding.dayTv.setTextColor(_mActivity.getColor(R.color.text_40000000));
 
@@ -180,8 +226,7 @@
                 viewBinding.v2.setVisibility(View.VISIBLE);
                 viewBinding.v3.setVisibility(View.GONE);
                 viewBinding.homePageStationSelectTimeLl.setVisibility(View.GONE);
-
-                setUpAAChartView();
+                getStatistics();
 
             }
         });
@@ -221,49 +266,11 @@
             }
         });
     }
-
-    private void initView() {
-
-        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));
-        viewBinding.monthTv.setTextColor(_mActivity.getColor(R.color.text_40000000));
-        viewBinding.yearTv.setBackground(AppCompatResources.getDrawable(_mActivity, R.color.text_00000000));
-        viewBinding.yearTv.setTextColor(_mActivity.getColor(R.color.text_40000000));
-        viewBinding.lifeCycleTv.setBackground(AppCompatResources.getDrawable(_mActivity, R.color.text_00000000));
-        viewBinding.lifeCycleTv.setTextColor(_mActivity.getColor(R.color.text_40000000));
-        viewBinding.v1.setVisibility(View.GONE);
-        viewBinding.v2.setVisibility(View.VISIBLE);
-        viewBinding.v3.setVisibility(View.VISIBLE);
-        viewBinding.homePageStationSelectTimeLl.setVisibility(View.VISIBLE);
-        setUpAAChartView();//鍥捐〃鍔犺浇
-    }
-
-
     /**
      * 鏃堕棿閫夋嫨鍣�
      */
     private void selectedTimePickerBuilder() {
         String currDate = viewBinding.yearMonthDayTv.getText().toString();
-        if (TextUtils.isEmpty(currDate)) {
-            return;
-        }
         //鏃堕棿閫夋嫨鍣�
         Calendar selectedDate = TimeUtils.stringToCalendar(currDate, getTimeDateFormat());
         Calendar startDate = Calendar.getInstance();
@@ -274,9 +281,9 @@
         boolean day = true;
         boolean month = true;
         boolean year = true;
-        if (timeType == TimeType.month) {
+        if (timeType.equals(TimeType.month)) {
             day = false;
-        } else if (timeType == TimeType.year) {
+        } else if (timeType.equals(TimeType.year)) {
             day = false;
             month = false;
         }
@@ -285,7 +292,12 @@
             public void onTimeSelect(Date date, View v) {//閫変腑浜嬩欢鍥炶皟
                 String timeDateFormat = getTimeDateFormat();
                 String time = TimeUtils.dateToString(date, timeDateFormat);
+                if (viewBinding.yearMonthDayTv.getText().toString().equals(time)) {
+                    //琛ㄧず鍚屼竴涓椂闂�
+                    return;
+                }
                 viewBinding.yearMonthDayTv.setText(time);
+                getStatistics();
             }
         }).setType(new boolean[]{year, month, day, false, false, false})// 榛樿鍏ㄩ儴鏄剧ず
                 .setCancelText(_mActivity.getString(R.string.loading_cancel))//鍙栨秷鎸夐挳鏂囧瓧
@@ -317,15 +329,51 @@
     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) {
+        if (TimeType.day.equals(timeType)) {
+            aaChartModel = BasicChartComposer.configureAreaChart("Pv鍙戠數鍔熺巼", fieldNames, fieldValues);
+        } else if (TimeType.month.equals(timeType)
+                || TimeType.year.equals(timeType)
+                || TimeType.all.equals(timeType)) {
             aaChartModel = configureColorfulColumnChart();
         }
         aaChartView.aa_drawChartWithChartModel(aaChartModel);
     }
+
+    private void initView() {
+
+        String dataStr = TimeUtils.getDateTimestamp(getCurrentTimestamp(), getTimeDateFormat());
+        viewBinding.yearMonthDayTv.setText(dataStr);
+
+        String installed_capacity = getString(R.string.installed_capacity) + "(" + HdlDeviceLogic.kWp + ")";
+        viewBinding.infoRl1Text2Tv.setText(installed_capacity);
+        String generated_power = getString(R.string.generated_power) + "(" + HdlDeviceLogic.kW + ")";
+        viewBinding.infoRl1Text4Tv.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.unitTv.setText(HdlDeviceLogic.kW);
+        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));
+        viewBinding.monthTv.setTextColor(_mActivity.getColor(R.color.text_40000000));
+        viewBinding.yearTv.setBackground(AppCompatResources.getDrawable(_mActivity, R.color.text_00000000));
+        viewBinding.yearTv.setTextColor(_mActivity.getColor(R.color.text_40000000));
+        viewBinding.lifeCycleTv.setBackground(AppCompatResources.getDrawable(_mActivity, R.color.text_00000000));
+        viewBinding.lifeCycleTv.setTextColor(_mActivity.getColor(R.color.text_40000000));
+        viewBinding.v1.setVisibility(View.GONE);
+        viewBinding.v2.setVisibility(View.VISIBLE);
+        viewBinding.v3.setVisibility(View.VISIBLE);
+        viewBinding.homePageStationSelectTimeLl.setVisibility(View.VISIBLE);
+        setUpAAChartView();//鍥捐〃鍔犺浇
+    }
+
+
+
 
 
     @Override
@@ -358,6 +406,85 @@
 
 
     /**
+     * 鑾峰彇缁熻姒傝鏁版嵁(鍏徃缁村害)
+     */
+    private void getDataOver() {
+        HdlPowerStationDataStatisticsLogic.getInstance().getDataOver(new CloudCallBeak<DataOverBean>() {
+            @Override
+            public void onSuccess(DataOverBean dataOverBean) {
+                if (dataOverBean == null) {
+                    return;
+                }
+                viewBinding.infoRl1Text1Tv.setText(dataOverBean.getInstalledCapacity());
+                viewBinding.infoRl1Text3Tv.setText(dataOverBean.getPower());
+                viewBinding.infoRl1FText1Tv.setText(dataOverBean.getPowerRatio());
+
+                viewBinding.homePageStationInfoRl2DayIc.dataTv.setText(dataOverBean.getTodayElectricity());
+                viewBinding.homePageStationInfoRl2MonIc.dataTv.setText(dataOverBean.getMonthElectricity());
+                viewBinding.homePageStationInfoRl2YearIc.dataTv.setText(dataOverBean.getYearElectricity());
+                viewBinding.homePageStationInfoRl2CumulativeIc.dataTv.setText(dataOverBean.getTotalElectricity());
+            }
+
+            @Override
+            public void onFailure(HDLException e) {
+
+            }
+        });
+    }
+
+    /**
+     * 鍙戠數閲忕粺璁�(鍏徃缁村害)
+     */
+    private void getStatistics() {
+        String currDate = viewBinding.yearMonthDayTv.getText().toString();
+        HdlPowerStationDataStatisticsLogic.getInstance().getStatistics(currDate, timeType, 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();
+            }
+
+            @Override
+            public void onFailure(HDLException e) {
+
+            }
+        });
+    }
+
+    /**
+     * 鍙戠數閲忕粺璁�(鍏徃缁村害)
+     */
+    private void getSocialContribution() {
+        HdlPowerStationDataStatisticsLogic.getInstance().getSocialContribution(new CloudCallBeak<SocialContributionBean>() {
+            @Override
+            public void onSuccess(SocialContributionBean socialContributionBean) {
+                if (socialContributionBean == null) {
+                    return;
+                }
+                viewBinding.socialContributionData1Tv.setText(socialContributionBean.getCoal());
+                viewBinding.socialContributionData2Tv.setText(socialContributionBean.getCo2());
+                viewBinding.socialContributionData3Tv.setText(socialContributionBean.getTreePlanting());
+            }
+
+            @Override
+            public void onFailure(HDLException e) {
+
+            }
+        });
+    }
+
+
+    /**
      * 鑾峰彇褰撳墠绯荤粺鏃ユ湡鏃堕棿鎴�
      *
      * @return 鏃堕棿鎴�
@@ -374,22 +501,22 @@
     private String getTimeDateFormat() {
         String timeDateFormat = TimeUtils.zhDateYearMonthDayFormat;
         switch (timeType) {
-            case day: {
+            case TimeType.day: {
                 timeDateFormat = TimeUtils.zhDateYearMonthDayFormat;
                 if (!UserConfigManage.getInstance().isZh()) {
                     timeDateFormat = TimeUtils.enDateYearMonthDayFormat;
                 }
             }
             break;
-            case month: {
+            case TimeType.month: {
                 timeDateFormat = TimeUtils.zhDateYearMonthFormat;
                 if (!UserConfigManage.getInstance().isZh()) {
                     timeDateFormat = TimeUtils.enDateYearMonthFormat;
                 }
             }
             break;
-            case year:
-            case lifecycle: {
+            case TimeType.year:
+            case TimeType.all: {
                 timeDateFormat = TimeUtils.zhDateYearFormat;
                 if (!UserConfigManage.getInstance().isZh()) {
                     timeDateFormat = TimeUtils.enDateYearFormat;
@@ -399,10 +526,6 @@
 
         }
         return timeDateFormat;
-    }
-
-    public enum TimeType {
-        day, month, year, lifecycle
     }
 
 
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 899010f..3d5578d 100644
--- a/app/src/main/java/com/hdl/photovoltaic/utils/TimeUtils.java
+++ b/app/src/main/java/com/hdl/photovoltaic/utils/TimeUtils.java
@@ -4,6 +4,7 @@
 import android.text.TextUtils;
 
 import com.hdl.photovoltaic.config.UserConfigManage;
+import com.hdl.photovoltaic.enums.TimeType;
 import com.hdl.photovoltaic.other.HdlThreadLogic;
 import com.hdl.photovoltaic.ui.home.HomePageFragment;
 import com.hdl.sdk.link.core.utils.LanguageUtils;
@@ -113,14 +114,22 @@
      * @param dayMonthYearToAdd 澶╂暟锛堟棩锛屾湀锛屽勾锛�
      * @return 鏃ュ巻
      */
-    public static String addDayMonthYearToDate(Calendar date, int dayMonthYearToAdd, String dateFormat, HomePageFragment.TimeType timeType) {
+    public static String addDayMonthYearToDate(Calendar date, int dayMonthYearToAdd, String dateFormat, String timeType) {
         Calendar newDate = (Calendar) date.clone();
-        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);
+        switch (timeType) {
+            case TimeType.day: {
+                newDate.add(Calendar.DAY_OF_MONTH, dayMonthYearToAdd);
+            }
+            break;
+            case TimeType.month: {
+                newDate.add(Calendar.MONTH, dayMonthYearToAdd);
+            }
+            break;
+            case TimeType.year:
+            case TimeType.all: {
+                newDate.add(Calendar.YEAR, dayMonthYearToAdd);
+            }
+            break;
         }
         return calendarToString(newDate, dateFormat);
     }
@@ -132,14 +141,22 @@
      * @param dayMonthYearToSubtract 澶╂暟
      * @return 鏃ュ巻
      */
-    public static String subtractDayMonthYearFromDate(Calendar date, int dayMonthYearToSubtract, String dateFormat, HomePageFragment.TimeType timeType) {
+    public static String subtractDayMonthYearFromDate(Calendar date, int dayMonthYearToSubtract, String dateFormat, String timeType) {
         Calendar newDate = (Calendar) date.clone();
-        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);
+        switch (timeType) {
+            case TimeType.day: {
+                newDate.add(Calendar.DAY_OF_MONTH, -dayMonthYearToSubtract);
+            }
+            break;
+            case TimeType.month: {
+                newDate.add(Calendar.MONTH, -dayMonthYearToSubtract);
+            }
+            break;
+            case TimeType.year:
+            case TimeType.all: {
+                newDate.add(Calendar.YEAR, -dayMonthYearToSubtract);
+            }
+            break;
         }
         return calendarToString(newDate, dateFormat);
     }
diff --git a/app/src/main/res/layout/fragment_home_page.xml b/app/src/main/res/layout/fragment_home_page.xml
index d500e94..cb8fa80 100644
--- a/app/src/main/res/layout/fragment_home_page.xml
+++ b/app/src/main/res/layout/fragment_home_page.xml
@@ -107,7 +107,7 @@
                         android:background="@drawable/disc">
 
                         <TextView
-                            android:id="@+id/home_page_station_info_rl1_f_text1_tv"
+                            android:id="@+id/info_rl1_f_text1_tv"
                             android:layout_width="56dp"
                             android:layout_height="wrap_content"
                             android:layout_centerVertical="true"
@@ -120,10 +120,10 @@
                             android:id="@+id/home_page_station_info_rl1_f_text2_tv"
                             android:layout_width="9dp"
                             android:layout_height="14.5dp"
-                            android:layout_alignBottom="@+id/home_page_station_info_rl1_f_text1_tv"
+                            android:layout_alignBottom="@+id/info_rl1_f_text1_tv"
                             android:layout_marginStart="2.5dp"
                             android:layout_marginBottom="4.5dp"
-                            android:layout_toEndOf="@+id/home_page_station_info_rl1_f_text1_tv"
+                            android:layout_toEndOf="@+id/info_rl1_f_text1_tv"
                             android:text="%"
                             android:textColor="@color/text_191919"
                             android:textSize="@dimen/text_12" />
@@ -131,7 +131,7 @@
 
 
                     <TextView
-                        android:id="@+id/home_page_station_info_rl1_text1_tv"
+                        android:id="@+id/info_rl1_text1_tv"
                         style="@style/Text20Style"
                         android:layout_width="wrap_content"
                         android:layout_height="@dimen/dp_24"
@@ -141,32 +141,32 @@
                         android:text="33333333" />
 
                     <TextView
-                        android:id="@+id/home_page_station_info_rl1_text2_tv"
+                        android:id="@+id/info_rl1_text2_tv"
                         style="@style/Text14Style"
                         android:layout_width="wrap_content"
                         android:layout_height="@dimen/dp_17"
-                        android:layout_below="@+id/home_page_station_info_rl1_text1_tv"
-                        android:layout_alignStart="@+id/home_page_station_info_rl1_text1_tv"
+                        android:layout_below="@+id/info_rl1_text1_tv"
+                        android:layout_alignStart="@+id/info_rl1_text1_tv"
                         android:layout_marginTop="3dp"
                         android:text="@string/installed_capacity" />
 
                     <TextView
-                        android:id="@+id/home_page_station_info_rl1_text3_tv"
+                        android:id="@+id/info_rl1_text3_tv"
                         style="@style/Text20Style"
                         android:layout_width="wrap_content"
                         android:layout_height="@dimen/dp_24"
-                        android:layout_below="@+id/home_page_station_info_rl1_text2_tv"
-                        android:layout_alignStart="@+id/home_page_station_info_rl1_text1_tv"
+                        android:layout_below="@+id/info_rl1_text2_tv"
+                        android:layout_alignStart="@+id/info_rl1_text1_tv"
                         android:layout_marginTop="@dimen/dp_16"
                         android:text="33333" />
 
                     <TextView
-                        android:id="@+id/home_page_station_info_rl1_text4_tv"
+                        android:id="@+id/info_rl1_text4_tv"
                         style="@style/Text14Style"
                         android:layout_width="wrap_content"
                         android:layout_height="@dimen/dp_17"
-                        android:layout_below="@+id/home_page_station_info_rl1_text3_tv"
-                        android:layout_alignStart="@+id/home_page_station_info_rl1_text1_tv"
+                        android:layout_below="@+id/info_rl1_text3_tv"
+                        android:layout_alignStart="@+id/info_rl1_text1_tv"
                         android:layout_marginTop="3dp"
                         android:text="@string/generated_power" />
 
@@ -421,7 +421,6 @@
                         android:layout_width="wrap_content"
                         android:layout_height="match_parent"
                         android:layout_alignParentStart="true"
-                        android:text="kW"
                         android:textColor="@color/text_40000000"
                         android:textSize="@dimen/text_12" />
 

--
Gitblit v1.8.0