New file |
| | |
| | | package com.dayu.qihealonelibrary.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.MornyUtil; |
| | | 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.qihealonelibrary.databinding.ActivityMyQhaBinding; |
| | | import com.dayu.qihealonelibrary.dbBean.AdminDataBean; |
| | | import com.dayu.qihealonelibrary.dbBean.ElectricPriceBean; |
| | | import com.dayu.qihealonelibrary.utils.DeviceNumberUtils; |
| | | import com.dayu.qihealonelibrary.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; |
| | | ActivityMyQhaBinding myBinding; |
| | | |
| | | @Override |
| | | protected void onCreate(Bundle savedInstanceState) { |
| | | super.onCreate(savedInstanceState); |
| | | myBinding = ActivityMyQhaBinding.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(); |
| | | } |
| | | |
| | | |
| | | } |