更新后新增排程提交

This commit is contained in:
fengjignqi
2026-05-29 10:47:02 +08:00
parent e1d13665ab
commit a8b9aabf20
2 changed files with 190 additions and 36 deletions

View File

@@ -116,6 +116,25 @@ public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding
case R.id.tv_bind: case R.id.tv_bind:
WaterConfigFragment_copy configFragment = (WaterConfigFragment_copy) mFragmentList.get(0); WaterConfigFragment_copy configFragment = (WaterConfigFragment_copy) mFragmentList.get(0);
// 检查是否有未保存的数据变更
if (configFragment.hasDataChanged()) {
showDialogtext(null, false, false, true,
"提示", "数据已发生变更,是否保存?",
getString(R.string.cancel_text), "保存", new BaseFragment.OnDialogClick() {
@Override
public void onCancelClick() {
}
@Override
public void onConfirmClick() {
// 保存配置后切换
configFragment.commitConfig();
}
});
return;
}
if (!configFragment.isConfigSubmitted()) { if (!configFragment.isConfigSubmitted()) {
showDialogtext(null, false, false, true, showDialogtext(null, false, false, true,
"提示", "关联设备需要保存排程配置,是否继续?", "提示", "关联设备需要保存排程配置,是否继续?",
@@ -132,9 +151,10 @@ public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding
return; return;
} }
viewBinding.tvConfig.setSelected(false); proceedToBindDevice();
viewBinding.tvBind.setSelected(true); break;
viewBinding.viewpage.setCurrentItem(1);
default:
break; break;
@@ -158,6 +178,18 @@ public class AddWaterPlanActivity extends BaseActivity<AddWaterPlanLayoutBinding
bindDeviceFragment.setPlanEntity(entity); bindDeviceFragment.setPlanEntity(entity);
} }
/**
* 切换到绑定设备页面
*/
private void proceedToBindDevice() {
WaterConfigFragment_copy configFragment = (WaterConfigFragment_copy) mFragmentList.get(0);
WaterPlanWeekEntity entity = mIsEditMode ? mEditEntity : mNewAddEntity;
if (entity == null) {
entity = configFragment.getRemoteEntity();
}
selectTabBind(entity);
}
public void onConfigSaved(WaterPlanWeekEntity entity) { public void onConfigSaved(WaterPlanWeekEntity entity) {
mNewAddEntity = entity; mNewAddEntity = entity;
selectTabBind(entity); selectTabBind(entity);

View File

@@ -172,38 +172,7 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
break; break;
case R.id.tv_commit: case R.id.tv_commit:
if(TextUtils.isEmpty(viewBinding.editPlanName.getText().toString())){ validateAndSave();
ToastUtil.showShort(mContext,getString(R.string.plan_name_text_empty_hint));
return;
}
// 检查七天的所有时间配置是否全部为空
boolean allTimeEmpty = true;
for (WaterPlanWeekEntity.DetailsBean dayBean : weekList) {
List<WaterPlanWeekEntity.TimeDataBean> timeDataList = dayBean.getTimeData();
if (timeDataList != null && !timeDataList.isEmpty()) {
for (WaterPlanWeekEntity.TimeDataBean timeData : timeDataList) {
if (!TextUtils.isEmpty(timeData.getStartTime()) && timeData.getDurationMin() > 0) {
allTimeEmpty = false;
break;
}
}
}
if (!allTimeEmpty) break;
}
if (allTimeEmpty) {
ToastUtil.showShort(mContext, "请至少配置一天的时间");
return;
}
// 校验每一天内的时间是否有冲突
String conflictMsg = checkTimeConflict();
if (conflictMsg != null) {
ToastUtil.showShort(mContext, conflictMsg);
return;
}
if(mLocalEntity != null){
mPresenter.saveConfig(mLocalEntity);
}
// isConfigSubmitted = true;
break; break;
} }
} }
@@ -212,7 +181,160 @@ public class WaterConfigFragment_copy extends BaseFragment<WaterConfigFragmentLa
return isConfigSubmitted; return isConfigSubmitted;
} }
public void commitConfig() { /**
* 校验并保存配置(供外部调用)
* @return true表示校验通过并已提交保存false表示校验失败
*/
public boolean commitConfig() {
return validateAndSave();
}
/**
* 校验配置并保存
* @return true表示校验通过并已提交保存false表示校验失败
*/
private boolean validateAndSave() {
if(TextUtils.isEmpty(viewBinding.editPlanName.getText().toString())){
ToastUtil.showShort(mContext,getString(R.string.plan_name_text_empty_hint));
return false;
}
// 检查七天的所有时间配置是否全部为空
boolean allTimeEmpty = true;
for (WaterPlanWeekEntity.DetailsBean dayBean : weekList) {
List<WaterPlanWeekEntity.TimeDataBean> timeDataList = dayBean.getTimeData();
if (timeDataList != null && !timeDataList.isEmpty()) {
for (WaterPlanWeekEntity.TimeDataBean timeData : timeDataList) {
if (!TextUtils.isEmpty(timeData.getStartTime()) && timeData.getDurationMin() > 0) {
allTimeEmpty = false;
break;
}
}
}
if (!allTimeEmpty) break;
}
if (allTimeEmpty) {
ToastUtil.showShort(mContext, "请至少配置一天的时间");
return false;
}
// 校验每一天内的时间是否有冲突
String conflictMsg = checkTimeConflict();
if (conflictMsg != null) {
ToastUtil.showShort(mContext, conflictMsg);
return false;
}
if(mLocalEntity != null){
mPresenter.saveConfig(mLocalEntity);
return true;
}
return false;
}
/**
* 获取远程实体用于AddWaterPlanActivity比对
* @return mRemoteEntity
*/
public WaterPlanWeekEntity getRemoteEntity() {
return mRemoteEntity;
}
/**
* 获取本地实体用于AddWaterPlanActivity比对
* @return mLocalEntity
*/
public WaterPlanWeekEntity getLocalEntity() {
return mLocalEntity;
}
/**
* 检查本地数据是否与远程数据有变更
* @return true表示有变更false表示无变更
*/
public boolean hasDataChanged() {
if (mRemoteEntity == null || mLocalEntity == null) {
return false;
}
// 比对排程名称
String localName = mLocalEntity.getName();
String remoteName = mRemoteEntity.getName();
if (!TextUtils.isEmpty(localName) && !localName.equals(remoteName)) {
return true;
}
// 比对排程状态
String localStatus = mLocalEntity.getStatus();
String remoteStatus = mRemoteEntity.getStatus();
if (!TextUtils.isEmpty(localStatus) && !localStatus.equals(remoteStatus)) {
return true;
}
// 比对 details 列表
List<WaterPlanWeekEntity.DetailsBean> localDetails = mLocalEntity.getDetails();
List<WaterPlanWeekEntity.DetailsBean> remoteDetails = mRemoteEntity.getDetails();
if (localDetails == null && remoteDetails == null) {
return false;
}
if (localDetails == null || remoteDetails == null) {
return true;
}
if (localDetails.size() != remoteDetails.size()) {
return true;
}
// 逐个比对每个 DetailsBean
for (int i = 0; i < localDetails.size(); i++) {
WaterPlanWeekEntity.DetailsBean localDetail = localDetails.get(i);
WaterPlanWeekEntity.DetailsBean remoteDetail = remoteDetails.get(i);
// 比对 status
String localDetailStatus = localDetail.getStatus();
String remoteDetailStatus = remoteDetail.getStatus();
if (!TextUtils.isEmpty(localDetailStatus) && !localDetailStatus.equals(remoteDetailStatus)) {
return true;
}
// 比对 triggerType
String localTriggerType = localDetail.getTriggerType();
String remoteTriggerType = remoteDetail.getTriggerType();
if (!TextUtils.isEmpty(localTriggerType) && !localTriggerType.equals(remoteTriggerType)) {
return true;
}
// 比对 timeData 列表
List<WaterPlanWeekEntity.TimeDataBean> localTimeData = localDetail.getTimeData();
List<WaterPlanWeekEntity.TimeDataBean> remoteTimeData = remoteDetail.getTimeData();
if (localTimeData == null && remoteTimeData == null) {
continue;
}
if (localTimeData == null || remoteTimeData == null) {
return true;
}
if (localTimeData.size() != remoteTimeData.size()) {
return true;
}
// 逐个比对 TimeDataBean
for (int j = 0; j < localTimeData.size(); j++) {
WaterPlanWeekEntity.TimeDataBean localTime = localTimeData.get(j);
WaterPlanWeekEntity.TimeDataBean remoteTime = remoteTimeData.get(j);
// 比对 startTime
String localStartTime = localTime.getStartTime();
String remoteStartTime = remoteTime.getStartTime();
if (!TextUtils.isEmpty(localStartTime) && !localStartTime.equals(remoteStartTime)) {
return true;
}
// 比对 durationMin
if (localTime.getDurationMin() != remoteTime.getDurationMin()) {
return true;
}
}
}
return false;
} }
/** /**