From ed9cdaf126161bc09ea9ddb18715a1ad343e90e5 Mon Sep 17 00:00:00 2001 From: fengjignqi <15192412330@163.com> Date: Fri, 29 May 2026 18:02:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=92=E7=A8=8B=E8=A7=A3=E7=BB=91=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=EF=BC=8C=E6=B7=BB=E5=8A=A0=E5=B7=B2=E5=85=B3=E8=81=94?= =?UTF-8?q?=E8=AE=BE=E5=A4=87tab?= 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 | 12 +++ .../ckkj/water/plan/BindDeviceFragment.java | 5 + .../water/plan/PlanBoundDeviceFragment.java | 99 +++++++++++++++++++ .../ckkj/water/plan/PlanDetailActivity.java | 5 + .../ckkj/water/plan/WaterConfigFragment.java | 5 + .../water/plan/WaterConfigFragment_copy.java | 5 + .../ckkj/water/plan/WaterPlanFragment.java | 5 + .../plan/adapter/PlanBoundDeviceAdapter.java | 32 ++++++ .../water/plan/mvp/WaterPlanContract.java | 4 + .../ckkj/water/plan/mvp/WaterPlanImpl.java | 31 ++++++ .../water/plan/mvp/WaterPlanPresenter.java | 30 +++++- 13 files changed, 239 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/com/ckkj/water/plan/adapter/PlanBoundDeviceAdapter.java 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 1aaa9f6..e97e76d 100644 --- a/app/src/main/java/com/ckkj/water/history/StatisticFragment.java +++ b/app/src/main/java/com/ckkj/water/history/StatisticFragment.java @@ -83,4 +83,9 @@ public class StatisticFragment extends BaseFragment unBindDevice(@HeaderMap Map headMap, @Path("ids") String id); + //排程解绑设备 + @DELETE("app/v1/deleteScheduleDevice") + Observable planUnBindDevice(@HeaderMap Map headMap,@QueryMap Map map); + 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 963c634..cbfef7f 100644 --- a/app/src/main/java/com/ckkj/water/plan/AddWaterPlanActivity.java +++ b/app/src/main/java/com/ckkj/water/plan/AddWaterPlanActivity.java @@ -94,6 +94,9 @@ public class AddWaterPlanActivity extends BaseActivity { WaterConfigFragment_copy configFragment = (WaterConfigFragment_copy) mFragmentList.get(0); configFragment.setEditEntity(mEditEntity); + + PlanBoundDeviceFragment boundDeviceFragment = (PlanBoundDeviceFragment) mFragmentList.get(1); + boundDeviceFragment.setEditEntity(mEditEntity); }); } } @@ -127,6 +130,10 @@ public class AddWaterPlanActivity extends BaseActivity selectedPositions = mAdapter.getSelectedPositions(); // List selected = new ArrayList<>(); diff --git a/app/src/main/java/com/ckkj/water/plan/PlanBoundDeviceFragment.java b/app/src/main/java/com/ckkj/water/plan/PlanBoundDeviceFragment.java index bfcb511..295af8c 100644 --- a/app/src/main/java/com/ckkj/water/plan/PlanBoundDeviceFragment.java +++ b/app/src/main/java/com/ckkj/water/plan/PlanBoundDeviceFragment.java @@ -1,15 +1,20 @@ package com.ckkj.water.plan; import android.os.Bundle; +import android.view.View; +import com.chad.library.adapter.base.BaseQuickAdapter; +import com.ckkj.water.R; import com.ckkj.water.base.BaseFragment; import com.ckkj.water.databinding.PlanBoundDeviceLayoutBinding; import com.ckkj.water.index.entity.WaterDeviceEntity; import com.ckkj.water.network.BaseBean; +import com.ckkj.water.plan.adapter.PlanBoundDeviceAdapter; 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; @@ -20,9 +25,95 @@ import java.util.List; */ public class PlanBoundDeviceFragment extends BaseFragment implements WaterPlanContract.WaterPlanView{ + + private WaterPlanWeekEntity mEditEntity; + private PlanBoundDeviceAdapter mAdapter; + @Override public void initData(Bundle state) { + // 初始化适配器,如果有数据则设置 + if (mEditEntity != null && mEditEntity.getDeviceIds() != null) { + mAdapter = new PlanBoundDeviceAdapter(mContext, R.layout.plan_bound_device_item, mEditEntity.getDeviceIds()); + viewBinding.rvDevices.setAdapter(mAdapter); + // 根据数据状态显示/隐藏视图 + if (mEditEntity.getDeviceIds().isEmpty()) { + viewBinding.linearContent.setVisibility(View.GONE); + viewBinding.relNoresult.setVisibility(View.VISIBLE); + } else { + viewBinding.linearContent.setVisibility(View.VISIBLE); + viewBinding.relNoresult.setVisibility(View.GONE); + } + } else { + // 无数据时显示空状态 + viewBinding.linearContent.setVisibility(View.GONE); + viewBinding.relNoresult.setVisibility(View.VISIBLE); + } + if(mAdapter != null){ + mAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() { + @Override + public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { + switch (view.getId()){ + case R.id.img_delete: + showDialogtext(null, false, false, "提示", + "确定解绑该设备?", "取消", "解绑", + new OnDialogClick() { + @Override + public void onCancelClick() { + } + + @Override + public void onConfirmClick() { + showLoadingDialog(); + mPresenter.planUnbindDevice(mEditEntity.getId(), + mEditEntity.getDeviceIds().get(position).getId(), + position); + } + }); + break; + } + } + }); + } + + } + + public void setEditEntity(WaterPlanWeekEntity entity) { + this.mEditEntity = entity; + // 使用 getView().post() 确保视图已初始化完成 + if (getView() != null) { + getView().post(() -> { + if (viewBinding != null) { + updateUI(); + } + }); + } + } + + private void updateUI() { + if (viewBinding == null) { + return; + } + if (mEditEntity == null || mEditEntity.getDeviceIds() == null) { + viewBinding.linearContent.setVisibility(View.GONE); + viewBinding.relNoresult.setVisibility(View.VISIBLE); + return; + } + + if (mEditEntity.getDeviceIds().isEmpty()) { + viewBinding.linearContent.setVisibility(View.GONE); + viewBinding.relNoresult.setVisibility(View.VISIBLE); + } else { + viewBinding.linearContent.setVisibility(View.VISIBLE); + viewBinding.relNoresult.setVisibility(View.GONE); + if (mAdapter != null) { + mAdapter.setNewData(mEditEntity.getDeviceIds()); + } + } + } + + public WaterPlanWeekEntity getEditEntity() { + return mEditEntity; } @Override @@ -70,6 +161,14 @@ public class PlanBoundDeviceFragment extends BaseFragment { + private Context mContext; + public PlanBoundDeviceAdapter(Context context,int layoutResId, @Nullable List data) { + super(layoutResId, data); + mContext = context; + } + + @Override + protected void convert(BaseViewHolder helper, WaterDeviceEntity item) { + helper.setText(R.id.tv_device_name, item.getDeviceName()); + helper.setText(R.id.tv_device_serial, item.getDeviceSn()); + helper.addOnClickListener(R.id.img_delete); + } +} 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 88eccbe..f741b25 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 @@ -32,6 +32,8 @@ public class WaterPlanContract { void planBindDevice(JSONObject json,CallBack callBack); //删除排程 void deletePlan(String id,CallBack callBack); + //排程解绑设备 + void planUnbindDevice(Map map,CallBack callBack); } public interface WaterPlanView extends IView { @@ -51,5 +53,7 @@ public class WaterPlanContract { void planBindDeviceSuccess(BaseBean bean); //删除排程成功 void deletePlanSuccess(BaseBean bean); + //排程解绑设备成功 + void planUnbindDeviceSuccess(BaseBean bean,int position); } } 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 fa16b72..1a5c49f 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 @@ -306,4 +306,35 @@ public class WaterPlanImpl implements WaterPlanContract.DataModel{ e.printStackTrace(); } } + + @Override + public void planUnbindDevice(Map map, WaterPlanContract.CallBack callBack) { + NetWorkManager.getRequest().planUnBindDevice(NetWorkManager.getToken(), map) + .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() { + } + }); + } } 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 037b490..4322446 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 @@ -267,9 +267,33 @@ public class WaterPlanPresenter extends BasePresenter map = new HashMap<>(); + map.put("scheduleId",planID); + map.put("deviceId",deviceID); + impl.planUnbindDevice(map, new WaterPlanContract.CallBack() { + @Override + public void success(BaseBean bean, int total) { + if(WaterPlanPresenter.this.getView() != null){ + WaterPlanPresenter.this.getView().planUnbindDeviceSuccess(bean,position); } }