排程重做

This commit is contained in:
fengjignqi
2026-05-28 12:00:18 +08:00
parent 47769d1003
commit 401d1892bb
13 changed files with 621 additions and 3 deletions

View File

@@ -129,7 +129,6 @@ public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding
"取消", "保存", new BaseFragment.OnDialogClick() {
@Override
public void onCancelClick() {
selectTabBind(mEditEntity);
}
@Override
@@ -156,7 +155,7 @@ public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding
}
});
} else {
selectTabBind(null);
selectTabBind(mNewAddEntity);
}
}
break;
@@ -166,6 +165,13 @@ public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding
}
private void selectTabBind(WaterPlanWeekEntity entity) {
if (entity == null) {
entity = mIsEditMode ? mEditEntity : mNewAddEntity;
}
if (entity == null) {
ToastUtil.showShort(mContext, "请先保存排程");
return;
}
viewBinding.tvConfig.setSelected(false);
viewBinding.tvBind.setSelected(true);
viewBinding.viewpage.setCurrentItem(1);
@@ -176,6 +182,7 @@ public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding
}
public void onConfigSaved(WaterPlanWeekEntity entity) {
mNewAddEntity = entity;
selectTabBind(entity);
}

View File

@@ -64,6 +64,10 @@ public class BindDeviceFragment extends BaseFragment<PlanBindDeviceLayoutBinding
public void onClick(View v){
switch (v.getId()){
case R.id.tv_commit:
if (mPlanEntity == null) {
ToastUtil.showShort(mContext, "请先保存排程");
return;
}
boolean isSelected = false;
List<String> selected = new ArrayList<>();
for(WaterDeviceEntity.DeviceListBean bean : mDeviceList){

View File

@@ -2,6 +2,7 @@ package com.ckkj.water.plan;
import android.os.Bundle;
import android.os.Handler;
import android.view.MotionEvent;
import android.view.View;
import com.ckkj.water.R;
@@ -73,6 +74,22 @@ public class PlanDetailActivity extends BaseActivity<WaterPlanDetailLayoutBindin
setClick(viewBinding.btnEdit);
setClick(viewBinding.btnDelete);
setClick(viewBinding.switchButton);
// viewBinding.switchButton.setOnTouchListener(new View.OnTouchListener() {
// @Override
// public boolean onTouch(View v, MotionEvent event) {
// if (event.getAction() == MotionEvent.ACTION_DOWN) {
// if (viewBinding.switchButton.isChecked()) {
// // 当前是开启状态,下一步将是关闭 -> 屏蔽动画时长设为0
// viewBinding.switchButton.setAnimationDuration(0);
// } else {
// // 当前是关闭状态,下一步将是开启 -> 开启动画(恢复默认的 250ms 或你想要的时长)
// viewBinding.switchButton.setAnimationDuration(250);
// }
// }
// // 返回 false 以便将触摸事件继续传递给 SwitchButton 内部的点击/滑动逻辑
// return false;
// }
// });
}
private void setClick(View view) {
@@ -136,6 +153,8 @@ public class PlanDetailActivity extends BaseActivity<WaterPlanDetailLayoutBindin
}
}
/**
* 获取配成详情成功
* @param entity

View File

@@ -0,0 +1,195 @@
package com.ckkj.water.plan;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.View;
import com.bigkoo.pickerview.builder.TimePickerBuilder;
import com.bigkoo.pickerview.listener.OnTimeSelectListener;
import com.bigkoo.pickerview.view.TimePickerView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.ckkj.water.R;
import com.ckkj.water.base.BaseFragment;
import com.ckkj.water.databinding.WaterConfigFragmentLayoutBinding;
import com.ckkj.water.databinding.WaterConfigFragmentLayoutCopyBinding;
import com.ckkj.water.index.entity.WaterDeviceEntity;
import com.ckkj.water.network.BaseBean;
import com.ckkj.water.plan.adapter.WaterPlanTimeDataAdapter;
import com.ckkj.water.plan.adapter.WaterPlanWeekAdapter;
import com.ckkj.water.plan.adapter.WaterPlanWeekAdapter_copy;
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.time.ZYTimeUtils;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLayoutCopyBinding, WaterPlanPresenter>
implements WaterPlanContract.WaterPlanView {
private List<WaterPlanWeekEntity.DetailsBean> weekList = new ArrayList<>();
private List<WaterPlanWeekEntity.TimeDataBean> timeList = new ArrayList<>();
private WaterPlanWeekAdapter_copy mWeekAdapter;
private WaterPlanTimeDataAdapter mTimeAdapter;
@Override
public void initData(Bundle state) {
List<WaterPlanWeekEntity.DetailsBean> list = new ArrayList<>();
for(int i = 0; i < 7; i++){
WaterPlanWeekEntity.DetailsBean bean = new WaterPlanWeekEntity.DetailsBean();
WaterPlanWeekEntity.TimeDataBean timeData = new WaterPlanWeekEntity.TimeDataBean();
List<WaterPlanWeekEntity.TimeDataBean> timeDataList = new ArrayList<>();
timeDataList.add(timeData);
bean.setTimeData(timeDataList);
bean.setWeekday(i + 1);
bean.setStatus("0");
bean.setWeekName(ZYTimeUtils.getWeekName(i));
list.add(bean);
}
weekList = list;
//顶部周一、周二。。。。。
mWeekAdapter = new WaterPlanWeekAdapter_copy(mContext, R.layout.plan_period_item,list);
viewBinding.rvWeek.setAdapter(mWeekAdapter);
//周期对应的 时间配置
mTimeAdapter = new WaterPlanTimeDataAdapter(mContext,R.layout.include_plan_time_item_layout,timeList);
viewBinding.rvTimes.setAdapter(mTimeAdapter);
initListener();
}
private void initListener() {
setClick(viewBinding.tvCommit);
// viewBinding.etPlanTime.addTextChangedListener(new TextWatcher() {
// @Override
// public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// }
//
// @Override
// public void onTextChanged(CharSequence s, int start, int before, int count) {
// }
//
// @Override
// public void afterTextChanged(Editable s) {
// if(weekList != null){
// String time = s.toString();
// if(TextUtils.isEmpty(time)){
// weekList.get(0).getWashCycleList().get(mWeekAdapter.getmPos()).setDuration("");
// }else{
// weekList.get(0).getWashCycleList().get(mWeekAdapter.getmPos()).setDuration(time);
// }
// }
// }
// });
mWeekAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
mWeekAdapter.setSelPos(position);
}
});
}
private void setClick(View view) {
view.setOnClickListener(this::onClick);
}
public void onClick(View v){
switch (v.getId()){
case R.id.tv_select_time:
boolean times[] = {false, false, false, true, true, false};
//时间选择器
// TimePickerView pvTime = new TimePickerBuilder(mContext, new OnTimeSelectListener() {
// @Override
// public void onTimeSelect(Date date, View v) {
// viewBinding.tvSelectTime.setText(ZYTimeUtils.getStrTimeData_H_M(date));
// if(weekList != null){
// String startTime = ZYTimeUtils.getStrTimeData_H_M(date).trim();
// weekList.get(0).getWashCycleList().get(mWeekAdapter.getmPos()).setTime(startTime);
// }
// }
// }).setType(times)
// .setCancelColor(mContext.getColor(R.color.color_999999))
// .setSubmitColor(mContext.getColor(R.color.color_zhu))
// .setTextColorCenter(mContext.getColor(R.color.color_zhu))
// .build();
// pvTime.show();
break;
case R.id.tv_commit:
break;
}
}
// private List<WaterPlanWeekEntity.DeviceEntity> getSelectedDevices() {
// if (getActivity() instanceof AddWaterPlanActivity) {
// return ((AddWaterPlanActivity) getActivity()).getSelectedDevices();
// }
// return new ArrayList<>();
// }
@Override
public WaterPlanPresenter createPresenter() {
return new WaterPlanPresenter(new WaterPlanImpl());
}
@Override
public void onNetChange(int netModel) {
}
@Override
public void showError(String message) {
}
@Override
public void logOut(BaseBean bean) {
}
@Override
public void getWaterConfigListSuccess(List<WaterPlanWeekEntity> list, int total) {
}
@Override
public void saveConfigSuccess(WaterPlanWeekEntity entity) {
}
@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) {
}
}

View File

@@ -0,0 +1,47 @@
package com.ckkj.water.plan.adapter;
import android.content.Context;
import android.text.TextUtils;
import android.widget.CheckBox;
import android.widget.TextView;
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.List;
/**
* @author fengxiaoyang
* @date 2026/5/28
* @description TODO: 描述该类的作用
*/
public class WaterPlanTimeDataAdapter extends BaseQuickAdapter<WaterPlanWeekEntity.TimeDataBean, BaseViewHolder> {
private Context mContext;
public WaterPlanTimeDataAdapter(Context context,int layoutResId, @Nullable List<WaterPlanWeekEntity.TimeDataBean> data) {
super(layoutResId, data);
mContext = context;
}
@Override
protected void convert(BaseViewHolder helper, WaterPlanWeekEntity.TimeDataBean item) {
TextView tvStartTime = helper.getView(R.id.tv_select_time);
TextView tvPlanDuration = helper.getView(R.id.tv_plan_duration);
if(!TextUtils.isEmpty(item.getStartTime())){
helper.setText(R.id.tv_select_time, item.getStartTime());
}else{
helper.setText(R.id.tv_select_time,"");
tvStartTime.setHint(mContext.getString(R.string.select_water_time));
}
if(item.getDurationMin() != 0){
helper.setText(R.id.tv_plan_duration,item.getDurationMin() + "");
}else{
helper.setText(R.id.tv_plan_duration,"");
tvPlanDuration.setHint(mContext.getString(R.string.input_water_plan_time));
}
}
}

View File

@@ -0,0 +1,88 @@
package com.ckkj.water.plan.adapter;
import android.content.Context;
import android.text.TextUtils;
import android.widget.CheckBox;
import android.widget.TextView;
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.ArrayList;
import java.util.List;
public class WaterPlanWeekAdapter_copy extends BaseQuickAdapter<WaterPlanWeekEntity.DetailsBean, BaseViewHolder> {
private List<WaterPlanWeekEntity.DetailsBean> mList = new ArrayList<>();
private Context mContext;
private int mPos = 0;
public WaterPlanWeekAdapter_copy(Context context, int layoutResId, @Nullable List<WaterPlanWeekEntity.DetailsBean> data) {
super(layoutResId, data);
this.mContext = context;
this.mList = data;
}
@Override
protected void convert(BaseViewHolder helper, WaterPlanWeekEntity.DetailsBean item) {
TextView tvStartTime = helper.getView(R.id.tv_select_time);
CheckBox checkBox = helper.getView(R.id.checkbox);
TextView tvPlanDuration = helper.getView(R.id.tv_plan_duration);
helper.setText(R.id.tv_week_name,item.getWeekName());
if(!TextUtils.isEmpty(item.getStartTime())){
helper.setText(R.id.tv_select_time, item.getStartTime());
}else{
helper.setText(R.id.tv_select_time,"");
tvStartTime.setHint(mContext.getString(R.string.select_water_time));
}
if(item.getDurationMin() != 0){
helper.setText(R.id.tv_plan_duration,item.getDurationMin() + "");
}else{
helper.setText(R.id.tv_plan_duration,"");
tvPlanDuration.setHint(mContext.getString(R.string.input_water_plan_time));
}
if(item.getStatus().equals("1")){
checkBox.setChecked(true);
}else{
checkBox.setChecked(false);
}
helper.addOnClickListener(R.id.linear_week);
helper.addOnClickListener(R.id.checkbox);
helper.addOnClickListener(R.id.tv_select_time);
helper.addOnClickListener(R.id.tv_plan_duration);
// LinearLayout linearItem = helper.getView(R.id.linear_item);
// View viewStatus = helper.getView(R.id.view_status);
// if(helper.getLayoutPosition() == mPos){
// linearItem.setBackground(mContext.getResources().getDrawable(R.drawable.shape_water_period_sel_bg));
// viewStatus.setVisibility(VISIBLE);
// viewStatus.setBackground(mContext.getResources().getDrawable(R.drawable.shape_green_circle));
// }else{
// linearItem.setBackground(null);
// if(!TextUtils.isEmpty(item.getTime()) && !TextUtils.isEmpty(item.getDuration())){
// viewStatus.setVisibility(VISIBLE);
// viewStatus.setBackground(mContext.getResources().getDrawable(R.drawable.shape_yellow_circle));
// }else{
// viewStatus.setVisibility(INVISIBLE);
// viewStatus.setBackground(null);
// }
// }
}
public void setSelPos(int position) {
this.mPos = position;
notifyDataSetChanged();
}
public int getmPos() {
return mPos;
}
}

View File

@@ -29,6 +29,8 @@ public class WaterPlanWeekEntity implements Serializable {
private String status = "1";
private List<DetailsBean> details;
@NoArgsConstructor
@Data
public static class DetailsBean implements Serializable{
@@ -62,5 +64,13 @@ public class WaterPlanWeekEntity implements Serializable {
private Object zones;
private String triggerType = "0";
private String status = "1";
private List<TimeDataBean> timeData;
}
@NoArgsConstructor
@Data
public static class TimeDataBean implements Serializable{
private String startTime = "";
private int durationMin = 0;
}
}