From 6e75007bd160a5900f2e8554a7d6a292d5333b46 Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Mon, 22 Sep 2025 18:55:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=9E=E9=87=87=E6=96=B0=E5=A2=9E=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E4=BF=AE=E6=94=B9=E3=80=81=E5=90=88=E5=B9=B6=E6=88=91?= =?UTF-8?q?=E7=9A=84=E6=95=B0=E6=8D=AE=E6=8B=89=E5=8F=96=E5=92=8C=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E5=88=B0=E6=96=B0=E6=95=B0=E6=8D=AE=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=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 + .../coaloperation/adapter/DataSyncAdapter.kt | 39 ++++ .../adapter/MiningRecordBaseDataAdapter.kt | 50 ++++ .../MiningRecordCoalThicknessAdapter.kt | 52 +++++ .../adapter/MiningWorkingFaceAdapter.kt | 24 +- .../coaloperation/base/BaseVMBActivity.kt | 15 ++ .../com/zmkg/coaloperation/bean/OtherData.kt | 13 +- .../zmkg/coaloperation/data/api/HomeApi.kt | 6 + .../data/repository/HomeRepository.kt | 15 +- .../ui/home/fragment/HomeFragment.kt | 2 + .../ui/mining/activity/MiningActivity.kt | 23 +- .../activity/MiningFaceRecordActivity.kt | 184 +++++++++++++++ .../activity/AddWorkingFaceRecordActivity.kt | 16 +- .../tunneling/activity/TunnelingActivity.kt | 1 - .../activity/WorkingFaceRecordActivity.kt | 9 +- .../tunneling/viewmodel/TunnelingViewModel.kt | 15 ++ .../ui/user/activity/AboutUsActivity.kt | 1 - .../ui/user/activity/DataSyncActivity.kt | 221 ++++++++++++++++++ .../ui/user/fragment/UserFragment.kt | 145 +----------- .../com/zmkg/coaloperation/utils/DictUtils.kt | 7 +- .../coaloperation/utils/ExcelExportUtils.kt | 3 +- .../main/res/drawable-xxhdpi/ic_data_sync.png | Bin 0 -> 6939 bytes .../res/layout/activity_add_mining_face.xml | 8 +- .../res/layout/activity_add_working_face.xml | 2 +- .../activity_add_working_face_record.xml | 54 ++++- .../main/res/layout/activity_cache_manage.xml | 2 +- .../main/res/layout/activity_data_sync.xml | 30 +++ .../main/res/layout/activity_geological.xml | 2 +- .../activity_geological_catalog_point.xml | 2 +- .../src/main/res/layout/activity_login.xml | 2 +- .../app/src/main/res/layout/activity_main.xml | 2 +- .../layout/activity_mining_face_record.xml | 158 +++++++++++++ .../res/layout/activity_network_config.xml | 2 +- .../app/src/main/res/layout/fragment_home.xml | 2 +- .../src/main/res/layout/fragment_record.xml | 2 +- .../src/main/res/layout/fragment_report.xml | 2 +- .../main/res/layout/lay_title_right_bar.xml | 2 +- .../res/layout/list_item_add_mining_face.xml | 1 - .../main/res/layout/list_item_data_sync.xml | 33 +++ .../list_item_mining_record_base_data.xml | 62 +++++ ...list_item_mining_record_coal_thickness.xml | 117 ++++++++++ 41 files changed, 1135 insertions(+), 194 deletions(-) create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/DataSyncAdapter.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/MiningRecordBaseDataAdapter.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/MiningRecordCoalThicknessAdapter.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/MiningFaceRecordActivity.kt create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/user/activity/DataSyncActivity.kt create mode 100644 coalMiningApp/app/src/main/res/drawable-xxhdpi/ic_data_sync.png create mode 100644 coalMiningApp/app/src/main/res/layout/activity_data_sync.xml create mode 100644 coalMiningApp/app/src/main/res/layout/activity_mining_face_record.xml create mode 100644 coalMiningApp/app/src/main/res/layout/list_item_data_sync.xml create mode 100644 coalMiningApp/app/src/main/res/layout/list_item_mining_record_base_data.xml create mode 100644 coalMiningApp/app/src/main/res/layout/list_item_mining_record_coal_thickness.xml diff --git a/coalMiningApp/app/src/main/AndroidManifest.xml b/coalMiningApp/app/src/main/AndroidManifest.xml index 1c35726..bf707e3 100644 --- a/coalMiningApp/app/src/main/AndroidManifest.xml +++ b/coalMiningApp/app/src/main/AndroidManifest.xml @@ -59,6 +59,9 @@ + + \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/DataSyncAdapter.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/DataSyncAdapter.kt new file mode 100644 index 0000000..a55faa0 --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/DataSyncAdapter.kt @@ -0,0 +1,39 @@ +package com.zmkg.coaloperation.adapter + +import android.view.LayoutInflater +import android.view.ViewGroup +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.zmkg.coaloperation.R +import com.zmkg.coaloperation.bean.DataSyncItem +import com.zmkg.coaloperation.databinding.ListItemDataSyncBinding +import com.zmkg.coaloperation.utils.gone +import com.zmkg.coaloperation.utils.visible + +class DataSyncAdapter(list: MutableList): + BaseQuickAdapter(R.layout.list_item_data_sync, list) { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH { + val binding = ListItemDataSyncBinding.inflate( + LayoutInflater.from(context), parent, false + ) + return VH(binding).also { + bindViewClickListener(it, viewType) + } + } + + override fun convert( + holder: VH, + item: DataSyncItem + ) { + holder.binding.let { + it.tvItemUnit.text = item.funcName +// it.divider.run { +// if (holder.layoutPosition == data.size - 1) gone() else visible() +// } + } + } + + inner class VH(var binding: ListItemDataSyncBinding): BaseViewHolder(binding.root) + +} \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/MiningRecordBaseDataAdapter.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/MiningRecordBaseDataAdapter.kt new file mode 100644 index 0000000..db7ecf7 --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/MiningRecordBaseDataAdapter.kt @@ -0,0 +1,50 @@ +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.ListItemMiningRecordBaseDataBinding + +class MiningRecordBaseDataAdapter(list: MutableList) : + BaseQuickAdapter( + R.layout.list_item_mining_record_base_data, + list + ) { + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): VH { + val binding = ListItemMiningRecordBaseDataBinding.inflate( + LayoutInflater.from(context), parent, false + ) + return VH(binding).also { + bindViewClickListener(it, viewType) + } + } + + override fun convert( + holder: VH, + item: AddMiningFaceItem + ) { + val binding = holder.binding + binding.tvItemName.run { + addTextChangedListener(onTextChanged = { text, start, before, count -> + item.funcName = text.toString().trim() + }) + text = item.funcName + } + binding.etItemValue.run { + addTextChangedListener(onTextChanged = { text, start, before, count -> + item.funcValue = text.toString().trim() + }) + setText(item.funcValue) + } + } + + inner class VH(var binding: ListItemMiningRecordBaseDataBinding) : BaseViewHolder(binding.root) +} \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/MiningRecordCoalThicknessAdapter.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/MiningRecordCoalThicknessAdapter.kt new file mode 100644 index 0000000..1d0406d --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/MiningRecordCoalThicknessAdapter.kt @@ -0,0 +1,52 @@ +package com.zmkg.coaloperation.adapter + +import android.text.Html +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.CoalThicknessItem +import com.zmkg.coaloperation.databinding.ListItemMiningRecordCoalThicknessBinding +import com.zmkg.coaloperation.utils.gone +import com.zmkg.coaloperation.utils.visible + +class MiningRecordCoalThicknessAdapter(list: MutableList): +BaseQuickAdapter(R.layout.list_item_mining_record_coal_thickness,list){ + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH { + val binding = ListItemMiningRecordCoalThicknessBinding.inflate( + LayoutInflater.from(context), parent, false + ) + return VH(binding).also { + bindViewClickListener(it, viewType) + } + } + + override fun convert(holder: VH, item: CoalThicknessItem) { + val position = holder.layoutPosition + val binding = holder.binding + binding.divider.run { + if (position == data.size - 1) gone() else visible() + } + binding.btnAddPoint.run { + if (position == data.size - 1) visible() else gone() + } + binding.tvNameUnit.text = Html.fromHtml("#架", Html.FROM_HTML_MODE_LEGACY) + binding.etItemName.run { + addTextChangedListener(onTextChanged = { text, start, before, count -> + item.supportNo = text.toString().trim() + }) + setText(item.supportNo) + } + binding.etItemValue.run { + addTextChangedListener(onTextChanged = { text, start, before, count -> + item.thicknessValue = text.toString().trim() + }) + setText(item.thicknessValue) + } + } + + inner class VH(var binding: ListItemMiningRecordCoalThicknessBinding): BaseViewHolder(binding.root) +} \ 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 index cc3d02a..0da033a 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/MiningWorkingFaceAdapter.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/MiningWorkingFaceAdapter.kt @@ -15,6 +15,7 @@ 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.ui.mining.activity.MiningFaceRecordActivity import com.zmkg.coaloperation.utils.ScreenUtil import com.zmkg.coaloperation.utils.gone import com.zmkg.coaloperation.utils.toJsonString @@ -81,17 +82,18 @@ class MiningWorkingFaceAdapter(var list: MutableList) : // 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] -// ) -// }) -// } -// } + context.let { ctx -> + if (ctx is MiningActivity) { + ctx.toActivity(MiningFaceRecordActivity::class.java, Bundle().apply { + putString(MiningFaceRecordActivity.WORK_RECORD_TYPE, MiningFaceRecordActivity.WorkRecordType.SEE.name) + putString(MiningFaceRecordActivity.FACE_NAME, item.surfaceName) + putParcelable( + MiningFaceRecordActivity.FACE_RECORD, + item.records!![recordPosition] + ) + }) + } + } } } } diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/base/BaseVMBActivity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/base/BaseVMBActivity.kt index 1d158b8..669ba93 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/base/BaseVMBActivity.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/base/BaseVMBActivity.kt @@ -34,6 +34,8 @@ import com.zmkg.coaloperation.base.viewmodel.BaseViewModel.Companion.LOADING_STA import com.zmkg.coaloperation.superfuntion.hideLoading import com.zmkg.coaloperation.superfuntion.showLoading import com.zmkg.coaloperation.utils.StatusbarUtil +import com.zmkg.coaloperation.utils.formatDecimalString +import com.zmkg.coaloperation.utils.roundedOneDecimalPlace import com.zmkg.coaloperation.view.CustomToast import com.zmkg.coaloperation.view.LoadingDialog import kotlinx.coroutines.launch @@ -432,4 +434,17 @@ abstract class BaseVMBActivity(private configuration.fontScale = 1f return context.createConfigurationContext(configuration) } + + fun getShowNum2(num:String?):String { + return num?.formatDecimalString()?:"" + } + fun getShowNum(num:String?):String { + if (num.isNullOrBlank()) return "0" + try { + val showNum = num.toDouble().roundedOneDecimalPlace() + return "$showNum" + } catch (e: Exception) { + return "0" + } + } } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/bean/OtherData.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/bean/OtherData.kt index b3de357..ef24f88 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/bean/OtherData.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/bean/OtherData.kt @@ -8,11 +8,22 @@ data class UserMenuBean( ) data class AddMiningFaceItem( - //0-输入框,1-选择弹窗 + //0-输入框,1-选择弹窗, 2-显示文本TextView var funcType: Int = 0, var funcName: String = "", var funcValue: String = "", var funcId: String = "", var isShowArrowDown: Boolean = false, var onClick: () -> Unit = {} +) + +data class CoalThicknessItem( + var supportNo: String = "", + var thicknessValue: String = "", +) + +data class DataSyncItem( + var funcName:String, + var onDataPull: () -> Unit = {}, + var onDataPush: () -> Unit = {}, ) \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/data/api/HomeApi.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/data/api/HomeApi.kt index 78457d9..6540b6c 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/data/api/HomeApi.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/data/api/HomeApi.kt @@ -1,10 +1,13 @@ package com.zmkg.coaloperation.data.api +import com.zmkg.coaloperation.bean.TunnelSubmitData import com.zmkg.coaloperation.data.bean.ApiResponse import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceEntity import com.zmkg.coaloperation.retorfit.UrlConfig import com.zmkg.coaloperation.ui.home.bean.WaterLedgerBean +import retrofit2.http.Body import retrofit2.http.GET +import retrofit2.http.POST /** * 首页 @@ -48,4 +51,7 @@ interface HomeApi { @GET("/api/mine/tunnelling/dictionaries") suspend fun getTunnelAllDict(): ApiResponse + @POST("/api/mine/tunnelling/data/push") + suspend fun tunnelDataPush(@Body data: TunnelSubmitData): ApiResponse + } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/data/repository/HomeRepository.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/data/repository/HomeRepository.kt index fa827f5..92aca5e 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/data/repository/HomeRepository.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/data/repository/HomeRepository.kt @@ -1,6 +1,7 @@ package com.zmkg.coaloperation.data.repository import com.zmkg.coaloperation.base.repository.BaseRepository +import com.zmkg.coaloperation.bean.TunnelSubmitData import com.zmkg.coaloperation.data.api.HomeApi import com.zmkg.coaloperation.data.bean.ApiResponse import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceEntity @@ -8,7 +9,7 @@ import com.zmkg.coaloperation.retorfit.RetrofitManager import com.zmkg.coaloperation.ui.home.bean.WaterLedgerBean -object HomeRepository : BaseRepository(){ +object HomeRepository : BaseRepository() { private val service by lazy { RetrofitManager.getService(HomeApi::class.java) } @@ -33,7 +34,7 @@ object HomeRepository : BaseRepository(){ // } // } -// /** + // /** // * 掘进-首页-工作面记录列表 // */ // suspend fun getTunnelingHomeItemData(surfaceId: String?): ApiResponse> { @@ -61,16 +62,22 @@ object HomeRepository : BaseRepository(){ // } // } // - suspend fun getTunnelHomeList() : ApiResponse?> { + suspend fun getTunnelHomeList(): ApiResponse?> { return apiCall { service.getTunnelHomeList() } } - suspend fun getTunnelAllDict() : ApiResponse { + suspend fun getTunnelAllDict(): ApiResponse { return apiCall { service.getTunnelAllDict() } } + suspend fun tunnelDataPush(data: TunnelSubmitData): ApiResponse { + return apiCall { + service.tunnelDataPush(data) + } + } + } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/home/fragment/HomeFragment.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/home/fragment/HomeFragment.kt index 26e42e9..6f91def 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/home/fragment/HomeFragment.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/home/fragment/HomeFragment.kt @@ -25,6 +25,7 @@ import com.zmkg.coaloperation.superfuntion.toJson import com.zmkg.coaloperation.ui.home.adapter.HomeMenuAdapter import com.zmkg.coaloperation.ui.home.bean.HomeMenuBean import com.zmkg.coaloperation.ui.home.viewmodel.HomeViewModel +import com.zmkg.coaloperation.utils.DictUtils import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch @@ -80,6 +81,7 @@ class HomeFragment : } override fun initData() { + DictUtils.initData() // mViewModel.getWaterLedgerData() val titleNameList = mutableListOf( 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 de7dc56..fe4f751 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 @@ -51,17 +51,18 @@ class MiningActivity : 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) -// }) + toActivity(MiningFaceRecordActivity::class.java, Bundle().apply { + putString(MiningFaceRecordActivity.WORK_RECORD_TYPE, MiningFaceRecordActivity.WorkRecordType.ADD.name) + putLong( + MiningFaceRecordActivity.FACE_ID, + workingFaceList[position].surfaceId + ) + putString( + MiningFaceRecordActivity.FACE_NAME, + workingFaceList[position].surfaceName + ) + putInt(AddWorkingFaceRecordActivity.SHOW_TYPE, 0) + }) } } } diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/MiningFaceRecordActivity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/MiningFaceRecordActivity.kt new file mode 100644 index 0000000..2b74a88 --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/mining/activity/MiningFaceRecordActivity.kt @@ -0,0 +1,184 @@ +package com.zmkg.coaloperation.ui.mining.activity + +import android.annotation.SuppressLint +import android.os.Bundle +import android.text.TextUtils +import android.view.View +import androidx.recyclerview.widget.LinearLayoutManager +import com.zmkg.coaloperation.R +import com.zmkg.coaloperation.adapter.MiningRecordBaseDataAdapter +import com.zmkg.coaloperation.adapter.MiningRecordCoalThicknessAdapter +import com.zmkg.coaloperation.base.BaseVMBActivity +import com.zmkg.coaloperation.base.viewmodel.TestViewModel +import com.zmkg.coaloperation.bean.AddMiningFaceItem +import com.zmkg.coaloperation.bean.CoalThicknessItem +import com.zmkg.coaloperation.bean.WorkOption +import com.zmkg.coaloperation.databinding.ActivityMiningFaceRecordBinding +import com.zmkg.coaloperation.utils.PickerUtil +import com.zmkg.coaloperation.utils.gone +import com.zmkg.coaloperation.utils.visible + +@SuppressLint("NotifyDataSetChanged") +class MiningFaceRecordActivity : + BaseVMBActivity(R.layout.activity_mining_face_record) { + companion object { + const val TAG = "MiningFaceRecordActivity" + const val SHOW_TYPE = "showType" + const val WORK_RECORD_TYPE = "workRecordType" + const val FACE_NAME = "faceName" + const val FACE_ID = "faceId" + const val FACE_RECORD = "faceRecord" + } + + enum class WorkRecordType { + ADD,//新增 + + EDIT,//修改 + + SEE//查看 + } + + private var currentRecordType = WorkRecordType.ADD + private val baseDataList: MutableList = mutableListOf() + private val coalThicknessList: MutableList = mutableListOf() + + private val baseDataAdapter by lazy { + MiningRecordBaseDataAdapter(baseDataList) + } + + private val coalThicknessAdapter by lazy { + MiningRecordCoalThicknessAdapter(coalThicknessList).apply { + addChildClickViewIds(R.id.btnAddPoint) + setOnItemChildClickListener { adapter, view, position -> + if (view.id == R.id.btnAddPoint) { + coalThicknessList.add(CoalThicknessItem()) + notifyDataSetChanged() + } + } + } + } + + override fun initView(savedInstanceState: Bundle?) { + mBinding.rvBaseData.let { + it.layoutManager = LinearLayoutManager(this) + it.adapter = baseDataAdapter + } + mBinding.rvCoalThickness.let { + it.layoutManager = LinearLayoutManager(this) + it.adapter = coalThicknessAdapter + } + val stringExtra = intent.getStringExtra(WORK_RECORD_TYPE) + if (TextUtils.isEmpty(stringExtra)) { + stringExtra == AddMiningFaceActivity.WorkFaceType.ADD.name + } + when (stringExtra) { + WorkRecordType.ADD.name -> { + currentRecordType = WorkRecordType.ADD + mBinding.toolbarLay.title = "开始记录" + mBinding.btnSaveRecord.text = "保存" + mBinding.btnSaveRecord.visible() + initAddRecord() + } + + WorkRecordType.EDIT.name -> { + currentRecordType = WorkRecordType.EDIT + mBinding.toolbarLay.title = "修改记录" + mBinding.btnSaveRecord.text = "修改" + mBinding.btnSaveRecord.visible() +// detail = +// intent.getParcelableExtra(WorkingFaceDetailActivity.Companion.FACE_WORK_DETAIL_DATA) as MiningWorkingFaceEntity? +// if (faceDetail == null) { +// showToast("未查询到记录数据") +// return +// } + initEditRecord() + } + + WorkRecordType.SEE.name -> { + currentRecordType = WorkRecordType.SEE + mBinding.toolbarLay.title = "查看详情" + mBinding.toolbarLay.rightText = "修改" + mBinding.toolbarLay.titleTvRight.setOnClickListener { + toActivity(MiningFaceRecordActivity::class.java, Bundle().apply { + putString(WORK_RECORD_TYPE, WorkRecordType.EDIT.name) +// putParcelable(FACE_RECORD, faceRecord) + }) + } + mBinding.btnSaveRecord.gone() + initRecordDetail() + } + } + } + + override fun initData() { + + } + + override fun bindEvent() { + val waterOutflowList: MutableList = mutableListOf() + waterOutflowList.add(WorkOption(id = "0", name = "是")) + waterOutflowList.add(WorkOption(id = "1", name = "否")) + val tvWaterOutflow = mBinding.tvWaterOutflow + tvWaterOutflow.setOnClickListener { v -> + PickerUtil.showOptionPicker(this, "请选择是否出水", waterOutflowList) { option -> + tvWaterOutflow.text = option.name + tvWaterOutflow.tag = option.id + } + } + } + + override fun processClick(v: View?) { + + } + + private fun initAddRecord() { + baseDataList.run { + add(AddMiningFaceItem(funcName = "当班进尺")) + add(AddMiningFaceItem(funcName = "胶运巷回采位置")) + add(AddMiningFaceItem(funcName = "回风巷回采位置")) + add(AddMiningFaceItem(funcName = "出煤量")) + } + baseDataAdapter.notifyDataSetChanged() + + coalThicknessList.run { + add(CoalThicknessItem()) + add(CoalThicknessItem()) + add(CoalThicknessItem()) + } + coalThicknessAdapter.notifyDataSetChanged() + } + + private fun initEditRecord() { + baseDataList.run { + add(AddMiningFaceItem(funcName = "当班进尺")) + add(AddMiningFaceItem(funcName = "胶运巷回采位置")) + add(AddMiningFaceItem(funcName = "回风巷回采位置")) + add(AddMiningFaceItem(funcName = "出煤量")) + } + baseDataAdapter.notifyDataSetChanged() + + coalThicknessList.run { + add(CoalThicknessItem()) + add(CoalThicknessItem()) + add(CoalThicknessItem()) + } + coalThicknessAdapter.notifyDataSetChanged() + } + + private fun initRecordDetail() { + baseDataList.run { + add(AddMiningFaceItem(funcName = "当班进尺")) + add(AddMiningFaceItem(funcName = "胶运巷回采位置")) + add(AddMiningFaceItem(funcName = "回风巷回采位置")) + add(AddMiningFaceItem(funcName = "出煤量")) + } + baseDataAdapter.notifyDataSetChanged() + + coalThicknessList.run { + add(CoalThicknessItem()) + add(CoalThicknessItem()) + add(CoalThicknessItem()) + } + coalThicknessAdapter.notifyDataSetChanged() + } +} \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/AddWorkingFaceRecordActivity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/AddWorkingFaceRecordActivity.kt index e8e02f3..6287b6c 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/AddWorkingFaceRecordActivity.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/AddWorkingFaceRecordActivity.kt @@ -193,6 +193,7 @@ class AddWorkingFaceRecordActivity : it.workingFootage = mBinding.etWorkingFootage.text.toString().trim().formatDecimalString() it.seamDip = mBinding.etSeamDip.text.toString().trim().formatDecimalString() it.seamHeight = mBinding.etSeamHeight.text.toString().trim().formatDecimalString() + it.waterYield = mBinding.etWaterYield.text.toString().trim().formatDecimalString() it.recordPerson = mBinding.etRecordPerson.text.toString().trim() it.createTime = DateTimeUtil.formatDateTime(LocalDateTime.now()) @@ -218,9 +219,10 @@ class AddWorkingFaceRecordActivity : mBinding.tvWorkTeam.tag = it.teamId mBinding.etTeamLeader.setText(it.teamLeader) - mBinding.etWorkingFootage.setText(it.workingFootage) - mBinding.etSeamDip.setText(it.seamDip) - mBinding.etSeamHeight.setText(it.seamHeight) + mBinding.etWorkingFootage.setText(getShowNum2(it.workingFootage)) + mBinding.etSeamDip.setText(getShowNum2(it.seamDip)) + mBinding.etSeamHeight.setText(getShowNum2(it.seamHeight)) + mBinding.etWaterYield.setText(getShowNum2(it.waterYield)) mBinding.etRecordPerson.setText(it.recordPerson) } } @@ -238,6 +240,7 @@ class AddWorkingFaceRecordActivity : it.workingFootage = mBinding.etWorkingFootage.text.toString().trim().formatDecimalString() it.seamDip = mBinding.etSeamDip.text.toString().trim().formatDecimalString() it.seamHeight = mBinding.etSeamHeight.text.toString().trim().formatDecimalString() + it.waterYield = mBinding.etWaterYield.text.toString().trim().formatDecimalString() it.recordPerson = mBinding.etRecordPerson.text.toString().trim() it.createTime = DateTimeUtil.formatDateTime(LocalDateTime.now()) @@ -311,6 +314,13 @@ class AddWorkingFaceRecordActivity : } list.add(TunnelWorkingItem(name = "煤层高", value = seamHeight)) + val waterYield = mBinding.etWaterYield.text.toString().trim().formatDecimalString() + if (waterYield.isBlank()) { + showToast("请输入涌水量") + return + } + list.add(TunnelWorkingItem(name = "涌水量", value = waterYield)) + val recordPerson = mBinding.etRecordPerson.text.toString().trim() if (recordPerson.isBlank()) { showToast("请输入填写人") diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/TunnelingActivity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/TunnelingActivity.kt index f8439ce..fb071bc 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/TunnelingActivity.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/TunnelingActivity.kt @@ -86,7 +86,6 @@ class TunnelingActivity : @SuppressLint("NotifyDataSetChanged") override fun initData() { - DictUtils.initData() val userId = SpTool.getString(SpTool.USER_ID) workingFaceViewModel.getEntityListByUserId(userId) { it -> if (it.isNullOrEmpty()) { diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/WorkingFaceRecordActivity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/WorkingFaceRecordActivity.kt index 9098692..6d9ae32 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/WorkingFaceRecordActivity.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/activity/WorkingFaceRecordActivity.kt @@ -16,6 +16,7 @@ import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceRecordEntity import com.zmkg.coaloperation.db.viewmodel.TunnelRoofLithologyViewModel import com.zmkg.coaloperation.utils.DictUtils import com.zmkg.coaloperation.utils.formatDecimalString +import com.zmkg.coaloperation.utils.roundedOneDecimalPlace import com.zmkg.coaloperation.utils.toJsonString import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode @@ -83,14 +84,15 @@ class WorkingFaceRecordActivity : ) list.add(TunnelWorkingItem(pageType = 1, name = "施工队伍", value = it.teamName)) list.add(TunnelWorkingItem(pageType = 1, name = "带班队长", value = it.teamLeader)) - list.add(TunnelWorkingItem(pageType = 1, name = "本班进尺", value = "${it.workingFootage?.formatDecimalString()}m")) + list.add(TunnelWorkingItem(pageType = 1, name = "本班进尺", value = "${getShowNum2(it.workingFootage)}m")) // val rockList = mutableListOf() // rockList.add(RockItem(startLen = 0, endLen = 1, rockType = "泥")) // rockList.add(RockItem(startLen = 0, endLen = 1, rockType = "砂")) list.add(TunnelWorkingItem(pageType = 1, name = "顶板岩性", value = "", items = null)) - list.add(TunnelWorkingItem(pageType = 1, name = "煤层倾角", value = "${it.seamDip?.formatDecimalString()}°")) - list.add(TunnelWorkingItem(pageType = 1, name = "煤层高", value = "${it.seamHeight?.formatDecimalString()}m")) + list.add(TunnelWorkingItem(pageType = 1, name = "煤层倾角", value = "${getShowNum2(it.seamDip)}°")) + list.add(TunnelWorkingItem(pageType = 1, name = "煤层高", value = "${getShowNum2(it.seamHeight)}m")) + list.add(TunnelWorkingItem(pageType = 1, name = "涌水量", value = "${getShowNum2(it.waterYield)}m³/h")) list.add(TunnelWorkingItem(pageType = 1, name = "记录人", value = it.recordPerson)) adapter.notifyDataSetChanged() @@ -102,6 +104,7 @@ class WorkingFaceRecordActivity : } } + override fun bindEvent() { } diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/viewmodel/TunnelingViewModel.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/viewmodel/TunnelingViewModel.kt index fd94f68..fdb6792 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/viewmodel/TunnelingViewModel.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/tunneling/viewmodel/TunnelingViewModel.kt @@ -1,6 +1,7 @@ package com.zmkg.coaloperation.ui.tunneling.viewmodel import com.zmkg.coaloperation.base.viewmodel.BaseViewModel +import com.zmkg.coaloperation.bean.TunnelSubmitData import com.zmkg.coaloperation.data.repository.HomeRepository import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceEntity import com.zmkg.coaloperation.superfuntion.handleRequest @@ -104,4 +105,18 @@ class TunnelingViewModel : BaseViewModel() { ) } + var tunnelDataPush = MutableSharedFlow() + + fun tunnelDataPush(data:TunnelSubmitData) { + launch( + { + handleRequest( + HomeRepository.tunnelDataPush(data), + successBlock = { + tunnelDataPush.emit(it.data) + }) + } + ) + } + } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/user/activity/AboutUsActivity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/user/activity/AboutUsActivity.kt index d3782f5..2c524f4 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/user/activity/AboutUsActivity.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/user/activity/AboutUsActivity.kt @@ -23,5 +23,4 @@ class AboutUsActivity : BaseVMBActivity(R. override fun processClick(v: View?) { } - } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/user/activity/DataSyncActivity.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/user/activity/DataSyncActivity.kt new file mode 100644 index 0000000..17782ab --- /dev/null +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/user/activity/DataSyncActivity.kt @@ -0,0 +1,221 @@ +package com.zmkg.coaloperation.ui.user.activity + +import android.os.Bundle +import android.util.Log +import android.view.View +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle +import androidx.recyclerview.widget.LinearLayoutManager +import com.zmkg.coaloperation.R +import com.zmkg.coaloperation.adapter.DataSyncAdapter +import com.zmkg.coaloperation.base.BaseVMBActivity +import com.zmkg.coaloperation.bean.DataSyncItem +import com.zmkg.coaloperation.bean.TunnelSubmitData +import com.zmkg.coaloperation.databinding.ActivityDataSyncBinding +import com.zmkg.coaloperation.db.viewmodel.TunnelRoofLithologyViewModel +import com.zmkg.coaloperation.db.viewmodel.TunnelWorkingFaceRecordViewModel +import com.zmkg.coaloperation.db.viewmodel.TunnelWorkingFaceViewModel +import com.zmkg.coaloperation.superfuntion.hideLoading +import com.zmkg.coaloperation.superfuntion.showLoading +import com.zmkg.coaloperation.ui.tunneling.viewmodel.TunnelingViewModel +import com.zmkg.coaloperation.utils.DictUtils +import com.zmkg.coaloperation.utils.SpTool +import com.zmkg.coaloperation.utils.toJsonString +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.launch +import kotlin.collections.isNotEmpty + +/** + * 关于我们 + */ +class DataSyncActivity : + BaseVMBActivity(R.layout.activity_data_sync) { + + private val TAG = "DataSyncActivity" + + private val workingFaceViewModel: TunnelWorkingFaceViewModel by lazy { + ViewModelProvider(this)[TunnelWorkingFaceViewModel::class.java] + } + + private val workingFaceRecordViewModel: TunnelWorkingFaceRecordViewModel by lazy { + ViewModelProvider(this)[TunnelWorkingFaceRecordViewModel::class.java] + } + + private val roofLithologyViewModel: TunnelRoofLithologyViewModel by lazy { + ViewModelProvider(this)[TunnelRoofLithologyViewModel::class.java] + } + private val list = mutableListOf( + DataSyncItem("涌水量观测"), + DataSyncItem("导线测量"), + DataSyncItem("瓦斯巡检"), + DataSyncItem("防灭火检查"), + DataSyncItem("通风巡检"), + DataSyncItem("地质编录"), + DataSyncItem("水文地质编录"), + DataSyncItem("隐蔽致灾"), + DataSyncItem("地物查询"), + DataSyncItem("回采"), + DataSyncItem(funcName = "掘进", onDataPull = { tunnelDataPull() }, onDataPush = { tunnelDataPush() }) + ) + private val adapter by lazy { + DataSyncAdapter(list).apply { + setOnItemClickListener { _, _, position -> + + } + } + } + + override fun initView(savedInstanceState: Bundle?) { + mBinding.toolbarLay.title = "数据同步" + mBinding.rvFuncList.let { + it.layoutManager = LinearLayoutManager(this) + it.adapter = adapter + } + } + + override fun initData() { + } + + override fun bindEvent() { + } + + override fun processClick(v: View?) { + } + + override fun createObserve() { + super.createObserve() + lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.CREATED) { + launch { + getFaceAndRecordList() + } + launch { + getTunnelAllDict() + } + launch { + dataPushSuccess() + } + } + } + } + + private suspend fun dataPushSuccess() { + mViewModel.tunnelDataPush.collectLatest { + showToast("数据推送成功") + // TODO: 清除本地所有数据,并从接口拉取最新数据 + } + } + + private suspend fun getFaceAndRecordList() { + mViewModel.tunnelFaceAndRecordList.collectLatest { dataList -> + Log.d(TAG, "getFaceAndRecordList: ${dataList.toJsonString()}") + dataList?.let { list -> + //保存工作面数据 + list.forEach { it.userId = SpTool.getString(SpTool.USER_ID) } + workingFaceViewModel.insertList(list) {} + list.forEach { faceEntity -> + faceEntity.records?.let { recordList -> + val lastRecordId = faceEntity.latestRecord?.recordId + val record = recordList.firstOrNull { it.recordId == lastRecordId } + record?.latestRecordState = "1" + + //保存工作面记录数据 + workingFaceRecordViewModel.insertList(recordList) + recordList.forEach { recordEntity -> + recordEntity.mineWorkingLithologyList?.let { lithologyList -> + //保存工作面记录顶板岩性数据 + roofLithologyViewModel.insertList(lithologyList) + } + } + } + } + } + } + } + + private suspend fun getTunnelAllDict() { + mViewModel.tunnelAllDict.collectLatest { + val dictJson = it.toJsonString() + Log.d(TAG, "getTunnelAllDict: $dictJson") + SpTool.put(SpTool.DICT_JSON, dictJson) + } + } + + /** + * 检查数据状态 + * @param block 入参true-有待提交数据,false-无待提交数据 + */ + private fun checkDataState(block: (Boolean) -> Unit) { + workingFaceViewModel.getEntityListByState("1") { faceList -> + if (faceList != null && faceList.isNotEmpty()) { + block(true) + return@getEntityListByState + } + workingFaceRecordViewModel.getEntityListByState("1") { recordList -> + if (recordList != null && recordList.isNotEmpty()) { + block(true) + return@getEntityListByState + } + roofLithologyViewModel.getEntityListByState("1") { lithologyList -> + if (lithologyList != null && lithologyList.isNotEmpty()) { + block(true) + return@getEntityListByState + } + block(false) + } + } + } + } + + private fun tunnelDataPull() { + checkDataState { state -> + if (state) { + showToast("本地存在待提交的数据") + return@checkDataState + } + showLoading("加载中") + workingFaceViewModel.deleteAll { + workingFaceRecordViewModel.deleteAll { + roofLithologyViewModel.deleteAll { + mViewModel.getTunnelFaceAndRecordList() + mViewModel.getTunnelAllDict() + mBinding.root.postDelayed({ + hideLoading() + }, 3000) + } + } + } + } + } + + private fun tunnelDataPush() { + showLoading() + val submitData = TunnelSubmitData() + workingFaceViewModel.getEntityListByState("1") { faceList -> + submitData.faceList = faceList + workingFaceRecordViewModel.getEntityListByState("1") { recordList -> + submitData.recordList = recordList + roofLithologyViewModel.getEntityListByState("1") { lithologyList -> + hideLoading() + submitData.lithologyList = lithologyList + if (submitData.faceList.isNullOrEmpty() || + submitData.recordList.isNullOrEmpty() || + submitData.lithologyList.isNullOrEmpty() + ) { + showToast("暂无推送数据") + return@getEntityListByState + } + submitData.recordList?.forEach { entity -> + entity.teamShift = DictUtils.getTeamShiftId(entity.teamShift) + } + Log.d(TAG, "dataPush: ${submitData.toJsonString()}") + mViewModel.tunnelDataPush(submitData) + } + } + } + } + + +} \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/user/fragment/UserFragment.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/user/fragment/UserFragment.kt index 37beab8..e74a44b 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/user/fragment/UserFragment.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/ui/user/fragment/UserFragment.kt @@ -24,7 +24,9 @@ import com.zmkg.coaloperation.superfuntion.startLoginActivity import com.zmkg.coaloperation.ui.tunneling.viewmodel.TunnelingViewModel import com.zmkg.coaloperation.ui.user.activity.AboutUsActivity import com.zmkg.coaloperation.ui.user.activity.CacheManageActivity +import com.zmkg.coaloperation.ui.user.activity.DataSyncActivity import com.zmkg.coaloperation.ui.user.activity.NetworkConfigActivity +import com.zmkg.coaloperation.utils.DictUtils import com.zmkg.coaloperation.utils.SpTool import com.zmkg.coaloperation.utils.toJsonString import com.zmkg.coaloperation.view.CommonDialog @@ -38,18 +40,6 @@ class UserFragment : const val TAG = "UserFragment" } - private val workingFaceViewModel: TunnelWorkingFaceViewModel by lazy { - ViewModelProvider(this)[TunnelWorkingFaceViewModel::class.java] - } - - private val workingFaceRecordViewModel: TunnelWorkingFaceRecordViewModel by lazy { - ViewModelProvider(this)[TunnelWorkingFaceRecordViewModel::class.java] - } - - private val roofLithologyViewModel: TunnelRoofLithologyViewModel by lazy { - ViewModelProvider(this)[TunnelRoofLithologyViewModel::class.java] - } - private val updateDialog: CommonDialog by lazy { CommonDialog(requireContext(), R.layout.dialog_common_view) { @@ -92,100 +82,6 @@ class UserFragment : override fun createObserve() { super.createObserve() - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.CREATED) { - launch { - getFaceAndRecordList() - } - launch { - getTunnelAllDict() - } - } - } - } - - private suspend fun getFaceAndRecordList() { - mViewModel.tunnelFaceAndRecordList.collectLatest { dataList -> - Log.d(TAG, "getFaceAndRecordList: ${dataList.toJsonString()}") - dataList?.let { list -> - //保存工作面数据 - list.forEach { it.userId = SpTool.getString(SpTool.USER_ID) } - workingFaceViewModel.insertList(list) {} - list.forEach { faceEntity -> - faceEntity.records?.let { recordList -> - val lastRecordId = faceEntity.latestRecord?.recordId - val record = recordList.firstOrNull { it.recordId == lastRecordId } - record?.latestRecordState = "1" - - //保存工作面记录数据 - workingFaceRecordViewModel.insertList(recordList) - recordList.forEach { recordEntity -> - recordEntity.mineWorkingLithologyList?.let { lithologyList -> - //保存工作面记录顶板岩性数据 - roofLithologyViewModel.insertList(lithologyList) - } - } - } - } - } - } - } - - private suspend fun getTunnelAllDict() { - mViewModel.tunnelAllDict.collectLatest { - val dictJson = it.toJsonString() - Log.d(TAG, "getTunnelAllDict: $dictJson") - SpTool.put(SpTool.DICT_JSON, dictJson) - } - } - - /** - * 检查数据状态 - * @param block 入参true-有待提交数据,false-无待提交数据 - */ - private fun checkDataState(block: (Boolean) -> Unit) { - workingFaceViewModel.getEntityListByState("1") { faceList -> - if (faceList != null && faceList.isNotEmpty()) { - block(true) - return@getEntityListByState - } - workingFaceRecordViewModel.getEntityListByState("1") { recordList -> - if (recordList != null && recordList.isNotEmpty()) { - block(true) - return@getEntityListByState - } - roofLithologyViewModel.getEntityListByState("1") { lithologyList -> - if (lithologyList != null && lithologyList.isNotEmpty()) { - block(true) - return@getEntityListByState - } - block(false) - } - } - } - } - - private fun dataPush() { - showLoading() - val submitData = TunnelSubmitData() - workingFaceViewModel.getEntityListByState("1") { faceList -> - submitData.faceList = faceList - workingFaceRecordViewModel.getEntityListByState("1") { recordList -> - submitData.recordList = recordList - roofLithologyViewModel.getEntityListByState("1") { lithologyList -> - hideLoading() - submitData.lithologyList = lithologyList - if (submitData.faceList.isNullOrEmpty() || - submitData.recordList.isNullOrEmpty() || - submitData.lithologyList.isNullOrEmpty() - ) { - showToast("暂无推送数据") - return@getEntityListByState - } - Log.d(TAG, "dataPush: ${submitData.toJsonString()}") - } - } - } } private fun initMenuList() { @@ -202,18 +98,12 @@ class UserFragment : ) userMenuList.add( UserMenuBean( - menuName = "数据拉取", - iconResId = R.drawable.ic_data_pull, + menuName = "数据同步", + iconResId = R.drawable.ic_data_sync, iconBgResId = R.drawable.bg_icon_data_pull, - click = { dataPull() } - ) - ) - userMenuList.add( - UserMenuBean( - menuName = "数据推送", - iconResId = R.drawable.ic_data_push, - iconBgResId = R.drawable.bg_icon_data_push, - click = { dataPush() } + click = { + toActivity(DataSyncActivity::class.java) + } ) ) userMenuList.add( @@ -258,25 +148,4 @@ class UserFragment : ) } - private fun dataPull() { - checkDataState { state -> - if (state) { - showToast("本地存在待提交的数据") - return@checkDataState - } - showLoading("加载中") - workingFaceViewModel.deleteAll { - workingFaceRecordViewModel.deleteAll { - roofLithologyViewModel.deleteAll { - mViewModel.getTunnelFaceAndRecordList() - mViewModel.getTunnelAllDict() - mBinding.root.postDelayed({ - hideLoading() - }, 3000) - } - } - } - } - } - } diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/DictUtils.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/DictUtils.kt index 9c23c25..22704e5 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/DictUtils.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/DictUtils.kt @@ -46,7 +46,7 @@ object DictUtils { areaMap.put(it.key, tempList) } val seamId: LazilyParsedNumber = it.value?.get("seamId") as LazilyParsedNumber - //Log.d("DictUtils", "initData: idType= ${seamId?.javaClass?.name}, id=${seamId.toInt()},name=${it.value?.get("areaName")}") + //Log.d("DictUtils", "initData: idType= ${seamId?.javaClass?.name}, id=${seamId.toInt(aa)},name=${it.value?.get("areaName")}") tempList?.add(WorkOption(id = ""+ seamId.toInt(), ""+ it.value?.get("areaName"))) } } @@ -55,5 +55,8 @@ object DictUtils { if (shift == null) return "" return workShiftList.firstOrNull { it.id == shift }?.name ?: shift } - + fun getTeamShiftId(shift: String?): String { + if (shift == null) return "" + return workShiftList.firstOrNull { it.name == shift }?.id ?: shift + } } \ No newline at end of file diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/ExcelExportUtils.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/ExcelExportUtils.kt index 2ac1576..a0807e2 100644 --- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/ExcelExportUtils.kt +++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/ExcelExportUtils.kt @@ -26,7 +26,8 @@ object ExcelExportUtils { subTitleList.forEachIndexed { index, subTitle -> subHeader.createCell(list.size - 1 + index).setCellValue(subTitle) } - sheet.addMergedRegion(CellRangeAddress(0, 0, 9, 11)) +// sheet.addMergedRegion(CellRangeAddress(0, 0, 9, 11)) + sheet.addMergedRegion(CellRangeAddress(0, 0, 10, 12)) for (i in 0 until list.size - 1) { sheet.addMergedRegion(CellRangeAddress(0, 1, i, i)) } diff --git a/coalMiningApp/app/src/main/res/drawable-xxhdpi/ic_data_sync.png b/coalMiningApp/app/src/main/res/drawable-xxhdpi/ic_data_sync.png new file mode 100644 index 0000000000000000000000000000000000000000..d076ce557495e03d3eb5f7ecaf71b478a384061b GIT binary patch literal 6939 zcmZu$c{G&q*MDX)wyDTABSInjHpmjjE?daHj(w->Da=roEKLYmG8NhPq6j0UEF-dK zFJy^i-@Q-2^Pcmb-#PDJbLYE!?&m(=``qty?@cf=)ILMUP6q(Mnd>?lCIA2dMF>EH z0Do))iroN!0l2QAY8nRlokv^EXBN>hU7&`QF8D~pC@qOh&?@DAh-5Igx^K)X=#|cQ zmQeuy_&#T>OD;r1m1JZaucg8KfTT&I2q#j2XclgfSUzLMXqxDUEPYv>f1D2}cLS%J zc6XMVzwX-~w}u{sEjlZ!8VF;}BHTw; z1H2sfnx4tRHm0E5tVj$|0LF^ffcZC2@Th7ao~j+m+l8m%?kA70zD8$lO+h6(@9SZR z+~6vBj9(^&%nM4_`E9ca@PAmSpr%||*g$gwpzq$^?Zz#M5CIaXCf2eEOGr!LRo$#B zhKK@pe1!Ui4!Gg^?$VRFFGua)?g263BuAA@Qt zIUpBO32%tG+je<|cKzC(8A8-Muf8N@*^6tnOm=WMTdClK`o(roB~sOHS|3`42!UTA z_!Ejyn{_j?>zcQi!`McVJ~YGBEBI+xnM+^ouxHM4apg{bic_46R?8X2{`21On6(@Cja^p!HIX-_aW2`j4!sFf4Vob zY6e!LFh&d}Up#SiFW_I=Yk9u$9iZ2KUlKeR|MBCfKk*S;-ang8s^Pon6nC7b=lr>uCy zl3TQRVUr%A^7YGV17~cmEuFUBtBOr02tqBS2Do2sRxOqmF822Rq|!Sc$0Sh}3*1^( z_>?UKG>J}!V+hW4=Ulx5y{XA)fCP7CCFO0m@ub;9DI7$g%QodWi>xp|@_1Uij^o}L zQ%3hp7ml+&8{MU#vzmUI!z$`e3|P+JjMNeE)SEGB)e#xfXK#uN_k_^6ifBjh{~j|{ zWF0Ma#P0I;ogv<%1#yDy;1FSdw*9BHs02(>~m&%;O_r& zS*PMBwLIHsUjI;1=JlvOp3ve~QQAEBy#`=L$}`~38QmLg>d$Oi8)+Ksc~@x*}p{fCkHUWi-6w}zBzQ8E+0O_NWSCZWVM zCH{=Hxu3ho^7~#j*~;gP%B?xnq8jUgxp319{FkL=K{14%by>mA(wr9`P;ool zN=M^0h7l?taHFPFMlKa|*Ey1B3>SuK!gx2t778{Z}C3PF7( zr8+*`_Juk$K;E1=-W>G?q5Iz~#mwBMP)zO+@YS`!Atk zDf2|U72w7bd$|K@?ho_1Em3X2Iw1GHq>rAS{M+RqUQ$s!!hR*I_q-B484%}}}RV!E+JqsU(N+c71Gv7Y; zEPIb)gRQtrrgWE`pRxqZ`M+w%KiQA}Yxc+4*40P^5UyM5tdZi9Yzasz(j0;kAGeh} z_xrOtaGLZep1%2vQTgQ%$yRSLCRE-V`@_suBks%C6m#de4$zl;vo!c3^O8HM0csR% zD*{M#EuEG!kHc)(kv^(D7JBVN{r1*C#^%d`s2lO~wgu}B(XD25DJh%%(CXahzL{(% z`3x{tAles#hx;hv^b!eEv{=sB8bHK-`)kI3W>e(b4DEqE2@iuX%L}95oN%imJDzux zW_&lG0GIN4tlEo=d%r~iCMJKwppEg>i=SF5aaI67f2s=Ipv=4QKEI8c2EY;sCl$J%7{LB&YvSheB+=Bkxh~ayc2=(iuXV2*H+_ z_ccWU_{R1O?v{N2k^e23J-INhy_+};%n2uU8bY1erV?{S+8w{pyK;xKLh}j$UzNe} zyv-_BLiR$MfE+Z9BQ{Vg@RuWnk0igHO+<7J`#PO^!0~`Dt@0VqbJ3e^&~-Wx&K1?i z@y+&IZn#k((#Psmo7n2OH-wv^3QCRl=Giu1cdTZueo9b4^-X-^Xfg{t>#^2cnv#<3 zRhJ0`{wh#L4rL;UyP99ZuYjxg(S5lC6HWR1Z&6zttEyFSAk~6eo6$8Q;O_Z(E=UgA zBMm}PrF{D1;TNr2DeBSne2ND67)fK2zUOXKN$ulC(nER}dim+nNLw^X*FSe&dJhoy z#$$5UXXHgKyhyN}U z_2p@H-3aE9%2|cOdQut`aBPy=e!}qiW`~dX%mi)VLXQ>wdl(1p4#eN-*ddx4`&+i> z)cMkF+rYh7K8C*nN;-A(n1J|i#-~y`qwtSD)9vpnu7~V*|LE#CsH$=EUN>MUTaC|e zKN>k)Qc3!Fn=;>>HNH`DQ!H2u;MSgAied>V$YM4gcMfY{OFNwwh+`j*>e8~Szenrp zvvXsws3BDS*y-@6&)^uhCUXe$<`JUrsmj^J3)1dJ+$I*uo1w1oT^@Duw?t_cjE^s zVzW%dA*0mZFLj~a^0ibEHfwZ+PZF#Aur3#lG(i|m)@IkMdeE)&Nx|b~neU32<;U3I? zi@s3wEW+=ydystC>eQeZAorqMUc7iRZ7rypSTJZ8ci{r#@shAs0@*h?csWJL6_?Q= zb}2M6Dr5UeWvLy2T4lrgWn&qeS8qry2P|}O7ETu}28rKNtlrKisC<49s9IrO29R(? zk_UNMx*gTj_4l%zg{M~*9o(UzCf^Uf;-49lI7%sL-{JVVk^aTe?^;t8vFG^qgI*0B z6r&(HMf z`8CaHNjZ1UE?%k4?J|}r*A<158PbpZNlB9_{A0>Pnpe;xQBq-?$Rc{D@x9^1Rx&y^N46i zkNQe>277Vky5u&tk~FYijTYO9N*%LEj>q$(>+A#@Ar|1ke4|PgU6-e767f1I27Y^- zcwACdbzd#SszmJP5XGFeR%**4?6*@{8i8E@#HOo;JQ-_Ir4M8k95nvH&)R9$%qye{ zj^z2o-l4zI2bf0KE9{t>59`v9RL;Cz!a6}00?g}M)qyRPJ zovs|b3Bk-_;jnb^y3;k+18w-0O%hk8XZvADG@&b?;yeWBwEV^4sZenAk1^`M?PC^? z9CB_KT{6Yh|5g(r>qpkx6dG;%fQyIeHu zc_2DiB4tT6mAO!VH&roz=d5V|Lva={Rr@DR89rsHxx%7=eg~CYt$h5{x|xa(-9}o3 za?jac_)?#x%c~qbjc>8PXCoP<~QR!TcHrt{%dsoAF|Go3^#93 zn-GV335SRXpf7MdQ?ww^}vS~=J9 z9QrMfny9DND~0hWOPza95+B$Ki2z&X%Zi>mf9fdi>!IpL%~%IY#Ip^*;iY=p?;TD* z>mf?Z`q)Q#jrafNLV|AsTRFvh%tD&i<1a?&M^G?y)T%=zk5$Mx%{N(76gO-2| zVT=T>B+_ALcR7X*S6L}|G@hU)j}`%Py%vi~9;gJnkYvFWxzv5eU~XYtJ?9K7pg;tS zMtksR8duW7K{5^5#yjK#B?p2rN+M{%XT%>SQ|>+m|6yR;bif};^Us7C!_m)fh#u@Q z(nlkuMXDgD?<=tIKzgmwjf~Wn?Cbl+&vSfVkRyE*0O&scs|C>E*A6axYgx&LVERO0 zs`BhYK;zVVtI&ymjCqjod5>ZMUZVG<*lq-wMbJgjboCoSXiPG7CvIPMHA*e5TWjs)lH}L)T=VnkF!w2k| z?HNWqi5{t@wbJOu?S`;k7Y(hn2CU;#nxtVe7^6gBPPw9ZO#Z4rqKE8(2>4a{70_Z@ zs&FGcLJkHXh)w;u^02z`P~p}7to}7@zM@1*6e-uSTm`XM(uJwlZ2SOa@WeIE z3?J|gm;B2mE5(hLu5gExX#&q4<;fgg%^=W!9{wUk^a)PH8g00@n>;@@?MMQR z-9Y1&?UJ8LAIfGEK3`uZ$zzWjHL%yq2Tp9YPaq9j)q@1H{^lOeq6sKgB0u^S8$r|n z@l5Q8?B**kMuD`WfZ5~&i>uZ?rF;&{#)zXJuL9!EK{uz zqd?9P`$_Bpn`CsrAe7;+esSBIP-fpcD5F5$5zS~zQj}Qym8k^<(3t|JIb#h4&`l~+KiHZZaHa? zf`~BV3P*5@{TWtiN0PDbn)o@DjK2{`X)n=G*4!LTIMyF#y)!Tw8c*m=06L?jk8%+v zb>RD!GHCgx)fv5*L_<8%mij)R`jGW#=h_|;zl%B$T3=uud-L@&+QSa6bJFT~-#wan zbwT86%)N80`10)wwcj3~vwE@Km#`aL9av>r>$(g@v2-wf&Une{xSN~^>Jhm1?2JkM z0vvzyO!Ej$bGGpOOu<5v2F{boFztwX;Hx{fYX_T=*2clC1T)eeS;==q#7dBa5#B72 z)Kl&QW$FUI2Z1$7z>)KE`S@uKa*!X&drH_kxzk7MeTM;@ss?U#-BvWDwi_^run9++ zih=VdeR3 zSuGsBGxzSxoLV;vN|!QQA@~5JRN(i}qZyc6&KWV?4lH{Pxtoe$*Hgico1s~HfU|68somqxqrn+x9q=y4Dp8}xlL z17U#{e?kkmLrj*vtuGaPowV<9ITgRf*T?rd(^#3Heqf-exwT_>?LAdIjCSggWed~d z;tj_OxS4E`5rjG0U8|>n%cR9d3$M3up_+DU=@2V&nnE##7hu{GhV~e(6Rw>oeLdbq#eHG&c6vCMo+Ae4 zM&gBa@y(ldy1A{{CjunXaH6^>?AcQENETrcEhpAp(gmh&fV3{+NT$p5&)3)$S&R`a ztjO)1>2>Fr?2~>i0a{Qulr682?1lp!Oyz`$7<=p%W6ZC zw0j&kS7!a*d=-k1K2D!)rv7(fefdg0JJ(CUU&dBu)dYB0%DoV74*F%@EDg?~C}ici zo?R`A5;yP5P}1`s#7dlkad#|w5d)KXbgU6D{~`O(vj3hllyvd7erUoQns{V8vd0D6 zS;g`6UEwR4WIFu4YMOtA;T|06@7xFtI~x$}#mGP(i?(dT3U^jb*)RgZxd~)OYuO&G z1FG0DH?h{X`1#UbgL-~|ojqlxQqIO}OaewLRV^-m%PS|cK?n%ofVLRyyWKhmK2~Pb z9>mb^(}e%AeOv`SprMcb7-h6ZBL(<~KKl6Al}AXT--Zv@5@t7C%Z5m^Ajd zn{j$^v$2BCV_cj8mFvu}vo0mzM#M|XmeZK=?;A7bLUKh-`3TagR@H1T&)5nL9 zz9Mt=YQHU2>)N-O*yKVssDyl&&ar&o115#beUovmD(@(TXpe+{d9o(w-{8Z_{08Y1 zwaFb_fL}=i{tOy^f`3+9HlDJ?Uyzn#mrdYD{mZ%U<}6$aD@`ygTYH%amADQqP@xX` zX-wM|XIZ7KYYbWzj6}XJkbm{=)kl@I{gIXN$!%+ZAEwS=5B-IwST-=qowud6hl2hW z3!(5(_$VdG(x34Q*~6Kh4NQkxJix$HUb$UD9a*g0;oPG4$4vn)Dp?FMju2NIB-S@! zbt910!*KF*W3h+=BouWn(7_)$*ek7KJ(N-V|!*PPeT@Q9pu2yxpYlng(oC zP)6mYaWI^R5O7}p!B0F{F&BB?`al= zbJfAZGo>vS7eS(}Ma=ud{(l(zOOkRjsdw^T1H4SGie6w;$3akPNftSvBUS?i46cWk z@dW0O+W&|i|IhUQjTKR_LQ^(?Ny6)6X;>YIll6ePN(xr;uVumaZ3k>wfQ``vtQTWLs~e6TELnTHgh_&cU~h)#G`L!a{sL}x(ReEX69h}vI+DvfV@MaU z`66}6wt#{y{YNnQ{jn?zWQB+4pmm;rV5N^6rriJ#pNP}TA*6%tn*xrA!)Mn(^tmED zt-zpH8q>q7zA1V1QkoI#mGx;Pli~@k}TvApU*N!hpMBFKq-x&l`Xvz;#VS KjY>6K^#1_yTbTI( literal 0 HcmV?d00001 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 index 5369250..f55cfea 100644 --- a/coalMiningApp/app/src/main/res/layout/activity_add_mining_face.xml +++ b/coalMiningApp/app/src/main/res/layout/activity_add_mining_face.xml @@ -11,7 +11,7 @@ + tools:itemCount="6" + tools:listitem="@layout/list_item_add_mining_face" /> @@ -382,12 +383,61 @@ android:textSize="16sp" /> + + + + + + + + + diff --git a/coalMiningApp/app/src/main/res/layout/activity_cache_manage.xml b/coalMiningApp/app/src/main/res/layout/activity_cache_manage.xml index 8f5b8e7..64935a0 100644 --- a/coalMiningApp/app/src/main/res/layout/activity_cache_manage.xml +++ b/coalMiningApp/app/src/main/res/layout/activity_cache_manage.xml @@ -21,7 +21,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/toolbar_lay" - android:background="@color/black" + android:background="@color/black_bg" android:orientation="vertical"> + + + + + + + + + + + + + + \ No newline at end of file diff --git a/coalMiningApp/app/src/main/res/layout/activity_geological.xml b/coalMiningApp/app/src/main/res/layout/activity_geological.xml index 0764d3c..e14e074 100644 --- a/coalMiningApp/app/src/main/res/layout/activity_geological.xml +++ b/coalMiningApp/app/src/main/res/layout/activity_geological.xml @@ -10,7 +10,7 @@ + android:background="@color/black_bg"> diff --git a/coalMiningApp/app/src/main/res/layout/activity_mining_face_record.xml b/coalMiningApp/app/src/main/res/layout/activity_mining_face_record.xml new file mode 100644 index 0000000..3807cc7 --- /dev/null +++ b/coalMiningApp/app/src/main/res/layout/activity_mining_face_record.xml @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/coalMiningApp/app/src/main/res/layout/activity_network_config.xml b/coalMiningApp/app/src/main/res/layout/activity_network_config.xml index e829a8d..3e4bbab 100644 --- a/coalMiningApp/app/src/main/res/layout/activity_network_config.xml +++ b/coalMiningApp/app/src/main/res/layout/activity_network_config.xml @@ -21,7 +21,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/toolbar_lay" - android:background="@color/black" + android:background="@color/black_bg" android:orientation="vertical"> + android:background="@color/black_bg"> + tools:background="@color/black_bg"> - + + + + + + + + + + + + + + \ No newline at end of file diff --git a/coalMiningApp/app/src/main/res/layout/list_item_mining_record_base_data.xml b/coalMiningApp/app/src/main/res/layout/list_item_mining_record_base_data.xml new file mode 100644 index 0000000..a7e151d --- /dev/null +++ b/coalMiningApp/app/src/main/res/layout/list_item_mining_record_base_data.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/coalMiningApp/app/src/main/res/layout/list_item_mining_record_coal_thickness.xml b/coalMiningApp/app/src/main/res/layout/list_item_mining_record_coal_thickness.xml new file mode 100644 index 0000000..e5c9b54 --- /dev/null +++ b/coalMiningApp/app/src/main/res/layout/list_item_mining_record_coal_thickness.xml @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file