From 5f4c3669ddd8fe27449b04a4b9db12b2ca4b3688 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期二, 14 一月 2025 16:27:29 +0800
Subject: [PATCH] 1.文件上传和显示添加缩略图功能。

---
 app/src/main/java/com/dayu/pipirrapp/fragment/OrderFragment.java |  215 ++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 138 insertions(+), 77 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 4ca4016..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,37 +1,53 @@
 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.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.bean.net.WeatherResponse;
 import com.dayu.pipirrapp.databinding.FragmentOrderBinding;
 import com.dayu.pipirrapp.net.ApiManager;
 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.scwang.smart.refresh.footer.ClassicsFooter;
 import com.scwang.smart.refresh.header.ClassicsHeader;
 import com.scwang.smart.refresh.layout.api.RefreshLayout;
-import com.scwang.smart.refresh.layout.listener.OnLoadMoreListener;
-import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -43,18 +59,34 @@
  * 澶囨敞锛氶椤�
  */
 public class OrderFragment extends BaseFragment {
-
+    public static final int RESULT_REFRESH = 1001;
 
     private final int STATE_DONE = 2;
     private final int STATE_UNDONE = 1;
 
     FragmentOrderBinding binding;
     OrderAdapter mAdapter;
+    OrderAdapter mDoneAdapter;
     int page = 1;
     int pageSize = 10;
     int state = 1;
-    List<OrderListResult.Data> recordsListDone = new ArrayList<>();
-    List<OrderListResult.Data> recordsList = new ArrayList<>();
+    List<OrderDetailResult> recordsListDone = new ArrayList<>();
+    List<OrderDetailResult> recordsList = new ArrayList<>();
+    RefreshLayout myRefreshLayout;
+    //鏈�鍚庡埛鏂扮殑鏃堕棿
+    long lastRefreshDate;
+    //鏄剧ず绾㈢偣鐨勬椂闂�
+    long showRedlotDate;
+
+
+    private ActivityResultLauncher<Intent> activityResultLauncher =
+            registerForActivityResult(
+                    new ActivityResultContracts.StartActivityForResult(),
+                    result -> {
+                        if (result.getResultCode() == RESULT_REFRESH) {
+                            myRefreshLayout.autoRefresh();
+                        }
+                    });
 
     /**
      * 璁剧疆澶╂皵鐩稿叧淇℃伅
@@ -82,57 +114,51 @@
     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);
             }
         });
-
-
         return binding.getRoot();
     }
 
 
     void initView() {
         //鏈畬鎴�
-        binding.manageStateProgress.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                chooseStateView(true);
-                state = STATE_UNDONE;//1 鏈紑濮� 2 宸插畬鎴�
+        binding.manageStateProgressRL.setOnClickListener(v -> {
+            chooseStateView(true);
+            state = STATE_UNDONE;//1 鏈紑濮� 2 宸插畬鎴�
 
-            }
         });
         //宸插畬鎴�
-        binding.manageStateFinish.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                chooseStateView(false);
-                state = STATE_DONE;//1 鏈紑濮� 2 宸插畬鎴�
-            }
+        binding.manageStateFinish.setOnClickListener(v -> {
+            chooseStateView(false);
+            state = STATE_DONE;//1 鏈紑濮� 2 宸插畬鎴�
         });
         //鏈畬鎴�
-        RefreshLayout myRefreshLayout = (RefreshLayout) binding.refreshLayout;
+        myRefreshLayout = (RefreshLayout) binding.refreshLayout;
         myRefreshLayout.setRefreshHeader(new ClassicsHeader(this.getContext()));
         myRefreshLayout.setRefreshFooter(new ClassicsFooter(this.getContext()));
 
-        myRefreshLayout.setOnRefreshListener(new OnRefreshListener() {
-            @Override
-            public void onRefresh(RefreshLayout refreshlayout) {
+        myRefreshLayout.setOnRefreshListener(refreshlayout -> {
 //                refreshlayout.finishRefresh(2000/*,false*/);//浼犲叆false琛ㄧず鍒锋柊澶辫触
