diff --git a/app/src/main/java/com/ckkj/water/custom/CustomTypeFilterPopupView.java b/app/src/main/java/com/ckkj/water/custom/CustomTypeFilterPopupView.java index 19e6731..458dd14 100644 --- a/app/src/main/java/com/ckkj/water/custom/CustomTypeFilterPopupView.java +++ b/app/src/main/java/com/ckkj/water/custom/CustomTypeFilterPopupView.java @@ -68,25 +68,35 @@ public class CustomTypeFilterPopupView extends PartShadowPopupView implements Vi switch (v.getId()){ case R.id.tv_manual: if(mSelManual){ + // 已选中,取消选中 mSelManual = false; tvManual.setTextColor(mContext.getColor(R.color.color_zhu)); - tvManual.setSelected(mSelManual); + tvManual.setSelected(false); }else{ + // 选中手动,同时取消自动 mSelManual = true; + mSelAuto = false; tvManual.setTextColor(mContext.getColor(R.color.white)); - tvManual.setSelected(mSelManual); + tvManual.setSelected(true); + tvAuto.setTextColor(mContext.getColor(R.color.color_zhu)); + tvAuto.setSelected(false); } break; case R.id.tv_auto: if(mSelAuto){ + // 已选中,取消选中 mSelAuto = false; tvAuto.setTextColor(mContext.getColor(R.color.color_zhu)); - tvAuto.setSelected(mSelAuto); + tvAuto.setSelected(false); }else{ + // 选中自动,同时取消手动 mSelAuto = true; + mSelManual = false; tvAuto.setTextColor(mContext.getColor(R.color.white)); - tvAuto.setSelected(mSelAuto); + tvAuto.setSelected(true); + tvManual.setTextColor(mContext.getColor(R.color.color_zhu)); + tvManual.setSelected(false); } break; @@ -95,8 +105,8 @@ public class CustomTypeFilterPopupView extends PartShadowPopupView implements Vi mSelAuto = false; tvManual.setTextColor(mContext.getColor(R.color.color_zhu)); tvAuto.setTextColor(mContext.getColor(R.color.color_zhu)); - tvManual.setSelected(mSelManual); - tvAuto.setSelected(mSelAuto); + tvManual.setSelected(false); + tvAuto.setSelected(false); break; case R.id.tv_finish: diff --git a/app/src/main/java/com/ckkj/water/history/HistoryFragment.java b/app/src/main/java/com/ckkj/water/history/HistoryFragment.java index b1d2fae..73771e7 100644 --- a/app/src/main/java/com/ckkj/water/history/HistoryFragment.java +++ b/app/src/main/java/com/ckkj/water/history/HistoryFragment.java @@ -10,6 +10,7 @@ import androidx.fragment.app.Fragment; import com.ckkj.water.R; import com.ckkj.water.base.BaseFragment; import com.ckkj.water.databinding.HistoryFragmentLayoutBinding; +import com.ckkj.water.history.entity.WaterStatisticsEntity; import com.ckkj.water.history.entity.WateringRecord; import com.ckkj.water.history.mvp.HistoryContract; import com.ckkj.water.history.mvp.HistoryPresenter; @@ -103,4 +104,14 @@ public class HistoryFragment extends BaseFragment msg, int total) { } + + @Override + public void deleteHistorySuccess(BaseBean msg, int position) { + + } + + @Override + public void getHistoryStatisticsSuccess(WaterStatisticsEntity entity) { + + } } diff --git a/app/src/main/java/com/ckkj/water/history/StatisticFragment.java b/app/src/main/java/com/ckkj/water/history/StatisticFragment.java index e97e76d..c51ec7c 100644 --- a/app/src/main/java/com/ckkj/water/history/StatisticFragment.java +++ b/app/src/main/java/com/ckkj/water/history/StatisticFragment.java @@ -4,11 +4,18 @@ import android.os.Bundle; import com.ckkj.water.base.BaseFragment; import com.ckkj.water.databinding.WaterCountFragmentLayoutBinding; +import com.ckkj.water.history.entity.WaterStatisticsEntity; +import com.ckkj.water.history.entity.WateringRecord; +import com.ckkj.water.history.mvp.HistoryContract; +import com.ckkj.water.history.mvp.HistoryImpl; +import com.ckkj.water.history.mvp.HistoryPresenter; import com.ckkj.water.index.entity.WaterDeviceEntity; import com.ckkj.water.network.BaseBean; import com.ckkj.water.plan.entity.WaterPlanWeekEntity; import com.ckkj.water.plan.mvp.WaterPlanContract; +import com.ckkj.water.plan.mvp.WaterPlanImpl; import com.ckkj.water.plan.mvp.WaterPlanPresenter; +import com.ckkj.water.utils.show.ToastUtil; import java.util.List; @@ -17,16 +24,36 @@ import java.util.List; * @date 2026/5/16 * @description TODO: 统计界面 */ -public class StatisticFragment extends BaseFragment - implements WaterPlanContract.WaterPlanView { +public class StatisticFragment extends BaseFragment + implements HistoryContract.HistoryView { + + @Override + protected void onResumeInitData() { + super.onResumeInitData(); + showLoadingDialog(); + mPresenter.getWaterStatistic(); + } + @Override public void initData(Bundle state) { } @Override - public WaterPlanPresenter createPresenter() { - return null; + public void getHistoryStatisticsSuccess(WaterStatisticsEntity entity) { + hideDialogLoading(); + viewBinding.tvTotalValue.setText(entity.getCount()+""); + viewBinding.tvThisWeekValue.setText(entity.getWeekCount()+""); + viewBinding.tvThisMonthValue.setText(entity.getMonCount()+""); + viewBinding.tvPlanValue.setText(entity.getSchedule()+""); + viewBinding.tvManuallyValue.setText(entity.getManualNum()+""); + viewBinding.tvTotalDurationValue.setText(entity.getAllTime()+""); +// viewBinding.tvTotalValue.setText(entity.getCount()+""); + } + + @Override + public HistoryPresenter createPresenter() { + return new HistoryPresenter(new HistoryImpl()); } @Override @@ -36,7 +63,8 @@ public class StatisticFragment extends BaseFragment list,int total) { + public void getHistoryListSuccess(List msg, int total) { } @Override - public void saveConfigSuccess(WaterPlanWeekEntity entity) { + public void deleteHistorySuccess(BaseBean msg, int position) { } - @Override - public void updateConfigSuccess(WaterPlanWeekEntity entity) { - } - - @Override - public void updatePlanStatusSuccess(BaseBean bean, String status) { - - } - - @Override - public void getPlanDetailInfo(WaterPlanWeekEntity entity) { - - } - - @Override - public void getPlanBindDeviceList(WaterDeviceEntity bean) { - - } - - @Override - public void planBindDeviceSuccess(BaseBean bean) { - - } - - @Override - public void deletePlanSuccess(BaseBean bean) { - - } - - @Override - public void planUnbindDeviceSuccess(BaseBean bean, int position) { - - } } diff --git a/app/src/main/java/com/ckkj/water/history/TabHistoryFragment.java b/app/src/main/java/com/ckkj/water/history/TabHistoryFragment.java index 30d7b33..1fb9fee 100644 --- a/app/src/main/java/com/ckkj/water/history/TabHistoryFragment.java +++ b/app/src/main/java/com/ckkj/water/history/TabHistoryFragment.java @@ -11,6 +11,7 @@ import com.ckkj.water.custom.CustomTypeFilterPopupView; import com.ckkj.water.custom.view.CustomRefreshHeader; import com.ckkj.water.databinding.TabHistoryFragmentLayoutBinding; import com.ckkj.water.history.adapter.WateringHistoryAdapter; +import com.ckkj.water.history.entity.WaterStatisticsEntity; import com.ckkj.water.history.entity.WateringRecord; import com.ckkj.water.history.mvp.HistoryContract; import com.ckkj.water.history.mvp.HistoryImpl; @@ -41,12 +42,15 @@ public class TabHistoryFragment extends BaseFragment recordList = new ArrayList<>(); private WateringHistoryAdapter mAdapter; private int mCurrentPage = 1; + private String mFilterStartTime = ""; + private String mFilterEndTime = ""; + private int mFilterType = -1; //0-排程 1-手动 @Override protected void onResumeInitData() { super.onResumeInitData(); showLoadingDialog(); - mPresenter.getWaterHistoryList(mCurrentPage); + getWaterHistoryList(); } @Override @@ -61,16 +65,19 @@ public class TabHistoryFragment extends BaseFragment { mCurrentPage = 1; viewBinding.refresh.setNoMoreData(false); - mPresenter.getWaterHistoryList(mCurrentPage); + getWaterHistoryList(); }); viewBinding.refresh.setOnLoadMoreListener(layout -> { mCurrentPage++; - mPresenter.getWaterHistoryList(mCurrentPage); - + getWaterHistoryList(); }); } + private void getWaterHistoryList(){ + mPresenter.getWaterHistoryList(mCurrentPage,mFilterStartTime,mFilterEndTime,mFilterType); + } + private void initListener() { setClick(viewBinding.linearTimeFilter); setClick(viewBinding.linearTypeFilter); @@ -88,7 +95,8 @@ public class TabHistoryFragment extends BaseFragment map, CallBack callBack); + //删除某一历史记录 + void deleteHistory(String logID, CallBack callBack); + //浇水的数据统计 + void getWateringStatistics(Map map, CallBack callBack); } public interface HistoryView extends IView { //历史记录成功 void getHistoryListSuccess(List msg, int total); + //删除历史记录成功 + void deleteHistorySuccess(BaseBean msg, int position); + //数据统计成功 + void getHistoryStatisticsSuccess(WaterStatisticsEntity entity); } } diff --git a/app/src/main/java/com/ckkj/water/history/mvp/HistoryImpl.java b/app/src/main/java/com/ckkj/water/history/mvp/HistoryImpl.java index 31e3e1c..979d194 100644 --- a/app/src/main/java/com/ckkj/water/history/mvp/HistoryImpl.java +++ b/app/src/main/java/com/ckkj/water/history/mvp/HistoryImpl.java @@ -1,6 +1,7 @@ package com.ckkj.water.history.mvp; import com.ckkj.water.base.entity.MineUserInfoBean; +import com.ckkj.water.history.entity.WaterStatisticsEntity; import com.ckkj.water.history.entity.WateringRecord; import com.ckkj.water.network.BaseBean; import com.ckkj.water.network.NetWorkManager; @@ -50,4 +51,78 @@ public class HistoryImpl implements HistoryContract.DataModel{ } }); } + + /** + * 删除某一历史记录 + * @param logID + * @param callBack + */ + @Override + public void deleteHistory(String logID, HistoryContract.CallBack callBack) { + try { + NetWorkManager.getRequest().deleteWaterLog(NetWorkManager.getToken(), logID) + .subscribeOn(Schedulers.io()) + .unsubscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + } + + @Override + public void onNext(@NonNull BaseBean bean) { + if (bean.getCode() == 200) { + callBack.success(bean,0); + } else { + callBack.fail(bean.getMessage()); + } + } + + @Override + public void onError(@NonNull Throwable e) { + callBack.fail(e.getMessage()); + } + + @Override + public void onComplete() { + } + }); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 浇水的数据统计 + * @param map + * @param callBack + */ + @Override + public void getWateringStatistics(Map map, HistoryContract.CallBack callBack) { + NetWorkManager.getRequest().getDataStatistics(NetWorkManager.getToken()) + .subscribeOn(Schedulers.io()) + .unsubscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + } + + @Override + public void onNext(@NonNull BaseBean bean) { + if (bean.getCode() == 200) { + callBack.success(bean.getData(),0); + } + } + + @Override + public void onError(@NonNull Throwable e) { + callBack.fail(e.getMessage()); + } + + @Override + public void onComplete() { + } + }); + } } diff --git a/app/src/main/java/com/ckkj/water/history/mvp/HistoryPresenter.java b/app/src/main/java/com/ckkj/water/history/mvp/HistoryPresenter.java index b6a4e48..9d66942 100644 --- a/app/src/main/java/com/ckkj/water/history/mvp/HistoryPresenter.java +++ b/app/src/main/java/com/ckkj/water/history/mvp/HistoryPresenter.java @@ -1,7 +1,11 @@ package com.ckkj.water.history.mvp; +import android.text.TextUtils; + import com.ckkj.water.base.BasePresenter; +import com.ckkj.water.history.entity.WaterStatisticsEntity; import com.ckkj.water.history.entity.WateringRecord; +import com.ckkj.water.network.BaseBean; import java.util.HashMap; import java.util.List; @@ -15,11 +19,27 @@ public class HistoryPresenter extends BasePresenter } /** - * 获取浇水历史 + * 查询历史列表 + * @param mCurrentPage + * @param mFilterStartTime + * @param mFilterEndTime + * @param mFilterType */ - public void getWaterHistoryList(int mCurrentPage) { + public void getWaterHistoryList(int mCurrentPage, String mFilterStartTime, String mFilterEndTime, int mFilterType) { Map map = new HashMap<>(); + map.put("pageNum",mCurrentPage+""); + if(!TextUtils.isEmpty(mFilterStartTime)){ +// map.put("beginTime",mFilterStartTime); + map.put("param[beginTime]", mFilterStartTime); + } + if(!TextUtils.isEmpty(mFilterStartTime)){ +// map.put("endTime",mFilterEndTime); + map.put("param[endTime]", mFilterEndTime); + } + if(mFilterType != -1){ + map.put("triggerType",mFilterType+""); + } impl.getHistoryList(map, new HistoryContract.CallBack>() { @Override public void success(List list,int total) { @@ -36,4 +56,48 @@ public class HistoryPresenter extends BasePresenter } }); } + + /** + * 删除历史记录 + * @param id + * @param position + */ + public void deleteWaterHistory(String id, int position) { + impl.deleteHistory(id, new HistoryContract.CallBack() { + @Override + public void success(BaseBean bean, int total) { + if(HistoryPresenter.this.getView() != null){ + HistoryPresenter.this.getView().deleteHistorySuccess(bean,position); + } + } + + @Override + public void fail(String msg) { + if(HistoryPresenter.this.getView() != null){ + HistoryPresenter.this.getView().showMessage(msg); + } + } + }); + } + + /** + * 获取浇水统计 + */ + public void getWaterStatistic() { + impl.getWateringStatistics(null, new HistoryContract.CallBack() { + @Override + public void success(WaterStatisticsEntity entity, int total) { + if(HistoryPresenter.this.getView() != null){ + HistoryPresenter.this.getView().getHistoryStatisticsSuccess(entity); + } + } + + @Override + public void fail(String msg) { + if(HistoryPresenter.this.getView() != null){ + HistoryPresenter.this.getView().showMessage(msg); + } + } + }); + } } diff --git a/app/src/main/java/com/ckkj/water/network/Request.java b/app/src/main/java/com/ckkj/water/network/Request.java index 4ea4b89..963b0d2 100644 --- a/app/src/main/java/com/ckkj/water/network/Request.java +++ b/app/src/main/java/com/ckkj/water/network/Request.java @@ -3,6 +3,7 @@ package com.ckkj.water.network; import com.ckkj.water.base.entity.MineUserInfoBean; +import com.ckkj.water.history.entity.WaterStatisticsEntity; import com.ckkj.water.history.entity.WateringRecord; import com.ckkj.water.index.entity.WaterDeviceEntity; import com.ckkj.water.login.entity.LoginEntity; @@ -108,12 +109,12 @@ public interface Request { @PUT("app/v1/editScheduleStatus") Observable> updateScheduleStatus(@HeaderMap Map headMap, @Body RequestBody requestBody); - //解绑信息 + //删除排程 @DELETE("app/v1/deleteschedule/{ids}") Observable deletePlanById(@HeaderMap Map headMap, @Path("ids") String id); - //解绑信息 + //删除设备 @DELETE("app/v1/deleteDevice/{ids}") Observable unBindDevice(@HeaderMap Map headMap, @Path("ids") String id); @@ -122,9 +123,15 @@ public interface Request { Observable planUnBindDevice(@HeaderMap Map headMap,@QueryMap Map map); - //查询排程列表 + //浇水历史记录 @GET("app/v1/waterLogList") Observable>> waterLogList(@HeaderMap Map headMap, @QueryMap Map map); + //删除某一条历史记录 + @DELETE("app/v1/waterLog/{id}") + Observable deleteWaterLog(@HeaderMap Map headMap, @Path("id") String id); + //浇水历史数据统计 + @GET("app/v1/dataStatistics") + Observable> getDataStatistics(@HeaderMap Map headMap);