From 5ca81f565a6d931d05d08d010fa6ebf292cb9b9c Mon Sep 17 00:00:00 2001 From: fengjignqi <15192412330@163.com> Date: Tue, 26 May 2026 14:25:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=92=E7=A8=8B=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ckkj/water/history/StatisticFragment.java | 5 ++ .../java/com/ckkj/water/network/Request.java | 4 ++ .../ckkj/water/plan/AddWaterPlanActivity.java | 5 ++ .../ckkj/water/plan/BindDeviceFragment.java | 5 ++ .../ckkj/water/plan/PlanDetailActivity.java | 61 +++++++++++++++++-- .../ckkj/water/plan/WaterConfigFragment.java | 24 +++++--- .../ckkj/water/plan/WaterPlanFragment.java | 9 ++- .../plan/adapter/PlanDetailTimeAdapter.java | 49 +++++++-------- .../water/plan/mvp/WaterPlanContract.java | 4 ++ .../ckkj/water/plan/mvp/WaterPlanImpl.java | 30 +++++++++ .../water/plan/mvp/WaterPlanPresenter.java | 24 ++++++++ .../ckkj/water/utils/time/ZYTimeUtils.java | 28 +++++++++ 12 files changed, 212 insertions(+), 36 deletions(-) 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 1f0f4ed..867631e 100644 --- a/app/src/main/java/com/ckkj/water/history/StatisticFragment.java +++ b/app/src/main/java/com/ckkj/water/history/StatisticFragment.java @@ -57,4 +57,9 @@ public class StatisticFragment extends BaseFragment getPlanBindDeviceList(@HeaderMap Map headMap, @Path("id") String id); + //查询排程详情 + @GET("app/v1/schedule/{id}") + Observable> getPlanDetailInfo(@HeaderMap Map headMap, @Path("id") String id); + //解绑信息 @DELETE("app/v1/deleteDevice/{ids}") Observable unBindDevice(@HeaderMap Map headMap, @Path("ids") String id); diff --git a/app/src/main/java/com/ckkj/water/plan/AddWaterPlanActivity.java b/app/src/main/java/com/ckkj/water/plan/AddWaterPlanActivity.java index f0677c4..e645438 100644 --- a/app/src/main/java/com/ckkj/water/plan/AddWaterPlanActivity.java +++ b/app/src/main/java/com/ckkj/water/plan/AddWaterPlanActivity.java @@ -169,5 +169,10 @@ public class AddWaterPlanActivity extends BaseActivity implements WaterPlanContract.WaterPlanView { + //列表页面传的的,用于获取详情 + private WaterPlanWeekEntity mPlanEntity; + //查询到的排程详情 + private WaterPlanWeekEntity mDetailEntity; + private PlanDetailTimeAdapter mAdapter; + private List mList = new ArrayList<>(); @Override public void initData(Bundle savedInstanceState) { super.initData(savedInstanceState); + Bundle bundle = getIntent().getExtras(); + if(bundle != null){ + mPlanEntity = (WaterPlanWeekEntity) bundle.getSerializable("plan_entity"); + } String jsonContent = getString(R.string.plan_water_entity_json); WaterPlanWeekEntity entity = new Gson().fromJson(jsonContent, WaterPlanWeekEntity.class); - ImmersionBar.with(this) .statusBarColor(R.color.color_F9F9F9) // 设置状态栏颜色 .statusBarDarkFont(true) // 设置状态栏字体为黑色 @@ -37,14 +49,18 @@ public class PlanDetailActivity extends BaseActivity list = new ArrayList<>(); + for(WaterPlanWeekEntity.DetailsBean bean : entity.getDetails()){ + if(bean.getStatus().equals("1")){ + list.add(bean); + } + } + if(mAdapter != null){ + mAdapter.setNewData(list); + } + } + + @Override public WaterPlanPresenter createPresenter() { return new WaterPlanPresenter(new WaterPlanImpl()); @@ -73,7 +123,8 @@ public class PlanDetailActivity extends BaseActivity localDetails = mConfigEntity.getDetails(); List remoteDetails = mRemoteConfigEntity.getDetails(); - if (localDetails == null || localDetails.size() != remoteDetails.size()) { - return true; - } for (int i = 0; i < localDetails.size(); i++) { WaterPlanWeekEntity.DetailsBean local = localDetails.get(i); WaterPlanWeekEntity.DetailsBean remote = remoteDetails.get(i); - if (!equalsString(local.getStatus(), remote.getStatus()) - || !equalsString(local.getStartTime(),ZYTimeUtils.timeWithoutMillis(remote.getStartTime())) - || local.getDurationMin() != remote.getDurationMin()) { - return true; + // 勾选状态下对比状态、时间、时长 + if ("1".equals(local.getStatus())) { + if (!equalsString(local.getStatus(), remote.getStatus()) + || !equalsString(local.getStartTime(), ZYTimeUtils.formatHHmm(remote.getStartTime())) + || local.getDurationMin() != remote.getDurationMin()) { + return true; + } + } else { + // 未勾选状态下只对比勾选状态,不关心时间/时长 + if (!equalsString(local.getStatus(), remote.getStatus())) { + return true; + } } } return false; @@ -296,6 +301,11 @@ public class WaterConfigFragment extends BaseFragment { -// -// public PlanDetailTimeAdapter(int layoutResId, @Nullable List data) { -// super(layoutResId, data); -// } -// -// @Override -// protected void convert(BaseViewHolder helper, WaterPlanWeekEntity.WashCycleEntity item) { -// helper.setText(R.id.tv_week,item.getWeek()); -// helper.setText(R.id.tv_start_time,item.getTime()); -// helper.setText(R.id.tv_duration,item.getDuration()); -// } -//} +package com.ckkj.water.plan.adapter; + +import androidx.annotation.Nullable; + +import com.chad.library.adapter.base.BaseQuickAdapter; +import com.chad.library.adapter.base.BaseViewHolder; +import com.ckkj.water.R; +import com.ckkj.water.plan.entity.WaterPlanWeekEntity; +import com.ckkj.water.utils.time.ZYTimeUtils; + +import java.util.List; + +public class PlanDetailTimeAdapter extends BaseQuickAdapter { + + public PlanDetailTimeAdapter(int layoutResId, @Nullable List data) { + super(layoutResId, data); + } + + @Override + protected void convert(BaseViewHolder helper, WaterPlanWeekEntity.DetailsBean item) { + helper.setText(R.id.tv_week, ZYTimeUtils.getWeekName(item.getWeekday())); + helper.setText(R.id.tv_start_time,ZYTimeUtils.formatHHmm(item.getStartTime())); + helper.setText(R.id.tv_duration,item.getDurationMin() + "min"); + } +} diff --git a/app/src/main/java/com/ckkj/water/plan/mvp/WaterPlanContract.java b/app/src/main/java/com/ckkj/water/plan/mvp/WaterPlanContract.java index f59dc94..76a6c22 100644 --- a/app/src/main/java/com/ckkj/water/plan/mvp/WaterPlanContract.java +++ b/app/src/main/java/com/ckkj/water/plan/mvp/WaterPlanContract.java @@ -22,6 +22,8 @@ public class WaterPlanContract { void updateConfig(JSONObject json,CallBack callBack); //查询排程可绑定的设备列表 void getPlanBindDeviceList(Map map,CallBack callBack); + //查询排程详情 + void getPlanDetailInfo(Map map,CallBack callBack); } public interface WaterPlanView extends IView { @@ -31,5 +33,7 @@ public class WaterPlanContract { void saveConfigSuccess(WaterPlanWeekEntity entity); //排程更新成功 void updateConfigSuccess(WaterPlanWeekEntity entity); + //获取排程详情 + void getPlanDetailInfo(WaterPlanWeekEntity entity); } } diff --git a/app/src/main/java/com/ckkj/water/plan/mvp/WaterPlanImpl.java b/app/src/main/java/com/ckkj/water/plan/mvp/WaterPlanImpl.java index 6a23eab..2019627 100644 --- a/app/src/main/java/com/ckkj/water/plan/mvp/WaterPlanImpl.java +++ b/app/src/main/java/com/ckkj/water/plan/mvp/WaterPlanImpl.java @@ -168,4 +168,34 @@ public class WaterPlanImpl implements WaterPlanContract.DataModel{ } }); } + + @Override + public void getPlanDetailInfo(Map map, WaterPlanContract.CallBack callBack) { + String deviceID = map.get("id"); + NetWorkManager.getRequest().getPlanDetailInfo(NetWorkManager.getToken(), deviceID) + .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/plan/mvp/WaterPlanPresenter.java b/app/src/main/java/com/ckkj/water/plan/mvp/WaterPlanPresenter.java index 144312c..9ae4e2c 100644 --- a/app/src/main/java/com/ckkj/water/plan/mvp/WaterPlanPresenter.java +++ b/app/src/main/java/com/ckkj/water/plan/mvp/WaterPlanPresenter.java @@ -163,4 +163,28 @@ public class WaterPlanPresenter extends BasePresenter map = new HashMap<>(); + map.put("id",mPlanEntity.getId()); + impl.getPlanDetailInfo(map, new WaterPlanContract.CallBack() { + @Override + public void success(WaterPlanWeekEntity bean, int total) { + if(WaterPlanPresenter.this.getView() != null){ + WaterPlanPresenter.this.getView().getPlanDetailInfo(bean); + } + } + + @Override + public void fail(String msg) { + if(WaterPlanPresenter.this.getView() != null){ + WaterPlanPresenter.this.getView().showError( msg); + } + } + }); + } } diff --git a/app/src/main/java/com/ckkj/water/utils/time/ZYTimeUtils.java b/app/src/main/java/com/ckkj/water/utils/time/ZYTimeUtils.java index 29a0dfa..bf29d69 100644 --- a/app/src/main/java/com/ckkj/water/utils/time/ZYTimeUtils.java +++ b/app/src/main/java/com/ckkj/water/utils/time/ZYTimeUtils.java @@ -293,6 +293,34 @@ public class ZYTimeUtils { return ""; } + /** + * HH:mm:ss 转 HH:mm + * 例如: + * 08:00:00 -> 08:00 + * 18:35:29 -> 18:35 + */ + public static String formatHHmm(String time) { + if (TextUtils.isEmpty(time)) { + return ""; + } + + try { + SimpleDateFormat sourceFormat = + new SimpleDateFormat("HH:mm:ss", Locale.getDefault()); + + SimpleDateFormat targetFormat = + new SimpleDateFormat("HH:mm", Locale.getDefault()); + + Date date = sourceFormat.parse(time); + + return targetFormat.format(date); + + } catch (Exception e) { + e.printStackTrace(); + return time; + } + } + public static String getStrTimeData_H_M(Date date) { String timeString = null; SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");