app/src/main/java/com/hdl/photovoltaic/enums/TimeType.java
New file @@ -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"; } 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 **********【B端接口】********** //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"; app/src/main/java/com/hdl/photovoltaic/other/HdlPowerStationDataStatisticsLogic.java
New file @@ -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); } } }); } } app/src/main/java/com/hdl/photovoltaic/ui/bean/DataOverBean.java
New file @@ -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; } } app/src/main/java/com/hdl/photovoltaic/ui/bean/SocialContributionBean.java
New file @@ -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; } } app/src/main/java/com/hdl/photovoltaic/ui/bean/StatisticsBean.java
New file @@ -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; } } 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") 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 } 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); } 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" />