| 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.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 MyActivityQHAlone extends QHAloneBaseActivity { | 
|   | 
|   | 
|     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(MyActivityQHAlone.this, new Intent(MyActivityQHAlone.this, AdminSetupActivityQHAlone.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(MyActivityQHAlone.this, new Intent(MyActivityQHAlone.this, AdminSetupActivityQHAlone.class)); | 
|                 passWordDialog.show(); | 
|             } | 
|         }); | 
|         myBinding.myPsw.setOnClickListener(new View.OnClickListener() { | 
|             @Override | 
|             public void onClick(View v) { | 
|                 startActivity(new Intent(MyActivityQHAlone.this, PassWordActivityQHAlone.class)); | 
|             } | 
|         }); | 
|         myBinding.myRechargeListLl.setOnClickListener(new View.OnClickListener() { | 
|             @Override | 
|             public void onClick(View v) { | 
|                 startActivity(new Intent(MyActivityQHAlone.this, RechargeListActivityQHAlone.class)); | 
|             } | 
|         }); | 
|         myBinding.myNewCardListLl.setOnClickListener(new View.OnClickListener() { | 
|             @Override | 
|             public void onClick(View v) { | 
|                 startActivity(new Intent(MyActivityQHAlone.this, NewCardListActivityQHAlone.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(MyActivityQHAlone.this, "导出成功!"); | 
|                     break; | 
|                 case 3: | 
|                     TipUtil.show(MyActivityQHAlone.this, "记录为空!"); | 
|                     break; | 
|                 default: | 
|                     TipUtil.show(MyActivityQHAlone.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(MyActivityQHAlone.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, MyActivityQHAlone.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(MyActivityQHAlone.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(); | 
|     } | 
|   | 
|   | 
| } |