From a8b9aabf2051bc60fc16910887bb15e2adc3a6e4 Mon Sep 17 00:00:00 2001 From: fengjignqi <15192412330@163.com> Date: Fri, 29 May 2026 10:47:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=90=8E=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=8E=92=E7=A8=8B=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ckkj/water/plan/AddWaterPlanActivity.java | 38 +++- .../water/plan/WaterConfigFragment_copy.java | 188 +++++++++++++++--- 2 files changed, 190 insertions(+), 36 deletions(-) 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; } /**