王鹏鹏 2 роки тому
батько
коміт
5b4274b6ec

+ 9 - 149
baselib/schemas/com.yingyangfly.baselib.db.AppDataBase/1.json

@@ -2,7 +2,7 @@
   "formatVersion": 1,
   "database": {
     "version": 1,
-    "identityHash": "a85fb26b7e6b4b4a90b1f43e30a868cf",
+    "identityHash": "efa093b14cdd56f01fccd3bb8ea019ae",
     "entities": [
       {
         "tableName": "Questions",
@@ -158,152 +158,6 @@
         "indices": [],
         "foreignKeys": []
       },
-      {
-        "tableName": "Examination",
-        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`examinationRecordId` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `createBy` TEXT, `createTime` TEXT, `described` TEXT, `examType` TEXT, `examinationCount` TEXT, `examinationScore` TEXT, `limit` TEXT, `orgCode` TEXT, `orgName` TEXT, `page` TEXT, `status` TEXT, `updateBy` TEXT, `updateTime` TEXT, `id` TEXT, `title` TEXT, `correctOptionId` TEXT, `questionOptionName` TEXT, `examinationId` TEXT, `examinationTitle` TEXT, `score` TEXT, `usedTime` TEXT)",
-        "fields": [
-          {
-            "fieldPath": "examinationRecordId",
-            "columnName": "examinationRecordId",
-            "affinity": "INTEGER",
-            "notNull": true
-          },
-          {
-            "fieldPath": "createBy",
-            "columnName": "createBy",
-            "affinity": "TEXT",
-            "notNull": false
-          },
-          {
-            "fieldPath": "createTime",
-            "columnName": "createTime",
-            "affinity": "TEXT",
-            "notNull": false
-          },
-          {
-            "fieldPath": "described",
-            "columnName": "described",
-            "affinity": "TEXT",
-            "notNull": false
-          },
-          {
-            "fieldPath": "examType",
-            "columnName": "examType",
-            "affinity": "TEXT",
-            "notNull": false
-          },
-          {
-            "fieldPath": "examinationCount",
-            "columnName": "examinationCount",
-            "affinity": "TEXT",
-            "notNull": false
-          },
-          {
-            "fieldPath": "examinationScore",
-            "columnName": "examinationScore",
-            "affinity": "TEXT",
-            "notNull": false
-          },
-          {
-            "fieldPath": "limit",
-            "columnName": "limit",
-            "affinity": "TEXT",
-            "notNull": false
-          },
-          {
-            "fieldPath": "orgCode",
-            "columnName": "orgCode",
-            "affinity": "TEXT",
-            "notNull": false
-          },
-          {
-            "fieldPath": "orgName",
-            "columnName": "orgName",
-            "affinity": "TEXT",
-            "notNull": false
-          },
-          {
-            "fieldPath": "page",
-            "columnName": "page",
-            "affinity": "TEXT",
-            "notNull": false
-          },
-          {
-            "fieldPath": "status",
-            "columnName": "status",
-            "affinity": "TEXT",
-            "notNull": false
-          },
-          {
-            "fieldPath": "updateBy",
-            "columnName": "updateBy",
-            "affinity": "TEXT",
-            "notNull": false
-          },
-          {
-            "fieldPath": "updateTime",
-            "columnName": "updateTime",
-            "affinity": "TEXT",
-            "notNull": false
-          },
-          {
-            "fieldPath": "id",
-            "columnName": "id",
-            "affinity": "TEXT",
-            "notNull": false
-          },
-          {
-            "fieldPath": "title",
-            "columnName": "title",
-            "affinity": "TEXT",
-            "notNull": false
-          },
-          {
-            "fieldPath": "correctOptionId",
-            "columnName": "correctOptionId",
-            "affinity": "TEXT",
-            "notNull": false
-          },
-          {
-            "fieldPath": "questionOptionName",
-            "columnName": "questionOptionName",
-            "affinity": "TEXT",
-            "notNull": false
-          },
-          {
-            "fieldPath": "examinationId",
-            "columnName": "examinationId",
-            "affinity": "TEXT",
-            "notNull": false
-          },
-          {
-            "fieldPath": "examinationTitle",
-            "columnName": "examinationTitle",
-            "affinity": "TEXT",
-            "notNull": false
-          },
-          {
-            "fieldPath": "score",
-            "columnName": "score",
-            "affinity": "TEXT",
-            "notNull": false
-          },
-          {
-            "fieldPath": "usedTime",
-            "columnName": "usedTime",
-            "affinity": "TEXT",
-            "notNull": false
-          }
-        ],
-        "primaryKey": {
-          "columnNames": [
-            "examinationRecordId"
-          ],
-          "autoGenerate": true
-        },
-        "indices": [],
-        "foreignKeys": []
-      },
       {
         "tableName": "QuestionOption",
         "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER NOT NULL, `correctOption` TEXT, `optionKey` TEXT, `optionVal` TEXT, `questionId` INTEGER NOT NULL, PRIMARY KEY(`id`))",
@@ -350,7 +204,7 @@
       },
       {
         "tableName": "QuestionRecords",
-        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER NOT NULL, `correctOptionId` TEXT, `correctOptionName` TEXT, `examinationId` TEXT, `examinationTitle` TEXT, `manualHelp` TEXT, `orgCode` TEXT, `orgName` TEXT, `score` TEXT, `status` TEXT, `title` TEXT, `usedTime` TEXT, `selectedItemId` INTEGER NOT NULL, PRIMARY KEY(`id`))",
+        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER NOT NULL, `correctOptionId` TEXT, `correctOptionName` TEXT, `examinationId` TEXT, `examinationTitle` TEXT, `manualHelp` TEXT, `orgCode` TEXT, `orgName` TEXT, `score` TEXT, `status` TEXT, `title` TEXT, `usedTime` TEXT, `questionOptionName` TEXT, `selectedItemId` INTEGER NOT NULL, PRIMARY KEY(`id`))",
         "fields": [
           {
             "fieldPath": "id",
@@ -424,6 +278,12 @@
             "affinity": "TEXT",
             "notNull": false
           },
+          {
+            "fieldPath": "questionOptionName",
+            "columnName": "questionOptionName",
+            "affinity": "TEXT",
+            "notNull": false
+          },
           {
             "fieldPath": "selectedItemId",
             "columnName": "selectedItemId",
@@ -444,7 +304,7 @@
     "views": [],
     "setupQueries": [
       "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
-      "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'a85fb26b7e6b4b4a90b1f43e30a868cf')"
+      "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'efa093b14cdd56f01fccd3bb8ea019ae')"
     ]
   }
 }

