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"