From 3e3fb023902585f9dfb36562ce29aedf5b051c51 Mon Sep 17 00:00:00 2001
From: endian11 <Dana_Lee1016@126.com>
Date: 星期二, 26 十一月 2019 19:17:00 +0800
Subject: [PATCH] 加入失败项目表,所有失败项都记录到这表;然后通过多表查询所对应的记录;还未完善,可以跑

---
 app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjWorker.java  |   29 +++++++
 app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj.java        |   60 +++++++++++++++
 app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java            |   10 ++
 app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj_select.java |   57 ++++++++++++++
 app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java         |   26 ++++++
 app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailProjDao.java       |   27 ++++++
 app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java           |   22 ++++-
 7 files changed, 225 insertions(+), 6 deletions(-)

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 823d9dd..5fe77cb 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java
@@ -17,6 +17,9 @@
 import safeluck.drive.evaluation.DB.criterias.CriteriaForI;
 import safeluck.drive.evaluation.DB.criterias.CriteriaForIWorker;
 import safeluck.drive.evaluation.DB.criterias.CriteriaIDao;
+import safeluck.drive.evaluation.DB.failitems.FailProjDao;
+import safeluck.drive.evaluation.DB.failitems.FailedProj;
+import safeluck.drive.evaluation.DB.failitems.FailedProjWorker;
 
 
 /**
@@ -25,11 +28,12 @@
  * 閭锛�632393724@qq.com
  * All Rights Saved! Chongqing AnYun Tech co. LTD
  */
-@Database(entities = {Student.class, CriteriaForI.class},version = 1,exportSchema = false)
+@Database(entities = {Student.class, CriteriaForI.class, FailedProj.class},version = 1,exportSchema = false)
 public abstract class WorkRoomDataBase extends RoomDatabase {
     private static final String TAG = "WorkRoomDataBase";
     public abstract StudentDao getstudentDao();
     public abstract CriteriaIDao getCriteriaIDao();
+    public abstract FailProjDao getFailProjDao();
     private static volatile WorkRoomDataBase workRoomDataBase;
 
     private static final int NUMBER_OF_THREADS = 4;
@@ -49,9 +53,11 @@
                                     super.onCreate(db);
                                     OneTimeWorkRequest oneTimeWorkRequest = OneTimeWorkRequest.from(SeedDatabaseWorker.class);
                                     OneTimeWorkRequest oneTimeWorkRequest1 = OneTimeWorkRequest.from(CriteriaForIWorker.class);
+                                    OneTimeWorkRequest oneTimeWorkRequest2 = OneTimeWorkRequest.from(FailedProjWorker.class);
                                     Log.i(TAG, "onCreate: 鍒涘缓鏁版嵁搴撳悗寤虹珛鏁版嵁琛ㄦ彃鍏ユ暟鎹�");
                                     WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest);
                                     WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest1);
+                                    WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest2);
                                 }
 
                                 @Override
@@ -66,4 +72,6 @@
         }
         return workRoomDataBase;
     }
