From 6ecba06488059ca4bdc179f18648f161c0e7e43f Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期四, 09 一月 2020 16:47:18 +0800
Subject: [PATCH] Merge branch 'master' of https://gitee.com/endian11/DriveJudge

---
 app/src/main/java/safeluck/drive/evaluation/Constant.java                          |    3 
 app/src/main/assets/students_file.json                                             |    7 
 app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjRepository.java |   16 +
 app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj.java           |    2 
 app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java            |   22 -
 app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailProjDao.java          |    2 
 app/src/main/java/safeluck/drive/evaluation/fragment/RTKConfigFragment.java        |   37 +++
 app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigWork.java            |   50 +++++
 app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfig.java                |   38 ++++
 app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigViewModel.java       |   29 +++
 app/src/main/java/safeluck/drive/evaluation/app.java                               |  124 ++++++++++---
 app/src/main/java/safeluck/drive/evaluation/MainActivity.java                      |   19 ++
 app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigDao.java             |   24 ++
 app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjWorker.java     |    1 
 app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java               |   26 +-
 app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKWorkRepository.java        |   64 +++++++
 app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java     |   31 ++
 17 files changed, 421 insertions(+), 74 deletions(-)

diff --git a/app/src/main/assets/students_file.json b/app/src/main/assets/students_file.json
index 8423b11..d04d564 100644
--- a/app/src/main/assets/students_file.json
+++ b/app/src/main/assets/students_file.json
@@ -1,10 +1,5 @@
 [
-  {
-    "stu_id":1000,
-    "ID": "410923198910162546",
-    "name": "寮犱笁",
-    "sex":1
-  },
+
   {
     "stu_id":1001,
     "ID": "410923198910162545",
diff --git a/app/src/main/java/safeluck/drive/evaluation/Constant.java b/app/src/main/java/safeluck/drive/evaluation/Constant.java
index 50db6b8..dbd4d74 100644
--- a/app/src/main/java/safeluck/drive/evaluation/Constant.java
+++ b/app/src/main/java/safeluck/drive/evaluation/Constant.java
@@ -47,4 +47,7 @@
     public static final String RTK_CONFIG_JSON = "rtk_config.json";
     public static final String BIND_DRIVING_TOPIC = "driving";
     public static final long TEST_STU_ID = 1001;
+
+    //I绫昏瘎鍒よ〃
+    public static final int SUBJECT_I = 1;
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java b/app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java
index 5c0fd1f..d4d21a4 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java
@@ -24,6 +24,9 @@
 import safeluck.drive.evaluation.DB.failitems.FailProjDao;
 import safeluck.drive.evaluation.DB.failitems.FailedProj;
 import safeluck.drive.evaluation.DB.failitems.FailedProjWorker;
+import safeluck.drive.evaluation.DB.rtktb.RTKConfig;
+import safeluck.drive.evaluation.DB.rtktb.RTKConfigDao;
+import safeluck.drive.evaluation.DB.rtktb.RTKConfigWork;
 
 
 /**
@@ -32,7 +35,7 @@
  * 閭锛�632393724@qq.com
  * All Rights Saved! Chongqing AnYun Tech co. LTD
  */
-@Database(entities = {Student.class, CriteriaForI.class, FailedProj.class, CriteriaForII.class},version = 2,exportSchema = false)
+@Database(entities = {Student.class, CriteriaForI.class, FailedProj.class, CriteriaForII.class, RTKConfig.class},version = 1,exportSchema = false)
 public abstract class WorkRoomDataBase extends RoomDatabase {
     private static final String TAG = "WorkRoomDataBase";
     public abstract StudentDao getstudentDao();
@@ -47,13 +50,13 @@
     private static final int NUMBER_OF_THREADS = 4;
 
     public static final ExecutorService dataBaseWriteExecutor = Executors.newFixedThreadPool(NUMBER_OF_THREADS);
-    static Migration migration = new Migration(1,2) {
-        @Override
-        public void migrate(@NonNull SupportSQLiteDatabase database) {
-            database.execSQL("alter table student_table ADD  COLUMN begin_time INTEGER NOT NULL DEFAULT 0");
-        }
-    };
-private static final Migration[] ALL_MIGRATIONS = new Migration[]{migration};
+//    static Migration migration = new Migration(1,2) {
+//        @Override
+//        public void migrate(@NonNull SupportSQLiteDatabase database) {
+//            database.execSQL("alter table student_table ADD  COLUMN begin_time INTEGER NOT NULL DEFAULT 0");
+//        }
+//    };
+//private static final Migration[] ALL_MIGRATIONS = new Migration[]{migration};
 
 
      public static WorkRoomDataBase getWorkRoomDataBase(final Context mContext){
@@ -63,20 +66,22 @@
                 if (workRoomDataBase == null){
                     Log.i(TAG, "getWorkRoomDataBase==null ");
                     workRoomDataBase = Room.databaseBuilder(mContext.getApplicationContext(),WorkRoomDataBase.class,"work_database")
-                            .addMigrations(ALL_MIGRATIONS)
+//                            .addMigrations(ALL_MIGRATIONS)
                             .addCallback(new Callback() {
                                 @Override
                                 public void onCreate(@NonNull SupportSQLiteDatabase db) {
                                     super.onCreate(db);
                                     OneTimeWorkRequest oneTimeWorkRequest = OneTimeWorkRequest.from(SeedDatabaseWorker.class);
                                     OneTimeWorkRequest oneTimeWorkRequest1 = OneTimeWorkRequest.from(CriteriaForIWorker.class);
-                                    OneTimeWorkRequest oneTimeWorkRequest2 = OneTimeWorkRequest.from(FailedProjWorker.class);
                                     OneTimeWorkRequest oneTimeWorkRequest3 = OneTimeWorkRequest.from(CriteriaForIIWorker.class);
+                                    OneTimeWorkRequest oneTimeWorkRequest2 = OneTimeWorkRequest.from(FailedProjWorker.class);
+                                    OneTimeWorkRequest RTKConfigWorkRequest = OneTimeWorkRequest.from(RTKConfigWork.class);
                                     Log.i(TAG, "onCreate: 鍒涘缓鏁版嵁搴撳悗寤虹珛鏁版嵁琛ㄦ彃鍏ユ暟鎹�");
                                     WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest);
                                     WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest1);
                                     WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest2);
                                     WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest3);
+                                    WorkManager.getInstance(mContext).enqueue(RTKConfigWorkRequest);
                                 }
 
                                 @Override
@@ -93,4 +98,5 @@
     }
 
 
+    public abstract RTKConfigDao getRTKConfigDao();
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailProjDao.java b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailProjDao.java
index f9ea361..0e641f0 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailProjDao.java
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailProjDao.java
@@ -43,4 +43,6 @@
     @Query("SELECT COUNT(*)  from fail_projects where subject=:subject_id")
     LiveData<Integer> getSubject(int subject_id);
 
+    @Query("delete from fail_projects")
+    void deleteAll();
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj.java b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj.java
index 362c62d..0794aee 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj.java
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj.java
@@ -20,7 +20,7 @@
  */
 @Entity(tableName = "fail_projects",foreignKeys = {@ForeignKey(entity = CriteriaForI.class,
 parentColumns = "item_id",childColumns = "emp_id",onDelete = CASCADE),@ForeignKey(entity = CriteriaForII.class,
-        parentColumns = "item_id",childColumns = "emp_id")},indices = @Index(value = {"emp_id"}))
+        parentColumns = "item_id",childColumns = "emp_id",onDelete = CASCADE)},indices = @Index(value = {"emp_id"}))
 public class FailedProj {
     @PrimaryKey(autoGenerate = true)
     private int id;
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjRepository.java b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjRepository.java
index ddfa6d1..838dac3 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjRepository.java
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjRepository.java
@@ -25,7 +25,7 @@
     }
 
 
