From 44ba605a4e850efa757020da5fb4cf02bdf6e3ab Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期一, 08 九月 2025 10:55:18 +0800
Subject: [PATCH] 2025年09月08日10:55:15
---
app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java | 408 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 408 insertions(+), 0 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 008944e..a935e16 100644
--- a/app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java
@@ -1,11 +1,47 @@
package com.hdl.photovoltaic.other;
+import android.content.Context;
+import android.graphics.Bitmap;
+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 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.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 java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.Hashtable;
+
/**
* 鍏叡閫昏緫
*/
public class HdlCommonLogic {
private static volatile HdlCommonLogic sHdlCommonLogic;
+
+
+ /**
+ * 妯″潡绫诲瀷锛堥椤碉紝鐢电珯锛屾秷鎭紝鎴戠殑锛�
+ */
+ public static LowerTagType lowerTagType = LowerTagType.home;
+
/**
* 鑾峰彇褰撳墠瀵硅薄
@@ -25,4 +61,376 @@
}
+ /**
+ * @param value 鍊�
+ * @param unitType 闇�瑕佽浆鐨勫崟浣嶏紙kW锛宬Wh锛�
+ * @return 瀛楃涓插�艰繑鍥�
+ */
+ public static String convertDoubleValue(String value, String unitType) {
+ if (TextUtils.isEmpty(value)) {
+ return UnitType.noValue;
+ }
+ return divideByOneThousandAndFormat(value,unitType).toString();
+ }
+
+ /**
+ * @param value 鍊�
+ * @param diploidValue 鍊嶆暟
+ * @return 瀛楃涓�
+ */
+ 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";
+ }
+ }
+
+ /**
+ * @param value 鍊�
+ * @param diploidValue 鍊嶆暟
+ * @return 瀛楃涓�
+ */
+ 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);
+ }
+ }
+
+ public static String convertString(Object value) {
+ return String.valueOf(value);
+ }
+
+
+ public static BigDecimal getBigDecimal(String value) {
+ if (TextUtils.isEmpty(value)) {
+ return new BigDecimal(0);
+ }
+ double doubleValue = Double.parseDouble(value);
+ return BigDecimal.valueOf(doubleValue).setScale(2, RoundingMode.HALF_UP);
+ }
+
+
+ /**
+ * 闄や互涓�鍗冨拰鏍煎紡
+ *
+ * @param value 鍊�
+ * @return BigDecimal
+ */
+ public static BigDecimal divideByOneThousandAndFormat(String value, String unitType) {
+ try {
+ double doubleValue = Double.parseDouble(value);
+ long mDoubleValue = doubleValue(value,unitType);
+ 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 long doubleValue(String value, String unitType) {
+ try {
+ double doubleValue = Double.parseDouble(value);
+ if (unitType.equals(UnitType.kW)) {
+ 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 1000L * 1000 * 1000 ;
+ } else {
+ return 1000;
+ }
+ } else {
+ 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;
+ }
+
+ }
+
+
+
+ /**
+ * 杞崲鐢甸噺(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.kW;
+ } else if (doubleValue >= 1000 * 1000 && doubleValue < 1000 * 1000 * 1000) {
+ return UnitType.mW;
+ } else if (doubleValue >= 1000 * 1000 * 1000&&doubleValue < 1000 * 1000 * 1000*1000L) {
+ return UnitType.gW;
+ } else if (doubleValue >= 1000 * 1000 * 1000*1000L) {
+ 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;
+ }
+
+ }
+
+
+ /**
+ * 鐢熸垚浜岀淮鐮�
+ *
+ * @param content 瀛楃涓插唴瀹�
+ * @param width 浜岀淮鐮佸搴�
+ * @param height 浜岀淮鐮侀珮搴�
+ * @param character_set 缂栫爜鏂瑰紡锛堜竴鑸娇鐢║TF-8锛�
+ * @param error_correction_level 瀹归敊鐜� L锛�7% M锛�15% Q锛�25% H锛�35%
+ * @param margin 绌虹櫧杈硅窛锛堜簩缁寸爜涓庤竟妗嗙殑绌虹櫧鍖哄煙锛�
+ * @param color_black 榛戣壊鑹插潡
+ * @param color_white 鐧借壊鑹插潡
+ * @return BitMap
+ */
+ public Bitmap createQRCodeBitmap(String content, int width, int height, String character_set, String error_correction_level, String margin, int color_black, int color_white) {
+ // 瀛楃涓插唴瀹瑰垽绌�
+ if (TextUtils.isEmpty(content)) {
+ return null;
+ }
+ // 瀹藉拰楂�>=0
+ if (width < 0 || height < 0) {
+ return null;
+ }
+ try {
+ /** 1.璁剧疆浜岀淮鐮佺浉鍏抽厤缃� */
+ Hashtable<EncodeHintType, String> hints = new Hashtable<>();
+ // 瀛楃杞爜鏍煎紡璁剧疆
+ if (!TextUtils.isEmpty(character_set)) {
+ hints.put(EncodeHintType.CHARACTER_SET, character_set);
+ }
+ // 瀹归敊鐜囪缃�
+ if (!TextUtils.isEmpty(error_correction_level)) {
+ hints.put(EncodeHintType.ERROR_CORRECTION, error_correction_level);
+ }
+ // 绌虹櫧杈硅窛璁剧疆
+ if (!TextUtils.isEmpty(margin)) {
+ hints.put(EncodeHintType.MARGIN, margin);
+ }
+ /** 2.灏嗛厤缃弬鏁颁紶鍏ュ埌QRCodeWriter鐨別ncode鏂规硶鐢熸垚BitMatrix(浣嶇煩闃�)瀵硅薄 */
+ BitMatrix bitMatrix = new QRCodeWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);
+
+ /** 3.鍒涘缓鍍忕礌鏁扮粍,骞舵牴鎹瓸itMatrix(浣嶇煩闃�)瀵硅薄涓烘暟缁勫厓绱犺祴棰滆壊鍊� */
+ int[] pixels = new int[width * height];
+ for (int y = 0; y < height; y++) {
+ for (int x = 0; x < width; x++) {
+ //bitMatrix.get(x,y)鏂规硶杩斿洖true鏄粦鑹茶壊鍧楋紝false鏄櫧鑹茶壊鍧�
+ if (bitMatrix.get(x, y)) {
+ pixels[y * width + x] = color_black;//榛戣壊鑹插潡鍍忕礌璁剧疆
+ } else {
+ pixels[y * width + x] = color_white;// 鐧借壊鑹插潡鍍忕礌璁剧疆
+ }
+ }
+ }
+ /** 4.鍒涘缓Bitmap瀵硅薄,鏍规嵁鍍忕礌鏁扮粍璁剧疆Bitmap姣忎釜鍍忕礌鐐圭殑棰滆壊鍊�,骞惰繑鍥濨itmap瀵硅薄 */
+ Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
+ bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
+ return bitmap;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+
+ /**
+ * 娌℃湁鏁版嵁鐣岄潰鐨勬牱寮�
+ *
+ * @param is_data true鏈夋暟鎹紝false娌℃暟鎹�
+ * @param parent 鐖跺鍣�
+ * @param imageView 鏄剧ずgif鎺т欢
+ * @param str 鎻忚堪鏂囨湰
+ */
+ public void nullDataUpdateUi(Context mContext, View parent, ImageView imageView, TextView textView, String str, boolean is_data) {
+ if (is_data) {
+ parent.setVisibility(View.GONE);
+ } else {
+ parent.setVisibility(View.VISIBLE);
+ 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) {
+ }
+ }
+
+
+ /**
+ * 鍙戝竷EventBus绮樻�т簨浠�
+ * <p>
+ * 娉ㄦ剰:瑕佸彇娑堢矘鎬т簨浠禘ventBus.getDefault().removeStickyEvent(eventBus);
+ *
+ * @param topic 涓婚
+ * @param type 浜嬩欢
+ */
+ public void postEventBusSticky(String topic, String type) {
+ BaseEventBus baseEventBus = new BaseEventBus();
+ baseEventBus.setTopic(topic);
+ baseEventBus.setType(type);
+ EventBus.getDefault().postSticky(baseEventBus);
+ }
+
+ /**
+ * 鍙戝竷EventBus绮樻�т簨浠�
+ * <p>
+ * 娉ㄦ剰:瑕佸彇娑堢矘鎬т簨浠禘ventBus.getDefault().removeStickyEvent(eventBus);
+ *
+ * @param topic 涓婚
+ * @param type 浜嬩欢
+ */
+ public void postEventBusSticky(String topic, String type, Object o) {
+ BaseEventBus baseEventBus = new BaseEventBus();
+ baseEventBus.setTopic(topic);
+ baseEventBus.setType(type);
+ baseEventBus.setData(o);
+ EventBus.getDefault().postSticky(baseEventBus);
+ }
+
+ /**
+ * 鍙戝竷EventBus浜嬩欢
+ *
+ * @param topic 涓婚
+ * @param type 浜嬩欢
+ */
+ public void postEventBus(String topic, String type) {
+ BaseEventBus baseEventBus = new BaseEventBus();
+ baseEventBus.setTopic(topic);
+ baseEventBus.setType(type);
+ EventBus.getDefault().post(baseEventBus);
+ }
+
+ /**
+ * 鍙戝竷EventBus浜嬩欢
+ *
+ * @param topic 涓婚
+ * @param type 浜嬩欢
+ */
+ public void postEventBus(String topic, String type, Object o) {
+ BaseEventBus baseEventBus = new BaseEventBus();
+ baseEventBus.setTopic(topic);
+ baseEventBus.setType(type);
+ baseEventBus.setData(o);
+ EventBus.getDefault().post(baseEventBus);
+ }
+
+ public interface SpanCallBack {
+ void onClick();
+ }
+
}
--
Gitblit v1.8.0