更新后新增排程提交

This commit is contained in:
fengjignqi
2026-05-29 15:10:40 +08:00
parent a8b9aabf20
commit 5a42515f77
3 changed files with 134 additions and 22 deletions

View File

@@ -84,12 +84,12 @@ public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding
initListener(); initListener();
// 编辑模式下,延迟传递数据给 WaterConfigFragment等 viewBinding 初始化完成后调用 // 编辑模式下,延迟传递数据给 WaterConfigFragment等 viewBinding 初始化完成后调用
// if (mIsEditMode && mEditEntity != null) { if (mIsEditMode && mEditEntity != null) {
// viewBinding.viewpage.post(() -> { viewBinding.viewpage.post(() -> {
// WaterConfigFragment configFragment = (WaterConfigFragment) mFragmentList.get(0); WaterConfigFragment_copy configFragment = (WaterConfigFragment_copy) mFragmentList.get(0);
// configFragment.setEditEntity(mEditEntity); configFragment.setEditEntity(mEditEntity);
// }); });
// } }
} }
private void initListener() { private void initListener() {
@@ -128,8 +128,8 @@ public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding
@Override @Override
public void onConfirmClick() { public void onConfirmClick() {
// 保存配置后切换 // 更新配置
configFragment.commitConfig(); configFragment.updateConfig();
} }
}); });
return; return;

View File

