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