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/bean/net/IntakeListResult.java    |   59 +++++
 app/src/main/res/layout/item_inspect.xml                               |    3 
 app/src/main/java/com/dayu/pipirrapp/bean/net/BaseListResult.java      |   46 ++++
 app/src/main/res/layout/item_issue.xml                                 |    2 
 app/src/main/res/layout/activity_order_deal.xml                        |   16 +
 app/src/main/res/layout/item_order.xml                                 |    2 
 app/src/main/res/layout/activity_order_detail.xml                      |    2 
 app/src/main/res/values/colors.xml                                     |    1 
 app/src/main/res/layout/activity_add_issue.xml                         |    2 
 app/src/main/java/com/dayu/pipirrapp/dao/MarkerDao.java                |    3 
 app/src/main/res/layout/fragment_map.xml                               |   56 +++++
 app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java       |    5 
 app/src/main/res/drawable/my_item_ripple.xml                           |    2 
 app/src/main/res/layout/activity_login.xml                             |    1 
 app/src/main/res/drawable/bottom_butten_blue_ripple.xml                |   16 +
 app/src/main/java/com/dayu/pipirrapp/bean/net/IntakeResult.java        |  118 +++++++++++
 app/src/main/res/layout/fragment_my.xml                                |    2 
 app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java         |  199 +++++++++++++++----
 app/src/main/res/drawable/bottom_butten_red_ripple.xml                 |   16 +
 app/src/main/res/drawable/item_ripple.xml                              |   20 ++
 app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java |   18 
 app/src/main/res/layout/activity_issue_detail.xml                      |    2 
 22 files changed, 524 insertions(+), 67 deletions(-)

diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java
index 8e62470..70d77a8 100644
--- a/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java
+++ b/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java
@@ -112,7 +112,9 @@
 
     }
 
