Explorar o código

1.添加获取mmse试题库接口

王鹏鹏 %!s(int64=2) %!d(string=hai) anos
pai
achega
4237334651

+ 94 - 0
baselib/schemas/com.yingyangfly.baselib.db.AppDataBase/1.json

@@ -0,0 +1,94 @@
+{
+  "formatVersion": 1,
+  "database": {
+    "version": 1,
+    "identityHash": "3752c25f05809f2859387d1826f3c114",
+    "entities": [
+      {
+        "tableName": "Questions",
+        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `isJudge` TEXT NOT NULL, `orgCode` TEXT NOT NULL, `orgName` TEXT NOT NULL, `reviewDesc` TEXT NOT NULL, `reviewItem` TEXT NOT NULL, `reviewScore` TEXT NOT NULL, `reviewType` TEXT NOT NULL, `type` TEXT NOT NULL, `updateBy` TEXT NOT NULL, `viewType` TEXT NOT NULL, PRIMARY KEY(`id`))",
+        "fields": [
+          {
+            "fieldPath": "id",
+            "columnName": "id",
+            "affinity": "TEXT",
+            "notNull": true
+          },
+          {
+            "fieldPath": "isJudge",
+            "columnName": "isJudge",
+            "affinity": "TEXT",
+            "notNull": true
+          },
+          {
+            "fieldPath": "orgCode",
+            "columnName": "orgCode",
+            "affinity": "TEXT",
+            "notNull": true
+          },
+          {
+            "fieldPath": "orgName",
+            "columnName": "orgName",
+            "affinity": "TEXT",
+            "notNull": true
+          },
+          {
+            "fieldPath": "reviewDesc",
+            "columnName": "reviewDesc",
+            "affinity": "TEXT",
+            "notNull": true
+          },
+          {
+            "fieldPath": "reviewItem",
+            "columnName": "reviewItem",
+            "affinity": "TEXT",
+            "notNull": true
+          },
+          {
+            "fieldPath": "reviewScore",
+            "columnName": "reviewScore",
+            "affinity": "TEXT",
+            "notNull": true
+          },
+          {
+            "fieldPath": "reviewType",
+            "columnName": "reviewType",
+            "affinity": "TEXT",
+            "notNull": true
+          },
+          {
+            "fieldPath": "type",
+            "columnName": "type",
+            "affinity": "TEXT",
+            "notNull": true
+          },
+          {
+            "fieldPath": "updateBy",
+            "columnName": "updateBy",
+            "affinity": "TEXT",
+            "notNull": true
+          },
+          {
+            "fieldPath": "viewType",
+            "columnName": "viewType",
+            "affinity": "TEXT",
+            "notNull": true
+          }
+        ],
+        "primaryKey": {
+          "columnNames": [
+            "id"
+          ],
+          "autoGenerate": false
+        },
+        "indices": [],
+        "foreignKeys": []
+      }
+    ],
+    "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, '3752c25f05809f2859387d1826f3c114')"
+    ]
+  }
+}

+ 4 - 1
baselib/src/main/java/com/yingyangfly/baselib/base/BaseActivity.kt

@@ -19,6 +19,7 @@ import com.scwang.smartrefresh.layout.api.RefreshLayout
 import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener
 import com.yingyangfly.baselib.R
 import com.yingyangfly.baselib.databinding.ActivityBaseBinding
+import com.yingyangfly.baselib.db.AppDataBase
 import com.yingyangfly.baselib.dialog.LoadingDialog
 import com.yingyangfly.baselib.ext.getDbClass
 import com.yingyangfly.baselib.ext.initBar
@@ -61,13 +62,14 @@ abstract class BaseActivity<DB : ViewDataBinding> : AppCompatActivity(),
 
     private var logoutDialog: AlertDialog? = null
 
+    var db: AppDataBase? = null
+
     @SuppressLint("SourceLockedOrientationActivity")
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         RxBus.get().register(this)
         mContext = this
         initWindow()
-//        ScreenUtils.setStatusBarTransparent(window)
         // 默认不全屏,底部导航栏透明
         initBar(false)
         ARouter.getInstance().inject(this)
@@ -81,6 +83,7 @@ abstract class BaseActivity<DB : ViewDataBinding> : AppCompatActivity(),
         bindingBase.llytContent.addView(binding.root)
         setContentView(ViewTool.inflateLayoutPixels(this, bindingBase.root, 1194, 834))
         requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE // 竖屏
+        db = AppDataBase.getInstance(mContext)
         initMVVM()
         initViews()
         initListener()

+ 26 - 10
baselib/src/main/java/com/yingyangfly/baselib/db/AppDataBase.kt

