| | |
| | | package com.dayu.qihealonelibrary.activity; |
| | | |
| | | import android.content.Context; |
| | | import android.os.Build; |
| | | import android.os.Bundle; |
| | | import android.text.Editable; |
| | | import android.text.TextUtils; |
| | | import android.text.TextWatcher; |
| | | import android.view.LayoutInflater; |
| | | import android.view.View; |
| | | import android.view.inputmethod.InputMethodManager; |
| | | import android.widget.EditText; |
| | | |
| | | import com.dayu.baselibrary.utils.MornyUtil; |
| | | import com.dayu.baselibrary.utils.TipUtil; |
| | | import com.dayu.qihealonelibrary.databinding.ActivityAdminSetupBinding; |
| | | import com.dayu.qihealonelibrary.databinding.ActivityAdminSetupQhaBinding; |
| | | import com.dayu.qihealonelibrary.dbBean.AdminDataBean; |
| | | import com.example.pickerviewlibrary.picker.TeaPickerView; |
| | | import com.example.pickerviewlibrary.picker.entity.PickerData; |
| | | import com.example.pickerviewlibrary.picker.listener.OnPickerClickListener; |
| | | import com.dayu.qihealonelibrary.dbBean.ElectricPriceBean; |
| | | import com.tencent.bugly.crashreport.CrashReport; |
| | | |
| | | import java.lang.reflect.Method; |
| | | import java.util.zip.CRC32; |
| | | |
| | | /** |
| | | * Copyright (C), 2023, |
| | |
| | | * Date: 2023-11-10 19:52 |
| | | * Description: 管理员信息设置 |
| | | */ |
| | | public class AdminSetupActivity extends QHAloneBaseActivity { |
| | | public class AdminSetupActivity extends BaseActivity { |
| | | |
| | | ActivityAdminSetupBinding adminBinding; |
| | | ActivityAdminSetupQhaBinding adminBinding; |
| | | |
| | | public static AdminSetupActivity adminSetupActivity; |
| | | AdminDataBean adminData = new AdminDataBean(); |
| | | TeaPickerView pickerView; |
| | | ElectricPriceBean electricPriceBean; |
| | | |
| | | @Override |
| | | protected void onCreate(Bundle savedInstanceState) { |
| | | super.onCreate(savedInstanceState); |
| | | try { |
| | | adminBinding = ActivityAdminSetupBinding.inflate(LayoutInflater.from(this)); |
| | | adminBinding = ActivityAdminSetupQhaBinding.inflate(LayoutInflater.from(this)); |
| | | setContentView(adminBinding.getRoot()); |
| | | adminSetupActivity = this; |
| | | setData(); |
| | | setViewData(); |
| | | initView(); |
| | | } catch (Exception e) { |
| | | CrashReport.postCatchedException(e); |
| | | e.printStackTrace(); |
| | | |
| | | } |
| | | } |
| | | |
| | | private void initView() { |
| | | adminBinding.setupOk.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | if (!TextUtils.isEmpty(adminData.getCun()) |
| | | && !TextUtils.isEmpty(adminBinding.adminSerial.getText().toString()) |
| | | ) { |
| | | if (Integer.valueOf(adminBinding.adminSerial.getText().toString()) <= 16777215) { |
| | | adminBinding.adminAddressCode.setText(adminData.getAddressCode()); |
| | | adminData.setSerial(adminBinding.adminSerial.getText().toString()); |
| | | adminBinding.setupOk.setOnClickListener(v -> { |
| | | String strSerial = adminBinding.adminAddressCode.getText().toString(); |
| | | String strAddressCode = adminBinding.adminAddressCode.getText().toString(); |
| | | String strElectricPrice = adminBinding.electricNewNum.getText().toString(); |
| | | if (!TextUtils.isEmpty(strAddressCode) |
| | | && !TextUtils.isEmpty(strSerial) && !TextUtils.isEmpty(strElectricPrice)) { |
| | | int electricPrice = MornyUtil.changeY2L(strElectricPrice); |
| | | if (Integer.valueOf(electricPrice) > 0) { |
| | | if (Integer.valueOf(strAddressCode) <= 65535) { |
| | | adminData.setAddressCode(strAddressCode); |
| | | adminData.setSerial(strSerial); |
| | | // adminData.setWaterPrice(wtaterPrice); |
| | | baseDao.adminDao().insert(adminData); |
| | | setData(); |
| | | |
| | | electricPriceBean.setPrice(Float.parseFloat(strElectricPrice)); |
| | | baseDao.electricPriceDao().insert(electricPriceBean); |
| | | TipUtil.show(AdminSetupActivity.this, "设置成功", new TipUtil.TipListener() { |
| | | @Override |
| | | public void onCancle() { |
| | |
| | | } |
| | | }); |
| | | } else { |
| | | TipUtil.show(AdminSetupActivity.this, "输入的数字不能超过16777215"); |
| | | TipUtil.show(AdminSetupActivity.this, "输入的区域号不能超过65535"); |
| | | } |
| | | |
| | | } else { |
| | | TipUtil.show(AdminSetupActivity.this, "请输入完整内容"); |
| | | TipUtil.show(AdminSetupActivity.this, "单价不能为0"); |
| | | } |
| | | } else { |
| | | TipUtil.show(AdminSetupActivity.this, "请输入完整内容"); |
| | | } |
| | | }); |
| | | |
| | | // setPricePoint(adminBinding.adminWaterPrice); |
| | | //保留三位小数 |
| | | adminBinding.electricNewNum.addTextChangedListener(new TextWatcher() { |
| | | @Override |
| | | public void beforeTextChanged(CharSequence s, int start, int count, int after) { |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void onTextChanged(CharSequence s, int start, int before, int count) { |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void afterTextChanged(Editable s) { |
| | | // 删除额外的小数位 |
| | | String text = s.toString(); |
| | | if (text.contains(".")) { |
| | | int decimalIndex = text.indexOf("."); |
| | | int decimalCount = text.length() - decimalIndex - 1; |
| | | if (decimalCount > 3) { |
| | | s.delete(decimalIndex + 4, s.length()); |
| | | } |
| | | } |
| | | } |
| | | }); |
| | | adminBinding.choseAddress.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); |
| | | imm.hideSoftInputFromWindow(adminBinding.adminSerial.getWindowToken(), 0); |
| | | intiPickerView(); |
| | | } |
| | | }); |
| | | pickerView = new TeaPickerView(this); |
| | | |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | pickerView.initAddressData(); |
| | | } |
| | | }).start(); |
| | | |
| | | } |
| | | |
| | | |
| | | private void setData() { |
| | | private void setViewData() { |
| | | try { |
| | | AdminDataBean adminData = baseDao.adminDao().findFirst(); |
| | | |
| | | if (adminData != null) { |
| | | this.adminData = adminData; |
| | | adminBinding.adminSerial.setText(adminData.getSerial()); |
| | | adminBinding.adminAddressCode.setText(adminData.getAddressCode()); |
| | | adminBinding.adminAddress.setText(adminData.getSheng() + adminData.getShi() + adminData.getXian() + adminData.getZhen() + adminData.getCun()); |
| | | adminBinding.adminWaterPrice.setText(MornyUtil.changeF2Y(adminData.getWaterPrice())); |
| | | } |
| | | ElectricPriceBean priceBean = baseDao.electricPriceDao().findFirst(); |
| | | if (priceBean != null) { |
| | | electricPriceBean = priceBean; |
| | | adminBinding.electricNewNum.setText(priceBean.getPrice()+"" ); |
| | | } else { |
| | | adminBinding.adminSerial.setText("12" + generateUniqueNumber(getSN())); |
| | | electricPriceBean = new ElectricPriceBean(); |
| | | adminBinding.electricNewNum.setText("1.000"); |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | private void intiPickerView() { |
| | | |
| | | try { |
| | | pickerView.setScreenH(2) |
| | | .setDiscolourHook(true) |
| | | .setRadius(25) |
| | | .setContentLine(true) |
| | | .setRadius(25) |
| | | .build(); |
| | | pickerView.show(adminBinding.choseAddress); |
| | | pickerView.setOnPickerClickListener(new OnPickerClickListener() { |
| | | @Override |
| | | public void OnPickerClick(PickerData pickerData) { |
| | | adminData.setSheng("河南"); |
| | | adminData.setShi(pickerData.getFirstText().getName()); |
| | | adminData.setXian(pickerData.getSecondText().getName()); |
| | | if (pickerData.getThirdText() != null) { |
| | | adminData.setZhen(pickerData.getThirdText().getName()); |
| | | } else { |
| | | adminData.setZhen(""); |
| | | //水单价校验 |
| | | public static void setPricePoint(final EditText editText) { |
| | | editText.addTextChangedListener(new TextWatcher() { |
| | | @Override |
| | | public void onTextChanged(CharSequence s, int start, int before, |
| | | int count) { |
| | | if (s.toString().contains(".")) { |
| | | if (s.length() - 1 - s.toString().indexOf(".") > 2) { |
| | | s = s.toString().subSequence(0, |
| | | s.toString().indexOf(".") + 3); |
| | | editText.setText(s); |
| | | editText.setSelection(s.length()); |
| | | } |
| | | if (pickerData.getFourthText() != null) { |
| | | adminData.setCun(pickerData.getFourthText().getName()); |
| | | adminData.setAddressCode(pickerData.getFourthText().getCode()); |
| | | } else { |
| | | adminData.setCun(""); |
| | | adminData.setAddressCode(pickerData.getSecondText().getCode()); |
| | | } |
| | | if (s.toString().trim().substring(0).equals(".")) { |
| | | s = "0" + s; |
| | | editText.setText(s); |
| | | editText.setSelection(2); |
| | | } |
| | | |
| | | if (s.toString().startsWith("0") |
| | | && s.toString().trim().length() > 1) { |
| | | if (!s.toString().substring(1, 2).equals(".")) { |
| | | editText.setText(s.subSequence(0, 1)); |
| | | editText.setSelection(1); |
| | | } |
| | | adminBinding.adminAddress.setText(adminData.getSheng() + adminData.getShi() + adminData.getXian() + adminData.getZhen() + adminData.getCun()); |
| | | adminBinding.adminAddressCode.setText(adminData.getAddressCode()); |
| | | pickerView.dismiss(); |
| | | } |
| | | }); |
| | | } catch (Exception e) { |
| | | CrashReport.postCatchedException(e); |
| | | e.printStackTrace(); |
| | | |
| | | } |
| | | } |
| | | |
| | | public static String getSN() { |
| | | String serial = null; |
| | | try { |
| | | Class<?> c = Class.forName("android.os.SystemProperties"); |
| | | Method get = c.getMethod("get", String.class); |
| | | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { |
| | | try { |
| | | serial = (String) get.invoke(c, "ro.sunmi.serial"); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return serial; |
| | | } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { |
| | | serial = Build.getSerial(); |
| | | return serial; |
| | | } else { |
| | | //安卓8以下使用Build.SERIAL相同方式 |
| | | //return Build.SERIAL; |
| | | try { |
| | | serial = (String) get.invoke(c, "ro.serialno"); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return serial; |
| | | } |
| | | } catch (ClassNotFoundException e) { |
| | | throw new RuntimeException(e); |
| | | } catch (NoSuchMethodException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | |
| | | public static String generateUniqueNumber(String input) { |
| | | try { |
| | | // 使用CRC32哈希函数 |
| | | CRC32 crc32 = new CRC32(); |
| | | crc32.update(input.getBytes()); |
| | | long crcValue = crc32.getValue(); |
| | | // 将哈希值映射到6位数字的范围 |
| | | long sixDigitNumber = Math.abs(crcValue) % 1000000; |
| | | // 格式化为6位数字的字符串 |
| | | return String.format("%06d", sixDigitNumber); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return null; |
| | | } |
| | | @Override |
| | | public void beforeTextChanged(CharSequence s, int start, int count, |
| | | int after) { |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void afterTextChanged(Editable s) { |
| | | // TODO Auto-generated method stub |
| | | |
| | | } |
| | | |
| | | }); |
| | | |
| | | } |
| | | |
| | | } |