From 1ffae2737e67288af547151fbc45b1389f3cf4d0 Mon Sep 17 00:00:00 2001
From: lvmeng <848755140@qq.com>
Date: Fri, 19 Sep 2025 17:57:41 +0800
Subject: [PATCH] =?UTF-8?q?=E5=9B=9E=E9=87=87=E9=A1=B5=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../app/src/main/AndroidManifest.xml | 3 +
.../adapter/MiningWorkingFaceAdapter.kt | 111 ++++++
.../adapter/MiningWorkingFaceRecordAdapter.kt | 66 ++++
.../adapter/TunnelWorkingItemAdapter.kt | 10 +-
.../adapter/common/DisasterAdapter.kt | 40 +++
.../mining/MiningRoofLithologyEntity.kt | 66 ++++
.../entity/mining/MiningWorkingFaceEntity.kt | 150 ++++++++
.../mining/MiningWorkingFaceRecordEntity.kt | 100 ++++++
.../mining/activity/AddMiningFaceActivity.kt | 335 ++++++++++++++++++
.../ui/mining/activity/MiningActivity.kt | 168 +++++++++
.../activity/MiningFaceDetailActivity.kt | 94 +++++
.../activity/MiningFaceStatisticsActivity.kt | 225 ++++++++++++
.../activity/WorkingFaceStatisticsActivity.kt | 2 +-
.../java/com/zmkg/coaloperation/utils/Ext.kt | 6 +
.../res/layout/activity_add_mining_face.xml | 63 ++++
.../layout/activity_mining_face_detail.xml | 35 ++
.../activity_mining_face_statistics.xml | 186 ++++++++++
.../activity_working_face_statistics.xml | 6 +
.../list_item_mining_disaster_warning.xml | 88 +++++
.../layout/list_item_tunnel_working_item.xml | 4 +-
20 files changed, 1749 insertions(+), 9 deletions(-)
create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/MiningWorkingFaceAdapter.kt
create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/MiningWorkingFaceRecordAdapter.kt
create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/common/DisasterAdapter.kt
create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entity/mining/MiningRoofLithologyEntity.kt
create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entity/mining/MiningWorkingFaceEntity.kt
create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entity/mining/MiningWorkingFaceRecordEntity.kt
create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/AddMiningFaceActivity.kt
create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/MiningFaceDetailActivity.kt
create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/MiningFaceStatisticsActivity.kt
create mode 100644 coalMiningApp/app/src/main/res/layout/activity_add_mining_face.xml
create mode 100644 coalMiningApp/app/src/main/res/layout/activity_mining_face_detail.xml
create mode 100644 coalMiningApp/app/src/main/res/layout/activity_mining_face_statistics.xml
create mode 100644 coalMiningApp/app/src/main/res/layout/list_item_mining_disaster_warning.xml
diff --git a/coalMiningApp/app/src/main/AndroidManifest.xml b/coalMiningApp/app/src/main/AndroidManifest.xml
index b80becb..2711d9f 100644
--- a/coalMiningApp/app/src/main/AndroidManifest.xml
+++ b/coalMiningApp/app/src/main/AndroidManifest.xml
@@ -55,6 +55,9 @@
+
+
+
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/MiningWorkingFaceAdapter.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/MiningWorkingFaceAdapter.kt
new file mode 100644
index 0000000..cc3d02a
--- /dev/null
+++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/MiningWorkingFaceAdapter.kt
@@ -0,0 +1,111 @@
+package com.zmkg.coaloperation.adapter
+
+import android.annotation.SuppressLint
+import android.os.Bundle
+import android.util.Log
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+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.entity.mining.MiningWorkingFaceEntity
+import com.zmkg.coaloperation.ui.mining.activity.MiningActivity
+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 MiningWorkingFaceAdapter(var list: MutableList) :
+ BaseQuickAdapter(
+ R.layout.list_item_tunnel_working_face, list
+ ) {
+
+ companion object {
+ private const val TAG = "TunnelWorkingFaceAdapter"
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH {
+ val inflater = LayoutInflater.from(context)
+ val binding = ListItemTunnelWorkingFaceBinding.inflate(inflater, parent, false)
+ return VH(binding).also {
+ bindViewClickListener(it, viewType)
+ }
+ }
+
+ @SuppressLint("ClickableViewAccessibility")
+ override fun convert(
+ holder: VH,
+ item: MiningWorkingFaceEntity
+ ) {
+ holder.binding.let { binding ->
+ binding.includeHeader.root.isEnabled = false
+ binding.tvWorkingFaceName.text = item.surfaceName
+ binding.llFaceRecord.let {
+ if (item.isExpandRecord) it.visible() else it.gone()
+ }
+ binding.ivFlagEdit.let {
+ if (item.dataState == "1") it.visible() else it.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.records == null) {
+ 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)
+ 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 = MiningWorkingFaceRecordAdapter(item.records!!).apply {
+ setOnItemClickListener { adapter, view, recordPosition ->
+// if (recordPosition == 0) {
+// //0为头部表示,不需要点击操作
+// return@setOnItemClickListener
+// }
+ Log.d(TAG, "convert: ${item.records!![recordPosition].toJsonString()}")
+// context.let { ctx ->
+// if (ctx is MiningActivity) {
+// ctx.toActivity(WorkingFaceRecordActivity::class.java, Bundle().apply {
+// putString(WorkingFaceRecordActivity.FACE_NAME, item.surfaceName)
+// putParcelable(
+// WorkingFaceRecordActivity.FACE_RECORD,
+// item.records!![recordPosition]
+// )
+// })
+// }
+// }
+ }
+ }
+ }
+ }
+ }
+
+ inner class VH(var binding: ListItemTunnelWorkingFaceBinding) : BaseViewHolder(binding.root)
+
+ init {
+ 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/adapter/MiningWorkingFaceRecordAdapter.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/MiningWorkingFaceRecordAdapter.kt
new file mode 100644
index 0000000..759c27f
--- /dev/null
+++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/MiningWorkingFaceRecordAdapter.kt
@@ -0,0 +1,66 @@
+package com.zmkg.coaloperation.adapter
+
+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 androidx.core.graphics.toColorInt
+import com.zmkg.coaloperation.databinding.ListItemTunnelWorkingFaceRecordBinding
+import com.zmkg.coaloperation.db.entity.mining.MiningWorkingFaceRecordEntity
+import com.zmkg.coaloperation.utils.gone
+import com.zmkg.coaloperation.utils.visible
+
+class MiningWorkingFaceRecordAdapter(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: MiningWorkingFaceRecordEntity
+ ) {
+ 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
+
+
+ it.ivFlagEdit.let {
+ if (item.dataState == "1") it.visible() else it.gone()
+ }
+ }
+
+ }
+
+ 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/TunnelWorkingItemAdapter.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingItemAdapter.kt
index 0fdc119..5fa9c5d 100644
--- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingItemAdapter.kt
+++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingItemAdapter.kt
@@ -15,6 +15,8 @@ import com.zmkg.coaloperation.databinding.ListItemTunnelWorkingItemBinding
import com.zmkg.coaloperation.db.entity.tunnel.TunnelRoofLithologyEntity
import com.zmkg.coaloperation.utils.ScreenUtil
import com.zmkg.coaloperation.utils.formatDecimalString
+import com.zmkg.coaloperation.utils.gone
+import com.zmkg.coaloperation.utils.visible
class TunnelWorkingItemAdapter(data: MutableList) :
BaseQuickAdapter(
@@ -43,12 +45,8 @@ class TunnelWorkingItemAdapter(data: MutableList) :
loadRecordData(holder.binding, item)
}
val position = holder.layoutPosition
- holder.binding.divider.let {
- if (position == data.size - 1) {
- it.visibility = View.GONE
- } else {
- it.visibility = View.VISIBLE
- }
+ holder.binding.divider.run {
+ if (position == data.size - 1) gone() else visible()
}
}
diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/common/DisasterAdapter.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/common/DisasterAdapter.kt
new file mode 100644
index 0000000..501a9f8
--- /dev/null
+++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/common/DisasterAdapter.kt
@@ -0,0 +1,40 @@
+package com.zmkg.coaloperation.adapter.common
+
+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.bean.TunnelWorkingItem
+import com.zmkg.coaloperation.databinding.ListItemMiningDisasterWarningBinding
+import com.zmkg.coaloperation.utils.gone
+import com.zmkg.coaloperation.utils.visible
+
+class DisasterAdapter(list: MutableList) :
+ BaseQuickAdapter(
+ R.layout.list_item_mining_disaster_warning,
+ list
+ ) {
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH {
+ val binding = ListItemMiningDisasterWarningBinding.inflate(
+ LayoutInflater.from(context), parent, false
+ )
+ return VH(binding)
+ }
+ override fun convert(
+ holder: VH,
+ item: TunnelWorkingItem
+ ) {
+ holder.binding.let {
+ it.tvDisasterName.text = item.name
+ it.tvDisasterValue.text = item.value
+ it.divider.run {
+ if (holder.layoutPosition == data.size - 1) gone() else visible()
+ }
+ }
+ }
+
+ inner class VH(var binding: ListItemMiningDisasterWarningBinding) : BaseViewHolder(binding.root)
+
+}
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entity/mining/MiningRoofLithologyEntity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entity/mining/MiningRoofLithologyEntity.kt
new file mode 100644
index 0000000..15f310b
--- /dev/null
+++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entity/mining/MiningRoofLithologyEntity.kt
@@ -0,0 +1,66 @@
+package com.zmkg.coaloperation.db.entity.mining
+
+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 = "mining_roof_lithology")
+class MiningRoofLithologyEntity (
+
+ /**
+ * 岩性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? = "",
+
+ /**
+ * 更新时间
+ */
+ var updateTime: String? = DateTimeUtil.formatDateTime(LocalDateTime.now()),
+
+ /**
+ * 数据状态:0-默认值,原始数据,1-已修改数据
+ */
+ var dataState: String = "0"
+): Parcelable {
+ @Ignore
+ constructor():this(lithologyId = 0)
+}
diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entity/mining/MiningWorkingFaceEntity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entity/mining/MiningWorkingFaceEntity.kt
new file mode 100644
index 0000000..9ec56ba
--- /dev/null
+++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entity/mining/MiningWorkingFaceEntity.kt
@@ -0,0 +1,150 @@
+package com.zmkg.coaloperation.db.entity.mining
+
+//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 = "mining_working_face")
+class MiningWorkingFaceEntity(
+ // @PrimaryKey(name = "faceId") val id: Int = 0
+ /**
+ * 工作面id,本地新增数据使用时间戳保证唯一性
+ */
+ @PrimaryKey
+ var surfaceId: Long = 0,
+
+ var userId: String = "",
+
+ /**
+ * 工作面名称
+ */
+ var surfaceName: String? = "",
+
+ /**
+ * 总进尺
+ */
+ var totalFootage: String? = "",
+
+ /**
+ * 累计进尺
+ */
+ var accumulativeFootage: String? = "",
+
+ /**
+ * 剩余进尺
+ */
+ var remainingFootage: String? = "",
+
+ /**
+ * 所属煤层编号
+ */
+ var seamId: Long? = 0,
+
+ /**
+ * 所属煤层名称
+ */
+ var seamName: String? = "",
+
+ /**
+ * 所属采区域编号
+ */
+ var areaId: Long? = 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? = "",
+
+ /**
+ * 更新时间
+ */
+ var updateTime: String? = DateTimeUtil.formatDateTime(LocalDateTime.now()),
+
+ /**
+ * 数据状态:0-默认值,原始数据,1-已修改数据
+ */
+ var dataState: String = "0",
+
+ @Ignore
+ var records: MutableList? = null,
+
+ @Ignore
+ var latestRecord: MiningWorkingFaceRecordEntity? = null,
+
+ @Ignore
+ var isExpandRecord: Boolean = false
+ ): Parcelable
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entity/mining/MiningWorkingFaceRecordEntity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entity/mining/MiningWorkingFaceRecordEntity.kt
new file mode 100644
index 0000000..28c02da
--- /dev/null
+++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/entity/mining/MiningWorkingFaceRecordEntity.kt
@@ -0,0 +1,100 @@
+package com.zmkg.coaloperation.db.entity.mining
+
+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 = "mining_working_face_record")
+data class MiningWorkingFaceRecordEntity (
+
+ /**
+ * 记录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 waterYield: String? = null,
+
+ /**
+ * 创建时间
+ */
+ var createTime: String? = "",
+
+ /**
+ * 更新时间
+ */
+ var updateTime: String? = DateTimeUtil.formatDateTime(LocalDateTime.now()),
+
+ /**
+ * 数据状态:0-默认值,原始数据,1-已修改数据
+ */
+ var dataState: String = "0",
+
+ /**
+ * 工作面中昨日记录状态:0-默认值,非昨日记录,1-昨日记录
+ */
+ var latestRecordState: String = "0",
+
+ @Ignore
+ var mineWorkingLithologyList: MutableList? = null,
+
+ @Ignore
+ var operationType: String = "1"
+): Parcelable
diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/AddMiningFaceActivity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/AddMiningFaceActivity.kt
new file mode 100644
index 0000000..7e17016
--- /dev/null
+++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/AddMiningFaceActivity.kt
@@ -0,0 +1,335 @@
+package com.zmkg.coaloperation.ui.mining.activity
+
+import android.os.Bundle
+import android.text.TextUtils
+import android.view.View
+import android.widget.TextView
+import com.zmkg.coaloperation.R
+import com.zmkg.coaloperation.base.BaseVMBActivity
+import com.zmkg.coaloperation.base.viewmodel.TestViewModel
+import com.zmkg.coaloperation.bean.WorkOption
+import com.zmkg.coaloperation.databinding.ActivityAddMiningFaceBinding
+import com.zmkg.coaloperation.db.entity.mining.MiningWorkingFaceEntity
+import com.zmkg.coaloperation.ui.tunneling.activity.WorkingFaceDetailActivity
+import com.zmkg.coaloperation.utils.PickerUtil
+import org.greenrobot.eventbus.Subscribe
+import org.greenrobot.eventbus.ThreadMode
+
+/**
+ * 工作面
+ */
+class AddMiningFaceActivity :
+ BaseVMBActivity(R.layout.activity_add_mining_face) {
+
+ companion object {
+ private const val TAG = "AddMiningFaceActivity"
+ const val WORK_FACE_TYPE = "WorkFaceType"
+ const val FACE_WORK_DETAIL_DATA = "faceWorkDetailData"
+ }
+
+ enum class WorkFaceType {
+ ADD,//新增
+
+ EDIT,//修改
+
+ SEE//查看
+ }
+
+ private var currentFaceType = WorkFaceType.ADD
+
+ // private val workingFaceViewModel: TunnelWorkingFaceViewModel by lazy {
+// ViewModelProvider(this)[TunnelWorkingFaceViewModel::class.java]
+// }
+ private var faceDetail: MiningWorkingFaceEntity? = null
+
+ override fun initView(savedInstanceState: Bundle?) {
+ val stringExtra = intent.getStringExtra(WORK_FACE_TYPE)
+ if (TextUtils.isEmpty(stringExtra)) {
+ 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(WorkingFaceDetailActivity.Companion.FACE_WORK_DETAIL_DATA) as MiningWorkingFaceEntity?
+ if (faceDetail == null) {
+ showToast("未查询到工作面数据")
+ return
+ }
+ faceDetail?.let {
+ loadDetail(it)
+ }
+ }
+
+ WorkFaceType.SEE.name -> {
+ currentFaceType = WorkFaceType.SEE
+ }
+ }
+
+// mBinding.etPlanStartDate.let {
+// it.setOnClickListener { _ ->
+// showDatePicker(it)
+// }
+// }
+// mBinding.etPlannEndDate.let {
+// it.setOnClickListener { _ ->
+// showDatePicker(it)
+// }
+// }
+// mBinding.tvSeamName.setOnClickListener { v ->
+// PickerUtil.showOptionPicker(this, "请选择所属煤层", DictUtils.seamList) { option ->
+// mBinding.tvSeamName.text = option.name
+// mBinding.tvSeamName.tag = option.id
+// seamAreaList = DictUtils.areaMap[option.id] ?: mutableListOf()
+// }
+// }
+// mBinding.tvAreaName.setOnClickListener { v ->
+// if (seamAreaList.isEmpty()) {
+// showToast("请先选择所属煤层")
+// return@setOnClickListener
+// }
+// PickerUtil.showOptionPicker(this, "请选择所属采区域", seamAreaList) { option ->
+// mBinding.tvAreaName.text = option.name
+// mBinding.tvAreaName.tag = option.id
+// }
+// }
+// mBinding.tvTunnelNature.setOnClickListener { v ->
+// PickerUtil.showOptionPicker(
+// this,
+// "请选择巷道性质",
+// DictUtils.seamRoadWayList
+// ) { option ->
+// mBinding.tvTunnelNature.text = option.name
+// mBinding.tvTunnelNature.tag = option.id
+// }
+// }
+ }
+
+ private var seamAreaList: MutableList = mutableListOf()
+
+ private fun showDatePicker(tv: TextView) {
+ tv.setOnClickListener {
+ PickerUtil.showTimePicker(this, tv.text.toString().trim()) { date ->
+ 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() {
+
+ }
+
+ override fun bindEvent() {
+ mBinding.apply {
+// addClickViews(imgExpand, confirm)
+ }
+ }
+
+ override fun createObserve() {
+ super.createObserve()
+ }
+
+ override fun processClick(v: View?) {
+ when (v?.id) {
+// R.id.imgExpand -> {
+// if (mBinding.expandLayout.isGone) {
+// mBinding.expandLayout.visible()
+// mBinding.imgExpand.setImageResource(R.drawable.ic_arrow_up_white2)
+// } else {
+// mBinding.expandLayout.gone()
+// mBinding.imgExpand.setImageResource(R.drawable.ic_arrow_down_white2)
+// }
+// }
+
+ R.id.confirm -> {
+ if (currentFaceType == WorkFaceType.ADD) {
+ addNewFace()
+ return
+ }
+ if (currentFaceType == WorkFaceType.EDIT) {
+ editFace()
+ return
+ }
+ }
+
+ }
+ }
+
+ private fun loadDetail(it: MiningWorkingFaceEntity) {
+// mBinding.etWorkfaceName.setText(it.surfaceName)
+// mBinding.etTotalFootage.setText("${it.totalFootage}")
+// 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.etPlanStartDate.text = it.planStartDate
+// mBinding.etPlannEndDate.text = it.planEndDate
+//
+// mBinding.etGeologicalType.setText(it.geologicalType)
+// mBinding.etHydrogeologicalType.setText(it.hydrogeologicalType)
+// mBinding.etSeamIgnition.setText(it.seamIgnition)
+// mBinding.etSeamGas.setText(it.seamGas)
+// mBinding.etSeamBumpPressure.setText(it.seamBumpPressure)
+// mBinding.etSurfaceSupportForm.setText(it.surfaceSupportForm)
+ }
+
+ private fun addNewFace() {
+// 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
+// }
+//// 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().toLong()
+// }
+// it.areaName = mBinding.tvAreaName.text.toString().trim()
+// if (it.areaName!!.isNotBlank()) {
+// it.areaId = mBinding.tvAreaName.tag.toString().toLong()
+// }
+//
+// 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()
+//
+// it.createTime = DateTimeUtil.formatDateTime(LocalDateTime.now())
+// it.dataState = "1"
+// }
+// workingFaceViewModel.insert(workingFaceEntity) {
+// showToast("工作面新增完成")
+// EventBus.getDefault().post(workingFaceEntity)
+// 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()
+//
+// it.createTime = DateTimeUtil.formatDateTime(LocalDateTime.now())
+// it.dataState = "1"
+// }
+// workingFaceViewModel.update(workingFaceEntity) {
+// showToast("工作面修改完成")
+// EventBus.getDefault().post(workingFaceEntity)
+// finish()
+// }
+ }
+
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ fun onWorkingFaceEvent(event: MiningWorkingFaceEntity) {
+
+ }
+
+ private fun string2num(text: String?): Long {
+ return if (text.isNullOrBlank()) 0 else text.toLong()
+ }
+
+}
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/MiningActivity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/MiningActivity.kt
index 2a0570a..4014e0e 100644
--- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/MiningActivity.kt
+++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/MiningActivity.kt
@@ -1,20 +1,113 @@
package com.zmkg.coaloperation.ui.mining.activity
+import android.annotation.SuppressLint
import android.os.Bundle
import android.view.View
+import androidx.recyclerview.widget.LinearLayoutManager
import com.zmkg.coaloperation.R
+import com.zmkg.coaloperation.adapter.MiningWorkingFaceAdapter
+import com.zmkg.coaloperation.adapter.MiningWorkingFaceRecordAdapter
+import com.zmkg.coaloperation.adapter.TunnelWorkingFaceAdapter
+import com.zmkg.coaloperation.adapter.TunnelWorkingFaceRecordAdapter
import com.zmkg.coaloperation.base.BaseVMBActivity
import com.zmkg.coaloperation.base.viewmodel.TestViewModel
import com.zmkg.coaloperation.databinding.ActivityMiningBinding
+import com.zmkg.coaloperation.db.entity.mining.MiningWorkingFaceEntity
+import com.zmkg.coaloperation.db.entity.mining.MiningWorkingFaceRecordEntity
+import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceEntity
+import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceRecordEntity
+import com.zmkg.coaloperation.ui.tunneling.activity.AddWorkingFaceRecordActivity
+import com.zmkg.coaloperation.ui.tunneling.activity.WorkingFaceStatisticsActivity
+import org.greenrobot.eventbus.Subscribe
+import org.greenrobot.eventbus.ThreadMode
/**
* 回采首页列表
*/
class MiningActivity :
BaseVMBActivity(R.layout.activity_mining) {
+
+ private val workingFaceList = mutableListOf()
+
+ private val workingFaceAdapter: MiningWorkingFaceAdapter by lazy {
+ MiningWorkingFaceAdapter(workingFaceList).apply {
+ setOnItemChildClickListener { _, view, position ->
+ if (view.id == R.id.llWorkingFace) {
+ toActivity(MiningFaceStatisticsActivity::class.java, Bundle().apply {
+ putParcelable(WorkingFaceStatisticsActivity.FACE_DETAIL, workingFaceList[position])
+ })
+ return@setOnItemChildClickListener
+ }
+ 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(AddWorkingFaceRecordActivity::class.java, Bundle().apply {
+// putLong(
+// AddWorkingFaceRecordActivity.FACE_ID,
+// workingFaceList[position].surfaceId
+// )
+// putString(
+// AddWorkingFaceRecordActivity.FACE_NAME,
+// workingFaceList[position].surfaceName
+// )
+// putInt(AddWorkingFaceRecordActivity.SHOW_TYPE, 0)
+// })
+ }
+ }
+ }
+ }
+
override fun initView(savedInstanceState: Bundle?) {
mBinding.toolbarLay.title = "回采上报"
mBinding.toolbarLay.rightText = "新增工作面"
+ mBinding.rvMiningList.let {
+ it.layoutManager = LinearLayoutManager(this)
+ it.adapter = workingFaceAdapter
+ }
+ val surfaceId01 = System.currentTimeMillis()
+ val surfaceId02 = System.currentTimeMillis()
+ val surfaceId03 = System.currentTimeMillis()
+ val recordList = mutableListOf()
+ recordList.add(MiningWorkingFaceRecordEntity(
+ recordId = System.currentTimeMillis(),
+ surfaceId = surfaceId01,
+ recordPerson = "张三",
+ workingDate = "2025-09-19 10:50:15"
+ ))
+ recordList.add(MiningWorkingFaceRecordEntity(
+ recordId = System.currentTimeMillis(),
+ surfaceId = surfaceId01,
+ recordPerson = "李四",
+ workingDate = "2025-09-19 15:10:39"
+ ))
+ workingFaceList.add(MiningWorkingFaceEntity(
+ surfaceId = surfaceId01,
+ surfaceName = "250919回采工作面",
+ totalFootage = "256",
+ createTime = "2025-09-19 10:27:43",
+ records = recordList
+ ))
+ workingFaceList.add(MiningWorkingFaceEntity(
+ surfaceId = surfaceId02,
+ surfaceName = "250901回采工作面",
+ totalFootage = "256",
+ createTime = "2025-09-01 08:20:43"
+ ))
+ workingFaceList.add(MiningWorkingFaceEntity(
+ surfaceId = surfaceId03,
+ surfaceName = "250810回采工作面",
+ totalFootage = "256",
+ createTime = "2025-09-19 09:09:03"
+ ))
+ workingFaceAdapter.notifyDataSetChanged()
}
override fun initData() {
@@ -26,4 +119,79 @@ class MiningActivity :
override fun processClick(v: View?) {
}
+
+ @SuppressLint("NotifyDataSetChanged")
+ private fun getFaceRecord(position: Int) {
+ workingFaceList[position].records?.let {
+ if (it.isNotEmpty()) {
+ val recordAdapter = getRecordAdapter(position)
+ recordAdapter.apply {
+ notifyDataSetChanged()
+ }
+ workingFaceAdapter.notifyItemChanged(position)
+ }
+ }
+// val surfaceId = workingFaceList[position].surfaceId
+// workingFaceRecordViewModel.getEntityList(surfaceId) { recordEntities ->
+// if (recordEntities.isNullOrEmpty()) {
+// workingFaceAdapter.notifyItemChanged(position)
+// return@getEntityList
+// }
+// val recordAdapter = getRecordAdapter(position)
+// recordAdapter.apply {
+// list.clear()
+//// list.add(FACE_RECORD_HEADER)
+// list.addAll(recordEntities)
+// notifyDataSetChanged()
+// }
+// workingFaceAdapter.notifyItemChanged(position)
+// }
+ }
+
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ fun onWorkingFaceEvent(event: MiningWorkingFaceEntity) {
+ val index = workingFaceList.indexOfFirst { it.surfaceId == event.surfaceId }
+ if (index == -1) {
+ //新增工作面
+ val insertIndex = 0
+ workingFaceList.add(0,event)
+ workingFaceAdapter.notifyItemInserted(insertIndex)
+ workingFaceAdapter.notifyItemRangeChanged(insertIndex, insertIndex+1)
+ return
+ }
+ //修改工作面
+// workingFaceViewModel.getEntityById(event.surfaceId) { entity ->
+// workingFaceList[index] = entity
+// workingFaceAdapter.notifyItemChanged(index)
+// }
+ }
+
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ fun onFaceRecordEvent(event: MiningWorkingFaceRecordEntity) {
+ 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(0,event)
+ } else {
+ records[index] = event
+ }
+ }
+ val recordAdapter = getRecordAdapter(position)
+ recordAdapter.notifyDataSetChanged()
+
+ workingFaceAdapter.notifyItemChanged(position)
+ }
+
+ @SuppressLint("SuspiciousIndentation")
+ private fun getRecordAdapter(position:Int):MiningWorkingFaceRecordAdapter {
+ val viewHolder =
+ mBinding.rvMiningList.findViewHolderForLayoutPosition(position) as MiningWorkingFaceAdapter.VH
+ return viewHolder.binding.rvFaceRecord.adapter as MiningWorkingFaceRecordAdapter
+ }
+
}
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/MiningFaceDetailActivity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/MiningFaceDetailActivity.kt
new file mode 100644
index 0000000..9b2767b
--- /dev/null
+++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/MiningFaceDetailActivity.kt
@@ -0,0 +1,94 @@
+package com.zmkg.coaloperation.ui.mining.activity
+
+import android.annotation.SuppressLint
+import android.os.Bundle
+import android.view.View
+import com.zmkg.coaloperation.R
+import com.zmkg.coaloperation.base.BaseVMBActivity
+import com.zmkg.coaloperation.base.viewmodel.TestViewModel
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.zmkg.coaloperation.adapter.TunnelWorkingItemAdapter
+import com.zmkg.coaloperation.bean.TunnelWorkingItem
+import com.zmkg.coaloperation.databinding.ActivityMiningFaceDetailBinding
+import com.zmkg.coaloperation.db.entity.mining.MiningWorkingFaceEntity
+import org.greenrobot.eventbus.Subscribe
+import org.greenrobot.eventbus.ThreadMode
+
+/**
+ * 工作面详情
+ */
+class MiningFaceDetailActivity :
+ BaseVMBActivity(R.layout.activity_mining_face_detail) {
+ companion object {
+ const val FACE_WORK_DETAIL_DATA = "MiningFaceDetailActivity"
+ }
+
+ private val list: MutableList = mutableListOf()
+
+ // private var detail:FaceWorkDetailBean?=null
+ private var detail: MiningWorkingFaceEntity? = null
+ private val adapter by lazy {
+ TunnelWorkingItemAdapter(list)
+ }
+
+ override fun initView(savedInstanceState: Bundle?) {
+ mBinding.toolbarLay.vLine.visibility = View.GONE
+ mBinding.toolbarLay.rightText = "修改"
+
+ mBinding.rvFaceList.let {
+ it.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
+ it.adapter = adapter
+ }
+ }
+
+ override fun initData() {
+ detail = intent.getParcelableExtra(FACE_WORK_DETAIL_DATA)
+ detail?.let {
+ loadFaceDetail(it)
+ }
+ }
+
+ override fun bindEvent() {
+ mBinding.toolbarLay.titleTvRight.setOnClickListener {
+ toActivity(AddMiningFaceActivity::class.java, Bundle().apply {
+ putString(AddMiningFaceActivity.Companion.WORK_FACE_TYPE, AddMiningFaceActivity.WorkFaceType.EDIT.name)
+// putSerializable(WorkFaceActivity.FACE_WORK_DETAIL_DATA, detail)
+ putParcelable(AddMiningFaceActivity.Companion.FACE_WORK_DETAIL_DATA, detail)
+ })
+ }
+ }
+
+ override fun processClick(v: View?) {
+
+ }
+
+ @SuppressLint("NotifyDataSetChanged")
+ private fun loadFaceDetail(it: MiningWorkingFaceEntity) {
+ mBinding.toolbarLay.title = it.surfaceName
+ list.clear()
+ list.add(TunnelWorkingItem(name = "工作面名称", value = it.surfaceName))
+ list.add(TunnelWorkingItem(name = "水平", value = "水平"))
+ list.add(TunnelWorkingItem(name = "煤层", value = "煤层"))
+ list.add(TunnelWorkingItem(name = "采区", value = "采区"))
+ list.add(TunnelWorkingItem(name = "储量", value = "储量"))
+ list.add(TunnelWorkingItem(name = "胶带巷安全出口宽度", value = "宽度"))
+ list.add(TunnelWorkingItem(name = "回风巷安全出口宽度", value = "宽度"))
+ list.add(TunnelWorkingItem(name = "走向长度", value = "长度"))
+ list.add(TunnelWorkingItem(name = "倾向长度", value = "长度"))
+ list.add(TunnelWorkingItem(name = "胶带巷长度", value = "长度"))
+ list.add(TunnelWorkingItem(name = "回风巷长度", value = "长度"))
+ list.add(TunnelWorkingItem(name = "切眼长度", value = "长度"))
+ list.add(TunnelWorkingItem(name = "平均煤厚", value = "煤厚"))
+ list.add(TunnelWorkingItem(name = "平均煤厚", value = "容积"))
+
+ adapter.notifyDataSetChanged()
+ }
+
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ fun onWorkingFaceEvent(event: MiningWorkingFaceEntity) {
+ detail = event
+ detail?.let {
+ loadFaceDetail(it)
+ }
+ }
+}
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/MiningFaceStatisticsActivity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/MiningFaceStatisticsActivity.kt
new file mode 100644
index 0000000..ddbd309
--- /dev/null
+++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/MiningFaceStatisticsActivity.kt
@@ -0,0 +1,225 @@
+package com.zmkg.coaloperation.ui.mining.activity
+
+import android.os.Bundle
+import android.view.View
+import androidx.core.graphics.toColorInt
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.zmkg.coaloperation.R
+import com.zmkg.coaloperation.adapter.TunnelWorkingItemAdapter
+import com.zmkg.coaloperation.adapter.common.DisasterAdapter
+import com.zmkg.coaloperation.base.BaseVMBActivity
+import com.zmkg.coaloperation.base.viewmodel.TestViewModel
+import com.zmkg.coaloperation.bean.TunnelWorkingItem
+import com.zmkg.coaloperation.databinding.ActivityMiningFaceStatisticsBinding
+import com.zmkg.coaloperation.db.entity.mining.MiningWorkingFaceEntity
+import com.zmkg.coaloperation.utils.ScreenUtil
+import com.zmkg.coaloperation.utils.formatDecimalString
+import com.zmkg.coaloperation.utils.gone
+import com.zmkg.coaloperation.utils.roundedOneDecimalPlace
+import org.greenrobot.eventbus.Subscribe
+import org.greenrobot.eventbus.ThreadMode
+import kotlin.math.roundToInt
+
+/**
+ * 工作面详情
+ */
+class MiningFaceStatisticsActivity :
+ BaseVMBActivity(R.layout.activity_mining_face_statistics) {
+
+ companion object {
+ const val TAG = "MiningFaceStatisticsActivity"
+ const val FACE_DETAIL = "faceDetail"
+ }
+
+// 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: MiningWorkingFaceEntity? = null
+
+ override fun initView(savedInstanceState: Bundle?) {
+ mBinding.toolbarLay.rightText = "查看详情"
+ mBinding.toolbarLay.vLine.visibility = View.GONE
+// mBinding.rvRockNature.adapter = tunnelingRockNatureAdapter
+
+ mBinding.arcViewGreen.let {
+ it.arcColor = "#30E0A1".toColorInt()
+ it.startAngle = 0f
+ it.sweepAngle = 360f
+ it.strokeWidth = 12f
+ it.radius = ScreenUtil.dp2px(122f - 12f) / 2f
+ }
+
+ mBinding.arcViewRed.let {
+ it.arcColor = "#FA2256".toColorInt()
+ it.startAngle = -90f
+ it.strokeWidth = 10f
+ it.sweepAngle = 0f
+ it.radius = ScreenUtil.dp2px(100f - 10f) / 2f
+ }
+
+ mBinding.arcViewBlue.let {
+ it.arcColor = "#246CF9".toColorInt()
+ it.startAngle = -90f
+ it.strokeWidth = 10f
+ it.sweepAngle = 0f
+ it.radius = ScreenUtil.dp2px(80f - 10f) / 2f
+ }
+
+ }
+
+ override fun initData() {
+// val surfaceId = intent.getStringExtra("surfaceId")
+// if (TextUtils.isEmpty(surfaceId)) {
+// finish()
+// } else {
+// mViewModel.getTunnelingSurfaceDetail(surfaceId)
+// }
+ faceDetail = intent.getParcelableExtra(FACE_DETAIL)
+
+ faceDetail?.let { detail ->
+ loadFaceDetail()
+// workingFaceRecordViewModel.getLastEntity(detail.surfaceId) { record ->
+// record?.let {
+// mBinding.tvYesterdayLen.text = "${it.workingFootage?.formatDecimalString()}m"
+// mBinding.tvWorkingFaceAngle.text = "${it.seamDip?.formatDecimalString()}°"
+//// mBinding.tvMonthAccumulateLen.text = "${it.monthFootage}m"
+// mBinding.tvWorkingFaceWater.text = "${it.waterYield?.formatDecimalString()}"
+//
+// roofLithologyViewModel.getEntityList(it.recordId) { list ->
+// list?.let {
+// lithologyList.addAll(it)
+// tunnelingRockNatureAdapter.notifyDataSetChanged()
+// }
+// }
+// }
+// }
+ }
+ }
+
+ override fun bindEvent() {
+ mBinding.toolbarLay.titleTvRight.setOnClickListener {
+ toActivity(MiningFaceDetailActivity::class.java, Bundle().apply {
+ putParcelable(MiningFaceDetailActivity.FACE_WORK_DETAIL_DATA, faceDetail)
+ })
+ }
+ }
+
+ override fun processClick(v: View?) {
+ }
+
+ override fun createObserve() {
+ super.createObserve()
+ }
+
+ 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
+ bean.totalFootage = "6000"
+ bean.accumulativeFootage = "1400.3"
+
+ val total = stringToDouble(bean.totalFootage)
+ val accumulative = stringToDouble(bean.accumulativeFootage)
+ val remaining = total - accumulative
+// val remaining = stringToDouble(bean.remainingFootage)
+ bean.remainingFootage = "${remaining.roundedOneDecimalPlace()}"
+
+ tvLenTotal.text = "总进尺:${bean.totalFootage?.formatDecimalString()}/吨"
+ tvLenAccumulate.text = "累计进尺:${bean.accumulativeFootage?.formatDecimalString()}/吨"
+ tvLenRemain.text = "剩余进尺:${bean.remainingFootage?.formatDecimalString()}/吨"
+
+ //累计进尺占比
+ var radio = 0
+
+ //累计进尺圆圈占比
+ var arcViewRadio: Float
+
+ if (accumulative >= total) {
+ radio = 100
+ arcViewRadio = 360F
+ } else if (accumulative <= 0) {
+ radio = 0
+ arcViewRadio = 0F
+ } else {
+ arcViewRadio = (accumulative * 100F / total).toFloat()
+ radio = arcViewRadio.roundToInt()
+ }
+
+ arcViewRed.let {
+ it.sweepAngle = arcViewRadio
+ }
+
+ arcViewBlue.let {
+ 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"
+
+// val list = bean?.latestRecord?.mineWorkingLithologyList
+// if (list.isNullOrEmpty()) {
+// tvYesterdayRockType.visibility = View.GONE
+// } else {
+// tvYesterdayRockType.visibility = View.VISIBLE
+// tunnelingRockNatureAdapter.setNewInstance(list)
+// }
+
+ }
+ val workingItemList = mutableListOf()
+ workingItemList.add(TunnelWorkingItem(name = "昨日进尺", value = "123"))
+ workingItemList.add(TunnelWorkingItem(name = "出煤量", value = "12"))
+ workingItemList.add(TunnelWorkingItem(name = "胶运巷回采位置", value = "3"))
+ workingItemList.add(TunnelWorkingItem(name = "胶运巷安全出口宽度", value = "23"))
+ workingItemList.add(TunnelWorkingItem(name = "回风巷回采位置", value = "5"))
+ workingItemList.add(TunnelWorkingItem(name = "回风巷安全出口宽度", value = "56"))
+ mBinding.rvBaseList.let {
+ it.layoutManager = LinearLayoutManager(this)
+ it.adapter = TunnelWorkingItemAdapter(workingItemList)
+ }
+
+ val disasterList = mutableListOf()
+ disasterList.add(TunnelWorkingItem(name = "AAA", value = "80"))
+ disasterList.add(TunnelWorkingItem(name = "BBB", value = "50"))
+ disasterList.add(TunnelWorkingItem(name = "CCC", value = "135"))
+ mBinding.rvDisasterList.let {
+ it.layoutManager = LinearLayoutManager(this)
+ it.adapter = DisasterAdapter(disasterList)
+ }
+
+ mBinding.included.let {
+ it.tvItemName.text="回采工作面涌水量"
+ it.tvItemValue.text="3.6m³/h"
+ it.divider.gone()
+ it.root.setBackgroundResource(R.drawable.bg_stroke_gray)
+ }
+
+ }
+
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ fun onWorkingFaceEvent(event: MiningWorkingFaceEntity) {
+ faceDetail = event
+ loadFaceDetail()
+ }
+
+}
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/WorkingFaceStatisticsActivity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/WorkingFaceStatisticsActivity.kt
index 6021ec1..51d429e 100644
--- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/WorkingFaceStatisticsActivity.kt
+++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/WorkingFaceStatisticsActivity.kt
@@ -71,7 +71,7 @@ class WorkingFaceStatisticsActivity :
it.startAngle = -90f
it.strokeWidth = 10f
it.sweepAngle = 0f
- it.radius = ScreenUtil.dp2px(100f - 10f) / 2f
+ it.radius = ScreenUtil.dp2px(80f - 10f) / 2f
}
}
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 ad696ae..0f0b5b8 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
@@ -8,6 +8,8 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
+import java.math.BigDecimal
+import java.math.RoundingMode
fun View.clickWithDebounce(delay: Long = 300, action: () -> Unit) {
var job: Job? = null
@@ -82,4 +84,8 @@ fun String.formatDecimalString(): String {
}
}
+fun Double.roundedOneDecimalPlace(): Double {
+ return BigDecimal(this).setScale(1, RoundingMode.HALF_UP).toDouble()
+}
+
diff --git a/coalMiningApp/app/src/main/res/layout/activity_add_mining_face.xml b/coalMiningApp/app/src/main/res/layout/activity_add_mining_face.xml
new file mode 100644
index 0000000..db9c19e
--- /dev/null
+++ b/coalMiningApp/app/src/main/res/layout/activity_add_mining_face.xml
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/res/layout/activity_mining_face_detail.xml b/coalMiningApp/app/src/main/res/layout/activity_mining_face_detail.xml
new file mode 100644
index 0000000..8460781
--- /dev/null
+++ b/coalMiningApp/app/src/main/res/layout/activity_mining_face_detail.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/res/layout/activity_mining_face_statistics.xml b/coalMiningApp/app/src/main/res/layout/activity_mining_face_statistics.xml
new file mode 100644
index 0000000..8c77cd7
--- /dev/null
+++ b/coalMiningApp/app/src/main/res/layout/activity_mining_face_statistics.xml
@@ -0,0 +1,186 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/res/layout/activity_working_face_statistics.xml b/coalMiningApp/app/src/main/res/layout/activity_working_face_statistics.xml
index dc49c13..888fddf 100644
--- a/coalMiningApp/app/src/main/res/layout/activity_working_face_statistics.xml
+++ b/coalMiningApp/app/src/main/res/layout/activity_working_face_statistics.xml
@@ -469,6 +469,7 @@
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
+ android:maxWidth="80dp"
android:minWidth="60dp"
android:paddingStart="5dp"
android:paddingEnd="5dp"
@@ -491,6 +492,8 @@
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
+ android:maxWidth="80dp"
+ android:minWidth="60dp"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:textColor="@color/white"
@@ -535,6 +538,7 @@
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
+ android:maxWidth="80dp"
android:minWidth="60dp"
android:paddingStart="5dp"
android:paddingEnd="5dp"
@@ -557,6 +561,8 @@
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
+ android:maxWidth="80dp"
+ android:minWidth="60dp"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:textColor="@color/white"
diff --git a/coalMiningApp/app/src/main/res/layout/list_item_mining_disaster_warning.xml b/coalMiningApp/app/src/main/res/layout/list_item_mining_disaster_warning.xml
new file mode 100644
index 0000000..eabd1df
--- /dev/null
+++ b/coalMiningApp/app/src/main/res/layout/list_item_mining_disaster_warning.xml
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/res/layout/list_item_tunnel_working_item.xml b/coalMiningApp/app/src/main/res/layout/list_item_tunnel_working_item.xml
index f1fbb7e..fccefe4 100644
--- a/coalMiningApp/app/src/main/res/layout/list_item_tunnel_working_item.xml
+++ b/coalMiningApp/app/src/main/res/layout/list_item_tunnel_working_item.xml
@@ -18,7 +18,7 @@
android:id="@+id/tvItemName"
android:layout_width="wrap_content"
android:layout_height="50dp"
- android:layout_marginStart="15dp"
+ android:layout_marginStart="20dp"
android:gravity="center_vertical"
android:textColor="@color/white"
android:textSize="16sp"
@@ -54,7 +54,7 @@
android:orientation="vertical"
android:layout_marginStart="8dp"
android:layout_marginBottom="15dp"
- android:layout_marginEnd="15dp"
+ android:layout_marginEnd="20dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/tvItemName"
app:layout_constraintTop_toTopOf="parent"