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); } }