+
+
 }
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
new file mode 100644
index 0000000..e7145d4
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailProjDao.java
@@ -0,0 +1,27 @@
+package safeluck.drive.evaluation.DB.failitems;
+
+import androidx.lifecycle.LiveData;
+import androidx.room.Dao;
+import androidx.room.Insert;
+import androidx.room.Query;
+
+import java.util.List;
+
+/**
+ * MyApplication2
+ * Created by lzw on 2019/11/26. 18:08:08
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+@Dao
+public interface FailProjDao {
+
+    @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")
+    LiveData<List<FailedProj_select>> getFailedProjects();
+
+    @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
new file mode 100644
index 0000000..1f879e2
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj.java
@@ -0,0 +1,60 @@
+package safeluck.drive.evaluation.DB.failitems;
+
+import androidx.room.ColumnInfo;
+import androidx.room.Entity;
+import androidx.room.ForeignKey;
+import androidx.room.Index;
+import androidx.room.PrimaryKey;
+
+import safeluck.drive.evaluation.DB.criterias.CriteriaForI;
+
+import static androidx.room.ForeignKey.CASCADE;
+
+/**
+ * MyApplication2
+ * 澶辫触椤圭洰鏉$洰
+ * Created by lzw on 2019/11/26. 17:59:20
+ * 閭锛�632393724@qq.com
+ * 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"))
+public class FailedProj {
+    @PrimaryKey(autoGenerate = true)
+    private int id;
+
+    @ColumnInfo(name = "subject")
+    private int  subject;
+
+    @ColumnInfo(name = "emp_id")
+    private int emp_id;//浣滀负澶栭敭锛屽搴擨绫昏�冨満鐨刬tem_id
+
+    public FailedProj(int subject, int emp_id) {
+        this.subject = subject;
+        this.emp_id = emp_id;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getSubject() {
+        return subject;
+    }
+
+    public void setSubject(int subject) {
+        this.subject = subject;
+    }
+
+    public int getEmp_id() {
+        return emp_id;
+    }
+
+    public void setEmp_id(int emp_id) {
+        this.emp_id = emp_id;
+    }
+}
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
new file mode 100644
index 0000000..228f00a
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjWorker.java
@@ -0,0 +1,29 @@
+package safeluck.drive.evaluation.DB.failitems;
+
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+import androidx.work.Worker;
+import androidx.work.WorkerParameters;
+
+import safeluck.drive.evaluation.DB.WorkRoomDataBase;
+
+/**
+ * MyApplication2
+ * Created by lzw on 2019/11/26. 18:10:32
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class FailedProjWorker extends Worker {
+
+    public FailedProjWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
+        super(context, workerParams);
+    }
+
+    @NonNull
+    @Override
+    public Result doWork() {
+        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
new file mode 100644
index 0000000..d73972c
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj_select.java
@@ -0,0 +1,57 @@
+package safeluck.drive.evaluation.DB.failitems;
+
+/**
+ * MyApplication2
+ * Created by lzw on 2019/11/26. 18:22:03
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class FailedProj_select {
+
+    private int emp_id;
+    private String item_content;
+    private String deducting_reason;
+    private int score_deducting;
+
+    public int getEmp_id() {
+        return emp_id;
+    }
+
+    public void setEmp_id(int emp_id) {
+        this.emp_id = emp_id;
+    }
+
+    public String getItem_content() {
+        return item_content;
+    }
+
+    public void setItem_content(String item_content) {
+        this.item_content = item_content;
+    }
+
+    public String getDeducting_reason() {
+        return deducting_reason;
+    }
+
+    public void setDeducting_reason(String deducting_reason) {
+        this.deducting_reason = deducting_reason;
+    }
+
+    public int getScore_deducting() {
+        return score_deducting;
+    }
+
+    public void setScore_deducting(int score_deducting) {
+        this.score_deducting = score_deducting;
+    }
+
+    @Override
+    public String toString() {
+        return "FailedProj_select{" +
+                "emp_id=" + emp_id +
+                ", item_content='" + item_content + '\'' +
+                ", deducting_reason='" + deducting_reason + '\'' +
+                ", score_deducting=" + score_deducting +
+                '}';
+    }
+}
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 c40f2f5..44d6f9f 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
@@ -10,6 +10,7 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.Button;
+import android.widget.Toast;
 
 import androidx.appcompat.widget.AppCompatEditText;
 import androidx.lifecycle.LifecycleOwner;
@@ -23,8 +24,11 @@
 import me.yokeyword.fragmentation.SupportFragment;
 import safeluck.drive.evaluation.DB.Student;
 import safeluck.drive.evaluation.DB.WokViewModel;
+import safeluck.drive.evaluation.DB.WorkRoomDataBase;
 import safeluck.drive.evaluation.DB.criterias.CriteriaForI;
 import safeluck.drive.evaluation.DB.criterias.viewmodel.CriteriaIViewModel;
+import safeluck.drive.evaluation.DB.failitems.FailedProj;
+import safeluck.drive.evaluation.DB.failitems.FailedProj_select;
 import safeluck.drive.evaluation.R;
 import safeluck.drive.evaluation.tcp.ConnectThread;
 
@@ -78,10 +82,18 @@
     public void onClick(View v) {
         switch (v.getId()){
             case R.id.btn_connect:
-                String serverIp = ip.getText().toString().trim();
-                String serverPort = port.getText().toString().trim();
-            connectThread = new ConnectThread(serverIp,Integer.parseInt(serverPort));
-            connectThread.start();
+//                String serverIp = ip.getText().toString().trim();
+//                String serverPort = port.getText().toString().trim();
+//            connectThread = new ConnectThread(serverIp,Integer.parseInt(serverPort));
+//            connectThread.start();
+
+                WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() {
+                    @Override
+                    public void run() {
+
+                WorkRoomDataBase.getWorkRoomDataBase(getContext().getApplicationContext()).getFailProjDao().insert(new FailedProj(1,4));
+                    }
+                });
 
                 break;
             case R.id.btn_send:
@@ -89,7 +101,7 @@
 ////                    connectThread.sendMessage(sendEditText.getText().toString().trim());
 ////                    sendEditText.getText().clear();
 ////                }
-                checkCriteria(++item_id);
+
                 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 b3575bf..37eb8f0 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
@@ -12,6 +12,7 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ListView;
+import android.widget.Toast;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -19,6 +20,8 @@
 import me.yokeyword.fragmentation.SupportFragment;
 import safeluck.drive.evaluation.DB.Student;
 import safeluck.drive.evaluation.DB.WokViewModel;
+import safeluck.drive.evaluation.DB.WorkRoomDataBase;
+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;
@@ -34,6 +37,8 @@
     private static final String TAG = TrainFragment.class.getSimpleName();
     private ListView mListView ;
     private ScoreAdapter mScoreAdapter;
+
+    private int item_id;
 
     private List<ScoreBean> mArrayList = new ArrayList<>();
 
@@ -59,6 +64,27 @@
             }
         });
 
+
+        WorkRoomDataBase.getWorkRoomDataBase(getContext().getApplicationContext()).getFailProjDao().getSubject(1).observe(this, new Observer<Integer>() {
+            @Override
+            public void onChanged(Integer integers) {
+                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();
+                        }
+                    }
+                });
+
+            }
+        });
+        Log.i(TAG, "鎬绘墸鍒嗭細"+item_id);
+
         return view;
     }
     private void initView(View view) {

--
Gitblit v1.8.0