diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b18fd67..32535b5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -103,8 +103,8 @@ - - + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b18fd67..32535b5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -103,8 +103,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java index 21490f0..18a7105 100644 --- a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java @@ -12,12 +12,12 @@ import com.casic.dcms.model.UserBean; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.view.BridgeMaintainActivity; import com.casic.dcms.view.OvertimeCaseActivity; import com.casic.dcms.view.PersonActivity; import com.casic.dcms.view.PipelineManagerActivity; import com.casic.dcms.view.SearchCaseActivity; import com.casic.dcms.view.StreetlightManagerActivity; +import com.casic.dcms.view.bridge.BridgeMaintainActivity; import com.casic.dcms.view.business.ChangeShopInfoActivity; import com.casic.dcms.view.business.PackageCaseActivity; import com.casic.dcms.view.check.CheckCaseActivity; diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b18fd67..32535b5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -103,8 +103,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java index 21490f0..18a7105 100644 --- a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java @@ -12,12 +12,12 @@ import com.casic.dcms.model.UserBean; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.view.BridgeMaintainActivity; import com.casic.dcms.view.OvertimeCaseActivity; import com.casic.dcms.view.PersonActivity; import com.casic.dcms.view.PipelineManagerActivity; import com.casic.dcms.view.SearchCaseActivity; import com.casic.dcms.view.StreetlightManagerActivity; +import com.casic.dcms.view.bridge.BridgeMaintainActivity; import com.casic.dcms.view.business.ChangeShopInfoActivity; import com.casic.dcms.view.business.PackageCaseActivity; import com.casic.dcms.view.check.CheckCaseActivity; diff --git a/app/src/main/java/com/casic/dcms/view/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/view/BridgeMaintainActivity.java deleted file mode 100644 index 817fe40..0000000 --- a/app/src/main/java/com/casic/dcms/view/BridgeMaintainActivity.java +++ /dev/null @@ -1,192 +0,0 @@ -package com.casic.dcms.view; - -import android.content.Context; -import android.text.TextUtils; -import android.util.Log; -import android.view.View; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityBridgeBinding; -import com.casic.dcms.model.ActionResultBean; -import com.casic.dcms.model.BridgeConfigBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.vm.BridgeViewModel; -import com.casic.dcms.widgets.SignInDialog; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.IntHub; -import com.pengxh.androidx.lite.hub.LongHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.utils.SaveKeyValues; -import com.pengxh.androidx.lite.vm.LoadState; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder; - -import java.util.List; - -public class BridgeMaintainActivity extends AndroidxBaseActivity { - - private static final String TAG = "BridgeMaintainActivity"; - private final Context context = BridgeMaintainActivity.this; - private BridgeViewModel bridgeViewModel; - private String bridgeId = ""; - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); - ImmersionBar.with(this).statusBarDarkFont(true).init(); - - viewBinding.titleBarLayout.titleView.setText("路桥养护"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - ContextHub.navigatePageTo(context, MaintainRecordActivity.class); - } - }); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class); - } - - @Override - protected void initEvent() { - viewBinding.bridgeLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - StringHub.show(context, "获取桥梁数据异常"); - return; - } - BottomListSheetBuilder sheetBuilder = new BottomListSheetBuilder(context); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - bridgeId = String.valueOf(bridges.get(position).getId()); - viewBinding.bridgeNameView.setText(tag); - viewBinding.bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - }).build().show(); - } - }); - - viewBinding.maintainContentLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - new BottomListSheetBuilder(context) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - viewBinding.maintainView.setText(tag); - viewBinding.maintainView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - }).build().show(); - } - }); - - String systemDate = LongHub.timestampToDate(System.currentTimeMillis()); - viewBinding.maintainDateView.setText(systemDate); - viewBinding.liablePersonView.setText(StringHelper.getUserBean().getAccount()); - - viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - LocationHelper.obtainCurrentLocation(context, new ILocationListener() { - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (TextUtils.isEmpty(bridgeId)) { - StringHub.show(context, "请先选择养护的桥梁"); - return; - } - String maintainContent = viewBinding.maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - StringHub.show(context, "请选择养护的内容"); - return; - } - LatLonPoint latLonPoint = new LatLonPoint(aMapLocation.getLatitude(), aMapLocation.getLongitude()); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - Log.d(TAG, "onGetAddress: " + address); - SaveKeyValues.putValue("maintainAddress", address); - - //提交养护记录 - bridgeViewModel.submitMaintain( - bridgeId, - maintainContent, - viewBinding.maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), - String.valueOf(aMapLocation.getLongitude()), - String.valueOf(aMapLocation.getLatitude()), - StringHub.filterSpaceOrEnter(viewBinding.remarksView.getText().toString()) - ); - } - }); - } - }, true); - } - }); - bridgeViewModel.submitResultModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.getCode() == 200) { - new SignInDialog.Builder() - .setContext(context) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - ContextHub.navigatePageTo(context, MaintainRecordActivity.class); - } - }).build().show(); - } - } - }); - bridgeViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "养护记录签到中,请稍后"); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - } -} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b18fd67..32535b5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -103,8 +103,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java index 21490f0..18a7105 100644 --- a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java @@ -12,12 +12,12 @@ import com.casic.dcms.model.UserBean; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.view.BridgeMaintainActivity; import com.casic.dcms.view.OvertimeCaseActivity; import com.casic.dcms.view.PersonActivity; import com.casic.dcms.view.PipelineManagerActivity; import com.casic.dcms.view.SearchCaseActivity; import com.casic.dcms.view.StreetlightManagerActivity; +import com.casic.dcms.view.bridge.BridgeMaintainActivity; import com.casic.dcms.view.business.ChangeShopInfoActivity; import com.casic.dcms.view.business.PackageCaseActivity; import com.casic.dcms.view.check.CheckCaseActivity; diff --git a/app/src/main/java/com/casic/dcms/view/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/view/BridgeMaintainActivity.java deleted file mode 100644 index 817fe40..0000000 --- a/app/src/main/java/com/casic/dcms/view/BridgeMaintainActivity.java +++ /dev/null @@ -1,192 +0,0 @@ -package com.casic.dcms.view; - -import android.content.Context; -import android.text.TextUtils; -import android.util.Log; -import android.view.View; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityBridgeBinding; -import com.casic.dcms.model.ActionResultBean; -import com.casic.dcms.model.BridgeConfigBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.vm.BridgeViewModel; -import com.casic.dcms.widgets.SignInDialog; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.IntHub; -import com.pengxh.androidx.lite.hub.LongHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.utils.SaveKeyValues; -import com.pengxh.androidx.lite.vm.LoadState; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder; - -import java.util.List; - -public class BridgeMaintainActivity extends AndroidxBaseActivity { - - private static final String TAG = "BridgeMaintainActivity"; - private final Context context = BridgeMaintainActivity.this; - private BridgeViewModel bridgeViewModel; - private String bridgeId = ""; - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); - ImmersionBar.with(this).statusBarDarkFont(true).init(); - - viewBinding.titleBarLayout.titleView.setText("路桥养护"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - ContextHub.navigatePageTo(context, MaintainRecordActivity.class); - } - }); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class); - } - - @Override - protected void initEvent() { - viewBinding.bridgeLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - StringHub.show(context, "获取桥梁数据异常"); - return; - } - BottomListSheetBuilder sheetBuilder = new BottomListSheetBuilder(context); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - bridgeId = String.valueOf(bridges.get(position).getId()); - viewBinding.bridgeNameView.setText(tag); - viewBinding.bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - }).build().show(); - } - }); - - viewBinding.maintainContentLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - new BottomListSheetBuilder(context) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - viewBinding.maintainView.setText(tag); - viewBinding.maintainView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - }).build().show(); - } - }); - - String systemDate = LongHub.timestampToDate(System.currentTimeMillis()); - viewBinding.maintainDateView.setText(systemDate); - viewBinding.liablePersonView.setText(StringHelper.getUserBean().getAccount()); - - viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - LocationHelper.obtainCurrentLocation(context, new ILocationListener() { - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (TextUtils.isEmpty(bridgeId)) { - StringHub.show(context, "请先选择养护的桥梁"); - return; - } - String maintainContent = viewBinding.maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - StringHub.show(context, "请选择养护的内容"); - return; - } - LatLonPoint latLonPoint = new LatLonPoint(aMapLocation.getLatitude(), aMapLocation.getLongitude()); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - Log.d(TAG, "onGetAddress: " + address); - SaveKeyValues.putValue("maintainAddress", address); - - //提交养护记录 - bridgeViewModel.submitMaintain( - bridgeId, - maintainContent, - viewBinding.maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), - String.valueOf(aMapLocation.getLongitude()), - String.valueOf(aMapLocation.getLatitude()), - StringHub.filterSpaceOrEnter(viewBinding.remarksView.getText().toString()) - ); - } - }); - } - }, true); - } - }); - bridgeViewModel.submitResultModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.getCode() == 200) { - new SignInDialog.Builder() - .setContext(context) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - ContextHub.navigatePageTo(context, MaintainRecordActivity.class); - } - }).build().show(); - } - } - }); - bridgeViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "养护记录签到中,请稍后"); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/view/MaintainRecordActivity.java deleted file mode 100644 index 6f35405..0000000 --- a/app/src/main/java/com/casic/dcms/view/MaintainRecordActivity.java +++ /dev/null @@ -1,183 +0,0 @@ -package com.casic.dcms.view; - -import android.content.Context; -import android.os.Handler; -import android.text.TextUtils; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityMaintainRecordBinding; -import com.casic.dcms.model.MaintainRecordBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.vm.BridgeViewModel; -import com.casic.dcms.widgets.RangeDateActionSheet; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; -import com.pengxh.androidx.lite.adapter.ViewHolder; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.divider.ItemDecoration; -import com.pengxh.androidx.lite.hub.FloatHub; -import com.pengxh.androidx.lite.hub.IntHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.utils.WeakReferenceHandler; -import com.pengxh.androidx.lite.vm.LoadState; -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 MaintainRecordActivity extends AndroidxBaseActivity { - - private final Context context = MaintainRecordActivity.this; - private BridgeViewModel bridgeViewModel; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private NormalRecyclerAdapter adapter; - private int pageIndex = 1; - private boolean isRefresh = false; - private boolean isLoadMore = false; - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); - ImmersionBar.with(this).statusBarDarkFont(true).init(); - - viewBinding.titleBarLayout.titleView.setText("桥梁养护记录"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - bridgeViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "查询记录中,请稍后"); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - } - - @Override - protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(callback); - bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class); - bridgeViewModel.recordModel.observe(this, new Observer() { - @Override - public void onChanged(MaintainRecordBean resultBean) { - if (resultBean.getCode() == 200) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - adapter.setRefreshData(dataRows); - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(context, "到底了,别拉了"); - } - adapter.setLoadMoreData(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - } - }); - } - - @Override - protected void onResume() { - super.onResume(); - pageIndex = 1; - obtainMaintainRecord("", ""); - } - - @Override - protected void initEvent() { - viewBinding.calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - new RangeDateActionSheet.Builder().setContext(context).setOnActionSheetListener(new RangeDateActionSheet.OnDateRangeSelectedListener() { - @Override - public void onDateRangeSelected(String startDate, String endDate) { - viewBinding.dateView.setText(startDate + "~" + endDate); - - pageIndex = 1; - obtainMaintainRecord(startDate, endDate); - } - }).build().show(); - } - }); - viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - obtainMaintainRecord("", ""); - } - }); - viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - obtainMaintainRecord("", ""); - } - }); - } - - private void obtainMaintainRecord(String start, String end) { - bridgeViewModel.obtainMaintainRecord(start, end, pageIndex); - } - - private final Handler.Callback callback = msg -> { - if (msg.what == 20210622) { - if (dataBeans.size() == 0) { - viewBinding.emptyView.show(false, "抱歉,没有查到相关养护记录", null, "刷新", new View.OnClickListener() { - @Override - public void onClick(View v) { - pageIndex = 1; - obtainMaintainRecord("", ""); - } - }); - } else { - viewBinding.emptyView.hide(); - adapter = new NormalRecyclerAdapter(R.layout.item_maintain_rv_l, dataBeans) { - @Override - public void convertView(ViewHolder viewHolder, int position, MaintainRecordBean.DataBean.RowsBean item) { - String description = item.getDescription(); - if (TextUtils.isEmpty(description)) { - viewHolder.setVisibility(R.id.descriptionImageView, View.GONE); - } else { - viewHolder.setVisibility(R.id.descriptionImageView, View.VISIBLE); - viewHolder.setOnClickListener(R.id.descriptionImageView, new View.OnClickListener() { - @Override - public void onClick(View v) { - StringHub.show(context, description); - } - }); - } - viewHolder.setText(R.id.bridgeNameView, item.getBridgeName()) - .setText(R.id.maintainContentView, item.getContent()) - .setText(R.id.maintainTimeView, item.getMaintainTimeStr()); - } - }; - viewBinding.recordRecyclerView.addItemDecoration(new ItemDecoration(FloatHub.dp2px(context, 10), 0f)); - viewBinding.recordRecyclerView.setAdapter(adapter); - } - } - return true; - }; -} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b18fd67..32535b5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -103,8 +103,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java index 21490f0..18a7105 100644 --- a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java @@ -12,12 +12,12 @@ import com.casic.dcms.model.UserBean; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.view.BridgeMaintainActivity; import com.casic.dcms.view.OvertimeCaseActivity; import com.casic.dcms.view.PersonActivity; import com.casic.dcms.view.PipelineManagerActivity; import com.casic.dcms.view.SearchCaseActivity; import com.casic.dcms.view.StreetlightManagerActivity; +import com.casic.dcms.view.bridge.BridgeMaintainActivity; import com.casic.dcms.view.business.ChangeShopInfoActivity; import com.casic.dcms.view.business.PackageCaseActivity; import com.casic.dcms.view.check.CheckCaseActivity; diff --git a/app/src/main/java/com/casic/dcms/view/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/view/BridgeMaintainActivity.java deleted file mode 100644 index 817fe40..0000000 --- a/app/src/main/java/com/casic/dcms/view/BridgeMaintainActivity.java +++ /dev/null @@ -1,192 +0,0 @@ -package com.casic.dcms.view; - -import android.content.Context; -import android.text.TextUtils; -import android.util.Log; -import android.view.View; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityBridgeBinding; -import com.casic.dcms.model.ActionResultBean; -import com.casic.dcms.model.BridgeConfigBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.vm.BridgeViewModel; -import com.casic.dcms.widgets.SignInDialog; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.IntHub; -import com.pengxh.androidx.lite.hub.LongHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.utils.SaveKeyValues; -import com.pengxh.androidx.lite.vm.LoadState; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder; - -import java.util.List; - -public class BridgeMaintainActivity extends AndroidxBaseActivity { - - private static final String TAG = "BridgeMaintainActivity"; - private final Context context = BridgeMaintainActivity.this; - private BridgeViewModel bridgeViewModel; - private String bridgeId = ""; - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); - ImmersionBar.with(this).statusBarDarkFont(true).init(); - - viewBinding.titleBarLayout.titleView.setText("路桥养护"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - ContextHub.navigatePageTo(context, MaintainRecordActivity.class); - } - }); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class); - } - - @Override - protected void initEvent() { - viewBinding.bridgeLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - StringHub.show(context, "获取桥梁数据异常"); - return; - } - BottomListSheetBuilder sheetBuilder = new BottomListSheetBuilder(context); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - bridgeId = String.valueOf(bridges.get(position).getId()); - viewBinding.bridgeNameView.setText(tag); - viewBinding.bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - }).build().show(); - } - }); - - viewBinding.maintainContentLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - new BottomListSheetBuilder(context) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - viewBinding.maintainView.setText(tag); - viewBinding.maintainView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - }).build().show(); - } - }); - - String systemDate = LongHub.timestampToDate(System.currentTimeMillis()); - viewBinding.maintainDateView.setText(systemDate); - viewBinding.liablePersonView.setText(StringHelper.getUserBean().getAccount()); - - viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - LocationHelper.obtainCurrentLocation(context, new ILocationListener() { - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (TextUtils.isEmpty(bridgeId)) { - StringHub.show(context, "请先选择养护的桥梁"); - return; - } - String maintainContent = viewBinding.maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - StringHub.show(context, "请选择养护的内容"); - return; - } - LatLonPoint latLonPoint = new LatLonPoint(aMapLocation.getLatitude(), aMapLocation.getLongitude()); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - Log.d(TAG, "onGetAddress: " + address); - SaveKeyValues.putValue("maintainAddress", address); - - //提交养护记录 - bridgeViewModel.submitMaintain( - bridgeId, - maintainContent, - viewBinding.maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), - String.valueOf(aMapLocation.getLongitude()), - String.valueOf(aMapLocation.getLatitude()), - StringHub.filterSpaceOrEnter(viewBinding.remarksView.getText().toString()) - ); - } - }); - } - }, true); - } - }); - bridgeViewModel.submitResultModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.getCode() == 200) { - new SignInDialog.Builder() - .setContext(context) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - ContextHub.navigatePageTo(context, MaintainRecordActivity.class); - } - }).build().show(); - } - } - }); - bridgeViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "养护记录签到中,请稍后"); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/view/MaintainRecordActivity.java deleted file mode 100644 index 6f35405..0000000 --- a/app/src/main/java/com/casic/dcms/view/MaintainRecordActivity.java +++ /dev/null @@ -1,183 +0,0 @@ -package com.casic.dcms.view; - -import android.content.Context; -import android.os.Handler; -import android.text.TextUtils; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityMaintainRecordBinding; -import com.casic.dcms.model.MaintainRecordBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.vm.BridgeViewModel; -import com.casic.dcms.widgets.RangeDateActionSheet; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; -import com.pengxh.androidx.lite.adapter.ViewHolder; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.divider.ItemDecoration; -import com.pengxh.androidx.lite.hub.FloatHub; -import com.pengxh.androidx.lite.hub.IntHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.utils.WeakReferenceHandler; -import com.pengxh.androidx.lite.vm.LoadState; -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 MaintainRecordActivity extends AndroidxBaseActivity { - - private final Context context = MaintainRecordActivity.this; - private BridgeViewModel bridgeViewModel; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private NormalRecyclerAdapter adapter; - private int pageIndex = 1; - private boolean isRefresh = false; - private boolean isLoadMore = false; - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); - ImmersionBar.with(this).statusBarDarkFont(true).init(); - - viewBinding.titleBarLayout.titleView.setText("桥梁养护记录"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - bridgeViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "查询记录中,请稍后"); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - } - - @Override - protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(callback); - bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class); - bridgeViewModel.recordModel.observe(this, new Observer() { - @Override - public void onChanged(MaintainRecordBean resultBean) { - if (resultBean.getCode() == 200) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - adapter.setRefreshData(dataRows); - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(context, "到底了,别拉了"); - } - adapter.setLoadMoreData(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - } - }); - } - - @Override - protected void onResume() { - super.onResume(); - pageIndex = 1; - obtainMaintainRecord("", ""); - } - - @Override - protected void initEvent() { - viewBinding.calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - new RangeDateActionSheet.Builder().setContext(context).setOnActionSheetListener(new RangeDateActionSheet.OnDateRangeSelectedListener() { - @Override - public void onDateRangeSelected(String startDate, String endDate) { - viewBinding.dateView.setText(startDate + "~" + endDate); - - pageIndex = 1; - obtainMaintainRecord(startDate, endDate); - } - }).build().show(); - } - }); - viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - obtainMaintainRecord("", ""); - } - }); - viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - obtainMaintainRecord("", ""); - } - }); - } - - private void obtainMaintainRecord(String start, String end) { - bridgeViewModel.obtainMaintainRecord(start, end, pageIndex); - } - - private final Handler.Callback callback = msg -> { - if (msg.what == 20210622) { - if (dataBeans.size() == 0) { - viewBinding.emptyView.show(false, "抱歉,没有查到相关养护记录", null, "刷新", new View.OnClickListener() { - @Override - public void onClick(View v) { - pageIndex = 1; - obtainMaintainRecord("", ""); - } - }); - } else { - viewBinding.emptyView.hide(); - adapter = new NormalRecyclerAdapter(R.layout.item_maintain_rv_l, dataBeans) { - @Override - public void convertView(ViewHolder viewHolder, int position, MaintainRecordBean.DataBean.RowsBean item) { - String description = item.getDescription(); - if (TextUtils.isEmpty(description)) { - viewHolder.setVisibility(R.id.descriptionImageView, View.GONE); - } else { - viewHolder.setVisibility(R.id.descriptionImageView, View.VISIBLE); - viewHolder.setOnClickListener(R.id.descriptionImageView, new View.OnClickListener() { - @Override - public void onClick(View v) { - StringHub.show(context, description); - } - }); - } - viewHolder.setText(R.id.bridgeNameView, item.getBridgeName()) - .setText(R.id.maintainContentView, item.getContent()) - .setText(R.id.maintainTimeView, item.getMaintainTimeStr()); - } - }; - viewBinding.recordRecyclerView.addItemDecoration(new ItemDecoration(FloatHub.dp2px(context, 10), 0f)); - viewBinding.recordRecyclerView.setAdapter(adapter); - } - } - return true; - }; -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/view/PipelineManagerActivity.java index 29f73b6..c619ef3 100644 --- a/app/src/main/java/com/casic/dcms/view/PipelineManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/view/PipelineManagerActivity.java @@ -15,6 +15,7 @@ import com.casic.dcms.databinding.ActivityPipeBinding; import com.casic.dcms.model.ActionResultBean; import com.casic.dcms.model.AlarmDataBean; +import com.casic.dcms.utils.DialogHelper; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.view.map.WarningOnMapActivity; import com.casic.dcms.vm.AlarmViewModel; @@ -23,6 +24,8 @@ import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.divider.ItemDecoration; +import com.pengxh.androidx.lite.hub.FloatHub; import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.hub.StringHub; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; @@ -87,7 +90,11 @@ alarmViewModel.loadState.observe(this, new Observer() { @Override public void onChanged(LoadState loadState) { - + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "数据加载中,请稍后"); + } else { + DialogHelper.dismissLoadingDialog(); + } } }); } @@ -196,6 +203,7 @@ }); } }; + viewBinding.warningRecyclerView.addItemDecoration(new ItemDecoration(FloatHub.dp2px(context, 10), 0f)); viewBinding.warningRecyclerView.setAdapter(adapter); } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b18fd67..32535b5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -103,8 +103,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java index 21490f0..18a7105 100644 --- a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java @@ -12,12 +12,12 @@ import com.casic.dcms.model.UserBean; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.view.BridgeMaintainActivity; import com.casic.dcms.view.OvertimeCaseActivity; import com.casic.dcms.view.PersonActivity; import com.casic.dcms.view.PipelineManagerActivity; import com.casic.dcms.view.SearchCaseActivity; import com.casic.dcms.view.StreetlightManagerActivity; +import com.casic.dcms.view.bridge.BridgeMaintainActivity; import com.casic.dcms.view.business.ChangeShopInfoActivity; import com.casic.dcms.view.business.PackageCaseActivity; import com.casic.dcms.view.check.CheckCaseActivity; diff --git a/app/src/main/java/com/casic/dcms/view/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/view/BridgeMaintainActivity.java deleted file mode 100644 index 817fe40..0000000 --- a/app/src/main/java/com/casic/dcms/view/BridgeMaintainActivity.java +++ /dev/null @@ -1,192 +0,0 @@ -package com.casic.dcms.view; - -import android.content.Context; -import android.text.TextUtils; -import android.util.Log; -import android.view.View; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityBridgeBinding; -import com.casic.dcms.model.ActionResultBean; -import com.casic.dcms.model.BridgeConfigBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.vm.BridgeViewModel; -import com.casic.dcms.widgets.SignInDialog; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.IntHub; -import com.pengxh.androidx.lite.hub.LongHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.utils.SaveKeyValues; -import com.pengxh.androidx.lite.vm.LoadState; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder; - -import java.util.List; - -public class BridgeMaintainActivity extends AndroidxBaseActivity { - - private static final String TAG = "BridgeMaintainActivity"; - private final Context context = BridgeMaintainActivity.this; - private BridgeViewModel bridgeViewModel; - private String bridgeId = ""; - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); - ImmersionBar.with(this).statusBarDarkFont(true).init(); - - viewBinding.titleBarLayout.titleView.setText("路桥养护"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - ContextHub.navigatePageTo(context, MaintainRecordActivity.class); - } - }); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class); - } - - @Override - protected void initEvent() { - viewBinding.bridgeLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - StringHub.show(context, "获取桥梁数据异常"); - return; - } - BottomListSheetBuilder sheetBuilder = new BottomListSheetBuilder(context); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - bridgeId = String.valueOf(bridges.get(position).getId()); - viewBinding.bridgeNameView.setText(tag); - viewBinding.bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - }).build().show(); - } - }); - - viewBinding.maintainContentLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - new BottomListSheetBuilder(context) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - viewBinding.maintainView.setText(tag); - viewBinding.maintainView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - }).build().show(); - } - }); - - String systemDate = LongHub.timestampToDate(System.currentTimeMillis()); - viewBinding.maintainDateView.setText(systemDate); - viewBinding.liablePersonView.setText(StringHelper.getUserBean().getAccount()); - - viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - LocationHelper.obtainCurrentLocation(context, new ILocationListener() { - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (TextUtils.isEmpty(bridgeId)) { - StringHub.show(context, "请先选择养护的桥梁"); - return; - } - String maintainContent = viewBinding.maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - StringHub.show(context, "请选择养护的内容"); - return; - } - LatLonPoint latLonPoint = new LatLonPoint(aMapLocation.getLatitude(), aMapLocation.getLongitude()); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - Log.d(TAG, "onGetAddress: " + address); - SaveKeyValues.putValue("maintainAddress", address); - - //提交养护记录 - bridgeViewModel.submitMaintain( - bridgeId, - maintainContent, - viewBinding.maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), - String.valueOf(aMapLocation.getLongitude()), - String.valueOf(aMapLocation.getLatitude()), - StringHub.filterSpaceOrEnter(viewBinding.remarksView.getText().toString()) - ); - } - }); - } - }, true); - } - }); - bridgeViewModel.submitResultModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.getCode() == 200) { - new SignInDialog.Builder() - .setContext(context) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - ContextHub.navigatePageTo(context, MaintainRecordActivity.class); - } - }).build().show(); - } - } - }); - bridgeViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "养护记录签到中,请稍后"); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/view/MaintainRecordActivity.java deleted file mode 100644 index 6f35405..0000000 --- a/app/src/main/java/com/casic/dcms/view/MaintainRecordActivity.java +++ /dev/null @@ -1,183 +0,0 @@ -package com.casic.dcms.view; - -import android.content.Context; -import android.os.Handler; -import android.text.TextUtils; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityMaintainRecordBinding; -import com.casic.dcms.model.MaintainRecordBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.vm.BridgeViewModel; -import com.casic.dcms.widgets.RangeDateActionSheet; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; -import com.pengxh.androidx.lite.adapter.ViewHolder; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.divider.ItemDecoration; -import com.pengxh.androidx.lite.hub.FloatHub; -import com.pengxh.androidx.lite.hub.IntHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.utils.WeakReferenceHandler; -import com.pengxh.androidx.lite.vm.LoadState; -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 MaintainRecordActivity extends AndroidxBaseActivity { - - private final Context context = MaintainRecordActivity.this; - private BridgeViewModel bridgeViewModel; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private NormalRecyclerAdapter adapter; - private int pageIndex = 1; - private boolean isRefresh = false; - private boolean isLoadMore = false; - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); - ImmersionBar.with(this).statusBarDarkFont(true).init(); - - viewBinding.titleBarLayout.titleView.setText("桥梁养护记录"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - bridgeViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "查询记录中,请稍后"); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - } - - @Override - protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(callback); - bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class); - bridgeViewModel.recordModel.observe(this, new Observer() { - @Override - public void onChanged(MaintainRecordBean resultBean) { - if (resultBean.getCode() == 200) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - adapter.setRefreshData(dataRows); - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(context, "到底了,别拉了"); - } - adapter.setLoadMoreData(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - } - }); - } - - @Override - protected void onResume() { - super.onResume(); - pageIndex = 1; - obtainMaintainRecord("", ""); - } - - @Override - protected void initEvent() { - viewBinding.calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - new RangeDateActionSheet.Builder().setContext(context).setOnActionSheetListener(new RangeDateActionSheet.OnDateRangeSelectedListener() { - @Override - public void onDateRangeSelected(String startDate, String endDate) { - viewBinding.dateView.setText(startDate + "~" + endDate); - - pageIndex = 1; - obtainMaintainRecord(startDate, endDate); - } - }).build().show(); - } - }); - viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - obtainMaintainRecord("", ""); - } - }); - viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - obtainMaintainRecord("", ""); - } - }); - } - - private void obtainMaintainRecord(String start, String end) { - bridgeViewModel.obtainMaintainRecord(start, end, pageIndex); - } - - private final Handler.Callback callback = msg -> { - if (msg.what == 20210622) { - if (dataBeans.size() == 0) { - viewBinding.emptyView.show(false, "抱歉,没有查到相关养护记录", null, "刷新", new View.OnClickListener() { - @Override - public void onClick(View v) { - pageIndex = 1; - obtainMaintainRecord("", ""); - } - }); - } else { - viewBinding.emptyView.hide(); - adapter = new NormalRecyclerAdapter(R.layout.item_maintain_rv_l, dataBeans) { - @Override - public void convertView(ViewHolder viewHolder, int position, MaintainRecordBean.DataBean.RowsBean item) { - String description = item.getDescription(); - if (TextUtils.isEmpty(description)) { - viewHolder.setVisibility(R.id.descriptionImageView, View.GONE); - } else { - viewHolder.setVisibility(R.id.descriptionImageView, View.VISIBLE); - viewHolder.setOnClickListener(R.id.descriptionImageView, new View.OnClickListener() { - @Override - public void onClick(View v) { - StringHub.show(context, description); - } - }); - } - viewHolder.setText(R.id.bridgeNameView, item.getBridgeName()) - .setText(R.id.maintainContentView, item.getContent()) - .setText(R.id.maintainTimeView, item.getMaintainTimeStr()); - } - }; - viewBinding.recordRecyclerView.addItemDecoration(new ItemDecoration(FloatHub.dp2px(context, 10), 0f)); - viewBinding.recordRecyclerView.setAdapter(adapter); - } - } - return true; - }; -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/view/PipelineManagerActivity.java index 29f73b6..c619ef3 100644 --- a/app/src/main/java/com/casic/dcms/view/PipelineManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/view/PipelineManagerActivity.java @@ -15,6 +15,7 @@ import com.casic.dcms.databinding.ActivityPipeBinding; import com.casic.dcms.model.ActionResultBean; import com.casic.dcms.model.AlarmDataBean; +import com.casic.dcms.utils.DialogHelper; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.view.map.WarningOnMapActivity; import com.casic.dcms.vm.AlarmViewModel; @@ -23,6 +24,8 @@ import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.divider.ItemDecoration; +import com.pengxh.androidx.lite.hub.FloatHub; import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.hub.StringHub; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; @@ -87,7 +90,11 @@ alarmViewModel.loadState.observe(this, new Observer() { @Override public void onChanged(LoadState loadState) { - + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "数据加载中,请稍后"); + } else { + DialogHelper.dismissLoadingDialog(); + } } }); } @@ -196,6 +203,7 @@ }); } }; + viewBinding.warningRecyclerView.addItemDecoration(new ItemDecoration(FloatHub.dp2px(context, 10), 0f)); viewBinding.warningRecyclerView.setAdapter(adapter); } } diff --git a/app/src/main/java/com/casic/dcms/view/bridge/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/view/bridge/BridgeMaintainActivity.java new file mode 100644 index 0000000..857866b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/bridge/BridgeMaintainActivity.java @@ -0,0 +1,191 @@ +package com.casic.dcms.view.bridge; + +import android.content.Context; +import android.text.TextUtils; +import android.util.Log; +import android.view.View; + +import androidx.core.content.ContextCompat; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.amap.api.location.AMapLocation; +import com.amap.api.services.core.LatLonPoint; +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityBridgeBinding; +import com.casic.dcms.model.ActionResultBean; +import com.casic.dcms.model.BridgeConfigBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.utils.LocationHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IAddressListener; +import com.casic.dcms.utils.callback.ILocationListener; +import com.casic.dcms.vm.BridgeViewModel; +import com.casic.dcms.widgets.SignInDialog; +import com.gyf.immersionbar.ImmersionBar; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.LongHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.utils.SaveKeyValues; +import com.pengxh.androidx.lite.vm.LoadState; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder; + +import java.util.List; + +public class BridgeMaintainActivity extends AndroidxBaseActivity { + + private static final String TAG = "BridgeMaintainActivity"; + private final Context context = BridgeMaintainActivity.this; + private BridgeViewModel bridgeViewModel; + private String bridgeId = ""; + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("路桥养护"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ContextHub.navigatePageTo(context, MaintainRecordActivity.class); + } + }); + } + + @Override + protected void observeRequestState() { + bridgeViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "养护记录签到中,请稍后"); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class); + bridgeViewModel.submitResultModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); + if (resultBean.getCode() == 200) { + new SignInDialog.Builder() + .setContext(context) + .setTitle("桥梁养护记录提交成功") + .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) + .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { + @Override + public void onViewClick() { + ContextHub.navigatePageTo(context, MaintainRecordActivity.class); + } + }).build().show(); + } + } + }); + } + + @Override + protected void initEvent() { + viewBinding.bridgeLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + List bridges = StringHelper.getBridgeBeanList(); + if (bridges.size() == 0) { + StringHub.show(context, "获取桥梁数据异常"); + return; + } + BottomListSheetBuilder sheetBuilder = new BottomListSheetBuilder(context); + sheetBuilder.setTitle("选择桥梁"); + for (BridgeConfigBean.BridgesBean bean : bridges) { + sheetBuilder.addItem(bean.getName()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + bridgeId = String.valueOf(bridges.get(position).getId()); + viewBinding.bridgeNameView.setText(tag); + viewBinding.bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); + } + }).build().show(); + } + }); + + viewBinding.maintainContentLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + new BottomListSheetBuilder(context) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener(new BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + viewBinding.maintainView.setText(tag); + viewBinding.maintainView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); + } + }).build().show(); + } + }); + + String systemDate = LongHub.timestampToDate(System.currentTimeMillis()); + viewBinding.maintainDateView.setText(systemDate); + viewBinding.liablePersonView.setText(StringHelper.getUserBean().getAccount()); + + viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + LocationHelper.obtainCurrentLocation(context, new ILocationListener() { + + @Override + public void onAMapLocationGet(AMapLocation aMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + StringHub.show(context, "请先选择养护的桥梁"); + return; + } + String maintainContent = viewBinding.maintainView.getText().toString(); + if (TextUtils.isEmpty(maintainContent)) { + StringHub.show(context, "请选择养护的内容"); + return; + } + LatLonPoint latLonPoint = new LatLonPoint(aMapLocation.getLatitude(), aMapLocation.getLongitude()); + LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { + @Override + public void onGetAddress(String address) { + Log.d(TAG, "onGetAddress: " + address); + SaveKeyValues.putValue("maintainAddress", address); + + //提交养护记录 + bridgeViewModel.submitMaintain( + bridgeId, + maintainContent, + viewBinding.maintainDateView.getText().toString(), + StringHelper.getUserBean().getId(), + String.valueOf(aMapLocation.getLongitude()), + String.valueOf(aMapLocation.getLatitude()), + StringHub.filterSpaceOrEnter(viewBinding.remarksView.getText().toString()) + ); + } + }); + } + }, true); + } + }); + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b18fd67..32535b5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -103,8 +103,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java index 21490f0..18a7105 100644 --- a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java @@ -12,12 +12,12 @@ import com.casic.dcms.model.UserBean; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.view.BridgeMaintainActivity; import com.casic.dcms.view.OvertimeCaseActivity; import com.casic.dcms.view.PersonActivity; import com.casic.dcms.view.PipelineManagerActivity; import com.casic.dcms.view.SearchCaseActivity; import com.casic.dcms.view.StreetlightManagerActivity; +import com.casic.dcms.view.bridge.BridgeMaintainActivity; import com.casic.dcms.view.business.ChangeShopInfoActivity; import com.casic.dcms.view.business.PackageCaseActivity; import com.casic.dcms.view.check.CheckCaseActivity; diff --git a/app/src/main/java/com/casic/dcms/view/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/view/BridgeMaintainActivity.java deleted file mode 100644 index 817fe40..0000000 --- a/app/src/main/java/com/casic/dcms/view/BridgeMaintainActivity.java +++ /dev/null @@ -1,192 +0,0 @@ -package com.casic.dcms.view; - -import android.content.Context; -import android.text.TextUtils; -import android.util.Log; -import android.view.View; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityBridgeBinding; -import com.casic.dcms.model.ActionResultBean; -import com.casic.dcms.model.BridgeConfigBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.vm.BridgeViewModel; -import com.casic.dcms.widgets.SignInDialog; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.IntHub; -import com.pengxh.androidx.lite.hub.LongHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.utils.SaveKeyValues; -import com.pengxh.androidx.lite.vm.LoadState; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder; - -import java.util.List; - -public class BridgeMaintainActivity extends AndroidxBaseActivity { - - private static final String TAG = "BridgeMaintainActivity"; - private final Context context = BridgeMaintainActivity.this; - private BridgeViewModel bridgeViewModel; - private String bridgeId = ""; - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); - ImmersionBar.with(this).statusBarDarkFont(true).init(); - - viewBinding.titleBarLayout.titleView.setText("路桥养护"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - ContextHub.navigatePageTo(context, MaintainRecordActivity.class); - } - }); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class); - } - - @Override - protected void initEvent() { - viewBinding.bridgeLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - StringHub.show(context, "获取桥梁数据异常"); - return; - } - BottomListSheetBuilder sheetBuilder = new BottomListSheetBuilder(context); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - bridgeId = String.valueOf(bridges.get(position).getId()); - viewBinding.bridgeNameView.setText(tag); - viewBinding.bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - }).build().show(); - } - }); - - viewBinding.maintainContentLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - new BottomListSheetBuilder(context) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - viewBinding.maintainView.setText(tag); - viewBinding.maintainView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - }).build().show(); - } - }); - - String systemDate = LongHub.timestampToDate(System.currentTimeMillis()); - viewBinding.maintainDateView.setText(systemDate); - viewBinding.liablePersonView.setText(StringHelper.getUserBean().getAccount()); - - viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - LocationHelper.obtainCurrentLocation(context, new ILocationListener() { - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (TextUtils.isEmpty(bridgeId)) { - StringHub.show(context, "请先选择养护的桥梁"); - return; - } - String maintainContent = viewBinding.maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - StringHub.show(context, "请选择养护的内容"); - return; - } - LatLonPoint latLonPoint = new LatLonPoint(aMapLocation.getLatitude(), aMapLocation.getLongitude()); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - Log.d(TAG, "onGetAddress: " + address); - SaveKeyValues.putValue("maintainAddress", address); - - //提交养护记录 - bridgeViewModel.submitMaintain( - bridgeId, - maintainContent, - viewBinding.maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), - String.valueOf(aMapLocation.getLongitude()), - String.valueOf(aMapLocation.getLatitude()), - StringHub.filterSpaceOrEnter(viewBinding.remarksView.getText().toString()) - ); - } - }); - } - }, true); - } - }); - bridgeViewModel.submitResultModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.getCode() == 200) { - new SignInDialog.Builder() - .setContext(context) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - ContextHub.navigatePageTo(context, MaintainRecordActivity.class); - } - }).build().show(); - } - } - }); - bridgeViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "养护记录签到中,请稍后"); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/view/MaintainRecordActivity.java deleted file mode 100644 index 6f35405..0000000 --- a/app/src/main/java/com/casic/dcms/view/MaintainRecordActivity.java +++ /dev/null @@ -1,183 +0,0 @@ -package com.casic.dcms.view; - -import android.content.Context; -import android.os.Handler; -import android.text.TextUtils; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityMaintainRecordBinding; -import com.casic.dcms.model.MaintainRecordBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.vm.BridgeViewModel; -import com.casic.dcms.widgets.RangeDateActionSheet; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; -import com.pengxh.androidx.lite.adapter.ViewHolder; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.divider.ItemDecoration; -import com.pengxh.androidx.lite.hub.FloatHub; -import com.pengxh.androidx.lite.hub.IntHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.utils.WeakReferenceHandler; -import com.pengxh.androidx.lite.vm.LoadState; -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 MaintainRecordActivity extends AndroidxBaseActivity { - - private final Context context = MaintainRecordActivity.this; - private BridgeViewModel bridgeViewModel; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private NormalRecyclerAdapter adapter; - private int pageIndex = 1; - private boolean isRefresh = false; - private boolean isLoadMore = false; - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); - ImmersionBar.with(this).statusBarDarkFont(true).init(); - - viewBinding.titleBarLayout.titleView.setText("桥梁养护记录"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - bridgeViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "查询记录中,请稍后"); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - } - - @Override - protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(callback); - bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class); - bridgeViewModel.recordModel.observe(this, new Observer() { - @Override - public void onChanged(MaintainRecordBean resultBean) { - if (resultBean.getCode() == 200) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - adapter.setRefreshData(dataRows); - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(context, "到底了,别拉了"); - } - adapter.setLoadMoreData(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - } - }); - } - - @Override - protected void onResume() { - super.onResume(); - pageIndex = 1; - obtainMaintainRecord("", ""); - } - - @Override - protected void initEvent() { - viewBinding.calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - new RangeDateActionSheet.Builder().setContext(context).setOnActionSheetListener(new RangeDateActionSheet.OnDateRangeSelectedListener() { - @Override - public void onDateRangeSelected(String startDate, String endDate) { - viewBinding.dateView.setText(startDate + "~" + endDate); - - pageIndex = 1; - obtainMaintainRecord(startDate, endDate); - } - }).build().show(); - } - }); - viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - obtainMaintainRecord("", ""); - } - }); - viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - obtainMaintainRecord("", ""); - } - }); - } - - private void obtainMaintainRecord(String start, String end) { - bridgeViewModel.obtainMaintainRecord(start, end, pageIndex); - } - - private final Handler.Callback callback = msg -> { - if (msg.what == 20210622) { - if (dataBeans.size() == 0) { - viewBinding.emptyView.show(false, "抱歉,没有查到相关养护记录", null, "刷新", new View.OnClickListener() { - @Override - public void onClick(View v) { - pageIndex = 1; - obtainMaintainRecord("", ""); - } - }); - } else { - viewBinding.emptyView.hide(); - adapter = new NormalRecyclerAdapter(R.layout.item_maintain_rv_l, dataBeans) { - @Override - public void convertView(ViewHolder viewHolder, int position, MaintainRecordBean.DataBean.RowsBean item) { - String description = item.getDescription(); - if (TextUtils.isEmpty(description)) { - viewHolder.setVisibility(R.id.descriptionImageView, View.GONE); - } else { - viewHolder.setVisibility(R.id.descriptionImageView, View.VISIBLE); - viewHolder.setOnClickListener(R.id.descriptionImageView, new View.OnClickListener() { - @Override - public void onClick(View v) { - StringHub.show(context, description); - } - }); - } - viewHolder.setText(R.id.bridgeNameView, item.getBridgeName()) - .setText(R.id.maintainContentView, item.getContent()) - .setText(R.id.maintainTimeView, item.getMaintainTimeStr()); - } - }; - viewBinding.recordRecyclerView.addItemDecoration(new ItemDecoration(FloatHub.dp2px(context, 10), 0f)); - viewBinding.recordRecyclerView.setAdapter(adapter); - } - } - return true; - }; -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/view/PipelineManagerActivity.java index 29f73b6..c619ef3 100644 --- a/app/src/main/java/com/casic/dcms/view/PipelineManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/view/PipelineManagerActivity.java @@ -15,6 +15,7 @@ import com.casic.dcms.databinding.ActivityPipeBinding; import com.casic.dcms.model.ActionResultBean; import com.casic.dcms.model.AlarmDataBean; +import com.casic.dcms.utils.DialogHelper; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.view.map.WarningOnMapActivity; import com.casic.dcms.vm.AlarmViewModel; @@ -23,6 +24,8 @@ import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.divider.ItemDecoration; +import com.pengxh.androidx.lite.hub.FloatHub; import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.hub.StringHub; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; @@ -87,7 +90,11 @@ alarmViewModel.loadState.observe(this, new Observer() { @Override public void onChanged(LoadState loadState) { - + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "数据加载中,请稍后"); + } else { + DialogHelper.dismissLoadingDialog(); + } } }); } @@ -196,6 +203,7 @@ }); } }; + viewBinding.warningRecyclerView.addItemDecoration(new ItemDecoration(FloatHub.dp2px(context, 10), 0f)); viewBinding.warningRecyclerView.setAdapter(adapter); } } diff --git a/app/src/main/java/com/casic/dcms/view/bridge/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/view/bridge/BridgeMaintainActivity.java new file mode 100644 index 0000000..857866b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/bridge/BridgeMaintainActivity.java @@ -0,0 +1,191 @@ +package com.casic.dcms.view.bridge; + +import android.content.Context; +import android.text.TextUtils; +import android.util.Log; +import android.view.View; + +import androidx.core.content.ContextCompat; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.amap.api.location.AMapLocation; +import com.amap.api.services.core.LatLonPoint; +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityBridgeBinding; +import com.casic.dcms.model.ActionResultBean; +import com.casic.dcms.model.BridgeConfigBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.utils.LocationHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IAddressListener; +import com.casic.dcms.utils.callback.ILocationListener; +import com.casic.dcms.vm.BridgeViewModel; +import com.casic.dcms.widgets.SignInDialog; +import com.gyf.immersionbar.ImmersionBar; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.LongHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.utils.SaveKeyValues; +import com.pengxh.androidx.lite.vm.LoadState; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder; + +import java.util.List; + +public class BridgeMaintainActivity extends AndroidxBaseActivity { + + private static final String TAG = "BridgeMaintainActivity"; + private final Context context = BridgeMaintainActivity.this; + private BridgeViewModel bridgeViewModel; + private String bridgeId = ""; + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("路桥养护"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ContextHub.navigatePageTo(context, MaintainRecordActivity.class); + } + }); + } + + @Override + protected void observeRequestState() { + bridgeViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "养护记录签到中,请稍后"); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class); + bridgeViewModel.submitResultModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); + if (resultBean.getCode() == 200) { + new SignInDialog.Builder() + .setContext(context) + .setTitle("桥梁养护记录提交成功") + .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) + .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { + @Override + public void onViewClick() { + ContextHub.navigatePageTo(context, MaintainRecordActivity.class); + } + }).build().show(); + } + } + }); + } + + @Override + protected void initEvent() { + viewBinding.bridgeLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + List bridges = StringHelper.getBridgeBeanList(); + if (bridges.size() == 0) { + StringHub.show(context, "获取桥梁数据异常"); + return; + } + BottomListSheetBuilder sheetBuilder = new BottomListSheetBuilder(context); + sheetBuilder.setTitle("选择桥梁"); + for (BridgeConfigBean.BridgesBean bean : bridges) { + sheetBuilder.addItem(bean.getName()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + bridgeId = String.valueOf(bridges.get(position).getId()); + viewBinding.bridgeNameView.setText(tag); + viewBinding.bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); + } + }).build().show(); + } + }); + + viewBinding.maintainContentLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + new BottomListSheetBuilder(context) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener(new BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + viewBinding.maintainView.setText(tag); + viewBinding.maintainView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); + } + }).build().show(); + } + }); + + String systemDate = LongHub.timestampToDate(System.currentTimeMillis()); + viewBinding.maintainDateView.setText(systemDate); + viewBinding.liablePersonView.setText(StringHelper.getUserBean().getAccount()); + + viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + LocationHelper.obtainCurrentLocation(context, new ILocationListener() { + + @Override + public void onAMapLocationGet(AMapLocation aMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + StringHub.show(context, "请先选择养护的桥梁"); + return; + } + String maintainContent = viewBinding.maintainView.getText().toString(); + if (TextUtils.isEmpty(maintainContent)) { + StringHub.show(context, "请选择养护的内容"); + return; + } + LatLonPoint latLonPoint = new LatLonPoint(aMapLocation.getLatitude(), aMapLocation.getLongitude()); + LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { + @Override + public void onGetAddress(String address) { + Log.d(TAG, "onGetAddress: " + address); + SaveKeyValues.putValue("maintainAddress", address); + + //提交养护记录 + bridgeViewModel.submitMaintain( + bridgeId, + maintainContent, + viewBinding.maintainDateView.getText().toString(), + StringHelper.getUserBean().getId(), + String.valueOf(aMapLocation.getLongitude()), + String.valueOf(aMapLocation.getLatitude()), + StringHub.filterSpaceOrEnter(viewBinding.remarksView.getText().toString()) + ); + } + }); + } + }, true); + } + }); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/bridge/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/view/bridge/MaintainRecordActivity.java new file mode 100644 index 0000000..55e5936 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/bridge/MaintainRecordActivity.java @@ -0,0 +1,183 @@ +package com.casic.dcms.view.bridge; + +import android.content.Context; +import android.os.Handler; +import android.text.TextUtils; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityMaintainRecordBinding; +import com.casic.dcms.model.MaintainRecordBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.vm.BridgeViewModel; +import com.casic.dcms.widgets.RangeDateActionSheet; +import com.gyf.immersionbar.ImmersionBar; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.divider.ItemDecoration; +import com.pengxh.androidx.lite.hub.FloatHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.utils.WeakReferenceHandler; +import com.pengxh.androidx.lite.vm.LoadState; +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 MaintainRecordActivity extends AndroidxBaseActivity { + + private final Context context = MaintainRecordActivity.this; + private BridgeViewModel bridgeViewModel; + private List dataBeans = new ArrayList<>(); + private WeakReferenceHandler weakReferenceHandler; + private NormalRecyclerAdapter adapter; + private int pageIndex = 1; + private boolean isRefresh = false; + private boolean isLoadMore = false; + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("桥梁养护记录"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void observeRequestState() { + bridgeViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "查询记录中,请稍后"); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + weakReferenceHandler = new WeakReferenceHandler(callback); + bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class); + bridgeViewModel.recordModel.observe(this, new Observer() { + @Override + public void onChanged(MaintainRecordBean resultBean) { + if (resultBean.getCode() == 200) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + adapter.setRefreshData(dataRows); + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(context, "到底了,别拉了"); + } + adapter.setLoadMoreData(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + weakReferenceHandler.sendEmptyMessage(20210622); + } + } + } + }); + } + + @Override + protected void onResume() { + super.onResume(); + pageIndex = 1; + obtainMaintainRecord("", ""); + } + + @Override + protected void initEvent() { + viewBinding.calendarView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + new RangeDateActionSheet.Builder().setContext(context).setOnActionSheetListener(new RangeDateActionSheet.OnDateRangeSelectedListener() { + @Override + public void onDateRangeSelected(String startDate, String endDate) { + viewBinding.dateView.setText(startDate + "~" + endDate); + + pageIndex = 1; + obtainMaintainRecord(startDate, endDate); + } + }).build().show(); + } + }); + viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + obtainMaintainRecord("", ""); + } + }); + viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + obtainMaintainRecord("", ""); + } + }); + } + + private void obtainMaintainRecord(String start, String end) { + bridgeViewModel.obtainMaintainRecord(start, end, pageIndex); + } + + private final Handler.Callback callback = msg -> { + if (msg.what == 20210622) { + if (dataBeans.size() == 0) { + viewBinding.emptyView.show(false, "抱歉,没有查到相关养护记录", null, "刷新", new View.OnClickListener() { + @Override + public void onClick(View v) { + pageIndex = 1; + obtainMaintainRecord("", ""); + } + }); + } else { + viewBinding.emptyView.hide(); + adapter = new NormalRecyclerAdapter(R.layout.item_maintain_rv_l, dataBeans) { + @Override + public void convertView(ViewHolder viewHolder, int position, MaintainRecordBean.DataBean.RowsBean item) { + String description = item.getDescription(); + if (TextUtils.isEmpty(description)) { + viewHolder.setVisibility(R.id.descriptionImageView, View.GONE); + } else { + viewHolder.setVisibility(R.id.descriptionImageView, View.VISIBLE); + viewHolder.setOnClickListener(R.id.descriptionImageView, new View.OnClickListener() { + @Override + public void onClick(View v) { + StringHub.show(context, description); + } + }); + } + viewHolder.setText(R.id.bridgeNameView, item.getBridgeName()) + .setText(R.id.maintainContentView, item.getContent()) + .setText(R.id.maintainTimeView, item.getMaintainTimeStr()); + } + }; + viewBinding.recordRecyclerView.addItemDecoration(new ItemDecoration(FloatHub.dp2px(context, 10), 0f)); + viewBinding.recordRecyclerView.setAdapter(adapter); + } + } + return true; + }; +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b18fd67..32535b5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -103,8 +103,8 @@ - - + + diff --git a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java index 21490f0..18a7105 100644 --- a/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/fragment/HomePageFragment.java @@ -12,12 +12,12 @@ import com.casic.dcms.model.UserBean; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.view.BridgeMaintainActivity; import com.casic.dcms.view.OvertimeCaseActivity; import com.casic.dcms.view.PersonActivity; import com.casic.dcms.view.PipelineManagerActivity; import com.casic.dcms.view.SearchCaseActivity; import com.casic.dcms.view.StreetlightManagerActivity; +import com.casic.dcms.view.bridge.BridgeMaintainActivity; import com.casic.dcms.view.business.ChangeShopInfoActivity; import com.casic.dcms.view.business.PackageCaseActivity; import com.casic.dcms.view.check.CheckCaseActivity; diff --git a/app/src/main/java/com/casic/dcms/view/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/view/BridgeMaintainActivity.java deleted file mode 100644 index 817fe40..0000000 --- a/app/src/main/java/com/casic/dcms/view/BridgeMaintainActivity.java +++ /dev/null @@ -1,192 +0,0 @@ -package com.casic.dcms.view; - -import android.content.Context; -import android.text.TextUtils; -import android.util.Log; -import android.view.View; - -import androidx.core.content.ContextCompat; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityBridgeBinding; -import com.casic.dcms.model.ActionResultBean; -import com.casic.dcms.model.BridgeConfigBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.vm.BridgeViewModel; -import com.casic.dcms.widgets.SignInDialog; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.hub.ContextHub; -import com.pengxh.androidx.lite.hub.IntHub; -import com.pengxh.androidx.lite.hub.LongHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.utils.SaveKeyValues; -import com.pengxh.androidx.lite.vm.LoadState; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder; - -import java.util.List; - -public class BridgeMaintainActivity extends AndroidxBaseActivity { - - private static final String TAG = "BridgeMaintainActivity"; - private final Context context = BridgeMaintainActivity.this; - private BridgeViewModel bridgeViewModel; - private String bridgeId = ""; - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); - ImmersionBar.with(this).statusBarDarkFont(true).init(); - - viewBinding.titleBarLayout.titleView.setText("路桥养护"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - ContextHub.navigatePageTo(context, MaintainRecordActivity.class); - } - }); - } - - @Override - protected void observeRequestState() { - - } - - @Override - protected void initData() { - bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class); - } - - @Override - protected void initEvent() { - viewBinding.bridgeLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - StringHub.show(context, "获取桥梁数据异常"); - return; - } - BottomListSheetBuilder sheetBuilder = new BottomListSheetBuilder(context); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - bridgeId = String.valueOf(bridges.get(position).getId()); - viewBinding.bridgeNameView.setText(tag); - viewBinding.bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - }).build().show(); - } - }); - - viewBinding.maintainContentLayout.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - new BottomListSheetBuilder(context) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - viewBinding.maintainView.setText(tag); - viewBinding.maintainView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); - } - }).build().show(); - } - }); - - String systemDate = LongHub.timestampToDate(System.currentTimeMillis()); - viewBinding.maintainDateView.setText(systemDate); - viewBinding.liablePersonView.setText(StringHelper.getUserBean().getAccount()); - - viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - LocationHelper.obtainCurrentLocation(context, new ILocationListener() { - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (TextUtils.isEmpty(bridgeId)) { - StringHub.show(context, "请先选择养护的桥梁"); - return; - } - String maintainContent = viewBinding.maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - StringHub.show(context, "请选择养护的内容"); - return; - } - LatLonPoint latLonPoint = new LatLonPoint(aMapLocation.getLatitude(), aMapLocation.getLongitude()); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - Log.d(TAG, "onGetAddress: " + address); - SaveKeyValues.putValue("maintainAddress", address); - - //提交养护记录 - bridgeViewModel.submitMaintain( - bridgeId, - maintainContent, - viewBinding.maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), - String.valueOf(aMapLocation.getLongitude()), - String.valueOf(aMapLocation.getLatitude()), - StringHub.filterSpaceOrEnter(viewBinding.remarksView.getText().toString()) - ); - } - }); - } - }, true); - } - }); - bridgeViewModel.submitResultModel.observe(this, new Observer() { - @Override - public void onChanged(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.getCode() == 200) { - new SignInDialog.Builder() - .setContext(context) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - ContextHub.navigatePageTo(context, MaintainRecordActivity.class); - } - }).build().show(); - } - } - }); - bridgeViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "养护记录签到中,请稍后"); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/view/MaintainRecordActivity.java deleted file mode 100644 index 6f35405..0000000 --- a/app/src/main/java/com/casic/dcms/view/MaintainRecordActivity.java +++ /dev/null @@ -1,183 +0,0 @@ -package com.casic.dcms.view; - -import android.content.Context; -import android.os.Handler; -import android.text.TextUtils; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProvider; - -import com.casic.dcms.R; -import com.casic.dcms.databinding.ActivityMaintainRecordBinding; -import com.casic.dcms.model.MaintainRecordBean; -import com.casic.dcms.utils.DialogHelper; -import com.casic.dcms.vm.BridgeViewModel; -import com.casic.dcms.widgets.RangeDateActionSheet; -import com.gyf.immersionbar.ImmersionBar; -import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; -import com.pengxh.androidx.lite.adapter.ViewHolder; -import com.pengxh.androidx.lite.base.AndroidxBaseActivity; -import com.pengxh.androidx.lite.divider.ItemDecoration; -import com.pengxh.androidx.lite.hub.FloatHub; -import com.pengxh.androidx.lite.hub.IntHub; -import com.pengxh.androidx.lite.hub.StringHub; -import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; -import com.pengxh.androidx.lite.utils.WeakReferenceHandler; -import com.pengxh.androidx.lite.vm.LoadState; -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 MaintainRecordActivity extends AndroidxBaseActivity { - - private final Context context = MaintainRecordActivity.this; - private BridgeViewModel bridgeViewModel; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private NormalRecyclerAdapter adapter; - private int pageIndex = 1; - private boolean isRefresh = false; - private boolean isLoadMore = false; - - @Override - protected void setupTopBarLayout() { - ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); - ImmersionBar.with(this).statusBarDarkFont(true).init(); - - viewBinding.titleBarLayout.titleView.setText("桥梁养护记录"); - viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); - } - - @Override - protected void observeRequestState() { - bridgeViewModel.loadState.observe(this, new Observer() { - @Override - public void onChanged(LoadState loadState) { - if (loadState == LoadState.Loading) { - DialogHelper.showLoadingDialog(context, "查询记录中,请稍后"); - } else { - DialogHelper.dismissLoadingDialog(); - } - } - }); - } - - @Override - protected void initData() { - weakReferenceHandler = new WeakReferenceHandler(callback); - bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class); - bridgeViewModel.recordModel.observe(this, new Observer() { - @Override - public void onChanged(MaintainRecordBean resultBean) { - if (resultBean.getCode() == 200) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - adapter.setRefreshData(dataRows); - viewBinding.refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - StringHub.show(context, "到底了,别拉了"); - } - adapter.setLoadMoreData(dataRows); - viewBinding.refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - } - }); - } - - @Override - protected void onResume() { - super.onResume(); - pageIndex = 1; - obtainMaintainRecord("", ""); - } - - @Override - protected void initEvent() { - viewBinding.calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - new RangeDateActionSheet.Builder().setContext(context).setOnActionSheetListener(new RangeDateActionSheet.OnDateRangeSelectedListener() { - @Override - public void onDateRangeSelected(String startDate, String endDate) { - viewBinding.dateView.setText(startDate + "~" + endDate); - - pageIndex = 1; - obtainMaintainRecord(startDate, endDate); - } - }).build().show(); - } - }); - viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - obtainMaintainRecord("", ""); - } - }); - viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - obtainMaintainRecord("", ""); - } - }); - } - - private void obtainMaintainRecord(String start, String end) { - bridgeViewModel.obtainMaintainRecord(start, end, pageIndex); - } - - private final Handler.Callback callback = msg -> { - if (msg.what == 20210622) { - if (dataBeans.size() == 0) { - viewBinding.emptyView.show(false, "抱歉,没有查到相关养护记录", null, "刷新", new View.OnClickListener() { - @Override - public void onClick(View v) { - pageIndex = 1; - obtainMaintainRecord("", ""); - } - }); - } else { - viewBinding.emptyView.hide(); - adapter = new NormalRecyclerAdapter(R.layout.item_maintain_rv_l, dataBeans) { - @Override - public void convertView(ViewHolder viewHolder, int position, MaintainRecordBean.DataBean.RowsBean item) { - String description = item.getDescription(); - if (TextUtils.isEmpty(description)) { - viewHolder.setVisibility(R.id.descriptionImageView, View.GONE); - } else { - viewHolder.setVisibility(R.id.descriptionImageView, View.VISIBLE); - viewHolder.setOnClickListener(R.id.descriptionImageView, new View.OnClickListener() { - @Override - public void onClick(View v) { - StringHub.show(context, description); - } - }); - } - viewHolder.setText(R.id.bridgeNameView, item.getBridgeName()) - .setText(R.id.maintainContentView, item.getContent()) - .setText(R.id.maintainTimeView, item.getMaintainTimeStr()); - } - }; - viewBinding.recordRecyclerView.addItemDecoration(new ItemDecoration(FloatHub.dp2px(context, 10), 0f)); - viewBinding.recordRecyclerView.setAdapter(adapter); - } - } - return true; - }; -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/view/PipelineManagerActivity.java index 29f73b6..c619ef3 100644 --- a/app/src/main/java/com/casic/dcms/view/PipelineManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/view/PipelineManagerActivity.java @@ -15,6 +15,7 @@ import com.casic.dcms.databinding.ActivityPipeBinding; import com.casic.dcms.model.ActionResultBean; import com.casic.dcms.model.AlarmDataBean; +import com.casic.dcms.utils.DialogHelper; import com.casic.dcms.utils.LocaleConstant; import com.casic.dcms.view.map.WarningOnMapActivity; import com.casic.dcms.vm.AlarmViewModel; @@ -23,6 +24,8 @@ import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; import com.pengxh.androidx.lite.adapter.ViewHolder; import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.divider.ItemDecoration; +import com.pengxh.androidx.lite.hub.FloatHub; import com.pengxh.androidx.lite.hub.IntHub; import com.pengxh.androidx.lite.hub.StringHub; import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; @@ -87,7 +90,11 @@ alarmViewModel.loadState.observe(this, new Observer() { @Override public void onChanged(LoadState loadState) { - + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "数据加载中,请稍后"); + } else { + DialogHelper.dismissLoadingDialog(); + } } }); } @@ -196,6 +203,7 @@ }); } }; + viewBinding.warningRecyclerView.addItemDecoration(new ItemDecoration(FloatHub.dp2px(context, 10), 0f)); viewBinding.warningRecyclerView.setAdapter(adapter); } } diff --git a/app/src/main/java/com/casic/dcms/view/bridge/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/view/bridge/BridgeMaintainActivity.java new file mode 100644 index 0000000..857866b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/bridge/BridgeMaintainActivity.java @@ -0,0 +1,191 @@ +package com.casic.dcms.view.bridge; + +import android.content.Context; +import android.text.TextUtils; +import android.util.Log; +import android.view.View; + +import androidx.core.content.ContextCompat; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.amap.api.location.AMapLocation; +import com.amap.api.services.core.LatLonPoint; +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityBridgeBinding; +import com.casic.dcms.model.ActionResultBean; +import com.casic.dcms.model.BridgeConfigBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.utils.LocationHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IAddressListener; +import com.casic.dcms.utils.callback.ILocationListener; +import com.casic.dcms.vm.BridgeViewModel; +import com.casic.dcms.widgets.SignInDialog; +import com.gyf.immersionbar.ImmersionBar; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.hub.ContextHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.LongHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.utils.SaveKeyValues; +import com.pengxh.androidx.lite.vm.LoadState; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder; + +import java.util.List; + +public class BridgeMaintainActivity extends AndroidxBaseActivity { + + private static final String TAG = "BridgeMaintainActivity"; + private final Context context = BridgeMaintainActivity.this; + private BridgeViewModel bridgeViewModel; + private String bridgeId = ""; + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("路桥养护"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + viewBinding.titleBarLayout.rightImageView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ContextHub.navigatePageTo(context, MaintainRecordActivity.class); + } + }); + } + + @Override + protected void observeRequestState() { + bridgeViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "养护记录签到中,请稍后"); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class); + bridgeViewModel.submitResultModel.observe(this, new Observer() { + @Override + public void onChanged(ActionResultBean resultBean) { + String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); + if (resultBean.getCode() == 200) { + new SignInDialog.Builder() + .setContext(context) + .setTitle("桥梁养护记录提交成功") + .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) + .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { + @Override + public void onViewClick() { + ContextHub.navigatePageTo(context, MaintainRecordActivity.class); + } + }).build().show(); + } + } + }); + } + + @Override + protected void initEvent() { + viewBinding.bridgeLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + List bridges = StringHelper.getBridgeBeanList(); + if (bridges.size() == 0) { + StringHub.show(context, "获取桥梁数据异常"); + return; + } + BottomListSheetBuilder sheetBuilder = new BottomListSheetBuilder(context); + sheetBuilder.setTitle("选择桥梁"); + for (BridgeConfigBean.BridgesBean bean : bridges) { + sheetBuilder.addItem(bean.getName()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + bridgeId = String.valueOf(bridges.get(position).getId()); + viewBinding.bridgeNameView.setText(tag); + viewBinding.bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); + } + }).build().show(); + } + }); + + viewBinding.maintainContentLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + new BottomListSheetBuilder(context) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener(new BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + viewBinding.maintainView.setText(tag); + viewBinding.maintainView.setTextColor(ContextCompat.getColor(context, R.color.mainTextColor)); + } + }).build().show(); + } + }); + + String systemDate = LongHub.timestampToDate(System.currentTimeMillis()); + viewBinding.maintainDateView.setText(systemDate); + viewBinding.liablePersonView.setText(StringHelper.getUserBean().getAccount()); + + viewBinding.submitButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + LocationHelper.obtainCurrentLocation(context, new ILocationListener() { + + @Override + public void onAMapLocationGet(AMapLocation aMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + StringHub.show(context, "请先选择养护的桥梁"); + return; + } + String maintainContent = viewBinding.maintainView.getText().toString(); + if (TextUtils.isEmpty(maintainContent)) { + StringHub.show(context, "请选择养护的内容"); + return; + } + LatLonPoint latLonPoint = new LatLonPoint(aMapLocation.getLatitude(), aMapLocation.getLongitude()); + LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { + @Override + public void onGetAddress(String address) { + Log.d(TAG, "onGetAddress: " + address); + SaveKeyValues.putValue("maintainAddress", address); + + //提交养护记录 + bridgeViewModel.submitMaintain( + bridgeId, + maintainContent, + viewBinding.maintainDateView.getText().toString(), + StringHelper.getUserBean().getId(), + String.valueOf(aMapLocation.getLongitude()), + String.valueOf(aMapLocation.getLatitude()), + StringHub.filterSpaceOrEnter(viewBinding.remarksView.getText().toString()) + ); + } + }); + } + }, true); + } + }); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/view/bridge/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/view/bridge/MaintainRecordActivity.java new file mode 100644 index 0000000..55e5936 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/view/bridge/MaintainRecordActivity.java @@ -0,0 +1,183 @@ +package com.casic.dcms.view.bridge; + +import android.content.Context; +import android.os.Handler; +import android.text.TextUtils; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; + +import com.casic.dcms.R; +import com.casic.dcms.databinding.ActivityMaintainRecordBinding; +import com.casic.dcms.model.MaintainRecordBean; +import com.casic.dcms.utils.DialogHelper; +import com.casic.dcms.vm.BridgeViewModel; +import com.casic.dcms.widgets.RangeDateActionSheet; +import com.gyf.immersionbar.ImmersionBar; +import com.pengxh.androidx.lite.adapter.NormalRecyclerAdapter; +import com.pengxh.androidx.lite.adapter.ViewHolder; +import com.pengxh.androidx.lite.base.AndroidxBaseActivity; +import com.pengxh.androidx.lite.divider.ItemDecoration; +import com.pengxh.androidx.lite.hub.FloatHub; +import com.pengxh.androidx.lite.hub.IntHub; +import com.pengxh.androidx.lite.hub.StringHub; +import com.pengxh.androidx.lite.utils.ImmerseStatusBarManager; +import com.pengxh.androidx.lite.utils.WeakReferenceHandler; +import com.pengxh.androidx.lite.vm.LoadState; +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 MaintainRecordActivity extends AndroidxBaseActivity { + + private final Context context = MaintainRecordActivity.this; + private BridgeViewModel bridgeViewModel; + private List dataBeans = new ArrayList<>(); + private WeakReferenceHandler weakReferenceHandler; + private NormalRecyclerAdapter adapter; + private int pageIndex = 1; + private boolean isRefresh = false; + private boolean isLoadMore = false; + + @Override + protected void setupTopBarLayout() { + ImmerseStatusBarManager.setColor(this, IntHub.convertColor(this, R.color.white)); + ImmersionBar.with(this).statusBarDarkFont(true).init(); + + viewBinding.titleBarLayout.titleView.setText("桥梁养护记录"); + viewBinding.titleBarLayout.leftBackView.setOnClickListener(v -> finish()); + } + + @Override + protected void observeRequestState() { + bridgeViewModel.loadState.observe(this, new Observer() { + @Override + public void onChanged(LoadState loadState) { + if (loadState == LoadState.Loading) { + DialogHelper.showLoadingDialog(context, "查询记录中,请稍后"); + } else { + DialogHelper.dismissLoadingDialog(); + } + } + }); + } + + @Override + protected void initData() { + weakReferenceHandler = new WeakReferenceHandler(callback); + bridgeViewModel = new ViewModelProvider(this).get(BridgeViewModel.class); + bridgeViewModel.recordModel.observe(this, new Observer() { + @Override + public void onChanged(MaintainRecordBean resultBean) { + if (resultBean.getCode() == 200) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + adapter.setRefreshData(dataRows); + viewBinding.refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + StringHub.show(context, "到底了,别拉了"); + } + adapter.setLoadMoreData(dataRows); + viewBinding.refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + weakReferenceHandler.sendEmptyMessage(20210622); + } + } + } + }); + } + + @Override + protected void onResume() { + super.onResume(); + pageIndex = 1; + obtainMaintainRecord("", ""); + } + + @Override + protected void initEvent() { + viewBinding.calendarView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + new RangeDateActionSheet.Builder().setContext(context).setOnActionSheetListener(new RangeDateActionSheet.OnDateRangeSelectedListener() { + @Override + public void onDateRangeSelected(String startDate, String endDate) { + viewBinding.dateView.setText(startDate + "~" + endDate); + + pageIndex = 1; + obtainMaintainRecord(startDate, endDate); + } + }).build().show(); + } + }); + viewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + obtainMaintainRecord("", ""); + } + }); + viewBinding.refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + obtainMaintainRecord("", ""); + } + }); + } + + private void obtainMaintainRecord(String start, String end) { + bridgeViewModel.obtainMaintainRecord(start, end, pageIndex); + } + + private final Handler.Callback callback = msg -> { + if (msg.what == 20210622) { + if (dataBeans.size() == 0) { + viewBinding.emptyView.show(false, "抱歉,没有查到相关养护记录", null, "刷新", new View.OnClickListener() { + @Override + public void onClick(View v) { + pageIndex = 1; + obtainMaintainRecord("", ""); + } + }); + } else { + viewBinding.emptyView.hide(); + adapter = new NormalRecyclerAdapter(R.layout.item_maintain_rv_l, dataBeans) { + @Override + public void convertView(ViewHolder viewHolder, int position, MaintainRecordBean.DataBean.RowsBean item) { + String description = item.getDescription(); + if (TextUtils.isEmpty(description)) { + viewHolder.setVisibility(R.id.descriptionImageView, View.GONE); + } else { + viewHolder.setVisibility(R.id.descriptionImageView, View.VISIBLE); + viewHolder.setOnClickListener(R.id.descriptionImageView, new View.OnClickListener() { + @Override + public void onClick(View v) { + StringHub.show(context, description); + } + }); + } + viewHolder.setText(R.id.bridgeNameView, item.getBridgeName()) + .setText(R.id.maintainContentView, item.getContent()) + .setText(R.id.maintainTimeView, item.getMaintainTimeStr()); + } + }; + viewBinding.recordRecyclerView.addItemDecoration(new ItemDecoration(FloatHub.dp2px(context, 10), 0f)); + viewBinding.recordRecyclerView.setAdapter(adapter); + } + } + return true; + }; +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/vm/AlarmViewModel.java b/app/src/main/java/com/casic/dcms/vm/AlarmViewModel.java index a67fac2..63e2e14 100644 --- a/app/src/main/java/com/casic/dcms/vm/AlarmViewModel.java +++ b/app/src/main/java/com/casic/dcms/vm/AlarmViewModel.java @@ -66,17 +66,15 @@ } public void cancelSingleAlarm(String id, String jobStatus, String handleMessage) { - loadState.setValue(LoadState.Loading); Observable commonActionObservable = RetrofitServiceManager.getCancelAlarmResult(id, jobStatus, handleMessage); ObserverSubscriber.addSubscribe(commonActionObservable, new OnObserverCallback() { @Override public void onCompleted() { - loadState.setValue(LoadState.Success); + } @Override public void onError(Throwable e) { - loadState.setValue(LoadState.Fail); if (e instanceof ConnectException) { StringHub.show(BaseApplication.get(), "连接失败,请检查网络或者服务器"); } else { @@ -94,7 +92,6 @@ }.getType()); cancelActionModel.setValue(resultBean); } else { - loadState.setValue(LoadState.Fail); StringHelper.showErrorMessage(response); } } catch (IOException e) { @@ -105,17 +102,15 @@ } public void cancelBatchAlarm(String jobStatus, String handleMessage) { - loadState.setValue(LoadState.Loading); Observable commonActionObservable = RetrofitServiceManager.getCancelAlarmResult(jobStatus, handleMessage); ObserverSubscriber.addSubscribe(commonActionObservable, new OnObserverCallback() { @Override public void onCompleted() { - loadState.setValue(LoadState.Success); + } @Override public void onError(Throwable e) { - loadState.setValue(LoadState.Fail); if (e instanceof ConnectException) { StringHub.show(BaseApplication.get(), "连接失败,请检查网络或者服务器"); } else { @@ -133,7 +128,6 @@ }.getType()); cancelActionModel.setValue(resultBean); } else { - loadState.setValue(LoadState.Fail); StringHelper.showErrorMessage(response); } } catch (IOException e) {