排程编辑更新

This commit is contained in:
fengjignqi
2026-05-26 17:35:08 +08:00
parent 65dfc1b5f1
commit 9ab6d134ab
29 changed files with 271 additions and 225 deletions

View File

@@ -5,28 +5,23 @@ import android.view.View;
import androidx.fragment.app.Fragment;
import com.ckkj.water.EventMessage;
import com.ckkj.water.R;
import com.ckkj.water.base.BaseActivity;
import com.ckkj.water.base.BaseFragment;
import com.ckkj.water.databinding.AddWaterPlanLayoutBinding;
import com.ckkj.water.login.LoginActivity;
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.plate.adapter.ViewPagerAdapter;
import com.ckkj.water.utils.manager.ActivityManager;
import com.ckkj.water.utils.manager.WaterUserInfoManager;
import com.ckkj.water.utils.show.ToastUtil;
import com.gyf.immersionbar.ImmersionBar;
import java.util.ArrayList;
import java.util.List;
import de.greenrobot.event.EventBus;
/**
* 添加/编辑浇水排程
*/
@@ -197,5 +192,10 @@ public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding
}
@Override
public void getPlanBindDeviceList(WaterDeviceEntity bean) {
}
}

View File

@@ -3,24 +3,21 @@ package com.ckkj.water.plan;
import android.os.Bundle;
import android.view.View;
import androidx.databinding.BindingAdapter;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.ckkj.water.R;
import com.ckkj.water.base.BaseFragment;
import com.ckkj.water.databinding.PlanBindDeviceLayoutBinding;
import com.ckkj.water.main.activity.MainActivity;
import com.ckkj.water.index.entity.WaterDeviceEntity;
import com.ckkj.water.network.BaseBean;
//import com.ckkj.water.plan.adapter.BindDeviceAdapter;
import com.ckkj.water.plan.adapter.BindDeviceAdapter;
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.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
/**
* 排程关联设备
@@ -29,23 +26,30 @@ public class BindDeviceFragment extends BaseFragment<PlanBindDeviceLayoutBinding
implements WaterPlanContract.WaterPlanView {
private List<WaterPlanWeekEntity> weekList = new ArrayList<>();
private List<WaterDeviceEntity.DeviceListBean> mDeviceList = new ArrayList<>();
private WaterPlanWeekEntity mPlanEntity;
// private BindDeviceAdapter mAdapter;
private BindDeviceAdapter mAdapter;
@Override
public void initData(Bundle state) {
String jsonContent = getString(R.string.plan_water_entity_json);
// WaterPlanWeekEntity entity = new Gson().fromJson(jsonContent, WaterPlanWeekEntity.class);
// weekList.add(entity);
// mAdapter = new BindDeviceAdapter(mContext,R.layout.plan_bind_device_item,weekList.get(0).getDeviceList());
// viewBinding.rvDevices.setAdapter(mAdapter);
// mAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
// @Override
// public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
// mAdapter.toggleSelection(position);
// syncSelectedDevices();
// }
// });
mAdapter = new BindDeviceAdapter(mContext,R.layout.plan_bind_device_item,mDeviceList);
viewBinding.rvDevices.setAdapter(mAdapter);
mAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
mAdapter.toggleSelection(position);
if(mDeviceList.get(position).getStatusX().equals("0")){
mDeviceList.get(position).setStatusX("1");
}else{
mDeviceList.get(position).setStatusX("0");
}
// syncSelectedDevices();
}
});
// 接收来自AddWaterPlanActivity的WaterPlanWeekEntity对象并使用传参。
}
@@ -71,7 +75,20 @@ public class BindDeviceFragment extends BaseFragment<PlanBindDeviceLayoutBinding
}
}
private void syncSelectedDevices() {
/**
* 查询到了可绑定的设备
* @param bean
*/
@Override
public void getPlanBindDeviceList(WaterDeviceEntity bean) {
hideDialogLoading();
if(mAdapter != null){
mDeviceList = bean.getDeviceList();
mAdapter.setNewData(mDeviceList);
}
}
// private void syncSelectedDevices() {
// Set<Integer> selectedPositions = mAdapter.getSelectedPositions();
// List<WaterPlanWeekEntity.DeviceEntity> selected = new ArrayList<>();
// for (int pos : selectedPositions) {
@@ -82,7 +99,7 @@ public class BindDeviceFragment extends BaseFragment<PlanBindDeviceLayoutBinding
// if (getActivity() instanceof AddWaterPlanActivity) {
// ((AddWaterPlanActivity) getActivity()).setSelectedDevices(selected);
// }
}
// }
@Override
public WaterPlanPresenter createPresenter() {
@@ -123,4 +140,6 @@ public class BindDeviceFragment extends BaseFragment<PlanBindDeviceLayoutBinding
public void getPlanDetailInfo(WaterPlanWeekEntity entity) {
}
}

View File

