From 4f7f99c6ea914bcd38de78bd8371be566026b905 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期三, 26 二月 2025 15:54:14 +0800
Subject: [PATCH] -为按钮和列表项添加波纹效果,以获得更好的视觉反馈 -改进MapFragment中的底部布局动画 -在MapFragment中添加设备状态和RTU地址显示 -更新BaseListResult以支持泛型类型 -为设备数据添加IntakeListResult和IntakeResult -通过数据库支持增强标记位置更新功能 -添加电话拨号意图以分隔标记详细信息 -通过过期检查改进磁贴缓存 -添加问题报告的确认对话框 -更新登录活动以限制用户名长度 -为波纹效果和UI元素添加新颜色 -重构XML布局以使用新的波纹图 -改进MapFragment中的错误处理和用户反馈

---
 app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java |  241 +++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 205 insertions(+), 36 deletions(-)

diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java
index 2c6dad0..ff99220 100644
--- a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java
+++ b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java
@@ -1,26 +1,52 @@
 package com.dayu.pipirrapp.activity;
 
+import android.app.NotificationManager;
+import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
 import androidx.annotation.Nullable;
+import androidx.core.content.res.ResourcesCompat;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.SimpleItemAnimator;
 
+import com.dayu.pipirrapp.MyApplication;
 import com.dayu.pipirrapp.R;
+import com.dayu.pipirrapp.adapter.ImageAdapter;
+import com.dayu.pipirrapp.bean.ImageBean;
 import com.dayu.pipirrapp.bean.net.DealDetailResult;
+import com.dayu.pipirrapp.bean.net.ImageResult;
 import com.dayu.pipirrapp.bean.net.OrderDetailResult;
+import com.dayu.pipirrapp.bean.net.UplodFileState;
 import com.dayu.pipirrapp.databinding.ActivityOrderDetailBinding;
+import com.dayu.pipirrapp.fragment.OrderFragment;
 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.tool.BigimageUtils;
+import com.dayu.pipirrapp.tool.FullyGridLayoutManager;
+import com.dayu.pipirrapp.utils.CommonKeyName;
 import com.dayu.pipirrapp.utils.ToastUtil;
+import com.dayu.pipirrapp.view.ConfirmDialog;
 import com.dayu.pipirrapp.view.TitleBar;
