From a9c1231be4e3c1c5bd5e9fc61489d55363090407 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期一, 04 三月 2024 15:26:22 +0800
Subject: [PATCH] 齐河项目相关修改

---
 app/src/main/res/layout/activity_password_card.xml                     |   62 ++++++++
 app/src/main/java/com/dayu/recharge/card/ElectricPriceCard.java        |   60 ++++++++
 app/src/main/java/com/dayu/recharge/dbBean/PassWordCardBean.java       |   36 +++++
 app/src/main/java/com/dayu/recharge/tools/HexUtil.java                 |   43 +++++
 app/src/main/java/com/dayu/recharge/card/PassWordCard.java             |   41 +++++
 app/src/main/java/com/dayu/recharge/dao/LoginPsDao.java                |    2 
 app/src/main/java/com/dayu/recharge/dao/PowerDao.java                  |    2 
 app/src/main/java/com/dayu/recharge/card/RegionCard.java               |   14 +
 app/src/main/java/com/dayu/recharge/card/ManageCard.java               |   27 +++
 app/src/main/java/com/dayu/recharge/dao/AppDatabase.java               |    5 
 app/src/main/java/com/dayu/recharge/dbBean/PassWordBean.java           |    5 
 app/src/main/java/com/dayu/recharge/activity/PasswordCardActivity.java |   64 +++++++++
 app/src/main/java/com/dayu/recharge/dao/PassWordCardDao.java           |   31 ++++
 13 files changed, 377 insertions(+), 15 deletions(-)

diff --git a/app/src/main/java/com/dayu/recharge/activity/PasswordCardActivity.java b/app/src/main/java/com/dayu/recharge/activity/PasswordCardActivity.java
new file mode 100644
index 0000000..4ae1047
--- /dev/null
+++ b/app/src/main/java/com/dayu/recharge/activity/PasswordCardActivity.java
@@ -0,0 +1,64 @@
+package com.dayu.recharge.activity;
+
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+
+import com.dayu.recharge.databinding.ActivityPasswordCardBinding;
+import com.dayu.recharge.dbBean.PassWordCardBean;
+import com.dayu.recharge.dbBean.PowerBean;
+import com.dayu.recharge.utils.TipUtil;
+
+/**
+ * author: zuo
+ * Date: 2024-03-01
+ * Time: 16:21
+ * 澶囨敞锛氬瘑鐮佸崱璁剧疆鐣岄潰
+ */
+public class PasswordCardActivity extends BaseActivity {
+
+    ActivityPasswordCardBinding binding;
+
+    PassWordCardBean cardBean;
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        binding = ActivityPasswordCardBinding.inflate(LayoutInflater.from(this));
+        setContentView(binding.getRoot());
+    }
+
+
+    private void initData() {
+        PassWordCardBean powerBean = baseDao.passWordCardDao().findFirst();
+        if (powerBean != null) {
+            this.cardBean = powerBean;
+            binding.villageOldNumber.setText(powerBean.getPassWord());
+        }
+    }
+
+    private void initView() {
+        binding.villageOk.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                String data = binding.villageNewNum.getText().toString();
+                if (!TextUtils.isEmpty(data)) {
+                    if (data.length()==12){
+                        cardBean.setPassWord(data);
+                        baseDao.passWordCardDao().insert(cardBean);
+                        TipUtil.show("淇濆瓨鎴愬姛");
+                        initData();
+                    }else {
+                        TipUtil.show("璇疯緭鍏ユ纭殑12浣嶅瓧绗︾殑16杩涘埗鍗″瘑鐮�");
+                    }
+
+                } else {
+                    TipUtil.show("璇疯緭鍏ヨ璁剧疆鐨勫崱瀵嗙爜");
+                }
+            }
+        });
+    }
+
+
+
+}
diff --git a/app/src/main/java/com/dayu/recharge/card/ElectricPriceCard.java b/app/src/main/java/com/dayu/recharge/card/ElectricPriceCard.java
index f25ac50..f6a671a 100644
--- a/app/src/main/java/com/dayu/recharge/card/ElectricPriceCard.java
+++ b/app/src/main/java/com/dayu/recharge/card/ElectricPriceCard.java
@@ -1,8 +1,10 @@
 package com.dayu.recharge.card;
 