@@ -56,6 +56,8 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
private WaterPlanTimeDataAdapter mTimeAdapter; private WaterPlanTimeDataAdapter mTimeAdapter;
private RecyclerView.ItemDecoration itemDecoration; private RecyclerView.ItemDecoration itemDecoration;
private boolean isConfigSubmitted = false; private boolean isConfigSubmitted = false;
//当下是否编辑模式
private boolean mIsEditMode = false;
@@ -109,6 +111,7 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
mWeekAdapter.setSelPos(position); mWeekAdapter.setSelPos(position);
List<WaterPlanWeekEntity.TimeDataBean> timeList = weekList.get(position).getTimeData(); List<WaterPlanWeekEntity.TimeDataBean> timeList = weekList.get(position).getTimeData();
mTimeAdapter.setNewData(timeList); mTimeAdapter.setNewData(timeList);
viewBinding.switchButton.setChecked(weekList.get(position).getStatus().equals("1"));
} }
}); });
//周期对应的 时间配置 //周期对应的 时间配置
@@ -172,7 +175,12 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
break; break;
case R.id.tv_commit: case R.id.tv_commit:
validateAndSave(); // 如果已经保存过mRemoteEntity 不为空),则走更新逻辑;否则走新增逻辑
if (mRemoteEntity != null) {
updateConfig();
} else {
validateAndSave();
}
break; break;
} }
} }
@@ -190,10 +198,88 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
} }
/** /**
* 校验配置并保存 * 更新配置(用于数据变更后调用)
* @return true表示校验通过并已提交保存false表示校验失败 * @return true表示校验通过并已提交更新false表示校验失败
*/ */
private boolean validateAndSave() { public boolean updateConfig() {
if (!validateConfig()) {
return false;
}
// 调用更新接口
if(mLocalEntity != null){
mPresenter.updateConfig(mLocalEntity);
}
return true;
}
/**
* 设置编辑模式的排程数据
* @param entity 从详情页传来的排程数据
*/
public void setEditEntity(WaterPlanWeekEntity entity) {
if (entity == null) {
return;
}
mIsEditMode = true;
// 深拷贝数据到 mConfigEntity用于本地编辑
mLocalEntity = cloneEntity(entity);
// 保存远程原始数据,用于后续变化检测
mRemoteEntity = entity;
isConfigSubmitted = true;
// 初始化 UI
viewBinding.editPlanName.setText(entity.getName());
// 更新周配置列表的显示,使用 mConfigEntity.getDetails() 保证数据一致
if (mLocalEntity.getDetails() != null) {
weekList = mLocalEntity.getDetails();
mWeekAdapter.setNewData(mLocalEntity.getDetails());
mTimeAdapter.setNewData(weekList.get(mWeekAdapter.getmPos()).getTimeData());
}
}
/**
* 深拷贝 WaterPlanWeekEntity
*/
private WaterPlanWeekEntity cloneEntity(WaterPlanWeekEntity source) {
if (source == null) {
return null;
}
WaterPlanWeekEntity target = new WaterPlanWeekEntity();
target.setId(source.getId());
target.setName(source.getName());
target.setStatus(source.getStatus());
if (source.getDetails() != null) {
List<WaterPlanWeekEntity.DetailsBean> detailsList = new ArrayList<>();
for (WaterPlanWeekEntity.DetailsBean bean : source.getDetails()) {
WaterPlanWeekEntity.DetailsBean newBean = new WaterPlanWeekEntity.DetailsBean();
List<WaterPlanWeekEntity.TimeDataBean> timeDataList = new ArrayList<>();
for(WaterPlanWeekEntity.TimeDataBean timeDataBean : bean.getTimeData()){
WaterPlanWeekEntity.TimeDataBean newTimeDataBean = new WaterPlanWeekEntity.TimeDataBean();
newTimeDataBean.setStartTime(ZYTimeUtils.formatHHmm(timeDataBean.getStartTime()));
newTimeDataBean.setDurationMin(timeDataBean.getDurationMin());
timeDataList.add(newTimeDataBean);
}
newBean.setTimeData(timeDataList);
newBean.setId(bean.getId());
newBean.setWeekday(bean.getWeekday());
newBean.setWeekName(ZYTimeUtils.getWeekName(bean.getWeekday() - 1));
newBean.setStatus(bean.getStatus());
detailsList.add(newBean);
}
target.setDetails(detailsList);
}
return target;
}
/**
* 校验配置
* @return true表示校验通过false表示校验失败
*/
private boolean validateConfig() {
if(TextUtils.isEmpty(viewBinding.editPlanName.getText().toString())){ if(TextUtils.isEmpty(viewBinding.editPlanName.getText().toString())){
ToastUtil.showShort(mContext,getString(R.string.plan_name_text_empty_hint)); ToastUtil.showShort(mContext,getString(R.string.plan_name_text_empty_hint));
return false; return false;
@@ -222,6 +308,17 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
ToastUtil.showShort(mContext, conflictMsg); ToastUtil.showShort(mContext, conflictMsg);
return false; return false;
} }
return true;
}
/**
* 校验配置并保存(新增)
* @return true表示校验通过并已提交保存false表示校验失败
*/
private boolean validateAndSave() {
if (!validateConfig()) {
return false;
}
if(mLocalEntity != null){ if(mLocalEntity != null){
mPresenter.saveConfig(mLocalEntity); mPresenter.saveConfig(mLocalEntity);
return true; return true;
@@ -487,6 +584,10 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
} }
}; };
/**
* 新增
* @param entity
*/
@Override @Override
public void saveConfigSuccess(WaterPlanWeekEntity entity) { public void saveConfigSuccess(WaterPlanWeekEntity entity) {
ToastUtil.showShort(mContext, "排程新增成功"); ToastUtil.showShort(mContext, "排程新增成功");
@@ -497,6 +598,7 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
if (entity.getDetails() != null && mLocalEntity.getDetails() != null) { if (entity.getDetails() != null && mLocalEntity.getDetails() != null) {
for (int i = 0; i < entity.getDetails().size() && i < mLocalEntity.getDetails().size(); i++) { for (int i = 0; i < entity.getDetails().size() && i < mLocalEntity.getDetails().size(); i++) {
mLocalEntity.getDetails().get(i).setId(entity.getDetails().get(i).getId()); mLocalEntity.getDetails().get(i).setId(entity.getDetails().get(i).getId());
mLocalEntity.getDetails().get(i).setStatus(entity.getDetails().get(i).getStatus());
} }
} }
//接口请求之后返回的数据,方便后面做对比 //接口请求之后返回的数据,方便后面做对比
@@ -507,6 +609,17 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
} }
/**
* 更新
* @param entity
*/
@Override
public void updateConfigSuccess(WaterPlanWeekEntity entity) {
ToastUtil.showShort(mContext, "排程更新成功");
mRemoteEntity = entity;
}
// private List<WaterPlanWeekEntity.DeviceEntity> getSelectedDevices() { // private List<WaterPlanWeekEntity.DeviceEntity> getSelectedDevices() {
// if (getActivity() instanceof AddWaterPlanActivity) { // if (getActivity() instanceof AddWaterPlanActivity) {
// return ((AddWaterPlanActivity) getActivity()).getSelectedDevices(); // return ((AddWaterPlanActivity) getActivity()).getSelectedDevices();
@@ -539,13 +652,6 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
} }
@Override
public void updateConfigSuccess(WaterPlanWeekEntity entity) {
}
@Override @Override
public void updatePlanStatusSuccess(BaseBean bean, String status) { public void updatePlanStatusSuccess(BaseBean bean, String status) {

View File

@@ -107,12 +107,18 @@ public class WaterPlanPresenter extends BasePresenter<WaterPlanContract.WaterPla
JSONArray array = new JSONArray(); JSONArray array = new JSONArray();
for(WaterPlanWeekEntity.DetailsBean detailsBean : entity.getDetails()){ for(WaterPlanWeekEntity.DetailsBean detailsBean : entity.getDetails()){
JSONObject jsonDetails = new JSONObject(); JSONObject jsonDetails = new JSONObject();
jsonDetails.put("id", detailsBean.getId());
jsonDetails.put("weekday", detailsBean.getWeekday()); jsonDetails.put("weekday", detailsBean.getWeekday());
jsonDetails.put("startTime", detailsBean.getStartTime());
jsonDetails.put("durationMin", detailsBean.getDurationMin());
jsonDetails.put("triggerType", detailsBean.getTriggerType()); jsonDetails.put("triggerType", detailsBean.getTriggerType());
jsonDetails.put("status", detailsBean.getStatus()); jsonDetails.put("status", detailsBean.getStatus());
jsonDetails.put("id", detailsBean.getId());
JSONArray timeArray = new JSONArray();
for(WaterPlanWeekEntity.TimeDataBean timeDataBean : detailsBean.getTimeData()){
JSONObject jsonTime = new JSONObject();
jsonTime.put("startTime", timeDataBean.getStartTime());
jsonTime.put("durationMin", timeDataBean.getDurationMin());
timeArray.put(jsonTime);
}
jsonDetails.put("timeData", timeArray);
array.put(jsonDetails); array.put(jsonDetails);
} }
json.put("details", array); json.put("details", array);