+import com.jeremyliao.liveeventbus.LiveEventBus;
+import com.luck.picture.lib.decoration.GridSpacingItemDecoration;
+import com.luck.picture.lib.utils.DensityUtil;
 
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
+
+import cc.shinichi.library.bean.ImageInfo;
+import cc.shinichi.library.bean.Type;
 
 /**
  * OrderDetailActivity -
@@ -34,22 +60,48 @@
     ActivityOrderDetailBinding binding;
     String workOrderId;
     String proResultId;
+    ImageAdapter mAdapter;
+    List<ImageBean> images = new ArrayList<>();
+    RecyclerView mRecyclerView;
+    List<ImageInfo> imageInfoList = new ArrayList<>();
+    int ProResultStateId;
+    private ActivityResultLauncher<Intent> activityResultLauncher =
+            registerForActivityResult(
+                    new ActivityResultContracts.StartActivityForResult(),
+                    result -> {
+                        if (result.getResultCode() == OrderFragment.RESULT_REFRESH) {
+                            setResult(OrderFragment.RESULT_REFRESH);
+                            finish();
+                        }
+                    });
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         binding = ActivityOrderDetailBinding.inflate(LayoutInflater.from(this));
         setContentView(binding.getRoot());
-
         new TitleBar(this).setTitleText("宸ュ崟璇︽儏").setLeftIco().setLeftIcoListening(v -> OrderDetailActivity.this.finish());
         initView();
+        getData(this.getIntent());
     }
 
-    void initView() {
-        workOrderId = this.getIntent().getStringExtra("workOrderId");
+    @Override
+    protected void onNewIntent(Intent intent) {
+        super.onNewIntent(intent);
+        getData(intent);
+    }
+
+    private void getData(Intent intent) {
+
+        workOrderId = intent.getStringExtra("workOrderId");
+        NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
+        notificationManager.cancel(workOrderId.hashCode());
         if (this.getIntent().hasExtra("proResultId")) {
+            binding.orderDealLL.setVisibility(View.VISIBLE);
             proResultId = this.getIntent().getStringExtra("proResultId");
             getHandleData(proResultId);
+        } else {
+            binding.orderDealLL.setVisibility(View.GONE);
         }
         if (!TextUtils.isEmpty(workOrderId)) {
             getMarkerData(workOrderId);
@@ -57,10 +109,25 @@
             this.finish();
             ToastUtil.showToastLong(this, "褰撳墠workOrderId涓虹┖");
         }
+    }
 
 
+    void initView() {
         binding.setItemclidk(OrderDetailActivity.this);
+        mRecyclerView = binding.recyclerView;
+        FullyGridLayoutManager manager = new FullyGridLayoutManager(this, 4, GridLayoutManager.VERTICAL, false);
+        mRecyclerView.setLayoutManager(manager);
+        RecyclerView.ItemAnimator itemAnimator = mRecyclerView.getItemAnimator();
+        if (itemAnimator != null) {
+            ((SimpleItemAnimator) itemAnimator).setSupportsChangeAnimations(false);
+        }
+        // 娣诲姞闂磋窛瑁呴グ锛岀‘淇濆浘鐗囨湁鍚堥�傜殑闂撮殧
+        mRecyclerView.addItemDecoration(new GridSpacingItemDecoration(4, DensityUtil.dip2px(this, 8), false));
+        mAdapter = new ImageAdapter(this, images, (v, position) -> {
+            BigimageUtils.showImages(this, position, imageInfoList);
 
+        });
+        mRecyclerView.setAdapter(mAdapter);
     }
 
     /**
@@ -73,41 +140,56 @@
             @Override
             public void onNext(BaseResponse<OrderDetailResult> t) {
                 if (t.isSuccess()) {
-                    if (t.isSuccess()) {
-                        if (t.getContent() != null) {
-                            OrderDetailResult orderDetailResult = t.getContent();
-                            binding.setData(orderDetailResult);
-                            if (!TextUtils.isEmpty(t.getContent().getProResultId()) && TextUtils.isEmpty(proResultId)) {
-                                getHandleData(orderDetailResult.getProResultId());
-                            }
-                            switch (orderDetailResult.getProResultStateId()) {
-                                case 0://鏈笂鎶�
-                                    binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.black));
-                                    binding.stateText.setBackground(OrderDetailActivity.this.getResources().getDrawable(R.drawable.order_state_no_bg));
-                                    break;
-                                case 1://宸蹭笂鎶�
-                                    binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.white));
-                                    binding.stateText.setBackground(OrderDetailActivity.this.getResources().getDrawable(R.drawable.order_state_wait_bg));
-                                    binding.dealButton.setVisibility(View.GONE);
-                                    break;
-                                case 2://宸插畬鎴�
-                                    binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.white));
-                                    binding.stateText.setBackground(OrderDetailActivity.this.getResources().getDrawable(R.drawable.order_state_finish_bg));
-                                    binding.dealButton.setVisibility(View.GONE);
-                                    break;
-                                case 3://琚┏鍥�
-                                    binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.white));
-                                    binding.stateText.setBackground(OrderDetailActivity.this.getResources().getDrawable(R.drawable.order_state_reject_bg));
-                                    break;
-
-                            }
-                        } else {
-                            ToastUtil.showToast(OrderDetailActivity.this, t.getMsg());
+                    LiveEventBus.get(CommonKeyName.RedLotRefresh).post(workOrderId);
+                    if (t.getContent() != null) {
+                        OrderDetailResult orderDetailResult = t.getContent();
+                        binding.setData(orderDetailResult);
+                        if (!TextUtils.isEmpty(t.getContent().getProResultId()) && TextUtils.isEmpty(proResultId)) {
+                            getHandleData(orderDetailResult.getProResultId());
                         }
+                        ProResultStateId = orderDetailResult.getProResultStateId();
+                        switch (ProResultStateId) {
+                            case 0://鏈笂鎶�
+                                binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.black, null));
+                                binding.stateText.setBackground(ResourcesCompat.getDrawable(OrderDetailActivity.this.getResources(), R.drawable.order_state_no_bg, null));
+                                binding.dealButton.setBackground(getResources().getDrawable(R.drawable.bottom_butten_blue_ripple, null));
+                                binding.dealButton.setVisibility(View.VISIBLE);
+                                break;
+                            case 1://宸蹭笂鎶�
+                                binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.white, null));
+                                binding.stateText.setBackground(ResourcesCompat.getDrawable(OrderDetailActivity.this.getResources(), R.drawable.order_state_wait_bg, null));
+                                binding.dealButton.setBackground(getResources().getDrawable(R.drawable.bottom_butten_red_ripple, null));
+                                binding.dealButton.setVisibility(View.VISIBLE);
+                                binding.dealButton.setText("鍒犻櫎澶勭悊缁撴灉");
+                                break;
+                            case 2://宸插畬鎴�
+                                binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.white, null));
+                                binding.stateText.setBackground(ResourcesCompat.getDrawable(OrderDetailActivity.this.getResources(), R.drawable.order_state_finish_bg, null));
+                                binding.dealButton.setVisibility(View.GONE);
+                                break;
+                            case 3://琚┏鍥�
+                                binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.white, null));
+                                binding.stateText.setBackground(ResourcesCompat.getDrawable(OrderDetailActivity.this.getResources(), R.drawable.order_state_reject_bg, null));
+                                binding.dealButton.setBackground(getResources().getDrawable(R.drawable.bottom_butten_blue_ripple, null));
+                                binding.dealButton.setVisibility(View.VISIBLE);
+                                break;
+
+                        }
+                    } else {
+                        ToastUtil.showToast(OrderDetailActivity.this, t.getMsg());
                     }
+                } else if (t.DATA_NULL.equals(t.getCode())) {
+                    //宸ュ崟宸茶鍒犻櫎
+                    ToastUtil.showToast(OrderDetailActivity.this, "璁㈠崟宸茶鍒犻櫎锛�");
+                    setResult(OrderFragment.RESULT_REFRESH);
+                    OrderDetailActivity.this.finish();
+
                 } else {
+
                     ToastUtil.showToast(OrderDetailActivity.this, t.getMsg());
+                    OrderDetailActivity.this.finish();
                 }
+
             }
 
             @Override
@@ -115,6 +197,12 @@
                 super.onCloose();
             }
 
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+                ToastUtil.showToastLong(OrderDetailActivity.this, "鑾峰彇璇︽儏澶辫触锛岃绋嶅悗鍐嶈瘯");
+                OrderDetailActivity.this.finish();
+            }
         });
     }
 
@@ -132,7 +220,44 @@
                 if (t.isSuccess()) {
                     if (t.isSuccess()) {
                         if (t.getContent() != null) {
+                            binding.orderDealLL.setVisibility(View.VISIBLE);
                             binding.setDealData(t.getContent());
+
+                            if (!t.getContent().getImages().isEmpty()) {
+                                for (ImageResult imageResult : t.getContent().getImages()) {
+                                    ImageBean imageBean = new ImageBean();
+                                    imageBean.setId(imageResult.getId());
+                                    imageBean.setWebPath(imageResult.getWebPathZip());
+                                    imageBean.setType(UplodFileState.IMG_TYPE);
+                                    images.add(imageBean);
+                                    ImageInfo info = new ImageInfo();
+                                    info.setOriginUrl(imageResult.getWebPath());
+                                    info.setType(Type.IMAGE);
+                                    if (imageResult.getWebPathZip() != null) {
+                                        info.setThumbnailUrl(imageResult.getWebPathZip());
+                                    }
+
+                                    imageInfoList.add(info);
+                                }
+                            }
+                            if (!t.getContent().getVideos().isEmpty()) {
+                                for (ImageResult imageResult : t.getContent().getVideos()) {
+                                    ImageBean imageBean = new ImageBean();
+                                    imageBean.setId(imageResult.getId());
+                                    imageBean.setWebPath(imageResult.getWebPathZip());
+                                    imageBean.setType(UplodFileState.VIDEO_TYPE);
+                                    images.add(imageBean);
+                                    ImageInfo info = new ImageInfo();
+                                    info.setOriginUrl(imageResult.getWebPath());
+                                    info.setThumbnailUrl(imageResult.getWebPath());
+                                    if (imageResult.getWebPathZip() != null) {
+                                        info.setThumbnailUrl(imageResult.getWebPathZip());
+                                    }
+                                    info.setType(Type.VIDEO);
+                                    imageInfoList.add(info);
+                                }
+                            }
+                            mAdapter.notifyDataSetChanged();
                         } else {
                             ToastUtil.showToast(OrderDetailActivity.this, t.getMsg());
                         }
@@ -150,11 +275,55 @@
         });
     }
 
+    /**
+     * 鍒犻櫎澶勭悊璇︽儏
+     */
+    private void deleteDealData() {
+
+        Map<String, Object> params = new HashMap<>();
+        params.put("proResultId", proResultId);
+        params.put("inspectorId", MyApplication.myApplication.userId);
+        ApiManager.getInstance().requestPost(this, Constants.BASE_URL + "/app/workOrder/deleteProResult", DealDetailResult.class, params, new SubscriberListener<BaseResponse<DealDetailResult>>() {
+            @Override
+            public void onNext(BaseResponse<DealDetailResult> t) {
+                if (t.isSuccess()) {
+                    if (t.isSuccess()) {
+                        ToastUtil.showToastLong(OrderDetailActivity.this, "鍒犻櫎鎴愬姛!");
+                        setResult(OrderFragment.RESULT_REFRESH);
+                        OrderDetailActivity.this.finish();
+                    }
+                } else {
+                    ToastUtil.showToast(OrderDetailActivity.this, t.getMsg());
+                }
+            }
+
+            @Override
+            public void onCloose() {
+                super.onCloose();
+            }
+
+        });
+    }
 
     public void startDealActivity() {
-        Intent intent = new Intent(this, OrderDealActivity.class);
-        intent.putExtra("workOrderId", workOrderId);
-        startActivityForResult(intent, 1);
+
+        switch (ProResultStateId) {
+            case 0:
+            case 3:
+                Intent intent = new Intent(this, OrderDealActivity.class);
+                intent.putExtra("workOrderId", workOrderId);
+                activityResultLauncher.launch(intent);
+                break;
+            case 1:
+                ConfirmDialog confirmDialog = new ConfirmDialog(this, "纭鍒犻櫎璇ュ鐞嗙粨鏋滃悧锛�", (confirmDialog1, v) -> {
+                    confirmDialog1.dismiss();
+                    deleteDealData();
+                });
+                confirmDialog.show();
+                break;
+        }
+
+
     }
 
 }

--
Gitblit v1.8.0