From 6a44973461e2a91f62f7eed681b4db3abb026289 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期二, 24 十二月 2024 16:52:23 +0800
Subject: [PATCH] 1.优化地图相关代码,提高运行效率和可读性。 2.添加修改密码功能。 3.优化列表和详情页展示。
---
app/src/main/java/com/dayu/pipirrapp/fragment/OrderFragment.java | 369 ++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 286 insertions(+), 83 deletions(-)
diff --git a/app/src/main/java/com/dayu/pipirrapp/fragment/OrderFragment.java b/app/src/main/java/com/dayu/pipirrapp/fragment/OrderFragment.java
index 9f0d1b5..036ca77 100644
--- a/app/src/main/java/com/dayu/pipirrapp/fragment/OrderFragment.java
+++ b/app/src/main/java/com/dayu/pipirrapp/fragment/OrderFragment.java
@@ -1,30 +1,56 @@
package com.dayu.pipirrapp.fragment;
+import static androidx.core.content.ContextCompat.getSystemService;
+
+import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Typeface;
+import android.os.Build;
import android.os.Bundle;
+import android.os.VibrationEffect;
+import android.os.Vibrator;
+import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.core.app.NotificationCompat;
import androidx.lifecycle.Observer;
+import androidx.recyclerview.widget.LinearLayoutManager;
-import com.dayu.pipirrapp.bean.db.LatLonBean;
-import com.dayu.pipirrapp.bean.net.WeatherResponse;
-import com.dayu.pipirrapp.databinding.FragmentMainBinding;
+import com.dayu.pipirrapp.MyApplication;
+import com.dayu.pipirrapp.R;
+import com.dayu.pipirrapp.activity.MainActivity;
+import com.dayu.pipirrapp.activity.OrderDetailActivity;
+import com.dayu.pipirrapp.adapter.OrderAdapter;
+import com.dayu.pipirrapp.bean.net.OrderDetailResult;
+import com.dayu.pipirrapp.bean.net.OrderListResult;
+import com.dayu.pipirrapp.databinding.FragmentOrderBinding;
import com.dayu.pipirrapp.net.ApiManager;
-import com.dayu.pipirrapp.utils.ImageUtils;
-import com.dayu.pipirrapp.utils.MyJsonParser;
-import com.dayu.pipirrapp.utils.SharedPreferencesHelper;
-import com.dayu.pipirrapp.view.TitleBar;
+import com.dayu.pipirrapp.net.BaseResponse;
+import com.dayu.pipirrapp.net.Constants;
+import com.dayu.pipirrapp.net.subscribers.SubscriberListener;
+import com.dayu.pipirrapp.utils.CommonKeyName;
+import com.dayu.pipirrapp.utils.MyLog;
+import com.dayu.pipirrapp.utils.ToastUtil;
import com.jeremyliao.liveeventbus.LiveEventBus;
-import com.tencent.bugly.crashreport.CrashReport;
+import com.scwang.smart.refresh.footer.ClassicsFooter;
+import com.scwang.smart.refresh.header.ClassicsHeader;
+import com.scwang.smart.refresh.layout.api.RefreshLayout;
-import java.util.Calendar;
-
-import retrofit2.Call;
-import retrofit2.Callback;
-import retrofit2.Response;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
/**
* author: zuo
@@ -33,90 +59,267 @@
* 澶囨敞锛氶椤�
*/
public class OrderFragment extends BaseFragment {
+ public static final int RESULT_REFRESH = 1001;
- FragmentMainBinding binding;
- WeatherResponse weatherResponse;
- //鏀跺埌瀹氫綅骞挎挱鍚庤幏鍙栧ぉ姘斾俊鎭�
- Observer<LatLonBean> myObserver = new Observer<LatLonBean>() {
- @Override
- public void onChanged(LatLonBean latLonBean) {
+ private final int STATE_DONE = 2;
+ private final int STATE_UNDONE = 1;
- String jsonStr = SharedPreferencesHelper.getInstance(OrderFragment.this.getActivity()).get("WeatherResponse", "");
- weatherResponse = MyJsonParser.getBeanFromJson(jsonStr, WeatherResponse.class);
- if (weatherResponse == null) {
- weatherResponse = new WeatherResponse();
- }
- // 鑾峰彇褰撳墠鏃堕棿
- Calendar calendar = Calendar.getInstance();
- // 鑾峰彇褰撳墠骞存湀鏃�
- int year = calendar.get(Calendar.YEAR);
- int month = calendar.get(Calendar.MONTH) + 1; // 娉ㄦ剰鏈堜唤鏄粠0寮�濮嬭鏁扮殑锛屾墍浠ヨ鍔�1
- int day = calendar.get(Calendar.DAY_OF_MONTH);
- String date = year + "骞�" + month + "鏈�" + day + "鏃�";
- if (weatherResponse == null || !date.equals(weatherResponse.getDate())) {
- weatherResponse.setDate(date);
- ApiManager.getInstance().requestWeather(latLonBean.getLatitude() + ":" + latLonBean.getLongitude(), new Callback<WeatherResponse>() {
- @Override
- public void onResponse(Call<WeatherResponse> call, Response<WeatherResponse> response) {
+ FragmentOrderBinding binding;
+ OrderAdapter mAdapter;
+ OrderAdapter mDoneAdapter;
+ int page = 1;
+ int pageSize = 10;
+ int state = 1;
+ List<OrderDetailResult> recordsListDone = new ArrayList<>();
+ List<OrderDetailResult> recordsList = new ArrayList<>();
+ RefreshLayout myRefreshLayout;
+ //鏈�鍚庡埛鏂扮殑鏃堕棿
+ long lastRefreshDate;
+ //鏄剧ず绾㈢偣鐨勬椂闂�
+ long showRedlotDate;
- if (response.isSuccessful()) {
- weatherResponse.setResults(response.body().getResults());
- SharedPreferencesHelper.getInstance(OrderFragment.this.getActivity()).put("WeatherResponse", weatherResponse);
- setWeatherData(weatherResponse);
+
+ private ActivityResultLauncher<Intent> activityResultLauncher =
+ registerForActivityResult(
+ new ActivityResultContracts.StartActivityForResult(),
+ result -> {
+ if (result.getResultCode() == RESULT_REFRESH) {
+ myRefreshLayout.autoRefresh();
}
- }
-
- @Override
- public void onFailure(Call<WeatherResponse> call, Throwable t) {
-
- }
- });
- } else {
- setWeatherData(weatherResponse);
- }
- LiveEventBus.get("location", LatLonBean.class).removeObserver(myObserver);
- }
- };
-
+ });
/**
* 璁剧疆澶╂皵鐩稿叧淇℃伅
*
- * @param data
+ * @param
*/
- private void setWeatherData(WeatherResponse data) {
- try {
- if (data.getResults() != null) {
- binding.cityName.setText(data.getResults()[0].getLocation().getName());
- binding.time.setText(data.getDate());
- int weatherImg = ImageUtils.getWeatherDrawable(data.getResults()[0].getDaily()[0].getCode_day());
- if (weatherImg != 0) {
- binding.weatherImg.setImageDrawable(getResources().getDrawable(weatherImg));
- }
- binding.weatherName.setText(data.getResults()[0].getDaily()[0].getText_day());
- binding.weatherTemperature.setText(data.getResults()[0].getDaily()[0].getLow() + "掳C 锝� " + data.getResults()[0].getDaily()[0].getHigh() + "掳C");
+// private void setWeatherData(WeatherResponse data) {
+// try {
+// if (data.getResults() != null) {
+// binding.cityName.setText(data.getResults()[0].getLocation().getName());
+// binding.time.setText(data.getDate());
+// int weatherImg = ImageUtils.getWeatherDrawable(data.getResults()[0].getDaily()[0].getCode_day());
+// if (weatherImg != 0) {
+// binding.weatherImg.setImageDrawable(getResources().getDrawable(weatherImg));
+// }
+// binding.weatherName.setText(data.getResults()[0].getDaily()[0].getText_day());
+// binding.weatherTemperature.setText(data.getResults()[0].getDaily()[0].getLow() + "掳C 锝� " + data.getResults()[0].getDaily()[0].getHigh() + "掳C");
+// }
+// } catch (Exception e) {
+// e.printStackTrace();
+// CrashReport.postCatchedException(e);
+// }
+// }
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ binding = FragmentOrderBinding.inflate(inflater, container, false);
+ initView();
+ //mq浼犳潵鐨勬秷鎭�
+ LiveEventBus.get(CommonKeyName.MQTTData).observeForever(new Observer<Object>() {
+ @Override
+ public void onChanged(Object o) {
+ showRedlotDate = new Date().getTime();
+// binding.redDotImg.setVisibility(View.VISIBLE);
+ getMarkerData((String) o);
}
- } catch (Exception e) {
- e.printStackTrace();
- CrashReport.postCatchedException(e);
+ });
+ return binding.getRoot();
+ }
+
+
+ void initView() {
+ //鏈畬鎴�
+ binding.manageStateProgressRL.setOnClickListener(v -> {
+ chooseStateView(true);
+ state = STATE_UNDONE;//1 鏈紑濮� 2 宸插畬鎴�
+
+ });
+ //宸插畬鎴�
+ binding.manageStateFinish.setOnClickListener(v -> {
+ chooseStateView(false);
+ state = STATE_DONE;//1 鏈紑濮� 2 宸插畬鎴�
+ });
+ //鏈畬鎴�
+ myRefreshLayout = (RefreshLayout) binding.refreshLayout;
+ myRefreshLayout.setRefreshHeader(new ClassicsHeader(this.getContext()));
+ myRefreshLayout.setRefreshFooter(new ClassicsFooter(this.getContext()));
+
+ myRefreshLayout.setOnRefreshListener(refreshlayout -> {
+// refreshlayout.finishRefresh(2000/*,false*/);//浼犲叆false琛ㄧず鍒锋柊澶辫触
+ lastRefreshDate = new Date().getTime();
+ if (lastRefreshDate > showRedlotDate) {
+ //娑堥櫎绾㈢偣
+ LiveEventBus.get(CommonKeyName.RedLotRefresh).post(true);
+// binding.redDotImg.setVisibility(View.GONE);
+ }
+ recordsList.clear();
+ page = 0;
+ getMarkerData(refreshlayout, true, STATE_UNDONE);
+ });
+ myRefreshLayout.setOnLoadMoreListener(refreshlayout -> {
+ page = page + 1;
+ getMarkerData(refreshlayout, false, STATE_UNDONE);
+ });
+
+ mAdapter = new OrderAdapter(this.getContext(), recordsList, this);
+ LinearLayoutManager layoutManager = new LinearLayoutManager(this.getContext());
+ binding.recyclerView.setLayoutManager(layoutManager);
+ binding.recyclerView.setAdapter(mAdapter);
+ getMarkerData(myRefreshLayout, true, STATE_UNDONE);
+ //宸插畬鎴�
+ RefreshLayout myRefreshLayoutDone = binding.refreshLayoutDone;
+ myRefreshLayoutDone.setRefreshHeader(new ClassicsHeader(this.getContext()));
+ myRefreshLayoutDone.setRefreshFooter(new ClassicsFooter(this.getContext()));
+ myRefreshLayoutDone.setOnRefreshListener(refreshlayout -> {
+ recordsListDone.clear();
+ page = 0;
+ getMarkerData(refreshlayout, true, STATE_DONE);
+ });
+ myRefreshLayoutDone.setOnLoadMoreListener(refreshlayout -> {
+ page = page + 1;
+ getMarkerData(refreshlayout, false, STATE_DONE);
+ });
+ mDoneAdapter = new OrderAdapter(this.getContext(), recordsListDone, this);
+ LinearLayoutManager layoutManagerDone = new LinearLayoutManager(this.getContext());
+ binding.recyclerViewDone.setLayoutManager(layoutManagerDone);
+ binding.recyclerViewDone.setAdapter(mDoneAdapter);
+ getMarkerData(myRefreshLayoutDone, true, 2);
+ }
+
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ MyLog.d("OrderFragment>>onResume");
+// if (showRedlotDate > lastRefreshDate) {
+// binding.redDotImg.setVisibility(View.VISIBLE);
+// } else {
+// binding.redDotImg.setVisibility(View.GONE);
+// }
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ MyLog.d("OrderFragment>>onPause");
+ }
+
+ /**
+ * 鑾峰彇鏈垹闄ゅ伐鍗�
+ */
+ private void getMarkerData(RefreshLayout refreshlayout, boolean isRefresh, int state) {
+
+ Map<String, Object> params = new HashMap<>();
+ if (isRefresh) {
+ page = 1;
+ if (state == STATE_UNDONE) {
+ recordsList.clear();
+ } else {
+ recordsListDone.clear();
+ }
+ }
+ params.put("pageSize", pageSize);
+ params.put("pageCurr", page);
+ params.put("state", state);
+ params.put("inspectorId", MyApplication.myApplication.userId);
+
+ ApiManager.getInstance().requestGetHideLoading(this.getContext(), Constants.BASE_URL + "/app/workOrder/getWorkOrders", OrderListResult.class, params, new SubscriberListener<BaseResponse<OrderListResult>>() {
+ @Override
+ public void onNext(BaseResponse<OrderListResult> t) {
+ if (t.isSuccess()) {
+ if (t.getContent().getObj() != null && t.getContent().getObj().size() > 0) {
+ if (state == STATE_UNDONE) {
+ recordsList.addAll(t.getContent().getObj());
+ } else {
+ recordsListDone.addAll(t.getContent().getObj());
+ }
+ if (t.getContent().getPageTotal() == page) {
+ refreshlayout.finishLoadMoreWithNoMoreData();
+ }
+ } else {
+ refreshlayout.finishLoadMoreWithNoMoreData();
+ }
+ } else {
+ ToastUtil.showToast(OrderFragment.this.getContext(), t.getMsg());
+ }
+ }
+
+ @Override
+ public void onCloose() {
+ super.onCloose();
+ layoutFinish(refreshlayout, isRefresh);
+ if (state == STATE_UNDONE) {
+ mAdapter.notifyDataSetChanged();
+ } else {
+ mDoneAdapter.notifyDataSetChanged();
+ }
+ }
+
+ });
+ }
+
+ public void startDetail(String workOrderId, String proResultId) {
+ Intent intent = new Intent(this.getContext(), OrderDetailActivity.class);
+ intent.putExtra("workOrderId", workOrderId);
+ if (!TextUtils.isEmpty(proResultId)) {
+ intent.putExtra("proResultId", proResultId);
+ }
+ activityResultLauncher.launch(intent);
+ }
+
+
+ /**
+ * 淇敼杩涘害鐘舵��
+ *
+ * @param state true涓烘湭瀹屾垚 false涓哄凡瀹屾垚
+ */
+
+ void chooseStateView(boolean state) {
+ if (state) {
+ binding.manageStateProgress.setTextColor(getResources().getColor(R.color.title_color, null));
+ binding.manageStateProgress.setBackground(getResources().getDrawable(R.drawable.ic_choose_bg_whit, null));
+ binding.manageStateProgressRL.setBackground(getResources().getDrawable(R.drawable.ic_choose_bg_whit, null));
+ binding.manageStateProgress.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
+ binding.manageStateFinish.setTextColor(getResources().getColor(R.color.black, null));
+ binding.manageStateFinish.setBackground(getResources().getDrawable(R.color.title_choose_bg, null));
+ binding.manageStateFinish.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
+ binding.refreshLayout.setVisibility(View.VISIBLE);
+ binding.refreshLayoutDone.setVisibility(View.GONE);
+
+ } else {
+ binding.manageStateFinish.setTextColor(getResources().getColor(R.color.title_color, null));
+ binding.manageStateFinish.setBackground(getResources().getDrawable(R.drawable.ic_choose_bg_whit, null));
+ binding.manageStateFinish.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
+ binding.manageStateProgress.setTextColor(getResources().getColor(R.color.black, null));
+ binding.manageStateProgress.setBackground(getResources().getDrawable(R.color.title_choose_bg, null));
+ binding.manageStateProgressRL.setBackground(getResources().getDrawable(R.color.title_choose_bg, null));
+ binding.manageStateProgress.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
+ binding.refreshLayout.setVisibility(View.GONE);
+ binding.refreshLayoutDone.setVisibility(View.VISIBLE);
}
}
- @Override
- public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
- binding = FragmentMainBinding.inflate(inflater, container, false);
- //鑾峰彇鍒扮粡绾害鍚庤幏鍙栧ぉ姘斾俊鎭�
- LiveEventBus
- .get("location", LatLonBean.class)
- .observeForever(myObserver);
-
- return binding.getRoot();
+ /**
+ * 鑾峰彇宸ュ崟璇︽儏
+ */
+ private void getMarkerData(String workOrderId) {
+ Map<String, Object> params = new HashMap<>();
+ params.put("workOrderId", workOrderId);
+ ApiManager.getInstance().requestGetHideLoading(this.getContext(), Constants.BASE_URL + "/app/workOrder/getOneWorkOrder", OrderDetailResult.class, params, new SubscriberListener<BaseResponse<OrderDetailResult>>() {
+ @Override
+ public void onNext(BaseResponse<OrderDetailResult> t) {
+ if (t.isSuccess()) {
+ if (MainActivity.workerIddata != null) {
+ if (!MainActivity.workerIddata.containsKey(workOrderId)) {
+ LiveEventBus.get(CommonKeyName.CreateNotification).post(t.getContent());
+ recordsList.add(0, t.getContent());
+ mAdapter.notifyItemInserted(0);
+ }
+ }
+ }
+ }
+ });
}
- @Override
- public void onStart() {
- super.onStart();
- new TitleBar(OrderFragment.this.getActivity()).setTitleText("宸ュ崟");
- }
}
--
Gitblit v1.8.0