@@ -1,12 +1,12 @@
package com.ckkj.water.plan;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import com.ckkj.water.R;
import com.ckkj.water.base.BaseActivity;
import com.ckkj.water.databinding.WaterPlanDetailLayoutBinding;
import com.ckkj.water.index.entity.WaterDeviceEntity;
import com.ckkj.water.network.BaseBean;
//import com.ckkj.water.plan.adapter.PlanDetailDeviceAdapter;
//import com.ckkj.water.plan.adapter.PlanDetailTimeAdapter;
@@ -113,6 +113,11 @@ public class PlanDetailActivity extends BaseActivity<WaterPlanDetailLayoutBindin
}
}
@Override
public void getPlanBindDeviceList(WaterDeviceEntity bean) {
}
@Override
public WaterPlanPresenter createPresenter() {

View File

@@ -14,6 +14,7 @@ import com.ckkj.water.R;
import com.ckkj.water.base.BaseActivity;
import com.ckkj.water.base.BaseFragment;
import com.ckkj.water.databinding.WaterConfigFragmentLayoutBinding;
import com.ckkj.water.index.entity.WaterDeviceEntity;
import com.ckkj.water.network.BaseBean;
import com.ckkj.water.plan.adapter.WaterPlanWeekAdapter;
import com.ckkj.water.plan.entity.WaterPlanWeekEntity;
@@ -21,9 +22,7 @@ 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 com.ckkj.water.utils.text.TextUtil;
import com.ckkj.water.utils.time.ZYTimeUtils;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.Date;
@@ -82,13 +81,9 @@ public class WaterConfigFragment extends BaseFragment<WaterConfigFragmentLayoutB
viewBinding.etPlanName.setText(entity.getName());
mPlanName = entity.getName();
// 更新周配置列表的显示
if (entity.getDetails() != null) {
for(WaterPlanWeekEntity.DetailsBean bean : entity.getDetails()){
bean.setWeekName(ZYTimeUtils.getWeekName(bean.getWeekday() - 1));
bean.setStartTime(ZYTimeUtils.formatHHmm(bean.getStartTime()));
}
mWeekAdapter.setNewData(entity.getDetails());
// 更新周配置列表的显示,使用 mConfigEntity.getDetails() 保证数据一致
if (mConfigEntity.getDetails() != null) {
mWeekAdapter.setNewData(mConfigEntity.getDetails());
}
}
@@ -367,6 +362,11 @@ public class WaterConfigFragment extends BaseFragment<WaterConfigFragmentLayoutB
}
@Override
public void getPlanBindDeviceList(WaterDeviceEntity bean) {
}
@Override
public WaterPlanPresenter createPresenter() {

View File

@@ -9,7 +9,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
import com.ckkj.water.R;
import com.ckkj.water.base.BaseFragment;
import com.ckkj.water.databinding.WaterPlanFragmentBinding;
import com.ckkj.water.main.activity.MainActivity;
import com.ckkj.water.index.entity.WaterDeviceEntity;
import com.ckkj.water.network.BaseBean;
//import com.ckkj.water.plan.adapter.WaterPlanListAdapter;
import com.ckkj.water.plan.adapter.WaterPlanListAdapter;
@@ -121,4 +121,9 @@ public class WaterPlanFragment extends BaseFragment<WaterPlanFragmentBinding, Wa
public void getPlanDetailInfo(WaterPlanWeekEntity entity) {
}
@Override
public void getPlanBindDeviceList(WaterDeviceEntity bean) {
}
}

View File

@@ -1,55 +1,56 @@
//package com.ckkj.water.plan.adapter;
//
//import android.content.Context;
//import android.widget.CheckBox;
//
//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 java.util.HashSet;
//import java.util.List;
//import java.util.Set;
//
//public class BindDeviceAdapter extends BaseQuickAdapter<WaterPlanWeekEntity.DeviceEntity, BaseViewHolder> {
// private Context mContext;
// private Set<Integer> mSelectedPositions = new HashSet<>();
//
// public BindDeviceAdapter(Context context, int layoutResId, @Nullable List<WaterPlanWeekEntity.DeviceEntity> data) {
// super(layoutResId, data);
// this.mContext = context;
// }
//
// @Override
// protected void convert(BaseViewHolder helper, WaterPlanWeekEntity.DeviceEntity item) {
// CheckBox checkBox = helper.getView(R.id.radio);
// helper.setText(R.id.tv_device_name, item.getDeviceName());
// helper.setText(R.id.tv_device_serial, item.getDeviceCode());
// checkBox.setChecked(mSelectedPositions.contains(helper.getLayoutPosition()));
// }
//
// public void toggleSelection(int position) {
// if (mSelectedPositions.contains(position)) {
// mSelectedPositions.remove(position);
// } else {
// mSelectedPositions.add(position);
// }
// notifyDataSetChanged();
// }
//
// public void clearSelection() {
// mSelectedPositions.clear();
// notifyDataSetChanged();
// }
//
// public Set<Integer> getSelectedPositions() {
// return new HashSet<>(mSelectedPositions);
// }
//
// public int getSelectedCount() {
// return mSelectedPositions.size();
// }
//}
package com.ckkj.water.plan.adapter;
import android.content.Context;
import android.widget.CheckBox;
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.index.entity.WaterDeviceEntity;
import com.ckkj.water.plan.entity.WaterPlanWeekEntity;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class BindDeviceAdapter extends BaseQuickAdapter<WaterDeviceEntity.DeviceListBean, BaseViewHolder> {
private Context mContext;
private Set<Integer> mSelectedPositions = new HashSet<>();
public BindDeviceAdapter(Context context, int layoutResId, @Nullable List<WaterDeviceEntity.DeviceListBean> data) {
super(layoutResId, data);
this.mContext = context;
}
@Override
protected void convert(BaseViewHolder helper, WaterDeviceEntity.DeviceListBean item) {
CheckBox checkBox = helper.getView(R.id.radio);
helper.setText(R.id.tv_device_name, item.getDeviceNameX());
helper.setText(R.id.tv_device_serial, item.getDeviceSnX());
checkBox.setChecked(mSelectedPositions.contains(helper.getLayoutPosition()));
}
public void toggleSelection(int position) {
if (mSelectedPositions.contains(position)) {
mSelectedPositions.remove(position);
} else {
mSelectedPositions.add(position);
}
notifyDataSetChanged();
}
public void clearSelection() {
mSelectedPositions.clear();
notifyDataSetChanged();
}
public Set<Integer> getSelectedPositions() {
return new HashSet<>(mSelectedPositions);
}
public int getSelectedCount() {
return mSelectedPositions.size();
}
}

