mac
2024-04-28 a034e242fe844a1ca45d2a28710cb7face1f8fe6
2024年04月28日19:07:49

备份代码
5个文件已添加
5个文件已修改
690 ■■■■ 已修改文件
app/src/main/java/com/hdl/photovoltaic/enums/TimeType.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/other/HdlPowerStationDataStatisticsLogic.java 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/bean/DataOverBean.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/bean/SocialContributionBean.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/bean/StatisticsBean.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/home/BasicChartComposer.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/home/HomePageFragment.java 243 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/utils/TimeUtils.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_home_page.xml 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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" />