From 50f6dd3b617f769e7fc6094c2dd0752747541489 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期四, 23 十一月 2023 18:04:05 +0800 Subject: [PATCH] 修复导出充值记录bug 优化充值记录加载逻辑和速度 优化导出记录逻辑 --- app/src/main/java/com/dayu/recharge/activity/MyActivity.java | 94 +++++-- app/src/main/java/com/dayu/recharge/model/RechargeListModel.java | 17 + app/src/main/java/com/dayu/recharge/tools/NfcReadHelper.java | 204 +++++++++++----- app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java | 149 ++++-------- app/src/main/java/com/dayu/recharge/utils/ExcelUtil.java | 6 app/src/main/java/com/dayu/recharge/activity/BaseNfcActivity.java | 59 +--- app/src/main/res/layout/activity_recharge.xml | 1 app/src/main/java/com/dayu/recharge/activity/RechargeListActivity.java | 25 + app/src/main/java/com/dayu/recharge/dao/RechargeDao.java | 5 app/src/main/java/com/dayu/recharge/activity/HomeActivity.java | 25 + app/src/main/java/com/dayu/recharge/model/UserListMode.java | 30 ++ app/src/main/java/com/dayu/recharge/MyApplication.java | 9 app/src/main/res/layout/activity_admin.xml | 8 app/src/main/res/layout/activity_home.xml | 18 app/src/main/res/layout/activity_my.xml | 10 app/src/main/res/layout/activity_parameter.xml | 4 app/src/main/java/com/dayu/recharge/activity/RechargeActivity.java | 8 app/src/main/res/layout/activity_recharge_detail.xml | 12 + 18 files changed, 428 insertions(+), 256 deletions(-) diff --git a/app/src/main/java/com/dayu/recharge/MyApplication.java b/app/src/main/java/com/dayu/recharge/MyApplication.java index 5a9cafc..4f9b349 100644 --- a/app/src/main/java/com/dayu/recharge/MyApplication.java +++ b/app/src/main/java/com/dayu/recharge/MyApplication.java @@ -66,13 +66,20 @@ isAidl = aidl; } + IpBean ipBean; + /** * 鍒濆鍖朎asySocket */ public void initEasySocket(boolean isCreate, SocketNet.CreateBack createBack) { try { this.createBack = createBack; - IpBean ipBean = BaseDaoSingleton.getInstance(MyApplication.myApplication).ipDao().findFirst(); + ipBean = BaseDaoSingleton.getInstance(MyApplication.myApplication).ipDao().findFirst(); + if (ipBean == null) { + ipBean = new IpBean(); + ipBean.setIp("dayuyanjiuyuan.top"); + ipBean.setPort(8888); + } if (ipBean != null) { try { //澶勭悊褰撹繛鎺ヤ笂IP鍚庝慨鏀筰p涓嶇敓鏁堥棶棰� diff --git a/app/src/main/java/com/dayu/recharge/activity/BaseNfcActivity.java b/app/src/main/java/com/dayu/recharge/activity/BaseNfcActivity.java index 9447bcd..54db2fd 100644 --- a/app/src/main/java/com/dayu/recharge/activity/BaseNfcActivity.java +++ b/app/src/main/java/com/dayu/recharge/activity/BaseNfcActivity.java @@ -9,12 +9,16 @@ import android.app.PendingIntent; import android.content.Context; import android.content.Intent; +import android.nfc.NdefMessage; import android.nfc.NfcAdapter; +import android.nfc.NfcEvent; +import android.nfc.Tag; import android.os.Handler; import android.os.Message; import com.dayu.recharge.card.UserCard; import com.dayu.recharge.tools.NfcReadHelper; +import com.dayu.recharge.utils.LogUtil; import com.dayu.recharge.utils.TipUtil; import com.tencent.bugly.crashreport.CrashReport; @@ -62,6 +66,23 @@ super.onStart(); //姝ゅadapter闇�瑕侀噸鏂拌幏鍙栵紝鍚﹀垯鏃犳硶鑾峰彇message mNfcAdapter = NfcAdapter.getDefaultAdapter(this); + if (mNfcAdapter != null){ + mNfcAdapter.setNdefPushMessageCallback(new NfcAdapter.CreateNdefMessageCallback() { + @Override + public NdefMessage createNdefMessage(NfcEvent nfcEvent) { + // 鍦ㄦ澶勫鐞哊FC娑堟伅鐨勫垱寤� + return null; + } + }, this); + + } +// mNfcAdapter.enableReaderMode(this, new NfcAdapter.ReaderCallback() { +// @Override +// public void onTagDiscovered(Tag tag) { +// LogUtil.e(tag.toString()); +// } +// }, NfcAdapter.FLAG_READER_NFC_A | NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK, null); + //涓�鏃︽埅鑾種FC娑堟伅锛屽氨浼氶�氳繃PendingIntent璋冪敤绐楀彛 mPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()), 0); @@ -107,43 +128,5 @@ return false; } return true; - } - - /** - * 璇诲彇鍏ㄩ儴鏁版嵁 - */ - public void readAllData(Intent intent) { - try { - NfcReadHelper.getInstence(intent) - .getAllData(new NfcReadHelper.NFCCallListback() { - @Override - public void callBack(Map<String, List<byte[]>> data) { - Message message = new Message(); -// 鑾峰彇1鎵囧尯鏁版嵁 - List<byte[]> oneSector = data.get("1"); - if (oneSector != null && oneSector.size() > 0) { - userCard = UserCard.getBean(oneSector); - message.what = RECHARGE; - } else { - message.what = ERROR; - } - if (handler != null) { - handler.sendMessage(message); - } - } - - @Override - public void error(int code) { - if (handler != null) { - Message message = new Message(); - message.what = ERROR; - handler.sendMessage(message); - } - } - }); - } catch (Exception e) { - e.printStackTrace(); - CrashReport.postCatchedException(e); - } } } diff --git a/app/src/main/java/com/dayu/recharge/activity/HomeActivity.java b/app/src/main/java/com/dayu/recharge/activity/HomeActivity.java index b2eb71b..62eae53 100644 --- a/app/src/main/java/com/dayu/recharge/activity/HomeActivity.java +++ b/app/src/main/java/com/dayu/recharge/activity/HomeActivity.java @@ -3,14 +3,17 @@ import android.Manifest; import android.content.Intent; import android.os.Bundle; +import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; +import android.widget.Toast; import com.dayu.recharge.MyApplication; import com.dayu.recharge.R; import com.dayu.recharge.databinding.ActivityHomeBinding; import com.dayu.recharge.dbBean.AdminDataBean; import com.dayu.recharge.utils.TipUtil; +import com.dayu.recharge.utils.ToastUtil; import com.permissionx.guolindev.PermissionX; @@ -71,7 +74,7 @@ if (adminData != null) { startActivity(new Intent(HomeActivity.this, NewCardActivity.class)); } else { - TipUtil.show("璇峰厛璁剧疆绠$悊鍛樹俊鎭�"); + TipUtil.show("璇峰厛璁剧疆鍦板潃淇℃伅"); } } @@ -83,7 +86,7 @@ if (adminData != null) { startActivity(new Intent(HomeActivity.this, RechargeActivity.class)); } else { - TipUtil.show("璇峰厛璁剧疆绠$悊鍛樹俊鎭�"); + TipUtil.show("璇峰厛璁剧疆鍦板潃淇℃伅"); } } @@ -120,8 +123,24 @@ @Override protected void onDestroy() { super.onDestroy(); - homeActivity=null; + homeActivity = null; } + long mExitTime; + + //鐐瑰嚮涓ゆ閫�鍑虹▼搴� 鏈夋椂闂撮棿闅� 闂撮殧鍐呯偣鍑诲垯閫�鍑虹▼搴� 鍚﹀垯 鍒欐彁绀� + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_BACK) { + if ((System.currentTimeMillis() - mExitTime) > 2000) { + Toast.makeText(HomeActivity.this, "鍐嶆寜涓�娆¢��鍑虹▼搴�", Toast.LENGTH_SHORT).show(); + mExitTime = System.currentTimeMillis(); + } else { + HomeActivity.this.finish(); + } + return true; + } + return super.onKeyDown(keyCode, event); + } } diff --git a/app/src/main/java/com/dayu/recharge/activity/MyActivity.java b/app/src/main/java/com/dayu/recharge/activity/MyActivity.java index 6dfe6ef..69f46bc 100644 --- a/app/src/main/java/com/dayu/recharge/activity/MyActivity.java +++ b/app/src/main/java/com/dayu/recharge/activity/MyActivity.java @@ -6,9 +6,13 @@ 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.recharge.MyApplication; import com.dayu.recharge.databinding.ActivityMyBinding; @@ -119,42 +123,72 @@ } + Handler handler = new Handler(new Handler.Callback() { + @Override + public boolean handleMessage(@NonNull Message msg) { + switch (msg.what) { + case 1: + TipUtil.show(MyActivity.this, "瀵煎嚭鎴愬姛!"); + break; + default: + TipUtil.show(MyActivity.this, "瀵煎嚭澶辫触!"); + break; + } + stopAnim(); + return false; + } + }); + /** * 瀵煎嚭鎴怑xcel */ private void outExcl() { startAnim(); - File file = new File(ExcelUtil.outPath); - //鏂囦欢澶规槸鍚﹀凡缁忓瓨鍦� - if (!file.exists()) { - file.mkdirs(); - } - List listData = new ArrayList(); - try { - if (isRechargeList) { - listData = baseDao.rechargeDao().findByTime(beginTime, endTime); - } else { - listData = baseDao.userCardDao().findByTime(beginTime, endTime); + 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 = baseDao.userCardDao().findByTime(beginTime, endTime); + } + } 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(); + } + } } - } 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); - stopAnim(); + }).start(); + + } void getVersion(Activity context) { diff --git a/app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java b/app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java index d7f58d0..5b04dc2 100644 --- a/app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java +++ b/app/src/main/java/com/dayu/recharge/activity/ReadCardAcitivy.java @@ -3,11 +3,9 @@ import android.content.Intent; import android.nfc.NfcAdapter; import android.os.Bundle; -import android.os.Handler; import android.os.Message; import android.view.LayoutInflater; import android.view.View; - import com.dayu.recharge.card.ConfigurationPowerCard; import com.dayu.recharge.card.DomainCard; @@ -96,12 +94,12 @@ @Override public void onNewIntent(Intent intent) { - super.onNewIntent(intent); this.intent = intent; ProgressDialog.show(this); if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) { readAllData(intent); } + super.onNewIntent(intent); } /** @@ -110,136 +108,93 @@ public void readAllData(Intent intent) { NfcReadHelper.getInstence(intent) - .getAllData(new NfcReadHelper.NFCCallListback() { + .getOneSectorData(new NfcReadHelper.NFCCallListback() { @Override - public void callBack(Map<String, List<byte[]>> data) { - Message message = new Message(); + public void callBack(List<byte[]> data) { //鑾峰彇1鎵囧尯鏁版嵁 - List<byte[]> oneSector = data.get("1"); - if (oneSector != null && oneSector.size() > 0) { - byte cardType = oneSector.get(0)[0]; + if (data != null && data.size() > 0) { + byte cardType = data.get(0)[0]; String cardTypeStr = HexUtil.byteToHex(cardType); switch (cardTypeStr) { case MyCommon.USER_CARD_TYPE_1: case MyCommon.USER_CARD_TYPE_2: case MyCommon.USER_CARD_TYPE_3: - userCard = UserCard.getBean(oneSector); - message.what = USER_CRAD; + userCard = UserCard.getBean(data); + selectBalance(userCard.getInitPeasantCode()); break; case MyCommon.MANAGE_CRAD: - message.what = MANAGE_CRAD; + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓虹鐞嗗崱"); + stopAnim(); break; case MyCommon.CLEAN_CARD_TYPE: - message.what = CLEAN_CARD; + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓烘竻闆跺崱"); + stopAnim(); break; case MyCommon.REGISTERED_CARD_TYPE: - message.what = REGISTERED_CARD; + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓洪噸鏂版敞鍐岃澶囧崱"); + stopAnim(); + break; case MyCommon.CLEAN_ALL_USER_CARD_TYPE: - message.what = CLEAN_ALL_USER; + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓哄垹闄ゅ叏閮ㄧ敤鎴峰崱"); + stopAnim(); break; case MyCommon.DOMAIN_CARD_TYPE: - message.what = DOMAIN_CARD; - message.obj = oneSector; + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓鸿缃煙鍚嶅崱"); + DomainCard domainCard = DomainCard.toBean(data); + redCardBinding.readCardDataTV.setText("搴忓彿锛�" + domainCard.getDomainNumber() + "\n" + "鍩熷悕锛�" + domainCard.getDomainName() + "\n" + "绔彛鍙凤細" + domainCard.getPort()); + stopAnim(); break; case MyCommon.TEST_CARD_TYPE: - message.what = TEST_CARD; + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓烘祴璇曞崱"); + stopAnim(); break; case MyCommon.CONFIGURATION_CARD_TYPE: - message.what = CONFIGURATION_CARD; + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠涓洪厤缃澶囨敞鍐屼俊鎭崱"); + stopAnim(); break; case MyCommon.CONFIGURATION_POWER_CARD_TYPE: - message.what = CONFIGURATION_POWER_CARD; - message.obj = oneSector.get(0); + viweGone(false); + redCardBinding.readCardTypeTV.setText("褰撳墠閰嶇疆姘存车鍔熺巼鍗�"); + ConfigurationPowerCard powerCard = ConfigurationPowerCard.toBean(data.get(0)); + redCardBinding.readCardDataTV.setText(powerCard.getPower()); + stopAnim(); + break; + default: + TipUtil.show(ReadCardAcitivy.this, "鍗$墖鏃犳硶璇嗗埆"); + stopAnim(); break; } } else { - message.what = MyCommon.ERROR; + TipUtil.show(ReadCardAcitivy.this, "鍗$墖鏃犳硶璇嗗埆"); + stopAnim(); } - handler.sendMessage(message); - } + } @Override public void error(int code) { - Message message = new Message(); - message.what = code; - handler.sendMessage(message); + switch (code) { + case MyCommon.ERROR_MOVE: + stopAnim(); + TipUtil.show("杩炴帴涓柇锛岃閲嶆柊璐村悎鍗$墖"); + break; + default: + stopAnim(); + TipUtil.show("鍗$墖璇嗗埆閿欒,璇烽噸璇曪紒"); + } } }); } - Handler handler = new Handler(new Handler.Callback() { - @Override - public boolean handleMessage(Message msg) { - switch (msg.what) { - case USER_CRAD: - selectBalance(userCard.getInitPeasantCode()); - break; - case MANAGE_CRAD: - viweGone(false); - redCardBinding.readCardTypeTV.setText("褰撳墠涓虹鐞嗗崱"); - stopAnim(); - break; - case CLEAN_CARD: - viweGone(false); - redCardBinding.readCardTypeTV.setText("褰撳墠涓烘竻闆跺崱"); - stopAnim(); - break; - case REGISTERED_CARD: - viweGone(false); - redCardBinding.readCardTypeTV.setText("褰撳墠涓洪噸鏂版敞鍐岃澶囧崱"); - stopAnim(); - break; - case CLEAN_ALL_USER: - viweGone(false); - redCardBinding.readCardTypeTV.setText("褰撳墠涓哄垹闄ゅ叏閮ㄧ敤鎴峰崱"); - stopAnim(); - break; - case DOMAIN_CARD: - viweGone(false); - redCardBinding.readCardTypeTV.setText("褰撳墠涓鸿缃煙鍚嶅崱"); - List<byte[]> data = (List<byte[]>) msg.obj; - DomainCard domainCard = DomainCard.toBean(data); - redCardBinding.readCardDataTV.setText("搴忓彿锛�" + domainCard.getDomainNumber() + "\n" + "鍩熷悕锛�" + domainCard.getDomainName() + "\n" + "绔彛鍙凤細" + domainCard.getPort()); - stopAnim(); - break; - case TEST_CARD: - viweGone(false); - redCardBinding.readCardTypeTV.setText("褰撳墠涓烘祴璇曞崱"); - stopAnim(); - break; - case CONFIGURATION_CARD: - viweGone(false); - redCardBinding.readCardTypeTV.setText("褰撳墠涓洪厤缃澶囨敞鍐屼俊鎭崱"); - stopAnim(); - break; - case CONFIGURATION_POWER_CARD: - viweGone(false); - redCardBinding.readCardTypeTV.setText("褰撳墠閰嶇疆姘存车鍔熺巼鍗�"); - byte[] powerData = (byte[]) msg.obj; - ConfigurationPowerCard powerCard = ConfigurationPowerCard.toBean(powerData); - redCardBinding.readCardDataTV.setText(powerCard.getPower()); - stopAnim(); - break; - case PASS_WORD_CRAD: - viweGone(false); - redCardBinding.readCardTypeTV.setText("褰撳墠涓哄瘑鐮佸崱"); - stopAnim(); - break; - case MyCommon.ERROR_MOVE: - stopAnim(); - TipUtil.show("杩炴帴涓柇锛岃閲嶆柊璐村悎鍗$墖"); - break; - default: - TipUtil.show(ReadCardAcitivy.this, "鍗$墖鏃犳硶璇嗗埆"); - stopAnim(); - break; - } - return false; - } - }); private void viweGone(boolean isUSerCard) { redCardBinding.readImgLL.setVisibility(View.GONE); diff --git a/app/src/main/java/com/dayu/recharge/activity/RechargeActivity.java b/app/src/main/java/com/dayu/recharge/activity/RechargeActivity.java index fabb5c9..12031d2 100644 --- a/app/src/main/java/com/dayu/recharge/activity/RechargeActivity.java +++ b/app/src/main/java/com/dayu/recharge/activity/RechargeActivity.java @@ -73,7 +73,7 @@ TipUtil.show(RechargeActivity.this, "鍗$墖璇诲彇澶辫触"); } - readAllData(intent); +// readAllData(intent); } catch (Exception e) { e.printStackTrace(); CrashReport.postCatchedException(e); @@ -195,7 +195,9 @@ binding.redRemainderBlance.setText(MornyUtil.changeF2Y(balance)); binding.redStatu.setText(stateText.toString()); binding.redInitCode.setText(initPeasantCode); + if ("00".equals(state)) { + binding.rechargeRegistBtn.setVisibility(View.VISIBLE); stateText.append("鍚敤"); userCard.setState("00"); userCard.setBalance(balance); @@ -215,6 +217,7 @@ } binding.redStatu.setText(stateText.toString()); binding.rechargeLL.setVisibility(View.GONE); + binding.rechargeRegistBtn.setVisibility(View.GONE); binding.rechargeRegistBtn.setVisibility(View.GONE); TipUtil.show(RechargeActivity.this, stateText.toString()); } catch (Exception e) { @@ -238,8 +241,9 @@ } } + protected void onDestroy() { super.onDestroy(); - rechargeActivity=null; + rechargeActivity = null; } } diff --git a/app/src/main/java/com/dayu/recharge/activity/RechargeListActivity.java b/app/src/main/java/com/dayu/recharge/activity/RechargeListActivity.java index 588fcaf..9ad290f 100644 --- a/app/src/main/java/com/dayu/recharge/activity/RechargeListActivity.java +++ b/app/src/main/java/com/dayu/recharge/activity/RechargeListActivity.java @@ -35,6 +35,8 @@ long beginTime; long endTime; + RechargeListModel rechargeListModel; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -48,11 +50,12 @@ private void setData() { - RechargeListModel rechargeListModel = new RechargeListModel(this); - rechargeListModel.getRechargeList().observe(this, myList -> { + rechargeListModel = new RechargeListModel(this); + rechargeListModel.getAllRechargeList().observe(this, myList -> { rechargeList.clear(); rechargeList.addAll(myList); adapter.notifyDataSetChanged(); + getTotal(); }); adapter = new RechargeAdapter(this, rechargeList); rechargeListBinding.rechargeList.setAdapter(adapter); @@ -109,11 +112,19 @@ TipUtil.show(RechargeListActivity.this, "缁撴潫鏃堕棿涓嶈兘鏅氫簬寮�濮嬫椂闂�"); } else { endTime = endTime + (1000 * 60 * 60 * 24) - 1; - List<RechargeBean> userList = baseDao.rechargeDao().findByTime(beginTime, endTime); - rechargeList.clear(); - rechargeList.addAll(userList); - adapter.notifyDataSetChanged(); - getTotal(); + + rechargeListModel.getRechargeList(beginTime, endTime).observe(RechargeListActivity.this, list -> { + if (rechargeList != null) { + rechargeList.clear(); + rechargeList.addAll(list); + adapter.notifyDataSetChanged(); + getTotal(); + } else { + TipUtil.show(RechargeListActivity.this, "鏈煡璇㈠埌鏁版嵁!"); + } + + }); + } } diff --git a/app/src/main/java/com/dayu/recharge/dao/RechargeDao.java b/app/src/main/java/com/dayu/recharge/dao/RechargeDao.java index f563625..5af3c7f 100644 --- a/app/src/main/java/com/dayu/recharge/dao/RechargeDao.java +++ b/app/src/main/java/com/dayu/recharge/dao/RechargeDao.java @@ -35,5 +35,8 @@ LiveData<List<RechargeBean>> findAll(); @Query("select * from RechargeBean where date>=:beginTime and date<=:endTime") - List<RechargeBean> findByTime(long beginTime, long endTime); + LiveData<List<RechargeBean>> findByTime(long beginTime, long endTime); + + @Query("select * from RechargeBean where date>=:beginTime and date<=:endTime") + List<RechargeBean> ansyFindByTime(long beginTime, long endTime); } diff --git a/app/src/main/java/com/dayu/recharge/model/RechargeListModel.java b/app/src/main/java/com/dayu/recharge/model/RechargeListModel.java index 9f6d923..7345d47 100644 --- a/app/src/main/java/com/dayu/recharge/model/RechargeListModel.java +++ b/app/src/main/java/com/dayu/recharge/model/RechargeListModel.java @@ -4,6 +4,7 @@ import androidx.lifecycle.ViewModel; import com.dayu.recharge.activity.BaseActivity; +import com.dayu.recharge.dao.RechargeDao; import com.dayu.recharge.dbBean.RechargeBean; import java.util.List; @@ -13,17 +14,23 @@ * author: zuo * Date: 2023-11-23 * Time: 9:06 - * 澶囨敞锛� + * 澶囨敞锛氬厖鍊艰褰曠殑mode */ -public class RechargeListModel { +public class RechargeListModel { LiveData<List<RechargeBean>> rechargeList; - + RechargeDao rechargeDao; public RechargeListModel(BaseActivity baseActivity) { - rechargeList = baseActivity.asynchBaseDao.rechargeDao().findAll(); + rechargeDao = baseActivity.asynchBaseDao.rechargeDao(); } - public LiveData<List<RechargeBean>> getRechargeList() { + public LiveData<List<RechargeBean>> getAllRechargeList() { + rechargeList = rechargeDao.findAll(); + return rechargeList; + } + + public LiveData<List<RechargeBean>> getRechargeList(long beginTime, long endTime) { + rechargeList = rechargeDao.findByTime(beginTime,endTime); return rechargeList; } diff --git a/app/src/main/java/com/dayu/recharge/model/UserListMode.java b/app/src/main/java/com/dayu/recharge/model/UserListMode.java new file mode 100644 index 0000000..16631c1 --- /dev/null +++ b/app/src/main/java/com/dayu/recharge/model/UserListMode.java @@ -0,0 +1,30 @@ +package com.dayu.recharge.model; + +import android.app.Activity; + +import com.dayu.recharge.dbBean.UserCardBean; + +import java.util.List; + +/** + * Created by Android Studio. + * author: zuo + * Date: 2023-11-23 + * Time: 16:35 + * 澶囨敞锛氱敤鎴疯褰曠殑mode + */ +public class UserListMode { + List<UserCardBean> userCardBeanList; + + public UserListMode(Activity activity) { + + } + + public List<UserCardBean> getUserCardBeanList() { + return userCardBeanList; + } + + public void setUserCardBeanList(List<UserCardBean> userCardBeanList) { + this.userCardBeanList = userCardBeanList; + } +} diff --git a/app/src/main/java/com/dayu/recharge/tools/NfcReadHelper.java b/app/src/main/java/com/dayu/recharge/tools/NfcReadHelper.java index 34cd956..650415d 100644 --- a/app/src/main/java/com/dayu/recharge/tools/NfcReadHelper.java +++ b/app/src/main/java/com/dayu/recharge/tools/NfcReadHelper.java @@ -69,8 +69,8 @@ List<byte[]> list = new ArrayList<>(); //楠岃瘉鎵囧尯瀵嗙爜锛屽惁鍒欎細鎶ラ敊锛堥摼鎺ュけ璐ラ敊璇級 boolean isOpen = mfc.authenticateSectorWithKeyA(1, defauleKey); - if (!isOpen){ - isOpen= mfc.authenticateSectorWithKeyA(1, companyKey); + if (!isOpen) { + isOpen = mfc.authenticateSectorWithKeyA(1, companyKey); } if (isOpen) { //鑾峰彇鎵囧尯閲岄潰鍧楃殑鏁伴噺 @@ -118,8 +118,8 @@ try { mfc.connect(); boolean isOpen = mfc.authenticateSectorWithKeyA(1, defauleKey); - if (!isOpen){ - isOpen= mfc.authenticateSectorWithKeyA(1, companyKey); + if (!isOpen) { + isOpen = mfc.authenticateSectorWithKeyA(1, companyKey); } if (isOpen) { int bIndex = mfc.sectorToBlock(1); @@ -152,72 +152,136 @@ * * @param callback */ - public void getAllData(final NFCCallListback callback) { - new Thread(new Runnable() { - @Override - public void run() { - Map<String, List<byte[]>> map = new HashMap<>(); - MifareClassic mfc = MifareClassic.get(tag); - if (null != mfc) { - try { - //閾炬帴NFC - mfc.connect(); - //鑾峰彇鎵囧尯鏁伴噺 - int count = mfc.getSectorCount(); - //瀛樺偍绌洪棿 - int size = mfc.getSize(); - //鐢ㄤ簬鍒ゆ柇鏃跺�欐湁鍐呭璇诲彇鍑烘潵 - boolean flag = false; - for (int i = 0; i < count; i++) { - List<byte[]> list = new ArrayList<>(); - //楠岃瘉鎵囧尯瀵嗙爜锛屽惁鍒欎細鎶ラ敊锛堥摼鎺ュけ璐ラ敊璇級 - boolean isOpen = mfc.authenticateSectorWithKeyA(i, defauleKey); - if (!isOpen){ - isOpen = mfc.authenticateSectorWithKeyA(i, companyKey); + public void getAllData(final NFCCallMapback callback) { + Map<String, List<byte[]>> map = new HashMap<>(); + MifareClassic mfc = MifareClassic.get(tag); + if (null != mfc) { + try { + //閾炬帴NFC + mfc.connect(); + //鑾峰彇鎵囧尯鏁伴噺 + int count = mfc.getSectorCount(); + //瀛樺偍绌洪棿 + int size = mfc.getSize(); + //鐢ㄤ簬鍒ゆ柇鏃跺�欐湁鍐呭璇诲彇鍑烘潵 + boolean flag = false; + for (int i = 0; i < count; i++) { + List<byte[]> list = new ArrayList<>(); + //楠岃瘉鎵囧尯瀵嗙爜锛屽惁鍒欎細鎶ラ敊锛堥摼鎺ュけ璐ラ敊璇級 + boolean isOpen = mfc.authenticateSectorWithKeyA(i, defauleKey); + if (!isOpen) { + isOpen = mfc.authenticateSectorWithKeyA(i, companyKey); + } + if (isOpen) { + //鑾峰彇鎵囧尯閲岄潰鍧楃殑鏁伴噺 + int bCount = mfc.getBlockCountInSector(i); + //鑾峰彇鎵囧尯绗竴涓潡瀵瑰簲鑺墖瀛樺偍鍣ㄧ殑浣嶇疆锛堟垜鏄繖鏍风悊瑙g殑锛屽洜涓虹0鎵囧尯鐨勮繖涓�兼槸4鑰屼笉鏄�0锛� + int bIndex = mfc.sectorToBlock(i); + //String data1 = ""; + for (int j = 0; j < bCount; j++) { + //璇诲彇鏁版嵁 + byte[] data = null; + try { + data = mfc.readBlock(bIndex); + bIndex++; + list.add(data); + } catch (Exception e) { + e.printStackTrace(); } - if (isOpen) { - //鑾峰彇鎵囧尯閲岄潰鍧楃殑鏁伴噺 - int bCount = mfc.getBlockCountInSector(i); - //鑾峰彇鎵囧尯绗竴涓潡瀵瑰簲鑺墖瀛樺偍鍣ㄧ殑浣嶇疆锛堟垜鏄繖鏍风悊瑙g殑锛屽洜涓虹0鎵囧尯鐨勮繖涓�兼槸4鑰屼笉鏄�0锛� - int bIndex = mfc.sectorToBlock(i); - //String data1 = ""; - for (int j = 0; j < bCount; j++) { - //璇诲彇鏁版嵁 - byte[] data = null; - try { - data = mfc.readBlock(bIndex); - bIndex++; - list.add(data); - } catch (Exception e) { - e.printStackTrace(); - } - } - flag = true; - } - map.put(i + "", list); } - if (flag) { - callback.callBack(map); - } else { - callback.error(MyCommon.ERROR); - } - } catch (IOException e) { - callback.error(MyCommon.ERROR_MOVE); - e.printStackTrace(); - } catch (Exception e) { - callback.error(MyCommon.ERROR); - e.printStackTrace(); - } finally { + flag = true; + } + map.put(i + "", list); + } + if (flag) { + callback.callBack(map); + } else { + callback.error(MyCommon.ERROR); + } + } catch (IOException e) { + callback.error(MyCommon.ERROR_MOVE); + e.printStackTrace(); + } catch (Exception e) { + callback.error(MyCommon.ERROR); + e.printStackTrace(); + } finally { + try { + mfc.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } + + + /** + * 鑾峰彇1鎵囧尯淇℃伅 + * + * @param callback + */ + public void getOneSectorData(NFCCallListback callback) { + + + MifareClassic mfc = null; + try { + mfc = MifareClassic.get(tag); + } catch (Exception e) { + e.printStackTrace(); + } + if (null != mfc) { + try { + //閾炬帴NFC + mfc.connect(); + //鐢ㄤ簬鍒ゆ柇鏃跺�欐湁鍐呭璇诲彇鍑烘潵 + boolean flag = false; + List<byte[]> list = new ArrayList<>(); + //楠岃瘉鎵囧尯瀵嗙爜锛屽惁鍒欎細鎶ラ敊锛堥摼鎺ュけ璐ラ敊璇級 + boolean isOpen = mfc.authenticateSectorWithKeyA(1, companyKey); + if (!isOpen) { + isOpen = mfc.authenticateSectorWithKeyA(1, defauleKey); + } + if (isOpen) { + //鑾峰彇鎵囧尯閲岄潰鍧楃殑鏁伴噺 + int bCount = mfc.getBlockCountInSector(1); + //鑾峰彇鎵囧尯绗竴涓潡瀵瑰簲鑺墖瀛樺偍鍣ㄧ殑浣嶇疆锛堟垜鏄繖鏍风悊瑙g殑锛屽洜涓虹0鎵囧尯鐨勮繖涓�兼槸4鑰屼笉鏄�0锛� + int bIndex = mfc.sectorToBlock(1); + //String data1 = ""; + for (int j = 0; j < bCount; j++) { + //璇诲彇鏁版嵁 + byte[] data = null; try { - mfc.close(); + data = mfc.readBlock(bIndex); + bIndex++; + list.add(data); } catch (Exception e) { e.printStackTrace(); } } + flag = true; + } + if (flag) { + callback.callBack(list); + } else { + callback.error(MyCommon.ERROR); + } + } catch (IOException e) { + callback.error(MyCommon.ERROR_MOVE); + e.printStackTrace(); + } catch (Exception e) { + callback.error(MyCommon.ERROR); + e.printStackTrace(); + } finally { + + try { + mfc.close(); + } catch (Exception e) { + e.printStackTrace(); } } - }).start(); + } } + /** * 璇诲彇NFC鍗$殑鐗瑰畾鎵囧尯淇℃伅 @@ -263,7 +327,7 @@ break; } boolean isOpen = mfc.authenticateSectorWithKeyA(a, defauleKey); - if (!isOpen){ + if (!isOpen) { isOpen = mfc.authenticateSectorWithKeyA(a, companyKey); } if (isOpen) { @@ -293,7 +357,7 @@ /** * 杩斿洖鐩戝惉绫� */ - public interface NFCCallListback { + public interface NFCCallMapback { /** * 杩斿洖璇诲彇nfc鍗$殑鍏ㄩ儴淇℃伅 * @@ -305,6 +369,22 @@ void error(int code); } + /** + * 杩斿洖鐩戝惉绫� + */ + public interface NFCCallListback { + /** + * 杩斿洖璇诲彇nfc鍗$殑鍏ㄩ儴淇℃伅 + * + * @param data 鍓嶉潰浠h〃鎵囧尯 鍥涗釜鍧楃殑鏁版嵁鐢�#鍙烽殧寮� + */ + void callBack(List<byte[]> data); + + + void error(int code); + } + + public interface NFCCallByteback { /** * 杩斿洖璇诲彇nfc鍗$殑鍏ㄩ儴淇℃伅 diff --git a/app/src/main/java/com/dayu/recharge/utils/ExcelUtil.java b/app/src/main/java/com/dayu/recharge/utils/ExcelUtil.java index e508bd9..4ac6e11 100644 --- a/app/src/main/java/com/dayu/recharge/utils/ExcelUtil.java +++ b/app/src/main/java/com/dayu/recharge/utils/ExcelUtil.java @@ -131,7 +131,11 @@ RechargeBean projectBean = (RechargeBean) objList.get(j); list.add(projectBean.getSerial()); list.add(projectBean.getUserName()); - list.add(projectBean.getUserId()); + if (projectBean.getUserId() != null) { + list.add(projectBean.getUserId()); + } else { + list.add(""); + } list.add(DateUtil.dateToStamp(projectBean.getDate(), DateUtil.type2)); list.add(projectBean.getMorny()); list.add(projectBean.getBalance()); diff --git a/app/src/main/res/layout/activity_admin.xml b/app/src/main/res/layout/activity_admin.xml index 726d4b4..6e87394 100644 --- a/app/src/main/res/layout/activity_admin.xml +++ b/app/src/main/res/layout/activity_admin.xml @@ -31,6 +31,7 @@ android:layout_marginTop="20dp" android:padding="5dp" android:text="鍒朵綔绠$悊鍗�" + android:textColor="@color/text_selecter" android:textSize="@dimen/text_size" /> <TextView @@ -41,6 +42,7 @@ android:layout_marginTop="20dp" android:padding="5dp" android:text="鍒朵綔娓呴浂鍗�" + android:textColor="@color/text_selecter" android:textSize="@dimen/text_size" /> <TextView @@ -51,6 +53,7 @@ android:layout_marginTop="20dp" android:padding="5dp" android:text="鍒朵綔閲嶆柊娉ㄥ唽璁惧鍗�" + android:textColor="@color/text_selecter" android:textSize="@dimen/text_size" /> <TextView @@ -61,6 +64,7 @@ android:layout_marginTop="20dp" android:padding="5dp" android:text="鍒朵綔鍒犻櫎鍏ㄩ儴鐢ㄦ埛鍗�" + android:textColor="@color/text_selecter" android:textSize="@dimen/text_size" /> <TextView @@ -71,6 +75,7 @@ android:layout_marginTop="20dp" android:padding="5dp" android:text="鍒朵綔璁剧疆鍩熷悕鍗�" + android:textColor="@color/text_selecter" android:textSize="@dimen/text_size" /> @@ -82,6 +87,7 @@ android:layout_marginTop="20dp" android:padding="5dp" android:text="鍒朵綔娴嬭瘯鍗�" + android:textColor="@color/text_selecter" android:textSize="@dimen/text_size" /> <TextView @@ -92,6 +98,7 @@ android:layout_marginTop="20dp" android:padding="5dp" android:text="鍒朵綔閰嶇疆璁惧淇℃伅鍗�" + android:textColor="@color/text_selecter" android:textSize="@dimen/text_size" /> <TextView @@ -102,6 +109,7 @@ android:layout_marginTop="20dp" android:padding="5dp" android:text="鍒朵綔閰嶇疆姘存车鍔熺巼鍗�" + android:textColor="@color/text_selecter" android:textSize="@dimen/text_size" /> </LinearLayout> diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml index 1498fd1..2200b50 100644 --- a/app/src/main/res/layout/activity_home.xml +++ b/app/src/main/res/layout/activity_home.xml @@ -14,15 +14,15 @@ <LinearLayout android:layout_width="match_parent" - android:layout_height="wrap_content" + android:layout_height="50dp" android:layout_gravity="center" - android:layout_marginTop="50dp" + android:layout_marginTop="30dp" android:orientation="horizontal"> <TextView android:id="@+id/home_newCard" android:layout_width="0dp" - android:layout_height="wrap_content" + android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:text="鏂板崱寮�鎴�" @@ -32,7 +32,7 @@ <TextView android:id="@+id/home_recharge" android:layout_width="0dp" - android:layout_height="wrap_content" + android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:text="鍏呭��" @@ -42,7 +42,7 @@ <TextView android:id="@+id/home_redCard" android:layout_width="0dp" - android:layout_height="wrap_content" + android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:text="璇诲彇鍗$墖" @@ -52,7 +52,7 @@ <LinearLayout android:layout_width="match_parent" - android:layout_height="wrap_content" + android:layout_height="50dp" android:layout_gravity="center" android:layout_marginTop="30dp" android:orientation="horizontal"> @@ -60,7 +60,7 @@ <TextView android:id="@+id/home_admin" android:layout_width="0dp" - android:layout_height="wrap_content" + android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:text="绠$悊绯荤粺" @@ -70,7 +70,7 @@ <TextView android:id="@+id/home_parameter" android:layout_width="0dp" - android:layout_height="wrap_content" + android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:text="鍙傛暟璁剧疆" @@ -80,7 +80,7 @@ <TextView android:id="@+id/home_my" android:layout_width="0dp" - android:layout_height="wrap_content" + android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:text="涓汉涓績" diff --git a/app/src/main/res/layout/activity_my.xml b/app/src/main/res/layout/activity_my.xml index 3e5c97c..8e4e698 100644 --- a/app/src/main/res/layout/activity_my.xml +++ b/app/src/main/res/layout/activity_my.xml @@ -57,12 +57,14 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="鍦板潃淇℃伅锛�" + android:textColor="@color/text_selecter" android:textSize="@dimen/text_size" /> <TextView android:id="@+id/my_adminName" android:layout_width="match_parent" android:layout_height="wrap_content" + android:textColor="@color/text_selecter" android:textSize="@dimen/text_size" /> </LinearLayout> @@ -81,6 +83,7 @@ android:layout_height="wrap_content" android:layout_toStartOf="@+id/my_newCardOut" android:text="寮�鎴疯褰�" + android:textColor="@color/text_selecter" android:textSize="@dimen/text_size" /> <TextView @@ -89,6 +92,7 @@ android:layout_height="wrap_content" android:layout_alignParentRight="true" android:text="瀵煎嚭璁板綍" + android:textColor="@color/text_selecter" android:textSize="@dimen/text_size" /> </RelativeLayout> @@ -104,6 +108,7 @@ android:layout_height="wrap_content" android:layout_toStartOf="@+id/my_rechargeOut" android:text="鍏呭�艰褰�" + android:textColor="@color/text_selecter" android:textSize="@dimen/text_size" /> <TextView @@ -112,6 +117,7 @@ android:layout_height="wrap_content" android:layout_alignParentRight="true" android:text="瀵煎嚭璁板綍" + android:textColor="@color/text_selecter" android:textSize="@dimen/text_size" /> </RelativeLayout> @@ -123,6 +129,7 @@ android:layout_height="wrap_content" android:layout_marginTop="15dp" android:text="IP璁剧疆" + android:textColor="@color/text_selecter" android:textSize="@dimen/text_size" /> <TextView @@ -131,6 +138,7 @@ android:layout_height="wrap_content" android:layout_marginTop="15dp" android:text="鐢ㄦ埛琛ュ崱" + android:textColor="@color/text_selecter" android:textSize="@dimen/text_size" /> @@ -140,6 +148,7 @@ android:layout_height="wrap_content" android:layout_marginTop="15dp" android:text="瀵嗙爜璁剧疆" + android:textColor="@color/text_selecter" android:textSize="@dimen/text_size" /> <TextView @@ -148,6 +157,7 @@ android:layout_height="wrap_content" android:layout_marginTop="15dp" android:text="鏈繛鎺ユ暟鎹腑蹇�" + android:textColor="@color/text_selecter" android:textSize="@dimen/text_size" /> </LinearLayout> diff --git a/app/src/main/res/layout/activity_parameter.xml b/app/src/main/res/layout/activity_parameter.xml index d733b8c..f59a95d 100644 --- a/app/src/main/res/layout/activity_parameter.xml +++ b/app/src/main/res/layout/activity_parameter.xml @@ -21,6 +21,7 @@ android:layout_marginTop="20dp" android:padding="5dp" android:text="鍩熷悕鍗¤缃�" + android:textColor="@color/text_selecter" android:textSize="@dimen/text_size" /> <TextView @@ -31,6 +32,7 @@ android:layout_marginTop="20dp" android:padding="5dp" android:text="姘存车鍔熺巼鍗¤缃�" + android:textColor="@color/text_selecter" android:textSize="@dimen/text_size" /> @@ -42,6 +44,7 @@ android:layout_marginTop="20dp" android:padding="5dp" android:text="鐢甸噺鍗曚环璁剧疆" + android:textColor="@color/text_selecter" android:textSize="@dimen/text_size" /> <TextView @@ -52,6 +55,7 @@ android:layout_marginTop="20dp" android:padding="5dp" android:text="鍗℃爣璇嗙爜璁剧疆" + android:textColor="@color/text_selecter" android:textSize="@dimen/text_size" /> </LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_recharge.xml b/app/src/main/res/layout/activity_recharge.xml index 1cbff10..d48cb50 100644 --- a/app/src/main/res/layout/activity_recharge.xml +++ b/app/src/main/res/layout/activity_recharge.xml @@ -160,6 +160,7 @@ android:id="@+id/recharge_registBtn" android:layout_width="match_parent" android:layout_height="50dp" + android:visibility="gone" android:layout_alignParentBottom="true" android:background="@color/title_bg" android:gravity="center" diff --git a/app/src/main/res/layout/activity_recharge_detail.xml b/app/src/main/res/layout/activity_recharge_detail.xml index a923fd1..8412dce 100644 --- a/app/src/main/res/layout/activity_recharge_detail.xml +++ b/app/src/main/res/layout/activity_recharge_detail.xml @@ -43,6 +43,7 @@ android:layout_marginTop="15dp" android:text="鍏呭�奸噾棰濓細" android:textSize="@dimen/text_size" /> + <TextView android:id="@+id/red_remainder_blance" android:layout_width="match_parent" @@ -76,5 +77,16 @@ android:layout_marginTop="15dp" android:text="鍗$姸鎬侊細" android:textSize="@dimen/text_size" /> + + <TextView + + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="20dp" + android:gravity="center" + android:text="鍏呭�兼垚鍔燂紒" + android:textColor="@color/red" + android:textSize="@dimen/text_size" /> </LinearLayout> + </LinearLayout> \ No newline at end of file -- Gitblit v1.8.0