From b743bf566b328c7fa2c5d88b35b70508889f8028 Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Fri, 12 Sep 2025 13:38:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=95=B0=E6=8D=AE=E6=8B=89?= =?UTF-8?q?=E5=8F=96=E3=80=81=E4=BF=9D=E5=AD=98=E6=9C=AC=E5=9C=B0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E3=80=81=E5=B7=A5=E4=BD=9C=E9=9D=A2=E3=80=81?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E3=80=81=E5=B2=A9=E6=80=A7=E7=AD=89=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=98=BE=E7=A4=BA=E3=80=81=E5=A2=9E=E5=8A=A0=E3=80=81?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- coalMiningApp/app/build.gradle | 1 + coalMiningApp/app/src/main/assets/tab.json | 6 - .../com/zmkg/coaloperation/MyApplication.kt | 11 ++ .../adapter/TunnelWorkingFaceAdapter.kt | 17 ++- .../adapter/WorkingItemAdapter.kt | 9 +- .../coaloperation/bean/WorkingFaceItem.kt | 10 +- .../zmkg/coaloperation/data/api/HomeApi.kt | 8 ++ .../data/repository/HomeRepository.kt | 13 ++ .../com/zmkg/coaloperation/db/AppDatabase.kt | 4 +- .../db/dao/TunnelRoofLithologyDao.kt | 22 ++- .../db/dao/TunnelWorkingFaceDao.kt | 10 ++ .../db/dao/TunnelWorkingFaceRecordDao.kt | 11 ++ .../tunnel/TunnelRoofLithologyEntity.kt | 27 ++-- .../entiry/tunnel/TunnelWorkingFaceEntity.kt | 33 +++-- .../tunnel/TunnelWorkingFaceRecordEntity.kt | 35 ++++- .../TunnelRoofLithologyRepository.kt | 29 +++- .../TunnelWorkingFaceRecordRepository.kt | 14 ++ .../repository/TunnelWorkingFaceRepository.kt | 11 ++ .../viewmodel/TunnelRoofLithologyViewModel.kt | 44 ++++-- .../TunnelWorkingFaceRecordViewModel.kt | 29 +++- .../viewmodel/TunnelWorkingFaceViewModel.kt | 33 ++++- .../activity/AddWorkingPointActivity.kt | 84 ++++++----- .../tunneling/activity/TunnelingActivity.kt | 17 +-- .../ui/tunneling/activity/WorkFaceActivity.kt | 71 +++++----- .../activity/WorkingPointActivity.kt | 36 ++++- .../ui/tunneling/bean/DictBean.kt | 10 ++ .../tunneling/viewmodel/TunnelingViewModel.kt | 55 ++++++-- .../ui/user/fragment/UserFragment.kt | 130 +++++++++++++++++- .../com/zmkg/coaloperation/utils/DictUtils.kt | 59 ++++++++ .../java/com/zmkg/coaloperation/utils/Ext.kt | 26 ++++ .../com/zmkg/coaloperation/utils/GsonExt.kt | 16 ++- .../zmkg/coaloperation/utils/PickerUtil.kt | 15 +- .../com/zmkg/coaloperation/utils/SpTool.kt | 27 ++++ .../main/res/drawable-xxhdpi/ic_data_pull.png | Bin 0 -> 5743 bytes .../app/src/main/res/layout/fragment_user.xml | 7 + 35 files changed, 742 insertions(+), 188 deletions(-) create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/bean/DictBean.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/DictUtils.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/SpTool.kt create mode 100644 coalMiningApp/app/src/main/res/drawable-xxhdpi/ic_data_pull.png diff --git a/coalMiningApp/app/build.gradle b/coalMiningApp/app/build.gradle index 0e93e43..fb10295 100644 --- a/coalMiningApp/app/build.gradle +++ b/coalMiningApp/app/build.gradle @@ -103,5 +103,6 @@ dependencies { // ViewModel implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.6.1" implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1" + implementation 'com.google.code.gson:gson:2.10.1' } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/assets/tab.json b/coalMiningApp/app/src/main/assets/tab.json index 7597044..87e0b81 100644 --- a/coalMiningApp/app/src/main/assets/tab.json +++ b/coalMiningApp/app/src/main/assets/tab.json @@ -25,12 +25,6 @@ "iconNormal": "report_tab", "iconSelected": "report_select_tab" }, - { - "tabName": "消息", - "tabTag": "key_message_fragment", - "iconNormal": "message_tab", - "iconSelected": "message_select_tab" - }, { "tabName": "我的", "tabTag": "key_my_fragment", diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/MyApplication.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/MyApplication.kt index 4575a92..cf7fbbf 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/MyApplication.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/MyApplication.kt @@ -3,6 +3,7 @@ package com.zmkg.coaloperation import android.app.Activity import android.app.Application import android.content.Context +import android.content.SharedPreferences import android.os.Bundle import android.os.StrictMode import android.text.TextUtils @@ -36,6 +37,16 @@ class MyApplication : Application(), ViewModelStoreOwner { @JvmStatic lateinit var appViewModel: AppViewModel val TAG = MyApplication::class.java.simpleName + + @Volatile + private var sharedPref: SharedPreferences? = null + fun getSharedPref(): SharedPreferences? { + if (sharedPref != null) { + return sharedPref + } + sharedPref = appContext.getSharedPreferences("sp_digital_coal_mining", Context.MODE_PRIVATE) + return sharedPref + } } override fun attachBaseContext(base: Context?) { diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingFaceAdapter.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingFaceAdapter.kt index 24c0f83..8fc5d28 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingFaceAdapter.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingFaceAdapter.kt @@ -2,6 +2,7 @@ package com.zmkg.coaloperation.adapter import android.annotation.SuppressLint import android.os.Bundle +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -16,13 +17,16 @@ import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity import com.zmkg.coaloperation.ui.tunneling.activity.TunnelingActivity import com.zmkg.coaloperation.ui.tunneling.activity.WorkingPointActivity import com.zmkg.coaloperation.utils.ScreenUtil +import com.zmkg.coaloperation.utils.toJsonString class TunnelWorkingFaceAdapter(var list: MutableList) : BaseQuickAdapter( R.layout.list_item_tunnel_working_face, list ) { - + companion object { + private const val TAG = "TunnelWorkingFaceAdapter" + } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH { val inflater = LayoutInflater.from(context) @@ -47,10 +51,10 @@ class TunnelWorkingFaceAdapter(var list: MutableList) : binding.ivExpandRecord.tag = item.isExpandRecord.toString() binding.rvFaceRecord.let { rv -> rv.layoutManager = LinearLayoutManager(context) - if (item.recordList == null) { - item.recordList = mutableListOf() + if (item.records == null) { + item.records = mutableListOf() } - val size = item.recordList!!.size + val size = item.records!!.size rv.updateLayoutParams { height = if (size >= 3) ScreenUtil.dp2px(150F) @@ -60,19 +64,20 @@ class TunnelWorkingFaceAdapter(var list: MutableList) : rv.isVerticalScrollBarEnabled = size >= 3 rv.isVerticalFadingEdgeEnabled = size < 3 rv.overScrollMode = if (size >= 3) View.OVER_SCROLL_IF_CONTENT_SCROLLS else View.OVER_SCROLL_NEVER - rv.adapter = TunnelWorkingFaceRecordAdapter(item.recordList!!).apply { + rv.adapter = TunnelWorkingFaceRecordAdapter(item.records!!).apply { setOnItemClickListener { adapter, view, recordPosition -> // if (recordPosition == 0) { // //0为头部表示,不需要点击操作 // return@setOnItemClickListener // } + Log.d(TAG, "convert: ${item.records!![recordPosition].toJsonString()}") context.let { ctx -> if (ctx is TunnelingActivity) { ctx.toActivity(WorkingPointActivity::class.java, Bundle().apply { putString(WorkingPointActivity.FACE_NAME, item.surfaceName) putParcelable( WorkingPointActivity.FACE_RECORD, - item.recordList!![recordPosition] + item.records!![recordPosition] ) }) } diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/WorkingItemAdapter.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/WorkingItemAdapter.kt index 364edf3..1a9d8f4 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/WorkingItemAdapter.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/WorkingItemAdapter.kt @@ -13,6 +13,7 @@ import com.zmkg.coaloperation.bean.RockItem import com.zmkg.coaloperation.bean.WorkingFaceItem import com.zmkg.coaloperation.databinding.ListItemRockBinding import com.zmkg.coaloperation.databinding.ListItemWorkingFaceBinding +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelRoofLithologyEntity import com.zmkg.coaloperation.utils.ScreenUtil class WorkingItemAdapter(data: MutableList) : @@ -84,7 +85,7 @@ class WorkingItemAdapter(data: MutableList) : binding.llContainer.visibility = View.GONE } - private fun addChildToContainer(container: LinearLayout, list: MutableList?) { + private fun addChildToContainer(container: LinearLayout, list: MutableList?) { list?.forEach { item -> val itemBinding = ListItemRockBinding.inflate( LayoutInflater.from(context), @@ -95,17 +96,17 @@ class WorkingItemAdapter(data: MutableList) : tvRockStartLen.let { it.focusable = EditText.NOT_FOCUSABLE it.setOnKeyListener(null) - it.setText("${item.startLen}") + it.setText(item.positionStart) } tvRockEndLen.let { it.focusable = EditText.NOT_FOCUSABLE it.setOnKeyListener(null) - it.setText("${item.endLen}") + it.setText(item.positionEnd) } tvRockType.let { it.focusable = EditText.NOT_FOCUSABLE it.setOnKeyListener(null) - it.setText(item.rockType) + it.setText(item.lithologyType) } container.addView(root) } diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/bean/WorkingFaceItem.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/bean/WorkingFaceItem.kt index df55b76..5e75e9c 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/bean/WorkingFaceItem.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/bean/WorkingFaceItem.kt @@ -1,9 +1,11 @@ package com.zmkg.coaloperation.bean +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelRoofLithologyEntity + data class WorkingFaceItem( var name: String? = "", var value: String? = "", - var items: MutableList? = null, + var items: MutableList? = null, var pageType:Int = 0 ) @@ -13,7 +15,7 @@ data class RockItem( val rockType: String = "" ) -data class WorkTeam( - var teamId:String, - var teamName: String +data class WorkOption( + var id:String, + var name: String ) diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/data/api/HomeApi.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/data/api/HomeApi.kt index b57bad0..07df248 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/data/api/HomeApi.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/data/api/HomeApi.kt @@ -1,11 +1,13 @@ package com.zmkg.coaloperation.data.api import com.zmkg.coaloperation.data.bean.ApiResponse +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity import com.zmkg.coaloperation.retorfit.UrlConfig import com.zmkg.coaloperation.ui.tunneling.bean.FaceWorkDetailBean import com.zmkg.coaloperation.ui.tunneling.bean.TunnelingHomeBean import com.zmkg.coaloperation.ui.tunneling.bean.TunnelingHomeItemBean import com.zmkg.coaloperation.ui.home.bean.WaterLedgerBean +import kotlinx.coroutines.flow.MutableSharedFlow import okhttp3.RequestBody import retrofit2.http.Body import retrofit2.http.GET @@ -48,4 +50,10 @@ interface HomeApi { @POST("/api/mine/tunnelling/surface/add") suspend fun postTunnellingSurfaceAdd(@Body requestBody: RequestBody): ApiResponse + @GET("/api/mine/tunnelling/surface/detailList") + suspend fun getTunnelHomeList(): ApiResponse?> + + @GET("/api/mine/tunnelling/dictionaries") + suspend fun getTunnelAllDict(): ApiResponse + } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/data/repository/HomeRepository.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/data/repository/HomeRepository.kt index 9c4546e..238a151 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/data/repository/HomeRepository.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/data/repository/HomeRepository.kt @@ -3,6 +3,7 @@ package com.zmkg.coaloperation.data.repository import com.zmkg.coaloperation.base.repository.BaseRepository import com.zmkg.coaloperation.data.api.HomeApi import com.zmkg.coaloperation.data.bean.ApiResponse +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity import com.zmkg.coaloperation.retorfit.RetrofitManager import com.zmkg.coaloperation.retorfit.RetrofitManager.toRequestBody import com.zmkg.coaloperation.superfuntion.toJson @@ -11,6 +12,7 @@ import com.zmkg.coaloperation.ui.tunneling.bean.TunnelingFaceAddBean import com.zmkg.coaloperation.ui.tunneling.bean.TunnelingHomeBean import com.zmkg.coaloperation.ui.tunneling.bean.TunnelingHomeItemBean import com.zmkg.coaloperation.ui.home.bean.WaterLedgerBean +import kotlinx.coroutines.flow.MutableSharedFlow object HomeRepository : BaseRepository(){ @@ -66,5 +68,16 @@ object HomeRepository : BaseRepository(){ } } + suspend fun getTunnelHomeList() : ApiResponse?> { + return apiCall { + service.getTunnelHomeList() + } + } + + suspend fun getTunnelAllDict() : ApiResponse { + return apiCall { + service.getTunnelAllDict() + } + } } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/AppDatabase.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/AppDatabase.kt index 2e414c2..7983871 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/AppDatabase.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/AppDatabase.kt @@ -19,7 +19,7 @@ import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceRecordEntity TunnelWorkingFaceRecordEntity::class, TunnelRoofLithologyEntity::class, ], - version = 3, + version = 1, exportSchema = true ) abstract class AppDatabase : RoomDatabase() { @@ -44,7 +44,7 @@ abstract class AppDatabase : RoomDatabase() { } }) // .addMigrations(MIGRATION_1_2) - .addMigrations(MIGRATION_2_3) +// .addMigrations(MIGRATION_2_3) .build() INSTANCE = instance instance diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelRoofLithologyDao.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelRoofLithologyDao.kt index 14cb94e..75c3330 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelRoofLithologyDao.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelRoofLithologyDao.kt @@ -2,6 +2,7 @@ package com.zmkg.coaloperation.db.dao import androidx.room.Dao import androidx.room.Insert +import androidx.room.OnConflictStrategy import androidx.room.Query import androidx.room.Update import com.zmkg.coaloperation.db.entiry.tunnel.TunnelRoofLithologyEntity @@ -11,18 +12,33 @@ interface TunnelRoofLithologyDao { @Insert fun insert(entity: TunnelRoofLithologyEntity): Long + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun insertList(list: MutableList): Array + @Update fun update(entity: TunnelRoofLithologyEntity) - @Query("SELECT * FROM tunnel_roof_lithology ORDER BY createTime ASC") - fun getEntityList(): MutableList? + @Query("SELECT * FROM tunnel_roof_lithology WHERE recordId = :recordId ORDER BY createTime ASC") + fun getEntityList(recordId: Long): MutableList? + + @Query("SELECT * FROM tunnel_roof_lithology WHERE dataState = :dataState ORDER BY createTime ASC") + fun getEntityListByState(dataState: String): MutableList? @Query("SELECT * FROM tunnel_roof_lithology WHERE surfaceId = :surfaceId ORDER BY createTime ASC") fun getEntityListByFaceId(surfaceId: Long): MutableList? @Query("SELECT * FROM tunnel_roof_lithology WHERE surfaceId = :surfaceId AND recordId = :recordId ORDER BY createTime ASC") - fun getEntityListByRecordId(surfaceId: Long, recordId: Long): MutableList? + fun getEntityListByRecordId( + surfaceId: Long, + recordId: Long + ): MutableList? @Query("SELECT * FROM tunnel_roof_lithology WHERE lithologyId = :lithologyId") fun getEntityById(lithologyId: Long): TunnelRoofLithologyEntity? + + @Query("DELETE FROM tunnel_roof_lithology") + fun deleteAll(): Int + + @Query("DELETE FROM tunnel_roof_lithology WHERE recordId = :recordId") + fun deleteList(recordId: Long): Int } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelWorkingFaceDao.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelWorkingFaceDao.kt index cf432b9..3266ae4 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelWorkingFaceDao.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelWorkingFaceDao.kt @@ -2,6 +2,7 @@ package com.zmkg.coaloperation.db.dao import androidx.room.Dao import androidx.room.Insert +import androidx.room.OnConflictStrategy import androidx.room.Query import androidx.room.Update import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity @@ -13,12 +14,21 @@ interface TunnelWorkingFaceDao { @Insert fun insert(entity: TunnelWorkingFaceEntity): Long + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun insertList(list: MutableList): Array + @Update fun update(entity: TunnelWorkingFaceEntity) @Query("SELECT * FROM tunnel_working_face ORDER BY createTime ASC") fun getEntityList(): MutableList? + @Query("SELECT * FROM tunnel_working_face WHERE dataState = :dataState ORDER BY createTime ASC") + fun getEntityListByState(dataState: String): MutableList? + @Query("SELECT * FROM tunnel_working_face WHERE surfaceId = :surfaceId") fun getEntityById(surfaceId: Long): TunnelWorkingFaceEntity? + + @Query("DELETE FROM tunnel_working_face") + fun deleteAll(): Int } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelWorkingFaceRecordDao.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelWorkingFaceRecordDao.kt index be61935..8dd8cab 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelWorkingFaceRecordDao.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelWorkingFaceRecordDao.kt @@ -2,8 +2,10 @@ package com.zmkg.coaloperation.db.dao import androidx.room.Dao import androidx.room.Insert +import androidx.room.OnConflictStrategy import androidx.room.Query import androidx.room.Update +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceRecordEntity //import kotlinx.coroutines.flow.Flow @@ -13,12 +15,21 @@ interface TunnelWorkingFaceRecordDao { @Insert fun insert(entity: TunnelWorkingFaceRecordEntity): Long + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun insertList(list: MutableList): Array + @Update fun update(entity: TunnelWorkingFaceRecordEntity) @Query("SELECT * FROM tunnel_working_face_record WHERE surfaceId = :surfaceId ORDER BY createTime ASC") fun getEntityList(surfaceId: Long): MutableList? + @Query("SELECT * FROM tunnel_working_face_record WHERE dataState = :dataState ORDER BY createTime ASC") + fun getEntityListByState(dataState: String): MutableList? + @Query("SELECT * FROM tunnel_working_face_record WHERE surfaceId = :recordId") fun getEntityById(recordId: Long): TunnelWorkingFaceRecordEntity + + @Query("DELETE FROM tunnel_working_face_record") + fun deleteAll(): Int } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelRoofLithologyEntity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelRoofLithologyEntity.kt index b557f01..59168f1 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelRoofLithologyEntity.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelRoofLithologyEntity.kt @@ -12,42 +12,51 @@ import java.time.LocalDateTime */ @Parcelize @Entity(tableName = "tunnel_roof_lithology") -class TunnelRoofLithologyEntity : Parcelable { +class TunnelRoofLithologyEntity ( /** * 岩性Id */ @PrimaryKey - var lithologyId: Long = 0 + var lithologyId: Long = 0, /** * 岩性类型名称 */ - var lithologyType: String = "" + var lithologyType: String = "", /** * 岩性值结束 */ - var positionEnd: String = "" + var positionEnd: String = "", /** * 岩性值起始 */ - var positionStart: String = "" + var positionStart: String = "", /** * 工作面id */ - var surfaceId: Long = 0 + var surfaceId: Long = 0, /** * 记录id */ - var recordId: Long = 0 + var recordId: Long = 0, /** * 创建时间 */ - var createTime: String = DateTimeUtil.formatDateTime(LocalDateTime.now()) + var createTime: String? = "", -} \ No newline at end of file + /** + * 更新时间 + */ + var updateTime: String? = DateTimeUtil.formatDateTime(LocalDateTime.now()), + + /** + * 数据状态:0-默认值,原始数据,1-已修改数据 + */ + var dataState: String = "0" +): Parcelable \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelWorkingFaceEntity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelWorkingFaceEntity.kt index 203b2d1..308680e 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelWorkingFaceEntity.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelWorkingFaceEntity.kt @@ -14,7 +14,7 @@ import java.time.LocalDateTime */ @Parcelize @Entity(tableName = "tunnel_working_face") -data class TunnelWorkingFaceEntity( +class TunnelWorkingFaceEntity( // @PrimaryKey(name = "faceId") val id: Int = 0 /** * 工作面id,本地新增数据使用时间戳保证唯一性 @@ -31,10 +31,12 @@ data class TunnelWorkingFaceEntity( * 总进尺 */ var totalFootage: String? = "", + /** * 累计进尺 */ var accumulativeFootage: String? = "", + /** * 剩余进尺 */ @@ -43,7 +45,7 @@ data class TunnelWorkingFaceEntity( /** * 所属煤层编号 */ - var seamId: Int? = 0, + var seamId: Long? = 0, /** * 所属煤层名称 @@ -53,7 +55,7 @@ data class TunnelWorkingFaceEntity( /** * 所属采区域编号 */ - var areaId: Int? = 0, + var areaId: Long? = 0, /** * 所属采区域 @@ -120,14 +122,27 @@ data class TunnelWorkingFaceEntity( */ var surfaceSupportForm: String? = "", - var createTime: String = DateTimeUtil.formatDateTime(LocalDateTime.now()), + /** + * 创建时间 + */ + var createTime: String? = "", + + /** + * 更新时间 + */ + var updateTime: String? = DateTimeUtil.formatDateTime(LocalDateTime.now()), + + /** + * 数据状态:0-默认值,原始数据,1-已修改数据 + */ + var dataState: String = "0", @Ignore - var recordList: MutableList? = null, + var records: MutableList? = null, + + @Ignore + var latestRecord: TunnelWorkingFaceRecordEntity? = null, @Ignore var isExpandRecord: Boolean = false -) : Parcelable { -// @Ignore -// constructor() : this(surfaceId = 0, recordList = null, isExpandRecord = false) -} \ No newline at end of file + ): Parcelable \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelWorkingFaceRecordEntity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelWorkingFaceRecordEntity.kt index 1545dc1..a231181 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelWorkingFaceRecordEntity.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelWorkingFaceRecordEntity.kt @@ -11,59 +11,82 @@ import java.time.LocalDateTime @Parcelize @Entity(tableName = "tunnel_working_face_record") -data class TunnelWorkingFaceRecordEntity( +data class TunnelWorkingFaceRecordEntity ( /** * 记录id */ @PrimaryKey var recordId: Long = 0, + /** * 工作面id */ var surfaceId: Long = 0, + /** * 施工日期 */ var workingDate: String? = null, + /** * 记录人 */ var recordPerson: String? = null, + /** * 施工班次 */ var teamShift: String? = null, + /** * 施工队伍id */ var teamId: String? = null, + /** * 施工队伍名称 */ var teamName: String? = null, + /** * 带队班长 */ var teamLeader: String? = null, + /** * 本班进尺 */ var workingFootage: String? = null, + /** * 煤层倾角 */ var seamDip: String? = null, + /** * 煤层高度 */ var seamHeight: String? = null, - var createTime: String = DateTimeUtil.formatDateTime(LocalDateTime.now()), + /** + * 创建时间 + */ + var createTime: String? = "", + + /** + * 更新时间 + */ + var updateTime: String? = DateTimeUtil.formatDateTime(LocalDateTime.now()), + + /** + * 数据状态:0-默认值,原始数据,1-已修改数据 + */ + var dataState: String = "0", + + @Ignore + var mineWorkingLithologyList: MutableList? = null, @Ignore var operationType: String = "1" -) : Parcelable { -// @Ignore -// constructor() : this(recordId = 0) -} +): Parcelable diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/repository/TunnelRoofLithologyRepository.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/repository/TunnelRoofLithologyRepository.kt index f2121fe..f12068d 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/repository/TunnelRoofLithologyRepository.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/repository/TunnelRoofLithologyRepository.kt @@ -6,14 +6,23 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext class TunnelRoofLithologyRepository(private val dao: TunnelRoofLithologyDao) { - suspend fun getEntityList() = withContext(Dispatchers.IO) { - dao.getEntityList() + suspend fun getEntityList(recordId: Long) = withContext(Dispatchers.IO) { + dao.getEntityList(recordId) + } + + suspend fun getEntityListByState(dataState: String) = withContext(Dispatchers.IO) { + dao.getEntityListByState(dataState) } suspend fun insert(entity: TunnelRoofLithologyEntity) = withContext(Dispatchers.IO) { dao.insert(entity) } + suspend fun insertList(list: MutableList) = + withContext(Dispatchers.IO) { + dao.insertList(list) + } + suspend fun update(entity: TunnelRoofLithologyEntity) = withContext(Dispatchers.IO) { dao.update(entity) } @@ -22,11 +31,21 @@ class TunnelRoofLithologyRepository(private val dao: TunnelRoofLithologyDao) { dao.getEntityListByFaceId(surfaceId) } - suspend fun getEntityListByRecordId(surfaceId: Long, recordId: Long) = withContext(Dispatchers.IO) { - dao.getEntityListByRecordId(surfaceId, recordId) - } + suspend fun getEntityListByRecordId(surfaceId: Long, recordId: Long) = + withContext(Dispatchers.IO) { + dao.getEntityListByRecordId(surfaceId, recordId) + } suspend fun getEntityById(lithologyId: Long) = withContext(Dispatchers.IO) { dao.getEntityById(lithologyId) } + + suspend fun deleteAll() = withContext(Dispatchers.IO) { + dao.deleteAll() + } + + suspend fun deleteList(recordId: Long) = withContext(Dispatchers.IO) { + dao.deleteList(recordId) + } + } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/repository/TunnelWorkingFaceRecordRepository.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/repository/TunnelWorkingFaceRecordRepository.kt index 845bc79..fe14ca4 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/repository/TunnelWorkingFaceRecordRepository.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/repository/TunnelWorkingFaceRecordRepository.kt @@ -10,10 +10,20 @@ class TunnelWorkingFaceRecordRepository(private val dao: TunnelWorkingFaceRecord dao.getEntityList(surfaceId) } + suspend fun getEntityListByState(dataState: String) = + withContext(Dispatchers.IO) { + dao.getEntityListByState(dataState) + } + suspend fun insert(entity: TunnelWorkingFaceRecordEntity) = withContext(Dispatchers.IO) { dao.insert(entity) } + suspend fun insertList(list: MutableList) = + withContext(Dispatchers.IO) { + dao.insertList(list) + } + suspend fun update(entity: TunnelWorkingFaceRecordEntity) = withContext(Dispatchers.IO) { dao.update(entity) } @@ -21,4 +31,8 @@ class TunnelWorkingFaceRecordRepository(private val dao: TunnelWorkingFaceRecord suspend fun getEntityById(faceId: Long) = withContext(Dispatchers.IO) { dao.getEntityById(faceId) } + suspend fun deleteAll() = withContext(Dispatchers.IO) { + dao.deleteAll() + } + } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/repository/TunnelWorkingFaceRepository.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/repository/TunnelWorkingFaceRepository.kt index 5c80803..923294f 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/repository/TunnelWorkingFaceRepository.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/repository/TunnelWorkingFaceRepository.kt @@ -10,10 +10,18 @@ class TunnelWorkingFaceRepository(private val dao: TunnelWorkingFaceDao) { dao.getEntityList() } + suspend fun getEntityListByState(dataState: String) = withContext(Dispatchers.IO) { + dao.getEntityListByState(dataState) + } + suspend fun insert(entity: TunnelWorkingFaceEntity) = withContext(Dispatchers.IO) { dao.insert(entity) } + suspend fun insertList(list: MutableList) = withContext(Dispatchers.IO) { + dao.insertList(list) + } + suspend fun update(entity: TunnelWorkingFaceEntity) = withContext(Dispatchers.IO) { dao.update(entity) } @@ -21,4 +29,7 @@ class TunnelWorkingFaceRepository(private val dao: TunnelWorkingFaceDao) { suspend fun getEntityById(faceId: Long) = withContext(Dispatchers.IO) { dao.getEntityById(faceId) } + suspend fun deleteAll() = withContext(Dispatchers.IO) { + dao.deleteAll() + } } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/viewmodel/TunnelRoofLithologyViewModel.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/viewmodel/TunnelRoofLithologyViewModel.kt index 2f9d290..8b27bf8 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/viewmodel/TunnelRoofLithologyViewModel.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/viewmodel/TunnelRoofLithologyViewModel.kt @@ -16,22 +16,32 @@ class TunnelRoofLithologyViewModel(application: Application) : AndroidViewModel( repository = TunnelRoofLithologyRepository(dao) } - fun getEntityList(action: (MutableList?) -> Unit) = + fun getEntityList(recordId: Long, action: (MutableList?) -> Unit) = viewModelScope.launch { - val list: MutableList? = repository.getEntityList() + val list: MutableList? = repository.getEntityList(recordId) action(list) } - fun getEntityList2( + fun getEntityListByState( + dataState: String, + action: (MutableList?) -> Unit + ) = + viewModelScope.launch { + val list: MutableList? = + repository.getEntityListByState(dataState) + action(list) + } + + fun getEntityListByFaceId( surfaceId: Long, action: (MutableList?) -> Unit ) = viewModelScope.launch { - val list: MutableList? = - repository.getEntityListByFaceId(surfaceId) - action(list) - } + val list: MutableList? = + repository.getEntityListByFaceId(surfaceId) + action(list) + } - fun getEntityList3( + fun getEntityListByRecordId( surfaceId: Long, recordId: Long, action: (MutableList?) -> Unit @@ -41,6 +51,12 @@ class TunnelRoofLithologyViewModel(application: Application) : AndroidViewModel( action(list) } + fun insertList(list: MutableList, action: () -> Unit = {}) = + viewModelScope.launch { + repository.insertList(list) + action() + } + fun insert(entity: TunnelRoofLithologyEntity, action: () -> Unit) = viewModelScope.launch { repository.insert(entity) action() @@ -57,5 +73,17 @@ class TunnelRoofLithologyViewModel(application: Application) : AndroidViewModel( entity?.let { action(it) } } + fun deleteList(recordId: Long, action: () -> Unit = {}) = + viewModelScope.launch { + repository.deleteList(recordId) + action() + } + + fun deleteAll(action: () -> Unit = {}) = + viewModelScope.launch { + repository.deleteAll() + action() + } + } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/viewmodel/TunnelWorkingFaceRecordViewModel.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/viewmodel/TunnelWorkingFaceRecordViewModel.kt index e61142a..b26014b 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/viewmodel/TunnelWorkingFaceRecordViewModel.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/viewmodel/TunnelWorkingFaceRecordViewModel.kt @@ -16,9 +16,23 @@ class TunnelWorkingFaceRecordViewModel(application: Application) : AndroidViewMo repository = TunnelWorkingFaceRecordRepository(dao) } - fun getEntityList(surfaceId: Long, action: (MutableList?) -> Unit) = + fun getEntityList( + surfaceId: Long, + action: (MutableList?) -> Unit + ) = viewModelScope.launch { - val list: MutableList? = repository.getEntityList(surfaceId) + val list: MutableList? = + repository.getEntityList(surfaceId) + action(list) + } + + fun getEntityListByState( + dataState: String, + action: (MutableList?) -> Unit + ) = + viewModelScope.launch { + val list: MutableList? = + repository.getEntityListByState(dataState) action(list) } @@ -27,6 +41,12 @@ class TunnelWorkingFaceRecordViewModel(application: Application) : AndroidViewMo action() } + fun insertList(list: MutableList, action: () -> Unit = {}) = + viewModelScope.launch { + repository.insertList(list) + action() + } + fun update(entity: TunnelWorkingFaceRecordEntity, action: () -> Unit) = viewModelScope.launch { repository.update(entity) action() @@ -36,5 +56,10 @@ class TunnelWorkingFaceRecordViewModel(application: Application) : AndroidViewMo repository.getEntityById(recordId) } + fun deleteAll(action: () -> Unit={}) = viewModelScope.launch { + repository.deleteAll() + action() + } + } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/viewmodel/TunnelWorkingFaceViewModel.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/viewmodel/TunnelWorkingFaceViewModel.kt index 407a5a3..dd3d45a 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/viewmodel/TunnelWorkingFaceViewModel.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/viewmodel/TunnelWorkingFaceViewModel.kt @@ -6,7 +6,9 @@ import androidx.lifecycle.viewModelScope import com.zmkg.coaloperation.db.AppDatabase import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity import com.zmkg.coaloperation.db.repository.TunnelWorkingFaceRepository +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext class TunnelWorkingFaceViewModel(application: Application) : AndroidViewModel(application) { private val repository: TunnelWorkingFaceRepository @@ -22,20 +24,39 @@ class TunnelWorkingFaceViewModel(application: Application) : AndroidViewModel(ap action(list) } + fun getEntityListByState( + dataState: String, + action: (MutableList?) -> Unit + ) = viewModelScope.launch { + val list: MutableList? = repository.getEntityListByState(dataState) + action(list) + } + fun insert(entity: TunnelWorkingFaceEntity, action: () -> Unit) = viewModelScope.launch { repository.insert(entity) action() } - fun update(entity: TunnelWorkingFaceEntity, action:()-> Unit) = viewModelScope.launch { + fun insertList(list: MutableList, action: () -> Unit = {}) = + viewModelScope.launch { + repository.insertList(list) + action() + } + + fun update(entity: TunnelWorkingFaceEntity, action: () -> Unit) = viewModelScope.launch { repository.update(entity) action() } - fun getEntityById(faceId: Long, action:(TunnelWorkingFaceEntity)-> Unit) = viewModelScope.launch { - val entity = repository.getEntityById(faceId) - entity?.let { action(it) } - } - + fun getEntityById(faceId: Long, action: (TunnelWorkingFaceEntity) -> Unit) = + viewModelScope.launch { + val entity = repository.getEntityById(faceId) + entity?.let { action(it) } + } + fun deleteAll(action: () -> Unit = {}) = + viewModelScope.launch { + repository.deleteAll() + action() + } } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/AddWorkingPointActivity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/AddWorkingPointActivity.kt index 747ba58..a196c99 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/AddWorkingPointActivity.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/AddWorkingPointActivity.kt @@ -10,19 +10,21 @@ import com.zmkg.coaloperation.R import com.zmkg.coaloperation.adapter.TunnelRoofLithologyAdapter import com.zmkg.coaloperation.base.BaseVMBActivity import com.zmkg.coaloperation.base.viewmodel.TestViewModel -import com.zmkg.coaloperation.bean.WorkTeam import com.zmkg.coaloperation.databinding.ActivityAddWorkingPointBinding import com.zmkg.coaloperation.db.entiry.tunnel.TunnelRoofLithologyEntity import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceRecordEntity import com.zmkg.coaloperation.db.viewmodel.TunnelRoofLithologyViewModel import com.zmkg.coaloperation.db.viewmodel.TunnelWorkingFaceRecordViewModel import com.zmkg.coaloperation.superfuntion.toJson +import com.zmkg.coaloperation.utils.DateTimeUtil +import com.zmkg.coaloperation.utils.DictUtils import com.zmkg.coaloperation.utils.KeyboardUtil import com.zmkg.coaloperation.utils.PickerUtil import com.zmkg.coaloperation.utils.clickWithDebounce import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode +import java.time.LocalDateTime /** * 开始记录 @@ -40,6 +42,7 @@ class AddWorkingPointActivity : private var showType = 0 private var surfaceId: Long = 0 + private var recordId: Long = 0 private var faceName: String? = null private var faceRecord: TunnelWorkingFaceRecordEntity? = null @@ -51,9 +54,9 @@ class AddWorkingPointActivity : private val roofLithologyViewModel: TunnelRoofLithologyViewModel by lazy { ViewModelProvider(this)[TunnelRoofLithologyViewModel::class.java] } - + private val roofLithologyList: MutableList = mutableListOf() - + private val roofLithologyAdapter: TunnelRoofLithologyAdapter by lazy { TunnelRoofLithologyAdapter(roofLithologyList) } @@ -61,7 +64,7 @@ class AddWorkingPointActivity : override fun initView(savedInstanceState: Bundle?) { mBinding.toolbarLay.vLine.visibility = View.GONE showType = intent.extras?.getInt(SHOW_TYPE) ?: 0 - mBinding.toolbarLay.title= if (showType == 0) "开始记录" else "修改记录" + mBinding.toolbarLay.title = if (showType == 0) "开始记录" else "修改记录" mBinding.btnSave.text = if (showType == 0) "保存" else "修改" // mBinding.toolbarLay.rightText = "" @@ -81,6 +84,7 @@ class AddWorkingPointActivity : faceName = intent.getStringExtra(FACE_NAME) if (showType == 0) { surfaceId = intent.getLongExtra(FACE_ID, 0L) + recordId = System.currentTimeMillis() } else if (showType == 1) { faceRecord = intent.getParcelableExtra(FACE_RECORD) if (faceRecord == null) { @@ -88,32 +92,21 @@ class AddWorkingPointActivity : return } surfaceId = faceRecord!!.surfaceId + recordId = faceRecord!!.recordId loadFaceRecord() } mBinding.tvFaceName.text = faceName - val teamList = mutableListOf() - teamList.add(WorkTeam(teamId = "1", teamName = "A地区第1施工队")) - teamList.add(WorkTeam(teamId = "2", teamName = "A地区第2施工队")) - teamList.add(WorkTeam(teamId = "3", teamName = "B地区第1施工队")) - teamList.add(WorkTeam(teamId = "4", teamName = "B地区第2施工队")) - teamList.add(WorkTeam(teamId = "5", teamName = "C地区第1施工队")) - teamList.add(WorkTeam(teamId = "6", teamName = "C地区第2施工队")) - teamList.add(WorkTeam(teamId = "7", teamName = "D地区第1施工队")) - teamList.add(WorkTeam(teamId = "8", teamName = "D地区第2施工队")) mBinding.tvWorkTeam.setOnClickListener { v -> - PickerUtil.showTeamsPicker(this, teamList) { team -> - mBinding.tvWorkTeam.text = team.teamName - mBinding.tvWorkTeam.tag = team.teamId + PickerUtil.showOptionPicker(this, "选择施工队伍", DictUtils.workTeamList) { option -> + mBinding.tvWorkTeam.text = option.name + mBinding.tvWorkTeam.tag = option.id } } - val workTypeList = mutableListOf() - workTypeList.add("早班") - workTypeList.add("中班") - workTypeList.add("晚班") mBinding.tvTeamShift.setOnClickListener { v -> - PickerUtil.showOptionsPicker(this, "请选择施工班次", workTypeList) { team -> - mBinding.tvTeamShift.text = team + PickerUtil.showOptionPicker(this, "请选择施工班次", DictUtils.workShiftList) { option -> + mBinding.tvTeamShift.text = option.name + mBinding.tvTeamShift.tag = option.id } } mBinding.btnAddPoint.clickWithDebounce { @@ -135,15 +128,30 @@ class AddWorkingPointActivity : it.layoutManager = LinearLayoutManager(this) it.adapter = roofLithologyAdapter } - - addRockPoint() + if (showType == 0) { + addRockPoint() + } else { + roofLithologyViewModel.getEntityList(recordId) { + if (it != null && it.isNotEmpty()) { + roofLithologyList.addAll(it) + roofLithologyAdapter.notifyDataSetChanged() + } else { + addRockPoint() + } + } + } } + + // TODO: 新增记录添加岩性数据,如果是修改,应该合并数据,后续处理 private fun addRockPoint() { roofLithologyList.add(TunnelRoofLithologyEntity().also { it.lithologyId = System.currentTimeMillis() it.surfaceId = surfaceId - it.recordId = if (showType == 1) faceRecord!!.recordId else System.currentTimeMillis() + it.recordId = recordId + + it.createTime = DateTimeUtil.formatDateTime(LocalDateTime.now()) + it.dataState = "1" }) // roofLithologyAdapter.notifyDataSetChanged() val pos = roofLithologyList.size @@ -202,7 +210,7 @@ class AddWorkingPointActivity : } val faceRecord = TunnelWorkingFaceRecordEntity().also { - it.recordId = System.currentTimeMillis() + it.recordId = recordId it.surfaceId = surfaceId it.workingDate = mBinding.tvWorkingDate.text.toString() it.teamShift = mBinding.tvTeamShift.text.toString() @@ -214,22 +222,25 @@ class AddWorkingPointActivity : it.seamDip = mBinding.etSeamDip.text.toString().trim() it.seamHeight = mBinding.etSeamHeight.text.toString().trim() it.recordPerson = mBinding.etRecordPerson.text.toString().trim() + + it.createTime = DateTimeUtil.formatDateTime(LocalDateTime.now()) + it.dataState = "1" } Log.d(TAG, "saveFaceRecord: ${roofLithologyList.toJson()}") workingFaceRecordViewModel.insert(faceRecord) { - roofLithologyList.forEach { - roofLithologyViewModel.insert(it) {} + roofLithologyViewModel.insertList(roofLithologyList) { + finish() } - finish() } } private fun loadFaceRecord() { faceRecord?.let { mBinding.tvWorkingDate.text = it.workingDate - mBinding.tvTeamShift.text = it.teamShift + mBinding.tvTeamShift.text = DictUtils.getTeamShift(it.teamShift) + mBinding.tvTeamShift.tag = it.teamShift mBinding.tvWorkTeam.text = it.teamName mBinding.tvWorkTeam.tag = it.teamId @@ -243,10 +254,10 @@ class AddWorkingPointActivity : private fun updateFaceRecord() { val faceRecord = TunnelWorkingFaceRecordEntity().also { - it.recordId = faceRecord!!.recordId + it.recordId = recordId it.surfaceId = surfaceId it.workingDate = mBinding.tvWorkingDate.text.toString() - it.teamShift = mBinding.tvTeamShift.text.toString() + it.teamShift = mBinding.tvTeamShift.tag.toString() it.teamName = mBinding.tvWorkTeam.text.toString() it.teamId = mBinding.tvWorkTeam.tag.toString() @@ -255,10 +266,17 @@ class AddWorkingPointActivity : it.seamDip = mBinding.etSeamDip.text.toString().trim() it.seamHeight = mBinding.etSeamHeight.text.toString().trim() it.recordPerson = mBinding.etRecordPerson.text.toString().trim() + + it.createTime = DateTimeUtil.formatDateTime(LocalDateTime.now()) + it.dataState = "1" } workingFaceRecordViewModel.update(faceRecord) { EventBus.getDefault().post(faceRecord) - finish() + roofLithologyViewModel.deleteList(recordId) { + roofLithologyViewModel.insertList(roofLithologyList) { + finish() + } + } } } diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/TunnelingActivity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/TunnelingActivity.kt index fc8789e..0cd814c 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/TunnelingActivity.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/TunnelingActivity.kt @@ -15,6 +15,7 @@ import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceRecordEntity import com.zmkg.coaloperation.db.viewmodel.TunnelWorkingFaceRecordViewModel import com.zmkg.coaloperation.db.viewmodel.TunnelWorkingFaceViewModel import com.zmkg.coaloperation.ui.tunneling.viewmodel.TunnelingViewModel +import com.zmkg.coaloperation.utils.DictUtils import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode @@ -25,13 +26,7 @@ class TunnelingActivity : BaseVMBActivity(R.layout.activity_tunneling) { companion object { - val FACE_RECORD_HEADER = TunnelWorkingFaceRecordEntity( - recordId = -1, - surfaceId = -1, - workingDate = "时间", - recordPerson = "记录人", - operationType = "0" - ) + const val TAG = "TunnelingActivity" } private val workingFaceViewModel: TunnelWorkingFaceViewModel by lazy { @@ -89,6 +84,7 @@ class TunnelingActivity : @SuppressLint("NotifyDataSetChanged") override fun initData() { + DictUtils.initData() workingFaceViewModel.getEntityList { it -> if (it.isNullOrEmpty()) { return@getEntityList @@ -102,6 +98,7 @@ class TunnelingActivity : override fun createObserve() { super.createObserve() + } @@ -118,9 +115,7 @@ class TunnelingActivity : } override fun onMessageEvent(event: Any?) { -// if (event is TunnelingWorkFaceRefreshEvent) { -// mViewModel.getTunnelingHomeData() -// } + } @SuppressLint("NotifyDataSetChanged") @@ -155,7 +150,7 @@ class TunnelingActivity : } @Subscribe(threadMode = ThreadMode.MAIN) - fun onFaceRecordEvent(event:TunnelWorkingFaceRecordEntity) { + fun onFaceRecordEvent(event: TunnelWorkingFaceRecordEntity) { //TODO 折叠子列表 } diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/WorkFaceActivity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/WorkFaceActivity.kt index a774ca5..70c1074 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/WorkFaceActivity.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/WorkFaceActivity.kt @@ -1,6 +1,5 @@ package com.zmkg.coaloperation.ui.tunneling.activity -import android.app.Activity import android.os.Bundle import android.text.TextUtils import android.view.View @@ -21,11 +20,15 @@ import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import org.greenrobot.eventbus.EventBus import androidx.core.view.isGone +import com.zmkg.coaloperation.bean.WorkOption +import com.zmkg.coaloperation.utils.DateTimeUtil +import com.zmkg.coaloperation.utils.DictUtils import com.zmkg.coaloperation.utils.PickerUtil import com.zmkg.coaloperation.utils.gone import com.zmkg.coaloperation.utils.visible import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode +import java.time.LocalDateTime /** * 工作面 @@ -101,49 +104,37 @@ class WorkFaceActivity : showDatePicker(it) } } - val seamNameList = mutableListOf() - seamNameList.add("煤层---A---") - seamNameList.add("煤层---B---") - seamNameList.add("煤层---C---") - seamNameList.add("煤层---D---") - seamNameList.add("煤层---E---") mBinding.tvSeamName.setOnClickListener { v -> - PickerUtil.showOptionsPicker(this, "请选择所属煤层", seamNameList) { option -> - mBinding.tvSeamName.text = option - mBinding.tvSeamName.tag = seamNameList.indexOf(option).toString() + PickerUtil.showOptionPicker(this, "请选择所属煤层", DictUtils.seamList) { option -> + mBinding.tvSeamName.text = option.name + mBinding.tvSeamName.tag = option.id + seamAreaList = DictUtils.areaMap[option.id]?:mutableListOf() } } - val areaNameList = mutableListOf() - areaNameList.add("采区---A---") - areaNameList.add("采区---B---") - areaNameList.add("采区---C---") - areaNameList.add("采区---D---") - areaNameList.add("采区---E---") mBinding.tvAreaName.setOnClickListener { v -> - PickerUtil.showOptionsPicker(this, "请选择所属采区域", areaNameList) { option -> - mBinding.tvAreaName.text = option - mBinding.tvAreaName.tag = areaNameList.indexOf(option).toString() + if (seamAreaList.isEmpty()) { + showToast("请先选择所属煤层") + return@setOnClickListener + } + PickerUtil.showOptionPicker(this, "请选择所属采区域", seamAreaList) { option -> + mBinding.tvAreaName.text = option.name + mBinding.tvAreaName.tag = option.id } } - val tunnelNatureList = mutableListOf() - tunnelNatureList.add("A0001") - tunnelNatureList.add("A0002") - tunnelNatureList.add("B0001") - tunnelNatureList.add("B0002") - tunnelNatureList.add("C0001") - tunnelNatureList.add("C0002") - tunnelNatureList.add("D0001") - tunnelNatureList.add("D0002") - tunnelNatureList.add("E0001") - tunnelNatureList.add("E0002") mBinding.tvTunnelNature.setOnClickListener { v -> - PickerUtil.showOptionsPicker(this, "请选择巷道性质", areaNameList) { option -> - mBinding.tvTunnelNature.text = option - mBinding.tvTunnelNature.tag = areaNameList.indexOf(option).toString() + PickerUtil.showOptionPicker( + this, + "请选择巷道性质", + DictUtils.seamRoadWayList + ) { option -> + mBinding.tvTunnelNature.text = option.name + mBinding.tvTunnelNature.tag = option.id } } } + private var seamAreaList: MutableList = mutableListOf() + private fun showDatePicker(tv: TextView) { tv.setOnClickListener { PickerUtil.showTimePicker(this, tv.text.toString().trim()) { date -> @@ -271,11 +262,11 @@ class WorkFaceActivity : it.seamName = mBinding.tvSeamName.text.toString().trim() if (it.seamName!!.isNotBlank()) { - it.seamId = mBinding.tvSeamName.tag.toString().toInt() + it.seamId = mBinding.tvSeamName.tag.toString().toLong() } it.areaName = mBinding.tvAreaName.text.toString().trim() if (it.areaName!!.isNotBlank()) { - it.areaId = mBinding.tvAreaName.tag.toString().toInt() + it.areaId = mBinding.tvAreaName.tag.toString().toLong() } it.surfaceAzimuth = mBinding.etSurfaceAzimuth.text.toString().trim() @@ -290,6 +281,9 @@ class WorkFaceActivity : it.seamGas = mBinding.etSeamGas.text.toString().trim() it.seamBumpPressure = mBinding.etSeamBumpPressure.text.toString().trim() it.surfaceSupportForm = mBinding.etSurfaceSupportForm.text.toString().trim() + + it.createTime = DateTimeUtil.formatDateTime(LocalDateTime.now()) + it.dataState = "1" } workingFaceViewModel.insert(workingFaceEntity) { showToast("工作面新增完成") @@ -341,6 +335,9 @@ class WorkFaceActivity : it.seamGas = mBinding.etSeamGas.text.toString().trim() it.seamBumpPressure = mBinding.etSeamBumpPressure.text.toString().trim() it.surfaceSupportForm = mBinding.etSurfaceSupportForm.text.toString().trim() + + it.createTime = DateTimeUtil.formatDateTime(LocalDateTime.now()) + it.dataState = "1" } workingFaceViewModel.update(workingFaceEntity) { showToast("工作面修改完成") @@ -354,8 +351,8 @@ class WorkFaceActivity : } - private fun string2num(text: String?): Int { - return if (text.isNullOrBlank()) 0 else text.toInt() + private fun string2num(text: String?): Long { + return if (text.isNullOrBlank()) 0 else text.toLong() } } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/WorkingPointActivity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/WorkingPointActivity.kt index 5893813..b2c0fa5 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/WorkingPointActivity.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/WorkingPointActivity.kt @@ -2,7 +2,9 @@ package com.zmkg.coaloperation.ui.tunneling.activity import android.annotation.SuppressLint import android.os.Bundle +import android.util.Log import android.view.View +import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.zmkg.coaloperation.R import com.zmkg.coaloperation.adapter.WorkingItemAdapter @@ -11,7 +13,11 @@ import com.zmkg.coaloperation.base.viewmodel.TestViewModel import com.zmkg.coaloperation.bean.RockItem import com.zmkg.coaloperation.bean.WorkingFaceItem import com.zmkg.coaloperation.databinding.ActivityWorkingPointBinding +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelRoofLithologyEntity import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceRecordEntity +import com.zmkg.coaloperation.db.viewmodel.TunnelRoofLithologyViewModel +import com.zmkg.coaloperation.utils.DictUtils +import com.zmkg.coaloperation.utils.toJsonString import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode @@ -22,6 +28,7 @@ class WorkingPointActivity : BaseVMBActivity(R.layout.activity_working_point) { companion object { + const val TAG = "WorkingPointActivity" const val FACE_NAME = "faceName" const val FACE_RECORD = "faceRecord" } @@ -29,6 +36,10 @@ class WorkingPointActivity : private var faceName: String? = null private var faceRecord: TunnelWorkingFaceRecordEntity? = null private val list: MutableList = mutableListOf() + + private val roofLithologyViewModel: TunnelRoofLithologyViewModel by lazy { + ViewModelProvider(this)[TunnelRoofLithologyViewModel::class.java] + } private val adapter by lazy { WorkingItemAdapter(list) } @@ -53,8 +64,13 @@ class WorkingPointActivity : override fun initData() { faceName = intent.getStringExtra(FACE_NAME) faceRecord = intent.getParcelableExtra(FACE_RECORD) + Log.d(TAG, "loadFaceRecord: ${faceRecord.toJsonString()}") faceRecord?.let { loadFaceRecord(it) + roofLithologyViewModel.getEntityList(it.recordId) { lithologyEntities -> + list[6].items = lithologyEntities + adapter.notifyItemChanged(6) + } } } @@ -63,15 +79,21 @@ class WorkingPointActivity : list.clear() list.add(WorkingFaceItem(pageType = 1, name = "工作面名称", value = faceName)) list.add(WorkingFaceItem(pageType = 1, name = "施工日期", value = it.workingDate)) - list.add(WorkingFaceItem(pageType = 1, name = "施工班次", value = it.teamShift)) + list.add( + WorkingFaceItem( + pageType = 1, + name = "施工班次", + value = DictUtils.getTeamShift(it.teamShift) + ) + ) list.add(WorkingFaceItem(pageType = 1, name = "施工队伍", value = it.teamName)) list.add(WorkingFaceItem(pageType = 1, name = "带班队长", value = it.teamLeader)) - list.add(WorkingFaceItem(pageType = 1, name = "本班进尺", value = it.workingFootage)) + list.add(WorkingFaceItem(pageType = 1, name = "本班进尺", value = it.workingFootage)) - val rockList = mutableListOf() - rockList.add(RockItem(startLen = 0, endLen = 1, rockType = "泥")) - rockList.add(RockItem(startLen = 0, endLen = 1, rockType = "砂")) - list.add(WorkingFaceItem(pageType = 1, name = "顶板岩性", value = "", items = rockList)) +// val rockList = mutableListOf() +// rockList.add(RockItem(startLen = 0, endLen = 1, rockType = "泥")) +// rockList.add(RockItem(startLen = 0, endLen = 1, rockType = "砂")) + list.add(WorkingFaceItem(pageType = 1, name = "顶板岩性", value = "", items = null)) list.add(WorkingFaceItem(pageType = 1, name = "煤层倾角", value = it.seamDip)) list.add(WorkingFaceItem(pageType = 1, name = "煤层高", value = it.seamHeight)) list.add(WorkingFaceItem(pageType = 1, name = "记录人", value = it.recordPerson)) @@ -86,7 +108,7 @@ class WorkingPointActivity : } @Subscribe(threadMode = ThreadMode.MAIN) - fun onFaceRecordEvent(event:TunnelWorkingFaceRecordEntity) { + fun onFaceRecordEvent(event: TunnelWorkingFaceRecordEntity) { faceRecord = event faceRecord?.let { loadFaceRecord(it) diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/bean/DictBean.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/bean/DictBean.kt new file mode 100644 index 0000000..c3af593 --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/bean/DictBean.kt @@ -0,0 +1,10 @@ +package com.zmkg.coaloperation.ui.tunneling.bean + +data class DictBean( + var seam_list: Map?, + var team_list: Map?, + var mine_team_shift: Map?, + var mine_tunnel_nature: Map?, + var surface_list: Map?, + var area_list:Map?>? +) \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/viewmodel/TunnelingViewModel.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/viewmodel/TunnelingViewModel.kt index 2f103b4..4243d21 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/viewmodel/TunnelingViewModel.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/viewmodel/TunnelingViewModel.kt @@ -2,11 +2,11 @@ package com.zmkg.coaloperation.ui.tunneling.viewmodel import com.zmkg.coaloperation.base.viewmodel.BaseViewModel import com.zmkg.coaloperation.data.repository.HomeRepository +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity import com.zmkg.coaloperation.superfuntion.handleRequest import com.zmkg.coaloperation.superfuntion.launch import com.zmkg.coaloperation.ui.tunneling.bean.FaceWorkDetailBean import com.zmkg.coaloperation.ui.tunneling.bean.TunnelingFaceAddBean -import com.zmkg.coaloperation.ui.tunneling.bean.TunnelingHomeBean import com.zmkg.coaloperation.ui.tunneling.bean.TunnelingHomeItemBean import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow @@ -18,7 +18,7 @@ import kotlinx.coroutines.flow.MutableStateFlow class TunnelingViewModel : BaseViewModel() { - var tunnelingHomeList = MutableSharedFlow?>() +// var tunnelingHomeList = MutableSharedFlow?>() var tunnelingHomeItemList = MutableSharedFlow?>() var tunnelingWorkFaceAdd = MutableSharedFlow()//新增面 var faceWorkDetailData = MutableStateFlow(null)//面详情 @@ -29,18 +29,18 @@ class TunnelingViewModel : BaseViewModel() { } - fun getTunnelingHomeData() { - launch( - { - handleRequest( - HomeRepository.getTunnelingHomeData(), - successBlock = { - tunnelingHomeList.emit(it.data) - - }) - } - ) - } +// fun getTunnelingHomeData() { +// launch( +// { +// handleRequest( +// HomeRepository.getTunnelingHomeData(), +// successBlock = { +// tunnelingHomeList.emit(it.data) +// +// }) +// } +// ) +// } fun getTunnelingHomeItemData(index: Int,surfaceId: String?) { launch( @@ -81,4 +81,31 @@ class TunnelingViewModel : BaseViewModel() { ) } + var tunnelFaceAndRecordList = MutableSharedFlow?>() + + fun getTunnelFaceAndRecordList() { + launch( + { + handleRequest( + HomeRepository.getTunnelHomeList(), + successBlock = { + tunnelFaceAndRecordList.emit(it.data) + }) + } + ) + } + var tunnelAllDict = MutableSharedFlow() + + fun getTunnelAllDict() { + launch( + { + handleRequest( + HomeRepository.getTunnelAllDict(), + successBlock = { + tunnelAllDict.emit(it.data) + }) + } + ) + } + } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/user/fragment/UserFragment.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/user/fragment/UserFragment.kt index 4a886a1..d7f192b 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/user/fragment/UserFragment.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/user/fragment/UserFragment.kt @@ -1,20 +1,50 @@ package com.zmkg.coaloperation.ui.user.fragment import android.os.Bundle +import android.util.Log import android.view.View +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle import com.zmkg.coaloperation.R import com.zmkg.coaloperation.base.BaseVMBFragment -import com.zmkg.coaloperation.base.viewmodel.TestViewModel import com.zmkg.coaloperation.databinding.FragmentUserBinding +import com.zmkg.coaloperation.db.viewmodel.TunnelRoofLithologyViewModel +import com.zmkg.coaloperation.db.viewmodel.TunnelWorkingFaceRecordViewModel +import com.zmkg.coaloperation.db.viewmodel.TunnelWorkingFaceViewModel +import com.zmkg.coaloperation.superfuntion.hideLoading import com.zmkg.coaloperation.superfuntion.logout +import com.zmkg.coaloperation.superfuntion.showLoading import com.zmkg.coaloperation.superfuntion.startLoginActivity +import com.zmkg.coaloperation.ui.tunneling.viewmodel.TunnelingViewModel import com.zmkg.coaloperation.ui.user.activity.AboutUsActivity import com.zmkg.coaloperation.ui.user.activity.CacheManageActivity import com.zmkg.coaloperation.ui.user.activity.NetworkConfigActivity +import com.zmkg.coaloperation.utils.SpTool +import com.zmkg.coaloperation.utils.toJsonString import com.zmkg.coaloperation.view.CommonDialog +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.launch class UserFragment : - BaseVMBFragment(R.layout.fragment_user) { + BaseVMBFragment(R.layout.fragment_user) { + + companion object { + const val TAG = "UserFragment" + } + + private val workingFaceViewModel: TunnelWorkingFaceViewModel by lazy { + ViewModelProvider(this)[TunnelWorkingFaceViewModel::class.java] + } + + private val workingFaceRecordViewModel: TunnelWorkingFaceRecordViewModel by lazy { + ViewModelProvider(this)[TunnelWorkingFaceRecordViewModel::class.java] + } + + private val roofLithologyViewModel: TunnelRoofLithologyViewModel by lazy { + ViewModelProvider(this)[TunnelRoofLithologyViewModel::class.java] + } private val updateDialog: CommonDialog by lazy { CommonDialog(requireContext(), R.layout.dialog_common_view) { @@ -35,6 +65,7 @@ class UserFragment : override fun initView(root: View?, savedInstanceState: Bundle?) { mBinding.apply { networkConfig.setOrderStateInfo("网络配置", R.mipmap.network) + dataPull.setOrderStateInfo("数据拉取", R.drawable.ic_data_pull) cacheManage.setOrderStateInfo("缓存管理", R.mipmap.buffer) checkUpdate.setOrderStateInfo("检查更新", R.mipmap.checkupdate) systemExit.setOrderStateInfo("系统退出", R.mipmap.systemexit) @@ -46,6 +77,7 @@ class UserFragment : mBinding.apply { addClickViews( networkConfig, + dataPull, cacheManage, checkUpdate, systemExit, @@ -61,6 +93,28 @@ class UserFragment : toActivity(NetworkConfigActivity::class.java) } + R.id.data_pull -> { + showLoading("加载中") + checkDataState { state -> + if (state) { + showToast("本地存在待提交的数据") + return@checkDataState + } + + workingFaceViewModel.deleteAll { + workingFaceRecordViewModel.deleteAll { + roofLithologyViewModel.deleteAll { + mViewModel.getTunnelFaceAndRecordList() + mViewModel.getTunnelAllDict() + mBinding.dataPull.postDelayed({ + hideLoading() + }, 3000) + } + } + } + } + } + R.id.cache_manage -> { toActivity(CacheManageActivity::class.java) } @@ -76,7 +130,77 @@ class UserFragment : R.id.about_us -> { toActivity(AboutUsActivity::class.java) } - } } + + override fun createObserve() { + super.createObserve() + lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.CREATED) { + launch { + getFaceAndRecordList() + } + launch { + getTunnelAllDict() + } + } + } + } + + private suspend fun getFaceAndRecordList() { + mViewModel.tunnelFaceAndRecordList.collectLatest { + Log.d(TAG, "getFaceAndRecordList: ${it.toJsonString()}") + it?.let { list -> + //保存工作面数据 + workingFaceViewModel.insertList(list) {} + list.forEach { faceEntity -> + faceEntity.records?.let { recordList -> + //保存工作面记录数据 + workingFaceRecordViewModel.insertList(recordList) + recordList.forEach { recordEntity -> + recordEntity.mineWorkingLithologyList?.let { lithologyList -> + //保存工作面记录顶板岩性数据 + roofLithologyViewModel.insertList(lithologyList) + } + } + } + } + } + } + } + + private suspend fun getTunnelAllDict() { + mViewModel.tunnelAllDict.collectLatest { + val dictJson = it.toJsonString() + Log.d(TAG, "getTunnelAllDict: $dictJson") + SpTool.put(SpTool.DICT_JSON, dictJson) + } + } + + /** + * 检查数据状态 + * @param block 入参true-有待提交数据,false-无待提交数据 + */ + private fun checkDataState(block: (Boolean) -> Unit) { + workingFaceViewModel.getEntityListByState("1") { faceList -> + if (faceList != null && faceList.isNotEmpty()) { + block(true) + return@getEntityListByState + } + workingFaceRecordViewModel.getEntityListByState("1") { recordList -> + if (recordList != null && recordList.isNotEmpty()) { + block(true) + return@getEntityListByState + } + roofLithologyViewModel.getEntityListByState("1") { lithologyList -> + if (lithologyList != null && lithologyList.isNotEmpty()) { + block(true) + return@getEntityListByState + } + block(false) + } + } + } + } + } diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/DictUtils.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/DictUtils.kt new file mode 100644 index 0000000..4fe5d5d --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/DictUtils.kt @@ -0,0 +1,59 @@ +package com.zmkg.coaloperation.utils + +import android.util.Log +import com.google.gson.internal.LazilyParsedNumber +import com.zmkg.coaloperation.bean.WorkOption +import com.zmkg.coaloperation.ui.tunneling.bean.DictBean + +object DictUtils { + + val workTeamList: MutableList = mutableListOf() + val workShiftList: MutableList = mutableListOf() + val seamList: MutableList = mutableListOf() + val areaMap: MutableMap> = mutableMapOf() + + val seamRoadWayList: MutableList = mutableListOf() + + fun initData() { + val dictJson = SpTool.getString(SpTool.DICT_JSON) + if (dictJson.isBlank()) { + return + } + val dict = dictJson.toObject() + workTeamList.clear() + dict?.team_list?.forEach { + workTeamList.add(WorkOption(id = it.key, name = it.value)) + } + workShiftList.clear() + dict?.mine_team_shift?.forEach { + workShiftList.add(WorkOption(id = it.key, name = it.value)) + } + seamList.clear() + dict?.seam_list?.forEach { + seamList.add(WorkOption(id = it.key, name = it.value)) + } + seamRoadWayList.clear() + dict?.mine_tunnel_nature?.forEach { + seamRoadWayList.add(WorkOption(id = it.key, name = it.value)) + } + areaMap.clear() + var tempList: MutableList? + dict?.area_list?.forEach { + if (areaMap.contains(it.key)) { + tempList = areaMap[it.key] + } else { + tempList =mutableListOf() + areaMap.put(it.key, tempList) + } + val seamId: LazilyParsedNumber = it.value?.get("seamId") as LazilyParsedNumber + //Log.d("DictUtils", "initData: idType= ${seamId?.javaClass?.name}, id=${seamId.toInt()},name=${it.value?.get("areaName")}") + tempList?.add(WorkOption(id = ""+ seamId.toInt(), ""+ it.value?.get("areaName"))) + } + } + + fun getTeamShift(shift: String?): String { + if (shift == null) return "" + return workShiftList.firstOrNull { it.id == shift }?.name ?: shift + } + +} \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/Ext.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/Ext.kt index adabc16..86a3d9d 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/Ext.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/Ext.kt @@ -1,5 +1,7 @@ package com.zmkg.coaloperation.utils +import android.annotation.SuppressLint +import android.content.SharedPreferences import android.view.View import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -28,4 +30,28 @@ fun View.invisible() { fun View.gone() { visibility = View.GONE +} + +@SuppressLint("ApplySharedPref") +inline fun SharedPreferences.edit( + commit: Boolean = false, + action: SharedPreferences.Editor.() -> Unit +) { + val editor = edit() + action(editor) + if (commit) editor.commit() else editor.apply() +} + +fun SharedPreferences.put(vararg pairs: Pair) { + edit { + pairs.forEach { (key, value) -> + when (value) { + is Int -> putInt(key, value) + is String -> putString(key, value) + is Boolean -> putBoolean(key, value) + is Float -> putFloat(key, value) + is Long -> putLong(key, value) + } + } + } } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/GsonExt.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/GsonExt.kt index 9b4406c..f663cfc 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/GsonExt.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/GsonExt.kt @@ -1,16 +1,26 @@ package com.zmkg.coaloperation.utils import com.google.gson.Gson +import com.google.gson.GsonBuilder +import com.google.gson.ToNumberPolicy import com.google.gson.reflect.TypeToken -inline fun String.toType(gson: Gson? = null, typeToken: TypeToken): T { + +var gson: Gson? = GsonBuilder() +// .setNumberToNumberStrategy(ToNumberPolicy.LONG_OR_DOUBLE) +// .setNumberToObjectStrategy(ToNumberPolicy.STRING) + .setObjectToNumberStrategy(ToNumberPolicy.LAZILY_PARSED_NUMBER) + .create() + + +inline fun String.toType(typeToken: TypeToken): T { return (gson ?: Gson()).fromJson(this, typeToken.type) } -inline fun String.toObject(gson: Gson? = null): T { +inline fun String.toObject(): T { return (gson ?: Gson()).fromJson(this, T::class.java) } -fun Any?.toJsonString(gson: Gson? = null): String { +fun Any?.toJsonString(): String { return (gson ?: Gson()).toJson(this) ?: "" } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/PickerUtil.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/PickerUtil.kt index ed892d4..f6568f2 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/PickerUtil.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/PickerUtil.kt @@ -2,16 +2,11 @@ package com.zmkg.coaloperation.utils import android.content.Context import android.graphics.Color -import android.view.View import com.bigkoo.pickerview.builder.OptionsPickerBuilder import com.bigkoo.pickerview.builder.TimePickerBuilder -import com.bigkoo.pickerview.listener.OnOptionsSelectListener -import com.bigkoo.pickerview.listener.OnTimeSelectListener -import com.zmkg.coaloperation.bean.WorkTeam -import okio.Options +import com.zmkg.coaloperation.bean.WorkOption import java.text.SimpleDateFormat import java.util.Calendar -import java.util.Date import java.util.Locale @@ -47,19 +42,19 @@ object PickerUtil { } // 三级联动选择器示例 - fun showTeamsPicker(context: Context, options: List, action: (WorkTeam) -> Unit) { + fun showOptionPicker(context: Context, title:String, options: List, action: (WorkOption) -> Unit) { OptionsPickerBuilder(context) { opt1, _, _, _ -> action(options[opt1]) }.apply { - setTitleText("选择施工队伍") + setTitleText(title) setContentTextSize(18) setOutSideCancelable(true) }.build().apply { - setPicker( options.map { it.teamName } , null, null) + setPicker( options.map { it.name } , null, null) show() } } - fun showOptionsPicker(context: Context, title:String, options: List, action: (String) -> Unit) { + fun showTextPicker(context: Context, title:String, options: List, action: (String) -> Unit) { OptionsPickerBuilder(context) { opt1, _, _, _ -> action(options[opt1]) }.apply { diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/SpTool.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/SpTool.kt new file mode 100644 index 0000000..d5033fc --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/SpTool.kt @@ -0,0 +1,27 @@ +package com.zmkg.coaloperation.utils + +import com.zmkg.coaloperation.MyApplication +import kotlin.to + +object SpTool { + + const val DICT_JSON = "dictJson" + + val pref = MyApplication.getSharedPref()!! + + fun put(key: String, value: Any) { + pref.put(key to value) + } + + fun getInt(key: String, defValue: Int = 0): Int { + return pref.getInt(key, defValue) + } + + fun getString(key: String, defValue: String? = ""): String { + return pref.getString(key, defValue) ?: "" + } + + fun getBoolean(key: String, defValue: Boolean = false): Boolean { + return pref.getBoolean(key, defValue) + } +} \ No newline at end of file diff --git a/coalMiningApp/app/src/main/res/drawable-xxhdpi/ic_data_pull.png b/coalMiningApp/app/src/main/res/drawable-xxhdpi/ic_data_pull.png new file mode 100644 index 0000000000000000000000000000000000000000..8a9ddd9e0bd86472d6a19f7e7f16e23ed48d9ef9 GIT binary patch literal 5743 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 h00006Nkl + +