From cdf49871675e42a5576f725a93eec7ca15294c6f Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期二, 15 四月 2025 17:22:34 +0800
Subject: [PATCH] Merge branch '1.5.2'

---
 app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java |  275 ++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 211 insertions(+), 64 deletions(-)

diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java
index ecef028..4720942 100644
--- a/app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java
@@ -2,35 +2,31 @@
 
 import android.content.Context;
 import android.graphics.Bitmap;
-import android.os.SystemClock;
+import android.text.SpannableStringBuilder;
+import android.text.TextPaint;
 import android.text.TextUtils;
+import android.text.style.ClickableSpan;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
 
-import com.google.gson.JsonObject;
+import androidx.annotation.NonNull;
+
 import com.google.zxing.BarcodeFormat;
 import com.google.zxing.EncodeHintType;
 import com.google.zxing.common.BitMatrix;
 import com.google.zxing.qrcode.QRCodeWriter;
-import com.hdl.linkpm.sdk.user.HDLLinkPMUser;
-import com.hdl.photovoltaic.config.ConstantManage;
-import com.hdl.photovoltaic.config.UserConfigManage;
-import com.hdl.photovoltaic.enums.HomepageTitleTabSwitch;
+import com.hdl.photovoltaic.HDLApp;
+import com.hdl.photovoltaic.R;
 import com.hdl.photovoltaic.enums.LowerTagType;
 import com.hdl.photovoltaic.enums.UnitType;
 import com.hdl.photovoltaic.utils.GlideUtils;
 import com.hdl.sdk.link.core.bean.eventbus.BaseEventBus;
 
 import org.greenrobot.eventbus.EventBus;
-import org.json.JSONObject;
 
-import java.io.InputStream;
-import java.io.OutputStream;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.net.InetSocketAddress;
-import java.net.Socket;
 import java.util.Hashtable;
 
 /**
@@ -41,6 +37,9 @@
     private static volatile HdlCommonLogic sHdlCommonLogic;
 
 
+    /**
+     * 妯″潡绫诲瀷锛堥椤碉紝鐢电珯锛屾秷鎭紝鎴戠殑锛�
+     */
     public static LowerTagType lowerTagType = LowerTagType.home;
 
 
@@ -61,71 +60,47 @@
         return sHdlCommonLogic;
     }
 
-    public static String getConvertDoubleUnit(String value) {
-        if (TextUtils.isEmpty(value)) {
-            return UnitType.noValue;
-        }
-        BigDecimal formattedValue = getBigDecimal(value);
-        return formattedValue.toString();
-
-    }
-
-    public static String getConvertDoubleUnit(int value) {
-        if (value == 0) {
-            return UnitType.noValue;
-        }
-        BigDecimal formattedValue = getBigDecimal(value + "");
-        return formattedValue.toString();
-    }
-
 
     /**
      * @param value 鍊�
-     * @param unit  渚嬪:UnitType.kWh
-     * @return 甯﹀崟浣嶅�艰繑鍥�
+     * @return 瀛楃涓插�艰繑鍥�
      */