-
+    /**
+     * 鏄剧ず闅愯棌瀵嗙爜
+     */
     private void togglePasswordVisibility() {
         if (isPasswordVisible) {
             // 濡傛灉瀵嗙爜鍙锛岄殣钘忓瘑鐮�
@@ -240,6 +242,7 @@
                             isShowCode = true;
                             SharedPreferencesHelper.getInstance(LoginActivity.this).put(CommonKeyName.isShowCode, true);
                             binding.codeLL.setVisibility(View.VISIBLE);
+                            getCode();
                         }
                     }
 
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 fe15c6c..ff99220 100644
--- a/app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java
+++ b/app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java
@@ -152,13 +152,13 @@
                             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.setBackgroundColor(getResources().getColor(R.color.title_color, 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.setBackgroundColor(getResources().getColor(R.color.delete_color, null));
+                                binding.dealButton.setBackground(getResources().getDrawable(R.drawable.bottom_butten_red_ripple, null));
                                 binding.dealButton.setVisibility(View.VISIBLE);
                                 binding.dealButton.setText("鍒犻櫎澶勭悊缁撴灉");
                                 break;
@@ -170,7 +170,7 @@
                             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.setBackgroundColor(getResources().getColor(R.color.title_color));
+                                binding.dealButton.setBackground(getResources().getDrawable(R.drawable.bottom_butten_blue_ripple, null));
                                 binding.dealButton.setVisibility(View.VISIBLE);
                                 break;
 
@@ -223,8 +223,8 @@
                             binding.orderDealLL.setVisibility(View.VISIBLE);
                             binding.setDealData(t.getContent());
 
-                            if (!t.getContent().getImages().isEmpty()){
-                                for (ImageResult imageResult:t.getContent().getImages()){
+                            if (!t.getContent().getImages().isEmpty()) {
+                                for (ImageResult imageResult : t.getContent().getImages()) {
                                     ImageBean imageBean = new ImageBean();
                                     imageBean.setId(imageResult.getId());
                                     imageBean.setWebPath(imageResult.getWebPathZip());
@@ -233,15 +233,15 @@
                                     ImageInfo info = new ImageInfo();
                                     info.setOriginUrl(imageResult.getWebPath());
                                     info.setType(Type.IMAGE);
-                                    if (imageResult.getWebPathZip()!=null){
+                                    if (imageResult.getWebPathZip() != null) {
                                         info.setThumbnailUrl(imageResult.getWebPathZip());
                                     }
 
                                     imageInfoList.add(info);
                                 }
                             }
-                            if (!t.getContent().getVideos().isEmpty()){
-                                for (ImageResult imageResult:t.getContent().getVideos()){
+                            if (!t.getContent().getVideos().isEmpty()) {
+                                for (ImageResult imageResult : t.getContent().getVideos()) {
                                     ImageBean imageBean = new ImageBean();
                                     imageBean.setId(imageResult.getId());
                                     imageBean.setWebPath(imageResult.getWebPathZip());
@@ -250,7 +250,7 @@
                                     ImageInfo info = new ImageInfo();
                                     info.setOriginUrl(imageResult.getWebPath());
                                     info.setThumbnailUrl(imageResult.getWebPath());
-                                    if (imageResult.getWebPathZip()!=null){
+                                    if (imageResult.getWebPathZip() != null) {
                                         info.setThumbnailUrl(imageResult.getWebPathZip());
                                     }
                                     info.setType(Type.VIDEO);
diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/net/BaseListResult.java b/app/src/main/java/com/dayu/pipirrapp/bean/net/BaseListResult.java
index b82e4e5..945a34b 100644
--- a/app/src/main/java/com/dayu/pipirrapp/bean/net/BaseListResult.java
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/net/BaseListResult.java
@@ -1,5 +1,7 @@
 package com.dayu.pipirrapp.bean.net;
 
+import java.util.List;
+
 /**
  * BaseListResult -
  *
@@ -7,9 +9,51 @@
  * @version 1.0
  * @since 2024-11-26
  */
-public class BaseListResult {
+public class BaseListResult<T> {
+    public int getItemTotal() {
+        return itemTotal;
+    }
 
+    public void setItemTotal(int itemTotal) {
+        this.itemTotal = itemTotal;
+    }
 
+    public int getPageCurr() {
+        return pageCurr;
+    }
 
+    public void setPageCurr(int pageCurr) {
+        this.pageCurr = pageCurr;
+    }
+
+    public int getPageSize() {
+        return pageSize;
+    }
+
+    public void setPageSize(int pageSize) {
+        this.pageSize = pageSize;
+    }
+
+    public int getPageTotal() {
+        return pageTotal;
+    }
+
+    public void setPageTotal(int pageTotal) {
+        this.pageTotal = pageTotal;
+    }
+
+    public List<T> getObj() {
+        return obj;
+    }
+
+    public void setObj(List<T> obj) {
+        this.obj = obj;
+    }
+
+    private int itemTotal;
+    private int pageCurr;
+    private int pageSize;
+    private int pageTotal;
+    private List<T> obj;
 
 }
diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/net/IntakeListResult.java b/app/src/main/java/com/dayu/pipirrapp/bean/net/IntakeListResult.java
new file mode 100644
index 0000000..2f26765
--- /dev/null
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/net/IntakeListResult.java
@@ -0,0 +1,59 @@
+package com.dayu.pipirrapp.bean.net;
+
+import java.util.List;
+
+/**
+ * IntakeListResult - 璁惧鐩稿叧淇℃伅
+ *
+ * @author zuoxiao
+ * @version 1.0
+ * @since 2025-02-25
+ */
+public class IntakeListResult {
+    private int itemTotal;
+    private int pageCurr;
+    private int pageSize;
+    private int pageTotal;
+    private List<IntakeResult> obj;
+
+    public int getItemTotal() {
+        return itemTotal;
+    }
+
+    public void setItemTotal(int itemTotal) {
+        this.itemTotal = itemTotal;
+    }
+
+    public int getPageCurr() {
+        return pageCurr;
+    }
+
+    public void setPageCurr(int pageCurr) {
+        this.pageCurr = pageCurr;
+    }
+
+    public int getPageSize() {
+        return pageSize;
+    }
+
+    public void setPageSize(int pageSize) {
+        this.pageSize = pageSize;
+    }
+
+    public int getPageTotal() {
+        return pageTotal;
+    }
+
+    public void setPageTotal(int pageTotal) {
+        this.pageTotal = pageTotal;
+    }
+
+
+    public List<IntakeResult> getObj() {
+        return obj;
+    }
+
+    public void setObj(List<IntakeResult> obj) {
+        this.obj = obj;
+    }
+}
diff --git a/app/src/main/java/com/dayu/pipirrapp/bean/net/IntakeResult.java b/app/src/main/java/com/dayu/pipirrapp/bean/net/IntakeResult.java
new file mode 100644
index 0000000..25aad5f
--- /dev/null
+++ b/app/src/main/java/com/dayu/pipirrapp/bean/net/IntakeResult.java
@@ -0,0 +1,118 @@
+package com.dayu.pipirrapp.bean.net;
+
+/**
+ * IntakeData -璁惧璇︽儏
+ *
+ * @author zuoxiao
+ * @version 1.0
+ * @since 2025-02-25
+ */
+public class IntakeResult {
+    private String intakeId;
+    private String rtuAddr;
+    private String intakeNum;
+    private boolean isOnLine;
+    private boolean isBinded;
+    private String alarm;
+    private double instantAmount;
+    private double totalAmount;
+    private double lat;
+    private double lng;
+
+    // Getters and Setters
+    public String getIntakeId() {
+        return intakeId;
+    }
+
+    public void setIntakeId(String intakeId) {
+        this.intakeId = intakeId;
+    }
+
+    public String getRtuAddr() {
+        return rtuAddr;
+    }
+
+    public void setRtuAddr(String rtuAddr) {
+        this.rtuAddr = rtuAddr;
+    }
+
+    public String getIntakeNum() {
+        return intakeNum;
+    }
+
+    public void setIntakeNum(String intakeNum) {
+        this.intakeNum = intakeNum;
+    }
+
+    public boolean isOnLine() {
+        return isOnLine;
+    }
+
+    public void setOnLine(boolean onLine) {
+        isOnLine = onLine;
+    }
+
+    public boolean isBinded() {
+        return isBinded;
+    }
+
+    public void setBinded(boolean binded) {
+        isBinded = binded;
+    }
+
+    public String getAlarm() {
+        return alarm;
+    }
+
+    public void setAlarm(String alarm) {
+        this.alarm = alarm;
+    }
+
+    public double getInstantAmount() {
+        return instantAmount;
+    }
+
+    public void setInstantAmount(double instantAmount) {
+        this.instantAmount = instantAmount;
+    }
+
+    public double getTotalAmount() {
+        return totalAmount;
+    }
+
+    public void setTotalAmount(double totalAmount) {
+        this.totalAmount = totalAmount;
+    }
+
+    public double getLat() {
+        return lat;
+    }
+
+    public void setLat(double lat) {
+        this.lat = lat;
+    }
+
+    public double getLng() {
+        return lng;
+    }
+
+    public void setLng(double lng) {
+        this.lng = lng;
+    }
+
+    @Override
+    public String toString() {
+        return "IntakeData{" +
+                "intakeId='" + intakeId + '\'' +
+                ", rtuAddr='" + rtuAddr + '\'' +
+                ", intakeNum='" + intakeNum + '\'' +
+                ", isOnLine=" + isOnLine +
+                ", isBinded=" + isBinded +
+                ", alarm='" + alarm + '\'' +
+                ", instantAmount=" + instantAmount +
+                ", totalAmount=" + totalAmount +
+                ", lat=" + lat +
+                ", lng=" + lng +
+                '}';
+    }
+}
diff --git a/app/src/main/java/com/dayu/pipirrapp/dao/MarkerDao.java b/app/src/main/java/com/dayu/pipirrapp/dao/MarkerDao.java
index c34cb55..33dd4f5 100644
--- a/app/src/main/java/com/dayu/pipirrapp/dao/MarkerDao.java
+++ b/app/src/main/java/com/dayu/pipirrapp/dao/MarkerDao.java
@@ -55,4 +55,7 @@
 
     @Query("SELECT * FROM MarkerBean WHERE name LIKE '%' || :name || '%'")
     Single<List<MarkerBean>> findByNameLike(String name);
+
+    @Query("UPDATE MarkerBean SET lng = :lng, lat = :lat WHERE id = :id")
+    Completable updateMarkerLocation(String id, String lng, String lat);
 }
diff --git a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
index 31e8b08..5591ce1 100644
--- a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
+++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
@@ -5,6 +5,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.res.Resources;
+import android.net.Uri;
 import android.os.Bundle;
 import android.text.TextUtils;
 import android.util.Log;
@@ -35,11 +36,14 @@
 import com.dayu.pipirrapp.bean.db.PipeNetWorkDataBean;
 import com.dayu.pipirrapp.bean.db.PipeNetworkBean;
 import com.dayu.pipirrapp.bean.db.PipeNetworkDataCoordinateBean;
+import com.dayu.pipirrapp.bean.net.BaseListResult;
 import com.dayu.pipirrapp.bean.net.CenterPointResult;
 import com.dayu.pipirrapp.bean.net.DivideListResult;
 import com.dayu.pipirrapp.bean.net.DivideResult;
 import com.dayu.pipirrapp.bean.net.InsectionResult;
 import com.dayu.pipirrapp.bean.net.InspectionRequest;
+import com.dayu.pipirrapp.bean.net.IntakeListResult;
+import com.dayu.pipirrapp.bean.net.IntakeResult;
 import com.dayu.pipirrapp.bean.net.MarkerListResult;
 import com.dayu.pipirrapp.bean.net.MarkerResult;
 import com.dayu.pipirrapp.bean.net.PipeNetworkResult;
@@ -149,7 +153,7 @@
         LiveEventBus.get(CommonKeyName.refreshData).observe(this, o -> {
             // 鏄剧ず鍔犺浇鍔ㄧ敾
             TipUtil.showLoading(MapFragment.this.getActivity(), "姝e湪鏇存柊鏁版嵁...");
-            
+
             // 鍒涘缓澶氫釜Single瀵硅薄鏉ヨ〃绀烘瘡涓綉缁滆姹�
             Single<Boolean> centerPointSingle = Single.create(emitter -> {
                 getCenterPoint();
@@ -173,28 +177,28 @@
 
             // 缁勫悎鎵�鏈塖ingle
             compositeDisposable.add(
-                Single.zip(
-                    centerPointSingle,
-                    markerDataSingle, 
-                    divideListSingle,
-                    pipeNetworkListSingle,
-                    (centerPoint, marker, divide, pipe) -> true
-                )
-                .subscribeOn(Schedulers.io())
-                .observeOn(AndroidSchedulers.mainThread())
-                .doFinally(() -> {
-                    // 鏃犺鎴愬姛杩樻槸澶辫触锛岄兘闇�瑕侀殣钘忓姞杞藉姩鐢�
-                    TipUtil.dismissLoading();
-                })
-                .subscribe(
-                    result -> {
-                        ToastUtil.showToast(MapFragment.this.getContext(), "鏁版嵁鏇存柊瀹屾垚");
-                    },
-                    throwable -> {
-                        Log.e(TAG, "鏁版嵁鏇存柊澶辫触: " + throwable.getMessage());
-                        ToastUtil.showToast(MapFragment.this.getContext(), "鏁版嵁鏇存柊澶辫触");
-                    }
-                )
+                    Single.zip(
+                                    centerPointSingle,
+                                    markerDataSingle,
+                                    divideListSingle,
+                                    pipeNetworkListSingle,
+                                    (centerPoint, marker, divide, pipe) -> true
+                            )
+                            .subscribeOn(Schedulers.io())
+                            .observeOn(AndroidSchedulers.mainThread())
+                            .doFinally(() -> {
+                                // 鏃犺鎴愬姛杩樻槸澶辫触锛岄兘闇�瑕侀殣钘忓姞杞藉姩鐢�
+                                TipUtil.dismissLoading();
+                            })
+                            .subscribe(
+                                    result -> {
+                                        ToastUtil.showToast(MapFragment.this.getContext(), "鏁版嵁鏇存柊瀹屾垚");
+                                    },
+                                    throwable -> {
+                                        Log.e(TAG, "鏁版嵁鏇存柊澶辫触: " + throwable.getMessage());
+                                        ToastUtil.showToast(MapFragment.this.getContext(), "鏁版嵁鏇存柊澶辫触");
+                                    }
+                            )
             );
         });
     }
@@ -336,24 +340,31 @@
                     // 妫�鏌ユ湰鍦扮紦瀛�
                     File cachedTile = MapJpgUtils.getInsatance().getCachedTile(androidUrl);
                     if (cachedTile != null && cachedTile.exists()) {
-//                        Log.d(TAG, "鏈湴缂撳瓨>>>" + androidUrl);
-//                        if (MapJpgUtils.getInsatance().validateImageFile(androidUrl,request.))
-                        // 鍒ゆ柇缂撳瓨鏄惁杩囨湡
-//                    if (!MapJpgUtils.getInsatance(MapFragment.this.getContext()).isCacheExpired(cachedTile)) {
-                        try {
-                            // 浠庣紦瀛樺姞杞界摝鐗�
-                            return new WebResourceResponse("image/jpg", "utf-8", new FileInputStream(cachedTile));
-                        } catch (FileNotFoundException e) {
-                            e.printStackTrace();
+                        // 妫�鏌ユ枃浠舵槸鍚﹁秴杩�6涓湀
+                        long sixMonthsInMillis = 6L * 30 * 24 * 60 * 60 * 1000; // 6涓湀鐨勬绉掓暟
+                        long fileAge = System.currentTimeMillis() - cachedTile.lastModified();
+
+                        if (fileAge > sixMonthsInMillis) {
+                            // 濡傛灉鏂囦欢瓒呰繃6涓湀锛屽垹闄ゆ棫鏂囦欢骞堕噸鏂颁笅杞�
+                            if (cachedTile.delete()) {
+                                Log.d(TAG, "宸插垹闄よ繃鏈熺摝鐗�: " + androidUrl);
+                            } else {
+                                Log.e(TAG, "鍒犻櫎杩囨湡鐡︾墖澶辫触: " + androidUrl);
+                            }
+                            ApiManager.getInstance().donwLoadTile(MapFragment.this.getContext(), androidUrl);
+                        } else {
+                            try {
+                                // 浠庣紦瀛樺姞杞界摝鐗�
+                                return new WebResourceResponse("image/jpg", "utf-8", new FileInputStream(cachedTile));
+                            } catch (FileNotFoundException e) {
+                                e.printStackTrace();
+                            }
                         }
-//                    }
                     } else {
                         //涓嬭浇鐡︾墖
                         ApiManager.getInstance().donwLoadTile(MapFragment.this.getContext(), androidUrl);
                     }
-
                 }
-
 
                 return super.shouldInterceptRequest(view, request);
             }
@@ -516,8 +527,13 @@
         });
         //涓婃姤闂
         binding.putButton.setOnClickListener(v -> {
-            Intent issue = new Intent(MapFragment.this.getActivity(), AddIssueActivity.class);
-            MapFragment.this.getActivity().startActivity(issue);
+            new ConfirmDialog(MapFragment.this.getActivity(), "纭涓婃姤闂鍚楋紵", (confirmDialog, v1) -> {
+                Intent issue = new Intent(MapFragment.this.getActivity(), AddIssueActivity.class);
+                MapFragment.this.getActivity().startActivity(issue);
+                confirmDialog.dismiss();
+            }).show();
+
+
         });
         binding.expandButton.setLegendsArray(new ExpandButton.Quadruple(
                         ContextCompat.getDrawable(requireContext(), R.drawable.marker_blue),
@@ -656,8 +672,23 @@
         });
     }
 
+    /**
+     * 闅愯棌搴曢儴甯冨眬鐨勫姩鐢绘晥鏋�
+     */
+    private void hideBottomLayoutWithAnimation() {
+        binding.bottomLL.animate()
+                .translationY(binding.bottomLL.getHeight())
+                .setDuration(300)
+                .setInterpolator(new android.view.animation.AccelerateInterpolator())
+                .withEndAction(() -> {
+                    binding.bottomLL.setVisibility(View.GONE);
+                    binding.bottomLL.setTranslationY(0);
+                })
+                .start();
+    }
+
     public void closeWaterIntakeDetail() {
-        binding.bottomLL.setVisibility(View.GONE);
+        hideBottomLayoutWithAnimation();
     }
 
     /**
@@ -1005,7 +1036,30 @@
                         binding.lat.setText(lat);
                         mWebView.evaluateJavascript("javascript:cancelPin()", value -> {
                         });
-                        ToastUtil.showToastLong(MapFragment.this.getContext(), "淇敼鎴愬姛锛�");
+
+                        // 鏇存柊鏈湴鏁版嵁搴�
+                        compositeDisposable.add(
+                                DaoSingleton.getAsynchInstance(MapFragment.this.getContext())
+                                        .markerDao()
+                                        .updateMarkerLocation(markerBean.getId(), lng, lat)
+                                        .subscribeOn(Schedulers.io())
+                                        .observeOn(AndroidSchedulers.mainThread())
+                                        .subscribe(
+                                                () -> {
+                                                    // 鏇存柊鏈湴缂撳瓨Map涓殑鏁版嵁
+                                                    MarkerBean cachedMarker = markerBeanSet.get(markerBean.getId());
+                                                    if (cachedMarker != null) {
+                                                        cachedMarker.setLng(lng);
+                                                        cachedMarker.setLat(lat);
+                                                    }
+                                                    ToastUtil.showToastLong(MapFragment.this.getContext(), "淇敼鎴愬姛锛�");
+                                                },
+                                                throwable -> {
+                                                    Log.e(TAG, "鏇存柊鏈湴鏁版嵁搴撳け璐�: ");
+                                                    ToastUtil.showToastLong(MapFragment.this.getContext(), "淇敼鎴愬姛锛屼絾鏈湴鏁版嵁搴撴洿鏂板け璐�");
+                                                }
+                                        )
+                        );
 
                     } else {
                         ToastUtil.showToastLong(MapFragment.this.getContext(), t.getMsg());
@@ -1045,6 +1099,7 @@
                     mMarkerBean.setAddress(result.getAddress());
                     mMarkerBean.setBlockName(result.getBlockName());
                     mMarkerBean.setDivideId(result.getDivideId());
+                    getDeviceData(result.getName());
                     showMarker(mMarkerBean);
                 } else {
                     ToastUtil.showToast(MapFragment.this.getContext(), t.getMsg());
@@ -1055,7 +1110,7 @@
     }
 
     /**
-     * 鏄剧ず鍙栨按鍙h鎯�
+     * 鏄剧ず鍒嗘按鎴胯鎯�
      */
     private void getDivideDetail(DivideBean divideBean) {
         ApiManager.getInstance().requestGet(this.getContext(), Constants.BASE_URL + "/project/divide/getone/" + divideBean.getDivideId(), DivideResult.class, null, new SubscriberListener<BaseResponse<DivideResult>>() {
@@ -1063,6 +1118,7 @@
             public void onNext(BaseResponse<DivideResult> t) {
                 if (t.isSuccess()) {
                     DivideBean divideBean = getDivideBean(t.getContent());
+                    getDeviceData(divideBean.getDivideName());
                     showDivideMarker(divideBean);
                 } else {
                     ToastUtil.showToast(MapFragment.this.getContext(), t.getMsg());
@@ -1073,10 +1129,23 @@
     }
 
     /**
+     * 鏄剧ず搴曢儴甯冨眬鐨勫姩鐢绘晥鏋�
+     */
+    private void showBottomLayoutWithAnimation() {
+        binding.bottomLL.setVisibility(View.VISIBLE);
+        binding.bottomLL.setTranslationY(binding.bottomLL.getHeight());
+        binding.bottomLL.animate()
+                .translationY(0)
+                .setDuration(300)
+                .setInterpolator(new android.view.animation.DecelerateInterpolator())
+                .start();
+    }
+
+    /**
      * 鏄剧ず鍙栨按鍙h鎯�
      */
     private void showMarker(MarkerBean markerBean) {
-        binding.bottomLL.setVisibility(View.VISIBLE);
+        showBottomLayoutWithAnimation();
         binding.phoneLL.setVisibility(View.GONE);
         binding.headerLL.setVisibility(View.GONE);
         binding.editePoint.setVisibility(View.VISIBLE);
@@ -1120,7 +1189,7 @@
      * @param divideBean
      */
     private void showDivideMarker(DivideBean divideBean) {
-        binding.bottomLL.setVisibility(View.VISIBLE);
+        showBottomLayoutWithAnimation();
         binding.phoneLL.setVisibility(View.VISIBLE);
         binding.headerLL.setVisibility(View.VISIBLE);
         binding.editePoint.setVisibility(View.GONE);
@@ -1128,6 +1197,11 @@
         binding.markerName.setText(divideBean.getDivideName());
         binding.markerBlockName.setText(divideBean.getBlockName());
         binding.phone.setText(divideBean.getPhone());
+        binding.phone.setOnClickListener(v -> {
+            Intent intent = new Intent(Intent.ACTION_DIAL);
+            intent.setData(Uri.parse("tel:" + divideBean.getPhone()));
+            startActivity(intent);
+        });
         binding.header.setText(divideBean.getHeader());
         binding.lat.setText(divideBean.getLat());
         binding.lng.setText(divideBean.getLng());
@@ -1384,4 +1458,45 @@
         }
     }
 
+    /**
+     * 鑾峰彇璁惧鐩稿叧鐘舵�佷俊鎭�
+     *
+     * @param intakeNum
+     */
+    private void getDeviceData(String intakeNum) {
+        Map<String, Object> params = new HashMap<>();
+        params.put("intakeNum", intakeNum);
+        ApiManager.getInstance().requestGetHideLoading(MapFragment.this.getContext(), BASE_URL + "/remote/monitor/all_intakes", IntakeListResult.class, params, new SubscriberListener<BaseResponse<IntakeListResult>>() {
+            @Override
+            public void onNext(BaseResponse<IntakeListResult> t) {
+                try {
+                    if (t.isSuccess()) {
+                        if (t.getContent() != null && t.getContent().getObj().size() > 0) {
+                            binding.deviceStateLL.setVisibility(View.VISIBLE);
+                            binding.rtuAddressLL.setVisibility(View.VISIBLE);
+                            IntakeResult intakeResult = t.getContent().getObj().get(0);
+                            if (intakeResult.isOnLine()) {
+                                binding.deviceState.setText("鍦ㄧ嚎");
+                                binding.deviceState.setTextColor(getResources().getColor(R.color.down_green_up, null));
+                            } else {
+                                binding.deviceState.setText("绂荤嚎");
+                                binding.deviceState.setTextColor(getResources().getColor(R.color.delete_color, null));
+                            }
+                            binding.rtuAddress.setText(intakeResult.getRtuAddr());
+                        } else {
+                            binding.deviceStateLL.setVisibility(View.GONE);
+                            binding.rtuAddressLL.setVisibility(View.GONE);
+                        }
+                    } else {
+                        ToastUtil.showToastLong(MapFragment.this.getContext(), t.getMsg());
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    CrashReport.postCatchedException(e);
+                }
+            }
+
+        });
+    }
+
 }
diff --git a/app/src/main/res/drawable/bottom_butten_blue_ripple.xml b/app/src/main/res/drawable/bottom_butten_blue_ripple.xml
new file mode 100644
index 0000000..9f1abdb
--- /dev/null
+++ b/app/src/main/res/drawable/bottom_butten_blue_ripple.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+    android:color="?android:attr/colorControlHighlight">
+    <!-- 鑳屾櫙褰㈢姸鍙婇鑹� -->
+    <item>
+        <shape android:shape="rectangle">
+            <solid android:color="@color/base_blue" /> <!-- 鑳屾櫙鑹� -->
+        </shape>
+    </item>
+    <!-- 鎺╃爜鏁堟灉锛岀敤浜庢帶鍒舵尝绾硅寖鍥达紙鍙�夛級 -->
+    <item android:id="@android:id/mask">
+        <shape android:shape="rectangle">
+            <solid android:color="@color/down_blue" /> <!-- 鎺╃爜棰滆壊 -->
+        </shape>
+    </item>
+</ripple>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bottom_butten_red_ripple.xml b/app/src/main/res/drawable/bottom_butten_red_ripple.xml
new file mode 100644
index 0000000..b7521af
--- /dev/null
+++ b/app/src/main/res/drawable/bottom_butten_red_ripple.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+    android:color="?android:attr/colorControlHighlight">
+    <!-- 鑳屾櫙褰㈢姸鍙婇鑹� -->
+    <item>
+        <shape android:shape="rectangle">
+            <solid android:color="@color/delete_color" /> <!-- 鑳屾櫙鑹� -->
+        </shape>
+    </item>
+    <!-- 鎺╃爜鏁堟灉锛岀敤浜庢帶鍒舵尝绾硅寖鍥达紙鍙�夛級 -->
+    <item android:id="@android:id/mask">
+        <shape android:shape="rectangle">
+            <solid android:color="@color/delete_color_down" /> <!-- 鎺╃爜棰滆壊 -->
+        </shape>
+    </item>
+</ripple>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/item_ripple.xml b/app/src/main/res/drawable/item_ripple.xml
new file mode 100644
index 0000000..36dbfff
--- /dev/null
+++ b/app/src/main/res/drawable/item_ripple.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+    android:color="?android:attr/colorControlHighlight">
+    <!-- 鑳屾櫙褰㈢姸鍙婇鑹� -->
+    <item>
+        <shape android:shape="rectangle">
+            <solid android:color="@color/white" /> <!-- 鑳屾櫙鑹� -->
+            <corners android:radius="7dp" />
+            <stroke
+                android:width="1dp"
+                android:color="#ededed" />
+        </shape>
+    </item>
+    <!-- 鎺╃爜鏁堟灉锛岀敤浜庢帶鍒舵尝绾硅寖鍥达紙鍙�夛級 -->
+    <item android:id="@android:id/mask">
+        <shape android:shape="rectangle">
+            <solid android:color="@color/text_color" /> <!-- 鎺╃爜棰滆壊 -->
+        </shape>
+    </item>
+</ripple>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/my_item_ripple.xml b/app/src/main/res/drawable/my_item_ripple.xml
index dd91631..1b412d9 100644
--- a/app/src/main/res/drawable/my_item_ripple.xml
+++ b/app/src/main/res/drawable/my_item_ripple.xml
@@ -5,7 +5,7 @@
     <item>
         <shape android:shape="rectangle">
             <solid android:color="@color/white" /> <!-- 鑳屾櫙鑹� -->
-            <corners android:radius="10dp" /> <!-- 鍦嗚鍗婂緞 -->
+<!--            <corners android:radius="10dp" /> &lt;!&ndash; 鍦嗚鍗婂緞 &ndash;&gt;-->
         </shape>
     </item>
     <!-- 鎺╃爜鏁堟灉锛岀敤浜庢帶鍒舵尝绾硅寖鍥达紙鍙�夛級 -->
diff --git a/app/src/main/res/layout/activity_add_issue.xml b/app/src/main/res/layout/activity_add_issue.xml
index 7709285..fecaaa2 100644
--- a/app/src/main/res/layout/activity_add_issue.xml
+++ b/app/src/main/res/layout/activity_add_issue.xml
@@ -81,7 +81,7 @@
         android:layout_width="match_parent"
         android:layout_height="@dimen/order_detail_button_height"
         android:layout_alignParentBottom="true"
-        android:background="@color/title_color"
+        android:background="@drawable/bottom_butten_blue_ripple"
         android:gravity="center"
         android:text="涓婃姤闂"
         android:textColor="@color/white"
diff --git a/app/src/main/res/layout/activity_issue_detail.xml b/app/src/main/res/layout/activity_issue_detail.xml
index 6c4996e..2ef32f8 100644
--- a/app/src/main/res/layout/activity_issue_detail.xml
+++ b/app/src/main/res/layout/activity_issue_detail.xml
@@ -300,8 +300,8 @@
             android:layout_width="match_parent"
             android:layout_height="@dimen/order_detail_button_height"
             android:layout_alignParentBottom="true"
-            android:background="@color/title_color"
             android:gravity="center"
+            android:background="@drawable/bottom_butten_blue_ripple"
             android:onClick="@{()->itemclidk.deleteIssue()}"
             android:text="鍒犻櫎闂"
             android:textColor="@color/white"
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index f67c259..7128ae0 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -27,6 +27,7 @@
         android:hint="璇疯緭鍏ヨ处鍙�"
         android:maxLines="1"
         android:paddingLeft="15dp"
+        android:maxLength="11"
         android:singleLine="true"
         android:text="15802220723" />
 
diff --git a/app/src/main/res/layout/activity_order_deal.xml b/app/src/main/res/layout/activity_order_deal.xml
index 8481bf9..a254f14 100644
--- a/app/src/main/res/layout/activity_order_deal.xml
+++ b/app/src/main/res/layout/activity_order_deal.xml
@@ -31,7 +31,7 @@
             android:layout_above="@+id/deal_button"
             android:layout_below="@+id/title"
             android:orientation="vertical"
-            android:padding="20dp">
+           >
 
 
             <RelativeLayout
@@ -39,6 +39,10 @@
                 android:layout_width="match_parent"
                 android:layout_height="40dp"
                 android:gravity="center"
+                android:layout_marginRight="20dp"
+                android:layout_marginLeft="20dp"
+                android:layout_marginTop="20dp"
+                android:background="@drawable/my_item_ripple"
                 android:orientation="horizontal">
 
                 <TextView
@@ -85,6 +89,8 @@
                 android:layout_width="match_parent"
                 android:layout_marginTop="10dp"
                 android:layout_height="wrap_content"
+                android:layout_marginRight="20dp"
+                android:layout_marginLeft="20dp"
                 android:orientation="horizontal">
 
                 <TextView
@@ -112,12 +118,16 @@
                 android:gravity="start"
                 android:maxHeight="200dp"
                 android:minHeight="100dp"
+                android:layout_marginRight="20dp"
+                android:layout_marginLeft="20dp"
                 android:text="" />
 
             <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="10dp"
+                android:layout_marginRight="20dp"
+                android:layout_marginLeft="20dp"
                 android:orientation="horizontal">
 
                 <TextView
@@ -140,6 +150,8 @@
                 android:id="@+id/recycler"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
+                android:layout_marginRight="20dp"
+                android:layout_marginLeft="20dp"
                 android:layout_marginTop="10dp"
                 android:background="@color/white"
                 android:overScrollMode="never"
@@ -151,8 +163,8 @@
             android:id="@+id/deal_button"
             android:layout_width="match_parent"
             android:layout_height="@dimen/order_detail_button_height"
+            android:background="@drawable/bottom_butten_blue_ripple"
             android:layout_alignParentBottom="true"
-            android:background="@color/title_color"
             android:gravity="center"
             android:text="鎻�   浜�"
             android:textColor="@color/white"
diff --git a/app/src/main/res/layout/activity_order_detail.xml b/app/src/main/res/layout/activity_order_detail.xml
index 6a2ac80..7e2fe15 100644
--- a/app/src/main/res/layout/activity_order_detail.xml
+++ b/app/src/main/res/layout/activity_order_detail.xml
@@ -420,7 +420,7 @@
             android:layout_width="match_parent"
             android:layout_height="@dimen/order_detail_button_height"
             android:layout_alignParentBottom="true"
-            android:background="@color/title_color"
+            android:background="@drawable/bottom_butten_blue_ripple"
             android:gravity="center"
             android:onClick="@{()->itemclidk.startDealActivity()}"
             android:text="澶勭悊宸ュ崟"
diff --git a/app/src/main/res/layout/fragment_map.xml b/app/src/main/res/layout/fragment_map.xml
index dc6e3a4..b64df88 100644
--- a/app/src/main/res/layout/fragment_map.xml
+++ b/app/src/main/res/layout/fragment_map.xml
@@ -232,7 +232,54 @@
                         android:textColor="@color/black"
                         android:textSize="@dimen/common_text_size_little" />
                 </LinearLayout>
+                <LinearLayout
+                    android:id="@+id/deviceStateLL"
+                    android:layout_width="match_parent"
+                    android:layout_height="25dp"
+                    android:gravity="center_vertical"
+                    android:orientation="horizontal">
 
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="璁惧锛�"
+                        android:textColor="@color/black"
+                        android:textSize="@dimen/common_text_size_little" />
+
+                    <TextView
+                        android:id="@+id/deviceState"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:ellipsize="end"
+                        android:maxLines="1"
+                        android:text="鏈煡"
+                        android:textColor="@color/black"
+                        android:textSize="@dimen/common_text_size_little" />
+                </LinearLayout>
+                <LinearLayout
+                    android:id="@+id/rtuAddressLL"
+                    android:layout_width="match_parent"
+                    android:layout_height="25dp"
+                    android:gravity="center_vertical"
+                    android:orientation="horizontal">
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="RTU鍦板潃锛�"
+                        android:textColor="@color/black"
+                        android:textSize="@dimen/common_text_size_little" />
+
+                    <TextView
+                        android:id="@+id/rtuAddress"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:ellipsize="end"
+                        android:maxLines="1"
+                        android:text="鏈煡"
+                        android:textColor="@color/black"
+                        android:textSize="@dimen/common_text_size_little" />
+                </LinearLayout>
                 <LinearLayout
                     android:layout_width="match_parent"
                     android:layout_height="25dp"
@@ -275,8 +322,9 @@
                         android:id="@+id/lng"
                         android:layout_width="0dp"
                         android:layout_height="wrap_content"
-                        android:layout_weight="1"
+                        android:layout_weight="4"
                         android:ellipsize="end"
+                        android:text=""
                         android:maxLines="1"
                         android:textColor="@color/manage_item_text"
                         android:textSize="@dimen/common_text_size_little" />
@@ -292,15 +340,17 @@
                         android:id="@+id/lat"
                         android:layout_width="0dp"
                         android:layout_height="wrap_content"
-                        android:layout_weight="1"
+                        android:layout_weight="4"
                         android:ellipsize="end"
                         android:maxLines="1"
+                        android:text=""
                         android:textColor="@color/manage_item_text"
                         android:textSize="@dimen/common_text_size_little" />
 
                     <ImageView
                         android:id="@+id/editePoint"
-                        android:layout_width="wrap_content"
+                        android:layout_width="0dp"
+                        android:layout_weight="1"
                         android:layout_height="wrap_content"
                         android:padding="2dp"
                         android:src="@drawable/ic_edit_btn" />
diff --git a/app/src/main/res/layout/fragment_my.xml b/app/src/main/res/layout/fragment_my.xml
index 7b15501..828294f 100644
--- a/app/src/main/res/layout/fragment_my.xml
+++ b/app/src/main/res/layout/fragment_my.xml
@@ -142,8 +142,6 @@
             android:id="@+id/changePS"
             android:layout_width="match_parent"
             android:layout_height="@dimen/item_height"
-
-            android:background="@color/white"
             android:gravity="center_vertical"
             android:paddingLeft="30dp"
             android:text="淇敼瀵嗙爜"
diff --git a/app/src/main/res/layout/item_inspect.xml b/app/src/main/res/layout/item_inspect.xml
index bdbaecf..2f58e1f 100644
--- a/app/src/main/res/layout/item_inspect.xml
+++ b/app/src/main/res/layout/item_inspect.xml
@@ -6,7 +6,8 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginTop="5dp"
-        android:background="@drawable/ic_choose_gray_edge"
+        android:background="@drawable/item_ripple"
+
         android:orientation="vertical"
         android:padding="16dp">
 
diff --git a/app/src/main/res/layout/item_issue.xml b/app/src/main/res/layout/item_issue.xml
index 9fa0bce..6e8b27d 100644
--- a/app/src/main/res/layout/item_issue.xml
+++ b/app/src/main/res/layout/item_issue.xml
@@ -15,7 +15,7 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginBottom="10dp"
-        android:background="@drawable/ic_choose_gray_edge"
+        android:background="@drawable/item_ripple"
         android:onClick="@{()->itemclidk.startDetail(data.issueReportId)}"
         android:orientation="vertical"
         android:padding="10dp">
diff --git a/app/src/main/res/layout/item_order.xml b/app/src/main/res/layout/item_order.xml
index 8a62a37..8fea820 100644
--- a/app/src/main/res/layout/item_order.xml
+++ b/app/src/main/res/layout/item_order.xml
@@ -15,7 +15,7 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginBottom="10dp"
-        android:background="@drawable/ic_choose_gray_edge"
+        android:background="@drawable/item_ripple"
         android:onClick="@{()->itemclidk.startDetail(data.workOrderId,data.proResultId)}"
         android:orientation="vertical"
         android:padding="10dp">
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 740b969..a5203cf 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -28,6 +28,7 @@
     <color name="inspect_text_color_pause">#7fff00</color>
     <color name="inspect_rl_bg_color">#ff6347</color>
     <color name="delete_color">#ff0000</color>
+    <color name="delete_color_down">#7E0202</color>
     <color name="item_bg_color">#F9F9F9</color>
     <color name="item_name_text_color">#828282</color>
     <color name="mask_layer_bg">#BF828282</color>

--
Gitblit v1.8.0