From f6db8471b64ad5c7a67df3a4f6224a193c11d5ad Mon Sep 17 00:00:00 2001
From: endian11 <Dana_Lee1016@126.com>
Date: 星期三, 27 十一月 2019 14:49:29 +0800
Subject: [PATCH] 提交失败项目相关数据库表;目前FailProj会导致崩溃

---
 app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjRepository.java |   41 +++++++++++++
 app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjWorker.java     |    6 ++
 app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj.java           |    9 ++
 app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj_select.java    |    3 +
 app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java            |   27 +++-----
 app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailProjDao.java          |   12 +++
 app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjViewModel.java  |   32 ++++++++++
 app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java              |    3 
 8 files changed, 113 insertions(+), 20 deletions(-)

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 e7145d4..ffbf1b6 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
@@ -19,9 +19,19 @@
     @Insert
     void insert(FailedProj proj);
 
-    @Query("SELECT emp_id,deducting_reason,score_deducting,item_content from criteria_one INNER JOIN fail_projects ON  criteria_one.item_id=fail_projects.emp_id")
+    /**
+     * 鏌ヨ 绉戠洰浜� I绫昏�冨満鐨勫け璐ラ」鐩� 锛堝琛ㄦ煡璇級
+     * 濡傛灉瑕佹坊鍔� 绉戠洰浜孖I   III绫昏�冨満澶辫触椤圭洰锛岄渶瑕佸缓绔嬬浉搴旂殑璇勫垽鏍囧噯琛ㄦ暟鎹〃
+     * @return
+     */
+    @Query("SELECT emp_id,deducting_reason,score_deducting,item_content from criteria_one INNER JOIN fail_projects ON  criteria_one.item_id= fail_projects.emp_id")
     LiveData<List<FailedProj_select>> getFailedProjects();
 