+import com.dayu.recharge.tools.HexUtil;
 import com.dayu.recharge.utils.MyCommon;
 
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * author: zuo
@@ -13,6 +15,64 @@
 public class ElectricPriceCard implements Serializable {
     public String cardType = MyCommon.ELECTRIC_PRICE;
 
+    public String cardData = "A0B1C289";//1-4涓嬫爣鍥哄畾鍊�
+
+    public Float electricPrice;// 鐢甸噺鍗曚环(浣�)鍗曚綅鏄厓锛�3浣嶅皬鏁扮偣
+
+
+
+
+
+
+    public byte[] toByte() {
+        ElectricPriceCard.Zero zero = new ElectricPriceCard.Zero();
+        return zero.toByte();
+    }
+
+
+
+    public static ElectricPriceCard getBean(List<byte[]> data){
+        ElectricPriceCard regionCard=new ElectricPriceCard();
+        byte[] zero=data.get(0);
+        regionCard.cardType= HexUtil.byteToHex(zero[0]);
+
+        byte[] cardDataByte = new byte[4];
+        System.arraycopy(zero, 1, cardDataByte, 0, cardDataByte.length);
+        regionCard.cardData = HexUtil.bytesToHex(cardDataByte);
+
+
+        byte[] electricPriceByte = new byte[4];
+        System.arraycopy(zero, 5, electricPriceByte, 0, electricPriceByte.length);
+        regionCard.electricPrice = HexUtil.bytesToFloat(electricPriceByte);
+
+
+        return regionCard;
+    }
+
+
+    /**
+     * 绗�1鎵囧尯0鍧� 瀛樺偍鐨勬暟鎹�
+     */
+    public class Zero extends BaseCard {
+        public byte[] toByte() {
+            byte[] data = new byte[16];
+            data[0] = HexUtil.hexToByte(cardType);
+
+            byte[] regionBytes = HexUtil.hexToByteArray(cardData);
+            if (regionBytes != null) {
+                System.arraycopy(regionBytes, 0, data, 1, regionBytes.length);
+            }
+
+            byte[] controllerCodelBytes = HexUtil.folatToByte(electricPrice);
+            if (controllerCodelBytes != null) {
+                System.arraycopy(controllerCodelBytes, 0, data, 5, controllerCodelBytes.length);
+            }
+
+            data[15] = getByteSum(data);
+            return data;
+        }
+
+    }
 
 
 }