-                recordsList.clear();
-                page = 0;
-                getMarkerData(refreshlayout, true, STATE_UNDONE);
+            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(new OnLoadMoreListener() {
-            @Override
-            public void onLoadMore(RefreshLayout refreshlayout) {
-                page = page + 1;
-                getMarkerData(refreshlayout, false, STATE_UNDONE);
-            }
+        myRefreshLayout.setOnLoadMoreListener(refreshlayout -> {
+            page = page + 1;
+            getMarkerData(refreshlayout, false, STATE_UNDONE);
         });
 
         mAdapter = new OrderAdapter(this.getContext(), recordsList, this);
@@ -141,36 +167,41 @@
         binding.recyclerView.setAdapter(mAdapter);
         getMarkerData(myRefreshLayout, true, STATE_UNDONE);
         //宸插畬鎴�
-        RefreshLayout myRefreshLayoutDone = (RefreshLayout) binding.refreshLayoutDone;
+        RefreshLayout myRefreshLayoutDone = binding.refreshLayoutDone;
         myRefreshLayoutDone.setRefreshHeader(new ClassicsHeader(this.getContext()));
         myRefreshLayoutDone.setRefreshFooter(new ClassicsFooter(this.getContext()));
-        myRefreshLayoutDone.setOnRefreshListener(new OnRefreshListener() {
-            @Override
-            public void onRefresh(RefreshLayout refreshlayout) {
-//                refreshlayout.finishRefresh(2000/*,false*/);//浼犲叆false琛ㄧず鍒锋柊澶辫触
-                recordsList.clear();
-                page = 0;
-                getMarkerData(refreshlayout, true, STATE_DONE);
-            }
+        myRefreshLayoutDone.setOnRefreshListener(refreshlayout -> {
+            recordsListDone.clear();
+            page = 0;
+            getMarkerData(refreshlayout, true, STATE_DONE);
         });
-        myRefreshLayoutDone.setOnLoadMoreListener(new OnLoadMoreListener() {
-            @Override
-            public void onLoadMore(RefreshLayout refreshlayout) {
-                page = page + 1;
-                getMarkerData(refreshlayout, false, STATE_DONE);
-            }
+        myRefreshLayoutDone.setOnLoadMoreListener(refreshlayout -> {
+            page = page + 1;
+            getMarkerData(refreshlayout, false, STATE_DONE);
         });
-        mAdapter = new OrderAdapter(this.getContext(), recordsListDone, this);
+        mDoneAdapter = new OrderAdapter(this.getContext(), recordsListDone, this);
         LinearLayoutManager layoutManagerDone = new LinearLayoutManager(this.getContext());
         binding.recyclerViewDone.setLayoutManager(layoutManagerDone);
-        binding.recyclerViewDone.setAdapter(mAdapter);
+        binding.recyclerViewDone.setAdapter(mDoneAdapter);
         getMarkerData(myRefreshLayoutDone, true, 2);
     }
 
 
     @Override
-    public void onStart() {
-        super.onStart();
+    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");
     }
 
     /**
@@ -190,25 +221,23 @@
         params.put("pageSize", pageSize);
         params.put("pageCurr", page);
         params.put("state", state);
-//        params.put("inspectorId", MyApplication.myApplication.userId);
+        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.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().getObj().size() < pageSize) {
-                                refreshlayout.finishLoadMoreWithNoMoreData();
-                            }
+                    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());
@@ -219,16 +248,23 @@
             public void onCloose() {
                 super.onCloose();
                 layoutFinish(refreshlayout, isRefresh);
-                mAdapter.notifyDataSetChanged();
+                if (state == STATE_UNDONE) {
+                    mAdapter.notifyDataSetChanged();
+                } else {
+                    mDoneAdapter.notifyDataSetChanged();
+                }
             }
 
         });
     }
 
-    public void startDetail(String id) {
+    public void startDetail(String workOrderId, String proResultId) {
         Intent intent = new Intent(this.getContext(), OrderDetailActivity.class);
-        intent.putExtra("workOrderId", id);
-        startActivity(intent);
+        intent.putExtra("workOrderId", workOrderId);
+        if (!TextUtils.isEmpty(proResultId)) {
+            intent.putExtra("proResultId", proResultId);
+        }
+        activityResultLauncher.launch(intent);
     }
 
 
@@ -240,20 +276,23 @@
 
     void chooseStateView(boolean state) {
         if (state) {
-            binding.manageStateProgress.setTextColor(getResources().getColor(R.color.title_color));
-            binding.manageStateProgress.setBackground(getResources().getDrawable(R.drawable.ic_choose_bg_whit));
+            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));
-            binding.manageStateFinish.setBackground(getResources().getDrawable(R.color.title_choose_bg));
+            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));
-            binding.manageStateFinish.setBackground(getResources().getDrawable(R.drawable.ic_choose_bg_whit));
+            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));
-            binding.manageStateProgress.setBackground(getResources().getDrawable(R.color.title_choose_bg));
+            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);
@@ -261,4 +300,26 @@
     }
 
 
+    /**
+     * 鑾峰彇宸ュ崟璇︽儏
+     */
+    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);
+                        }
+                    }
+                }
+            }
+        });
+    }
+
 }

--
Gitblit v1.8.0