package com.dayu.qiheonlinelibrary.activity; import android.Manifest; import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import androidx.annotation.NonNull; import com.dayu.baselibrary.utils.TipUtil; import com.dayu.baselibrary.view.PassWordDialog; import com.dayu.baselibrary.view.datepicker.CustomDatePicker; import com.dayu.baselibrary.view.datepicker.DateFormatUtils; import com.dayu.qiheonlinelibrary.databinding.ActivityMyQhlBinding; import com.dayu.qiheonlinelibrary.dbBean.AdminDataBean; import com.dayu.qiheonlinelibrary.dbBean.ElectricPriceBean; import com.dayu.qiheonlinelibrary.utils.DeviceNumberUtils; import com.dayu.qiheonlinelibrary.utils.ExcelUtil; import java.io.File; import java.util.ArrayList; import java.util.List; /** * Copyright (C), 2023, * Author: zuo * Date: 2023-11-10 19:52 * Description: 个人中心 */ public class MyActivity extends BaseActivity { private CustomDatePicker beginDatePicker; private CustomDatePicker endDatePicker; long beginTime; long endTime; boolean isRechargeList = false; ActivityMyQhlBinding myBinding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); myBinding = ActivityMyQhlBinding.inflate(LayoutInflater.from(this)); setContentView(myBinding.getRoot()); getVersion(this); setData(); initDatePicker(); initView(); } private void initView() { myBinding.myAdmin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { PassWordDialog passWordDialog = new PassWordDialog(MyActivity.this, new Intent(MyActivity.this, AdminSetupActivity.class)); passWordDialog.show(); // startActivity(new Intent(MyActivity.this, AdminSetupActivity.class)); } }); myBinding.myWaterPriceLL.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { PassWordDialog passWordDialog = new PassWordDialog(MyActivity.this, new Intent(MyActivity.this, AdminSetupActivity.class)); passWordDialog.show(); } }); myBinding.myPsw.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(MyActivity.this, PassWordActivity.class)); } }); myBinding.myRechargeListLl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(MyActivity.this, RechargeListActivity.class)); } }); myBinding.myNewCardListLl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(MyActivity.this, NewCardListActivity.class)); } }); myBinding.myNewCardOut.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { isRechargeList = false; beginDatePicker.show(System.currentTimeMillis()); } }); myBinding.myRechargeOut.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { isRechargeList = true; beginDatePicker.show(System.currentTimeMillis()); } }); } Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(@NonNull Message msg) { switch (msg.what) { case 1: TipUtil.show(MyActivity.this, "导出成功!"); break; case 3: TipUtil.show(MyActivity.this, "记录为空!"); break; default: TipUtil.show(MyActivity.this, "导出失败!"); break; } stopAnim(); return false; } }); /** * 导出成Excel */ private void outExcl() { startAnim(); new Thread(new Runnable() { @Override public void run() { { try { File file = new File(ExcelUtil.outPath); //文件夹是否已经存在 if (!file.exists()) { file.mkdirs(); } List listData = new ArrayList(); try { if (isRechargeList) { listData = asynchBaseDao.rechargeDao().ansyFindByTime(beginTime, endTime); } else { listData = asynchBaseDao.userCardDao().findByTime(beginTime, endTime); } if (listData == null || listData.size() == 0) { handler.sendEmptyMessage(2); return; } } catch (Exception e) { e.printStackTrace(); } String[] title; String fileName; if (listData == null || listData.size() == 0) { TipUtil.show(MyActivity.this, "记录为空"); return; } if (isRechargeList) { title = new String[]{"设备序列号", "用户名", "卡号", "充值日期", "充值金额(元)", "剩余金额(元)"}; fileName = file.toString() + "/" + ExcelUtil.outRechargePathName; } else { title = new String[]{"设备序列号", "用户名", "身份证号", "卡号", "注册日期", "电话"}; fileName = file.toString() + "/" + ExcelUtil.outUserPathName; } ExcelUtil.initExcel(fileName, title); ExcelUtil.writeObjListToExcel(listData, fileName, MyActivity.this); handler.sendEmptyMessage(1); } catch (Exception e) { handler.sendEmptyMessage(2); e.printStackTrace(); } } } }).start(); } void getVersion(Activity context) { int REQUEST_CODE_PERMISSION_STORAGE = 100; if (Build.VERSION.SDK_INT >= 23) { String[] permissions = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE }; for (String str : permissions) { if (context.checkSelfPermission(str) != PackageManager.PERMISSION_GRANTED) { context.requestPermissions(permissions, REQUEST_CODE_PERMISSION_STORAGE); return; } } } } private void setData() { AdminDataBean adminData; try { adminData = baseDao.adminDao().findFirst(); if (adminData != null) { myBinding.myAdminName.setText(adminData.getAddressCode()); myBinding.myVillageNum.setText(adminData.getSerial()); // myBinding.myWaterPrice.setText(MornyUtil.changeF2Y(adminData.getWaterPrice())); } else { myBinding.myAdminName.setText("请点击区域号进行设置"); myBinding.myVillageNum.setText("请点击区域号进行设置"); // myBinding.myWaterPrice.setText("请点击区域号进行设置"); } StringBuilder msgData = new StringBuilder(); String initCode = DeviceNumberUtils.getDeviceNumber(); if (TextUtils.isEmpty(initCode)) { msgData.append("设备未注册"); } else { msgData.append("设备注册号:" + initCode); } myBinding.myTestConnect.setText(msgData); ElectricPriceBean priceBean = baseDao.electricPriceDao().findFirst(); if (priceBean != null) { myBinding.myWaterPrice.setText(priceBean.getPrice() + "元"); } else { myBinding.myWaterPrice.setText("1.000元"); } } catch (Exception e) { e.printStackTrace(); } } @Override protected void onStart() { super.onStart(); setData(); } private void initDatePicker() { long beginTimestamp = DateFormatUtils.str2Long("2009-05-01", false); final long endTimestamp = System.currentTimeMillis(); // 通过时间戳初始化日期,毫秒级别 beginDatePicker = new CustomDatePicker(this, "选择开始时间", new CustomDatePicker.Callback() { @Override public void onTimeSelected(long timestamp) { beginTime = timestamp; endDatePicker.show(timestamp); } }, beginTimestamp, endTimestamp); // 不允许点击屏幕或物理返回键关闭 beginDatePicker.setCancelable(false); // 不显示时和分 beginDatePicker.setCanShowPreciseTime(false); // 不允许循环滚动 beginDatePicker.setScrollLoop(false); // 不允许滚动动画 beginDatePicker.setCanShowAnim(false); endDatePicker = new CustomDatePicker(this, "选择结束时间", new CustomDatePicker.Callback() { @Override public void onTimeSelected(long timestamp) { endTime = timestamp; if ((endTime < beginTime) && endTime != beginTime) { TipUtil.show(MyActivity.this, "结束时间不能晚于开始时间"); } else { try { endTime = endTime + (1000 * 60 * 60 * 24) - 1; outExcl(); } catch (Exception e) { e.printStackTrace(); } } } }, beginTimestamp, endTimestamp); // 不允许点击屏幕或物理返回键关闭 endDatePicker.setCancelable(false); // 不显示时和分 endDatePicker.setCanShowPreciseTime(false); // 不允许循环滚动 endDatePicker.setScrollLoop(false); // 不允许滚动动画 endDatePicker.setCanShowAnim(false); } @Override protected void onDestroy() { super.onDestroy(); endDatePicker.onDestroy(); beginDatePicker.onDestroy(); } void startAnim() { myBinding.avi.setVisibility(View.VISIBLE); myBinding.avi.show(); // or avi.smoothToShow(); } void stopAnim() { myBinding.avi.hide(); // or avi.smoothToHide(); } }