更新后新增排程提交
This commit is contained in:
@@ -84,12 +84,12 @@ public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding
|
||||
initListener();
|
||||
|
||||
// 编辑模式下,延迟传递数据给 WaterConfigFragment,等 viewBinding 初始化完成后调用
|
||||
// if (mIsEditMode && mEditEntity != null) {
|
||||
// viewBinding.viewpage.post(() -> {
|
||||
// WaterConfigFragment configFragment = (WaterConfigFragment) mFragmentList.get(0);
|
||||
// configFragment.setEditEntity(mEditEntity);
|
||||
// });
|
||||
// }
|
||||
if (mIsEditMode && mEditEntity != null) {
|
||||
viewBinding.viewpage.post(() -> {
|
||||
WaterConfigFragment_copy configFragment = (WaterConfigFragment_copy) mFragmentList.get(0);
|
||||
configFragment.setEditEntity(mEditEntity);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void initListener() {
|
||||
@@ -128,8 +128,8 @@ public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding
|
||||
|
||||
@Override
|
||||
public void onConfirmClick() {
|
||||
// 保存配置后切换
|
||||
configFragment.commitConfig();
|
||||
// 更新配置
|
||||
configFragment.updateConfig();
|
||||
}
|
||||
});
|
||||
return;
|
||||
|
||||
@@ -56,6 +56,8 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
|
||||
private WaterPlanTimeDataAdapter mTimeAdapter;
|
||||
private RecyclerView.ItemDecoration itemDecoration;
|
||||
private boolean isConfigSubmitted = false;
|
||||
//当下是否编辑模式
|
||||
private boolean mIsEditMode = false;
|
||||
|
||||
|
||||
|
||||
@@ -109,6 +111,7 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
|
||||
mWeekAdapter.setSelPos(position);
|
||||
List<WaterPlanWeekEntity.TimeDataBean> timeList = weekList.get(position).getTimeData();
|
||||
mTimeAdapter.setNewData(timeList);
|
||||
viewBinding.switchButton.setChecked(weekList.get(position).getStatus().equals("1"));
|
||||
}
|
||||
});
|
||||
//周期对应的 时间配置
|
||||
@@ -172,7 +175,12 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
|
||||
break;
|
||||
|
||||
case R.id.tv_commit:
|
||||
validateAndSave();
|
||||
// 如果已经保存过(mRemoteEntity 不为空),则走更新逻辑;否则走新增逻辑
|
||||
if (mRemoteEntity != null) {
|
||||
updateConfig();
|
||||
} else {
|
||||
validateAndSave();
|
||||
}
|
||||
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())){
|
||||
ToastUtil.showShort(mContext,getString(R.string.plan_name_text_empty_hint));
|
||||
return false;
|
||||
@@ -222,6 +308,17 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
|
||||
ToastUtil.showShort(mContext, conflictMsg);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验配置并保存(新增)
|
||||
* @return true表示校验通过并已提交保存,false表示校验失败
|
||||
*/
|
||||
private boolean validateAndSave() {
|
||||
if (!validateConfig()) {
|
||||
return false;
|
||||
}
|
||||
if(mLocalEntity != null){
|
||||
mPresenter.saveConfig(mLocalEntity);
|
||||
return true;
|
||||
@@ -487,6 +584,10 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增
|
||||
* @param entity
|
||||
*/
|
||||
@Override
|
||||
public void saveConfigSuccess(WaterPlanWeekEntity entity) {
|
||||
ToastUtil.showShort(mContext, "排程新增成功");
|
||||
@@ -497,6 +598,7 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
|
||||
if (entity.getDetails() != null && mLocalEntity.getDetails() != null) {
|
||||
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).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() {
|
||||
// if (getActivity() instanceof AddWaterPlanActivity) {
|
||||
// return ((AddWaterPlanActivity) getActivity()).getSelectedDevices();
|
||||
@@ -539,13 +652,6 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void updateConfigSuccess(WaterPlanWeekEntity entity) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updatePlanStatusSuccess(BaseBean bean, String status) {
|
||||
|
||||
|
||||
@@ -107,12 +107,18 @@ public class WaterPlanPresenter extends BasePresenter<WaterPlanContract.WaterPla
|
||||
JSONArray array = new JSONArray();
|
||||
for(WaterPlanWeekEntity.DetailsBean detailsBean : entity.getDetails()){
|
||||
JSONObject jsonDetails = new JSONObject();
|
||||
jsonDetails.put("id", detailsBean.getId());
|
||||
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());
|
||||
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);
|
||||
}
|
||||
json.put("details", array);
|
||||
|
||||
Reference in New Issue
Block a user