+    /**
+     * 鑾峰彇澶辫触椤圭洰鏉℃暟
+     * @param subject_id
+     * @return
+     */
     @Query("SELECT COUNT(*)  from fail_projects where subject=:subject_id")
     LiveData<Integer> getSubject(int subject_id);
 }
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 1f879e2..c50f7c2 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
@@ -18,22 +18,27 @@
  * All Rights Saved! Chongqing AnYun Tech co. LTD
  */
 @Entity(tableName = "fail_projects",foreignKeys = @ForeignKey(entity = CriteriaForI.class,
-parentColumns = "item_id",childColumns = "emp_id",onDelete = CASCADE),indices=@Index(value="emp_id"))
+parentColumns = "item_id",childColumns = "emp_id"))
 public class FailedProj {
     @PrimaryKey(autoGenerate = true)
     private int id;
 
+
+
     @ColumnInfo(name = "subject")
     private int  subject;
 
+    //浣滀负澶栭敭锛屽搴擨绫昏�冨満鐨刬tem_id
     @ColumnInfo(name = "emp_id")
-    private int emp_id;//浣滀负澶栭敭锛屽搴擨绫昏�冨満鐨刬tem_id
+    private int emp_id;
 
     public FailedProj(int subject, int emp_id) {
         this.subject = subject;
         this.emp_id = emp_id;
     }
 
+
+
     public int getId() {
         return 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
new file mode 100644
index 0000000..d8db12f
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjRepository.java
@@ -0,0 +1,41 @@
+package safeluck.drive.evaluation.DB.failitems;
+
+import android.app.Application;
+
+import androidx.lifecycle.LiveData;
+
+import java.util.List;
+
+import safeluck.drive.evaluation.DB.WorkRoomDataBase;
+
+/**
+ * MyApplication2
+ * Created by lzw on 2019/11/27. 10:43:21
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class FailedProjRepository {
+
+
+    private FailProjDao failProjDao;
+
+    public FailedProjRepository(Application application) {
+        WorkRoomDataBase dataBase = WorkRoomDataBase.getWorkRoomDataBase(application);
+        failProjDao = dataBase.getFailProjDao();
+    }
+
+
+    public void insert(final FailedProj proj){
+        WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() {
+            @Override
+            public void run() {
+
+                failProjDao.insert(proj);
+            }
+        });
+    }
+
+    public LiveData<List<FailedProj_select>> getFailedProjects() {
+        return failProjDao.getFailedProjects();
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjViewModel.java b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjViewModel.java
new file mode 100644
index 0000000..ccfad7e
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjViewModel.java
@@ -0,0 +1,32 @@
+package safeluck.drive.evaluation.DB.failitems;
+
+import android.app.Application;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.AndroidViewModel;
+import androidx.lifecycle.LiveData;
+
+import java.util.List;
+
+/**
+ * MyApplication2
+ * Created by lzw on 2019/11/27. 10:42:32
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class FailedProjViewModel extends AndroidViewModel {
+
+    FailedProjRepository failedProjRepository;
+
+    public FailedProjViewModel(@NonNull Application application) {
+        super(application);
+        failedProjRepository = new FailedProjRepository(application);
+    }
+
+    public  LiveData<List<FailedProj_select>> getFailedProjects(){
+           return failedProjRepository.getFailedProjects();
+    }
+    public void insert(FailedProj proj){
+        failedProjRepository.insert(proj);
+    }
+}
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 228f00a..7cb7394 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
@@ -6,6 +6,8 @@
 import androidx.work.Worker;
 import androidx.work.WorkerParameters;
 
+import com.anyun.exam.lib.MyLog;
+
 import safeluck.drive.evaluation.DB.WorkRoomDataBase;
 
 /**
@@ -16,6 +18,9 @@
  */
 public class FailedProjWorker extends Worker {
 
+
+    private static final String TAG= "FailedProjWorker";
+
     public FailedProjWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
         super(context, workerParams);
     }
@@ -23,6 +28,7 @@
     @NonNull
     @Override
     public Result doWork() {
+        MyLog.i(TAG,"棰勭疆涓�鏉″け璐ラ」鐩�");
         WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getFailProjDao().insert(new FailedProj(1,5));
         return Result.success();
     }
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj_select.java b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj_select.java
index d73972c..bc62ea2 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj_select.java
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj_select.java
@@ -1,5 +1,7 @@
 package safeluck.drive.evaluation.DB.failitems;
 
+import androidx.room.ColumnInfo;
+
 /**
  * MyApplication2
  * Created by lzw on 2019/11/26. 18:22:03
@@ -8,6 +10,7 @@
  */
 public class FailedProj_select {
 
+    @ColumnInfo(name = "emp_id")
     private int emp_id;
     private String item_content;
     private String deducting_reason;
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
index 44d6f9f..99e3c85 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
@@ -20,6 +20,7 @@
 import com.google.android.material.textfield.TextInputEditText;
 
 import java.util.List;
+import java.util.Random;
 
 import me.yokeyword.fragmentation.SupportFragment;
 import safeluck.drive.evaluation.DB.Student;
@@ -91,7 +92,7 @@
                     @Override
                     public void run() {
 
-                WorkRoomDataBase.getWorkRoomDataBase(getContext().getApplicationContext()).getFailProjDao().insert(new FailedProj(1,4));
+                WorkRoomDataBase.getWorkRoomDataBase(getContext().getApplicationContext()).getFailProjDao().insert(new FailedProj(1, new Random(30).nextInt()+1));
                     }
                 });
 
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 37eb8f0..64a17cf 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
@@ -21,6 +21,7 @@
 import safeluck.drive.evaluation.DB.Student;
 import safeluck.drive.evaluation.DB.WokViewModel;
 import safeluck.drive.evaluation.DB.WorkRoomDataBase;
+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;
@@ -49,7 +50,7 @@
 
     @Nullable
     @Override
-    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+    public View onCreateView(@NonNull final LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
         View view = inflater.inflate(R.layout.layout_train_fragment,container,false);
         initView(view);
 
@@ -65,25 +66,19 @@
         });
 
 
-        WorkRoomDataBase.getWorkRoomDataBase(getContext().getApplicationContext()).getFailProjDao().getSubject(1).observe(this, new Observer<Integer>() {
+        FailedProjViewModel failedProjViewModel =ViewModelProviders.of(this).get(FailedProjViewModel.class);
+        failedProjViewModel.getFailedProjects().observe(this, new Observer<List<FailedProj_select>>() {
             @Override
-            public void onChanged(Integer integers) {
+            public void onChanged(List<FailedProj_select> failedProj_selects) {
                 item_id = 0;
-                WorkRoomDataBase.getWorkRoomDataBase(getContext().getApplicationContext()).getFailProjDao().getFailedProjects().observe(TrainFragment.this, new Observer<List<FailedProj_select>>() {
-                    @Override
-                    public void onChanged(List<FailedProj_select> failedProj_selects) {
-                        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();
-                        }
-                    }
-                });
-
+                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();
+                }
             }
         });
-        Log.i(TAG, "鎬绘墸鍒嗭細"+item_id);
 
         return view;
     }

--
Gitblit v1.8.0