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(); 
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |