新增排程接口

This commit is contained in:
fengjignqi
2026-05-25 09:52:26 +08:00
parent f86fedd6f1
commit 819965faec
13 changed files with 264 additions and 24 deletions

View File

@@ -5,6 +5,7 @@ import android.os.Bundle;
import com.ckkj.water.base.BaseFragment;
import com.ckkj.water.databinding.WaterCountFragmentLayoutBinding;
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.WaterPlanPresenter;
@@ -39,4 +40,9 @@ public class StatisticFragment extends BaseFragment<WaterCountFragmentLayoutBind
public void logOut(BaseBean bean) {
}
@Override
public void saveConfigSuccess(WaterPlanWeekEntity entity) {
}
}

View File

@@ -6,6 +6,7 @@ import com.ckkj.water.base.entity.MineUserInfoBean;
import com.ckkj.water.index.entity.IndexDeviceEntity;
import com.ckkj.water.login.entity.LoginEntity;
import com.ckkj.water.main.entity.CheckVersionEntity;
import com.ckkj.water.plan.entity.WaterPlanWeekEntity;
import com.ckkj.water.plate.entity.BaziResultBean;
import com.ckkj.water.plate.entity.BaziSaveSuccessEntity;
import com.ckkj.water.plate.entity.PaipanHistoryEntity;
@@ -64,6 +65,10 @@ public interface Request {
@PUT("app/v1/updataPassword")
Observable<BaseBean> updatePasswordByOld(@HeaderMap Map<String, String> headMap, @Body RequestBody requestBody);
//添加排程信息
@POST("app/v1/addschedule")
Observable<BaseBean<WaterPlanWeekEntity>> addSchedule(@HeaderMap Map<String, String> headMap, @Body RequestBody requestBody);
//解绑信息
// 示例:ids array[string]
//["2052921001527869441"]

View File

@@ -5,20 +5,28 @@ 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.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;
/**
* 添加浇水排程
*/
@@ -88,9 +96,34 @@ public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding
break;
case R.id.tv_bind:
WaterConfigFragment configFragment = (WaterConfigFragment) mFragmentList.get(0);
if (!configFragment.checkConfigFinish()) {
ToastUtil.showShort(mContext, "请完成配置");
return;
}else{
if(!configFragment.isConfigSave){
showDialogtext(mContext.getResources().getDrawable(R.mipmap.img_location), false, false,true,
"提示", "关联设备需要保存排程配置,是否继续?",
"取消", "继续", new BaseFragment.OnDialogClick() {
@Override
public void onCancelClick() {
}
@Override
public void onConfirmClick() {
configFragment.commitConfig();
}
});
}else{
ToastUtil.showShort(mContext, "继续");
viewBinding.tvConfig.setSelected(false);
viewBinding.tvBind.setSelected(true);
viewBinding.viewpage.setCurrentItem(1);
}
}
break;
@@ -111,4 +144,9 @@ public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding
public void logOut(BaseBean bean) {
}
@Override
public void saveConfigSuccess(WaterPlanWeekEntity entity) {
}
}

View File

@@ -79,4 +79,9 @@ public class BindDeviceFragment extends BaseFragment<PlanBindDeviceLayoutBinding
public void logOut(BaseBean bean) {
}
@Override
public void saveConfigSuccess(WaterPlanWeekEntity entity) {
}
}

View File

@@ -78,4 +78,9 @@ public class PlanDetailActivity extends BaseActivity<WaterPlanDetailLayoutBindin
public void logOut(BaseBean bean) {
}
@Override
public void saveConfigSuccess(WaterPlanWeekEntity entity) {
}
}

View File

