左晓为主开发手持机充值管理机
zuoxiao
2024-08-09 9450bcb197c2de53982368d5c2059b31abed3b87
qihealonelibrary/src/main/java/com/dayu/qihealonelibrary/activity/MyActivity.java
New file
@@ -0,0 +1,314 @@
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();
    }
}