diff --git a/app/src/main/java/com/ckkj/water/plan/AddWaterPlanActivity.java b/app/src/main/java/com/ckkj/water/plan/AddWaterPlanActivity.java index ad6d948..f2ef839 100644 --- a/app/src/main/java/com/ckkj/water/plan/AddWaterPlanActivity.java +++ b/app/src/main/java/com/ckkj/water/plan/AddWaterPlanActivity.java @@ -116,6 +116,25 @@ public class AddWaterPlanActivity extends BaseActivity 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; + validateAndSave(); break; } } @@ -212,7 +181,160 @@ public class WaterConfigFragment_copy extends BaseFragment 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 localDetails = mLocalEntity.getDetails(); + List 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 localTimeData = localDetail.getTimeData(); + List 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; } /**