+ 1 - 3
baselib/src/main/java/com/yingyangfly/baselib/db/AppDataBase.kt

@@ -6,7 +6,7 @@ import androidx.room.Room
 import androidx.room.RoomDatabase
 
 @Database(
-    entities = [QuestionsBean::class, VoicePlayerBean::class, ExaminationRecord::class, QuestionOptionBean::class, QuestionRecordsBean::class],
+    entities = [QuestionsBean::class, VoicePlayerBean::class, QuestionOptionBean::class, QuestionRecordsBean::class],
     version = 1
 )
 abstract class AppDataBase : RoomDatabase() {
@@ -15,8 +15,6 @@ abstract class AppDataBase : RoomDatabase() {
 
     abstract fun getVoicePlayerDao(): VoicePlayerDao
 
-    abstract fun getExaminationRecordDao(): ExaminationRecordDao
-
     abstract fun getQuestionOptionDao(): QuestionOptionDao
 
     abstract fun getQuestionRecordsDao(): QuestionRecordsDao

+ 3 - 36
baselib/src/main/java/com/yingyangfly/baselib/db/ExaminationRecord.java

@@ -2,19 +2,13 @@ package com.yingyangfly.baselib.db;
 
 import android.text.TextUtils;
 
-import androidx.room.Entity;
-import androidx.room.PrimaryKey;
-
 import com.alibaba.fastjson.annotation.JSONField;
 
 /**
  * @author 王鹏鹏
  */
-@Entity(tableName = "Examination")
 public class ExaminationRecord {
 
-    @JSONField(serialize = false)
-    @PrimaryKey(autoGenerate = true)
     private int examinationRecordId;
 
     @JSONField(serialize = false)
@@ -56,12 +50,10 @@ public class ExaminationRecord {
     @JSONField(serialize = false)
     private String updateTime;
 
-    private String id;
+    private long id;
     private String title;
     private String correctOptionId;
     private String questionOptionName;
-    private String examinationId;
-    private String examinationTitle;
     private String score;
     private String usedTime;
 
@@ -74,14 +66,11 @@ public class ExaminationRecord {
         this.examinationRecordId = examinationRecordId;
     }
 
-    public String getId() {
-        if (TextUtils.isEmpty(id)) {
-            return "";
-        }
+    public long getId() {
         return id;
     }
 
-    public void setId(String id) {
+    public void setId(long id) {
         this.id = id;
     }
 
@@ -250,17 +239,6 @@ public class ExaminationRecord {
         this.correctOptionId = correctOptionId;
     }
 
-    public String getExaminationTitle() {
-        if (TextUtils.isEmpty(examinationTitle)) {
-            return "";
-        }
-        return examinationTitle;
-    }
-
-    public void setExaminationTitle(String examinationTitle) {
-        this.examinationTitle = examinationTitle;
-    }
-
     public String getScore() {
         if (TextUtils.isEmpty(score)) {
             return "";
@@ -293,15 +271,4 @@ public class ExaminationRecord {
     public void setQuestionOptionName(String questionOptionName) {
         this.questionOptionName = questionOptionName;
     }
-
-    public String getExaminationId() {
-        if (TextUtils.isEmpty(examinationId)) {
-            return "";
-        }
-        return examinationId;
-    }
-
-    public void setExaminationId(String examinationId) {
-        this.examinationId = examinationId;
-    }
 }

+ 12 - 0
baselib/src/main/java/com/yingyangfly/baselib/db/QuestionRecordsBean.java

@@ -31,6 +31,7 @@ public class QuestionRecordsBean {
     private String status;
     private String title;
     private String usedTime;
+    private String questionOptionName;
 
     private long selectedItemId;
 
@@ -255,6 +256,17 @@ public class QuestionRecordsBean {
         this.usedTime = usedTime;
     }
 
+    public String getQuestionOptionName() {
+        if (TextUtils.isEmpty(questionOptionName)) {
+            return "";
+        }
+        return questionOptionName;
+    }
+
+    public void setQuestionOptionName(String questionOptionName) {
+        this.questionOptionName = questionOptionName;
+    }
+
     public long getSelectedItemId() {
         return selectedItemId;
     }

+ 13 - 10
evaluation/src/main/java/com/yingyangfly/evaluation/entity/SaveAnswerRecordBean.kt

@@ -1,12 +1,15 @@
 package com.yingyangfly.evaluation.entity
 
-class SaveAnswerRecordBean(
-    val correctOptionId: Long,
-    val examinationId: Long,
-    val examinationTitle: String,
-    val id: Long,
-    val questionOptionName: String,
-    val score: String,
-    val title: String,
-    val usedTime: String
-)
+/**
+ * 保存其他问题答案bean
+ */
+class SaveAnswerRecordBean {
+    var correctOptionId: Long = 0L
+    var examinationId: Long = 0L
+    var examinationTitle: String = ""
+    var id: Long = 0L
+    var correctOptionName: String = ""
+    var score: String = ""
+    var title: String = ""
+    var usedTime: String = ""
+}

+ 8 - 5
evaluation/src/main/java/com/yingyangfly/evaluation/otherevaluation/OtherEvaluationActivity.kt

@@ -7,6 +7,7 @@ import android.view.View
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.RecyclerView
 import com.alibaba.android.arouter.facade.annotation.Route
+import com.alibaba.android.arouter.launcher.ARouter
 import com.yingyangfly.baselib.db.ExaminationRecord
 import com.yingyangfly.baselib.db.QuestionOptionBean
 import com.yingyangfly.baselib.db.QuestionRecordsBean
@@ -15,7 +16,6 @@ import com.yingyangfly.baselib.ext.getScaleAnimation
 import com.yingyangfly.baselib.ext.toast
 import com.yingyangfly.baselib.mvvm.BaseMVVMActivity
 import com.yingyangfly.baselib.router.RouterUrlCommon
-import com.yingyangfly.baselib.utils.JumpUtil
 import com.yingyangfly.evaluation.R
 import com.yingyangfly.evaluation.adapter.EvaluationTypeAdapter
 import com.yingyangfly.evaluation.adapter.ExaminationAdapter
@@ -62,7 +62,7 @@ class OtherEvaluationActivity :
                 if (questionOptionDao != null) {
                     questionOptionDao?.deleteAll()
                 }
-                getQuestionList(it.examinationId)
+                getQuestionList(it)
             }
         }
     }
@@ -170,8 +170,8 @@ class OtherEvaluationActivity :
     /**
      * 获取测评试题内容列表
      */
-    private fun getQuestionList(examinationId: String) {
-        viewModel.getQuestionList(examinationId, fail = {
+    private fun getQuestionList(bean: ExaminationRecord) {
+        viewModel.getQuestionList(bean.id.toString(), fail = {
             it.toast()
         }, success = {
             if (it != null && it.records.isNullOrEmpty().not()) {
@@ -187,7 +187,10 @@ class OtherEvaluationActivity :
                 if (questionOptionDao != null) {
                     questionOptionDao?.insertAll(questionOptionBean)
                 }
-                JumpUtil.jumpActivity(RouterUrlCommon.questionList, mContext)
+                ARouter.getInstance().build(RouterUrlCommon.questionList)
+                    .withLong("examinationId", bean.id)
+                    .withString("examinationTitle", bean.title)
+                    .withTransition(R.anim.leftin, R.anim.leftout).navigation(mContext)
             }
         })
     }

+ 27 - 0
evaluation/src/main/java/com/yingyangfly/evaluation/questionlist/QuestionListActivity.kt

@@ -10,12 +10,14 @@ import com.yingyangfly.baselib.dialog.TipsDialog
 import com.yingyangfly.baselib.ext.getEndAnimation
 import com.yingyangfly.baselib.ext.getScaleAnimation
 import com.yingyangfly.baselib.ext.show
+import com.yingyangfly.baselib.ext.toast
 import com.yingyangfly.baselib.mvvm.BaseMVVMActivity
 import com.yingyangfly.baselib.router.RouterUrlCommon
 import com.yingyangfly.baselib.utils.RxTimer
 import com.yingyangfly.evaluation.R
 import com.yingyangfly.evaluation.adapter.QuestionListAdapter
 import com.yingyangfly.evaluation.databinding.ActivityQuestionListBinding
+import com.yingyangfly.evaluation.entity.SaveAnswerRecordBean
 
 /**
  * 试题列表
@@ -24,6 +26,8 @@ import com.yingyangfly.evaluation.databinding.ActivityQuestionListBinding
 class QuestionListActivity : BaseMVVMActivity<ActivityQuestionListBinding, QuestionListViewModel>(),
     View.OnTouchListener {
 
+    private var examinationId: Long = 0L
+    private var examinationTitle: String = ""
     private lateinit var rxTimer: RxTimer
     private var time: Long = 0
     private var questionIndex = 0
@@ -36,6 +40,8 @@ class QuestionListActivity : BaseMVVMActivity<ActivityQuestionListBinding, Quest
 
 
     override fun initViews() {
+        examinationId = intent.getLongExtra("examinationId", 0L)
+        examinationTitle = intent.getStringExtra("examinationTitle") ?: ""
         rxTimer = RxTimer()
         binding {
             rvSelectedItem.adapter = questionListAdapter
@@ -43,6 +49,7 @@ class QuestionListActivity : BaseMVVMActivity<ActivityQuestionListBinding, Quest
         questionListAdapter.onClickListener = {
             if (questionRecordsBean != null && questionRecordsDao != null) {
                 questionRecordsBean?.selectedItemId = it.id
+                questionRecordsBean?.questionOptionName = it.optionVal
                 questionRecordsDao?.update(questionRecordsBean!!)
             }
         }
@@ -161,6 +168,26 @@ class QuestionListActivity : BaseMVVMActivity<ActivityQuestionListBinding, Quest
      * 提交数据
      */
     private fun saveData() {
+        if (questionRecordsBeans.isNullOrEmpty().not()) {
+            val saveAnswerRecordBean = mutableListOf<SaveAnswerRecordBean>()
+            questionRecordsBeans.forEach {
+                val saveAnswerRecord = SaveAnswerRecordBean().apply {
+                    correctOptionId = it.selectedItemId
+                    id = it.id
+                    score = it.score
+                    correctOptionName = it.questionOptionName
+                    title = it.title
+                    usedTime = time.toString()
+                }
+                saveAnswerRecord.examinationId = examinationId
+                saveAnswerRecord.examinationTitle = examinationTitle
+                saveAnswerRecordBean.add(saveAnswerRecord)
+            }
+            viewModel.saveAnswerRecord(saveAnswerRecordBean, fail = {
+                it.toast()
+            }, success = {
 
+            })
+        }
     }
 }

+ 5 - 9
evaluation/src/main/java/com/yingyangfly/evaluation/questionlist/QuestionListViewModel.kt

@@ -1,9 +1,10 @@
 package com.yingyangfly.evaluation.questionlist
 
+import android.util.Log
 import com.yingyangfly.baselib.mvvm.BaseViewModel
 import com.yingyangfly.baselib.net.XUtils
 import com.yingyangfly.baselib.utils.GsonUtil
-import com.yingyangfly.evaluation.entity.GetExaminationListBean
+import com.yingyangfly.evaluation.entity.SaveAnswerRecordBean
 import com.yingyangfly.evaluation.net.EVALUATION_API
 
 /**
@@ -16,17 +17,12 @@ class QuestionListViewModel : BaseViewModel() {
      * 获取试题库列表
      */
     fun saveAnswerRecord(
-        pageIndex: Int,
-        type: String,
+        saveAnswerRecordBean: List<SaveAnswerRecordBean>,
         fail: ((msg: String) -> Unit)? = null,
         success: ((success: Any?) -> Unit)? = null,
     ) = launchFlow(true) {
-        val requestBean = GetExaminationListBean().apply {
-            limit = "10"
-            page = pageIndex
-            examType = type
-        }
-        val body = XUtils.createJson(GsonUtil.GsonString(requestBean))
+        Log.e("wpp", "--------------->" + GsonUtil.GsonString(saveAnswerRecordBean))
+        val body = XUtils.createJson(GsonUtil.GsonString(saveAnswerRecordBean))
         EVALUATION_API.saveAnswerRecord(body)
     }.runUI(
         success, fail