-    public static String getConvertDoubleUnit(String value, String unit) {
+    public static String convertDoubleValue(String value) {
         if (TextUtils.isEmpty(value)) {
-            return UnitType.noValue + unit;
+            return UnitType.noValue;
         }
-        if (unit.equals(UnitType.kW)) {
-            return divideByOneThousandAndFormat(value).toString() + unit;
-        }
-        return getBigDecimal(value).toString() + unit;
-
+        return divideByOneThousandAndFormat(value).toString();
     }
 
     /**
-     * @param value     鍊�
-     * @param unitValue 渚嬪:UnitType.kWh
-     * @param isUnit    true琛ㄧず鏈夊崟浣嶈繑鍥�
-     * @return 甯﹀崟浣嶅�艰繑鍥�
+     * @param value        鍊�
+     * @param diploidValue 鍊嶆暟
+     * @return 瀛楃涓�
      */
-    public static String getConvertDoubleUnit(String value, String unitValue, boolean isUnit) {
-        if (TextUtils.isEmpty(value)) {
-            return UnitType.noValue + (isUnit ? unitValue : "");
+    public static String convertDoubleValue(String value, int diploidValue) {
+        try {
+            double doubleValue = Double.parseDouble(value);
+            BigDecimal bigDecimal = new BigDecimal(doubleValue);
+            return bigDecimal.divide(new BigDecimal(diploidValue), 2, RoundingMode.HALF_EVEN).toString();
+        } catch (Exception e) {
+            return "0.00";
         }
-        if (unitValue.equals(UnitType.kW)) {
-            return divideByOneThousandAndFormat(value).toString() + (isUnit ? unitValue : "");
-        }
-        return getBigDecimal(value).toString() + (isUnit ? unitValue : "");
-
     }
-
 
     /**
-     * @param value 鍊�
-     * @param unit  渚嬪:UnitType.kWh
-     * @return 甯﹀崟浣嶅�艰繑鍥�
+     * @param value        鍊�
+     * @param diploidValue 鍊嶆暟
+     * @return 瀛楃涓�
      */
-    public static String getConvertDoubleUnit(int value, String unit) {
-        if (value == 0) {
-            return UnitType.noValue + unit;
+    public static BigDecimal convertBigDecimal(String value, int diploidValue) {
+        try {
+            double doubleValue = Double.parseDouble(value);
+            BigDecimal bigDecimal = new BigDecimal(doubleValue);
+            return bigDecimal.divide(new BigDecimal(diploidValue), 2, RoundingMode.HALF_EVEN);
+        } catch (Exception e) {
+            return new BigDecimal(0);
         }
-        BigDecimal formattedValue = getBigDecimal(value + "");
-        return formattedValue.toString() + unit;
     }
-
 
     public static String convertString(Object value) {
         return String.valueOf(value);
@@ -140,6 +115,7 @@
         return BigDecimal.valueOf(doubleValue).setScale(2, RoundingMode.HALF_UP);
     }
 
+
     /**
      * 闄や互涓�鍗冨拰鏍煎紡
      *
@@ -147,9 +123,135 @@
      * @return BigDecimal
      */
     public static BigDecimal divideByOneThousandAndFormat(String value) {
-        double doubleValue = Double.parseDouble(value);
-        BigDecimal bigDecimal = new BigDecimal(doubleValue);
-        return bigDecimal.divide(new BigDecimal(1000), 2, RoundingMode.HALF_EVEN);
+        try {
+            double doubleValue = Double.parseDouble(value);
+            int mDoubleValue = doubleValue(value);
+            if (mDoubleValue == 0) {
+                return getBigDecimal(value);
+            } else {
+                BigDecimal bigDecimal = new BigDecimal(doubleValue);
+                return bigDecimal.divide(new BigDecimal(mDoubleValue), 2, RoundingMode.HALF_EVEN);
+            }
+        } catch (Exception e) {
+            BigDecimal bigDecimal = new BigDecimal(0);
+            return bigDecimal.divide(new BigDecimal(1000), 2, RoundingMode.HALF_EVEN);
+        }
+    }
+
+    /**
+     * 鑾峰彇鍊嶆暟
+     *
+     * @param value 鍊�
+     */
+    public static int doubleValue(String value) {
+        try {
+            double doubleValue = Double.parseDouble(value);
+            if (doubleValue > 1000 && doubleValue < 1000 * 1000) {
+                return 1000;
+            } else if (doubleValue > 1000 * 1000 && doubleValue < 1000 * 1000 * 1000) {
+                return 1000 * 1000;
+            } else if (doubleValue > 1000 * 1000 * 1000) {
+                return 1000 * 1000 * 1000;
+            } else {
+                return 0;
+            }
+        } catch (Exception e) {
+            return 0;
+        }
+
+    }
+
+    /**
+     * 杞崲鍗曚綅
+     *
+     * @param value    鍊�
+     * @param unitType 琛ㄧず鏄崟浣嶏紙鍔熺巼锛岀數閲忥級
+     */
+    public static String convertUnit(String value, String unitType) {
+        try {
+            double doubleValue = Double.parseDouble(value);
+            if (doubleValue > 1000 && doubleValue < 1000 * 1000) {
+                return unitType.equals(UnitType.kW) ? UnitType.mW : UnitType.mWh;
+            } else if (doubleValue > 1000 * 1000 && doubleValue < 1000 * 1000 * 1000) {
+                return unitType.equals(UnitType.kW) ? UnitType.gW : UnitType.gWh;
+            } else if (doubleValue > 1000 * 1000 * 1000) {
+                return unitType.equals(UnitType.kW) ? UnitType.tW : UnitType.tWh;
+            } else {
+                return unitType.equals(UnitType.kW) ? UnitType.kW : UnitType.kWh;
+            }
+        } catch (Exception e) {
+            return unitType.equals(UnitType.kW) ? UnitType.kW : UnitType.kWh;
+        }
+
+    }
+
+    /**
+     * 杞崲鐢甸噺(kWh)鍗曚綅
+     *
+     * @param value 鍊�
+     */
+    public static String convertKWHUnit(String value) {
+        try {
+            double doubleValue = Double.parseDouble(value);
+            if (doubleValue > 1000 && doubleValue < 1000 * 1000) {
+                return UnitType.mWh;
+            } else if (doubleValue > 1000 * 1000 && doubleValue < 1000 * 1000 * 1000) {
+                return UnitType.gWh;
+            } else if (doubleValue > 1000 * 1000 * 1000) {
+                return UnitType.tWh;
+            } else {
+                return UnitType.kWh;
+            }
+        } catch (Exception e) {
+            return UnitType.kWh;
+        }
+
+    }
+
+    /**
+     * 杞崲鍔熺巼(kW)鍗曚綅
+     *
+     * @param value 鍊�
+     */
+    public static String convertKWUnit(String value) {
+        try {
+            double doubleValue = Double.parseDouble(value);
+            if (doubleValue > 1000 && doubleValue < 1000 * 1000) {
+                return UnitType.mW;
+            } else if (doubleValue > 1000 * 1000 && doubleValue < 1000 * 1000 * 1000) {
+                return UnitType.gW;
+            } else if (doubleValue > 1000 * 1000 * 1000) {
+                return UnitType.tW;
+            } else {
+                return UnitType.kW;
+            }
+        } catch (Exception e) {
+            return UnitType.kW;
+        }
+
+    }
+
+    /**
+     * 杞崲(kWp)鍗曚綅
+     *
+     * @param value 鍊�
+     */
+    public static String convertKWPUnit(String value) {
+        try {
+            double doubleValue = Double.parseDouble(value);
+            if (doubleValue > 1000 && doubleValue < 1000 * 1000) {
+                return UnitType.MWp;
+            } else if (doubleValue > 1000 * 1000 && doubleValue < 1000 * 1000 * 1000) {
+                return UnitType.GWp;
+            } else if (doubleValue > 1000 * 1000 * 1000) {
+                return UnitType.TWp;
+            } else {
+                return UnitType.kWp;
+            }
+        } catch (Exception e) {
+            return UnitType.kWp;
+        }
+
     }
 
 
@@ -215,6 +317,7 @@
         }
     }
 
+
     /**
      * 娌℃湁鏁版嵁鐣岄潰鐨勬牱寮�
      *
@@ -231,6 +334,46 @@
             GlideUtils.getDrawableGifAnimation(mContext, imageView);
             textView.setText(str);
 
+        }
+    }
+
+
+    /**
+     * 璁剧疆瀛椾綋鐨勫瘜鏂囨湰宸茬粡涓嬪垝绾�
+     *
+     * @param view         褰撳墠缁勪欢
+     * @param str          鍐呭瀛楃涓�
+     * @param isUnderline  鏄惁鏄剧ず涓嬪垝绾匡紙true=鏄剧ず锛�
+     * @param spanCallBack 鐐瑰嚮鏂囨湰鍚庡洖璋冧簨浠�,涓嶉渶瑕佸洖璋冧簨浠跺~null
+     */
+    public void setSpan(TextView view, String str, boolean isUnderline, SpanCallBack spanCallBack) {
+
+        if (view == null || TextUtils.isEmpty(str)) {
+            return;
+        }
+        try {
+            SpannableStringBuilder registerTvStrSpannable = new SpannableStringBuilder(str);
+            registerTvStrSpannable.setSpan(new ClickableSpan() {
+                @Override
+                public void onClick(@NonNull View widget) {
+                    if (spanCallBack != null) {
+                        spanCallBack.onClick();
+                    }
+                }
+
+                @Override
+                public void updateDrawState(@NonNull TextPaint ds) {
+                    super.updateDrawState(ds);
+                    //璁剧疆瀛椾綋棰滆壊
+                    ds.setColor(HDLApp.getInstance().getResources().getColor(R.color.text_FFACACAC, null));
+                    // 鍘绘帀涓嬪垝绾�
+                    ds.setUnderlineText(isUnderline);
+                }
+
+
+            }, 0, str.length(), 0);
+            view.setText(registerTvStrSpannable);
+        } catch (Exception ignored) {
         }
     }
 
@@ -276,7 +419,7 @@
         BaseEventBus baseEventBus = new BaseEventBus();
         baseEventBus.setTopic(topic);
         baseEventBus.setType(type);
-        EventBus.getDefault().postSticky(baseEventBus);
+        EventBus.getDefault().post(baseEventBus);
     }
 
     /**
@@ -290,7 +433,11 @@
         baseEventBus.setTopic(topic);
         baseEventBus.setType(type);
         baseEventBus.setData(o);
-        EventBus.getDefault().postSticky(baseEventBus);
+        EventBus.getDefault().post(baseEventBus);
+    }
+
+    public interface SpanCallBack {
+        void onClick();
     }
 
 }

--
Gitblit v1.8.0