-    public void insert(final FailedProj proj){
+    public void insert(final FailedProj proj) {
         WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() {
             @Override
             public void run() {
@@ -36,7 +36,20 @@
     }
 
     /**
+     * 鍒犻櫎fail_projects琛ㄤ腑鎵�鏈夋暟鎹�
+     */
+    public void deleteAll() {
+        WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() {
+            @Override
+            public void run() {
+                failProjDao.deleteAll();
+            }
+        });
+    }
+
+    /**
      * 鑾峰緱绉戠洰浜� I绫昏�冨満澶辫触椤圭洰鎵e垎椤�
+     *
      * @param stu_id
      * @return
      */
@@ -46,6 +59,7 @@
 
     /**
      * 鑾峰緱绉戠洰浜� II绫昏�冨満澶辫触椤圭洰鎵e垎椤�
+     *
      * @param stu_id
      * @return
      */
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjWorker.java b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjWorker.java
index a501b09..b304389 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjWorker.java
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjWorker.java
@@ -28,7 +28,6 @@
     @NonNull
     @Override
     public Result doWork() {
-        MyLog.i(TAG,"棰勭疆涓�鏉″け璐ラ」鐩�");
 //        WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getFailProjDao().insert(new FailedProj(1,5));  //鍔犱笂杩欎竴琛屼細鎶ラ敊锛屼笉鐭ラ亾涓轰粈涔堬紝鍖卥ey constraint fail宕╂簝
         return Result.success();
     }
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/RTKConfig.java b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfig.java
similarity index 71%
rename from app/src/main/java/safeluck/drive/evaluation/bean/RTKConfig.java
rename to app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfig.java
index 438bdcf..7af5cb3 100644
--- a/app/src/main/java/safeluck/drive/evaluation/bean/RTKConfig.java
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfig.java
@@ -1,4 +1,7 @@
-package safeluck.drive.evaluation.bean;
+package safeluck.drive.evaluation.DB.rtktb;
+
+import androidx.room.Entity;
+import androidx.room.PrimaryKey;
 
 /**
  * MyApplication2
@@ -6,6 +9,7 @@
  * 閭锛�632393724@qq.com
  * All Rights Saved! Chongqing AnYun Tech co. LTD
  */
+@Entity(tableName = "rtkconfig_table")
 public class RTKConfig {
 
     /**
@@ -23,6 +27,7 @@
      */
 
     private String ip;
+
     private int port;
     private int province;
     private int city;
@@ -32,7 +37,19 @@
     private String phone;
     private String password;
     private int registered;
+    @PrimaryKey
+    private int _id;
+
+    public int get_id() {
+        return _id;
+    }
+
+    public void set_id(int _id) {
+        this._id = _id;
+    }
+
     private int interval;
+
 
     public String getIp() {
         return ip;
@@ -121,4 +138,23 @@
     public void setInterval(int interval) {
         this.interval = interval;
     }
+
+    @Override
+    public String toString() {
+        return "RTKConfig{" +
+                "ip='" + ip + '\'' +
+                ", port=" + port +
+                ", province=" + province +
+                ", city=" + city +
+                ", model='" + model + '\'' +
+                ", sn='" + sn + '\'' +
+                ", imei='" + imei + '\'' +
+                ", phone='" + phone + '\'' +
+                ", password='" + password + '\'' +
+                ", registered=" + registered +
+                ", interval=" + interval +
+                '}';
+    }
+
+
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigDao.java b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigDao.java
new file mode 100644
index 0000000..85d9de4
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigDao.java
@@ -0,0 +1,24 @@
+package safeluck.drive.evaluation.DB.rtktb;
+
+import androidx.lifecycle.LiveData;
+import androidx.room.Dao;
+import androidx.room.Insert;
+import androidx.room.OnConflictStrategy;
+import androidx.room.Query;
+import androidx.room.Update;
+
+@Dao
+public interface RTKConfigDao {
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
+    void insert(RTKConfig rtkConfig);
+
+
+    @Query("SELECT * from rtkconfig_table")
+    LiveData<RTKConfig> getRTKConfig();
+
+    @Update
+    void update(RTKConfig rtkConfig);
+
+    @Query("SELECT * from rtkconfig_table")
+    RTKConfig getRTKConfigNoLive();
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigViewModel.java b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigViewModel.java
new file mode 100644
index 0000000..fa63110
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigViewModel.java
@@ -0,0 +1,29 @@
+package safeluck.drive.evaluation.DB.rtktb;
+
+import android.app.Application;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.AndroidViewModel;
+import androidx.lifecycle.LiveData;
+
+
+public class RTKConfigViewModel extends AndroidViewModel {
+    RTKWorkRepository rtkWorkRepository;
+    public RTKConfigViewModel(@NonNull Application application) {
+        super(application);
+        rtkWorkRepository = new RTKWorkRepository(application);
+    }
+
+    public void insertRTKConfig(final RTKConfig rtkConfig){
+        rtkWorkRepository.insertRTKConfig(rtkConfig);
+    }
+
+    public LiveData<RTKConfig> getRTKConfig(){
+        return rtkWorkRepository.getRTKConfig();
+    }
+
+
+    public void update(final RTKConfig rtkConfig){
+        rtkWorkRepository.update(rtkConfig);
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigWork.java b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigWork.java
new file mode 100644
index 0000000..9928694
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigWork.java
@@ -0,0 +1,50 @@
+package safeluck.drive.evaluation.DB.rtktb;
+
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+import androidx.work.Worker;
+import androidx.work.WorkerParameters;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.google.gson.stream.JsonReader;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.lang.reflect.Type;
+import java.util.List;
+
+import safeluck.drive.evaluation.Constant;
+import safeluck.drive.evaluation.DB.Student;
+import safeluck.drive.evaluation.DB.WorkRoomDataBase;
+import safeluck.drive.evaluation.util.FileUtil;
+
+public class RTKConfigWork extends Worker {
+    private Context context;
+    public RTKConfigWork(@NonNull Context context, @NonNull WorkerParameters workerParams) {
+        super(context, workerParams);
+        this.context = context;
+    }
+
+    @NonNull
+    @Override
+    public Result doWork() {
+        try {
+            InputStream inputStream = getApplicationContext().getAssets().open(Constant.RTK_CONFIG_JSON);
+            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
+            JsonReader jsonReader = new JsonReader(inputStreamReader);
+
+            Gson gson = new Gson();
+            Type type = new TypeToken<RTKConfig>(){}.getType();
+
+            RTKConfig mstus=gson.fromJson(jsonReader,   type);
+            WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getRTKConfigDao().insert(mstus);
+        } catch (IOException e) {
+            e.printStackTrace();
+            return Result.failure();
+        }
+        return Result.success();
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKWorkRepository.java b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKWorkRepository.java
new file mode 100644
index 0000000..4f67f92
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKWorkRepository.java
@@ -0,0 +1,64 @@
+package safeluck.drive.evaluation.DB.rtktb;
+
+import android.app.Application;
+
+import androidx.lifecycle.LiveData;
+
+import com.anyun.exam.lib.MyLog;
+
+import safeluck.drive.evaluation.DB.WorkRoomDataBase;
+
+public class RTKWorkRepository {
+    private static final String TAG = "RTKWorkRepository";
+    private RTKConfigDao rtkConfigDao;
+    private LiveData<RTKConfig> rtkConfig;
+    private RTKConfig rtkConfig1;
+
+    public RTKWorkRepository(Application application) {
+        rtkConfigDao = WorkRoomDataBase.getWorkRoomDataBase(application).getRTKConfigDao();
+        rtkConfig = rtkConfigDao.getRTKConfig();
+        WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() {
+            @Override
+            public void run() {
+                MyLog.d(TAG,"鑾峰彇RTK閰嶇疆淇℃伅琛�");
+                rtkConfig1 = rtkConfigDao.getRTKConfigNoLive();
+            }
+        });
+
+    }
+
+    public void insertRTKConfig(final RTKConfig rtkConfig){
+        WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() {
+            @Override
+            public void run() {
+                rtkConfigDao.insert(rtkConfig);
+            }
+        });
+    }
+
+    public LiveData<RTKConfig> getRTKConfig(){
+        return rtkConfig;
+    }
+
+    public void update(final RTKConfig rtkConfig){
+        WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() {
+            @Override
+            public void run() {
+                rtkConfigDao.update(rtkConfig);
+            }
+        });
+    }
+
+    public RTKConfig getRTKConfigNoLive() {
+        if (rtkConfig1 == null){
+            WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() {
+                @Override
+                public void run() {
+                    MyLog.d(TAG,"鍐嶆鑾峰彇RTK閰嶇疆淇℃伅琛�");
+                    rtkConfig1 = rtkConfigDao.getRTKConfigNoLive();
+                }
+            });
+        }
+        return rtkConfig1;
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java
index 18dac71..98a0b6e 100644
--- a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java
+++ b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java
@@ -17,8 +17,13 @@
 import androidx.lifecycle.ViewModelProviders;
 
 import me.yokeyword.fragmentation.SupportActivity;
+import safeluck.drive.evaluation.DB.Student;
+import safeluck.drive.evaluation.DB.WokViewModel;
 import safeluck.drive.evaluation.fragment.HomeFragment;
 import com.anyun.exam.lib.MyLog;
+
+import java.util.List;
+
 import safeluck.drive.evaluation.util.PermissionManager;
 import safeluck.drive.evaluation.viewmodels.MainViewModel;
 
@@ -37,6 +42,20 @@
 
         setContentView(R.layout.activity_main);
 
+        WokViewModel wokViewModel = ViewModelProviders.of(this).get(WokViewModel.class);
+        wokViewModel.getStudents().observe(this, new Observer<List<Student>>() {
+            @Override
+            public void onChanged(List<Student> students) {
+                for (Student student:
+                        students) {
+                    Log.i(TAG, "onChanged: "+student.toString());
+                }
+            }
+        });
+
+
+
+
         mPermissionsManager = new PermissionManager(this) {
             @Override
             public void authorized(int requestCode) {
diff --git a/app/src/main/java/safeluck/drive/evaluation/app.java b/app/src/main/java/safeluck/drive/evaluation/app.java
index 87d6bb6..8b384a0 100644
--- a/app/src/main/java/safeluck/drive/evaluation/app.java
+++ b/app/src/main/java/safeluck/drive/evaluation/app.java
@@ -1,7 +1,6 @@
 package safeluck.drive.evaluation;
 
 import android.app.Application;
-import android.util.Log;
 import android.widget.Toast;
 
 
@@ -12,6 +11,7 @@
 
 import me.yokeyword.fragmentation.Fragmentation;
 import me.yokeyword.fragmentation.helper.ExceptionHandler;
+
 import com.anyun.exam.lib.MyLog;
 import com.anyun.exam.lib.crash.CrashHandler;
 import com.facebook.stetho.Stetho;
@@ -21,11 +21,12 @@
 import org.json.JSONException;
 import org.json.JSONObject;
 
+import java.util.Random;
+
 import safeluck.drive.evaluation.DB.failitems.FailedProj;
 import safeluck.drive.evaluation.DB.failitems.FailedProjRepository;
-import safeluck.drive.evaluation.bean.RTKConfig;
-import safeluck.drive.evaluation.cEventCenter.CEventCenter;
-import safeluck.drive.evaluation.util.FileUtil;
+import safeluck.drive.evaluation.DB.rtktb.RTKConfig;
+import safeluck.drive.evaluation.DB.rtktb.RTKWorkRepository;
 import safeluck.drive.evaluation.util.SystemUtil;
 
 /**
@@ -39,11 +40,15 @@
     private static final String TAG = "app";
     private Gson gson;
     RTKConfig rtkConfig;
+    FailedProjRepository failedProjRepository;//澶辫触椤圭洰琛ㄦ暟鎹簱
+    RTKWorkRepository rtkWorkRepository;//淇濆瓨RTK閰嶇疆琛�
+    Random random = new Random();
+
     @Override
     public void onCreate() {
         super.onCreate();
         //鍒濆鍖朏ragment 寤鸿鍦ˋpplication onCreate閲岄潰鍒濆鍖�
-        if (SystemUtil.compareProcessName(this)){
+        if (SystemUtil.compareProcessName(this)) {
             Fragmentation.builder().stackViewMode(Fragmentation.BUBBLE).debug(false)
                     .handleException(new ExceptionHandler() {
                         @Override
@@ -53,25 +58,29 @@
                     })
                     .install();
 
-            CrashHandler crashHandler =CrashHandler.getInstance();
+            CrashHandler crashHandler = CrashHandler.getInstance();
             crashHandler.init(getApplicationContext());
             AYSdk.getInstance().init(getApplicationContext());
             AYSdk.getInstance().registListener(this);
-            Log.i(TAG, "onCreate: ");
             MyLog.createIfNotExist();
             Stetho.initializeWithDefaults(this);
 
+
             //RTK閰嶇疆淇℃伅
-            rtkConfig = new RTKConfig();
-            rtkConfig.setCity(12);
-            rtkConfig.setImei("460123874561");
-            rtkConfig.setInterval(1);
-            rtkConfig.setIp("47.93.80.84");
-            rtkConfig.setModel("123");
-            rtkConfig.setPhone("2019101500000001");
-            rtkConfig.setPort(12125);
-            rtkConfig.setProvince(23);
-            rtkConfig.setSn("2019101500000001");
+//            rtkConfig = new RTKConfig();
+//            rtkConfig.setCity(12);
+//            rtkConfig.setImei("460123874561");
+//            rtkConfig.setInterval(1);
+//            rtkConfig.setIp("47.93.80.84");
+//            rtkConfig.setModel("123");
+//            rtkConfig.setPhone("2019101500000001");
+//            rtkConfig.setPort(12125);
+//            rtkConfig.setProvince(23);
+//            rtkConfig.setSn("2019101500000001");
+            //鏁版嵁搴撴搷浣�
+            MyLog.i(TAG, "onCreate111");
+            failedProjRepository = new FailedProjRepository(this);
+            rtkWorkRepository = new RTKWorkRepository(this);
         }
 
     }
@@ -90,40 +99,99 @@
     }
 
     @Override
-    public void callBackMsg(int cmd, String json) {
-        MyLog.d(TAG,  String.format("鏀跺埌鍛戒护[%d],Json鍐呭涓�%s",cmd,json));
-        switch (cmd){
+    public void callBackMsg(final int cmd, String json) {
+        MyLog.d(TAG, String.format("鏀跺埌鍛戒护[%d],Json鍐呭涓�%s", cmd, json));
+        switch (cmd) {
             case Constant.NDK_START:
                 Toast.makeText(this, "NDK start", Toast.LENGTH_SHORT).show();
                 break;
             case Constant.RTK_PLATFORM_REGISTER_STATUS:
+
+                failedProjRepository.insert(new FailedProj(Constant.SUBJECT_I, cmd + random.nextInt(26), Constant.TEST_STU_ID));
+                rtkConfig = rtkWorkRepository.getRTKConfigNoLive();
+
                 try {
-                    JSONObject jsonObject = new JSONObject();
-                    int reg_code = jsonObject.getInt("register_code");
+                    JSONObject jsonObject = new JSONObject(json);
                     String rtkLoginPwd = jsonObject.getString("password");
+                    int reg_code = jsonObject.getInt("register_code");
                     rtkConfig.setPassword(rtkLoginPwd);
                     rtkConfig.setRegistered(reg_code);
                 } catch (JSONException e) {
                     e.printStackTrace();
                 }
+                rtkWorkRepository.insertRTKConfig(rtkConfig);
                 break;
             case Constant.RTK_PLATFORM_REGISTER_RESULT:
+
+                failedProjRepository.insert(new FailedProj(Constant.SUBJECT_I, cmd + random.nextInt(26), Constant.TEST_STU_ID));
+
+                try {
+                    JSONObject jsonObject = new JSONObject(json);
+                    int rtklogincode = jsonObject.getInt("login_code");
+                    rtkConfig.setRegistered(rtklogincode);
+                } catch (JSONException e) {
+                    e.printStackTrace();
+                }
+
+
                 break;
             case Constant.FETCH_RTK_PLATFORM_INFO:
-                if (gson == null){
+                rtkConfig = rtkWorkRepository.getRTKConfigNoLive();
+                if (gson == null) {
                     gson = new Gson();
                 }
-                MyLog.i(TAG, "RTK閰嶇疆淇℃伅锛�"+gson.toJson(rtkConfig));
-                AYSdk.getInstance().sendCmd(Constant.PUSH_RTK_PLATFORM_INFO,gson.toJson(rtkConfig));
+                if (rtkConfig==null){
+
+                    rtkConfig = rtkWorkRepository.getRTKConfigNoLive();
+                }
+                if (rtkConfig != null){
+                    String rtkjson = gson.toJson(rtkConfig);
+                    MyLog.i(TAG, "RTK閰嶇疆淇℃伅锛�" + rtkjson);
+
+                    //鍘婚櫎id瀛楁
+                    JSONObject jsonObject = null;
+                    try {
+                        jsonObject = new JSONObject(rtkjson);
+                    } catch (JSONException e) {
+                        e.printStackTrace();
+                    }
+                    jsonObject.remove("_id");
+                    rtkjson = null;
+                    rtkjson = jsonObject.toString();
+                    MyLog.i(TAG, "RTK閰嶇疆淇℃伅锛�" + rtkjson);
+                    AYSdk.getInstance().sendCmd(Constant.PUSH_RTK_PLATFORM_INFO, rtkjson);
+                }
+
                 break;
             case Constant.JUDGE_INFO:
-                FailedProjRepository failedProjRepository = new FailedProjRepository(this);
-                failedProjRepository.insert(new FailedProj(1,cmd,Constant.TEST_STU_ID));
+
+
+                failedProjRepository.insert(new FailedProj(Constant.SUBJECT_I, cmd, Constant.TEST_STU_ID));
+
+                break;
+            case Constant.EXAM_STATUS_REPLY:
+                MyLog.d(TAG, "鑰冭瘯寮�濮嬶紝闇�瑕佸垹闄や笂涓�涓�冭瘯瀛﹀憳鐨勬暟鎹簱澶辫触椤圭洰琛�");
+                failedProjRepository.deleteAll();
+                break;
+            case Constant.RTK_PLATFORM_CONNECT_STATUS:
+                rtkConfig = rtkWorkRepository.getRTKConfigNoLive();
+
+                try {
+                    JSONObject jsonObject3 = new JSONObject(json);
+                    String ip = jsonObject3.getString("ip");
+                    int port = jsonObject3.getInt("port");
+                    int reg_code = jsonObject3.getInt("connected");
+                    rtkConfig.setRegistered(reg_code);
+                    rtkConfig.setIp(ip);
+                    rtkConfig.setPort(port);
+                } catch (JSONException e) {
+                    e.printStackTrace();
+                }
+                rtkWorkRepository.insertRTKConfig(rtkConfig);
                 break;
         }
 
     }
-
 
 
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
index 098acc8..31c1dcb 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
@@ -13,6 +13,8 @@
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProviders;
 
 import com.anyun.exam.lib.AYSdk;
 import com.google.gson.Gson;
@@ -28,6 +30,8 @@
 
 import me.yokeyword.fragmentation.SupportFragment;
 import safeluck.drive.evaluation.Constant;
+import safeluck.drive.evaluation.DB.failitems.FailedProjViewModel;
+import safeluck.drive.evaluation.DB.failitems.FailedProj_select;
 import safeluck.drive.evaluation.R;
 import safeluck.drive.evaluation.adapter.ScoreAdapter;
 import safeluck.drive.evaluation.bean.ScoreBean;
@@ -46,6 +50,8 @@
     private Button btn_start_exam;
     private ScoreAdapter mScoreAdapter;
 
+    private int item_id;//鎵e垎鍒嗘暟鎬诲拰
+
     private List<ScoreBean> mArrayList = new ArrayList<>();
 
     public static SupportFragment newInstance() {
@@ -57,6 +63,24 @@
     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
         View view = inflater.inflate(R.layout.layout_train_fragment,container,false);
         initView(view);
+
+        FailedProjViewModel failedProjViewModel = ViewModelProviders.of(this).get(FailedProjViewModel.class);
+        failedProjViewModel.getFailedProjectsForI(Constant.TEST_STU_ID).observe(this, new Observer<List<FailedProj_select>>() {
+            @Override
+            public void onChanged(List<FailedProj_select> failedProj_selects) {
+                item_id = 0;
+                mArrayList.clear();
+                for (FailedProj_select f :
+                        failedProj_selects) {
+                    item_id += f.getScore_deducting();
+                    Log.i(TAG, "onChanged: "+f.toString());
+                    mArrayList.add(new ScoreBean(f.getScore_deducting(),f.getItem_content(),f.getDeducting_reason()));
+                    mScoreAdapter.addDatas(mArrayList);
+                }
+            }
+        });
+
+
         return view;
     }
 
@@ -68,13 +92,6 @@
         btn_start_exam.setOnClickListener(this);
         view.findViewById(R.id.tv_stop).setOnClickListener(this);
         mListView.addHeaderView(LayoutInflater.from(_mActivity).inflate(R.layout.layout_score_item,null));
-        mArrayList.add(new ScoreBean(12,"鐩磋杞集","鍚庤疆鑳庡帇绾�"));
-        mArrayList.add(new ScoreBean(100,"鍊掕溅鍏ュ簱","鏈郴瀹夊叏甯�"));
-        mArrayList.add(new ScoreBean(10,"鍧¢亾璧锋","涓�娆$唲鐏�"));
-        mArrayList.add(new ScoreBean(0,"",""));
-        mArrayList.add(new ScoreBean(0,"",""));
-
-        mScoreAdapter.addDatas(mArrayList);
 
     }
 
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/RTKConfigFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/RTKConfigFragment.java
index 2988784..e6506df 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/RTKConfigFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/RTKConfigFragment.java
@@ -3,6 +3,10 @@
 import android.os.Bundle;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProviders;
+
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -11,8 +15,9 @@
 import com.google.gson.Gson;
 
 import me.yokeyword.fragmentation.SupportFragment;
+import safeluck.drive.evaluation.DB.rtktb.RTKConfigViewModel;
 import safeluck.drive.evaluation.R;
-import safeluck.drive.evaluation.bean.RTKConfig;
+import safeluck.drive.evaluation.DB.rtktb.RTKConfig;
 
 /**FTP閰嶇疆UI
  * MyApplication2
@@ -25,6 +30,8 @@
     private static final String TAG = "RTKConfigFragment";
 
     private EditText et_ip,et_port,et_city_id,et_city_province,et_phone;
+    private RTKConfigViewModel rtkConfigViewModel;
+    private RTKConfig mRtkConfig;
 
     public static SupportFragment newInstance(){
         return new RTKConfigFragment();
@@ -37,19 +44,43 @@
 
         View view = inflater.inflate(R.layout.layout_rtk_setting,container,false);
         initView(view);
+        rtkConfigViewModel= ViewModelProviders.of(this).get(RTKConfigViewModel.class);
+        rtkConfigViewModel.getRTKConfig().observe(this, new Observer<RTKConfig>() {
+            @Override
+            public void onChanged(RTKConfig rtkConfig) {
+                Log.i(TAG, "RTKConfig Changed: "+rtkConfig.toString());
+                mRtkConfig = rtkConfig;
+                et_ip.setText(rtkConfig.getIp());
+                et_city_id.setText(String.valueOf(rtkConfig.getCity()));
+                et_city_province.setText(String.valueOf(rtkConfig.getProvince()));
+                et_port.setText(String.valueOf(rtkConfig.getPort()));
+                et_phone.setText(rtkConfig.getPhone());
+            }
+        });
         return view;
     }
 
     private void initView(View view) {
         view.findViewById(R.id.btn_save_rtk).setOnClickListener(this);
+        et_ip = view.findViewById(R.id.rtk_addr_ip);
+        et_city_id = view.findViewById(R.id.et_city_id);
+        et_city_province = view.findViewById(R.id.et_provice_id);
+        et_phone = view.findViewById(R.id.et_phone);
+        et_port = view.findViewById(R.id.rtk_addr_port);
     }
 
     @Override
     public void onClick(View v) {
         switch (v.getId()){
             case R.id.btn_save_rtk:
-                Gson gson = new Gson();
-                String rtkConfigjson = gson.toJson(RTKConfig.class);
+                if (mRtkConfig != null){
+                    mRtkConfig.setPort(Integer.parseInt(et_port.getText().toString().trim()));
+                    mRtkConfig.setCity(Integer.parseInt(et_city_id.getText().toString().trim()));
+                    mRtkConfig.setProvince(Integer.parseInt(et_city_province.getText().toString().trim()));
+                    mRtkConfig.setIp(et_ip.getText().toString().trim());
+                    mRtkConfig.setPhone(et_phone.getText().toString().trim());
+                    rtkConfigViewModel.insertRTKConfig(mRtkConfig);
+                }
                 break;
         }
     }
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
index 663b0bc..4733a3a 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
@@ -45,7 +45,7 @@
     private Button btn_train;
     private ScoreAdapter mScoreAdapter;
 
-    private int item_id;
+    private int item_id;//鎵e垎鍒嗘暟鎬诲拰
 
     private List<ScoreBean> mArrayList = new ArrayList<>();
 
@@ -78,16 +78,6 @@
         View view = inflater.inflate(R.layout.layout_train_fragment,container,false);
         initView(view);
 
-        WokViewModel wokViewModel = ViewModelProviders.of(this).get(WokViewModel.class);
-        wokViewModel.getStudents().observe(this, new Observer<List<Student>>() {
-            @Override
-            public void onChanged(List<Student> students) {
-                for (Student student:
-                     students) {
-                    Log.i(TAG, "onChanged: "+student.toString());
-                }
-            }
-        });
 
 
         FailedProjViewModel failedProjViewModel =ViewModelProviders.of(this).get(FailedProjViewModel.class);
@@ -95,11 +85,13 @@
             @Override
             public void onChanged(List<FailedProj_select> failedProj_selects) {
                 item_id = 0;
+                mArrayList.clear();
                 for (FailedProj_select f :
                         failedProj_selects) {
                     item_id += f.getScore_deducting();
                     Log.i(TAG, "onChanged: "+f.toString());
-                    Toast.makeText(getActivity().getApplicationContext(),"寰楀垎"+item_id,Toast.LENGTH_SHORT).show();
+                    mArrayList.add(new ScoreBean(f.getScore_deducting(),f.getItem_content(),f.getDeducting_reason()));
+                    mScoreAdapter.addDatas(mArrayList);
                 }
             }
         });
@@ -109,6 +101,7 @@
     private void initView(View view) {
 
         mListView = view.findViewById(R.id.lv);
+        mListView.setFocusable(false);//listview涓嶈幏鍙栫劍鐐癸紝涓嶇劧鐨勮瘽scrollview浼氶《鍒板簳閮�
         view.findViewById(R.id.view_map).setOnClickListener(this);
         btn_train = view.findViewById(R.id.btn_start);
         btn_train.setOnClickListener(this);
@@ -117,10 +110,7 @@
         mListView.setAdapter(mScoreAdapter);
 
         mListView.addHeaderView(LayoutInflater.from(_mActivity).inflate(R.layout.layout_score_item,null));
-        mArrayList.add(new ScoreBean(12,"鐩磋杞集","鍚庤疆鑳庡帇绾�"));
-        mArrayList.add(new ScoreBean(100,"鍊掕溅鍏ュ簱","鏈郴瀹夊叏甯�"));
-        mArrayList.add(new ScoreBean(10,"鍧¢亾璧锋","涓�娆$唲鐏�"));
-        mScoreAdapter.addDatas(mArrayList);
+
 
     }
 

--
Gitblit v1.8.0