diff --git a/app/src/main/java/com/dayu/recharge/card/ManageCard.java b/app/src/main/java/com/dayu/recharge/card/ManageCard.java
index 4bea602..241150a 100644
--- a/app/src/main/java/com/dayu/recharge/card/ManageCard.java
+++ b/app/src/main/java/com/dayu/recharge/card/ManageCard.java
@@ -13,7 +13,20 @@
  */
 public class ManageCard implements Serializable {
     public String cardType = MyCommon.MANAGE_CRAD;//鍗$被鍨�
-    public String cardData = "3668F7A30119";//鏍囪瘑鐮�
+    public String cardData = "A0B1C289";//鏍囪瘑鐮�
+
+
+    /**
+     * M1鍗$殑0鎵囧尯0鍧楅�氬父鐢ㄤ簬瀛樺偍涓�浜涘熀鏈殑鍗$墖淇℃伅
+     * 绗�0瀛楄妭锛氬崱鐗囩被鍨嬶紙M1鍗′负0x08锛�
+     * 绗�1瀛楄妭锛氬崱鐗囧湴鍧�锛堥�氬父涓�0x00锛�
+     * 绗�2-5瀛楄妭锛氬崱鐗囧簭鍒楀彿锛�4瀛楄妭锛�
+     * 绗�6-8瀛楄妭锛氬崱鐗囧埗閫犲晢浠g爜锛�3瀛楄妭锛�
+     * 绗�9瀛楄妭锛氬崱鐗囩増鏈�
+     * 绗�10-15瀛楄妭锛氶鐣欏尯鍩�
+     */
+    public byte[] userCard; //鐢ㄦ埛鍗″彿
+
 
     public String getCardData() {
         return cardData;
@@ -28,10 +41,16 @@
         public byte[] toByte() {
             byte[] data = new byte[16];
             data[0] = HexUtil.hexToByte(cardType);
-            byte[] cardDatas = HexUtil.hexToByteArray(cardData);
-            for (int i = 0; i < 6; i++) {
-                data[i + 1] = cardDatas[i];
+
+            byte[] cardDataByte = HexUtil.hexToByteArray(cardData);
+            if (cardDataByte != null) {
+                System.arraycopy(cardDataByte, 0, data, 1, cardDataByte.length);
             }
+
+            if (userCard!=null){
+                System.arraycopy(userCard, 0, data, 5, userCard.length);
+            }
+
             data[15] = getByteSum(data);
             return data;
         }
diff --git a/app/src/main/java/com/dayu/recharge/card/PassWordCard.java b/app/src/main/java/com/dayu/recharge/card/PassWordCard.java
index ff1e78f..40d038b 100644
--- a/app/src/main/java/com/dayu/recharge/card/PassWordCard.java
+++ b/app/src/main/java/com/dayu/recharge/card/PassWordCard.java
@@ -3,6 +3,8 @@
 import com.dayu.recharge.tools.HexUtil;
 import com.dayu.recharge.utils.MyCommon;
 
+import java.util.List;
+
 /**
  * Copyright (C), 2023,
  * Author: zuo
@@ -12,16 +14,49 @@
 public class PassWordCard {
     public String cardType = MyCommon.PASS_WORD_CRAD_TYPE;//鍗$被鍨�
     public String cardData = "A0B1C289";//鏍囪瘑鐮�
+    public String passWord;//鍏綅鐨勫瘑鐮�
+
+
+
+    public static PassWordCard getBean(List<byte[]> data){
+
+        if (data!=null){
+            PassWordCard passWordCard=new PassWordCard();
+
+            byte[] zero=data.get(0);
+            byte[] passWordByte=new byte[6];
+            System.arraycopy(zero, 5, passWordByte, 0, passWordByte.length);
+            passWordCard.passWord = HexUtil.bytesToHex(passWordByte);
+            return passWordCard;
+        }
+        return null;
+
+
+    }
+
+
+    public byte[] toByte() {
+        Zero zero = new Zero();
+        return zero.toByte();
+    }
+
 
     public class Zero extends BaseCard {
-        public void toByte() {
+        public byte[] toByte() {
             byte[] data = new byte[16];
             data[0] = HexUtil.hexToByte(cardType);
             byte[] cardDatas = HexUtil.hexToByteArray(cardData);
-            for (int i = 0; i < 4; i++) {
-                data[i + 1] = cardDatas[i];
+            if (cardDatas != null) {
+                System.arraycopy(cardDatas, 0, data, 1, cardDatas.length);
             }
+
+            byte[] passWordBytes = HexUtil.hexToByteArray(passWord);
+            if (passWordBytes != null) {
+                System.arraycopy(passWordBytes, 0, data, 5, passWordBytes.length);
+            }
+
             data[15] = getByteSum(data);
+            return data;
         }
 
     }
diff --git a/app/src/main/java/com/dayu/recharge/card/RegionCard.java b/app/src/main/java/com/dayu/recharge/card/RegionCard.java
index 0db3780..8656269 100644
--- a/app/src/main/java/com/dayu/recharge/card/RegionCard.java
+++ b/app/src/main/java/com/dayu/recharge/card/RegionCard.java
@@ -34,11 +34,23 @@
         byte[] zero=data.get(0);
         regionCard.cardType=HexUtil.byteToHex(zero[0]);
 
+        byte[] regionByte = new byte[2];
+        System.arraycopy(zero, 1, regionByte, 0, regionByte.length);
+        regionCard.region = (short) HexUtil.get16to10LowHigh(HexUtil.bytesToHex(regionByte));
+
+
+        byte[] controllerCodelByte = new byte[2];
+        System.arraycopy(zero, 3, controllerCodelByte, 0, controllerCodelByte.length);
+        regionCard.controllerCodel = (short) HexUtil.get16to10LowHigh(HexUtil.bytesToHex(controllerCodelByte));
+
+
         return regionCard;
     }
 
 
-
+    /**
+     * 绗�1鎵囧尯0鍧� 瀛樺偍鐨勬暟鎹�
+     */
     public class Zero extends BaseCard {
         public byte[] toByte() {
             byte[] data = new byte[16];
diff --git a/app/src/main/java/com/dayu/recharge/dao/AppDatabase.java b/app/src/main/java/com/dayu/recharge/dao/AppDatabase.java
index e00689d..86ee82b 100644
--- a/app/src/main/java/com/dayu/recharge/dao/AppDatabase.java
+++ b/app/src/main/java/com/dayu/recharge/dao/AppDatabase.java
@@ -11,6 +11,7 @@
 import com.dayu.recharge.dbBean.IdentityBean;
 import com.dayu.recharge.dbBean.IpBean;
 import com.dayu.recharge.dbBean.PassWordBean;
+import com.dayu.recharge.dbBean.PassWordCardBean;
 import com.dayu.recharge.dbBean.PowerBean;
 import com.dayu.recharge.dbBean.RechargeBean;
 import com.dayu.recharge.dbBean.UserCardBean;
@@ -21,7 +22,7 @@
  * Date: 2023-11-05 16:23
  * Description:
  */
-@Database(entities = {CardData.class, DeviceNumber.class, IdentityBean.class, DomainBean.class, ElectricPriceBean.class, IpBean.class, AdminDataBean.class, PassWordBean.class, UserCardBean.class, RechargeBean.class, PowerBean.class}, version = 2, exportSchema = false)
+@Database(entities = {PassWordCardBean.class,CardData.class, DeviceNumber.class, IdentityBean.class, DomainBean.class, ElectricPriceBean.class, IpBean.class, AdminDataBean.class, PassWordBean.class, UserCardBean.class, RechargeBean.class, PowerBean.class}, version = 3, exportSchema = false)
 public abstract class AppDatabase extends RoomDatabase {
 
 
@@ -46,4 +47,6 @@
     public abstract DeviceNumberDao deviceNumberDao();
 
     public abstract CardDataDao cardDataDao();
+
+    public abstract PassWordCardDao passWordCardDao();
 }
diff --git a/app/src/main/java/com/dayu/recharge/dao/LoginPsDao.java b/app/src/main/java/com/dayu/recharge/dao/LoginPsDao.java
index aee6da5..ce398f0 100644
--- a/app/src/main/java/com/dayu/recharge/dao/LoginPsDao.java
+++ b/app/src/main/java/com/dayu/recharge/dao/LoginPsDao.java
@@ -13,7 +13,7 @@
  * Copyright (C), 2023,
  * Author: zuo
  * Date: 2023-11-06 20:27
- * Description:
+ * Description: 鐧诲綍瀵嗙爜淇濆瓨
  */
 @Dao
 public interface LoginPsDao {
diff --git a/app/src/main/java/com/dayu/recharge/dao/PassWordCardDao.java b/app/src/main/java/com/dayu/recharge/dao/PassWordCardDao.java
new file mode 100644
index 0000000..22256d2
--- /dev/null
+++ b/app/src/main/java/com/dayu/recharge/dao/PassWordCardDao.java
@@ -0,0 +1,31 @@
+package com.dayu.recharge.dao;
+
+import androidx.room.Dao;
+import androidx.room.Delete;
+import androidx.room.Insert;
+import androidx.room.OnConflictStrategy;
+import androidx.room.Query;
+import androidx.room.Update;
+
+import com.dayu.recharge.dbBean.PassWordCardBean;
+
+/**
+ * Copyright (C), 2023,
+ * Author: zuo
+ * Date: 2023-11-08 21:27
+ * Description: 瀵嗙爜鍗�
+ */
+@Dao
+public interface PassWordCardDao {
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    void insert(PassWordCardBean passWordBean);
+
+    @Update
+    void update(PassWordCardBean passWordBean);
+
+    @Delete
+    void delete(PassWordCardBean passWordBean);
+
+    @Query("select  * from PassWordCardBean limit 1")
+    PassWordCardBean findFirst();
+}
diff --git a/app/src/main/java/com/dayu/recharge/dao/PowerDao.java b/app/src/main/java/com/dayu/recharge/dao/PowerDao.java
index f90e2d6..c34007e 100644
--- a/app/src/main/java/com/dayu/recharge/dao/PowerDao.java
+++ b/app/src/main/java/com/dayu/recharge/dao/PowerDao.java
@@ -13,7 +13,7 @@
  * Copyright (C), 2023,
  * Author: zuo
  * Date: 2023-11-08 21:27
- * Description: 閰嶇疆姘存车鍔熺巼
+ * Description:
  */
 @Dao
 public interface PowerDao {
diff --git a/app/src/main/java/com/dayu/recharge/dbBean/PassWordBean.java b/app/src/main/java/com/dayu/recharge/dbBean/PassWordBean.java
index 75d8245..9e5c80b 100644
--- a/app/src/main/java/com/dayu/recharge/dbBean/PassWordBean.java
+++ b/app/src/main/java/com/dayu/recharge/dbBean/PassWordBean.java
@@ -2,6 +2,11 @@
 
 import androidx.room.Entity;
 import androidx.room.PrimaryKey;
+
+
+/**
+ * 鐢ㄦ埛鐧诲綍瀵嗙爜
+ */
 @Entity
 public class PassWordBean {
 
diff --git a/app/src/main/java/com/dayu/recharge/dbBean/PassWordCardBean.java b/app/src/main/java/com/dayu/recharge/dbBean/PassWordCardBean.java
new file mode 100644
index 0000000..22a9b0a
--- /dev/null
+++ b/app/src/main/java/com/dayu/recharge/dbBean/PassWordCardBean.java
@@ -0,0 +1,36 @@
+package com.dayu.recharge.dbBean;
+
+import androidx.room.Entity;
+import androidx.room.PrimaryKey;
+
+/**
+ * author: zuo
+ * Date: 2024-03-01
+ * Time: 17:56
+ * 澶囨敞锛氬瘑鐮佸崱瀵嗙爜
+ */
+@Entity
+public class PassWordCardBean {
+
+    @PrimaryKey(autoGenerate = true)
+    public long id;
+    private String passWord = "";
+
+    public long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public String getPassWord() {
+        return passWord;
+    }
+
+    public void setPassWord(String passWord) {
+        this.passWord = passWord;
+    }
+
+
+}
diff --git a/app/src/main/java/com/dayu/recharge/tools/HexUtil.java b/app/src/main/java/com/dayu/recharge/tools/HexUtil.java
index a00b073..79176a6 100644
--- a/app/src/main/java/com/dayu/recharge/tools/HexUtil.java
+++ b/app/src/main/java/com/dayu/recharge/tools/HexUtil.java
@@ -1,6 +1,8 @@
 package com.dayu.recharge.tools;
 
 import java.math.BigInteger;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
@@ -139,6 +141,38 @@
         return Integer.toHexString(Float.floatToIntBits(value));
     }
 
+
+    /**
+     * 灏嗗甫绗﹀彿鐨�32浣嶆诞鐐规暟瑁呮崲byte鏁扮粍
+     * 浣庝綅鍦ㄥ墠楂樹綅鍦ㄥ悗
+     *
+     * @param value
+     * @return
+     */
+    public static byte[] folatToByte(Float value) {
+        ByteBuffer buffer = ByteBuffer.allocate(4); // 4涓瓧鑺�
+        buffer.order(ByteOrder.LITTLE_ENDIAN);
+        buffer.putFloat(value);
+        byte[] byteArray = buffer.array();
+        return byteArray;
+    }
+
+    /**
+     * 灏哹yte鏁扮粍杞崲涓哄甫绗﹀彿鐨�32浣嶆诞鐐规暟
+     *
+     * 浣庝綅鍦ㄥ墠楂樹綅鍦ㄥ悗
+     *
+     * @param value
+     * @return
+     */
+    public static Float bytesToFloat(byte[] value) {
+        ByteBuffer bufferLittleEndian = ByteBuffer.wrap(value);
+        bufferLittleEndian.order(ByteOrder.LITTLE_ENDIAN);
+        return bufferLittleEndian.getFloat();
+
+    }
+
+
     /**
      * 鍗佽繘鍒惰浆16杩涘埗
      *
@@ -167,6 +201,7 @@
 
     /**
      * short10杩涘埗杞�16杩涘埗 浣庝綅鍦ㄥ墠楂樹綅鍦ㄥ悗
+     *
      * @param number
      * @return
      */
@@ -186,9 +221,9 @@
     }
 
 
-
     /**
      * short10杩涘埗杞�16杩涘埗 浣庝綅鍦ㄥ墠楂樹綅鍦ㄥ悗
+     *
      * @param number
      * @return
      */
@@ -202,20 +237,20 @@
     }
 
 
-
     /**
      * short16杩涘埗杞�10杩涘埗 浣庝綅鍦ㄥ墠楂樹綅鍦ㄥ悗
+     *
      * @param hex
      * @return
      */
-    public static short  getShort10To16LowHigh(String hex){
+    public static short getShort10To16LowHigh(String hex) {
         try {
             String str = "";
             str = spaceHex(hex);
             str = HighLowHex(str);
             return (short) Integer.parseInt(str, 16);
         } catch (NumberFormatException e) {
-           e.printStackTrace();
+            e.printStackTrace();
         }
         return 0;
     }
diff --git a/app/src/main/res/layout/activity_password_card.xml b/app/src/main/res/layout/activity_password_card.xml
new file mode 100644
index 0000000..dc0f7e2
--- /dev/null
+++ b/app/src/main/res/layout/activity_password_card.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <com.dayu.recharge.view.TitleBar
+        android:id="@+id/titleBar"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dimen_title_height"
+        android:background="@drawable/title_bar_bg"
+        app:centerText="閰嶇疆鍗″瘑鐮�"
+        app:leftImage="@mipmap/icon_back" />
+
+    <LinearLayout
+        android:id="@+id/village_ll"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/titleBar"
+        android:layout_margin="20dp"
+        android:orientation="horizontal">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="褰撳墠瀵嗙爜"
+            android:textSize="@dimen/text_size" />
+
+        <TextView
+            android:id="@+id/village_oldNumber"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:textSize="@dimen/text_size" />
+
+    </LinearLayout>
+
+
+    <EditText
+        android:id="@+id/village_newNum"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/village_ll"
+        android:layout_alignParentStart="true"
+        android:layout_marginStart="20dp"
+        android:layout_marginTop="20dp"
+        android:layout_marginEnd="20dp"
+        android:layout_marginBottom="20dp"
+        android:hint="璇疯緭鍏ユ柊璁剧疆鐨�12浣�16杩涘埗鍗″瘑鐮�"
+        android:inputType="number|numberDecimal"
+        android:digits="0123456789." />
+
+    <TextView
+        android:id="@+id/village_ok"
+        android:layout_width="match_parent"
+        android:layout_height="50dp"
+        android:layout_alignParentBottom="true"
+        android:background="@color/title_bg"
+        android:gravity="center"
+        android:text="纭�  瀹�"
+        android:textSize="@dimen/text_size" />
+</RelativeLayout>
\ No newline at end of file

--
Gitblit v1.8.0