回采新增工作面

This commit is contained in:
2025-09-20 22:09:17 +08:00
parent 1ffae2737e
commit e712fa230a
8 changed files with 265 additions and 199 deletions
@@ -57,7 +57,8 @@
<activity android:name=".ui.mining.activity.MiningActivity" />
<activity android:name=".ui.mining.activity.MiningFaceStatisticsActivity" />
<activity android:name=".ui.mining.activity.MiningFaceDetailActivity" />
<activity android:name=".ui.mining.activity.AddMiningFaceActivity" />
<activity android:name=".ui.mining.activity.AddMiningFaceActivity"
android:windowSoftInputMode="adjustPan" />
</application>
</manifest>
@@ -0,0 +1,59 @@
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.bean.AddMiningFaceItem
import com.zmkg.coaloperation.databinding.ListItemAddMiningFaceBinding
import com.zmkg.coaloperation.utils.gone
import com.zmkg.coaloperation.utils.visible
class AddMiningFaceAdapter(list: MutableList<AddMiningFaceItem>):
BaseQuickAdapter<AddMiningFaceItem, AddMiningFaceAdapter.VH>(R.layout.list_item_add_mining_face, list){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH {
val binding = ListItemAddMiningFaceBinding.inflate(
LayoutInflater.from(context), parent, false
)
return VH(binding).also {
bindViewClickListener(it, viewType)
}
}
override fun convert(
holder: VH,
item: AddMiningFaceItem
) {
holder.binding.let {
val index = holder.layoutPosition
it.imgExpand.run {
if (item.isShowArrowDown) visible() else gone()
}
it.tvFuncName.text = item.funcName
if (item.funcType == 0) {
it.etInputValue.run {
visible()
addTextChangedListener(onTextChanged = { text, start, before, count ->
item.funcValue = text.toString().trim()
})
setText(item.funcValue)
}
it.tvSelectValue.gone()
} else {
it.etInputValue.gone()
it.tvSelectValue.run {
visible()
text = item.funcValue
tag = item.funcId
}
}
it.divider.run {
if (index == data.size - 1) gone() else visible()
}
}
}
inner class VH(var binding: ListItemAddMiningFaceBinding): BaseViewHolder(binding.root)
}
@@ -2,7 +2,17 @@ package com.zmkg.coaloperation.bean
data class UserMenuBean(
var menuName: String,
var iconResId:Int,
var iconResId: Int,
var iconBgResId: Int,
val click:()-> Unit
val click: () -> Unit
)
data class AddMiningFaceItem(
//0-输入框,1-选择弹窗
var funcType: Int = 0,
var funcName: String = "",
var funcValue: String = "",
var funcId: String = "",
var isShowArrowDown: Boolean = false,
var onClick: () -> Unit = {}
)
@@ -4,13 +4,18 @@ import android.os.Bundle
import android.text.TextUtils
import android.view.View
import android.widget.TextView
import androidx.recyclerview.widget.LinearLayoutManager
import com.zmkg.coaloperation.R
import com.zmkg.coaloperation.adapter.AddMiningFaceAdapter
import com.zmkg.coaloperation.base.BaseVMBActivity
import com.zmkg.coaloperation.base.viewmodel.TestViewModel
import com.zmkg.coaloperation.bean.AddMiningFaceItem
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.AddWorkingFaceActivity
import com.zmkg.coaloperation.ui.tunneling.activity.WorkingFaceDetailActivity
import com.zmkg.coaloperation.utils.DictUtils
import com.zmkg.coaloperation.utils.PickerUtil
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
@@ -42,6 +47,25 @@ class AddMiningFaceActivity :
// }
private var faceDetail: MiningWorkingFaceEntity? = null
private val miningList = mutableListOf<AddMiningFaceItem>()
private val addFaceAdapter by lazy {
AddMiningFaceAdapter(miningList).apply {
addChildClickViewIds(R.id.tvSelectValue, R.id.imgExpand)
setOnItemChildClickListener { adapter, view, position ->
if (view.id == R.id.tvSelectValue) {
miningList[position].onClick()
return@setOnItemChildClickListener
}
if (view.id == R.id.imgExpand) {
miningList.clear()
initMiningList(false)
notifyDataSetChanged()
return@setOnItemChildClickListener
}
}
}
}
override fun initView(savedInstanceState: Bundle?) {
val stringExtra = intent.getStringExtra(WORK_FACE_TYPE)
if (TextUtils.isEmpty(stringExtra)) {
@@ -51,19 +75,14 @@ class AddMiningFaceActivity :
WorkFaceType.ADD.name -> {
currentFaceType = WorkFaceType.ADD
mBinding.confirm.text = "确认新增"
// mBinding.toolbarLay.titleTvName.text = "新增工作面"
mBinding.toolbarLay.title = "新增工作面"
// mBinding.expandLayout.gone()
// mBinding.imgExpand.visible()
initMiningList(true)
}
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) {
@@ -73,73 +92,28 @@ class AddMiningFaceActivity :
faceDetail?.let {
loadDetail(it)
}
initMiningList(false)
}
WorkFaceType.SEE.name -> {
currentFaceType = WorkFaceType.SEE
}
}
mBinding.rvFaceList.let {
it.layoutManager = LinearLayoutManager(this)
it.adapter = addFaceAdapter
}
// 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<WorkOption> = 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()
}
@@ -149,9 +123,7 @@ class AddMiningFaceActivity :
}
override fun bindEvent() {
mBinding.apply {
// addClickViews(imgExpand, confirm)
}
}
override fun createObserve() {
@@ -185,82 +157,9 @@ class AddMiningFaceActivity :
}
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)
@@ -269,53 +168,6 @@ class AddMiningFaceActivity :
}
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)
@@ -332,4 +184,67 @@ class AddMiningFaceActivity :
return if (text.isNullOrBlank()) 0 else text.toLong()
}
private fun initMiningList(isFirst: Boolean) {
miningList.run {
if (isFirst) {
add(AddMiningFaceItem(funcName = "工作面名称", isShowArrowDown = true))
return
}
add(AddMiningFaceItem(funcName = "工作面名称", isShowArrowDown = false))
add(AddMiningFaceItem(funcName = "水平", funcType = 1, onClick = { selectHorizontalPlane() }))
add(AddMiningFaceItem(funcName = "煤层", funcType = 1, onClick = { selectSeam() }))
add(AddMiningFaceItem(funcName = "采区", funcType = 1, onClick = { selectArea() }))
add(AddMiningFaceItem(funcName = "储量"))
add(AddMiningFaceItem(funcName = "胶运巷安全出口宽度"))
add(AddMiningFaceItem(funcName = "回风巷安全出口宽度"))
add(AddMiningFaceItem(funcName = "走向长度"))
add(AddMiningFaceItem(funcName = "倾向长度"))
add(AddMiningFaceItem(funcName = "胶带巷长度"))
add(AddMiningFaceItem(funcName = "回风巷长度"))
add(AddMiningFaceItem(funcName = "切眼长度"))
add(AddMiningFaceItem(funcName = "平均煤厚"))
add(AddMiningFaceItem(funcName = "容积"))
}
}
private fun selectArea() {
if (seamAreaList.isEmpty()) {
showToast("请先选择所属煤层")
return
}
PickerUtil.showOptionPicker(this, "请选择所属采区域", seamAreaList) { option ->
miningList[3].let {
it.funcValue = option.name
it.funcId = option.id
}
addFaceAdapter.notifyItemChanged(3)
}
}
private fun selectSeam() {
PickerUtil.showOptionPicker(this, "请选择所属煤层", DictUtils.seamList) { option ->
miningList[2].let {
it.funcValue = option.name
it.funcId = option.id
}
addFaceAdapter.notifyItemChanged(2)
seamAreaList = DictUtils.areaMap[option.id] ?: mutableListOf()
}
}
private fun selectHorizontalPlane() {
val list = mutableListOf<WorkOption>()
list.add(WorkOption("1","A"))
list.add(WorkOption("2","B"))
list.add(WorkOption("3","C"))
list.add(WorkOption("4","D"))
list.add(WorkOption("5","E"))
PickerUtil.showOptionPicker(this, "请选择水平", list) { option ->
miningList[1].let {
it.funcValue = option.name
it.funcId = option.id
}
addFaceAdapter.notifyItemChanged(1)
}
}
}
@@ -16,6 +16,8 @@ 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.mining.activity.AddMiningFaceActivity.Companion.WORK_FACE_TYPE
import com.zmkg.coaloperation.ui.mining.activity.AddMiningFaceActivity.WorkFaceType
import com.zmkg.coaloperation.ui.tunneling.activity.AddWorkingFaceRecordActivity
import com.zmkg.coaloperation.ui.tunneling.activity.WorkingFaceStatisticsActivity
import org.greenrobot.eventbus.Subscribe
@@ -114,6 +116,11 @@ class MiningActivity :
}
override fun bindEvent() {
mBinding.toolbarLay.titleTvRight.setOnClickListener {
toActivity(AddMiningFaceActivity::class.java, Bundle().apply {
putString(WORK_FACE_TYPE, WorkFaceType.ADD.name)
})
}
}
override fun processClick(v: View?) {
@@ -51,9 +51,8 @@ class MiningFaceDetailActivity :
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)
putString(AddMiningFaceActivity.WORK_FACE_TYPE, AddMiningFaceActivity.WorkFaceType.EDIT.name)
putParcelable(AddMiningFaceActivity.FACE_WORK_DETAIL_DATA, detail)
})
}
}
@@ -30,19 +30,10 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="20dp"
tools:itemCount="6"
android:overScrollMode="never"
tools:listitem="@layout/list_item_add_mining_face"
android:background="@drawable/bg_stroke_gray"/>
<!-- <ImageView-->
<!-- android:id="@+id/imgExpand"-->
<!-- android:layout_width="60dp"-->
<!-- android:layout_height="30dp"-->
<!-- 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"/>-->
</LinearLayout>
<com.allen.library.shape.ShapeTextView
@@ -0,0 +1,84 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- android:background="#0C0D0E"-->
<TextView
android:id="@+id/tvFuncName"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_marginStart="20dp"
android:gravity="center_vertical"
android:textColor="#6A6F87"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="工作面名称" />
<EditText
android:id="@+id/etInputValue"
android:layout_width="80dp"
android:layout_height="30dp"
android:layout_marginEnd="15dp"
android:background="@drawable/rectangle_stroke_grey_corner8"
android:hint="请输入"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:textColor="@color/white"
android:textColorHint="#757B8C"
android:textSize="14sp"
android:theme="@style/Theme.AppCompat.DayNight"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/tvFuncName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/tvFuncName" />
<TextView
android:id="@+id/tvSelectValue"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginEnd="15dp"
android:drawablePadding="18dp"
android:gravity="center_vertical"
android:hint="请选择"
android:paddingStart="10dp"
android:paddingEnd="0dp"
android:textColor="@color/white"
android:textColorHint="#6A6F87"
android:textSize="14sp"
android:visibility="gone"
app:drawableEndCompat="@drawable/ic_point_arrow_right"
app:layout_constraintBottom_toBottomOf="@id/tvFuncName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/tvFuncName" />
<com.google.android.material.divider.MaterialDivider
android:id="@+id/divider"
android:layout_width="match_parent"
android:layout_height="1dp"
app:dividerColor="#282C38"
app:layout_constraintTop_toBottomOf="@id/tvFuncName" />
<ImageView
android:id="@+id/imgExpand"
android:layout_width="60dp"
android:layout_height="30dp"
android:paddingStart="15dp"
android:paddingEnd="15dp"
android:scaleType="fitCenter"
android:src="@drawable/ic_arrow_down_white2"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvFuncName"
tools:ignore="ContentDescription" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>