diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingFaceAdapter.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingFaceAdapter.kt index 8fc5d28..77e9fc2 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingFaceAdapter.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingFaceAdapter.kt @@ -17,7 +17,9 @@ import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity import com.zmkg.coaloperation.ui.tunneling.activity.TunnelingActivity import com.zmkg.coaloperation.ui.tunneling.activity.WorkingPointActivity import com.zmkg.coaloperation.utils.ScreenUtil +import com.zmkg.coaloperation.utils.gone import com.zmkg.coaloperation.utils.toJsonString +import com.zmkg.coaloperation.utils.visible class TunnelWorkingFaceAdapter(var list: MutableList) : BaseQuickAdapter( @@ -44,7 +46,9 @@ class TunnelWorkingFaceAdapter(var list: MutableList) : 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.llFaceRecord.let { + if (item.isExpandRecord) it.visible() else it.gone() + } binding.ivExpandRecord.setImageResource( if (item.isExpandRecord) R.drawable.ic_arrow_down_white else R.drawable.ic_arrow_right_gray ) @@ -55,6 +59,10 @@ class TunnelWorkingFaceAdapter(var list: MutableList) : item.records = mutableListOf() } val size = item.records!!.size + binding.includeHeader.root.let { header -> + if (size > 0) header.visible() + else header.gone() + } rv.updateLayoutParams { height = if (size >= 3) ScreenUtil.dp2px(150F) @@ -91,7 +99,11 @@ class TunnelWorkingFaceAdapter(var list: MutableList) : inner class VH(var binding: ListItemTunnelWorkingFaceBinding) : BaseViewHolder(binding.root) init { - addChildClickViewIds(R.id.start_record, R.id.ivExpandRecord) + addChildClickViewIds( + R.id.start_record, + R.id.ivExpandRecord, + R.id.llWorkingFace + ) } } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelWorkingFaceRecordDao.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelWorkingFaceRecordDao.kt index 8dd8cab..2aba4c4 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelWorkingFaceRecordDao.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelWorkingFaceRecordDao.kt @@ -30,6 +30,9 @@ interface TunnelWorkingFaceRecordDao { @Query("SELECT * FROM tunnel_working_face_record WHERE surfaceId = :recordId") fun getEntityById(recordId: Long): TunnelWorkingFaceRecordEntity + @Query("SELECT * FROM tunnel_working_face_record WHERE surfaceId = :surfaceId AND latestRecordState = '1' ORDER BY createTime ASC LIMIT 1") + fun getLastEntity(surfaceId: Long): TunnelWorkingFaceRecordEntity? + @Query("DELETE FROM tunnel_working_face_record") fun deleteAll(): Int } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelRoofLithologyEntity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelRoofLithologyEntity.kt index 59168f1..9da4cf2 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelRoofLithologyEntity.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelRoofLithologyEntity.kt @@ -2,6 +2,7 @@ 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.utils.DateTimeUtil import kotlinx.parcelize.Parcelize @@ -59,4 +60,7 @@ class TunnelRoofLithologyEntity ( * 数据状态:0-默认值,原始数据,1-已修改数据 */ var dataState: String = "0" -): Parcelable \ No newline at end of file +): Parcelable { + @Ignore + constructor():this(lithologyId = 0) +} diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelWorkingFaceRecordEntity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelWorkingFaceRecordEntity.kt index a231181..bc95435 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelWorkingFaceRecordEntity.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entiry/tunnel/TunnelWorkingFaceRecordEntity.kt @@ -68,6 +68,10 @@ data class TunnelWorkingFaceRecordEntity ( * 煤层高度 */ var seamHeight: String? = null, + /** + * 涌水量 + */ + var waterYield: String? = null, /** * 创建时间 @@ -84,6 +88,11 @@ data class TunnelWorkingFaceRecordEntity ( */ var dataState: String = "0", + /** + * 工作面中昨日记录状态:0-默认值,非昨日记录,1-昨日记录 + */ + var latestRecordState: String = "0", + @Ignore var mineWorkingLithologyList: MutableList? = null, diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/repository/TunnelWorkingFaceRecordRepository.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/repository/TunnelWorkingFaceRecordRepository.kt index fe14ca4..22002b2 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/repository/TunnelWorkingFaceRecordRepository.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/repository/TunnelWorkingFaceRecordRepository.kt @@ -31,6 +31,11 @@ class TunnelWorkingFaceRecordRepository(private val dao: TunnelWorkingFaceRecord suspend fun getEntityById(faceId: Long) = withContext(Dispatchers.IO) { dao.getEntityById(faceId) } + + suspend fun getLastEntity(surfaceId: Long) = withContext(Dispatchers.IO) { + dao.getLastEntity(surfaceId) + } + suspend fun deleteAll() = withContext(Dispatchers.IO) { dao.deleteAll() } diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/viewmodel/TunnelWorkingFaceRecordViewModel.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/viewmodel/TunnelWorkingFaceRecordViewModel.kt index b26014b..0058e46 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/viewmodel/TunnelWorkingFaceRecordViewModel.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/viewmodel/TunnelWorkingFaceRecordViewModel.kt @@ -56,6 +56,11 @@ class TunnelWorkingFaceRecordViewModel(application: Application) : AndroidViewMo repository.getEntityById(recordId) } + fun getLastEntity(surfaceId: Long, action: (TunnelWorkingFaceRecordEntity?) -> Unit) = viewModelScope.launch { + val record = repository.getLastEntity(surfaceId) + action(record) + } + fun deleteAll(action: () -> Unit={}) = viewModelScope.launch { repository.deleteAll() action() 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 a196c99..cf14ec7 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 @@ -230,6 +230,7 @@ class AddWorkingPointActivity : Log.d(TAG, "saveFaceRecord: ${roofLithologyList.toJson()}") workingFaceRecordViewModel.insert(faceRecord) { + EventBus.getDefault().post(faceRecord) roofLithologyViewModel.insertList(roofLithologyList) { finish() } diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/TunnelingActivity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/TunnelingActivity.kt index 0cd814c..3e924c7 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 @@ -41,12 +41,13 @@ class TunnelingActivity : 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.llWorkingFace) { + toActivity(WorkingFaceDetailActivity::class.java, Bundle().apply { + putParcelable(WorkingFaceDetailActivity.FACE_DETAIL, workingFaceList[position]) + }) + return@setOnItemChildClickListener + } if (view.id == R.id.ivExpandRecord) { val expandState = view.tag.toString().toBooleanStrictOrNull() ?: false workingFaceList[position].isExpandRecord = expandState.not() @@ -126,10 +127,7 @@ class TunnelingActivity : workingFaceAdapter.notifyItemChanged(position) return@getEntityList } - val viewHolder = - mBinding.rvList.findViewHolderForLayoutPosition(position) as TunnelWorkingFaceAdapter.VH - val recordAdapter = - viewHolder.binding.rvFaceRecord.adapter as TunnelWorkingFaceRecordAdapter + val recordAdapter = getRecordAdapter(position) recordAdapter.apply { list.clear() // list.add(FACE_RECORD_HEADER) @@ -143,6 +141,15 @@ class TunnelingActivity : @Subscribe(threadMode = ThreadMode.MAIN) fun onWorkingFaceEvent(event: TunnelWorkingFaceEntity) { val index = workingFaceList.indexOfFirst { it.surfaceId == event.surfaceId } + if (index == -1) { + //新增工作面 + val insertIndex = workingFaceList.size + workingFaceList.add(event) + workingFaceAdapter.notifyItemInserted(insertIndex) + workingFaceAdapter.notifyItemRangeChanged(insertIndex, insertIndex+1) + return + } + //修改工作面 workingFaceViewModel.getEntityById(event.surfaceId) { entity -> workingFaceList[index] = entity workingFaceAdapter.notifyItemChanged(index) @@ -151,7 +158,27 @@ class TunnelingActivity : @Subscribe(threadMode = ThreadMode.MAIN) fun onFaceRecordEvent(event: TunnelWorkingFaceRecordEntity) { - //TODO 折叠子列表 + val position = workingFaceList.indexOfFirst { it.surfaceId == event.surfaceId } + val faceEntity = workingFaceList[position] + if (faceEntity.isExpandRecord.not()) { + return + } + faceEntity.records?.let { records -> + val index = records.indexOfFirst { it.recordId == event.recordId } + if (index == -1) { + records.add(event) + } else { + records[index] = event + } + } + val recordAdapter = getRecordAdapter(position) + recordAdapter.notifyDataSetChanged() + } + + private fun getRecordAdapter(position:Int):TunnelWorkingFaceRecordAdapter { + val viewHolder = + mBinding.rvList.findViewHolderForLayoutPosition(position) as TunnelWorkingFaceAdapter.VH + return viewHolder.binding.rvFaceRecord.adapter as TunnelWorkingFaceRecordAdapter } } \ 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 70c1074..a611cb8 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 @@ -287,6 +287,7 @@ class WorkFaceActivity : } workingFaceViewModel.insert(workingFaceEntity) { showToast("工作面新增完成") + EventBus.getDefault().post(workingFaceEntity) finish() } } 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 8e98621..82f42ac 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 @@ -5,8 +5,12 @@ import android.view.View import com.zmkg.coaloperation.R import com.zmkg.coaloperation.base.BaseVMBActivity import androidx.core.graphics.toColorInt +import androidx.lifecycle.ViewModelProvider import com.zmkg.coaloperation.databinding.ActivityWorkingFaceDetailBinding +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelRoofLithologyEntity import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity +import com.zmkg.coaloperation.db.viewmodel.TunnelRoofLithologyViewModel +import com.zmkg.coaloperation.db.viewmodel.TunnelWorkingFaceRecordViewModel import com.zmkg.coaloperation.ui.tunneling.adapter.TunnelingRockNatureAdapter import com.zmkg.coaloperation.ui.tunneling.bean.FaceWorkDetailBean import com.zmkg.coaloperation.ui.tunneling.viewmodel.TunnelingViewModel @@ -26,7 +30,18 @@ class WorkingFaceDetailActivity : const val FACE_DETAIL = "faceDetail" } - val tunnelingRockNatureAdapter: TunnelingRockNatureAdapter by lazy { TunnelingRockNatureAdapter() } + private val workingFaceRecordViewModel: TunnelWorkingFaceRecordViewModel by lazy { + ViewModelProvider(this)[TunnelWorkingFaceRecordViewModel::class.java] + } + + private val roofLithologyViewModel: TunnelRoofLithologyViewModel by lazy { + ViewModelProvider(this)[TunnelRoofLithologyViewModel::class.java] + } + private val tunnelingRockNatureAdapter: TunnelingRockNatureAdapter by lazy { + TunnelingRockNatureAdapter(lithologyList) + } + + private val lithologyList:MutableList = mutableListOf() private var faceDetail: TunnelWorkingFaceEntity? = null @@ -70,8 +85,23 @@ class WorkingFaceDetailActivity : // } faceDetail = intent.getParcelableExtra(FACE_DETAIL) - faceDetail?.let { + faceDetail?.let { detail -> loadFaceDetail() + workingFaceRecordViewModel.getLastEntity(detail.surfaceId) { record -> + record?.let { + mBinding.tvYesterdayLen.text = "${it.workingFootage}m" + mBinding.tvWorkingFaceAngle.text = "${it.seamDip}" +// mBinding.tvMonthAccumulateLen.text = "${it.monthFootage}m" + mBinding.tvWorkingFaceWater.text = "${it.waterYield}" + + roofLithologyViewModel.getEntityList(it.recordId) { list -> + list?.let { + lithologyList.addAll(it) + tunnelingRockNatureAdapter.notifyDataSetChanged() + } + } + } + } } } @@ -107,7 +137,7 @@ class WorkingFaceDetailActivity : bean ?: return } - private fun stringToDouble(numText:String?): Double { + private fun stringToDouble(numText: String?): Double { if (numText.isNullOrEmpty() || numText.isBlank()) return 0.toDouble() return numText.toDouble() } @@ -119,7 +149,7 @@ class WorkingFaceDetailActivity : val total = stringToDouble(bean.totalFootage) val accumulative = stringToDouble(bean.accumulativeFootage) - val remaining =stringToDouble( bean.remainingFootage) + val remaining = stringToDouble(bean.remainingFootage) tvLenTotal.text = "总进尺:${total}m" tvLenAccumulate.text = "累计进尺:${accumulative}m" diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/adapter/TunnelingRockNatureAdapter.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/adapter/TunnelingRockNatureAdapter.kt index 2cbdfbe..09ff7d3 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/adapter/TunnelingRockNatureAdapter.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/adapter/TunnelingRockNatureAdapter.kt @@ -1,26 +1,38 @@ package com.zmkg.coaloperation.ui.tunneling.adapter +import android.view.LayoutInflater +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.ui.tunneling.bean.MineWorkingLithology -import com.zmkg.coaloperation.ui.tunneling.bean.TunnelingHomeItemBean +import com.zmkg.coaloperation.databinding.ItemRockNatureBinding +import com.zmkg.coaloperation.db.entiry.tunnel.TunnelRoofLithologyEntity /** * 顶板岩性 */ -class TunnelingRockNatureAdapter : - BaseQuickAdapter(R.layout.item_rock_nature) { +class TunnelingRockNatureAdapter(list: MutableList) : + BaseQuickAdapter(R.layout.item_rock_nature, list) { + inner class VH(var binding: ItemRockNatureBinding):BaseViewHolder(binding.root) - override fun convert(holder: BaseViewHolder, item: MineWorkingLithology) { - holder.setText(R.id.tvRock1Start, "${item.positionStart}") - .setText(R.id.tvRock1End, "${item.positionEnd}") - .setText(R.id.tvRock1Name, item.lithologyType) - + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH { + val binding = ItemRockNatureBinding.inflate( + LayoutInflater.from(context),parent, false + ) + return VH(binding).also { + bindViewClickListener(it, viewType) + } + } + override fun convert(holder: VH, item: TunnelRoofLithologyEntity) { + holder.binding.let { + it.tvRock1Start.text = item.positionStart + it.tvRock1End.text = item.positionEnd + it.tvRock1Name.text = item.lithologyType + } } } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/user/fragment/UserFragment.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/user/fragment/UserFragment.kt index d7f192b..9f2fbc2 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/user/fragment/UserFragment.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/user/fragment/UserFragment.kt @@ -155,6 +155,10 @@ class UserFragment : workingFaceViewModel.insertList(list) {} list.forEach { faceEntity -> faceEntity.records?.let { recordList -> + val lastRecordId = faceEntity.latestRecord?.recordId + val record = recordList.firstOrNull {it.recordId == lastRecordId} + record?.latestRecordState = "1" + //保存工作面记录数据 workingFaceRecordViewModel.insertList(recordList) recordList.forEach { recordEntity -> 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 8fe6897..5e01617 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 @@ -18,7 +18,7 @@ android:id="@+id/toolbar_lay" layout="@layout/lay_title_right_bar" /> - + android:orientation="vertical" + android:background="@drawable/bg_stroke_gray"> - - + diff --git a/coalMiningApp/app/src/main/res/layout/item_rock_nature.xml b/coalMiningApp/app/src/main/res/layout/item_rock_nature.xml index d41358b..1cddb3c 100644 --- a/coalMiningApp/app/src/main/res/layout/item_rock_nature.xml +++ b/coalMiningApp/app/src/main/res/layout/item_rock_nature.xml @@ -1,82 +1,82 @@ + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - \ No newline at end of file + 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 index 9a1b872..cb1e861 100644 --- 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 @@ -15,6 +15,7 @@ android:orientation="vertical">