diff --git a/.idea/misc.xml b/.idea/misc.xml index 687c4c4..9c582b0 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -33,6 +33,7 @@ + @@ -40,6 +41,7 @@ + diff --git a/.idea/misc.xml b/.idea/misc.xml index 687c4c4..9c582b0 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -33,6 +33,7 @@ + @@ -40,6 +41,7 @@ + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ed1a0d3..41f20d8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -83,7 +83,7 @@ - + diff --git a/.idea/misc.xml b/.idea/misc.xml index 687c4c4..9c582b0 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -33,6 +33,7 @@ + @@ -40,6 +41,7 @@ + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ed1a0d3..41f20d8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -83,7 +83,7 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleanResultListActivity.java deleted file mode 100644 index 969426e..0000000 --- a/app/src/main/java/com/casic/dcms/mvvm/view/CleanResultListActivity.java +++ /dev/null @@ -1,199 +0,0 @@ -package com.casic.dcms.mvvm.view; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.text.TextUtils; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.databinding.ActivityCleanListBinding; -import com.casic.dcms.mvvm.model.CleanRecordBean; -import com.casic.dcms.mvvm.vm.ToiletViewModel; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; -import com.pengxh.androidx.lite.utils.WeakReferenceHandler; -import com.pengxh.androidx.lite.vm.LoadState; -import com.pengxh.androidx.lite.widget.EasyToast; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.util.ArrayList; -import java.util.List; - -public class CleanResultListActivity extends AndroidxBaseActivity { - - private final Context context = CleanResultListActivity.this; - private ToiletViewModel toiletViewModel; - private List dataBeans = new ArrayList<>(); - private RecordListAdapter adapter; - private WeakReferenceHandler weakReferenceHandler; - private int pageIndex = 1; - private String start; - private String end; - private boolean isRefresh = false; - private boolean isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("保洁作业记录"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(callback); - toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class); - toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - } - - @Override - protected void initEvent() { - viewBinding.calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - new DatePopupWindow.Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), view) - .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 - .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() { - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) { - start = startDate; - end = endDate; - - startGroup = startGroupPosition; //开始月份位置 - startChild = startChildPosition; //开始对应月份中日的位置 - endGroup = endGroupPosition; //结束月份位置 - endChild = endChildPosition; //结束对应月份中日的位置 - viewBinding.dateView.setText(startDate + "~" + endDate); - obtainCleanRecordList(); - } - }).builder(); - } - }); - viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - obtainCleanRecordList(); - } - }); - viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - obtainCleanRecordList(); - } - }); - - toiletViewModel.cleanRecordModel.observe(this, new Observer() { - @Override - public void onChanged(CleanRecordBean resultBean) { - if (resultBean.getCode() == 200) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear(); //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - EasyToast.show(context, "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - }); - - toiletViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - OtherUtils.showLoadingDialog(context, "查询记录中,请稍后"); - } else { - OtherUtils.dismissLoadingDialog(); - } - } - }); - } - - private void obtainCleanRecordList() { - toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex); - } - - private final Handler.Callback callback = msg -> { - if (msg.what == 20210601) { - if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (dataBeans.size() == 0) { - viewBinding.emptyView.show(false, "抱歉,没有查到您的保洁工作记录", null, "刷新", new View.OnClickListener() { - @Override - public void onClick(View v) { - pageIndex = 1; - obtainCleanRecordList(); - } - }); - } else { - viewBinding.emptyView.hide(); - adapter = new RecordListAdapter(context, dataBeans); - viewBinding.recordRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = dataBeans.get(position); - Intent intent = new Intent(context, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - EasyToast.show(context, "经度异常"); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - EasyToast.show(context, "经度异常"); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - startActivity(intent); - } - }); - } - } - } - return true; - }; -} \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 687c4c4..9c582b0 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -33,6 +33,7 @@ + @@ -40,6 +41,7 @@ + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ed1a0d3..41f20d8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -83,7 +83,7 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleanResultListActivity.java deleted file mode 100644 index 969426e..0000000 --- a/app/src/main/java/com/casic/dcms/mvvm/view/CleanResultListActivity.java +++ /dev/null @@ -1,199 +0,0 @@ -package com.casic.dcms.mvvm.view; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.text.TextUtils; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.databinding.ActivityCleanListBinding; -import com.casic.dcms.mvvm.model.CleanRecordBean; -import com.casic.dcms.mvvm.vm.ToiletViewModel; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; -import com.pengxh.androidx.lite.utils.WeakReferenceHandler; -import com.pengxh.androidx.lite.vm.LoadState; -import com.pengxh.androidx.lite.widget.EasyToast; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.util.ArrayList; -import java.util.List; - -public class CleanResultListActivity extends AndroidxBaseActivity { - - private final Context context = CleanResultListActivity.this; - private ToiletViewModel toiletViewModel; - private List dataBeans = new ArrayList<>(); - private RecordListAdapter adapter; - private WeakReferenceHandler weakReferenceHandler; - private int pageIndex = 1; - private String start; - private String end; - private boolean isRefresh = false; - private boolean isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("保洁作业记录"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(callback); - toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class); - toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - } - - @Override - protected void initEvent() { - viewBinding.calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - new DatePopupWindow.Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), view) - .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 - .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() { - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) { - start = startDate; - end = endDate; - - startGroup = startGroupPosition; //开始月份位置 - startChild = startChildPosition; //开始对应月份中日的位置 - endGroup = endGroupPosition; //结束月份位置 - endChild = endChildPosition; //结束对应月份中日的位置 - viewBinding.dateView.setText(startDate + "~" + endDate); - obtainCleanRecordList(); - } - }).builder(); - } - }); - viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - obtainCleanRecordList(); - } - }); - viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - obtainCleanRecordList(); - } - }); - - toiletViewModel.cleanRecordModel.observe(this, new Observer() { - @Override - public void onChanged(CleanRecordBean resultBean) { - if (resultBean.getCode() == 200) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear(); //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - EasyToast.show(context, "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - }); - - toiletViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - OtherUtils.showLoadingDialog(context, "查询记录中,请稍后"); - } else { - OtherUtils.dismissLoadingDialog(); - } - } - }); - } - - private void obtainCleanRecordList() { - toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex); - } - - private final Handler.Callback callback = msg -> { - if (msg.what == 20210601) { - if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (dataBeans.size() == 0) { - viewBinding.emptyView.show(false, "抱歉,没有查到您的保洁工作记录", null, "刷新", new View.OnClickListener() { - @Override - public void onClick(View v) { - pageIndex = 1; - obtainCleanRecordList(); - } - }); - } else { - viewBinding.emptyView.hide(); - adapter = new RecordListAdapter(context, dataBeans); - viewBinding.recordRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = dataBeans.get(position); - Intent intent = new Intent(context, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - EasyToast.show(context, "经度异常"); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - EasyToast.show(context, "经度异常"); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - startActivity(intent); - } - }); - } - } - } - return true; - }; -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java new file mode 100644 index 0000000..0a0eec0 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java @@ -0,0 +1,199 @@ +package com.casic.dcms.mvvm.view; + +import android.content.Context; +import android.content.Intent; +import android.os.Handler; +import android.text.TextUtils; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.RecordListAdapter; +import com.casic.dcms.databinding.ActivityCleanRecordsBinding; +import com.casic.dcms.mvvm.model.CleanRecordBean; +import com.casic.dcms.mvvm.vm.ToiletViewModel; +import com.casic.dcms.utils.CalendarUtil; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.widgets.datepicker.DatePopupWindow; +import com.gyf.immersionbar.ImmersionBar; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; +import com.pengxh.androidx.lite.utils.WeakReferenceHandler; +import com.pengxh.androidx.lite.vm.LoadState; +import com.pengxh.androidx.lite.widget.EasyToast; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.util.ArrayList; +import java.util.List; + +public class CleaningRecordsActivity extends AndroidxBaseActivity { + + private final Context context = CleaningRecordsActivity.this; + private ToiletViewModel toiletViewModel; + private List dataBeans = new ArrayList<>(); + private RecordListAdapter adapter; + private WeakReferenceHandler weakReferenceHandler; + private int pageIndex = 1; + private String start; + private String end; + private boolean isRefresh = false; + private boolean isLoadMore = false; + private int startGroup = -1; + private int endGroup = -1; + private int startChild = -1; + private int endChild = -1; + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); + ImmersionBar.with(this).statusBarDarkFont(false).init(); + + viewBinding.titleBarLayout.titleView.setText("保洁作业记录"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void initData() { + weakReferenceHandler = new WeakReferenceHandler(callback); + toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class); + toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex); + } + + @Override + protected void initEvent() { + viewBinding.calendarView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + new DatePopupWindow.Builder(CleaningRecordsActivity.this, CalendarUtil.obtainLastTwoMonth(), view) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() { + @Override + public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) { + start = startDate; + end = endDate; + + startGroup = startGroupPosition; //开始月份位置 + startChild = startChildPosition; //开始对应月份中日的位置 + endGroup = endGroupPosition; //结束月份位置 + endChild = endChildPosition; //结束对应月份中日的位置 + viewBinding.dateView.setText(startDate + "~" + endDate); + obtainCleanRecordList(); + } + }).builder(); + } + }); + viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + obtainCleanRecordList(); + } + }); + viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + obtainCleanRecordList(); + } + }); + + toiletViewModel.cleanRecordModel.observe(this, new Observer() { + @Override + public void onChanged(CleanRecordBean resultBean) { + if (resultBean.getCode() == 200) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear(); //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + EasyToast.show(context, "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + //更新RecyclerView + weakReferenceHandler.sendEmptyMessage(20210601); + } + } + }); + + toiletViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + OtherUtils.showLoadingDialog(context, "查询记录中,请稍后"); + } else { + OtherUtils.dismissLoadingDialog(); + } + } + }); + } + + private void obtainCleanRecordList() { + toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex); + } + + private final Handler.Callback callback = msg -> { + if (msg.what == 20210601) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show(false, "抱歉,没有查到您的保洁工作记录", null, "刷新", new View.OnClickListener() { + @Override + public void onClick(View v) { + pageIndex = 1; + obtainCleanRecordList(); + } + }); + } else { + viewBinding.emptyView.hide(); + adapter = new RecordListAdapter(context, dataBeans); + viewBinding.recordRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + CleanRecordBean.DataBean.RowsBean rowsBean = dataBeans.get(position); + Intent intent = new Intent(context, WorkerOnMapActivity.class); + intent.putExtra("userName", rowsBean.getUserName()); + intent.putExtra("createTime", rowsBean.getCreateTime()); + intent.putExtra("toiletName", rowsBean.getToiletName()); + String dataLng = rowsBean.getLng(); + if (TextUtils.isEmpty(dataLng)) { + EasyToast.show(context, "经度异常"); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = rowsBean.getLat(); + if (TextUtils.isEmpty(dataLat)) { + EasyToast.show(context, "经度异常"); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + } + }); + } + } + } + return true; + }; +} \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 687c4c4..9c582b0 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -33,6 +33,7 @@ + @@ -40,6 +41,7 @@ + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ed1a0d3..41f20d8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -83,7 +83,7 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleanResultListActivity.java deleted file mode 100644 index 969426e..0000000 --- a/app/src/main/java/com/casic/dcms/mvvm/view/CleanResultListActivity.java +++ /dev/null @@ -1,199 +0,0 @@ -package com.casic.dcms.mvvm.view; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.text.TextUtils; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.databinding.ActivityCleanListBinding; -import com.casic.dcms.mvvm.model.CleanRecordBean; -import com.casic.dcms.mvvm.vm.ToiletViewModel; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; -import com.pengxh.androidx.lite.utils.WeakReferenceHandler; -import com.pengxh.androidx.lite.vm.LoadState; -import com.pengxh.androidx.lite.widget.EasyToast; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.util.ArrayList; -import java.util.List; - -public class CleanResultListActivity extends AndroidxBaseActivity { - - private final Context context = CleanResultListActivity.this; - private ToiletViewModel toiletViewModel; - private List dataBeans = new ArrayList<>(); - private RecordListAdapter adapter; - private WeakReferenceHandler weakReferenceHandler; - private int pageIndex = 1; - private String start; - private String end; - private boolean isRefresh = false; - private boolean isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("保洁作业记录"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(callback); - toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class); - toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - } - - @Override - protected void initEvent() { - viewBinding.calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - new DatePopupWindow.Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), view) - .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 - .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() { - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) { - start = startDate; - end = endDate; - - startGroup = startGroupPosition; //开始月份位置 - startChild = startChildPosition; //开始对应月份中日的位置 - endGroup = endGroupPosition; //结束月份位置 - endChild = endChildPosition; //结束对应月份中日的位置 - viewBinding.dateView.setText(startDate + "~" + endDate); - obtainCleanRecordList(); - } - }).builder(); - } - }); - viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - obtainCleanRecordList(); - } - }); - viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - obtainCleanRecordList(); - } - }); - - toiletViewModel.cleanRecordModel.observe(this, new Observer() { - @Override - public void onChanged(CleanRecordBean resultBean) { - if (resultBean.getCode() == 200) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear(); //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - EasyToast.show(context, "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - }); - - toiletViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - OtherUtils.showLoadingDialog(context, "查询记录中,请稍后"); - } else { - OtherUtils.dismissLoadingDialog(); - } - } - }); - } - - private void obtainCleanRecordList() { - toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex); - } - - private final Handler.Callback callback = msg -> { - if (msg.what == 20210601) { - if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (dataBeans.size() == 0) { - viewBinding.emptyView.show(false, "抱歉,没有查到您的保洁工作记录", null, "刷新", new View.OnClickListener() { - @Override - public void onClick(View v) { - pageIndex = 1; - obtainCleanRecordList(); - } - }); - } else { - viewBinding.emptyView.hide(); - adapter = new RecordListAdapter(context, dataBeans); - viewBinding.recordRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = dataBeans.get(position); - Intent intent = new Intent(context, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - EasyToast.show(context, "经度异常"); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - EasyToast.show(context, "经度异常"); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - startActivity(intent); - } - }); - } - } - } - return true; - }; -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java new file mode 100644 index 0000000..0a0eec0 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java @@ -0,0 +1,199 @@ +package com.casic.dcms.mvvm.view; + +import android.content.Context; +import android.content.Intent; +import android.os.Handler; +import android.text.TextUtils; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.RecordListAdapter; +import com.casic.dcms.databinding.ActivityCleanRecordsBinding; +import com.casic.dcms.mvvm.model.CleanRecordBean; +import com.casic.dcms.mvvm.vm.ToiletViewModel; +import com.casic.dcms.utils.CalendarUtil; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.widgets.datepicker.DatePopupWindow; +import com.gyf.immersionbar.ImmersionBar; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; +import com.pengxh.androidx.lite.utils.WeakReferenceHandler; +import com.pengxh.androidx.lite.vm.LoadState; +import com.pengxh.androidx.lite.widget.EasyToast; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.util.ArrayList; +import java.util.List; + +public class CleaningRecordsActivity extends AndroidxBaseActivity { + + private final Context context = CleaningRecordsActivity.this; + private ToiletViewModel toiletViewModel; + private List dataBeans = new ArrayList<>(); + private RecordListAdapter adapter; + private WeakReferenceHandler weakReferenceHandler; + private int pageIndex = 1; + private String start; + private String end; + private boolean isRefresh = false; + private boolean isLoadMore = false; + private int startGroup = -1; + private int endGroup = -1; + private int startChild = -1; + private int endChild = -1; + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); + ImmersionBar.with(this).statusBarDarkFont(false).init(); + + viewBinding.titleBarLayout.titleView.setText("保洁作业记录"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void initData() { + weakReferenceHandler = new WeakReferenceHandler(callback); + toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class); + toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex); + } + + @Override + protected void initEvent() { + viewBinding.calendarView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + new DatePopupWindow.Builder(CleaningRecordsActivity.this, CalendarUtil.obtainLastTwoMonth(), view) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() { + @Override + public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) { + start = startDate; + end = endDate; + + startGroup = startGroupPosition; //开始月份位置 + startChild = startChildPosition; //开始对应月份中日的位置 + endGroup = endGroupPosition; //结束月份位置 + endChild = endChildPosition; //结束对应月份中日的位置 + viewBinding.dateView.setText(startDate + "~" + endDate); + obtainCleanRecordList(); + } + }).builder(); + } + }); + viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + obtainCleanRecordList(); + } + }); + viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + obtainCleanRecordList(); + } + }); + + toiletViewModel.cleanRecordModel.observe(this, new Observer() { + @Override + public void onChanged(CleanRecordBean resultBean) { + if (resultBean.getCode() == 200) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear(); //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + EasyToast.show(context, "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + //更新RecyclerView + weakReferenceHandler.sendEmptyMessage(20210601); + } + } + }); + + toiletViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + OtherUtils.showLoadingDialog(context, "查询记录中,请稍后"); + } else { + OtherUtils.dismissLoadingDialog(); + } + } + }); + } + + private void obtainCleanRecordList() { + toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex); + } + + private final Handler.Callback callback = msg -> { + if (msg.what == 20210601) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show(false, "抱歉,没有查到您的保洁工作记录", null, "刷新", new View.OnClickListener() { + @Override + public void onClick(View v) { + pageIndex = 1; + obtainCleanRecordList(); + } + }); + } else { + viewBinding.emptyView.hide(); + adapter = new RecordListAdapter(context, dataBeans); + viewBinding.recordRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + CleanRecordBean.DataBean.RowsBean rowsBean = dataBeans.get(position); + Intent intent = new Intent(context, WorkerOnMapActivity.class); + intent.putExtra("userName", rowsBean.getUserName()); + intent.putExtra("createTime", rowsBean.getCreateTime()); + intent.putExtra("toiletName", rowsBean.getToiletName()); + String dataLng = rowsBean.getLng(); + if (TextUtils.isEmpty(dataLng)) { + EasyToast.show(context, "经度异常"); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = rowsBean.getLat(); + if (TextUtils.isEmpty(dataLat)) { + EasyToast.show(context, "经度异常"); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + } + }); + } + } + } + return true; + }; +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/PublicToiletActivity.java index ba4be05..56cf464 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/PublicToiletActivity.java @@ -3,8 +3,6 @@ import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.Paint; import android.graphics.drawable.BitmapDrawable; @@ -51,6 +49,7 @@ import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.entity.LocalMedia; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.utils.ContextUtil; import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; import com.pengxh.androidx.lite.vm.LoadState; import com.pengxh.androidx.lite.widget.EasyToast; @@ -76,7 +75,7 @@ viewBinding.titleBarLayout.titleView.setText("公厕保洁"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - viewBinding.titleBarLayout.rightImageView.setOnClickListener(v -> startActivity(new Intent(context, CleanResultListActivity.class))); + viewBinding.titleBarLayout.rightImageView.setOnClickListener(v -> startActivity(new Intent(context, CleaningRecordsActivity.class))); } @Override @@ -307,7 +306,7 @@ toiletViewModel.cleanToiletModel.observe(this, new Observer() { @Override public void onChanged(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { + if (resultBean.getCode() == 200) { new SignInDialog.Builder() .setContext(context) .setTitle("保洁保卡成功") @@ -315,14 +314,13 @@ .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { @Override public void onViewClick() { - startActivity(new Intent(context, CleanResultListActivity.class)); - PublicToiletActivity.this.finish(); + ContextUtil.navigatePageTo(context, CleaningRecordsActivity.class); + finish(); } }).build().show(); } } }); - toiletViewModel.loadState.observe(this, new Observer() { @Override public void onChanged(LoadState loadState) { @@ -336,19 +334,20 @@ } private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setWidth(64); - pictureMarker.setHeight(42); - pictureMarker.loadAsync(); + BitmapDrawable symbolDrawable = (BitmapDrawable) ContextCompat.getDrawable(this, R.mipmap.on_line); + if (symbolDrawable != null) { + PictureMarkerSymbol symbolMarker = new PictureMarkerSymbol(symbolDrawable); + symbolMarker.setWidth(64); + symbolMarker.setHeight(42); + symbolMarker.loadAsync(); - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = viewBinding.mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); + Graphic graphic = new Graphic(point, symbolMarker); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = viewBinding.mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } } private void showEditDialog(String tag) { diff --git a/.idea/misc.xml b/.idea/misc.xml index 687c4c4..9c582b0 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -33,6 +33,7 @@ + @@ -40,6 +41,7 @@ + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ed1a0d3..41f20d8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -83,7 +83,7 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleanResultListActivity.java deleted file mode 100644 index 969426e..0000000 --- a/app/src/main/java/com/casic/dcms/mvvm/view/CleanResultListActivity.java +++ /dev/null @@ -1,199 +0,0 @@ -package com.casic.dcms.mvvm.view; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.text.TextUtils; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.databinding.ActivityCleanListBinding; -import com.casic.dcms.mvvm.model.CleanRecordBean; -import com.casic.dcms.mvvm.vm.ToiletViewModel; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; -import com.pengxh.androidx.lite.utils.WeakReferenceHandler; -import com.pengxh.androidx.lite.vm.LoadState; -import com.pengxh.androidx.lite.widget.EasyToast; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.util.ArrayList; -import java.util.List; - -public class CleanResultListActivity extends AndroidxBaseActivity { - - private final Context context = CleanResultListActivity.this; - private ToiletViewModel toiletViewModel; - private List dataBeans = new ArrayList<>(); - private RecordListAdapter adapter; - private WeakReferenceHandler weakReferenceHandler; - private int pageIndex = 1; - private String start; - private String end; - private boolean isRefresh = false; - private boolean isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("保洁作业记录"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(callback); - toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class); - toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - } - - @Override - protected void initEvent() { - viewBinding.calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - new DatePopupWindow.Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), view) - .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 - .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() { - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) { - start = startDate; - end = endDate; - - startGroup = startGroupPosition; //开始月份位置 - startChild = startChildPosition; //开始对应月份中日的位置 - endGroup = endGroupPosition; //结束月份位置 - endChild = endChildPosition; //结束对应月份中日的位置 - viewBinding.dateView.setText(startDate + "~" + endDate); - obtainCleanRecordList(); - } - }).builder(); - } - }); - viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - obtainCleanRecordList(); - } - }); - viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - obtainCleanRecordList(); - } - }); - - toiletViewModel.cleanRecordModel.observe(this, new Observer() { - @Override - public void onChanged(CleanRecordBean resultBean) { - if (resultBean.getCode() == 200) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear(); //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - EasyToast.show(context, "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - }); - - toiletViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - OtherUtils.showLoadingDialog(context, "查询记录中,请稍后"); - } else { - OtherUtils.dismissLoadingDialog(); - } - } - }); - } - - private void obtainCleanRecordList() { - toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex); - } - - private final Handler.Callback callback = msg -> { - if (msg.what == 20210601) { - if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (dataBeans.size() == 0) { - viewBinding.emptyView.show(false, "抱歉,没有查到您的保洁工作记录", null, "刷新", new View.OnClickListener() { - @Override - public void onClick(View v) { - pageIndex = 1; - obtainCleanRecordList(); - } - }); - } else { - viewBinding.emptyView.hide(); - adapter = new RecordListAdapter(context, dataBeans); - viewBinding.recordRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = dataBeans.get(position); - Intent intent = new Intent(context, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - EasyToast.show(context, "经度异常"); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - EasyToast.show(context, "经度异常"); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - startActivity(intent); - } - }); - } - } - } - return true; - }; -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java new file mode 100644 index 0000000..0a0eec0 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java @@ -0,0 +1,199 @@ +package com.casic.dcms.mvvm.view; + +import android.content.Context; +import android.content.Intent; +import android.os.Handler; +import android.text.TextUtils; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.RecordListAdapter; +import com.casic.dcms.databinding.ActivityCleanRecordsBinding; +import com.casic.dcms.mvvm.model.CleanRecordBean; +import com.casic.dcms.mvvm.vm.ToiletViewModel; +import com.casic.dcms.utils.CalendarUtil; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.widgets.datepicker.DatePopupWindow; +import com.gyf.immersionbar.ImmersionBar; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; +import com.pengxh.androidx.lite.utils.WeakReferenceHandler; +import com.pengxh.androidx.lite.vm.LoadState; +import com.pengxh.androidx.lite.widget.EasyToast; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.util.ArrayList; +import java.util.List; + +public class CleaningRecordsActivity extends AndroidxBaseActivity { + + private final Context context = CleaningRecordsActivity.this; + private ToiletViewModel toiletViewModel; + private List dataBeans = new ArrayList<>(); + private RecordListAdapter adapter; + private WeakReferenceHandler weakReferenceHandler; + private int pageIndex = 1; + private String start; + private String end; + private boolean isRefresh = false; + private boolean isLoadMore = false; + private int startGroup = -1; + private int endGroup = -1; + private int startChild = -1; + private int endChild = -1; + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); + ImmersionBar.with(this).statusBarDarkFont(false).init(); + + viewBinding.titleBarLayout.titleView.setText("保洁作业记录"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void initData() { + weakReferenceHandler = new WeakReferenceHandler(callback); + toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class); + toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex); + } + + @Override + protected void initEvent() { + viewBinding.calendarView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + new DatePopupWindow.Builder(CleaningRecordsActivity.this, CalendarUtil.obtainLastTwoMonth(), view) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() { + @Override + public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) { + start = startDate; + end = endDate; + + startGroup = startGroupPosition; //开始月份位置 + startChild = startChildPosition; //开始对应月份中日的位置 + endGroup = endGroupPosition; //结束月份位置 + endChild = endChildPosition; //结束对应月份中日的位置 + viewBinding.dateView.setText(startDate + "~" + endDate); + obtainCleanRecordList(); + } + }).builder(); + } + }); + viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + obtainCleanRecordList(); + } + }); + viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + obtainCleanRecordList(); + } + }); + + toiletViewModel.cleanRecordModel.observe(this, new Observer() { + @Override + public void onChanged(CleanRecordBean resultBean) { + if (resultBean.getCode() == 200) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear(); //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + EasyToast.show(context, "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + //更新RecyclerView + weakReferenceHandler.sendEmptyMessage(20210601); + } + } + }); + + toiletViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + OtherUtils.showLoadingDialog(context, "查询记录中,请稍后"); + } else { + OtherUtils.dismissLoadingDialog(); + } + } + }); + } + + private void obtainCleanRecordList() { + toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex); + } + + private final Handler.Callback callback = msg -> { + if (msg.what == 20210601) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show(false, "抱歉,没有查到您的保洁工作记录", null, "刷新", new View.OnClickListener() { + @Override + public void onClick(View v) { + pageIndex = 1; + obtainCleanRecordList(); + } + }); + } else { + viewBinding.emptyView.hide(); + adapter = new RecordListAdapter(context, dataBeans); + viewBinding.recordRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + CleanRecordBean.DataBean.RowsBean rowsBean = dataBeans.get(position); + Intent intent = new Intent(context, WorkerOnMapActivity.class); + intent.putExtra("userName", rowsBean.getUserName()); + intent.putExtra("createTime", rowsBean.getCreateTime()); + intent.putExtra("toiletName", rowsBean.getToiletName()); + String dataLng = rowsBean.getLng(); + if (TextUtils.isEmpty(dataLng)) { + EasyToast.show(context, "经度异常"); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = rowsBean.getLat(); + if (TextUtils.isEmpty(dataLat)) { + EasyToast.show(context, "经度异常"); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + } + }); + } + } + } + return true; + }; +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/PublicToiletActivity.java index ba4be05..56cf464 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/PublicToiletActivity.java @@ -3,8 +3,6 @@ import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.Paint; import android.graphics.drawable.BitmapDrawable; @@ -51,6 +49,7 @@ import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.entity.LocalMedia; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.utils.ContextUtil; import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; import com.pengxh.androidx.lite.vm.LoadState; import com.pengxh.androidx.lite.widget.EasyToast; @@ -76,7 +75,7 @@ viewBinding.titleBarLayout.titleView.setText("公厕保洁"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - viewBinding.titleBarLayout.rightImageView.setOnClickListener(v -> startActivity(new Intent(context, CleanResultListActivity.class))); + viewBinding.titleBarLayout.rightImageView.setOnClickListener(v -> startActivity(new Intent(context, CleaningRecordsActivity.class))); } @Override @@ -307,7 +306,7 @@ toiletViewModel.cleanToiletModel.observe(this, new Observer() { @Override public void onChanged(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { + if (resultBean.getCode() == 200) { new SignInDialog.Builder() .setContext(context) .setTitle("保洁保卡成功") @@ -315,14 +314,13 @@ .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { @Override public void onViewClick() { - startActivity(new Intent(context, CleanResultListActivity.class)); - PublicToiletActivity.this.finish(); + ContextUtil.navigatePageTo(context, CleaningRecordsActivity.class); + finish(); } }).build().show(); } } }); - toiletViewModel.loadState.observe(this, new Observer() { @Override public void onChanged(LoadState loadState) { @@ -336,19 +334,20 @@ } private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setWidth(64); - pictureMarker.setHeight(42); - pictureMarker.loadAsync(); + BitmapDrawable symbolDrawable = (BitmapDrawable) ContextCompat.getDrawable(this, R.mipmap.on_line); + if (symbolDrawable != null) { + PictureMarkerSymbol symbolMarker = new PictureMarkerSymbol(symbolDrawable); + symbolMarker.setWidth(64); + symbolMarker.setHeight(42); + symbolMarker.loadAsync(); - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = viewBinding.mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); + Graphic graphic = new Graphic(point, symbolMarker); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = viewBinding.mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } } private void showEditDialog(String tag) { diff --git a/app/src/main/res/layout/activity_clean_list.xml b/app/src/main/res/layout/activity_clean_list.xml deleted file mode 100644 index cc0e13e..0000000 --- a/app/src/main/res/layout/activity_clean_list.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 687c4c4..9c582b0 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -33,6 +33,7 @@ + @@ -40,6 +41,7 @@ + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ed1a0d3..41f20d8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -83,7 +83,7 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleanResultListActivity.java deleted file mode 100644 index 969426e..0000000 --- a/app/src/main/java/com/casic/dcms/mvvm/view/CleanResultListActivity.java +++ /dev/null @@ -1,199 +0,0 @@ -package com.casic.dcms.mvvm.view; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.text.TextUtils; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.databinding.ActivityCleanListBinding; -import com.casic.dcms.mvvm.model.CleanRecordBean; -import com.casic.dcms.mvvm.vm.ToiletViewModel; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; -import com.pengxh.androidx.lite.utils.WeakReferenceHandler; -import com.pengxh.androidx.lite.vm.LoadState; -import com.pengxh.androidx.lite.widget.EasyToast; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.util.ArrayList; -import java.util.List; - -public class CleanResultListActivity extends AndroidxBaseActivity { - - private final Context context = CleanResultListActivity.this; - private ToiletViewModel toiletViewModel; - private List dataBeans = new ArrayList<>(); - private RecordListAdapter adapter; - private WeakReferenceHandler weakReferenceHandler; - private int pageIndex = 1; - private String start; - private String end; - private boolean isRefresh = false; - private boolean isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("保洁作业记录"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(callback); - toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class); - toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - } - - @Override - protected void initEvent() { - viewBinding.calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - new DatePopupWindow.Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), view) - .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 - .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() { - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) { - start = startDate; - end = endDate; - - startGroup = startGroupPosition; //开始月份位置 - startChild = startChildPosition; //开始对应月份中日的位置 - endGroup = endGroupPosition; //结束月份位置 - endChild = endChildPosition; //结束对应月份中日的位置 - viewBinding.dateView.setText(startDate + "~" + endDate); - obtainCleanRecordList(); - } - }).builder(); - } - }); - viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - obtainCleanRecordList(); - } - }); - viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - obtainCleanRecordList(); - } - }); - - toiletViewModel.cleanRecordModel.observe(this, new Observer() { - @Override - public void onChanged(CleanRecordBean resultBean) { - if (resultBean.getCode() == 200) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear(); //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - EasyToast.show(context, "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - }); - - toiletViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - OtherUtils.showLoadingDialog(context, "查询记录中,请稍后"); - } else { - OtherUtils.dismissLoadingDialog(); - } - } - }); - } - - private void obtainCleanRecordList() { - toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex); - } - - private final Handler.Callback callback = msg -> { - if (msg.what == 20210601) { - if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (dataBeans.size() == 0) { - viewBinding.emptyView.show(false, "抱歉,没有查到您的保洁工作记录", null, "刷新", new View.OnClickListener() { - @Override - public void onClick(View v) { - pageIndex = 1; - obtainCleanRecordList(); - } - }); - } else { - viewBinding.emptyView.hide(); - adapter = new RecordListAdapter(context, dataBeans); - viewBinding.recordRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = dataBeans.get(position); - Intent intent = new Intent(context, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - EasyToast.show(context, "经度异常"); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - EasyToast.show(context, "经度异常"); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - startActivity(intent); - } - }); - } - } - } - return true; - }; -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java new file mode 100644 index 0000000..0a0eec0 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java @@ -0,0 +1,199 @@ +package com.casic.dcms.mvvm.view; + +import android.content.Context; +import android.content.Intent; +import android.os.Handler; +import android.text.TextUtils; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.RecordListAdapter; +import com.casic.dcms.databinding.ActivityCleanRecordsBinding; +import com.casic.dcms.mvvm.model.CleanRecordBean; +import com.casic.dcms.mvvm.vm.ToiletViewModel; +import com.casic.dcms.utils.CalendarUtil; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.widgets.datepicker.DatePopupWindow; +import com.gyf.immersionbar.ImmersionBar; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; +import com.pengxh.androidx.lite.utils.WeakReferenceHandler; +import com.pengxh.androidx.lite.vm.LoadState; +import com.pengxh.androidx.lite.widget.EasyToast; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.util.ArrayList; +import java.util.List; + +public class CleaningRecordsActivity extends AndroidxBaseActivity { + + private final Context context = CleaningRecordsActivity.this; + private ToiletViewModel toiletViewModel; + private List dataBeans = new ArrayList<>(); + private RecordListAdapter adapter; + private WeakReferenceHandler weakReferenceHandler; + private int pageIndex = 1; + private String start; + private String end; + private boolean isRefresh = false; + private boolean isLoadMore = false; + private int startGroup = -1; + private int endGroup = -1; + private int startChild = -1; + private int endChild = -1; + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); + ImmersionBar.with(this).statusBarDarkFont(false).init(); + + viewBinding.titleBarLayout.titleView.setText("保洁作业记录"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void initData() { + weakReferenceHandler = new WeakReferenceHandler(callback); + toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class); + toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex); + } + + @Override + protected void initEvent() { + viewBinding.calendarView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + new DatePopupWindow.Builder(CleaningRecordsActivity.this, CalendarUtil.obtainLastTwoMonth(), view) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() { + @Override + public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) { + start = startDate; + end = endDate; + + startGroup = startGroupPosition; //开始月份位置 + startChild = startChildPosition; //开始对应月份中日的位置 + endGroup = endGroupPosition; //结束月份位置 + endChild = endChildPosition; //结束对应月份中日的位置 + viewBinding.dateView.setText(startDate + "~" + endDate); + obtainCleanRecordList(); + } + }).builder(); + } + }); + viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + obtainCleanRecordList(); + } + }); + viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + obtainCleanRecordList(); + } + }); + + toiletViewModel.cleanRecordModel.observe(this, new Observer() { + @Override + public void onChanged(CleanRecordBean resultBean) { + if (resultBean.getCode() == 200) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear(); //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + EasyToast.show(context, "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + //更新RecyclerView + weakReferenceHandler.sendEmptyMessage(20210601); + } + } + }); + + toiletViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + OtherUtils.showLoadingDialog(context, "查询记录中,请稍后"); + } else { + OtherUtils.dismissLoadingDialog(); + } + } + }); + } + + private void obtainCleanRecordList() { + toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex); + } + + private final Handler.Callback callback = msg -> { + if (msg.what == 20210601) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show(false, "抱歉,没有查到您的保洁工作记录", null, "刷新", new View.OnClickListener() { + @Override + public void onClick(View v) { + pageIndex = 1; + obtainCleanRecordList(); + } + }); + } else { + viewBinding.emptyView.hide(); + adapter = new RecordListAdapter(context, dataBeans); + viewBinding.recordRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + CleanRecordBean.DataBean.RowsBean rowsBean = dataBeans.get(position); + Intent intent = new Intent(context, WorkerOnMapActivity.class); + intent.putExtra("userName", rowsBean.getUserName()); + intent.putExtra("createTime", rowsBean.getCreateTime()); + intent.putExtra("toiletName", rowsBean.getToiletName()); + String dataLng = rowsBean.getLng(); + if (TextUtils.isEmpty(dataLng)) { + EasyToast.show(context, "经度异常"); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = rowsBean.getLat(); + if (TextUtils.isEmpty(dataLat)) { + EasyToast.show(context, "经度异常"); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + } + }); + } + } + } + return true; + }; +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/PublicToiletActivity.java index ba4be05..56cf464 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/PublicToiletActivity.java @@ -3,8 +3,6 @@ import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.Paint; import android.graphics.drawable.BitmapDrawable; @@ -51,6 +49,7 @@ import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.entity.LocalMedia; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.utils.ContextUtil; import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; import com.pengxh.androidx.lite.vm.LoadState; import com.pengxh.androidx.lite.widget.EasyToast; @@ -76,7 +75,7 @@ viewBinding.titleBarLayout.titleView.setText("公厕保洁"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - viewBinding.titleBarLayout.rightImageView.setOnClickListener(v -> startActivity(new Intent(context, CleanResultListActivity.class))); + viewBinding.titleBarLayout.rightImageView.setOnClickListener(v -> startActivity(new Intent(context, CleaningRecordsActivity.class))); } @Override @@ -307,7 +306,7 @@ toiletViewModel.cleanToiletModel.observe(this, new Observer() { @Override public void onChanged(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { + if (resultBean.getCode() == 200) { new SignInDialog.Builder() .setContext(context) .setTitle("保洁保卡成功") @@ -315,14 +314,13 @@ .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { @Override public void onViewClick() { - startActivity(new Intent(context, CleanResultListActivity.class)); - PublicToiletActivity.this.finish(); + ContextUtil.navigatePageTo(context, CleaningRecordsActivity.class); + finish(); } }).build().show(); } } }); - toiletViewModel.loadState.observe(this, new Observer() { @Override public void onChanged(LoadState loadState) { @@ -336,19 +334,20 @@ } private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setWidth(64); - pictureMarker.setHeight(42); - pictureMarker.loadAsync(); + BitmapDrawable symbolDrawable = (BitmapDrawable) ContextCompat.getDrawable(this, R.mipmap.on_line); + if (symbolDrawable != null) { + PictureMarkerSymbol symbolMarker = new PictureMarkerSymbol(symbolDrawable); + symbolMarker.setWidth(64); + symbolMarker.setHeight(42); + symbolMarker.loadAsync(); - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = viewBinding.mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); + Graphic graphic = new Graphic(point, symbolMarker); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = viewBinding.mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } } private void showEditDialog(String tag) { diff --git a/app/src/main/res/layout/activity_clean_list.xml b/app/src/main/res/layout/activity_clean_list.xml deleted file mode 100644 index cc0e13e..0000000 --- a/app/src/main/res/layout/activity_clean_list.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_clean_records.xml b/app/src/main/res/layout/activity_clean_records.xml new file mode 100644 index 0000000..cc0e13e --- /dev/null +++ b/app/src/main/res/layout/activity_clean_records.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 687c4c4..9c582b0 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -33,6 +33,7 @@ + @@ -40,6 +41,7 @@ + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ed1a0d3..41f20d8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -83,7 +83,7 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleanResultListActivity.java deleted file mode 100644 index 969426e..0000000 --- a/app/src/main/java/com/casic/dcms/mvvm/view/CleanResultListActivity.java +++ /dev/null @@ -1,199 +0,0 @@ -package com.casic.dcms.mvvm.view; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.text.TextUtils; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.databinding.ActivityCleanListBinding; -import com.casic.dcms.mvvm.model.CleanRecordBean; -import com.casic.dcms.mvvm.vm.ToiletViewModel; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; -import com.pengxh.androidx.lite.utils.WeakReferenceHandler; -import com.pengxh.androidx.lite.vm.LoadState; -import com.pengxh.androidx.lite.widget.EasyToast; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.util.ArrayList; -import java.util.List; - -public class CleanResultListActivity extends AndroidxBaseActivity { - - private final Context context = CleanResultListActivity.this; - private ToiletViewModel toiletViewModel; - private List dataBeans = new ArrayList<>(); - private RecordListAdapter adapter; - private WeakReferenceHandler weakReferenceHandler; - private int pageIndex = 1; - private String start; - private String end; - private boolean isRefresh = false; - private boolean isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - - viewBinding.titleBarLayout.titleView.setText("保洁作业记录"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(callback); - toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class); - toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - } - - @Override - protected void initEvent() { - viewBinding.calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - new DatePopupWindow.Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), view) - .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 - .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() { - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) { - start = startDate; - end = endDate; - - startGroup = startGroupPosition; //开始月份位置 - startChild = startChildPosition; //开始对应月份中日的位置 - endGroup = endGroupPosition; //结束月份位置 - endChild = endChildPosition; //结束对应月份中日的位置 - viewBinding.dateView.setText(startDate + "~" + endDate); - obtainCleanRecordList(); - } - }).builder(); - } - }); - viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - obtainCleanRecordList(); - } - }); - viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - obtainCleanRecordList(); - } - }); - - toiletViewModel.cleanRecordModel.observe(this, new Observer() { - @Override - public void onChanged(CleanRecordBean resultBean) { - if (resultBean.getCode() == 200) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear(); //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - EasyToast.show(context, "到底了,别拉了"); - } - dataBeans.addAll(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - }); - - toiletViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - OtherUtils.showLoadingDialog(context, "查询记录中,请稍后"); - } else { - OtherUtils.dismissLoadingDialog(); - } - } - }); - } - - private void obtainCleanRecordList() { - toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex); - } - - private final Handler.Callback callback = msg -> { - if (msg.what == 20210601) { - if (isRefresh || isLoadMore) { - adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (dataBeans.size() == 0) { - viewBinding.emptyView.show(false, "抱歉,没有查到您的保洁工作记录", null, "刷新", new View.OnClickListener() { - @Override - public void onClick(View v) { - pageIndex = 1; - obtainCleanRecordList(); - } - }); - } else { - viewBinding.emptyView.hide(); - adapter = new RecordListAdapter(context, dataBeans); - viewBinding.recordRecyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = dataBeans.get(position); - Intent intent = new Intent(context, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - EasyToast.show(context, "经度异常"); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - EasyToast.show(context, "经度异常"); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - startActivity(intent); - } - }); - } - } - } - return true; - }; -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java new file mode 100644 index 0000000..0a0eec0 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvvm/view/CleaningRecordsActivity.java @@ -0,0 +1,199 @@ +package com.casic.dcms.mvvm.view; + +import android.content.Context; +import android.content.Intent; +import android.os.Handler; +import android.text.TextUtils; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.RecordListAdapter; +import com.casic.dcms.databinding.ActivityCleanRecordsBinding; +import com.casic.dcms.mvvm.model.CleanRecordBean; +import com.casic.dcms.mvvm.vm.ToiletViewModel; +import com.casic.dcms.utils.CalendarUtil; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.widgets.datepicker.DatePopupWindow; +import com.gyf.immersionbar.ImmersionBar; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; +import com.pengxh.androidx.lite.utils.WeakReferenceHandler; +import com.pengxh.androidx.lite.vm.LoadState; +import com.pengxh.androidx.lite.widget.EasyToast; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.util.ArrayList; +import java.util.List; + +public class CleaningRecordsActivity extends AndroidxBaseActivity { + + private final Context context = CleaningRecordsActivity.this; + private ToiletViewModel toiletViewModel; + private List dataBeans = new ArrayList<>(); + private RecordListAdapter adapter; + private WeakReferenceHandler weakReferenceHandler; + private int pageIndex = 1; + private String start; + private String end; + private boolean isRefresh = false; + private boolean isLoadMore = false; + private int startGroup = -1; + private int endGroup = -1; + private int startChild = -1; + private int endChild = -1; + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); + ImmersionBar.with(this).statusBarDarkFont(false).init(); + + viewBinding.titleBarLayout.titleView.setText("保洁作业记录"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void initData() { + weakReferenceHandler = new WeakReferenceHandler(callback); + toiletViewModel = new ViewModelProvider(this).get(ToiletViewModel.class); + toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", "", "", pageIndex); + } + + @Override + protected void initEvent() { + viewBinding.calendarView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + new DatePopupWindow.Builder(CleaningRecordsActivity.this, CalendarUtil.obtainLastTwoMonth(), view) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() { + @Override + public void getDate(String startDate, String endDate, int startGroupPosition, int startChildPosition, int endGroupPosition, int endChildPosition) { + start = startDate; + end = endDate; + + startGroup = startGroupPosition; //开始月份位置 + startChild = startChildPosition; //开始对应月份中日的位置 + endGroup = endGroupPosition; //结束月份位置 + endChild = endChildPosition; //结束对应月份中日的位置 + viewBinding.dateView.setText(startDate + "~" + endDate); + obtainCleanRecordList(); + } + }).builder(); + } + }); + viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + obtainCleanRecordList(); + } + }); + viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + obtainCleanRecordList(); + } + }); + + toiletViewModel.cleanRecordModel.observe(this, new Observer() { + @Override + public void onChanged(CleanRecordBean resultBean) { + if (resultBean.getCode() == 200) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear(); //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + EasyToast.show(context, "到底了,别拉了"); + } + dataBeans.addAll(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + //更新RecyclerView + weakReferenceHandler.sendEmptyMessage(20210601); + } + } + }); + + toiletViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + OtherUtils.showLoadingDialog(context, "查询记录中,请稍后"); + } else { + OtherUtils.dismissLoadingDialog(); + } + } + }); + } + + private void obtainCleanRecordList() { + toiletViewModel.obtainCleanRecordList(StringHelper.getUserBean().getId(), "", start, end, pageIndex); + } + + private final Handler.Callback callback = msg -> { + if (msg.what == 20210601) { + if (isRefresh || isLoadMore) { + adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (dataBeans.size() == 0) { + viewBinding.emptyView.show(false, "抱歉,没有查到您的保洁工作记录", null, "刷新", new View.OnClickListener() { + @Override + public void onClick(View v) { + pageIndex = 1; + obtainCleanRecordList(); + } + }); + } else { + viewBinding.emptyView.hide(); + adapter = new RecordListAdapter(context, dataBeans); + viewBinding.recordRecyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + CleanRecordBean.DataBean.RowsBean rowsBean = dataBeans.get(position); + Intent intent = new Intent(context, WorkerOnMapActivity.class); + intent.putExtra("userName", rowsBean.getUserName()); + intent.putExtra("createTime", rowsBean.getCreateTime()); + intent.putExtra("toiletName", rowsBean.getToiletName()); + String dataLng = rowsBean.getLng(); + if (TextUtils.isEmpty(dataLng)) { + EasyToast.show(context, "经度异常"); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = rowsBean.getLat(); + if (TextUtils.isEmpty(dataLat)) { + EasyToast.show(context, "经度异常"); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + } + }); + } + } + } + return true; + }; +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/mvvm/view/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/mvvm/view/PublicToiletActivity.java index ba4be05..56cf464 100644 --- a/app/src/main/java/com/casic/dcms/mvvm/view/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/mvvm/view/PublicToiletActivity.java @@ -3,8 +3,6 @@ import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.Paint; import android.graphics.drawable.BitmapDrawable; @@ -51,6 +49,7 @@ import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.entity.LocalMedia; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.utils.ContextUtil; import com.pengxh.androidx.lite.utils.ImmerseStatusBarUtil; import com.pengxh.androidx.lite.vm.LoadState; import com.pengxh.androidx.lite.widget.EasyToast; @@ -76,7 +75,7 @@ viewBinding.titleBarLayout.titleView.setText("公厕保洁"); viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - viewBinding.titleBarLayout.rightImageView.setOnClickListener(v -> startActivity(new Intent(context, CleanResultListActivity.class))); + viewBinding.titleBarLayout.rightImageView.setOnClickListener(v -> startActivity(new Intent(context, CleaningRecordsActivity.class))); } @Override @@ -307,7 +306,7 @@ toiletViewModel.cleanToiletModel.observe(this, new Observer() { @Override public void onChanged(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { + if (resultBean.getCode() == 200) { new SignInDialog.Builder() .setContext(context) .setTitle("保洁保卡成功") @@ -315,14 +314,13 @@ .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { @Override public void onViewClick() { - startActivity(new Intent(context, CleanResultListActivity.class)); - PublicToiletActivity.this.finish(); + ContextUtil.navigatePageTo(context, CleaningRecordsActivity.class); + finish(); } }).build().show(); } } }); - toiletViewModel.loadState.observe(this, new Observer() { @Override public void onChanged(LoadState loadState) { @@ -336,19 +334,20 @@ } private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setWidth(64); - pictureMarker.setHeight(42); - pictureMarker.loadAsync(); + BitmapDrawable symbolDrawable = (BitmapDrawable) ContextCompat.getDrawable(this, R.mipmap.on_line); + if (symbolDrawable != null) { + PictureMarkerSymbol symbolMarker = new PictureMarkerSymbol(symbolDrawable); + symbolMarker.setWidth(64); + symbolMarker.setHeight(42); + symbolMarker.loadAsync(); - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = viewBinding.mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); + Graphic graphic = new Graphic(point, symbolMarker); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = viewBinding.mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } } private void showEditDialog(String tag) { diff --git a/app/src/main/res/layout/activity_clean_list.xml b/app/src/main/res/layout/activity_clean_list.xml deleted file mode 100644 index cc0e13e..0000000 --- a/app/src/main/res/layout/activity_clean_list.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_clean_records.xml b/app/src/main/res/layout/activity_clean_records.xml new file mode 100644 index 0000000..cc0e13e --- /dev/null +++ b/app/src/main/res/layout/activity_clean_records.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_toilet.xml b/app/src/main/res/layout/activity_toilet.xml index abe1af5..0ec268d 100644 --- a/app/src/main/res/layout/activity_toilet.xml +++ b/app/src/main/res/layout/activity_toilet.xml @@ -197,10 +197,12 @@ android:layout_width="90dp" android:layout_height="90dp" android:layout_centerInParent="true" + android:elevation="@dimen/dp_10" android:text="保洁打卡" android:textColor="@color/white" android:textSize="@dimen/sp_16" app:qmui_backgroundColor="@color/mainThemeColor" + app:qmui_borderWidth="0dp" app:qmui_radius="50dp" />