| | |
| | | package com.hdl.photovoltaic.other; |
| | | |
| | | import android.app.Activity; |
| | | 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.view.inputmethod.InputMethodManager; |
| | | 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; |
| | | |
| | | /** |
| | |
| | | private static volatile HdlCommonLogic sHdlCommonLogic; |
| | | |
| | | |
| | | /** |
| | | * 模块类型(首页,电站,消息,我的) |
| | | */ |
| | | public static LowerTagType lowerTagType = LowerTagType.home; |
| | | |
| | | |
| | |
| | | return sHdlCommonLogic; |
| | | } |
| | | |
| | | public static String getConvertDoubleUnit(String value) { |
| | | |
| | | /** |
| | | * @param value 值 |
| | | * @param unitType 需要转的单位(kW,kWh) |
| | | * @return 字符串值返回 |
| | | */ |
| | | public static String convertDoubleValue(String value, String unitType) { |
| | | 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 带单位值返回 |
| | | */ |
| | | public static String getConvertDoubleUnit(String value, String unit) { |
| | | if (TextUtils.isEmpty(value)) { |
| | | return UnitType.noValue + unit; |
| | | } |
| | | if (unit.equals(UnitType.kW)) { |
| | | return divideByOneThousandAndFormat(value).toString() + unit; |
| | | } |
| | | return getBigDecimal(value).toString() + unit; |
| | | |
| | | return divideByOneThousandAndFormat(value,unitType).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); |
| | |
| | | return BigDecimal.valueOf(doubleValue).setScale(2, RoundingMode.HALF_UP); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 除以一千和格式 |
| | | * |
| | | * @param value 值 |
| | | * @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); |
| | | 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; |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 没有数据界面的样式 |
| | | * |
| | |
| | | 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) { |
| | | } |
| | | } |
| | | |
| | |
| | | BaseEventBus baseEventBus = new BaseEventBus(); |
| | | baseEventBus.setTopic(topic); |
| | | baseEventBus.setType(type); |
| | | EventBus.getDefault().postSticky(baseEventBus); |
| | | EventBus.getDefault().post(baseEventBus); |
| | | } |
| | | |
| | | /** |
| | |
| | | baseEventBus.setTopic(topic); |
| | | baseEventBus.setType(type); |
| | | baseEventBus.setData(o); |
| | | EventBus.getDefault().postSticky(baseEventBus); |
| | | EventBus.getDefault().post(baseEventBus); |
| | | } |
| | | |
| | | public interface SpanCallBack { |
| | | void onClick(); |
| | | } |
| | | |
| | | } |