更新后新增排程提交
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user