@@ -29,12 +29,17 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* 配置信息页面
*/
public class WaterConfigFragment extends BaseFragment<WaterConfigFragmentLayoutBinding, WaterPlanPresenter>
implements WaterPlanContract.WaterPlanView {
private List<WaterPlanWeekEntity.DetailsBean> mConfigList = new ArrayList<>();
private WaterPlanWeekEntity mConfigEntity;
private WaterPlanWeekAdapter mWeekAdapter;
private String mPlanName = "";
public static boolean isConfigSave;
@Override
@@ -43,7 +48,7 @@ public class WaterConfigFragment extends BaseFragment<WaterConfigFragmentLayoutB
List<WaterPlanWeekEntity.DetailsBean> list = new ArrayList<>();
for(int i = 0; i < 7; i++){
WaterPlanWeekEntity.DetailsBean bean = new WaterPlanWeekEntity.DetailsBean();
bean.setWeekday(i);
bean.setWeekday(i + 1);
bean.setStatus("0");
bean.setWeekName(ZYTimeUtils.getWeekName(i));
list.add(bean);
@@ -56,7 +61,6 @@ public class WaterConfigFragment extends BaseFragment<WaterConfigFragmentLayoutB
private void initListener() {
setClick(viewBinding.tvCommit);
//
mWeekAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@Override
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
@@ -81,6 +85,39 @@ public class WaterConfigFragment extends BaseFragment<WaterConfigFragmentLayoutB
}
}
});
viewBinding.etPlanName.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(!TextUtils.isEmpty(s.toString())){
mPlanName = s.toString();
mConfigEntity.setName(s.toString());
}
}
});
}
public void onClick(View v){
switch (v.getId()){
case R.id.tv_commit:
if(checkConfigFinish()){
mPresenter.saveConfig(mConfigEntity);
}
break;
}
}
public void commitConfig(){
if(checkConfigFinish()){
mPresenter.saveConfig(mConfigEntity);
}
}
private void inputDuration(int position) {
@@ -124,7 +161,8 @@ public class WaterConfigFragment extends BaseFragment<WaterConfigFragmentLayoutB
TimePickerView pvTime = new TimePickerBuilder(mContext, new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {
mConfigEntity.getDetails().get(position).setStartTime(ZYTimeUtils.getStrTimeData_H_M(date));
//用于提交接口
mConfigEntity.getDetails().get(position).setStartTime(ZYTimeUtils.getStrTimeData(date));
mWeekAdapter.notifyItemChanged(position);
}
}).setType(times)
@@ -139,20 +177,13 @@ public class WaterConfigFragment extends BaseFragment<WaterConfigFragmentLayoutB
view.setOnClickListener(this::onClick);
}
public void onClick(View v){
switch (v.getId()){
case R.id.tv_select_time:
break;
case R.id.tv_commit:
if(checkConfigFinish()){
ToastUtil.showShort(mContext,"提交");
}
break;
}
}
private boolean checkConfigFinish() {
/**
* 检查配置信息是否完成
* @return
*/
public boolean checkConfigFinish() {
if(TextUtils.isEmpty(viewBinding.etPlanName.getText().toString())){
ToastUtil.showShort(mContext,getString(R.string.plan_name_text_empty_hint));
return false;
@@ -185,6 +216,12 @@ public class WaterConfigFragment extends BaseFragment<WaterConfigFragmentLayoutB
return true;
}
@Override
public void saveConfigSuccess(WaterPlanWeekEntity entity) {
ToastUtil.showShort(mContext, "排程新增成功");
isConfigSave = true;
}
@Override
public WaterPlanPresenter createPresenter() {
@@ -205,4 +242,6 @@ public class WaterConfigFragment extends BaseFragment<WaterConfigFragmentLayoutB
public void logOut(BaseBean bean) {
}
}

View File

@@ -89,4 +89,9 @@ public class WaterPlanFragment extends BaseFragment<WaterPlanFragmentBinding, Wa
public void logOut(BaseBean bean) {
}
@Override
public void saveConfigSuccess(WaterPlanWeekEntity entity) {
}
}

View File

@@ -17,6 +17,7 @@ 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.ArrayList;
import java.util.List;
@@ -42,7 +43,7 @@ public class WaterPlanWeekAdapter extends BaseQuickAdapter<WaterPlanWeekEntity.D
helper.setText(R.id.tv_week_name,item.getWeekName());
if(!TextUtils.isEmpty(item.getStartTime())){
helper.setText(R.id.tv_select_time,item.getStartTime());
helper.setText(R.id.tv_select_time, ZYTimeUtils.yyyyMMdd2HH_mm(item.getStartTime()));
}else{
helper.setText(R.id.tv_select_time,"");
tvStartTime.setHint(mContext.getString(R.string.select_water_time));

View File

@@ -24,7 +24,7 @@ public class WaterPlanWeekEntity implements Serializable {
private String userId;
private String name;
private Object deviceIds;
private String status;
private String status = "1";
private List<DetailsBean> details;
@NoArgsConstructor
@@ -53,12 +53,12 @@ public class WaterPlanWeekEntity implements Serializable {
private String updateTime;
private String id;
private String scheduleId;
private int weekday;
private int weekday = 1;
private String weekName;
private String startTime;
private int durationMin = 0;
private Object zones;
private String triggerType;
private String status;
private String triggerType = "0";
private String status = "1";
}
}

View File

@@ -1,6 +1,9 @@
package com.ckkj.water.plan.mvp;
import com.ckkj.water.base.IView;
import com.ckkj.water.plan.entity.WaterPlanWeekEntity;
import org.json.JSONObject;
public class WaterPlanContract {
public interface CallBack<T> {
@@ -8,8 +11,12 @@ public class WaterPlanContract {
void fail(String msg);
}
public interface DataModel{
//新增排程
void saveConfig(JSONObject json,CallBack callBack);
}
public interface WaterPlanView extends IView {
//排程保存成功g
void saveConfigSuccess(WaterPlanWeekEntity entity);
}
}

View File

@@ -1,7 +1,58 @@
package com.ckkj.water.plan.mvp;
import com.ckkj.water.device.mvp.DeviceContract;
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;
import org.json.JSONObject;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
public class WaterPlanImpl implements WaterPlanContract.DataModel{
/**
* 新增排程
* @param json
* @param callBack
*/
@Override
public void saveConfig(JSONObject json, WaterPlanContract.CallBack callBack) {
try {
NetWorkManager.getRequest().addSchedule(NetWorkManager.getToken(),NetWorkManager.toRequestBody(json))
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseBean<WaterPlanWeekEntity>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull BaseBean<WaterPlanWeekEntity> bean) {
if (bean.getCode() == 200) {
callBack.success(bean.getData());
} else {
callBack.fail(bean.getMessage());
}
}
@Override
public void onError(@NonNull Throwable e) {
callBack.fail(e.getMessage());
}
@Override
public void onComplete() {
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@@ -1,8 +1,17 @@
package com.ckkj.water.plan.mvp;
import com.ckkj.water.AppConfig;
import com.ckkj.water.base.BasePresenter;
import com.ckkj.water.device.mvp.DeviceContract;
import com.ckkj.water.device.mvp.DeviceImpl;
import com.ckkj.water.login.mvp.LoginContract;
import com.ckkj.water.login.mvp.LoginPresenter;
import com.ckkj.water.network.BaseBean;
import com.ckkj.water.plan.entity.WaterPlanWeekEntity;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class WaterPlanPresenter extends BasePresenter<WaterPlanContract.WaterPlanView> {
private WaterPlanImpl impl;
@@ -10,4 +19,45 @@ public class WaterPlanPresenter extends BasePresenter<WaterPlanContract.WaterPla
public WaterPlanPresenter(WaterPlanImpl impl) {
this.impl = impl;
}
/**
* 保存排程信息
* @param entity
*/
public void saveConfig(WaterPlanWeekEntity entity) {
try {
JSONObject json = new JSONObject();
json.put("name", entity.getName());
json.put("status", entity.getStatus());
JSONArray array = new JSONArray();
for(WaterPlanWeekEntity.DetailsBean detailsBean : entity.getDetails()){
JSONObject jsonDetails = new JSONObject();
jsonDetails.put("weekday", detailsBean.getWeekday());
jsonDetails.put("startTime", detailsBean.getStartTime());
jsonDetails.put("durationMin", detailsBean.getDurationMin());
jsonDetails.put("triggerType", detailsBean.getTriggerType());
jsonDetails.put("status", detailsBean.getStatus());
array.put(jsonDetails);
}
json.put("details", array);
impl.saveConfig(json, new WaterPlanContract.CallBack<WaterPlanWeekEntity>() {
@Override
public void success(WaterPlanWeekEntity bean) {
if(WaterPlanPresenter.this.getView() != null){
WaterPlanPresenter.this.getView().saveConfigSuccess(bean);
}
}
@Override
public void fail(String msg) {
if(WaterPlanPresenter.this.getView() != null){
WaterPlanPresenter.this.getView().showError(msg);
}
}
});
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
}

View File

@@ -229,10 +229,38 @@ public class ZYTimeUtils {
public static String getStrTimeData(Date date) {
String timeString = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
timeString = sdf.format(new Date());//单位秒
timeString = sdf.format(date);//单位秒
return timeString;
}
/**
* yyyy-MM-dd HH:mm 转换为 HH:mm显示
* @param date
* @return
*/
public static String yyyyMMdd2HH_mm(String date) {
if (TextUtils.isEmpty(date)) {
return "";
}
try {
SimpleDateFormat sourceFormat =
new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault());
SimpleDateFormat targetFormat =
new SimpleDateFormat("HH:mm", Locale.getDefault());
Date parseDate = sourceFormat.parse(date);
return parseDate == null ? "" : targetFormat.format(parseDate);
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
public static String getStrTimeData_H_M(Date date) {
String timeString = null;
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");