View File

@@ -55,7 +55,7 @@ public class WaterPlanWeekEntity implements Serializable {
private String scheduleId;
private int weekday = 1;
private String weekName;
private String startTime;
private String startTime = "";
private int durationMin = 0;
private Object zones;
private String triggerType = "0";

View File

@@ -1,6 +1,7 @@
package com.ckkj.water.plan.mvp;
import com.ckkj.water.base.IView;
import com.ckkj.water.index.entity.WaterDeviceEntity;
import com.ckkj.water.plan.entity.WaterPlanWeekEntity;
import org.json.JSONObject;
@@ -35,5 +36,7 @@ public class WaterPlanContract {
void updateConfigSuccess(WaterPlanWeekEntity entity);
//获取排程详情
void getPlanDetailInfo(WaterPlanWeekEntity entity);
//查询到可绑定设备列表
void getPlanBindDeviceList(WaterDeviceEntity bean);
}
}

View File

@@ -1,9 +1,7 @@
package com.ckkj.water.plan.mvp;
import com.ckkj.water.device.mvp.DeviceContract;
import com.ckkj.water.index.entity.IndexDeviceEntity;
import com.ckkj.water.index.entity.WaterDeviceEntity;
import com.ckkj.water.network.BaseBean;
import com.ckkj.water.network.LoginStateManager;
import com.ckkj.water.network.NetWorkManager;
import com.ckkj.water.plan.entity.WaterPlanWeekEntity;
@@ -146,13 +144,13 @@ public class WaterPlanImpl implements WaterPlanContract.DataModel{
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseBean>() {
.subscribe(new Observer<BaseBean<WaterDeviceEntity.DeviceListBean>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull BaseBean bean) {
public void onNext(@NonNull BaseBean<WaterDeviceEntity.DeviceListBean> bean) {
if (bean.getCode() == 200) {
callBack.success(bean.getData(),0);
}

View File

@@ -1,17 +1,7 @@
package com.ckkj.water.plan.mvp;
import com.ckkj.water.AppConfig;
import com.ckkj.water.base.BasePresenter;
import com.ckkj.water.base.entity.MineUserInfoBean;
import com.ckkj.water.device.mvp.DeviceContract;
import com.ckkj.water.device.mvp.DeviceImpl;
import com.ckkj.water.device.mvp.DevicePresenter;
import com.ckkj.water.index.entity.IndexDeviceEntity;
import com.ckkj.water.index.mvp.IndexContract;
import com.ckkj.water.login.mvp.LoginContract;
import com.ckkj.water.login.mvp.LoginPresenter;
import com.ckkj.water.mine.mvp.MineContract;
import com.ckkj.water.mine.mvp.MinePresenter;
import com.ckkj.water.index.entity.WaterDeviceEntity;
import com.ckkj.water.network.BaseBean;
import com.ckkj.water.plan.entity.WaterPlanWeekEntity;
@@ -147,11 +137,11 @@ public class WaterPlanPresenter extends BasePresenter<WaterPlanContract.WaterPla
public void getPlanBindDevices(WaterPlanWeekEntity entity) {
Map<String,String> map = new HashMap<>();
map.put("id",entity.getId());
impl.getPlanBindDeviceList(map, new WaterPlanContract.CallBack<BaseBean>() {
impl.getPlanBindDeviceList(map, new WaterPlanContract.CallBack<WaterDeviceEntity>() {
@Override
public void success(BaseBean bean, int total) {
public void success(WaterDeviceEntity bean, int total) {
if(WaterPlanPresenter.this.getView() != null){
// WaterPlanPresenter.this.getView().getDeviceDetailInfo(bean);
WaterPlanPresenter.this.getView().getPlanBindDeviceList(bean);
}
}