From cc5ea0f2c6dc9fd1a72c1fef01fd4457e19c0b79 Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Thu, 11 Sep 2025 18:03:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=9C=AC=E5=9C=B0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E4=BF=9D=E5=AD=98=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- coalMiningApp/app/build.gradle | 27 +- .../app/src/main/AndroidManifest.xml | 3 +- .../com/zmkg/coaloperation/MainActivity.kt | 8 +- .../com/zmkg/coaloperation/MyApplication.kt | 44 +-- .../adapter/TunnelRoofLithologyAdapter.kt | 54 ++++ .../adapter/TunnelWorkingFaceAdapter.kt | 92 ++++++ .../adapter/TunnelWorkingFaceRecordAdapter.kt | 60 ++++ .../adapter/WorkingItemAdapter.kt | 4 +- .../coaloperation/bean/WorkingFaceItem.kt | 9 +- .../com/zmkg/coaloperation/db/AppDatabase.kt | 99 ++++++ .../db/dao/TunnelRoofLithologyDao.kt | 28 ++ .../db/dao/TunnelWorkingFaceDao.kt | 24 ++ .../db/dao/TunnelWorkingFaceRecordDao.kt | 24 ++ .../coaloperation/db/entiry/OtherEntity.kt | 4 + .../tunnel/TunnelRoofLithologyEntity.kt | 53 ++++ .../entiry/tunnel/TunnelWorkingFaceEntity.kt | 133 ++++++++ .../tunnel/TunnelWorkingFaceRecordEntity.kt | 69 ++++ .../TunnelRoofLithologyRepository.kt | 32 ++ .../TunnelWorkingFaceRecordRepository.kt | 24 ++ .../repository/TunnelWorkingFaceRepository.kt | 24 ++ .../viewmodel/TunnelRoofLithologyViewModel.kt | 61 ++++ .../TunnelWorkingFaceRecordViewModel.kt | 40 +++ .../viewmodel/TunnelWorkingFaceViewModel.kt | 41 +++ .../superfuntion/BaseActivityFuntion.kt | 92 +++--- .../activity/AddWorkingPointActivity.kt | 243 ++++++++++++-- .../tunneling/activity/TunnelingActivity.kt | 234 +++++++------- .../ui/tunneling/activity/WorkFaceActivity.kt | 297 +++++++++++++++--- .../activity/WorkingFaceDetail2Activity.kt | 97 +++--- .../activity/WorkingFaceDetailActivity.kt | 124 +++++--- .../activity/WorkingPointActivity.kt | 57 +++- .../tunneling/adapter/TunnelingHomeAdapter.kt | 128 ++++---- .../adapter/TunnelingHomeListAdapter.kt | 54 ++-- .../zmkg/coaloperation/utils/DateTimeUtil.kt | 32 ++ .../java/com/zmkg/coaloperation/utils/Ext.kt | 12 + .../zmkg/coaloperation/utils/KeyboardUtil.kt | 17 + .../zmkg/coaloperation/utils/PickerUtil.kt | 37 ++- .../zmkg/coaloperation/view/CRecyclerView.kt | 42 +++ .../coaloperation/view/NestedRecyclerView.kt | 65 ++++ .../drawable-xxhdpi/ic_arrow_down_white.png | Bin 0 -> 369 bytes .../drawable-xxhdpi/ic_arrow_down_white2.png | Bin 0 -> 2443 bytes .../drawable-xxhdpi/ic_arrow_right_gray.png | Bin 0 -> 354 bytes .../drawable-xxhdpi/ic_arrow_up_white2.png | Bin 0 -> 2026 bytes .../res/drawable-xxhdpi/ic_geological.png | Bin 0 -> 1600 bytes .../src/main/res/drawable/bg_stroke_gray.xml | 4 +- .../src/main/res/drawable/scrollbar_thumb.xml | 12 + .../res/layout/activity_add_working_point.xml | 45 ++- .../main/res/layout/activity_tunneling.xml | 4 +- .../main/res/layout/activity_work_face.xml | 106 +++---- .../main/res/layout/item_geological_list.xml | 7 +- .../layout/list_item_tunnel_working_face.xml | 109 +++++++ .../list_item_tunnel_working_face_record.xml | 74 +++++ .../res/layout/list_item_working_face.xml | 2 +- .../res/mipmap-xhdpi/arrow_down_white.png | Bin 253 -> 0 bytes .../main/res/mipmap-xhdpi/arrow_up_white.png | Bin 249 -> 0 bytes .../res/mipmap-xhdpi/ic_arrow_down_white.png | Bin 224 -> 0 bytes .../main/res/mipmap-xhdpi/ic_arrow_right.png | Bin 247 -> 0 bytes .../main/res/mipmap-xhdpi/ic_geological.png | Bin 880 -> 0 bytes .../app/src/main/res/values/colors.xml | 1 + coalMiningApp/build.gradle | 3 +- coalMiningApp/config.gradle | 7 +- coalMiningApp/settings.gradle | 88 +++--- 61 files changed, 2335 insertions(+), 615 deletions(-) create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelRoofLithologyAdapter.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingFaceAdapter.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingFaceRecordAdapter.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/AppDatabase.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelRoofLithologyDao.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelWorkingFaceDao.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelWorkingFaceRecordDao.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/OtherEntity.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelRoofLithologyEntity.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelWorkingFaceEntity.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelWorkingFaceRecordEntity.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/repository/TunnelRoofLithologyRepository.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/repository/TunnelWorkingFaceRecordRepository.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/repository/TunnelWorkingFaceRepository.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/viewmodel/TunnelRoofLithologyViewModel.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/viewmodel/TunnelWorkingFaceRecordViewModel.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/viewmodel/TunnelWorkingFaceViewModel.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/DateTimeUtil.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/KeyboardUtil.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/view/CRecyclerView.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/view/NestedRecyclerView.kt create mode 100644 coalMiningApp/app/src/main/res/drawable-xxhdpi/ic_arrow_down_white.png create mode 100644 coalMiningApp/app/src/main/res/drawable-xxhdpi/ic_arrow_down_white2.png create mode 100644 coalMiningApp/app/src/main/res/drawable-xxhdpi/ic_arrow_right_gray.png create mode 100644 coalMiningApp/app/src/main/res/drawable-xxhdpi/ic_arrow_up_white2.png create mode 100644 coalMiningApp/app/src/main/res/drawable-xxhdpi/ic_geological.png create mode 100644 coalMiningApp/app/src/main/res/drawable/scrollbar_thumb.xml create mode 100644 coalMiningApp/app/src/main/res/layout/list_item_tunnel_working_face.xml create mode 100644 coalMiningApp/app/src/main/res/layout/list_item_tunnel_working_face_record.xml delete mode 100644 coalMiningApp/app/src/main/res/mipmap-xhdpi/arrow_down_white.png delete mode 100644 coalMiningApp/app/src/main/res/mipmap-xhdpi/arrow_up_white.png delete mode 100644 coalMiningApp/app/src/main/res/mipmap-xhdpi/ic_arrow_down_white.png delete mode 100644 coalMiningApp/app/src/main/res/mipmap-xhdpi/ic_arrow_right.png delete mode 100644 coalMiningApp/app/src/main/res/mipmap-xhdpi/ic_geological.png diff --git a/coalMiningApp/app/build.gradle b/coalMiningApp/app/build.gradle index d6bb639..0e93e43 100644 --- a/coalMiningApp/app/build.gradle +++ b/coalMiningApp/app/build.gradle @@ -20,6 +20,12 @@ android { // 选择实际需要的cpu架构 abiFilters 'armeabi-v7a', 'arm64-v8a'//,'armeabi'//, 'x86', 'x86_64' } + // Kotlin项目配置 + kapt { + arguments { + arg("room.schemaLocation", "$projectDir/schemas") + } + } } signingConfigs{ @@ -86,25 +92,16 @@ dependencies { api rootProject.ext.commonLibs - api project(':tuichat') - api project(':tuicontact') - api project(':tuiconversation') - api project(':tuicallkit') +// api project(':tuichat') +// api project(':tuicontact') +// api project(':tuiconversation') +// api project(':tuicallkit') // annotationProcessor 'com.google.auto.service:auto-service:1.1.1' implementation 'com.contrarywind:Android-PickerView:4.1.9' // ViewModel -// implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.0" + implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.6.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1" - // Retrofit -// implementation "com.squareup.retrofit2:retrofit:2.9.0" -// implementation "com.squareup.retrofit2:converter-gson:2.9.0" - - // OkHttp -// implementation "com.squareup.okhttp3:okhttp:4.11.0" -// implementation "com.squareup.okhttp3:logging-interceptor:4.11.0" - - // Coroutines -// implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1" } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/AndroidManifest.xml b/coalMiningApp/app/src/main/AndroidManifest.xml index 90a7096..4c35391 100644 --- a/coalMiningApp/app/src/main/AndroidManifest.xml +++ b/coalMiningApp/app/src/main/AndroidManifest.xml @@ -37,7 +37,8 @@ - + \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/MainActivity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/MainActivity.kt index e57666c..f0479b7 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/MainActivity.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/MainActivity.kt @@ -3,7 +3,7 @@ package com.zmkg.coaloperation import android.os.Bundle import android.view.View import androidx.fragment.app.Fragment -import com.tencent.qcloud.tuikit.tuiconversation.classicui.page.TUIConversationFragmentContainer +//import com.tencent.qcloud.tuikit.tuiconversation.classicui.page.TUIConversationFragmentContainer import com.zmkg.coaloperation.base.BaseVMBActivity import com.zmkg.coaloperation.base.viewmodel.TestViewModel import com.zmkg.coaloperation.bottomtab.HomeBottomTabLayout @@ -59,9 +59,9 @@ class MainActivity : BaseVMBActivity(R.layou return ReportFragment() } - TAG_MESSAGE -> { - return TUIConversationFragmentContainer() - } +// TAG_MESSAGE -> { +// return TUIConversationFragmentContainer() +// } TAG_MY -> { return UserFragment() 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 d991041..4575a92 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/MyApplication.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/MyApplication.kt @@ -12,8 +12,8 @@ import androidx.lifecycle.ViewModelStoreOwner import androidx.multidex.MultiDex import com.orhanobut.logger.AndroidLogAdapter import com.orhanobut.logger.Logger -import com.tencent.qcloud.tuicore.TUILogin -import com.tencent.qcloud.tuicore.interfaces.TUILoginListener +//import com.tencent.qcloud.tuicore.TUILogin +//import com.tencent.qcloud.tuicore.interfaces.TUILoginListener import com.zmkg.coaloperation.local.DataStoreManager import com.zmkg.coaloperation.retorfit.UrlConfig import com.zmkg.coaloperation.superfuntion.loginIm @@ -63,24 +63,24 @@ class MyApplication : Application(), ViewModelStoreOwner { } fun initLoginStatusListener() { - TUILogin.addLoginListener(loginStatusListener) +// TUILogin.addLoginListener(loginStatusListener) } - private val loginStatusListener: TUILoginListener = object : TUILoginListener() { - override fun onKickedOffline() { - if (UrlConfig.isOpenIm){ - startLoginActivity(CustomActivityManager.getInstance().currentActivity()) - } - } - - override fun onUserSigExpired() { - if (TextUtils.isEmpty(DataStoreManager.getUserName())) { - startLoginActivity(appContext) - } else { - loginIm(DataStoreManager.getUserName()){ } - } - } - } +// private val loginStatusListener: TUILoginListener = object : TUILoginListener() { +// override fun onKickedOffline() { +// if (UrlConfig.isOpenIm){ +// startLoginActivity(CustomActivityManager.getInstance().currentActivity()) +// } +// } +// +// override fun onUserSigExpired() { +// if (TextUtils.isEmpty(DataStoreManager.getUserName())) { +// startLoginActivity(appContext) +// } else { +// loginIm(DataStoreManager.getUserName()){ } +// } +// } +// } /** 获取一个全局的ViewModel */ @@ -201,9 +201,11 @@ class MyApplication : Application(), ViewModelStoreOwner { // } // } + override val viewModelStore: ViewModelStore + get() = mAppViewModelStore!! - override fun getViewModelStore(): ViewModelStore { - return mAppViewModelStore!! - } +// override fun getViewModelStore(): ViewModelStore { +// return mAppViewModelStore!! +// } } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelRoofLithologyAdapter.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelRoofLithologyAdapter.kt new file mode 100644 index 0000000..e7f5b9e --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelRoofLithologyAdapter.kt @@ -0,0 +1,54 @@ +package com.zmkg.coaloperation.adapter + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.core.widget.addTextChangedListener +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.zmkg.coaloperation.R +import com.zmkg.coaloperation.databinding.ListItemRockBinding +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelRoofLithologyEntity + +class TunnelRoofLithologyAdapter(var list: MutableList) : + BaseQuickAdapter( + R.layout.list_item_rock, list + ) { + + inner class VH(var binding: ListItemRockBinding) : BaseViewHolder(binding.root) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH { + val binding = ListItemRockBinding.inflate( + LayoutInflater.from(context), + parent, + false + ) + return VH(binding).also { + bindViewClickListener(it, viewType) + } + } + + override fun convert(holder: VH, item: TunnelRoofLithologyEntity) { + holder.binding.let { + it.root.tag = item.lithologyId + it.tvRockStartLen.run { + addTextChangedListener(onTextChanged = { text, start, before, count -> + item.positionStart = text.toString().trim() + }) + setText(item.positionStart) + } + it.tvRockEndLen.run { + addTextChangedListener(onTextChanged = { text, start, before, count -> + item.positionEnd = text.toString().trim() + }) + setText(item.positionEnd) + } + it.tvRockType.run { + addTextChangedListener(onTextChanged = { text, start, before, count -> + item.lithologyType = text.toString().trim() + }) + setText(item.lithologyType) + } + } + } + +} \ No newline at end of file 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 new file mode 100644 index 0000000..24c0f83 --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingFaceAdapter.kt @@ -0,0 +1,92 @@ +package com.zmkg.coaloperation.adapter + +import android.annotation.SuppressLint +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.core.view.updateLayoutParams +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.zmkg.coaloperation.R +import com.zmkg.coaloperation.databinding.ListItemTunnelWorkingFaceBinding +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 + +class TunnelWorkingFaceAdapter(var list: MutableList) : + BaseQuickAdapter( + R.layout.list_item_tunnel_working_face, list + ) { + + + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH { + val inflater = LayoutInflater.from(context) + val binding = ListItemTunnelWorkingFaceBinding.inflate(inflater, parent, false) + return VH(binding).also { + bindViewClickListener(it, viewType) + } + } + + @SuppressLint("ClickableViewAccessibility") + override fun convert( + holder: VH, + item: TunnelWorkingFaceEntity + ) { + holder.binding.let { binding -> + binding.includeHeader.root.isEnabled = false + binding.tvWorkingFaceName.text = item.surfaceName + binding.llFaceRecord.visibility = if (item.isExpandRecord) View.VISIBLE else View.GONE + binding.ivExpandRecord.setImageResource( + if (item.isExpandRecord) R.drawable.ic_arrow_down_white else R.drawable.ic_arrow_right_gray + ) + binding.ivExpandRecord.tag = item.isExpandRecord.toString() + binding.rvFaceRecord.let { rv -> + rv.layoutManager = LinearLayoutManager(context) + if (item.recordList == null) { + item.recordList = mutableListOf() + } + val size = item.recordList!!.size + rv.updateLayoutParams { + height = if (size >= 3) + ScreenUtil.dp2px(150F) + else + RecyclerView.LayoutParams.WRAP_CONTENT + } + 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 { + setOnItemClickListener { adapter, view, recordPosition -> +// if (recordPosition == 0) { +// //0为头部表示,不需要点击操作 +// return@setOnItemClickListener +// } + 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] + ) + }) + } + } + } + } + } + } + } + + inner class VH(var binding: ListItemTunnelWorkingFaceBinding) : BaseViewHolder(binding.root) + + init { + addChildClickViewIds(R.id.start_record, R.id.ivExpandRecord) + } + +} \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingFaceRecordAdapter.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingFaceRecordAdapter.kt new file mode 100644 index 0000000..cd751cb --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingFaceRecordAdapter.kt @@ -0,0 +1,60 @@ +package com.zmkg.coaloperation.adapter + +import android.graphics.Color +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.zmkg.coaloperation.R +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceRecordEntity +import androidx.core.graphics.toColorInt +import com.zmkg.coaloperation.databinding.ListItemTunnelWorkingFaceRecordBinding + +class TunnelWorkingFaceRecordAdapter(var list: MutableList) : + BaseQuickAdapter( + R.layout.list_item_tunnel_working_face_record, list + ) { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH { + val inflater = LayoutInflater.from(context) + val binding = ListItemTunnelWorkingFaceRecordBinding.inflate(inflater, parent, false) + return VH(binding).also { + bindViewClickListener(it, viewType) + } + } + + override fun convert( + holder: VH, + item: TunnelWorkingFaceRecordEntity + ) { + val position = holder.layoutPosition + holder.binding.let { +// if (position == 0) { +// it.time.setTextColor(Color.WHITE) +// it.time.textSize = 14f +// it.record.setTextColor(Color.WHITE) +// it.record.textSize = 14f +// it.operation.setTextColor(Color.WHITE) +// it.operation.textSize = 14f +// } else { + it.time.setTextColor("#FF6A6F87".toColorInt()) + it.time.textSize = 12f + it.record.setTextColor("#FF6A6F87".toColorInt()) + it.record.textSize = 12f + it.operation.setTextColor("#FFA3FEA6".toColorInt()) + it.operation.textSize = 12f +// } + it.time.text = item.workingDate + it.record.text = item.recordPerson + it.operation.text = if (item.operationType == "1") "查看" else "操作" + it.divider.visibility = + if (position == list.size - 1) View.GONE else View.VISIBLE + } + + } + + inner class VH(var binding: ListItemTunnelWorkingFaceRecordBinding) : + BaseViewHolder(binding.root) + +} \ No newline at end of file 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 57aae89..364edf3 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 @@ -27,7 +27,9 @@ class WorkingItemAdapter(data: MutableList) : parent, false ) - return VH(binding) + return VH(binding).also { + bindViewClickListener(it, viewType) + } } override fun convert( 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 40c6d46..df55b76 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,8 +1,8 @@ package com.zmkg.coaloperation.bean data class WorkingFaceItem( - var name: String = "", - var value: String = "", + var name: String? = "", + var value: String? = "", var items: MutableList? = null, var pageType:Int = 0 ) @@ -12,3 +12,8 @@ data class RockItem( var endLen: Int = 0, val rockType: String = "" ) + +data class WorkTeam( + var teamId:String, + var teamName: String +) 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 new file mode 100644 index 0000000..2e414c2 --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/AppDatabase.kt @@ -0,0 +1,99 @@ +package com.zmkg.coaloperation.db + +import android.content.Context +import androidx.room.Database +import androidx.room.Room +import androidx.room.RoomDatabase +import androidx.room.migration.Migration +import androidx.sqlite.db.SupportSQLiteDatabase +import com.zmkg.coaloperation.db.dao.TunnelRoofLithologyDao +import com.zmkg.coaloperation.db.dao.TunnelWorkingFaceDao +import com.zmkg.coaloperation.db.dao.TunnelWorkingFaceRecordDao +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelRoofLithologyEntity +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceRecordEntity + +@Database( + entities = [ + TunnelWorkingFaceEntity::class, + TunnelWorkingFaceRecordEntity::class, + TunnelRoofLithologyEntity::class, + ], + version = 3, + exportSchema = true +) +abstract class AppDatabase : RoomDatabase() { + abstract fun tunnelWorkingFaceDao(): TunnelWorkingFaceDao + abstract fun tunnelWorkingFaceRecordDao(): TunnelWorkingFaceRecordDao + abstract fun tunnelRoofLithologyDao(): TunnelRoofLithologyDao + + companion object { + @Volatile + private var INSTANCE: AppDatabase? = null + + fun getDatabase(context: Context): AppDatabase { + return INSTANCE ?: synchronized(this) { + val instance = Room.databaseBuilder( + context.applicationContext, + AppDatabase::class.java, + "digitalCoalMiningPlatform.db" + ) + .addCallback(object : Callback() { + override fun onCreate(db: SupportSQLiteDatabase) { + // 数据库首次创建时初始化数据 + } + }) +// .addMigrations(MIGRATION_1_2) + .addMigrations(MIGRATION_2_3) + .build() + INSTANCE = instance + instance + } + } + } +} + +val MIGRATION_1_2 = MigrationImpl(1, 2) { db -> + db.execSQL(""" + CREATE TABLE IF NOT EXISTS `tunnel_roof_lithology` ( + `lithologyId` INTEGER PRIMARY KEY NOT NULL, + `surfaceId` INTEGER NOT NULL, + `recordId` INTEGER NOT NULL, + `positionStart` INTEGER NOT NULL, + `positionEnd` INTEGER NOT NULL, + `lithologyType` TEXT NOT NULL, + `createTime` TEXT NOT NULL + ) + """.trimIndent()) +} +val MIGRATION_2_3 = MigrationImpl(2, 3) { db -> + db.execSQL("ALTER TABLE tunnel_roof_lithology RENAME TO tunnel_roof_lithology2") + db.execSQL(""" + CREATE TABLE IF NOT EXISTS `tunnel_roof_lithology` ( + `lithologyId` INTEGER PRIMARY KEY NOT NULL, + `surfaceId` INTEGER NOT NULL, + `recordId` INTEGER NOT NULL, + `positionStart` TEXT NOT NULL, + `positionEnd` TEXT NOT NULL, + `lithologyType` TEXT NOT NULL, + `createTime` TEXT NOT NULL + ) + """.trimIndent()) + db.execSQL(""" + INSERT INTO tunnel_roof_lithology + SELECT lithologyId,surfaceId,recordId,CAST(positionStart AS TEXT),CAST(positionEnd AS TEXT),lithologyType,createTime + FROM tunnel_roof_lithology2 + """.trimIndent()) + db.execSQL("DROP TABLE tunnel_roof_lithology2"); +} + +class MigrationImpl( + startVersion: Int, + endVersion: Int, + private val block: (db: SupportSQLiteDatabase) -> Unit +) : Migration(startVersion, endVersion) { + override fun migrate(database: SupportSQLiteDatabase) { + block(database) + } + +} \ No newline at end of file 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 new file mode 100644 index 0000000..14cb94e --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelRoofLithologyDao.kt @@ -0,0 +1,28 @@ +package com.zmkg.coaloperation.db.dao + +import androidx.room.Dao +import androidx.room.Insert +import androidx.room.Query +import androidx.room.Update +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelRoofLithologyEntity + +@Dao +interface TunnelRoofLithologyDao { + @Insert + fun insert(entity: TunnelRoofLithologyEntity): Long + + @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 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? + + @Query("SELECT * FROM tunnel_roof_lithology WHERE lithologyId = :lithologyId") + fun getEntityById(lithologyId: Long): TunnelRoofLithologyEntity? +} \ 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 new file mode 100644 index 0000000..cf432b9 --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelWorkingFaceDao.kt @@ -0,0 +1,24 @@ +package com.zmkg.coaloperation.db.dao + +import androidx.room.Dao +import androidx.room.Insert +import androidx.room.Query +import androidx.room.Update +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity + +//import kotlinx.coroutines.flow.Flow + +@Dao +interface TunnelWorkingFaceDao { + @Insert + fun insert(entity: TunnelWorkingFaceEntity): Long + + @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 surfaceId = :surfaceId") + fun getEntityById(surfaceId: Long): TunnelWorkingFaceEntity? +} \ 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 new file mode 100644 index 0000000..be61935 --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelWorkingFaceRecordDao.kt @@ -0,0 +1,24 @@ +package com.zmkg.coaloperation.db.dao + +import androidx.room.Dao +import androidx.room.Insert +import androidx.room.Query +import androidx.room.Update +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceRecordEntity + +//import kotlinx.coroutines.flow.Flow + +@Dao +interface TunnelWorkingFaceRecordDao { + @Insert + fun insert(entity: TunnelWorkingFaceRecordEntity): Long + + @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 surfaceId = :recordId") + fun getEntityById(recordId: Long): TunnelWorkingFaceRecordEntity +} \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/OtherEntity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/OtherEntity.kt new file mode 100644 index 0000000..e69f966 --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/OtherEntity.kt @@ -0,0 +1,4 @@ +package com.zmkg.coaloperation.db.entiry + +class OtherEntity { +} \ 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 new file mode 100644 index 0000000..b557f01 --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelRoofLithologyEntity.kt @@ -0,0 +1,53 @@ +package com.zmkg.coaloperation.db.entiry.tunnel + +import android.os.Parcelable +import androidx.room.Entity +import androidx.room.PrimaryKey +import com.zmkg.coaloperation.utils.DateTimeUtil +import kotlinx.parcelize.Parcelize +import java.time.LocalDateTime + +/** + * 掘进工作面-顶板岩性数据表 + */ +@Parcelize +@Entity(tableName = "tunnel_roof_lithology") +class TunnelRoofLithologyEntity : Parcelable { + + /** + * 岩性Id + */ + @PrimaryKey + var lithologyId: Long = 0 + + /** + * 岩性类型名称 + */ + var lithologyType: String = "" + + /** + * 岩性值结束 + */ + var positionEnd: String = "" + + /** + * 岩性值起始 + */ + var positionStart: String = "" + + /** + * 工作面id + */ + var surfaceId: Long = 0 + + /** + * 记录id + */ + var recordId: Long = 0 + + /** + * 创建时间 + */ + var createTime: String = DateTimeUtil.formatDateTime(LocalDateTime.now()) + +} \ 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 new file mode 100644 index 0000000..203b2d1 --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelWorkingFaceEntity.kt @@ -0,0 +1,133 @@ +package com.zmkg.coaloperation.db.entiry.tunnel + +//import androidx.room.ColumnInfo +import android.os.Parcelable +import androidx.room.Entity +import androidx.room.Ignore +import androidx.room.PrimaryKey +import com.zmkg.coaloperation.utils.DateTimeUtil +import kotlinx.parcelize.Parcelize +import java.time.LocalDateTime + +/** + * 掘进工作面表对应字段 + */ +@Parcelize +@Entity(tableName = "tunnel_working_face") +data class TunnelWorkingFaceEntity( + // @PrimaryKey(name = "faceId") val id: Int = 0 + /** + * 工作面id,本地新增数据使用时间戳保证唯一性 + */ + @PrimaryKey + var surfaceId: Long = 0, + + /** + * 工作面名称 + */ + var surfaceName: String? = "", + + /** + * 总进尺 + */ + var totalFootage: String? = "", + /** + * 累计进尺 + */ + var accumulativeFootage: String? = "", + /** + * 剩余进尺 + */ + var remainingFootage: String? = "", + + /** + * 所属煤层编号 + */ + var seamId: Int? = 0, + + /** + * 所属煤层名称 + */ + var seamName: String? = "", + + /** + * 所属采区域编号 + */ + var areaId: Int? = 0, + + /** + * 所属采区域 + */ + var areaName: String? = "", + + /** + * 工作面方位角 + */ + var surfaceAzimuth: String? = "", + + /** + * 工作面巷高 + */ + var surfaceHeight: String? = "", + + /** + * 工作面巷宽 + */ + var surfaceWidth: String? = "", + + /** + * 巷道性质 + */ + var tunnelNature: String? = "", + + /** + * 计划工期开始日期 + */ + var planStartDate: String? = "", + + /** + * 计划工期结束日期 + */ + var planEndDate: String? = "", + + /** + * 地质类型 + */ + var geologicalType: String? = "", + + /** + * 水文地质类型 + */ + var hydrogeologicalType: String? = "", + + /** + * 煤层发火性 + */ + var seamIgnition: String? = "", + + /** + * 瓦斯含量 + */ + var seamGas: String? = "", + + /** + * 冲击地压危险性 + */ + var seamBumpPressure: String? = "", + + /** + * 支护形式 + */ + var surfaceSupportForm: String? = "", + + var createTime: String = DateTimeUtil.formatDateTime(LocalDateTime.now()), + + @Ignore + var recordList: MutableList? = null, + + @Ignore + var isExpandRecord: Boolean = false +) : Parcelable { +// @Ignore +// constructor() : this(surfaceId = 0, recordList = null, isExpandRecord = false) +} \ 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 new file mode 100644 index 0000000..1545dc1 --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelWorkingFaceRecordEntity.kt @@ -0,0 +1,69 @@ +package com.zmkg.coaloperation.db.entiry.tunnel + +import android.os.Parcelable +import androidx.room.Entity +import androidx.room.Ignore +import androidx.room.PrimaryKey +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity +import com.zmkg.coaloperation.utils.DateTimeUtil +import kotlinx.parcelize.Parcelize +import java.time.LocalDateTime + +@Parcelize +@Entity(tableName = "tunnel_working_face_record") +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()), + + @Ignore + var operationType: String = "1" +) : Parcelable { +// @Ignore +// constructor() : this(recordId = 0) +} 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 new file mode 100644 index 0000000..f2121fe --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/repository/TunnelRoofLithologyRepository.kt @@ -0,0 +1,32 @@ +package com.zmkg.coaloperation.db.repository + +import com.zmkg.coaloperation.db.dao.TunnelRoofLithologyDao +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelRoofLithologyEntity +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext + +class TunnelRoofLithologyRepository(private val dao: TunnelRoofLithologyDao) { + suspend fun getEntityList() = withContext(Dispatchers.IO) { + dao.getEntityList() + } + + suspend fun insert(entity: TunnelRoofLithologyEntity) = withContext(Dispatchers.IO) { + dao.insert(entity) + } + + suspend fun update(entity: TunnelRoofLithologyEntity) = withContext(Dispatchers.IO) { + dao.update(entity) + } + + suspend fun getEntityListByFaceId(surfaceId: Long) = withContext(Dispatchers.IO) { + dao.getEntityListByFaceId(surfaceId) + } + + 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) + } +} \ 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 new file mode 100644 index 0000000..845bc79 --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/repository/TunnelWorkingFaceRecordRepository.kt @@ -0,0 +1,24 @@ +package com.zmkg.coaloperation.db.repository + +import com.zmkg.coaloperation.db.dao.TunnelWorkingFaceRecordDao +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceRecordEntity +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext + +class TunnelWorkingFaceRecordRepository(private val dao: TunnelWorkingFaceRecordDao) { + suspend fun getEntityList(surfaceId: Long) = withContext(Dispatchers.IO) { + dao.getEntityList(surfaceId) + } + + suspend fun insert(entity: TunnelWorkingFaceRecordEntity) = withContext(Dispatchers.IO) { + dao.insert(entity) + } + + suspend fun update(entity: TunnelWorkingFaceRecordEntity) = withContext(Dispatchers.IO) { + dao.update(entity) + } + + suspend fun getEntityById(faceId: Long) = withContext(Dispatchers.IO) { + dao.getEntityById(faceId) + } +} \ 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 new file mode 100644 index 0000000..5c80803 --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/repository/TunnelWorkingFaceRepository.kt @@ -0,0 +1,24 @@ +package com.zmkg.coaloperation.db.repository + +import com.zmkg.coaloperation.db.dao.TunnelWorkingFaceDao +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext + +class TunnelWorkingFaceRepository(private val dao: TunnelWorkingFaceDao) { + suspend fun getEntityList() = withContext(Dispatchers.IO) { + dao.getEntityList() + } + + suspend fun insert(entity: TunnelWorkingFaceEntity) = withContext(Dispatchers.IO) { + dao.insert(entity) + } + + suspend fun update(entity: TunnelWorkingFaceEntity) = withContext(Dispatchers.IO) { + dao.update(entity) + } + + suspend fun getEntityById(faceId: Long) = withContext(Dispatchers.IO) { + dao.getEntityById(faceId) + } +} \ 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 new file mode 100644 index 0000000..2f9d290 --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/viewmodel/TunnelRoofLithologyViewModel.kt @@ -0,0 +1,61 @@ +package com.zmkg.coaloperation.db.viewmodel + +import android.app.Application +import androidx.lifecycle.AndroidViewModel +import androidx.lifecycle.viewModelScope +import com.zmkg.coaloperation.db.AppDatabase +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelRoofLithologyEntity +import com.zmkg.coaloperation.db.repository.TunnelRoofLithologyRepository +import kotlinx.coroutines.launch + +class TunnelRoofLithologyViewModel(application: Application) : AndroidViewModel(application) { + private val repository: TunnelRoofLithologyRepository + + init { + val dao = AppDatabase.getDatabase(application).tunnelRoofLithologyDao() + repository = TunnelRoofLithologyRepository(dao) + } + + fun getEntityList(action: (MutableList?) -> Unit) = + viewModelScope.launch { + val list: MutableList? = repository.getEntityList() + action(list) + } + + fun getEntityList2( + surfaceId: Long, + action: (MutableList?) -> Unit + ) = viewModelScope.launch { + val list: MutableList? = + repository.getEntityListByFaceId(surfaceId) + action(list) + } + + fun getEntityList3( + surfaceId: Long, + recordId: Long, + action: (MutableList?) -> Unit + ) = viewModelScope.launch { + val list: MutableList? = + repository.getEntityListByRecordId(surfaceId, recordId) + action(list) + } + + fun insert(entity: TunnelRoofLithologyEntity, action: () -> Unit) = viewModelScope.launch { + repository.insert(entity) + action() + } + + fun update(entity: TunnelRoofLithologyEntity, action: () -> Unit) = viewModelScope.launch { + repository.update(entity) + action() + } + + fun getEntityById(faceId: Long, action: (TunnelRoofLithologyEntity) -> Unit) = + viewModelScope.launch { + val entity = repository.getEntityById(faceId) + entity?.let { action(it) } + } + + +} \ 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 new file mode 100644 index 0000000..e61142a --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/viewmodel/TunnelWorkingFaceRecordViewModel.kt @@ -0,0 +1,40 @@ +package com.zmkg.coaloperation.db.viewmodel + +import android.app.Application +import androidx.lifecycle.AndroidViewModel +import androidx.lifecycle.viewModelScope +import com.zmkg.coaloperation.db.AppDatabase +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceRecordEntity +import com.zmkg.coaloperation.db.repository.TunnelWorkingFaceRecordRepository +import kotlinx.coroutines.launch + +class TunnelWorkingFaceRecordViewModel(application: Application) : AndroidViewModel(application) { + private val repository: TunnelWorkingFaceRecordRepository + + init { + val dao = AppDatabase.getDatabase(application).tunnelWorkingFaceRecordDao() + repository = TunnelWorkingFaceRecordRepository(dao) + } + + fun getEntityList(surfaceId: Long, action: (MutableList?) -> Unit) = + viewModelScope.launch { + val list: MutableList? = repository.getEntityList(surfaceId) + action(list) + } + + fun insert(entity: TunnelWorkingFaceRecordEntity, action: () -> Unit) = viewModelScope.launch { + repository.insert(entity) + action() + } + + fun update(entity: TunnelWorkingFaceRecordEntity, action: () -> Unit) = viewModelScope.launch { + repository.update(entity) + action() + } + + fun getEntityById(recordId: Long) = viewModelScope.launch { + repository.getEntityById(recordId) + } + + +} \ 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 new file mode 100644 index 0000000..407a5a3 --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/viewmodel/TunnelWorkingFaceViewModel.kt @@ -0,0 +1,41 @@ +package com.zmkg.coaloperation.db.viewmodel + +import android.app.Application +import androidx.lifecycle.AndroidViewModel +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.launch + +class TunnelWorkingFaceViewModel(application: Application) : AndroidViewModel(application) { + private val repository: TunnelWorkingFaceRepository + + init { + val dao = AppDatabase.getDatabase(application).tunnelWorkingFaceDao() + repository = TunnelWorkingFaceRepository(dao) + } + + fun getEntityList(action: (MutableList?) -> Unit) = + viewModelScope.launch { + val list: MutableList? = repository.getEntityList() + action(list) + } + + fun insert(entity: TunnelWorkingFaceEntity, action: () -> Unit) = viewModelScope.launch { + repository.insert(entity) + 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) } + } + + +} \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/superfuntion/BaseActivityFuntion.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/superfuntion/BaseActivityFuntion.kt index 0e62c8e..f6f968a 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/superfuntion/BaseActivityFuntion.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/superfuntion/BaseActivityFuntion.kt @@ -2,10 +2,10 @@ package com.zmkg.coaloperation.superfuntion import android.content.Context import android.util.Log -import com.tencent.imsdk.BaseConstants -import com.tencent.qcloud.tuicore.TUILogin -import com.tencent.qcloud.tuicore.interfaces.TUICallback -import com.tencent.qcloud.tuicore.interfaces.TUILoginConfig +//import com.tencent.imsdk.BaseConstants +//import com.tencent.qcloud.tuicore.TUILogin +//import com.tencent.qcloud.tuicore.interfaces.TUICallback +//import com.tencent.qcloud.tuicore.interfaces.TUILoginConfig import com.zmkg.coaloperation.MyApplication import com.zmkg.coaloperation.im.signature.GenerateTestUserSig import com.zmkg.coaloperation.local.DataStoreManager @@ -25,54 +25,54 @@ fun Context.loginIm(userId: String,successCall: () -> Unit = {}) { // successCall.invoke() return } - if (TUILogin.isUserLogined() && userId == TUILogin.getUserId()) { -// successCall.invoke() - return - } +// if (TUILogin.isUserLogined() && userId == TUILogin.getUserId()) { +//// successCall.invoke() +// return +// } - TUILogin.login( - this, - GenerateTestUserSig.SDKAPPID, - userId, - userSig, - TUILoginConfig(), - object : TUICallback() { - override fun onError(code: Int, desc: String) { -// successCall.invoke() - when (code) { - BaseConstants.ERR_SVR_ACCOUNT_USERSIG_EXPIRED, - BaseConstants.ERR_USER_SIG_EXPIRED -> {//UserSig过期 -// CustomToast.makeText(this@loginIm,"im登录失败", Toast.LENGTH_SHORT).show() - } - } - Log.i(MyApplication.TAG, "imLogin errorCode = $code, errorInfo = $desc") - } - - override fun onSuccess() { -// successCall.invoke() - Log.i(MyApplication.TAG, "imLogin onSuccess ") - } - }) +// TUILogin.login( +// this, +// GenerateTestUserSig.SDKAPPID, +// userId, +// userSig, +// TUILoginConfig(), +// object : TUICallback() { +// override fun onError(code: Int, desc: String) { +//// successCall.invoke() +// when (code) { +// BaseConstants.ERR_SVR_ACCOUNT_USERSIG_EXPIRED, +// BaseConstants.ERR_USER_SIG_EXPIRED -> {//UserSig过期 +//// CustomToast.makeText(this@loginIm,"im登录失败", Toast.LENGTH_SHORT).show() +// } +// } +// Log.i(MyApplication.TAG, "imLogin errorCode = $code, errorInfo = $desc") +// } +// +// override fun onSuccess() { +//// successCall.invoke() +// Log.i(MyApplication.TAG, "imLogin onSuccess ") +// } +// }) } fun logout(successCall: () -> Unit = {}){ - if (!TUILogin.isUserLogined()){ - return - } - CoroutineScope(Dispatchers.Main).launch{ - DataStoreManager.setUserName("") - } - TUILogin.logout(object : TUICallback(){ - override fun onSuccess() { - successCall.invoke() - } - - override fun onError(errorCode: Int, errorMessage: String?) { - Log.i("","IM logout errorCode = $errorCode, errorInfo = $errorMessage") - } - }) +// if (!TUILogin.isUserLogined()){ +// return +// } +// CoroutineScope(Dispatchers.Main).launch{ +// DataStoreManager.setUserName("") +// } +// TUILogin.logout(object : TUICallback(){ +// override fun onSuccess() { +// successCall.invoke() +// } +// +// override fun onError(errorCode: Int, errorMessage: String?) { +// Log.i("","IM logout errorCode = $errorCode, errorInfo = $errorMessage") +// } +// }) } 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 ef39e9d..747ba58 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 @@ -1,16 +1,28 @@ package com.zmkg.coaloperation.ui.tunneling.activity +//import com.tencent.qcloud.tuikit.timcommon.util.SoftKeyBoardUtil import android.os.Bundle -import android.view.LayoutInflater +import android.util.Log import android.view.View -import com.tencent.qcloud.tuikit.timcommon.util.SoftKeyBoardUtil +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager 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.databinding.ListItemRockBinding +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.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 /** * 开始记录 @@ -19,66 +31,124 @@ class AddWorkingPointActivity : BaseVMBActivity(R.layout.activity_add_working_point) { companion object { + const val TAG = "AddWorkingPointActivity" const val SHOW_TYPE = "showType" const val FACE_NAME = "faceName" + const val FACE_ID = "faceId" + const val FACE_RECORD = "faceRecord" } private var showType = 0 + private var surfaceId: Long = 0 + + private var faceName: String? = null + private var faceRecord: TunnelWorkingFaceRecordEntity? = null + + private val workingFaceRecordViewModel: TunnelWorkingFaceRecordViewModel by lazy { + ViewModelProvider(this)[TunnelWorkingFaceRecordViewModel::class.java] + } + + private val roofLithologyViewModel: TunnelRoofLithologyViewModel by lazy { + ViewModelProvider(this)[TunnelRoofLithologyViewModel::class.java] + } + + private val roofLithologyList: MutableList = mutableListOf() + + private val roofLithologyAdapter: TunnelRoofLithologyAdapter by lazy { + TunnelRoofLithologyAdapter(roofLithologyList) + } + override fun initView(savedInstanceState: Bundle?) { mBinding.toolbarLay.vLine.visibility = View.GONE showType = intent.extras?.getInt(SHOW_TYPE) ?: 0 - mBinding.toolbarLay.rightText = - if (showType == 0) "开始记录" else "修改记录" + mBinding.toolbarLay.title= if (showType == 0) "开始记录" else "修改记录" + mBinding.btnSave.text = if (showType == 0) "保存" else "修改" +// mBinding.toolbarLay.rightText = "" - mBinding.root.setOnClickListener { + mBinding.root.setOnClickListener { v -> window?.let { - SoftKeyBoardUtil.hideKeyBoard(window) +// SoftKeyBoardUtil.hideKeyBoard(window) + KeyboardUtil.hideKeyboard(v) } } - mBinding.tvWorkDate.clickWithDebounce { - PickerUtil.showTimePicker(this) {date-> - mBinding.tvWorkDate.text = date + mBinding.tvWorkingDate.let { + it.setOnClickListener { v -> + PickerUtil.showTimePicker(this, it.text.toString().trim()) { date -> + it.text = date + } } } - mBinding.tvFaceName.text = intent.getStringExtra(FACE_NAME) - mBinding.toolbarLay.title = intent.getStringExtra(FACE_NAME) + faceName = intent.getStringExtra(FACE_NAME) + if (showType == 0) { + surfaceId = intent.getLongExtra(FACE_ID, 0L) + } else if (showType == 1) { + faceRecord = intent.getParcelableExtra(FACE_RECORD) + if (faceRecord == null) { + showToast("未查询到当前记录") + return + } + surfaceId = faceRecord!!.surfaceId + loadFaceRecord() + } + mBinding.tvFaceName.text = faceName - val teamList = mutableListOf() - teamList.add("A地区第1施工队") - teamList.add("A地区第2施工队") - teamList.add("B地区第1施工队") - teamList.add("B地区第2施工队") - teamList.add("C地区第1施工队") - teamList.add("C地区第2施工队") - teamList.add("D地区第1施工队") - teamList.add("D地区第2施工队") - mBinding.tvWorkTeam.clickWithDebounce { - PickerUtil.showOptionsPicker(this, teamList) {team-> - mBinding.tvWorkTeam.text = team + 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 } } val workTypeList = mutableListOf() workTypeList.add("早班") workTypeList.add("中班") workTypeList.add("晚班") - mBinding.tvWorkType.clickWithDebounce { - PickerUtil.showOptionsPicker(this, workTypeList) {team-> - mBinding.tvWorkType.text = team + mBinding.tvTeamShift.setOnClickListener { v -> + PickerUtil.showOptionsPicker(this, "请选择施工班次", workTypeList) { team -> + mBinding.tvTeamShift.text = team } } mBinding.btnAddPoint.clickWithDebounce { addRockPoint() } + + mBinding.btnSave.clickWithDebounce { + if (showType == 0) { + saveFaceRecord() + return@clickWithDebounce + } + updateFaceRecord() + } + mBinding.btnExport.clickWithDebounce { + showToast("开发中……") + } + + mBinding.rvLithology.let { + it.layoutManager = LinearLayoutManager(this) + it.adapter = roofLithologyAdapter + } + addRockPoint() } private fun addRockPoint() { - val itemBinding = ListItemRockBinding.inflate( - LayoutInflater.from(this), - mBinding.llRockPoint, - false - ) - mBinding.llRockPoint.addView(itemBinding.root) + roofLithologyList.add(TunnelRoofLithologyEntity().also { + it.lithologyId = System.currentTimeMillis() + it.surfaceId = surfaceId + it.recordId = if (showType == 1) faceRecord!!.recordId else System.currentTimeMillis() + }) +// roofLithologyAdapter.notifyDataSetChanged() + val pos = roofLithologyList.size + roofLithologyAdapter.notifyItemInserted(pos) + roofLithologyAdapter.notifyItemRangeChanged(pos, pos + 1) } override fun initData() { @@ -90,4 +160,111 @@ class AddWorkingPointActivity : override fun processClick(v: View?) { } + private fun saveFaceRecord() { + if (mBinding.tvWorkingDate.text.isBlank()) { + showToast("请选择施工日期") + return + } + if (mBinding.tvTeamShift.text.isBlank()) { + showToast("请选择施工班次") + return + } + if (mBinding.tvWorkTeam.text.isBlank()) { + showToast("请选择施工队伍") + return + } + if (mBinding.etTeamLeader.text.isBlank()) { + showToast("请输入带班队长") + return + } + if (mBinding.etWorkingFootage.text.isBlank()) { + showToast("请输入本班进尺") + return + } + if (mBinding.etSeamDip.text.isBlank()) { + showToast("请输入煤层倾角") + return + } + if (mBinding.etSeamHeight.text.isBlank()) { + showToast("请输入煤层高") + return + } + if (mBinding.etRecordPerson.text.isBlank()) { + showToast("请输入填写人") + return + } + val emptyDataList = roofLithologyList.filter { + it.positionStart.isBlank() || it.positionEnd.isBlank() || it.lithologyType.isBlank() + } + if (emptyDataList.isNotEmpty()) { + showToast("顶板岩性中存在部分编录点数据为空") + return + } + + val faceRecord = TunnelWorkingFaceRecordEntity().also { + it.recordId = System.currentTimeMillis() + it.surfaceId = surfaceId + it.workingDate = mBinding.tvWorkingDate.text.toString() + it.teamShift = mBinding.tvTeamShift.text.toString() + it.teamName = mBinding.tvWorkTeam.text.toString() + it.teamId = mBinding.tvWorkTeam.tag.toString() + + it.teamLeader = mBinding.etTeamLeader.text.toString().trim() + it.workingFootage = mBinding.etWorkingFootage.text.toString().trim() + it.seamDip = mBinding.etSeamDip.text.toString().trim() + it.seamHeight = mBinding.etSeamHeight.text.toString().trim() + it.recordPerson = mBinding.etRecordPerson.text.toString().trim() + } + + Log.d(TAG, "saveFaceRecord: ${roofLithologyList.toJson()}") + + workingFaceRecordViewModel.insert(faceRecord) { + roofLithologyList.forEach { + roofLithologyViewModel.insert(it) {} + } + finish() + } + } + + private fun loadFaceRecord() { + faceRecord?.let { + mBinding.tvWorkingDate.text = it.workingDate + mBinding.tvTeamShift.text = it.teamShift + mBinding.tvWorkTeam.text = it.teamName + mBinding.tvWorkTeam.tag = it.teamId + + mBinding.etTeamLeader.setText(it.teamLeader) + mBinding.etWorkingFootage.setText(it.workingFootage) + mBinding.etSeamDip.setText(it.seamDip) + mBinding.etSeamHeight.setText(it.seamHeight) + mBinding.etRecordPerson.setText(it.recordPerson) + } + } + + private fun updateFaceRecord() { + val faceRecord = TunnelWorkingFaceRecordEntity().also { + it.recordId = faceRecord!!.recordId + it.surfaceId = surfaceId + it.workingDate = mBinding.tvWorkingDate.text.toString() + it.teamShift = mBinding.tvTeamShift.text.toString() + it.teamName = mBinding.tvWorkTeam.text.toString() + it.teamId = mBinding.tvWorkTeam.tag.toString() + + it.teamLeader = mBinding.etTeamLeader.text.toString().trim() + it.workingFootage = mBinding.etWorkingFootage.text.toString().trim() + it.seamDip = mBinding.etSeamDip.text.toString().trim() + it.seamHeight = mBinding.etSeamHeight.text.toString().trim() + it.recordPerson = mBinding.etRecordPerson.text.toString().trim() + } + workingFaceRecordViewModel.update(faceRecord) { + EventBus.getDefault().post(faceRecord) + finish() + } + } + + @Subscribe(threadMode = ThreadMode.MAIN) + fun onFaceRecordEvent(event: TunnelWorkingFaceRecordEntity) { + + } + } \ No newline at end of file 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 b2420a5..fc8789e 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 @@ -1,19 +1,22 @@ package com.zmkg.coaloperation.ui.tunneling.activity +import android.annotation.SuppressLint import android.os.Bundle import android.view.View -import androidx.lifecycle.Lifecycle -import androidx.lifecycle.lifecycleScope -import androidx.lifecycle.repeatOnLifecycle +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.zmkg.coaloperation.R +import com.zmkg.coaloperation.adapter.TunnelWorkingFaceAdapter +import com.zmkg.coaloperation.adapter.TunnelWorkingFaceRecordAdapter import com.zmkg.coaloperation.base.BaseVMBActivity import com.zmkg.coaloperation.databinding.ActivityTunnelingBinding -import com.zmkg.coaloperation.event.TunnelingWorkFaceRefreshEvent -import com.zmkg.coaloperation.ui.tunneling.adapter.TunnelingHomeAdapter -import com.zmkg.coaloperation.ui.tunneling.bean.TunnelingHomeBean +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity +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 kotlinx.coroutines.flow.collectLatest -import kotlinx.coroutines.launch +import org.greenrobot.eventbus.Subscribe +import org.greenrobot.eventbus.ThreadMode /** * 掘进首页列表 @@ -21,131 +24,91 @@ import kotlinx.coroutines.launch class TunnelingActivity : BaseVMBActivity(R.layout.activity_tunneling) { - private val tunnelingHomeAdapter: TunnelingHomeAdapter by lazy { - TunnelingHomeAdapter {index,surfaceId-> - mViewModel.getTunnelingHomeItemData(index,surfaceId) + companion object { + val FACE_RECORD_HEADER = TunnelWorkingFaceRecordEntity( + recordId = -1, + surfaceId = -1, + workingDate = "时间", + recordPerson = "记录人", + operationType = "0" + ) + } + + private val workingFaceViewModel: TunnelWorkingFaceViewModel by lazy { + ViewModelProvider(this)[TunnelWorkingFaceViewModel::class.java] + } + private val workingFaceRecordViewModel: TunnelWorkingFaceRecordViewModel by lazy { + ViewModelProvider(this)[TunnelWorkingFaceRecordViewModel::class.java] + } + + + private val workingFaceList = mutableListOf() + + private val workingFaceAdapter: TunnelWorkingFaceAdapter by lazy { + TunnelWorkingFaceAdapter(workingFaceList).apply { + setOnItemClickListener { _, _, position -> + toActivity(WorkingFaceDetailActivity::class.java, Bundle().apply { + putParcelable(WorkingFaceDetailActivity.FACE_DETAIL, workingFaceList[position]) + }) + } + setOnItemChildClickListener { _, view, position -> + if (view.id == R.id.ivExpandRecord) { + val expandState = view.tag.toString().toBooleanStrictOrNull() ?: false + workingFaceList[position].isExpandRecord = expandState.not() + if (workingFaceList[position].isExpandRecord) { + getFaceRecord(position) + } else { + notifyItemChanged(position) + } + return@setOnItemChildClickListener + } + if (view.id == R.id.start_record) { + toActivity(AddWorkingPointActivity::class.java, Bundle().apply { + putLong( + AddWorkingPointActivity.FACE_ID, + workingFaceList[position].surfaceId + ) + putString( + AddWorkingPointActivity.FACE_NAME, + workingFaceList[position].surfaceName + ) + putInt(AddWorkingPointActivity.SHOW_TYPE, 0) + }) + } + } } } - override fun initView(savedInstanceState: Bundle?) { - mBinding.toolbarLay.rightText = "新增工作面" - mBinding.rvList.adapter = tunnelingHomeAdapter - + mBinding.rvList.let { + it.layoutManager = LinearLayoutManager(this) + it.adapter = workingFaceAdapter + } } + @SuppressLint("NotifyDataSetChanged") override fun initData() { - mViewModel.getTunnelingHomeData() + workingFaceViewModel.getEntityList { it -> + if (it.isNullOrEmpty()) { + return@getEntityList + } + workingFaceList.clear() + workingFaceList.addAll(it) + workingFaceAdapter.notifyDataSetChanged() + } } - -// HttpUtil.get(UrlConst.FACE_LIST, doSuccess = { -// val type = object : TypeToken>() {} -// val list: MutableList? = it.toJsonString().toType(typeToken = type) -// if (list.isNullOrEmpty()) { -// ToastTool.toastShort(this@TunnelingActivity, "未查询到数据") -// return@get -// } -// tunnelingHomeAdapter.setNewInstance(list) -// getRecordList(0) {} -// }, doFailure = { code, msg -> -// if (msg.isNullOrEmpty()) { -// return@get -// } -// ToastTool.toastShort(this@TunnelingActivity, msg) -// }) -// -//// val gson = Gson() -//// val type: Type = object : TypeToken>() {}.type -//// val mutableListOf = gson.fromJson>(jsonString, type) -//// -//// tunnelingHomeAdapter.setNewInstance(mutableListOf) -// -// } -// -// fun getRecordList(index:Int, action:()-> Unit) { -// val faceId: Long? = tunnelingHomeAdapter.data[index].surfaceId -// HttpUtil.get("${UrlConst.RECORD_LIST + faceId}", doSuccess = { -// val type = object : TypeToken>() {} -// val list: MutableList? = it.toJsonString().toType(typeToken = type) -// if (list.isNullOrEmpty()) { -// ToastTool.toastShort(this@TunnelingActivity, "未查询到数据") -// return@get -// } -// tunnelingHomeAdapter.data[0].contentList = list -// val holder = mBinding.rvList.findViewHolderForLayoutPosition(0) -// val rvContent = holder?.itemView?.findViewById(R.id.rv_content) -// rvContent?.adapter.let { adapter -> -// if (adapter is TunnelingHomeListAdapter) { -// adapter.data.clear() -// adapter.data.addAll(list) -// adapter.notifyDataSetChanged() -// } -// } -// action() -// }, doFailure = { code, msg -> -// if (msg.isNullOrEmpty()) { -// return@get -// } -// ToastTool.toastShort(this@TunnelingActivity, msg) -// }) -// } - override fun createObserve() { super.createObserve() - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED) { - mViewModel.tunnelingHomeList.collectLatest { list -> - list?.reverse() - tunnelingHomeAdapter.setNewInstance(list) - - } - } - } - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED) { - mViewModel.tunnelingHomeItemList.collectLatest { list -> - if (list.isNullOrEmpty()) { - showToast("未查询到数据") - return@collectLatest - } - - tunnelingHomeAdapter.data[mViewModel.itemIndex.value].contentList = list - tunnelingHomeAdapter.notifyDataSetChanged() - } - } - } } override fun bindEvent() { - tunnelingHomeAdapter.setOnItemClickListener { adapter, view, position -> - val tunnelingHomeBean = adapter.data.get(position) as TunnelingHomeBean - // 跳转到工作面详情 - - toActivity(WorkingFaceDetailActivity::class.java, Bundle().apply { - putString("surfaceId", tunnelingHomeBean.surfaceId) - }) - } - - tunnelingHomeAdapter.setOnItemChildClickListener { adapter, view, position -> - val tunnelingHomeBean = adapter.data.get(position) as TunnelingHomeBean - // 跳转到开始记录页面 - - if (view.id == R.id.start_record) { - toActivity(AddWorkingPointActivity::class.java, Bundle().apply { - putString(AddWorkingPointActivity.FACE_NAME, tunnelingHomeBean.surfaceName) - putInt(AddWorkingPointActivity.SHOW_TYPE, 0) - }) - } - } - mBinding.toolbarLay.titleTvRight.setOnClickListener { - - toActivity(WorkFaceActivity::class.java,Bundle().apply { - putString("WorkFaceType", WorkFaceActivity.WorkFaceType.ADD.name) + toActivity(WorkFaceActivity::class.java, Bundle().apply { + putString(WorkFaceActivity.WORK_FACE_TYPE, WorkFaceActivity.WorkFaceType.ADD.name) }) } } @@ -155,8 +118,45 @@ class TunnelingActivity : } override fun onMessageEvent(event: Any?) { - if (event is TunnelingWorkFaceRefreshEvent) { - mViewModel.getTunnelingHomeData() +// if (event is TunnelingWorkFaceRefreshEvent) { +// mViewModel.getTunnelingHomeData() +// } + } + + @SuppressLint("NotifyDataSetChanged") + private fun getFaceRecord(position: Int) { + val surfaceId = workingFaceList[position].surfaceId + workingFaceRecordViewModel.getEntityList(surfaceId) { recordEntities -> + if (recordEntities.isNullOrEmpty()) { + workingFaceAdapter.notifyItemChanged(position) + return@getEntityList + } + val viewHolder = + mBinding.rvList.findViewHolderForLayoutPosition(position) as TunnelWorkingFaceAdapter.VH + val recordAdapter = + viewHolder.binding.rvFaceRecord.adapter as TunnelWorkingFaceRecordAdapter + recordAdapter.apply { + list.clear() +// list.add(FACE_RECORD_HEADER) + list.addAll(recordEntities) + notifyDataSetChanged() + } + workingFaceAdapter.notifyItemChanged(position) } } + + @Subscribe(threadMode = ThreadMode.MAIN) + fun onWorkingFaceEvent(event: TunnelWorkingFaceEntity) { + val index = workingFaceList.indexOfFirst { it.surfaceId == event.surfaceId } + workingFaceViewModel.getEntityById(event.surfaceId) { entity -> + workingFaceList[index] = entity + workingFaceAdapter.notifyItemChanged(index) + } + } + + @Subscribe(threadMode = ThreadMode.MAIN) + fun onFaceRecordEvent(event:TunnelWorkingFaceRecordEntity) { + //TODO 折叠子列表 + } + } \ No newline at end of file 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 2e08488..a774ca5 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,22 +1,31 @@ package com.zmkg.coaloperation.ui.tunneling.activity +import android.app.Activity import android.os.Bundle import android.text.TextUtils import android.view.View +import android.widget.TextView 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.BaseVMBActivity import com.zmkg.coaloperation.databinding.ActivityWorkFaceBinding +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity +import com.zmkg.coaloperation.db.viewmodel.TunnelWorkingFaceViewModel import com.zmkg.coaloperation.event.TunnelingWorkFaceRefreshEvent -import com.zmkg.coaloperation.ui.tunneling.bean.FaceWorkDetailBean -import com.zmkg.coaloperation.ui.tunneling.bean.TunnelingFaceAddBean import com.zmkg.coaloperation.ui.tunneling.viewmodel.TunnelingViewModel import kotlinx.coroutines.delay import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import org.greenrobot.eventbus.EventBus +import androidx.core.view.isGone +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 /** * 工作面 @@ -24,12 +33,11 @@ import org.greenrobot.eventbus.EventBus class WorkFaceActivity : BaseVMBActivity(R.layout.activity_work_face) { - companion object { - const val WORK_FACE_TYPE = "WorkFaceType" - const val FACE_WORK_DETAIL_DATA = "faceWorkDetailData" - } - - var currentFaceType = WorkFaceType.ADD + companion object { + private const val TAG = "WorkFaceActivity" + const val WORK_FACE_TYPE = "WorkFaceType" + const val FACE_WORK_DETAIL_DATA = "faceWorkDetailData" + } enum class WorkFaceType { ADD,//新增 @@ -39,29 +47,124 @@ class WorkFaceActivity : SEE//查看 } - - + private var currentFaceType = WorkFaceType.ADD + private val workingFaceViewModel: TunnelWorkingFaceViewModel by lazy { + ViewModelProvider(this)[TunnelWorkingFaceViewModel::class.java] + } + private var faceDetail: TunnelWorkingFaceEntity? = null override fun initView(savedInstanceState: Bundle?) { val stringExtra = intent.getStringExtra(WORK_FACE_TYPE) if (TextUtils.isEmpty(stringExtra)) { - finish() - } else if (stringExtra == WorkFaceType.ADD.name) { - currentFaceType = WorkFaceType.ADD - mBinding.toolbarLay.titleTvName.text = "新增工作面" - mBinding.confirm.text = "确认新增" - } else if (stringExtra == WorkFaceType.EDIT.name) { - currentFaceType = WorkFaceType.EDIT - mBinding.toolbarLay.titleTvName.text = "修改工作面" - mBinding.confirm.text = "确认修改" - val detail = intent.getSerializableExtra(WorkingFaceDetail2Activity.FACE_WORK_DETAIL_DATA) as FaceWorkDetailBean? - detail?.let { - loadDetail(it) + stringExtra == WorkFaceType.ADD.name + } + when (stringExtra) { + WorkFaceType.ADD.name -> { + currentFaceType = WorkFaceType.ADD + mBinding.confirm.text = "确认新增" +// mBinding.toolbarLay.titleTvName.text = "新增工作面" + mBinding.toolbarLay.title = "新增工作面" + mBinding.expandLayout.gone() + mBinding.imgExpand.visible() + } + + WorkFaceType.EDIT.name -> { + currentFaceType = WorkFaceType.EDIT + mBinding.confirm.text = "确认修改" +// mBinding.toolbarLay.titleTvName.text = "修改工作面" + mBinding.toolbarLay.title = "修改工作面" + mBinding.expandLayout.visible() + mBinding.imgExpand.gone() + faceDetail = + intent.getParcelableExtra(WorkingFaceDetail2Activity.FACE_WORK_DETAIL_DATA) as TunnelWorkingFaceEntity? + if (faceDetail == null) { + showToast("未查询到工作面数据") + return + } + faceDetail?.let { + loadDetail(it) + } + } + + WorkFaceType.SEE.name -> { + currentFaceType = WorkFaceType.SEE } - } else if (stringExtra == WorkFaceType.SEE.name) { - currentFaceType = WorkFaceType.SEE } + mBinding.etPlanStartDate.let { + it.setOnClickListener { _ -> + showDatePicker(it) + } + } + mBinding.etPlannEndDate.let { + it.setOnClickListener { _ -> + 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() + } + } + 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() + } + } + 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() + } + } + } + + private fun showDatePicker(tv: TextView) { + tv.setOnClickListener { + PickerUtil.showTimePicker(this, tv.text.toString().trim()) { date -> + tv.text = date + } + } +// val cal = Calendar.getInstance() +// DatePickerDialog( +// this, +// { view, year, month, day -> +// textView.text = "$year-${numToString(month + 1)}-${numToString(day)}" +// }, +// cal.get(Calendar.YEAR), +// cal.get(Calendar.MONTH), +// cal.get(Calendar.DAY_OF_MONTH) +// ) +// .show() + } + + private fun numToString(num: Int): String { + return if (num < 10) "0${num}" else num.toString() } override fun initData() { @@ -90,14 +193,13 @@ class WorkFaceActivity : override fun processClick(v: View?) { when (v?.id) { - R.id.img_expand -> { - if (mBinding.expandLayout.visibility == View.GONE) { - mBinding.expandLayout.visibility = View.VISIBLE - mBinding.imgView.background = getDrawable(R.mipmap.arrow_up_white) + R.id.imgExpand -> { + if (mBinding.expandLayout.isGone) { + mBinding.expandLayout.visible() + mBinding.imgExpand.setImageResource(R.drawable.ic_arrow_up_white2) } else { - mBinding.expandLayout.visibility = View.GONE - mBinding.imgView.background = getDrawable(R.mipmap.arrow_down_white) - + mBinding.expandLayout.gone() + mBinding.imgExpand.setImageResource(R.drawable.ic_arrow_down_white2) } } @@ -115,18 +217,20 @@ class WorkFaceActivity : } } - private fun loadDetail(it: FaceWorkDetailBean) { + private fun loadDetail(it: TunnelWorkingFaceEntity) { mBinding.etWorkfaceName.setText(it.surfaceName) mBinding.etTotalFootage.setText("${it.totalFootage}") - mBinding.etCoalSeam.text = it.seamName - mBinding.etCoalArea.text = it.areaName - mBinding.etFaceAngle.setText(it.surfaceAzimuth) - mBinding.etFaceHeight.setText(it.surfaceHeight) - mBinding.etFaceWidth.setText(it.surfaceWidth) - mBinding.tvCoalType.text = it.tunnelNature + mBinding.tvSeamName.tag = it.seamId + mBinding.tvSeamName.text = it.seamName + mBinding.tvAreaName.tag = it.areaId + mBinding.tvAreaName.text = it.areaName + mBinding.etSurfaceAzimuth.setText(it.surfaceAzimuth) + mBinding.etSurfaceHeight.setText(it.surfaceHeight) + mBinding.etSurfaceWidth.setText(it.surfaceWidth) + mBinding.tvTunnelNature.text = it.tunnelNature - mBinding.plannedDate1.setText(it.planStartDate) - mBinding.plannedDate2.setText(it.planEndDate) + mBinding.etPlanStartDate.text = it.planStartDate + mBinding.etPlannEndDate.text = it.planEndDate mBinding.etGeologicalType.setText(it.geologicalType) mBinding.etHydrogeologicalType.setText(it.hydrogeologicalType) @@ -137,24 +241,121 @@ class WorkFaceActivity : } private fun addNewFace() { - if (TextUtils.isEmpty(mBinding.etWorkfaceName.text.toString())) { + val workingFaceName = mBinding.etWorkfaceName.text.toString().trim() + if (TextUtils.isEmpty(workingFaceName)) { showToast("请输入工作面名称") return } - if (TextUtils.isEmpty(mBinding.etTotalFootage.text.toString())) { + val totalFootageStr = mBinding.etTotalFootage.text.toString().trim() + if (TextUtils.isEmpty(totalFootageStr)) { showToast("请输入总进尺") return } - mViewModel.postTunnellingSurfaceAdd( - TunnelingFaceAddBean( - surfaceName = mBinding.etWorkfaceName.text.toString(), - totalFootage = mBinding.etTotalFootage.text.toString() - ) - ) + try { + totalFootageStr.toDouble() + } catch (e: Exception) { + e.printStackTrace() + showToast("总进尺数据非数字格式,请确认") + return + } +// mViewModel.postTunnellingSurfaceAdd( +// TunnelingFaceAddBean( +// surfaceName = mBinding.etWorkfaceName.text.toString(), +// totalFootage = mBinding.etTotalFootage.text.toString() +// ) +// ) + val workingFaceEntity = TunnelWorkingFaceEntity().also { + it.surfaceId = System.currentTimeMillis() + it.surfaceName = workingFaceName + it.totalFootage = totalFootageStr + + it.seamName = mBinding.tvSeamName.text.toString().trim() + if (it.seamName!!.isNotBlank()) { + it.seamId = mBinding.tvSeamName.tag.toString().toInt() + } + it.areaName = mBinding.tvAreaName.text.toString().trim() + if (it.areaName!!.isNotBlank()) { + it.areaId = mBinding.tvAreaName.tag.toString().toInt() + } + + it.surfaceAzimuth = mBinding.etSurfaceAzimuth.text.toString().trim() + it.surfaceHeight = mBinding.etSurfaceHeight.text.toString().trim() + it.surfaceWidth = mBinding.etSurfaceWidth.text.toString().trim() + it.tunnelNature = mBinding.tvTunnelNature.text.toString().trim() + it.planStartDate = mBinding.etPlanStartDate.text.toString().trim() + it.planEndDate = mBinding.etPlannEndDate.text.toString().trim() + it.geologicalType = mBinding.etGeologicalType.text.toString().trim() + it.hydrogeologicalType = mBinding.etHydrogeologicalType.text.toString().trim() + it.seamIgnition = mBinding.etSeamIgnition.text.toString().trim() + it.seamGas = mBinding.etSeamGas.text.toString().trim() + it.seamBumpPressure = mBinding.etSeamBumpPressure.text.toString().trim() + it.surfaceSupportForm = mBinding.etSurfaceSupportForm.text.toString().trim() + } + workingFaceViewModel.insert(workingFaceEntity) { + showToast("工作面新增完成") + finish() + } } private fun editFace() { + val workingFaceName = mBinding.etWorkfaceName.text.toString().trim() + if (TextUtils.isEmpty(workingFaceName)) { + showToast("请输入工作面名称") + return + } + val totalFootageStr = mBinding.etTotalFootage.text.toString().trim() + if (TextUtils.isEmpty(totalFootageStr)) { + showToast("请输入总进尺") + return + } + try { + totalFootageStr.toDouble() + } catch (e: Exception) { + e.printStackTrace() + showToast("总进尺数据非数字格式,请确认") + return + } + val workingFaceEntity = TunnelWorkingFaceEntity().also { + it.surfaceId = faceDetail!!.surfaceId + it.surfaceName = workingFaceName + it.totalFootage = totalFootageStr + + it.seamName = mBinding.tvSeamName.text.toString().trim() + if (it.seamName!!.isNotBlank()) { + it.seamId = string2num(mBinding.tvSeamName.tag.toString()) + } + it.areaName = mBinding.tvAreaName.text.toString().trim() + if (it.areaName!!.isNotBlank()) { + it.areaId = string2num(mBinding.tvAreaName.tag.toString()) + } + + it.surfaceAzimuth = mBinding.etSurfaceAzimuth.text.toString().trim() + it.surfaceHeight = mBinding.etSurfaceHeight.text.toString().trim() + it.surfaceWidth = mBinding.etSurfaceWidth.text.toString().trim() + it.tunnelNature = mBinding.tvTunnelNature.text.toString().trim() + it.planStartDate = mBinding.etPlanStartDate.text.toString().trim() + it.planEndDate = mBinding.etPlannEndDate.text.toString().trim() + it.geologicalType = mBinding.etGeologicalType.text.toString().trim() + it.hydrogeologicalType = mBinding.etHydrogeologicalType.text.toString().trim() + it.seamIgnition = mBinding.etSeamIgnition.text.toString().trim() + it.seamGas = mBinding.etSeamGas.text.toString().trim() + it.seamBumpPressure = mBinding.etSeamBumpPressure.text.toString().trim() + it.surfaceSupportForm = mBinding.etSurfaceSupportForm.text.toString().trim() + } + workingFaceViewModel.update(workingFaceEntity) { + showToast("工作面修改完成") + EventBus.getDefault().post(workingFaceEntity) + finish() + } + } + + @Subscribe(threadMode = ThreadMode.MAIN) + fun onWorkingFaceEvent(event: TunnelWorkingFaceEntity) { } + private fun string2num(text: String?): Int { + return if (text.isNullOrBlank()) 0 else text.toInt() + } + } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/WorkingFaceDetail2Activity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/WorkingFaceDetail2Activity.kt index 04e461a..8091cb7 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/WorkingFaceDetail2Activity.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/WorkingFaceDetail2Activity.kt @@ -10,28 +10,30 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.zmkg.coaloperation.adapter.WorkingItemAdapter import com.zmkg.coaloperation.bean.WorkingFaceItem import com.zmkg.coaloperation.databinding.ActivityWorkingFaceDetail2Binding -import com.zmkg.coaloperation.ui.tunneling.bean.FaceWorkDetailBean -import java.io.Serializable +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity +import org.greenrobot.eventbus.Subscribe +import org.greenrobot.eventbus.ThreadMode /** * 工作面详情2 */ class WorkingFaceDetail2Activity : BaseVMBActivity(R.layout.activity_working_face_detail2) { - companion object { - const val FACE_WORK_DETAIL_DATA = "faceWorkDetailData" - } + companion object { + const val FACE_WORK_DETAIL_DATA = "faceWorkDetailData" + } private val list: MutableList = mutableListOf() - private var detail:FaceWorkDetailBean?=null + // private var detail:FaceWorkDetailBean?=null + private var detail: TunnelWorkingFaceEntity? = null private val adapter by lazy { WorkingItemAdapter(list) } override fun initView(savedInstanceState: Bundle?) { mBinding.toolbarLay.vLine.visibility = View.GONE - mBinding.toolbarLay.rightText="修改" + mBinding.toolbarLay.rightText = "修改" mBinding.rvFaceList.let { it.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false) @@ -39,43 +41,19 @@ class WorkingFaceDetail2Activity : } } - @SuppressLint("NotifyDataSetChanged") override fun initData() { - val serializableExtra = intent.getSerializableExtra(FACE_WORK_DETAIL_DATA) - if (serializableExtra==null) { - finish() - } else { - detail = serializableExtra as FaceWorkDetailBean - detail?.let { - mBinding.toolbarLay.title = it.surfaceName - - list.add(WorkingFaceItem(pageType = 0, name = "工作面名称", value = it.surfaceName)) - list.add(WorkingFaceItem(pageType = 0, name = "所属煤层", value = it.seamName)) - list.add(WorkingFaceItem(pageType = 0, name = "所属采区域", value = it.areaName)) - list.add(WorkingFaceItem(pageType = 0, name = "工作面方位角", value = it.surfaceAzimuth)) - list.add(WorkingFaceItem(pageType = 0, name = "工作面巷高", value = it.surfaceHeight)) - list.add(WorkingFaceItem(pageType = 0, name = "工作面巷宽", value = it.surfaceWidth)) - list.add(WorkingFaceItem(pageType = 0, name = "巷道性质", value = it.tunnelNature)) - list.add(WorkingFaceItem(pageType = 0, name = "计划工期", value = "${it.planStartDate} ~ ${it.planEndDate}")) - list.add(WorkingFaceItem(pageType = 0, name = "地质类型", value = it.geologicalType)) - list.add(WorkingFaceItem(pageType = 0, name = "水文地质类型", value = it.hydrogeologicalType)) - list.add(WorkingFaceItem(pageType = 0, name = "煤层发火性", value = it.seamIgnition)) - list.add(WorkingFaceItem(pageType = 0, name = "瓦斯含量", value = it.seamGas)) - list.add(WorkingFaceItem(pageType = 0, name = "冲击地压危险性", value = it.seamBumpPressure)) - list.add(WorkingFaceItem(pageType = 0, name = "支护形式", value = it.surfaceSupportForm)) - } - - adapter.notifyDataSetChanged() - + detail = intent.getParcelableExtra(FACE_WORK_DETAIL_DATA) + detail?.let { + loadFaceDetail(it) } - } override fun bindEvent() { mBinding.toolbarLay.titleTvRight.setOnClickListener { toActivity(WorkFaceActivity::class.java, Bundle().apply { putString(WorkFaceActivity.WORK_FACE_TYPE, WorkFaceActivity.WorkFaceType.EDIT.name) - putSerializable(WorkFaceActivity.FACE_WORK_DETAIL_DATA, detail) +// putSerializable(WorkFaceActivity.FACE_WORK_DETAIL_DATA, detail) + putParcelable(WorkFaceActivity.FACE_WORK_DETAIL_DATA, detail) }) } } @@ -84,4 +62,51 @@ class WorkingFaceDetail2Activity : } + @SuppressLint("NotifyDataSetChanged") + private fun loadFaceDetail(it: TunnelWorkingFaceEntity) { + mBinding.toolbarLay.title = it.surfaceName + list.clear() + list.add(WorkingFaceItem(pageType = 0, name = "工作面名称", value = it.surfaceName)) + list.add(WorkingFaceItem(pageType = 0, name = "所属煤层", value = it.seamName)) + list.add(WorkingFaceItem(pageType = 0, name = "所属采区域", value = it.areaName)) + list.add(WorkingFaceItem(pageType = 0, name = "工作面方位角", value = it.surfaceAzimuth)) + list.add(WorkingFaceItem(pageType = 0, name = "工作面巷高", value = it.surfaceHeight)) + list.add(WorkingFaceItem(pageType = 0, name = "工作面巷宽", value = it.surfaceWidth)) + list.add(WorkingFaceItem(pageType = 0, name = "巷道性质", value = it.tunnelNature)) + list.add( + WorkingFaceItem( + pageType = 0, + name = "计划工期", + value = "${it.planStartDate} ~ ${it.planEndDate}" + ) + ) + list.add(WorkingFaceItem(pageType = 0, name = "地质类型", value = it.geologicalType)) + list.add( + WorkingFaceItem( + pageType = 0, + name = "水文地质类型", + value = it.hydrogeologicalType + ) + ) + list.add(WorkingFaceItem(pageType = 0, name = "煤层发火性", value = it.seamIgnition)) + list.add(WorkingFaceItem(pageType = 0, name = "瓦斯含量", value = it.seamGas)) + list.add( + WorkingFaceItem( + pageType = 0, + name = "冲击地压危险性", + value = it.seamBumpPressure + ) + ) + list.add(WorkingFaceItem(pageType = 0, name = "支护形式", value = it.surfaceSupportForm)) + + adapter.notifyDataSetChanged() + } + + @Subscribe(threadMode = ThreadMode.MAIN) + fun onWorkingFaceEvent(event: TunnelWorkingFaceEntity) { + detail = event + detail?.let { + loadFaceDetail(it) + } + } } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/WorkingFaceDetailActivity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/WorkingFaceDetailActivity.kt index e5e73ab..8e98621 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/WorkingFaceDetailActivity.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/WorkingFaceDetailActivity.kt @@ -1,24 +1,19 @@ package com.zmkg.coaloperation.ui.tunneling.activity import android.os.Bundle -import android.text.TextUtils import android.view.View import com.zmkg.coaloperation.R import com.zmkg.coaloperation.base.BaseVMBActivity import androidx.core.graphics.toColorInt -import androidx.lifecycle.Lifecycle -import androidx.lifecycle.lifecycleScope -import androidx.lifecycle.repeatOnLifecycle import com.zmkg.coaloperation.databinding.ActivityWorkingFaceDetailBinding -import com.zmkg.coaloperation.superfuntion.orEmptyDefaultInt -import com.zmkg.coaloperation.ui.tunneling.adapter.TunnelingHomeListAdapter +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity import com.zmkg.coaloperation.ui.tunneling.adapter.TunnelingRockNatureAdapter import com.zmkg.coaloperation.ui.tunneling.bean.FaceWorkDetailBean import com.zmkg.coaloperation.ui.tunneling.viewmodel.TunnelingViewModel import com.zmkg.coaloperation.utils.ScreenUtil -import kotlinx.coroutines.flow.collectLatest -import kotlinx.coroutines.launch -import java.io.Serializable +import org.greenrobot.eventbus.Subscribe +import org.greenrobot.eventbus.ThreadMode +import kotlin.apply import kotlin.math.roundToInt /** @@ -27,8 +22,13 @@ import kotlin.math.roundToInt class WorkingFaceDetailActivity : BaseVMBActivity(R.layout.activity_working_face_detail) { - val tunnelingRockNatureAdapter: TunnelingRockNatureAdapter by lazy { TunnelingRockNatureAdapter()} + companion object { + const val FACE_DETAIL = "faceDetail" + } + val tunnelingRockNatureAdapter: TunnelingRockNatureAdapter by lazy { TunnelingRockNatureAdapter() } + + private var faceDetail: TunnelWorkingFaceEntity? = null override fun initView(savedInstanceState: Bundle?) { mBinding.toolbarLay.rightText = "查看详情" @@ -48,7 +48,7 @@ class WorkingFaceDetailActivity : it.startAngle = -90f it.strokeWidth = 10f it.sweepAngle = 0f - it.radius = ScreenUtil.dp2px(100f-10f)/2f + it.radius = ScreenUtil.dp2px(100f - 10f) / 2f } mBinding.arcViewBlue.let { @@ -56,29 +56,33 @@ class WorkingFaceDetailActivity : it.startAngle = -90f it.strokeWidth = 10f it.sweepAngle = 0f - it.radius = ScreenUtil.dp2px(100f-10f)/2f + it.radius = ScreenUtil.dp2px(100f - 10f) / 2f } } override fun initData() { - val surfaceId = intent.getStringExtra("surfaceId") - if (TextUtils.isEmpty(surfaceId)) { - finish() - } else { - mViewModel.getTunnelingSurfaceDetail(surfaceId) - } +// val surfaceId = intent.getStringExtra("surfaceId") +// if (TextUtils.isEmpty(surfaceId)) { +// finish() +// } else { +// mViewModel.getTunnelingSurfaceDetail(surfaceId) +// } + faceDetail = intent.getParcelableExtra(FACE_DETAIL) + faceDetail?.let { + loadFaceDetail() + } } override fun bindEvent() { mBinding.toolbarLay.titleTvRight.setOnClickListener { toActivity(WorkingFaceDetail2Activity::class.java, Bundle().apply { - putSerializable( - WorkingFaceDetail2Activity.FACE_WORK_DETAIL_DATA, - mViewModel.faceWorkDetailData.value as Serializable - ) - +// putSerializable( +// WorkingFaceDetail2Activity.FACE_WORK_DETAIL_DATA, +// mViewModel.faceWorkDetailData.value as Serializable +// ) + putParcelable(WorkingFaceDetail2Activity.FACE_WORK_DETAIL_DATA, faceDetail) }) } } @@ -88,26 +92,38 @@ class WorkingFaceDetailActivity : override fun createObserve() { super.createObserve() - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED) { - mViewModel.faceWorkDetailData.collectLatest { - if (it != null) { - setDataView(it) - } - } - } - } +// lifecycleScope.launch { +// repeatOnLifecycle(Lifecycle.State.CREATED) { +// mViewModel.faceWorkDetailData.collectLatest { +// if (it != null) { +// setDataView(it) +// } +// } +// } +// } } private fun setDataView(bean: FaceWorkDetailBean?) { bean ?: return + } + private fun stringToDouble(numText:String?): Double { + if (numText.isNullOrEmpty() || numText.isBlank()) return 0.toDouble() + return numText.toDouble() + } + + private fun loadFaceDetail() { + val bean = faceDetail!! mBinding.apply { toolbarLay.title = bean.surfaceName - tvLenTotal.text = "总进尺:${bean.totalFootage}m" - tvLenAccumulate.text = "累计进尺:${bean.accumulativeFootage.orEmptyDefaultInt("0")}m" - tvLenRemain.text = "剩余进尺:${bean.remainingFootage.orEmptyDefaultInt("0")}m" + val total = stringToDouble(bean.totalFootage) + val accumulative = stringToDouble(bean.accumulativeFootage) + val remaining =stringToDouble( bean.remainingFootage) + + tvLenTotal.text = "总进尺:${total}m" + tvLenAccumulate.text = "累计进尺:${accumulative}m" + tvLenRemain.text = "剩余进尺:${remaining}m" //累计进尺占比 var radio = 0 @@ -115,44 +131,48 @@ class WorkingFaceDetailActivity : //累计进尺圆圈占比 var arcViewRadio: Float - if (bean.accumulativeFootage > bean.totalFootage) { + if (accumulative >= total) { radio = 100 arcViewRadio = 360F - } else if (bean.accumulativeFootage <= 0) { + } else if (accumulative <= 0) { radio = 0 arcViewRadio = 0F } else { - radio = (bean.accumulativeFootage * 100F / bean.accumulativeFootage).roundToInt() - arcViewRadio = bean.accumulativeFootage * 360F / bean.accumulativeFootage + arcViewRadio = (accumulative * 100F / total).toFloat() + radio = arcViewRadio.roundToInt() } arcViewRed.let { it.sweepAngle = arcViewRadio } - arcViewBlue.let { - it.sweepAngle = (360F-arcViewRadio) * -1F + it.sweepAngle = (360F - arcViewRadio) * -1F } mBinding.tvCompleteRate.text = "$radio%" - tvYesterdayLen.text = "${bean?.yesterdayFootage}m" - tvWorkingFaceAngle.text = "${bean?.latestRecord?.seamDip.orEmptyDefaultInt()}" - tvMonthAccumulateLen.text = "${bean?.monthFootage}m" - tvWorkingFaceWater.text = "${bean?.latestRecord?.waterYield.orEmptyDefaultInt()}m" +// tvYesterdayLen.text = "${bean?.yesterdayFootage}m" +// tvWorkingFaceAngle.text = "${bean?.latestRecord?.seamDip.orEmptyDefaultInt()}" +// tvMonthAccumulateLen.text = "${bean?.monthFootage}m" +// tvWorkingFaceWater.text = "${bean?.latestRecord?.waterYield.orEmptyDefaultInt()}m" - val list = bean?.latestRecord?.mineWorkingLithologyList - if (list.isNullOrEmpty()) { - tvYesterdayRockType.visibility = View.GONE - } else { - tvYesterdayRockType.visibility = View.VISIBLE - tunnelingRockNatureAdapter.setNewInstance(list) - } +// val list = bean?.latestRecord?.mineWorkingLithologyList +// if (list.isNullOrEmpty()) { +// tvYesterdayRockType.visibility = View.GONE +// } else { +// tvYesterdayRockType.visibility = View.VISIBLE +// tunnelingRockNatureAdapter.setNewInstance(list) +// } } + } + @Subscribe(threadMode = ThreadMode.MAIN) + fun onWorkingFaceEvent(event: TunnelWorkingFaceEntity) { + faceDetail = event + loadFaceDetail() } } \ 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 3dcf2be..5893813 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 @@ -11,6 +11,9 @@ 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.TunnelWorkingFaceRecordEntity +import org.greenrobot.eventbus.Subscribe +import org.greenrobot.eventbus.ThreadMode /** * 查看(棋盘井) @@ -18,6 +21,13 @@ import com.zmkg.coaloperation.databinding.ActivityWorkingPointBinding class WorkingPointActivity : BaseVMBActivity(R.layout.activity_working_point) { + companion object { + const val FACE_NAME = "faceName" + const val FACE_RECORD = "faceRecord" + } + + private var faceName: String? = null + private var faceRecord: TunnelWorkingFaceRecordEntity? = null private val list: MutableList = mutableListOf() private val adapter by lazy { WorkingItemAdapter(list) @@ -25,30 +35,46 @@ class WorkingPointActivity : override fun initView(savedInstanceState: Bundle?) { mBinding.toolbarLay.vLine.visibility = View.GONE - mBinding.toolbarLay.rightText = "查看详情" - + mBinding.toolbarLay.title = "查看详情" + mBinding.toolbarLay.rightText = "修改" + mBinding.toolbarLay.titleTvRight.setOnClickListener { + toActivity(AddWorkingPointActivity::class.java, Bundle().apply { + putInt(AddWorkingPointActivity.SHOW_TYPE, 1) + putString(AddWorkingPointActivity.FACE_NAME, faceName) + putParcelable(AddWorkingPointActivity.FACE_RECORD, faceRecord) + }) + } mBinding.rvPointList.let { it.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false) it.adapter = adapter } } - @SuppressLint("NotifyDataSetChanged") override fun initData() { - list.add(WorkingFaceItem(pageType = 1, name = "工作面名称", value = "5-20304回风工作面")) - list.add(WorkingFaceItem(pageType = 1, name = "施工日期", value = "2025-08-15")) - list.add(WorkingFaceItem(pageType = 1, name = "施工班次", value = "早班")) - list.add(WorkingFaceItem(pageType = 1, name = "施工队伍", value = "掘进队")) - list.add(WorkingFaceItem(pageType = 1, name = "带班队长", value = "刘某杰")) - list.add(WorkingFaceItem(pageType = 1, name = "班进尺", value = "200m")) + faceName = intent.getStringExtra(FACE_NAME) + faceRecord = intent.getParcelableExtra(FACE_RECORD) + faceRecord?.let { + loadFaceRecord(it) + } + } + + @SuppressLint("NotifyDataSetChanged") + private fun loadFaceRecord(it: TunnelWorkingFaceRecordEntity) { + 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 = it.teamName)) + list.add(WorkingFaceItem(pageType = 1, name = "带班队长", value = it.teamLeader)) + 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)) - list.add(WorkingFaceItem(pageType = 1, name = "煤层倾角", value = "60°")) - list.add(WorkingFaceItem(pageType = 1, name = "煤层高", value = "20m")) - list.add(WorkingFaceItem(pageType = 1, name = "记录人", value = "刘某杰")) + 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)) adapter.notifyDataSetChanged() } @@ -59,4 +85,11 @@ class WorkingPointActivity : override fun processClick(v: View?) { } + @Subscribe(threadMode = ThreadMode.MAIN) + fun onFaceRecordEvent(event:TunnelWorkingFaceRecordEntity) { + faceRecord = event + faceRecord?.let { + loadFaceRecord(it) + } + } } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/adapter/TunnelingHomeAdapter.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/adapter/TunnelingHomeAdapter.kt index 35be000..358c0a8 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/adapter/TunnelingHomeAdapter.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/adapter/TunnelingHomeAdapter.kt @@ -1,64 +1,64 @@ -package com.zmkg.coaloperation.ui.tunneling.adapter - -import android.content.Intent -import android.view.View -import android.widget.ImageView -import android.widget.LinearLayout -import androidx.recyclerview.widget.RecyclerView -import com.chad.library.adapter.base.BaseQuickAdapter -import com.chad.library.adapter.base.viewholder.BaseViewHolder -import com.zmkg.coaloperation.R -import com.zmkg.coaloperation.ui.tunneling.bean.TunnelingHomeBean -import com.zmkg.coaloperation.ui.tunneling.activity.WorkingPointActivity - - -/** - * 掘进首页列表 - */ - -class TunnelingHomeAdapter(var listener: (Int,String?)->Unit) : BaseQuickAdapter( - R.layout.item_geological_list -) { - - override fun convert(holder: BaseViewHolder, item: TunnelingHomeBean) { - val tunnelingHomeListAdapter: TunnelingHomeListAdapter by lazy { TunnelingHomeListAdapter().apply { - setOnItemClickListener { adapter, view, position -> - context.startActivity(Intent(context, WorkingPointActivity::class.java)) - } - } } - - val rvList = holder.getView(R.id.rv_content) - val expand = holder.getView(R.id.expand) - val recordLayout = holder.getView(R.id.record_layout) - - holder.apply { - setText(R.id.title, item.surfaceName) - rvList.adapter = tunnelingHomeListAdapter - tunnelingHomeListAdapter.setNewInstance(item.contentList?:mutableListOf()) - } - expand.setOnClickListener { - val imageView = it as ImageView - if (imageView.tag.equals("0")) {//收起状态 - imageView.setImageResource(R.mipmap.ic_arrow_down_white) - recordLayout.visibility = View.VISIBLE - imageView.tag = "1" - - if (data[holder.absoluteAdapterPosition].contentList.isNullOrEmpty()) { -// if (context is TunnelingActivity) { -// (context as TunnelingActivity).getRecordList(holder.layoutPosition) { -// tunnelingHomeListAdapter.notifyDataSetChanged() -// } -// } - listener.invoke(holder.absoluteAdapterPosition,data[holder.absoluteAdapterPosition].surfaceId) - } - } else {//展开状态 - imageView.setImageResource(R.mipmap.ic_arrow_right) - recordLayout.visibility = View.GONE - imageView.tag = "0" - } - } - } - init { - addChildClickViewIds(R.id.start_record) - } -} \ No newline at end of file +//package com.zmkg.coaloperation.ui.tunneling.adapter +// +//import android.content.Intent +//import android.view.View +//import android.widget.ImageView +//import android.widget.LinearLayout +//import androidx.recyclerview.widget.RecyclerView +//import com.chad.library.adapter.base.BaseQuickAdapter +//import com.chad.library.adapter.base.viewholder.BaseViewHolder +//import com.zmkg.coaloperation.R +//import com.zmkg.coaloperation.ui.tunneling.bean.TunnelingHomeBean +//import com.zmkg.coaloperation.ui.tunneling.activity.WorkingPointActivity +// +// +///** +// * 掘进首页列表 +// */ +// +//class TunnelingHomeAdapter(var listener: (Int,String?)->Unit) : BaseQuickAdapter( +// R.layout.item_geological_list +//) { +// +// override fun convert(holder: BaseViewHolder, item: TunnelingHomeBean) { +// val tunnelingHomeListAdapter: TunnelingHomeListAdapter by lazy { TunnelingHomeListAdapter().apply { +// setOnItemClickListener { adapter, view, position -> +// context.startActivity(Intent(context, WorkingPointActivity::class.java)) +// } +// } } +// +// val rvList = holder.getView(R.id.rv_content) +// val expand = holder.getView(R.id.expand) +// val recordLayout = holder.getView(R.id.record_layout) +// +// holder.apply { +// setText(R.id.title, item.surfaceName) +// rvList.adapter = tunnelingHomeListAdapter +// tunnelingHomeListAdapter.setNewInstance(item.contentList?:mutableListOf()) +// } +// expand.setOnClickListener { +// val imageView = it as ImageView +// if (imageView.tag.equals("0")) {//收起状态 +// imageView.setImageResource(R.drawable.ic_arrow_down_white) +// recordLayout.visibility = View.VISIBLE +// imageView.tag = "1" +// +// if (data[holder.absoluteAdapterPosition].contentList.isNullOrEmpty()) { +//// if (context is TunnelingActivity) { +//// (context as TunnelingActivity).getRecordList(holder.layoutPosition) { +//// tunnelingHomeListAdapter.notifyDataSetChanged() +//// } +//// } +// listener.invoke(holder.absoluteAdapterPosition,data[holder.absoluteAdapterPosition].surfaceId) +// } +// } else {//展开状态 +// imageView.setImageResource(R.drawable.ic_arrow_right_gray) +// recordLayout.visibility = View.GONE +// imageView.tag = "0" +// } +// } +// } +// init { +// addChildClickViewIds(R.id.start_record) +// } +//} \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/adapter/TunnelingHomeListAdapter.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/adapter/TunnelingHomeListAdapter.kt index e98d2db..a1d53e5 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/adapter/TunnelingHomeListAdapter.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/adapter/TunnelingHomeListAdapter.kt @@ -1,27 +1,27 @@ -package com.zmkg.coaloperation.ui.tunneling.adapter - -import com.chad.library.adapter.base.BaseQuickAdapter -import com.chad.library.adapter.base.viewholder.BaseViewHolder -import com.zmkg.coaloperation.R -import com.zmkg.coaloperation.ui.tunneling.bean.TunnelingHomeItemBean - - -/** - * 掘进首页点击出现的列表 - */ - -class TunnelingHomeListAdapter : - BaseQuickAdapter(R.layout.item_geological_list_content) { - - - override fun convert(holder: BaseViewHolder, item: TunnelingHomeItemBean) { - if (holder.absoluteAdapterPosition != 0) { - holder.setGone(R.id.head, true) - } - holder.setText(R.id.time, item.workingDate) - .setText(R.id.record, item.recordPerson) - - - } - -} \ No newline at end of file +//package com.zmkg.coaloperation.ui.tunneling.adapter +// +//import com.chad.library.adapter.base.BaseQuickAdapter +//import com.chad.library.adapter.base.viewholder.BaseViewHolder +//import com.zmkg.coaloperation.R +//import com.zmkg.coaloperation.ui.tunneling.bean.TunnelingHomeItemBean +// +// +///** +// * 掘进首页点击出现的列表 +// */ +// +//class TunnelingHomeListAdapter : +// BaseQuickAdapter(R.layout.item_geological_list_content) { +// +// +// override fun convert(holder: BaseViewHolder, item: TunnelingHomeItemBean) { +// if (holder.absoluteAdapterPosition != 0) { +// holder.setGone(R.id.head, true) +// } +// holder.setText(R.id.time, item.workingDate) +// .setText(R.id.record, item.recordPerson) +// +// +// } +// +//} \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/DateTimeUtil.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/DateTimeUtil.kt new file mode 100644 index 0000000..a07207a --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/DateTimeUtil.kt @@ -0,0 +1,32 @@ +package com.zmkg.coaloperation.utils + +import java.time.LocalDateTime +import java.time.ZoneId +import java.time.format.DateTimeFormatter +import java.util.Date + + +object DateTimeUtil { + + const val YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss" + + fun formatDateTime(dateTime: LocalDateTime, pattern: String = YYYY_MM_DD_HH_MM_SS): String { + val formatter = DateTimeFormatter.ofPattern(pattern) + return dateTime.format(formatter) + } + + fun convert(dateStr: String, pattern: String = YYYY_MM_DD_HH_MM_SS): Date { + val formatter = DateTimeFormatter.ofPattern(pattern) + val ldt = LocalDateTime.parse(dateStr, formatter) + val zdt = ldt.atZone(ZoneId.systemDefault()) + return Date.from(zdt.toInstant()) + } + + fun main() { + val now = LocalDateTime.now() + println("默认格式: ${formatDateTime(now)}") + println("自定义格式: ${formatDateTime(now, "yyyy年MM月dd日 HH时mm分ss秒")}") + } + + +} \ 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 15564bb..adabc16 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 @@ -16,4 +16,16 @@ fun View.clickWithDebounce(delay: Long = 300, action: () -> Unit) { action() } } +} + +fun View.visible() { + visibility = View.VISIBLE +} + +fun View.invisible() { + visibility = View.INVISIBLE +} + +fun View.gone() { + visibility = View.GONE } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/KeyboardUtil.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/KeyboardUtil.kt new file mode 100644 index 0000000..c2ba707 --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/KeyboardUtil.kt @@ -0,0 +1,17 @@ +package com.zmkg.coaloperation.utils + +import android.content.Context +import android.view.View +import android.view.inputmethod.InputMethodManager + + +object KeyboardUtil { + + fun hideKeyboard(view: View) { + val imm = view.context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager + imm.hideSoftInputFromWindow(view.windowToken, 0) + view.clearFocus() // 清除焦点避免键盘再次弹出 + } + + +} \ 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 191395c..ed892d4 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 @@ -7,6 +7,7 @@ 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 java.text.SimpleDateFormat import java.util.Calendar @@ -17,38 +18,58 @@ import java.util.Locale object PickerUtil { // 时间选择器示例 - fun showTimePicker(context: Context, action: (String) -> Unit) { + fun showTimePicker(context: Context, dateString:String, action: (String) -> Unit) { + val sdf = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()) TimePickerBuilder(context) { date, _ -> - val sdf = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()) action(sdf.format(date)) }.apply { setType(booleanArrayOf(true, true, true, false, false, false)) // 年月日 setLabel("年", "月", "日", "", "", "") setDividerColor(Color.GRAY) setContentTextSize(20) - setDate(Calendar.getInstance()) + val calendar = Calendar.getInstance() + try { + sdf.parse(dateString)?.let { date -> + calendar.time = date + } + } catch (e: Exception) { + e.printStackTrace() + } + setDate(calendar) // 设置日期范围(2023-01-01至2025-12-31) val startDate = Calendar.getInstance().apply { set(2020, 0, 1) } val endDate = Calendar.getInstance().apply { set(2050, 11, 31) } setRangDate(startDate, endDate) + setOutSideCancelable(true) } .build() .show() } // 三级联动选择器示例 - fun showOptionsPicker(context: Context, options: List, action: (String) -> Unit) { + fun showTeamsPicker(context: Context, options: List, action: (WorkTeam) -> Unit) { OptionsPickerBuilder(context) { opt1, _, _, _ -> action(options[opt1]) }.apply { - setTitleText("请选择地区") + setTitleText("选择施工队伍") setContentTextSize(18) - setOutSideCancelable(false) + setOutSideCancelable(true) }.build().apply { - setPicker(options, null, null) + setPicker( options.map { it.teamName } , null, null) + show() + } + } + fun showOptionsPicker(context: Context, title:String, options: List, action: (String) -> Unit) { + OptionsPickerBuilder(context) { opt1, _, _, _ -> + action(options[opt1]) + }.apply { + setTitleText(title) + setContentTextSize(18) + setOutSideCancelable(true) + }.build().apply { + setPicker( options , null, null) show() } } - } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/view/CRecyclerView.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/view/CRecyclerView.kt new file mode 100644 index 0000000..3974ede --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/view/CRecyclerView.kt @@ -0,0 +1,42 @@ +//package com.zmkg.coaloperation.view +// +//import android.annotation.SuppressLint +//import android.content.Context +//import android.util.AttributeSet +//import android.view.MotionEvent +//import androidx.recyclerview.widget.RecyclerView +// +//class CRecyclerView @JvmOverloads constructor( +// context: Context, +// attrs: AttributeSet? = null, +// defStyleAttr: Int = 0 +//): RecyclerView(context, attrs, defStyleAttr) { +// +// override fun onInterceptTouchEvent(e: MotionEvent?): Boolean { +// parent.requestDisallowInterceptTouchEvent(true) +// return super.onInterceptTouchEvent(e) +// } +// var x1 = 0f +// var y1 = 0f +// @SuppressLint("ClickableViewAccessibility") +// override fun onTouchEvent(e: MotionEvent): Boolean { +// when (e.action) { +// MotionEvent.ACTION_DOWN -> { +// parent.requestDisallowInterceptTouchEvent(true) +// x1 = e.x +// y1 = e.y +// } +// MotionEvent.ACTION_MOVE -> { +// val dy = e.y - y1 +// if (!canScrollVertically(-1) && dy > 0) { // 到达顶部继续下滑 +// parent.requestDisallowInterceptTouchEvent(false) +// } else if (!canScrollVertically(1) && dy < 0) { // 到达底部继续上滑 +// parent.requestDisallowInterceptTouchEvent(false) +// } +// } +// } +// return super.onTouchEvent(e) +// } +// +// +//} \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/view/NestedRecyclerView.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/view/NestedRecyclerView.kt new file mode 100644 index 0000000..bf57579 --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/view/NestedRecyclerView.kt @@ -0,0 +1,65 @@ +package com.zmkg.coaloperation.view + +import android.content.Context +import android.util.AttributeSet +import android.view.MotionEvent +import android.view.ViewConfiguration +import androidx.core.view.ViewCompat +import androidx.recyclerview.widget.RecyclerView +import kotlin.math.abs + + +class NestedRecyclerView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : RecyclerView(context, attrs, defStyleAttr) { + + private var lastY = 0f + private var isDragging = false + + private var touchSlop = ViewConfiguration.get(context).scaledTouchSlop + + override fun onInterceptTouchEvent(e: MotionEvent): Boolean { + when (e.action) { + MotionEvent.ACTION_DOWN -> { + lastY = e.y + parent.requestDisallowInterceptTouchEvent(true) + } + MotionEvent.ACTION_MOVE -> { + val dy = e.y - lastY + if (!canScrollVertically(-1) && dy > 0) { + parent.requestDisallowInterceptTouchEvent(false) + return false + } else if (!canScrollVertically(1) && dy < 0) { + parent.requestDisallowInterceptTouchEvent(false) + return false + } + } + } + return super.onInterceptTouchEvent(e) + } + + override fun onTouchEvent(e: MotionEvent): Boolean { + when (e.action) { + MotionEvent.ACTION_MOVE -> { + if (!isDragging && abs(e.y - lastY) > touchSlop) { + isDragging = true + } + } + MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> { + isDragging = false + } + } + return super.onTouchEvent(e) + } + + override fun dispatchTouchEvent(ev: MotionEvent): Boolean { + when (ev.action) { + MotionEvent.ACTION_DOWN -> { + stopNestedScroll(ViewCompat.SCROLL_AXIS_VERTICAL) + } + } + return super.dispatchTouchEvent(ev) + } +} diff --git a/coalMiningApp/app/src/main/res/drawable-xxhdpi/ic_arrow_down_white.png b/coalMiningApp/app/src/main/res/drawable-xxhdpi/ic_arrow_down_white.png new file mode 100644 index 0000000000000000000000000000000000000000..d58d15d61724557d11b3840e938796296093798a GIT binary patch literal 369 zcmV-%0gnEOP)27pMl*0GWV( zLS%sSx*DJ(Bn8v}86dr`2IvS$0X0AdNUy5_Izm$5zZx*J&CFg_J6oibXaiRlzZFk+ z{poiAptauny|uRcRK0h<@ra0r03hrKsvuw<+Bh>kVE`x>KrESumn8r!CPFNmhmU0d zEGIxv=HY9$v9^C*4<1Gosb`g;I+}IhH5UKW;XS?na2?rk&XjClm7L}?p>S>gjteHd7?e;&Q zYozP%&%XG~e+`$DVym)~Z=({QE^n)1l$t87^N!clkrMG-{@!6X7F+#t??rjQcxYe$41`YVp` zA+Yuv3#chdB&$;hG(JEtW9XMdA&OSy5)uk8N+UcHMcaOMA~ga>3q@%cKog%BFBi?1 zrMKSs4ded_kmF_6D7>Dx#IXgaMf^+vsR1-#(mEnhcq}2@Z$OZP$RhMK0trlmQ;s?% zphGcuT#$3Mplr<<>^DI?2#07h+)E5llmr|0v4#uQJoY{3g^6HA^!oQ3iSjDv`KXKy8SKCd4ju%<=C zL5}0DdM^GB;p(0~H6aM~Pcy7r=9Kpzxv6>wj-S5=Rswee+lr#nQ{XGEEf&@x(n|@+ z9Vq+#@CgTD%yI(Uy_G7i&z)BqtMal;f%jkqcQl$fFEX|`Z z=%6bT42mP>wkhMN8O~BIIND})E6lLu8p-`yNJ~-0hZk|t_RB_h3T>}xag^gzj-MBp z48zbgr)-v22dky`R&w2|4k=d7F#6pfjtEXgvjTjZ+$e!x)d}G(6)V)9&c_>|O*Ke+ z9OA!bC#`1NWC1&sWEN)pR^o^xa2l~rNkRPTeAt##A0Q~_dG-~0Qf45f_Gi~qJHV6z zLy}>;6!%dr(9C_yREZl6@ZhyCB6A1}4+H-&9pd4h1Vf5_DV&cLockM(f$UG_!>Ln2 zzWv*Kn_3XuK$D>mi-3ThtICg%lx%=BIHi%X__E&TF4!R16E7?eY9%+xwW*yA{4%o| ziK{H#ybQ~~2{AkKXY$1@y#OwjGK^5h1?Ddg<_meONWG}-HB!9&upLF~bFhOVRl$m? zEp{X6GFJep(QPF?cp{qjXnq^QE4kmdQgmrcpuhVR?KJR}%^ycw!D5kWPCz`|(eh;P zrRZ@~MR^o*lO;5nktgvO#6z(WNh;!7RyF>H@o#HWZ)NwciELUq)h3ZwiGyni<&tG! zPzf86$kz~R{N-B5NJ@xs!w+7ruZ}Y>?0zjtq^$T73-(jc#;^rRrRxi{jCXPQ(Pf1( z)77=pFlUzI$(?A(^YkLZVes$<+z@L8bCXodLD*vIa?8Tja(agtO%t6xLQLDq*pbMF z%<7Y6L{Uib1;USmw&8nTDmoU)KaSy8iR31d%XE&QV}*`kcO^a5N_C;gZ0aY`0s>l7 z<8AFMvhJv!g1eTJ!er6=ONXB5k(qQ4gHn4avXF{5;`cuDKrpv!`6+T_-C%8g^l7Aw zcZj^?$!1?K2l#ru;=N0Ft6WF+ z1%**R863d;5fl|+7x+DN7{j(SO?SlrJu69@^tJVK9LeoWG0d+bS%Tyf204pYa%XjOEFd5kD-jCv}tlLnW|F^e}&HQTAVx|}hf3Cy4 ziY1Dcz%o_Yf;N9H(dT*4;!G;DZg(#LySu$*gE{<_YR~UoN&u8A{X`DcWb!`%usnI1 JP;TOW{r}sZXQBWA literal 0 HcmV?d00001 diff --git a/coalMiningApp/app/src/main/res/drawable-xxhdpi/ic_arrow_right_gray.png b/coalMiningApp/app/src/main/res/drawable-xxhdpi/ic_arrow_right_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..d06f826b366229df16f448283fb2dbfb8e6a8ee8 GIT binary patch literal 354 zcmV-o0iFJdP)$URvmjy7MWyrqgk%ggq=E9^3<0{d^IrhG z8yFpk4m4IEZlT5kHlH3HXf9#n0?~nW0Z-HX(6OFF@7s1j(m|38$7z0|gD>mb0+v;i z^ehAjpb`!O2;d;V06c;Kz#>Qh9D)eIAjklF#2)~?xYe+G#5w`A5H<)$fDOVKkP#xE z{J(i~1xQM-+jSf^r_U$40W|#mGWIz`)8+!O3a@fHz%o1?U>%+cK!m3OP~j;6WOz6L z9Ucl`gogoG;mrZxPTtJ$=79M;4i=vW8mxBE-^8`SYL5#*ZKY7hMF)zNB~C^Mh{Y~m zDmqXs3vqJy9rytN0RR6TyV-I8000I_L_t&o0B@UQVIM^#M*si-07*qoM6N<$f(R;v AsQ>@~ literal 0 HcmV?d00001 diff --git a/coalMiningApp/app/src/main/res/drawable-xxhdpi/ic_arrow_up_white2.png b/coalMiningApp/app/src/main/res/drawable-xxhdpi/ic_arrow_up_white2.png new file mode 100644 index 0000000000000000000000000000000000000000..3eda059cc4d01fde7848b3078043fcd7e6f020d9 GIT binary patch literal 2026 zcmbtVdr(tX8o%M8E-^wC2_R9#VoD?=m#ihEAr1%?kOYFkfDg#)0s)en7bH?7!I^fE z2-#Hvy5g#+RaX%&Zbu3(q$Nm~$I{Wk!4VC@VswlT5K#-ky|LQb?*7r)Ju~O=edjyB z^PS)Kn>l;aIGb=@fnERr;F1#K)6v=B>WdbjV;4)Z?2GScHeeH(#VF(LUHjeBfJ1Q%;!LW+x}5=O2tcfCj= zSx*)TX%aFBN`z#gga(o&G@2x8JxGtt1w|q65|k-^x?Zk+%L2*=MJH5HzzC`A8YdyfB$BaJlo=NkQjB-hS6mRxH_s!9r>m2#DZ z1u`lB;rlO{zR4Zc0}CbUoqAkS`bmM19F?6G)t8os{0)`%cS-TFJYDvq+w97W;-IUO zufyC>Z*<(#l1eJzfot)?O0iwo$uefDVF`MtAQIL!97M_wKzEA{6-5VX@D zfVaeh1;B79r-WP5-SHe8B`Ehd*T+mM&wFELt^bgHJUcc%#BO>WuqY@c?C<`U>!*cv zP~rI1wlj~S00sTjblJ$A#?+SZ?S!ZsvE)vS!8<*;35Zr)B4wyVPXTFlB58H=c% zFEi)D`O%ECT3*@Ci8X@WuLcXuK#C`88Ie6vd4HAP?AbD}lEg7PS)St2s5j^TQN32Y$DCnMH=c zJAri0wUcwC6P9m>FRulR2BYW zjqkygGtmU^c-u9lA_Ty7>2Y=gM6CXF-z0|VN z;tAr-?nq9OWi_HR+bR}{_1^>DfW5nnx1_uLRPDa2J3F<4N|}+lQ7K2c4cq%)mE1l#_GRnw1Z_9&+x%oH zy{~1}7``Zub@*=C*6NWzrx*0ueQrI+JuMvZX&6YIPo2b;G?jhY^{PKGz__CHuiucj zl`ptwbvA(l4y&C$s2r7yblMG{RBY&q+hoX6<`gcWZXTJx7x#(YRPb=O+p`r!GAC>x zG3>}di=(gAWUlW_Dc2@HNKSsx`dW>p{kC=~@CW?kMw-vbko{cOhntkZiN6ph*z<2( Cc1@%J literal 0 HcmV?d00001 diff --git a/coalMiningApp/app/src/main/res/drawable-xxhdpi/ic_geological.png b/coalMiningApp/app/src/main/res/drawable-xxhdpi/ic_geological.png new file mode 100644 index 0000000000000000000000000000000000000000..40fb6905ee5bc8c16f8afe6ad0feea85bb1ffc42 GIT binary patch literal 1600 zcmV-G2EX}RtI&a;3hvo3t$Hr; z3@xNkkXGu8eN#zot9Z8l5`0d_O&!>ydb$--HpF5xG!_ZdKjC2-y?J9r8GM=;zeVto zG%CyUbuSfK)fDY5 zcsu!DWJQ9)H?u+EOrTY44@`I`I)x%9EE8xoCkPWbxd2+pJC$JAg07qe2FW~Vj^H~& zb#3Ukvz!J7m>HUbZ_{GXIS*`xj`P!HF=#1(1@zdzVOk7Y8ekoIW}3{Np{du0t@KLi3qANLuqM&L5bWOUpP=_YpDp<2c-sPNCNcj$#GOk zQ>a;bV2}bDrJ~R?_XRMrF#xmq?+aiCHQp|;u@sV4T!keS*1&QVHkLxtimR}s!Wvjv zQ`lSRHEyz!Dp>=5wc|w+&?qYpY^Ol&mV3_b7;x#6B?b)Oiq{trto)@idh<*ZRWa~j z-wk8Ty{b3{Tyyw2D&1D1Ljn#!P`UcOD)RC6jtq^n!dnT8QT=We?LJ&h>oz@vVYY@j z)3IceItJ`3Tt)S*HT3fFy$SE-FDcSh#$uE=meF6V_Q=3!!m*+=P`i~HkJqJTVh(HR zAh1_g65H5%6Ki{*>kqnqaq;aPsNHP+XohW~jDT@I100A_fi!!%DfBq+ggSkD7q2fg zUoz^m+xQWq?NlWr;E{o_eijjwtPcI!ewo_$pQK|AC#e7Q73*c=tS39mm9KAK@EIpM zG6EjFI7EX9wk812esoU1hDG`A{j+-A>@b4Z$2-2D_E%1l^(K@fX5Nt8xln>X0OM%us|Lyr-nEh4GaA1Gw*L*lV+^ICJ4Uf=ye zwUM0Y9sC2IMO@%&R^Dj?k6azqpSy{in_Y-4e36U8}X6i?j7f#HPZFO;pNh`FII zf}3b(vrGy+#wzu3wv_1RBUi(8bXOZ8xxg6&c>n3&b#S!dJfbjy5?}}WhN$=Rx!{C3 zF%BgRfeO&5XWNnjp=j*Hb*z>P}fd2f7afpHMa|p^w~| zGBA&o;_U)UA)^h1tFX=DNO8$kSPB_!AY6rQ7DtLpuEJ8tXanIYY_m90TyhnbLPi@1 zS7DpQ$@xnFa23WX$ZSwp|K}dnlP4{ws(J)lgn^YFw0ypN6jGXRb%D;Mkn)X6ajlj3 zm0wUqtMk`zO|G}sS3qC`RV+@e>iM2dD0~PV1#A3N>|d)7z@S_=uoMRV|H?N9=l}o!21!IgR09CX`90<&vyDyw0000 - + android:color="#282C38" /> + \ No newline at end of file diff --git a/coalMiningApp/app/src/main/res/drawable/scrollbar_thumb.xml b/coalMiningApp/app/src/main/res/drawable/scrollbar_thumb.xml new file mode 100644 index 0000000..3a7bcd3 --- /dev/null +++ b/coalMiningApp/app/src/main/res/drawable/scrollbar_thumb.xml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/coalMiningApp/app/src/main/res/layout/activity_add_working_point.xml b/coalMiningApp/app/src/main/res/layout/activity_add_working_point.xml index cb490d4..8fe6897 100644 --- a/coalMiningApp/app/src/main/res/layout/activity_add_working_point.xml +++ b/coalMiningApp/app/src/main/res/layout/activity_add_working_point.xml @@ -31,6 +31,7 @@ android:layout_marginTop="10dp" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginBottom="10dp" android:background="@drawable/bg_stroke_gray" android:orientation="vertical"> @@ -79,7 +80,7 @@ android:textSize="16sp" /> - + + + + + + + + + + + + + tools:itemCount="3" + android:overScrollMode="never" + tools:listitem="@layout/list_item_rock" + tools:minHeight="60dp"/> + app:layout_constraintEnd_toEndOf="@id/rvLithology" + app:layout_constraintStart_toStartOf="@id/rvLithology" + app:layout_constraintTop_toBottomOf="@id/rvLithology" /> + tools:listitem="@layout/list_item_tunnel_working_face" /> \ No newline at end of file diff --git a/coalMiningApp/app/src/main/res/layout/activity_work_face.xml b/coalMiningApp/app/src/main/res/layout/activity_work_face.xml index c2adc41..e27f477 100644 --- a/coalMiningApp/app/src/main/res/layout/activity_work_face.xml +++ b/coalMiningApp/app/src/main/res/layout/activity_work_face.xml @@ -1,13 +1,14 @@ + xmlns:tools="http://schemas.android.com/tools" + tools:ignore="HardcodedText"> - - - + layout="@layout/lay_title_right_bar" /> + + android:layout_height="0dp" + android:layout_weight="1" + android:layout_marginHorizontal="20dp"> - + android:background="@drawable/bg_stroke_gray"> + android:visibility="visible"> - - - + android:paddingStart="15dp" + android:paddingEnd="15dp" + android:layout_gravity="center_horizontal" + android:src="@drawable/ic_arrow_down_white2" + android:scaleType="fitCenter" + tools:ignore="ContentDescription" + android:visibility="gone"/> - - - - + - - + \ No newline at end of file diff --git a/coalMiningApp/app/src/main/res/layout/item_geological_list.xml b/coalMiningApp/app/src/main/res/layout/item_geological_list.xml index 2b61774..b581dc7 100644 --- a/coalMiningApp/app/src/main/res/layout/item_geological_list.xml +++ b/coalMiningApp/app/src/main/res/layout/item_geological_list.xml @@ -12,7 +12,6 @@ android:layout_height="wrap_content" android:orientation="vertical"> - + android:background="@drawable/ic_geological" /> diff --git a/coalMiningApp/app/src/main/res/layout/list_item_tunnel_working_face.xml b/coalMiningApp/app/src/main/res/layout/list_item_tunnel_working_face.xml new file mode 100644 index 0000000..9a1b872 --- /dev/null +++ b/coalMiningApp/app/src/main/res/layout/list_item_tunnel_working_face.xml @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/coalMiningApp/app/src/main/res/layout/list_item_tunnel_working_face_record.xml b/coalMiningApp/app/src/main/res/layout/list_item_tunnel_working_face_record.xml new file mode 100644 index 0000000..4263451 --- /dev/null +++ b/coalMiningApp/app/src/main/res/layout/list_item_tunnel_working_face_record.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/coalMiningApp/app/src/main/res/layout/list_item_working_face.xml b/coalMiningApp/app/src/main/res/layout/list_item_working_face.xml index 90e1830..f1fbb7e 100644 --- a/coalMiningApp/app/src/main/res/layout/list_item_working_face.xml +++ b/coalMiningApp/app/src/main/res/layout/list_item_working_face.xml @@ -12,7 +12,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" - tools:background="@color/text_gray1"> + tools:background="@color/text_green"> x`x5i)z4*}Q$iB}Cf`@c diff --git a/coalMiningApp/app/src/main/res/mipmap-xhdpi/arrow_up_white.png b/coalMiningApp/app/src/main/res/mipmap-xhdpi/arrow_up_white.png deleted file mode 100644 index 10ecd3a09b8a2789217ef52858eccdb423dfa781..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^!a&T;!3HGfUfpH|q!^2X+?^QKos)S9tS)&xR_gu1)t@8H%q8E>Jlq?tOomq4| zzew%M1D#j(Y3B0|#;s^v+HphrZG!HVgJCXf`U^jZWFVdQ&MBb@0HNVowg3PC diff --git a/coalMiningApp/app/src/main/res/mipmap-xhdpi/ic_arrow_down_white.png b/coalMiningApp/app/src/main/res/mipmap-xhdpi/ic_arrow_down_white.png deleted file mode 100644 index 50174698416b089b0471981e42ecbb3104a1f977..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|W_h|ehIn|t zoovX(WGLctzoGp`9JhYr#=Xb4ewPxv^*`iZQqOSpZW)uz=QIp=Qu+n6Eo zkn$q=-V@&hceFjO<;t5B_uBmGq}=(9)&{DI+yxWA_%L>5FfW;Lev;hQ#9i658cNP` z8~kCH^~jjVWb(*s=5j`DkDX@5{?lW$&wS&w*ur%;rl`nu_ofX`@)el{)PDRI+{^g+ XkdEZRw&xpxu4M3Z^>bP0l+XkK0C-jB diff --git a/coalMiningApp/app/src/main/res/mipmap-xhdpi/ic_arrow_right.png b/coalMiningApp/app/src/main/res/mipmap-xhdpi/ic_arrow_right.png deleted file mode 100644 index bb7a3fcbb2d3ba976813a60ff36fb7c438b3c0b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|HhQ`^hIn`< zrz|i`ShDda&tfqFp2S5>E4D22mP`pM_r4k1q_#*?;atsVbR`8Lgv;qEY-Bg5@sG$({xtAn%n%MS&u4leCmp)({RBRO0( sww+Kr#T3M4zNy9_i&0h4AwZv@Z)vpT)^nD3fR1PIboFyt=akR{0H2LllmGw# diff --git a/coalMiningApp/app/src/main/res/mipmap-xhdpi/ic_geological.png b/coalMiningApp/app/src/main/res/mipmap-xhdpi/ic_geological.png deleted file mode 100644 index c57a3da0bebc937955cbc011558f863bdbf77297..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 880 zcmV-$1CRWPP)Px&DoI2^R9Hvtmt9CxVI0Pv_w37b)45G&X_~1hN-ANW3a$|pBp9~9nS_u8hM--A zK~NV(7g4J&l*lNs4{+9vL0vRgI589hi69fFrE{8d=9aqYJaLX6xpZsUwyT|+1Mj=@ z{Ql4L|DQ8nvO}Q=i>G9F2~Dd&h#3C3XnKk!xIeOJxiqNP&ut`0@|CJvPRDGmecB3| zUi1eR6vcs16b-&0Ov_!IQ0w*jg+GN!fl_6&d^ZXG1^o>mh>VhYgfn1zVtm*yPS=Yp z!Fd8fgF)9)wRS(iU$c16>wKYXRNb$pnirGF=k_DeiGF6#U8;|v+wu@j!BVVU&U_Z6lbyz ze0ghR?`eg}?0v#GiPzWk7<|9)@^l$0o6EfR-Dk(SC7CF!J^-OC0+U~-@Z{_ZNRy*+Qd7jnZZS@xx#lG-gI1_C z$B?c}*&LW~2s=P7hYREV7VIt0#jc_Zk776S8{nLoM{KI}uWlI;kB-ak9Y^y1L^sg% zm>rRFAr>49tHZ_gwof;J?x(%5joW>4>lK_=nvEkD6)e~}2y-?E`q~D-BqZ4`MrE_wZQ?yekjP!0WTk6hDm|qM2(AfX@1(KK+|+U zU@M}85QGb(m_u7NVHWchs#AnQDQE}-N(Sa=8chbh_VF)mI+awRX@eX90000#0C0D0E #17181C #A3FEA6 + #FF21A69A \ No newline at end of file diff --git a/coalMiningApp/build.gradle b/coalMiningApp/build.gradle index c0a279e..9eda8b4 100644 --- a/coalMiningApp/build.gradle +++ b/coalMiningApp/build.gradle @@ -5,7 +5,8 @@ buildscript { plugins { id 'com.android.application' version '7.2.2' apply false id 'com.android.library' version '7.2.2' apply false - id 'org.jetbrains.kotlin.android' version '1.9.0' apply false +// id 'org.jetbrains.kotlin.android' version '1.9.0' apply false + id 'org.jetbrains.kotlin.android' version '2.0.21' apply false id 'org.jetbrains.kotlin.jvm' version '1.8.20' apply false } diff --git a/coalMiningApp/config.gradle b/coalMiningApp/config.gradle index 1b74a7f..8f70c6e 100644 --- a/coalMiningApp/config.gradle +++ b/coalMiningApp/config.gradle @@ -1,13 +1,14 @@ ext { minSdkVersion = 26 - targetSdkVersion = 32 - compileSdkVersion = 33 + targetSdkVersion = 34 + compileSdkVersion = 34 versionCode = 100 versionName = "1.0.0" //Dependencies junitVersion = "4.12" lifecycleVersion = "2.6.0-alpha01" - kotlinVersion = "1.7.10" +// kotlinVersion = "1.7.10" + kotlinVersion = "2.0.21" glideVersion = "4.13.0" recycleViewVersion = "1.2.1" appcompatVersion = "1.5.0" diff --git a/coalMiningApp/settings.gradle b/coalMiningApp/settings.gradle index 60e4b5f..57e81ea 100644 --- a/coalMiningApp/settings.gradle +++ b/coalMiningApp/settings.gradle @@ -16,59 +16,57 @@ dependencyResolutionManagement { google() mavenCentral() maven { url "https://mirrors.tencent.com/nexus/repository/maven-public/" } - - } } rootProject.name = "digitalCoalMiningPlatform" include ':app' -// 引入内部组件通信模块 (必要模块) -include ':tuicore' -project(':tuicore').projectDir = new File(settingsDir, '../CoalMiningKit/TUICore/tuicore') - -// 引入 IM 组件公共模块(必要模块) -include ':timcommon' -project(':timcommon').projectDir = new File(settingsDir, '../CoalMiningKit/TIMCommon/timcommon') - -// 引入聊天功能模块 (基础功能模块) -include ':tuichat' -project(':tuichat').projectDir = new File(settingsDir, '../CoalMiningKit/TUIChat/tuichat') - -// 引入关系链功能模块 (基础功能模块) -include ':tuicontact' -project(':tuicontact').projectDir = new File(settingsDir, '../CoalMiningKit/TUIContact/tuicontact') - -// 引入会话功能模块 (基础功能模块) -include ':tuiconversation' -project(':tuiconversation').projectDir = new File(settingsDir, '../CoalMiningKit/TUIConversation/tuiconversation') - -//// 引入搜索功能模块(需要购买旗舰版或企业版套餐) -//include ':tuisearch' -//project(':tuisearch').projectDir = new File(settingsDir, '../CoalMiningKit/TUISearch/tuisearch') +//// 引入内部组件通信模块 (必要模块) +//include ':tuicore' +//project(':tuicore').projectDir = new File(settingsDir, '../CoalMiningKit/TUICore/tuicore') // -//// 引入社群话题功能模块(需要购买旗舰版或企业版套餐) -//include ':tuicommunity' -//project(':tuicommunity').projectDir = new File(settingsDir, '../CoalMiningKit/TUICommunity/tuicommunity') - -// 引入音视频通话功能模块 -include ':tuicallkit' -project(':tuicallkit').projectDir = new File(settingsDir, '../CoalMiningKit/TUICallKit/tuicallkit-kt') - -//// 引入视频会议模块 -//include ':tuiroomkit' -//project(':tuiroomkit').projectDir = new File(settingsDir, '../CoalMiningKit/TUIRoomKit/tuiroomkit') +//// 引入 IM 组件公共模块(必要模块) +//include ':timcommon' +//project(':timcommon').projectDir = new File(settingsDir, '../CoalMiningKit/TIMCommon/timcommon') // -//// 引入语音转文字插件,从 7.5 版本开始支持 -//include ':tuivoicetotextplugin' -//project(':tuivoicetotextplugin').projectDir = new File(settingsDir, '../CoalMiningKit/TUIVoiceToTextPlugin/tuivoicetotextplugin') +//// 引入聊天功能模块 (基础功能模块) +//include ':tuichat' +//project(':tuichat').projectDir = new File(settingsDir, '../CoalMiningKit/TUIChat/tuichat') // -//// 引入聊天消息翻译插件,从 7.2 版本开始支持(需单独购买翻译插件) -//include ':tuitranslationplugin' -//project(':tuitranslationplugin').projectDir = new File(settingsDir, '../CoalMiningKit/TUITranslationPlugin/tuitranslationplugin') +//// 引入关系链功能模块 (基础功能模块) +//include ':tuicontact' +//project(':tuicontact').projectDir = new File(settingsDir, '../CoalMiningKit/TUIContact/tuicontact') // -//// 引入表情回应插件,从 7.8 版本开始支持(需要购买旗舰版或企业版套餐) -//include ':tuiemojiplugin' -//project(':tuiemojiplugin').projectDir = new File(settingsDir, '../CoalMiningKit/TUIEmojiPlugin/tuiemojiplugin') +//// 引入会话功能模块 (基础功能模块) +//include ':tuiconversation' +//project(':tuiconversation').projectDir = new File(settingsDir, '../CoalMiningKit/TUIConversation/tuiconversation') +// +////// 引入搜索功能模块(需要购买旗舰版或企业版套餐) +////include ':tuisearch' +////project(':tuisearch').projectDir = new File(settingsDir, '../CoalMiningKit/TUISearch/tuisearch') +//// +////// 引入社群话题功能模块(需要购买旗舰版或企业版套餐) +////include ':tuicommunity' +////project(':tuicommunity').projectDir = new File(settingsDir, '../CoalMiningKit/TUICommunity/tuicommunity') +// +//// 引入音视频通话功能模块 +//include ':tuicallkit' +//project(':tuicallkit').projectDir = new File(settingsDir, '../CoalMiningKit/TUICallKit/tuicallkit-kt') +// +////// 引入视频会议模块 +////include ':tuiroomkit' +////project(':tuiroomkit').projectDir = new File(settingsDir, '../CoalMiningKit/TUIRoomKit/tuiroomkit') +//// +////// 引入语音转文字插件,从 7.5 版本开始支持 +////include ':tuivoicetotextplugin' +////project(':tuivoicetotextplugin').projectDir = new File(settingsDir, '../CoalMiningKit/TUIVoiceToTextPlugin/tuivoicetotextplugin') +//// +////// 引入聊天消息翻译插件,从 7.2 版本开始支持(需单独购买翻译插件) +////include ':tuitranslationplugin' +////project(':tuitranslationplugin').projectDir = new File(settingsDir, '../CoalMiningKit/TUITranslationPlugin/tuitranslationplugin') +//// +////// 引入表情回应插件,从 7.8 版本开始支持(需要购买旗舰版或企业版套餐) +////include ':tuiemojiplugin' +////project(':tuiemojiplugin').projectDir = new File(settingsDir, '../CoalMiningKit/TUIEmojiPlugin/tuiemojiplugin')