@@ -1,9 +1,9 @@
 package com.yingyangfly.baselib.db
 
+import android.content.Context
 import androidx.room.Database
 import androidx.room.Room
 import androidx.room.RoomDatabase
-import com.yingyangfly.baselib.BaseApplication
 
 @Database(entities = [QuestionsBean::class], version = 1)
 abstract class AppDataBase : RoomDatabase() {
@@ -11,15 +11,31 @@ abstract class AppDataBase : RoomDatabase() {
     abstract fun getQuestionsDao(): QuestionsDao
 
     companion object {
-        val instance = Single.sin
-    }
+        @Volatile
+        private var sInstance: AppDataBase? = null
+        private const val DATA_BASE_NAME = "jetpack_movie.db"
+
+        @JvmStatic
+        fun getInstance(context: Context): AppDataBase? {
+            if (sInstance == null) {
+                synchronized(AppDataBase::class.java) {
+                    if (sInstance == null) {
+                        sInstance = createInstance(context)
+                    }
+                }
+            }
+            return sInstance
+        }
 
-    private object Single {
-        //这里创建的是数据库 hcp 是对应数据库名称,其他所有(例如Questions)都是表
-        val sin: AppDataBase = Room.databaseBuilder(
-            BaseApplication.appContext,
-            AppDataBase::class.java,
-            "hcp.db"
-        ).allowMainThreadQueries().build()
+        private fun createInstance(context: Context): AppDataBase {
+            return Room.databaseBuilder(
+                context.applicationContext,
+                AppDataBase::class.java,
+                DATA_BASE_NAME
+            )
+                .allowMainThreadQueries()
+                .build()
+        }
     }
+
 }

+ 1 - 4
baselib/src/main/java/com/yingyangfly/baselib/db/QuestionsBean.kt

@@ -9,9 +9,7 @@ import androidx.room.PrimaryKey
 @Entity(tableName = "Questions")
 data class QuestionsBean(
     @PrimaryKey
-    val id: String,
-    val createBy: String,
-    val createTime: String,
+    val id: String = "",
     val isJudge: String,
     val orgCode: String,
     val orgName: String,
@@ -21,6 +19,5 @@ data class QuestionsBean(
     val reviewType: String,
     val type: String,
     val updateBy: String,
-    val updateTime: String,
     val viewType: String
 )

+ 24 - 2
home/src/main/java/com/yingyangfly/home/activity/HomeActivity.kt

@@ -5,6 +5,7 @@ import android.text.TextUtils
 import androidx.recyclerview.widget.GridLayoutManager
 import com.alibaba.android.arouter.facade.annotation.Route
 import com.yingyang.home.databinding.ActivityHomeBinding
+import com.yingyangfly.baselib.db.QuestionsBean
 import com.yingyangfly.baselib.dialog.TaskFragment
 import com.yingyangfly.baselib.dialog.TipsDialog
 import com.yingyangfly.baselib.ext.setOnSingleClickListener
@@ -106,7 +107,7 @@ class HomeActivity : BaseMVVMActivity<ActivityHomeBinding, HomeViewModel>() {
             }
             //专业测评
             tvProfessionalEvaluation.setOnSingleClickListener {
-                JumpUtil.jumpActivity(RouterUrlCommon.mmseEvaluation, mContext)
+                loadMmseQuestions()
             }
             //健康咨询
             tvHealthCounseling.setOnSingleClickListener {
@@ -138,7 +139,8 @@ class HomeActivity : BaseMVVMActivity<ActivityHomeBinding, HomeViewModel>() {
             btnTask.setOnSingleClickListener {
                 if (currentTaskRecord != null) {
                     currentTaskRecord.let {
-                        val str = it?.gameUrl + "?gameCode=" + it?.gameCode + "&isFull=true&isSound=true&playClass=A" + "&userToken=" + User.getToken()
+                        val str =
+                            it?.gameUrl + "?gameCode=" + it?.gameCode + "&isFull=true&isSound=true&playClass=A" + "&userToken=" + User.getToken()
                         JumpUtil.jumpActivityWithUrl(
                             RouterUrlCommon.WEB_VIEW_INTERACTION_JS,
                             str,
@@ -500,4 +502,24 @@ class HomeActivity : BaseMVVMActivity<ActivityHomeBinding, HomeViewModel>() {
         super.onDestroy()
     }
 
+    /**
+     * 获取mmse试题库接口
+     */
+    private fun loadMmseQuestions() {
+        if (db != null) {
+            val dao = db?.getQuestionsDao()
+            dao?.deleteAll()
+            val questionsList = mutableListOf<QuestionsBean>()
+            viewModel.getQuestions(fail = {
+                it.toast()
+            }, success = {
+                if (it.isNullOrEmpty().not()) {
+                    questionsList.addAll(it!!)
+                    dao?.insertAll(questionsList)
+                }
+                JumpUtil.jumpActivity(RouterUrlCommon.mmseEvaluation, mContext)
+            })
+        }
+    }
+
 }

+ 14 - 0
home/src/main/java/com/yingyangfly/home/activity/HomeViewModel.kt

@@ -1,5 +1,6 @@
 package com.yingyangfly.home.activity
 
+import com.yingyangfly.baselib.db.QuestionsBean
 import com.yingyangfly.baselib.mvvm.BaseViewModel
 import com.yingyangfly.home.entity.*
 import com.yingyangfly.home.net.HOME_API
@@ -103,4 +104,17 @@ class HomeViewModel : BaseViewModel() {
         success,
         fail
     )
+
+    /**
+     * 获取mmse试题
+     */
+    fun getQuestions(
+        fail: ((msg: String) -> Unit)? = null,
+        success: ((success: List<QuestionsBean>?) -> Unit)? = null,
+    ) = launchFlow(true) {
+        HOME_API.getQuestions()
+    }.runUI(
+        success,
+        fail
+    )
 }

+ 7 - 0
home/src/main/java/com/yingyangfly/home/net/HomeApiService.kt

@@ -1,5 +1,6 @@
 package com.yingyangfly.home.net
 
+import com.yingyangfly.baselib.db.QuestionsBean
 import com.yingyangfly.baselib.net.BaseResp
 import com.yingyangfly.home.entity.*
 import retrofit2.http.POST
@@ -48,4 +49,10 @@ interface HomeApiService {
     @POST("app/warn/readMsg")
     suspend fun updateReadMsg(@Query("msgId") msgId: String): BaseResp<Unit>
 
+    /**
+     * 获取mmse试题
+     */
+    @POST("app/review/findAllReview")
+    suspend fun getQuestions(): BaseResp<List<QuestionsBean>>
+
 }

+ 8 - 17
mmse/src/main/java/com/yingyangfly/mmse/activity/questions/QuestionsActivity.kt

@@ -4,10 +4,8 @@ import androidx.fragment.app.Fragment
 import com.alibaba.android.arouter.facade.annotation.Route
 import com.yingyang.mmse.R
 import com.yingyang.mmse.databinding.ActivityQuestionsBinding
-import com.yingyangfly.baselib.db.AppDataBase
 import com.yingyangfly.baselib.db.QuestionsBean
 import com.yingyangfly.baselib.db.QuestionsDao
-import com.yingyangfly.baselib.ext.toast
 import com.yingyangfly.baselib.mvvm.BaseMVVMActivity
 import com.yingyangfly.baselib.router.RouterUrlCommon
 import com.yingyangfly.mmse.activity.fragment.NumberFragment
@@ -24,7 +22,6 @@ class QuestionsActivity : BaseMVVMActivity<ActivityQuestionsBinding, QuestionsVi
 
     private var tabFragments = mutableListOf<Fragment>()
     private var questionsList = mutableListOf<QuestionsBean>()
-    private var dao: QuestionsDao? = null
 
     override fun initViews() {
         tabFragments.clear()
@@ -41,7 +38,7 @@ class QuestionsActivity : BaseMVVMActivity<ActivityQuestionsBinding, QuestionsVi
         tabFragments.add(SoundRecordFragment())
         tabFragments.add(SingleJudgmentFragment())
         val tabAdapter = FragmentTabAdapter(this, tabFragments, R.id.layoutOperate)
-
+        loadData()
     }
 
     override fun initListener() {
@@ -49,26 +46,20 @@ class QuestionsActivity : BaseMVVMActivity<ActivityQuestionsBinding, QuestionsVi
     }
 
     override fun initData() {
-        dao = AppDataBase.instance.getQuestionsDao()
-        dao?.deleteAll()
-        loadData()
+
     }
 
     /**
      * 加载mmse试题库
      */
     private fun loadData() {
-        viewModel.getQuestions(fail = {
-            it.toast()
-        }, success = {
-            questionsList.clear()
-            if (it.isNullOrEmpty().not()) {
-                questionsList.addAll(it!!)
-            }
-            if (questionsList.isNullOrEmpty().not()) {
-                dao?.insertAll(questionsList)
+        val dao = db?.getQuestionsDao()
+        if (dao != null) {
+            val list = dao?.getAllQuestions()
+            if (list.isNullOrEmpty().not()) {
+
             }
-        })
+        }
     }
 
 }