From be579ea7e417dc75d5a635838953ce9d61aff09d Mon Sep 17 00:00:00 2001
From: lvmeng <848755140@qq.com>
Date: Mon, 15 Sep 2025 19:15:02 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=95=B0=E6=8D=AE=E6=8E=A8?=
=?UTF-8?q?=E9=80=81=E3=80=81=E5=B7=A5=E4=BD=9C=E9=9D=A2=E5=88=97=E8=A1=A8?=
=?UTF-8?q?=E3=80=81=E8=AE=B0=E5=BD=95=E5=88=97=E8=A1=A8=E6=94=B9=E4=B8=BA?=
=?UTF-8?q?=E5=80=92=E5=BA=8F=EF=BC=8C=E6=96=B0=E6=95=B0=E6=8D=AE=E5=B1=95?=
=?UTF-8?q?=E7=A4=BA=E5=9C=A8=E6=9C=80=E4=B8=8A=E9=9D=A2=E3=80=81=E5=A2=9E?=
=?UTF-8?q?=E5=8A=A0=E5=BE=85=E6=8F=90=E4=BA=A4=E6=95=B0=E6=8D=AE=E6=A0=87?=
=?UTF-8?q?=E8=AF=86=E3=80=81=E5=85=B6=E5=AE=83=E9=97=AE=E9=A2=98=E4=BC=98?=
=?UTF-8?q?=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
coalMiningApp/app/build.gradle | 5 +
.../app/src/main/AndroidManifest.xml | 17 +-
.../adapter/TunnelWorkingFaceAdapter.kt | 3 +
.../adapter/TunnelWorkingFaceRecordAdapter.kt | 7 +
.../coaloperation/bean/TunnelWorkingItem.kt | 8 +
.../zmkg/coaloperation/bean/TunnelingBean.kt | 244 +++++++++---------
.../zmkg/coaloperation/data/api/HomeApi.kt | 15 +-
.../db/dao/TunnelWorkingFaceDao.kt | 4 +-
.../db/dao/TunnelWorkingFaceRecordDao.kt | 6 +-
.../activity/AddWorkingFaceRecordActivity.kt | 159 ++++++++----
.../tunneling/activity/TunnelingActivity.kt | 9 +-
.../activity/WorkingFaceRecordActivity.kt | 17 +-
.../activity/WorkingFaceStatisticsActivity.kt | 9 +-
.../ui/user/fragment/UserFragment.kt | 77 +++++-
.../zmkg/coaloperation/utils/DateTimeUtil.kt | 1 +
.../coaloperation/utils/ExcelExportUtils.kt | 71 +++++
.../com/zmkg/coaloperation/utils/FileUtils.kt | 47 ++++
.../zmkg/coaloperation/view/CustomInfoView.kt | 15 +-
.../main/res/drawable-xxhdpi/ic_data_push.png | Bin 0 -> 9658 bytes
.../main/res/drawable/bg_icon_about_us.xml | 12 +
.../res/drawable/bg_icon_cache_manage.xml | 12 +
.../res/drawable/bg_icon_check_update.xml | 12 +
.../main/res/drawable/bg_icon_data_pull.xml | 12 +
.../main/res/drawable/bg_icon_data_push.xml | 12 +
.../res/drawable/bg_icon_network_config.xml | 12 +
.../main/res/drawable/bg_icon_system_exit.xml | 12 +
.../app/src/main/res/drawable/ic_avatar.png | Bin 0 -> 14846 bytes
.../src/main/res/drawable/ic_flag_edit.xml | 7 +
.../main/res/layout/custom_my_info_view.xml | 63 +++--
.../app/src/main/res/layout/fragment_home.xml | 4 +
.../app/src/main/res/layout/fragment_user.xml | 30 ++-
.../res/layout/item_home_menu_left_right.xml | 32 +--
.../res/layout/item_home_menu_top_bottom.xml | 15 +-
.../src/main/res/layout/list_item_rock.xml | 6 +-
.../layout/list_item_tunnel_working_face.xml | 14 +-
.../list_item_tunnel_working_face_record.xml | 18 +-
.../app/src/main/res/xml/file_paths.xml | 4 +
37 files changed, 694 insertions(+), 297 deletions(-)
create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/ExcelExportUtils.kt
create mode 100644 coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/FileUtils.kt
create mode 100644 coalMiningApp/app/src/main/res/drawable-xxhdpi/ic_data_push.png
create mode 100644 coalMiningApp/app/src/main/res/drawable/bg_icon_about_us.xml
create mode 100644 coalMiningApp/app/src/main/res/drawable/bg_icon_cache_manage.xml
create mode 100644 coalMiningApp/app/src/main/res/drawable/bg_icon_check_update.xml
create mode 100644 coalMiningApp/app/src/main/res/drawable/bg_icon_data_pull.xml
create mode 100644 coalMiningApp/app/src/main/res/drawable/bg_icon_data_push.xml
create mode 100644 coalMiningApp/app/src/main/res/drawable/bg_icon_network_config.xml
create mode 100644 coalMiningApp/app/src/main/res/drawable/bg_icon_system_exit.xml
create mode 100644 coalMiningApp/app/src/main/res/drawable/ic_avatar.png
create mode 100644 coalMiningApp/app/src/main/res/drawable/ic_flag_edit.xml
create mode 100644 coalMiningApp/app/src/main/res/xml/file_paths.xml
diff --git a/coalMiningApp/app/build.gradle b/coalMiningApp/app/build.gradle
index fb10295..9acea61 100644
--- a/coalMiningApp/app/build.gradle
+++ b/coalMiningApp/app/build.gradle
@@ -26,6 +26,8 @@ android {
arg("room.schemaLocation", "$projectDir/schemas")
}
}
+ // 设置输出APK文件名格式
+ setProperty("archivesBaseName", "煤矿数采终端v${versionName}")
}
signingConfigs{
@@ -105,4 +107,7 @@ dependencies {
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1"
implementation 'com.google.code.gson:gson:2.10.1'
+ implementation("org.apache.poi:poi:5.2.3")
+ implementation("org.apache.poi:poi-ooxml:5.2.3")
+
}
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/AndroidManifest.xml b/coalMiningApp/app/src/main/AndroidManifest.xml
index 371d9d2..fe52274 100644
--- a/coalMiningApp/app/src/main/AndroidManifest.xml
+++ b/coalMiningApp/app/src/main/AndroidManifest.xml
@@ -3,7 +3,11 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.zmkg.coaloperation">
-
+
+
+
+
+
+
+
+
+
diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingFaceAdapter.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingFaceAdapter.kt
index 53bb06e..d0f16f3 100644
--- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingFaceAdapter.kt
+++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingFaceAdapter.kt
@@ -49,6 +49,9 @@ class TunnelWorkingFaceAdapter(var list: MutableList) :
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
)
diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingFaceRecordAdapter.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingFaceRecordAdapter.kt
index cd751cb..50ba583 100644
--- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingFaceRecordAdapter.kt
+++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/adapter/TunnelWorkingFaceRecordAdapter.kt
@@ -10,6 +10,8 @@ import com.zmkg.coaloperation.R
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceRecordEntity
import androidx.core.graphics.toColorInt
import com.zmkg.coaloperation.databinding.ListItemTunnelWorkingFaceRecordBinding
+import com.zmkg.coaloperation.utils.gone
+import com.zmkg.coaloperation.utils.visible
class TunnelWorkingFaceRecordAdapter(var list: MutableList) :
BaseQuickAdapter(
@@ -50,6 +52,11 @@ class TunnelWorkingFaceRecordAdapter(var list: MutableList?=null,
+ var recordList: MutableList?=null,
+ var lithologyList: MutableList?=null
+)
diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/bean/TunnelingBean.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/bean/TunnelingBean.kt
index 04d33c8..990d01f 100644
--- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/bean/TunnelingBean.kt
+++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/bean/TunnelingBean.kt
@@ -33,60 +33,60 @@ import java.io.Serializable
// val seamBumpPressure: String?,
// val surfaceSupportForm: String?
//)
-
-class TunnelingHomeItemBean {
- var createBy: String? = null
- var createTime: String? = null
- var updateBy: String? = null
- var updateTime: String? = null
- var remark: String? = null
- var recordId: String? = null
- var surfaceId: String? = null
- var workingDate: String? = null
- var teamShift: String? = null
- 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 recordPerson: String? = null
- var mineWorkingLith: String? = null
-}
-
-/**
- * 新增工作面 给接口的数据
- */
-data class TunnelingFaceAddBean(
-
- val surfaceName: String? = null,
- val totalFootage: String? = null,
-
- val areaId: Int? = null,
- val areaName: String? = null,
- val createBy: String? = null,
- val createTime: String? = null,
- val geologicalType: String? = null,
- val hydrogeologicalType: String? = null,
- val params: Params? = null,
- val planEndDate: String? = null,
- val planStartDate: String? = null,
- val remark: String? = null,
- val seamBumpPressure: String? = null,
- val seamGas: String? = null,
- val seamId: Int? = null,
- val seamIgnition: String? = null,
- val seamName: String? = null,
- val surfaceAzimuth: String? = null,
- val surfaceHeight: String? = null,
- val surfaceId: Int? = null,
- val surfaceSupportForm: String? = null,
- val surfaceWidth: String? = null,
- val tunnelNature: String? = null,
- val updateBy: String? = null,
- val updateTime: String? = null
-)
+//
+//class TunnelingHomeItemBean {
+// var createBy: String? = null
+// var createTime: String? = null
+// var updateBy: String? = null
+// var updateTime: String? = null
+// var remark: String? = null
+// var recordId: String? = null
+// var surfaceId: String? = null
+// var workingDate: String? = null
+// var teamShift: String? = null
+// 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 recordPerson: String? = null
+// var mineWorkingLith: String? = null
+//}
+//
+///**
+// * 新增工作面 给接口的数据
+// */
+//data class TunnelingFaceAddBean(
+//
+// val surfaceName: String? = null,
+// val totalFootage: String? = null,
+//
+// val areaId: Int? = null,
+// val areaName: String? = null,
+// val createBy: String? = null,
+// val createTime: String? = null,
+// val geologicalType: String? = null,
+// val hydrogeologicalType: String? = null,
+// val params: Params? = null,
+// val planEndDate: String? = null,
+// val planStartDate: String? = null,
+// val remark: String? = null,
+// val seamBumpPressure: String? = null,
+// val seamGas: String? = null,
+// val seamId: Int? = null,
+// val seamIgnition: String? = null,
+// val seamName: String? = null,
+// val surfaceAzimuth: String? = null,
+// val surfaceHeight: String? = null,
+// val surfaceId: Int? = null,
+// val surfaceSupportForm: String? = null,
+// val surfaceWidth: String? = null,
+// val tunnelNature: String? = null,
+// val updateBy: String? = null,
+// val updateTime: String? = null
+//)
data class Params(
val additionalProp1: String? = null,
@@ -98,73 +98,73 @@ data class Params(
/**
* 工作面详情
*/
-data class FaceWorkDetailBean(
- val accumulativeFootage: Int,
- val areaId: Int,
- val areaName: String,
- val createBy: String,
- val createTime: String,
- val geologicalType: String,
- val hydrogeologicalType: String,
- val latestRecord: LatestRecord,
- val params: Params,
- val planEndDate: String,
- val planStartDate: String,
- val remainingFootage: Int,
- val remark: String,
- val seamBumpPressure: String,
- val seamGas: String,
- val seamId: Int,
- val seamIgnition: String,
- val seamName: String,
- val surfaceAzimuth: String,
- val surfaceHeight: String,
- val surfaceId: Int,
- val surfaceName: String,
- val surfaceSupportForm: String,
- val surfaceWidth: String,
- val totalFootage: Int,
- val tunnelNature: String,
- val updateBy: String,
- val updateTime: String,
- val yesterdayFootage: String,
- val monthFootage: String
-): Serializable
+//data class FaceWorkDetailBean(
+// val accumulativeFootage: Int,
+// val areaId: Int,
+// val areaName: String,
+// val createBy: String,
+// val createTime: String,
+// val geologicalType: String,
+// val hydrogeologicalType: String,
+// val latestRecord: LatestRecord,
+// val params: Params,
+// val planEndDate: String,
+// val planStartDate: String,
+// val remainingFootage: Int,
+// val remark: String,
+// val seamBumpPressure: String,
+// val seamGas: String,
+// val seamId: Int,
+// val seamIgnition: String,
+// val seamName: String,
+// val surfaceAzimuth: String,
+// val surfaceHeight: String,
+// val surfaceId: Int,
+// val surfaceName: String,
+// val surfaceSupportForm: String,
+// val surfaceWidth: String,
+// val totalFootage: Int,
+// val tunnelNature: String,
+// val updateBy: String,
+// val updateTime: String,
+// val yesterdayFootage: String,
+// val monthFootage: String
+//): Serializable
-data class LatestRecord(
- val createBy: String,
- val createTime: String,
- val mineWorkingLithologyList: MutableList,
- val params: Params,
- val recordId: Int,
- val recordPerson: String,
- val remark: String,
- val seamDip: Int,
- val seamHeight: Int,
- val surfaceId: Int,
- val surfaceName: String,
- val teamId: Int,
- val teamLeader: String,
- val teamName: String,
- val teamShift: Int,
- val updateBy: String,
- val updateTime: String,
- val waterYield: Int,
- val workingDate: String,
- val workingFootage: Int
-):Serializable
+//data class LatestRecord(
+// val createBy: String,
+// val createTime: String,
+// val mineWorkingLithologyList: MutableList,
+// val params: Params,
+// val recordId: Int,
+// val recordPerson: String,
+// val remark: String,
+// val seamDip: Int,
+// val seamHeight: Int,
+// val surfaceId: Int,
+// val surfaceName: String,
+// val teamId: Int,
+// val teamLeader: String,
+// val teamName: String,
+// val teamShift: Int,
+// val updateBy: String,
+// val updateTime: String,
+// val waterYield: Int,
+// val workingDate: String,
+// val workingFootage: Int
+//):Serializable
-
-data class MineWorkingLithology(
- val createBy: String,
- val createTime: String,
- val lithologyId: Int,
- val lithologyType: String,
- val params: Params,
- val positionEnd: Int,
- val positionStart: Int,
- val recordId: Int,
- val remark: String,
- val updateBy: String,
- val updateTime: String
-):Serializable
\ No newline at end of file
+//
+//data class MineWorkingLithology(
+// val createBy: String,
+// val createTime: String,
+// val lithologyId: Int,
+// val lithologyType: String,
+// val params: Params,
+// val positionEnd: Int,
+// val positionStart: Int,
+// val recordId: Int,
+// val remark: String,
+// val updateBy: String,
+// val updateTime: String
+//):Serializable
\ 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 2bb3bb8..39f3cbd 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
@@ -3,7 +3,6 @@ package com.zmkg.coaloperation.data.api
import com.zmkg.coaloperation.data.bean.ApiResponse
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity
import com.zmkg.coaloperation.retorfit.UrlConfig
-import com.zmkg.coaloperation.bean.FaceWorkDetailBean
import com.zmkg.coaloperation.ui.home.bean.WaterLedgerBean
import okhttp3.RequestBody
import retrofit2.http.Body
@@ -35,17 +34,17 @@ interface HomeApi {
// @GET("/api/mine/tunnelling/surface/record/{recordId}")
// suspend fun getTunnelingHomeItemData(@Path("recordId") recordId: String?): ApiResponse>
- /**
- * 掘进-工作面详情
- */
- @GET("/api/mine/tunnelling/surface/detail/{surfaceId}")
- suspend fun getTunnelingSurfaceDetail(@Path("surfaceId") surfaceId: String?): ApiResponse
+// /**
+// * 掘进-工作面详情
+// */
+// @GET("/api/mine/tunnelling/surface/detail/{surfaceId}")
+// suspend fun getTunnelingSurfaceDetail(@Path("surfaceId") surfaceId: String?): ApiResponse
/**
* 掘进-新增工作面
*/
- @POST("/api/mine/tunnelling/surface/add")
- suspend fun postTunnellingSurfaceAdd(@Body requestBody: RequestBody): ApiResponse
+// @POST("/api/mine/tunnelling/surface/add")
+// suspend fun postTunnellingSurfaceAdd(@Body requestBody: RequestBody): ApiResponse
@GET("/api/mine/tunnelling/surface/detailList")
suspend fun getTunnelHomeList(): ApiResponse?>
diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelWorkingFaceDao.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelWorkingFaceDao.kt
index 3266ae4..84cb629 100644
--- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelWorkingFaceDao.kt
+++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelWorkingFaceDao.kt
@@ -20,10 +20,10 @@ interface TunnelWorkingFaceDao {
@Update
fun update(entity: TunnelWorkingFaceEntity)
- @Query("SELECT * FROM tunnel_working_face ORDER BY createTime ASC")
+ @Query("SELECT * FROM tunnel_working_face ORDER BY createTime DESC")
fun getEntityList(): MutableList?
- @Query("SELECT * FROM tunnel_working_face WHERE dataState = :dataState ORDER BY createTime ASC")
+ @Query("SELECT * FROM tunnel_working_face WHERE dataState = :dataState ORDER BY createTime DESC")
fun getEntityListByState(dataState: String): MutableList?
@Query("SELECT * FROM tunnel_working_face WHERE surfaceId = :surfaceId")
diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelWorkingFaceRecordDao.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelWorkingFaceRecordDao.kt
index 2aba4c4..edc19e7 100644
--- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelWorkingFaceRecordDao.kt
+++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/db/dao/TunnelWorkingFaceRecordDao.kt
@@ -21,16 +21,16 @@ interface TunnelWorkingFaceRecordDao {
@Update
fun update(entity: TunnelWorkingFaceRecordEntity)
- @Query("SELECT * FROM tunnel_working_face_record WHERE surfaceId = :surfaceId ORDER BY createTime ASC")
+ @Query("SELECT * FROM tunnel_working_face_record WHERE surfaceId = :surfaceId ORDER BY createTime DESC")
fun getEntityList(surfaceId: Long): MutableList?
- @Query("SELECT * FROM tunnel_working_face_record WHERE dataState = :dataState ORDER BY createTime ASC")
+ @Query("SELECT * FROM tunnel_working_face_record WHERE dataState = :dataState ORDER BY createTime DESC")
fun getEntityListByState(dataState: String): MutableList?
@Query("SELECT * FROM tunnel_working_face_record WHERE surfaceId = :recordId")
fun getEntityById(recordId: Long): TunnelWorkingFaceRecordEntity
- @Query("SELECT * FROM tunnel_working_face_record WHERE surfaceId = :surfaceId AND latestRecordState = '1' ORDER BY createTime ASC LIMIT 1")
+ @Query("SELECT * FROM tunnel_working_face_record WHERE surfaceId = :surfaceId AND latestRecordState = '1' ORDER BY createTime DESC LIMIT 1")
fun getLastEntity(surfaceId: Long): TunnelWorkingFaceRecordEntity?
@Query("DELETE FROM tunnel_working_face_record")
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 0c70aed..81ece71 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
@@ -10,17 +10,23 @@ import com.zmkg.coaloperation.R
import com.zmkg.coaloperation.adapter.TunnelRoofLithologyAdapter
import com.zmkg.coaloperation.base.BaseVMBActivity
import com.zmkg.coaloperation.base.viewmodel.TestViewModel
+import com.zmkg.coaloperation.bean.TunnelWorkingItem
import com.zmkg.coaloperation.databinding.ActivityAddWorkingFaceRecordBinding
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelRoofLithologyEntity
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceRecordEntity
import com.zmkg.coaloperation.db.viewmodel.TunnelRoofLithologyViewModel
import com.zmkg.coaloperation.db.viewmodel.TunnelWorkingFaceRecordViewModel
+import com.zmkg.coaloperation.superfuntion.hideLoading
+import com.zmkg.coaloperation.superfuntion.showLoading
import com.zmkg.coaloperation.superfuntion.toJson
import com.zmkg.coaloperation.utils.DateTimeUtil
import com.zmkg.coaloperation.utils.DictUtils
+import com.zmkg.coaloperation.utils.ExcelExportUtils
+import com.zmkg.coaloperation.utils.FileUtils
import com.zmkg.coaloperation.utils.KeyboardUtil
import com.zmkg.coaloperation.utils.PickerUtil
import com.zmkg.coaloperation.utils.clickWithDebounce
+import com.zmkg.coaloperation.utils.formatDecimalString
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
@@ -115,13 +121,19 @@ class AddWorkingFaceRecordActivity :
mBinding.btnSave.clickWithDebounce {
if (showType == 0) {
- saveFaceRecord()
+ judgeInputParam {
+ saveFaceRecord()
+ }
return@clickWithDebounce
}
- updateFaceRecord()
+ judgeInputParam {
+ updateFaceRecord()
+ }
}
mBinding.btnExport.clickWithDebounce {
- showToast("开发中……")
+ judgeInputParam {
+ exportExcelFile()
+ }
}
mBinding.rvLithology.let {
@@ -169,46 +181,6 @@ class AddWorkingFaceRecordActivity :
}
private fun saveFaceRecord() {
- if (mBinding.tvWorkingDate.text.isBlank()) {
- showToast("请选择施工日期")
- return
- }
- if (mBinding.tvTeamShift.text.isBlank()) {
- showToast("请选择施工班次")
- return
- }
- if (mBinding.tvWorkTeam.text.isBlank()) {
- showToast("请选择施工队伍")
- return
- }
- if (mBinding.etTeamLeader.text.isBlank()) {
- showToast("请输入带班队长")
- return
- }
- if (mBinding.etWorkingFootage.text.isBlank()) {
- showToast("请输入本班进尺")
- return
- }
- if (mBinding.etSeamDip.text.isBlank()) {
- showToast("请输入煤层倾角")
- return
- }
- if (mBinding.etSeamHeight.text.isBlank()) {
- showToast("请输入煤层高")
- return
- }
- if (mBinding.etRecordPerson.text.isBlank()) {
- showToast("请输入填写人")
- return
- }
- val emptyDataList = roofLithologyList.filter {
- it.positionStart.isBlank() || it.positionEnd.isBlank() || it.lithologyType.isBlank()
- }
- if (emptyDataList.isNotEmpty()) {
- showToast("顶板岩性中存在部分编录点数据为空")
- return
- }
-
val faceRecord = TunnelWorkingFaceRecordEntity().also {
it.recordId = recordId
it.surfaceId = surfaceId
@@ -218,9 +190,9 @@ class AddWorkingFaceRecordActivity :
it.teamId = mBinding.tvWorkTeam.tag.toString()
it.teamLeader = mBinding.etTeamLeader.text.toString().trim()
- it.workingFootage = mBinding.etWorkingFootage.text.toString().trim()
- it.seamDip = mBinding.etSeamDip.text.toString().trim()
- it.seamHeight = mBinding.etSeamHeight.text.toString().trim()
+ 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.recordPerson = mBinding.etRecordPerson.text.toString().trim()
it.createTime = DateTimeUtil.formatDateTime(LocalDateTime.now())
@@ -230,8 +202,8 @@ class AddWorkingFaceRecordActivity :
Log.d(TAG, "saveFaceRecord: ${roofLithologyList.toJson()}")
workingFaceRecordViewModel.insert(faceRecord) {
- EventBus.getDefault().post(faceRecord)
roofLithologyViewModel.insertList(roofLithologyList) {
+ EventBus.getDefault().post(faceRecord)
finish()
}
}
@@ -263,18 +235,18 @@ class AddWorkingFaceRecordActivity :
it.teamId = mBinding.tvWorkTeam.tag.toString()
it.teamLeader = mBinding.etTeamLeader.text.toString().trim()
- it.workingFootage = mBinding.etWorkingFootage.text.toString().trim()
- it.seamDip = mBinding.etSeamDip.text.toString().trim()
- it.seamHeight = mBinding.etSeamHeight.text.toString().trim()
+ 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.recordPerson = mBinding.etRecordPerson.text.toString().trim()
it.createTime = DateTimeUtil.formatDateTime(LocalDateTime.now())
it.dataState = "1"
}
workingFaceRecordViewModel.update(faceRecord) {
- EventBus.getDefault().post(faceRecord)
roofLithologyViewModel.deleteList(recordId) {
roofLithologyViewModel.insertList(roofLithologyList) {
+ EventBus.getDefault().post(faceRecord)
finish()
}
}
@@ -286,4 +258,89 @@ class AddWorkingFaceRecordActivity :
}
+ private fun judgeInputParam(acton:()-> Unit) {
+ list.clear()
+ list.add(TunnelWorkingItem(name = "工作面名称", value = faceName))
+
+ val workingDate = mBinding.tvWorkingDate.text.toString().trim()
+ if (workingDate.isBlank()) {
+ showToast("请选择施工日期")
+ return
+ }
+ list.add(TunnelWorkingItem(name = "施工日期", value = workingDate))
+
+ val teamShift = mBinding.tvTeamShift.text.toString().trim()
+ if (teamShift.isBlank()) {
+ showToast("请选择施工班次")
+ return
+ }
+ list.add(TunnelWorkingItem(name = "施工班次", value = teamShift))
+
+ val workTeam = mBinding.tvWorkTeam.text.toString().trim()
+ if (workTeam.isBlank()) {
+ showToast("请选择施工队伍")
+ return
+ }
+ list.add(TunnelWorkingItem(name = "施工队伍", value = workTeam))
+
+ val teamLeader = mBinding.etTeamLeader.text.toString().trim()
+ if (teamLeader.isBlank()) {
+ showToast("请输入带班队长")
+ return
+ }
+ list.add(TunnelWorkingItem(name = "带班队长", value = teamLeader))
+
+ val workingFootage = mBinding.etWorkingFootage.text.toString().trim().formatDecimalString()
+ if (workingFootage.isBlank()) {
+ showToast("请输入本班进尺")
+ return
+ }
+ list.add(TunnelWorkingItem(name = "本班进尺", value = workingFootage))
+
+ val seamDip = mBinding.etSeamDip.text.toString().trim().formatDecimalString()
+ if (seamDip.isBlank()) {
+ showToast("请输入煤层倾角")
+ return
+ }
+ list.add(TunnelWorkingItem(name = "煤层倾角", value = seamDip))
+
+ val seamHeight = mBinding.etSeamHeight.text.toString().trim().formatDecimalString()
+ if (seamHeight.isBlank()) {
+ showToast("请输入煤层高")
+ return
+ }
+ list.add(TunnelWorkingItem(name = "煤层高", value = seamHeight))
+
+ val recordPerson = mBinding.etRecordPerson.text.toString().trim()
+ if (recordPerson.isBlank()) {
+ showToast("请输入填写人")
+ return
+ }
+ list.add(TunnelWorkingItem(name = "记录人", value = recordPerson))
+
+ val emptyDataList = roofLithologyList.filter {
+ it.positionStart.isBlank() || it.positionEnd.isBlank() || it.lithologyType.isBlank()
+ }
+ if (emptyDataList.isNotEmpty()) {
+ showToast("顶板岩性中存在部分编录点数据为空")
+ return
+ }
+ list.add(TunnelWorkingItem(name = "顶板岩性", value = "", items = roofLithologyList))
+
+ acton()
+ }
+
+ private val list: MutableList = mutableListOf()
+ private fun exportExcelFile() {
+ showLoading()
+ val fileName = "${faceName}_${mBinding.tvWorkingDate.text}_${System.currentTimeMillis()}.xlsx"
+ val filePath = FileUtils.getFilePath(fileName)
+ ExcelExportUtils.exportToExcel(list, filePath) {
+ window.decorView.postDelayed({
+ hideLoading()
+ showToast("Excel导出完成")
+ }, 1500)
+ }
+ }
+
}
\ No newline at end of file
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 2076f43..99977b8 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
@@ -143,8 +143,8 @@ class TunnelingActivity :
val index = workingFaceList.indexOfFirst { it.surfaceId == event.surfaceId }
if (index == -1) {
//新增工作面
- val insertIndex = workingFaceList.size
- workingFaceList.add(event)
+ val insertIndex = 0
+ workingFaceList.add(0,event)
workingFaceAdapter.notifyItemInserted(insertIndex)
workingFaceAdapter.notifyItemRangeChanged(insertIndex, insertIndex+1)
return
@@ -166,15 +166,18 @@ class TunnelingActivity :
faceEntity.records?.let { records ->
val index = records.indexOfFirst { it.recordId == event.recordId }
if (index == -1) {
- records.add(event)
+ records.add(0,event)
} else {
records[index] = event
}
}
val recordAdapter = getRecordAdapter(position)
recordAdapter.notifyDataSetChanged()
+
+ workingFaceAdapter.notifyItemChanged(position)
}
+ @SuppressLint("SuspiciousIndentation")
private fun getRecordAdapter(position:Int):TunnelWorkingFaceRecordAdapter {
val viewHolder =
mBinding.rvList.findViewHolderForLayoutPosition(position) as TunnelWorkingFaceAdapter.VH
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 ad925f7..3595138 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
@@ -15,6 +15,7 @@ import com.zmkg.coaloperation.databinding.ActivityWorkingFaceRecordBinding
import com.zmkg.coaloperation.db.entiry.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.toJsonString
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
@@ -65,10 +66,6 @@ class WorkingFaceRecordActivity :
Log.d(TAG, "loadFaceRecord: ${faceRecord.toJsonString()}")
faceRecord?.let {
loadFaceRecord(it)
- roofLithologyViewModel.getEntityList(it.recordId) { lithologyEntities ->
- list[6].items = lithologyEntities
- adapter.notifyItemChanged(6)
- }
}
}
@@ -86,17 +83,23 @@ 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))
+ list.add(TunnelWorkingItem(pageType = 1, name = "本班进尺", value = "${it.workingFootage?.formatDecimalString()}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))
- list.add(TunnelWorkingItem(pageType = 1, name = "煤层高", value = it.seamHeight))
+ 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 = it.recordPerson))
adapter.notifyDataSetChanged()
+
+
+ roofLithologyViewModel.getEntityList(it.recordId) { lithologyEntities ->
+ list[6].items = lithologyEntities
+ adapter.notifyItemChanged(6)
+ }
}
override fun bindEvent() {
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 605d66c..1d98e18 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
@@ -12,7 +12,6 @@ import com.zmkg.coaloperation.db.viewmodel.TunnelRoofLithologyViewModel
import com.zmkg.coaloperation.db.viewmodel.TunnelWorkingFaceRecordViewModel
import com.zmkg.coaloperation.adapter.TunnelingRockNatureAdapter
import com.zmkg.coaloperation.databinding.ActivityWorkingFaceStatisticsBinding
-import com.zmkg.coaloperation.bean.FaceWorkDetailBean
import com.zmkg.coaloperation.ui.tunneling.viewmodel.TunnelingViewModel
import com.zmkg.coaloperation.utils.ScreenUtil
import com.zmkg.coaloperation.utils.formatDecimalString
@@ -91,7 +90,7 @@ class WorkingFaceStatisticsActivity :
workingFaceRecordViewModel.getLastEntity(detail.surfaceId) { record ->
record?.let {
mBinding.tvYesterdayLen.text = "${it.workingFootage?.formatDecimalString()}m"
- mBinding.tvWorkingFaceAngle.text = "${it.seamDip?.formatDecimalString()}"
+ mBinding.tvWorkingFaceAngle.text = "${it.seamDip?.formatDecimalString()}°"
// mBinding.tvMonthAccumulateLen.text = "${it.monthFootage}m"
mBinding.tvWorkingFaceWater.text = "${it.waterYield?.formatDecimalString()}"
@@ -134,9 +133,9 @@ class WorkingFaceStatisticsActivity :
// }
}
- private fun setDataView(bean: FaceWorkDetailBean?) {
- bean ?: return
- }
+// private fun setDataView(bean: FaceWorkDetailBean?) {
+// bean ?: return
+// }
private fun stringToDouble(numText: String?): Double {
if (numText.isNullOrEmpty() || numText.isBlank()) return 0.toDouble()
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 9f2fbc2..4fc71a3 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
@@ -9,6 +9,7 @@ import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.zmkg.coaloperation.R
import com.zmkg.coaloperation.base.BaseVMBFragment
+import com.zmkg.coaloperation.bean.TunnelSubmitData
import com.zmkg.coaloperation.databinding.FragmentUserBinding
import com.zmkg.coaloperation.db.viewmodel.TunnelRoofLithologyViewModel
import com.zmkg.coaloperation.db.viewmodel.TunnelWorkingFaceRecordViewModel
@@ -30,9 +31,9 @@ import kotlinx.coroutines.launch
class UserFragment :
BaseVMBFragment(R.layout.fragment_user) {
- companion object {
- const val TAG = "UserFragment"
- }
+ companion object {
+ const val TAG = "UserFragment"
+ }
private val workingFaceViewModel: TunnelWorkingFaceViewModel by lazy {
ViewModelProvider(this)[TunnelWorkingFaceViewModel::class.java]
@@ -64,12 +65,37 @@ class UserFragment :
override fun initView(root: View?, savedInstanceState: Bundle?) {
mBinding.apply {
- networkConfig.setOrderStateInfo("网络配置", R.mipmap.network)
- dataPull.setOrderStateInfo("数据拉取", R.drawable.ic_data_pull)
- cacheManage.setOrderStateInfo("缓存管理", R.mipmap.buffer)
- checkUpdate.setOrderStateInfo("检查更新", R.mipmap.checkupdate)
- systemExit.setOrderStateInfo("系统退出", R.mipmap.systemexit)
- aboutUs.setOrderStateInfo("关于我们", R.mipmap.about_us)
+ networkConfig.setOrderStateInfo(
+ "网络配置",
+ R.mipmap.network,
+ R.drawable.bg_icon_network_config
+ )
+ dataPull.setOrderStateInfo(
+ "数据拉取",
+ R.drawable.ic_data_pull,
+ R.drawable.bg_icon_data_pull
+ )
+ dataPush.setOrderStateInfo(
+ "数据推送",
+ R.drawable.ic_data_push,
+ R.drawable.bg_icon_data_push
+ )
+ cacheManage.setOrderStateInfo(
+ "缓存管理",
+ R.mipmap.buffer,
+ R.drawable.bg_icon_cache_manage
+ )
+ checkUpdate.setOrderStateInfo(
+ "检查更新",
+ R.mipmap.checkupdate,
+ R.drawable.bg_icon_check_update
+ )
+ systemExit.setOrderStateInfo(
+ "系统退出",
+ R.mipmap.systemexit,
+ R.drawable.bg_icon_system_exit
+ )
+ aboutUs.setOrderStateInfo("关于我们", R.mipmap.about_us, R.drawable.bg_icon_about_us)
}
}
@@ -78,6 +104,7 @@ class UserFragment :
addClickViews(
networkConfig,
dataPull,
+ dataPush,
cacheManage,
checkUpdate,
systemExit,
@@ -94,13 +121,12 @@ class UserFragment :
}
R.id.data_pull -> {
- showLoading("加载中")
checkDataState { state ->
if (state) {
showToast("本地存在待提交的数据")
return@checkDataState
}
-
+ showLoading("加载中")
workingFaceViewModel.deleteAll {
workingFaceRecordViewModel.deleteAll {
roofLithologyViewModel.deleteAll {
@@ -115,6 +141,10 @@ class UserFragment :
}
}
+ R.id.data_push -> {
+ dataPush()
+ }
+
R.id.cache_manage -> {
toActivity(CacheManageActivity::class.java)
}
@@ -156,7 +186,7 @@ class UserFragment :
list.forEach { faceEntity ->
faceEntity.records?.let { recordList ->
val lastRecordId = faceEntity.latestRecord?.recordId
- val record = recordList.firstOrNull {it.recordId == lastRecordId}
+ val record = recordList.firstOrNull { it.recordId == lastRecordId }
record?.latestRecordState = "1"
//保存工作面记录数据
@@ -207,4 +237,27 @@ class UserFragment :
}
}
+ 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()}")
+ }
+ }
+ }
+ }
+
}
diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/DateTimeUtil.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/DateTimeUtil.kt
index a07207a..ae6b034 100644
--- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/DateTimeUtil.kt
+++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/DateTimeUtil.kt
@@ -9,6 +9,7 @@ import java.util.Date
object DateTimeUtil {
const val YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"
+ const val YYYY_MM_DD = "yyyy-MM-dd"
fun formatDateTime(dateTime: LocalDateTime, pattern: String = YYYY_MM_DD_HH_MM_SS): String {
val formatter = DateTimeFormatter.ofPattern(pattern)
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
new file mode 100644
index 0000000..2ac1576
--- /dev/null
+++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/ExcelExportUtils.kt
@@ -0,0 +1,71 @@
+package com.zmkg.coaloperation.utils
+
+import android.util.Log
+import com.zmkg.coaloperation.bean.TunnelWorkingItem
+import org.apache.poi.ss.util.CellRangeAddress
+import org.apache.poi.xssf.usermodel.XSSFWorkbook
+import java.io.FileOutputStream
+
+object ExcelExportUtils {
+ fun exportToExcel(list: List, filePath: String, block:()-> Unit) {
+ val workbook = XSSFWorkbook() // 创建XLSX格式工作簿
+ val sheet = workbook.createSheet("Sheet1")
+
+ // 创建表头
+ val mainHeader = sheet.createRow(0)
+
+ list.forEachIndexed { index, item ->
+ mainHeader.createCell(index).setCellValue(item.name)
+ }
+
+ val subHeader = sheet.createRow(1)
+ for (i in 0 until list.size - 1) {
+ subHeader.createCell(i).setCellValue("")
+ }
+ val subTitleList = mutableListOf("起始值", "结束值", "岩性")
+ subTitleList.forEachIndexed { index, subTitle ->
+ subHeader.createCell(list.size - 1 + index).setCellValue(subTitle)
+ }
+ sheet.addMergedRegion(CellRangeAddress(0, 0, 9, 11))
+ for (i in 0 until list.size - 1) {
+ sheet.addMergedRegion(CellRangeAddress(0, 1, i, i))
+ }
+ var rowNum = 2
+ var row = sheet.createRow(rowNum)
+ for (i in 0 until list.size - 1) {
+ row.createCell(i).setCellValue(list[i].value)
+ }
+
+ list[list.size - 1].items?.let {
+ for (i in 0 until it.size) {
+ if (i > 0) {
+ rowNum++
+ row = sheet.createRow(rowNum)
+ }
+ row.createCell(0 + list.size - 1).setCellValue(it[i].positionStart)
+ row.createCell(1 + list.size - 1).setCellValue(it[i].positionEnd)
+ row.createCell(2 + list.size - 1).setCellValue(it[i].lithologyType)
+ }
+ }
+
+ // 填充数据
+// data.forEachIndexed { index, item ->
+// val row = sheet.createRow(index + 1)
+// row.createCell(0).setCellValue(item.id)
+// row.createCell(1).setCellValue(item.name)
+// }
+
+ // 自动调整列宽
+// for (i in 0 until 9) {
+// sheet.autoSizeColumn(i)
+// }
+
+ // 写入文件
+ FileOutputStream(filePath).use { workbook.write(it) }
+ workbook.close()
+ Log.d("ExcelExportUtils", "exportToExcel: $filePath")
+ block()
+ }
+}
+
+data class DataBean(val id: Int, val name: String)
diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/FileUtils.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/FileUtils.kt
new file mode 100644
index 0000000..f182234
--- /dev/null
+++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/utils/FileUtils.kt
@@ -0,0 +1,47 @@
+package com.zmkg.coaloperation.utils
+
+import android.os.Environment
+import java.io.File
+import java.io.FileOutputStream
+import java.io.IOException
+
+object FileUtils {
+
+ fun getFilePath(fileName:String): String {
+ val parentPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS)
+ val path = File(parentPath, "煤矿数采终端")
+ if (!path.exists()) path.mkdirs()
+ val file = File(path, fileName)
+ if (!file.exists()) file.createNewFile()
+ return file.absolutePath
+ }
+
+ fun saveToPublicDirectory(fileName: String, content: String) {
+ val dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS)
+ val appDir = File(dir, "dcmp")
+ if (!appDir.exists()) appDir.mkdirs()
+
+ val file = File(appDir, fileName)
+ try {
+ FileOutputStream(file).use { it.write(content.toByteArray()) }
+ } catch (e: IOException) {
+ e.printStackTrace()
+ }
+ }
+// private fun requestStoragePermission() {
+// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+// if (!Environment.isExternalStorageManager()) {
+// val intent = Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION)
+// startActivity(intent)
+// }
+// } else {
+// ActivityCompat.requestPermissions(
+// this,
+// arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE),
+// REQUEST_CODE
+// )
+// }
+// }
+
+
+}
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/view/CustomInfoView.kt b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/view/CustomInfoView.kt
index ef50d4e..f3bbcd6 100644
--- a/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/view/CustomInfoView.kt
+++ b/coalMiningApp/app/src/main/java/com/zmkg/coaloperation/view/CustomInfoView.kt
@@ -8,6 +8,8 @@ import android.widget.RelativeLayout
import androidx.databinding.DataBindingUtil
import com.zmkg.coaloperation.R
import com.zmkg.coaloperation.databinding.CustomMyInfoViewBinding
+import com.zmkg.coaloperation.utils.gone
+import com.zmkg.coaloperation.utils.visible
/**
* 文本和跳转
@@ -21,15 +23,14 @@ class CustomInfoView(context: Context?, attrs: AttributeSet?) : RelativeLayout(c
R.layout.custom_my_info_view, this,true)
- fun setOrderStateInfo(name:String, id:Int){
+ fun setOrderStateInfo(name:String, imgResId:Int, bgResId: Int){
mBinding.apply {
- if (id==0) {
- customInfoMenuIcon.visibility=View.GONE
- }else{
- customInfoMenuIcon.visibility=View.VISIBLE
+ customInfoMenuIcon.run {
+ if (imgResId == 0) gone() else visible()
+ setImageResource(imgResId)
+ setBackgroundResource(bgResId)
}
- customInfoMenuIcon.setImageResource(id)
- customInfoMenuName.setText(name)
+ customInfoMenuName.text = name
}
}
diff --git a/coalMiningApp/app/src/main/res/drawable-xxhdpi/ic_data_push.png b/coalMiningApp/app/src/main/res/drawable-xxhdpi/ic_data_push.png
new file mode 100644
index 0000000000000000000000000000000000000000..97d08fb1fdffead21f8e2de05b4c0bd085129dd2
GIT binary patch
literal 9658
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
Z0DyM)O|Q-fjxqw!*D=w4rRfs){{Z-+cfkMv
literal 0
HcmV?d00001
diff --git a/coalMiningApp/app/src/main/res/drawable/bg_icon_about_us.xml b/coalMiningApp/app/src/main/res/drawable/bg_icon_about_us.xml
new file mode 100644
index 0000000..4c844ab
--- /dev/null
+++ b/coalMiningApp/app/src/main/res/drawable/bg_icon_about_us.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/res/drawable/bg_icon_cache_manage.xml b/coalMiningApp/app/src/main/res/drawable/bg_icon_cache_manage.xml
new file mode 100644
index 0000000..e4fce57
--- /dev/null
+++ b/coalMiningApp/app/src/main/res/drawable/bg_icon_cache_manage.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
diff --git a/coalMiningApp/app/src/main/res/drawable/bg_icon_check_update.xml b/coalMiningApp/app/src/main/res/drawable/bg_icon_check_update.xml
new file mode 100644
index 0000000..2f1be6a
--- /dev/null
+++ b/coalMiningApp/app/src/main/res/drawable/bg_icon_check_update.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/res/drawable/bg_icon_data_pull.xml b/coalMiningApp/app/src/main/res/drawable/bg_icon_data_pull.xml
new file mode 100644
index 0000000..878e3ab
--- /dev/null
+++ b/coalMiningApp/app/src/main/res/drawable/bg_icon_data_pull.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/res/drawable/bg_icon_data_push.xml b/coalMiningApp/app/src/main/res/drawable/bg_icon_data_push.xml
new file mode 100644
index 0000000..2bd5c88
--- /dev/null
+++ b/coalMiningApp/app/src/main/res/drawable/bg_icon_data_push.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/res/drawable/bg_icon_network_config.xml b/coalMiningApp/app/src/main/res/drawable/bg_icon_network_config.xml
new file mode 100644
index 0000000..d94bfff
--- /dev/null
+++ b/coalMiningApp/app/src/main/res/drawable/bg_icon_network_config.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/res/drawable/bg_icon_system_exit.xml b/coalMiningApp/app/src/main/res/drawable/bg_icon_system_exit.xml
new file mode 100644
index 0000000..2bbda2f
--- /dev/null
+++ b/coalMiningApp/app/src/main/res/drawable/bg_icon_system_exit.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/res/drawable/ic_avatar.png b/coalMiningApp/app/src/main/res/drawable/ic_avatar.png
new file mode 100644
index 0000000000000000000000000000000000000000..a3ec41d7207491915281246a9cef63cd9b9a72ef
GIT binary patch
literal 14846
zcmXw=bx<5nu*dffINaSexVv*`kl^m_?hc2A1P=rWfuIR)!6k5Lkl+M@LxAA!{`kFD
z@2{QOn(C>V?dko@x4YkKsJ+HSBSQlK08>d(P744)FGCQ30(p6uc$L}#01lueC#@3z
zIxs~JA?Uvj4`wO;5S^lcC-WLA8VQS}!I{Z>r`(utb^H|WC$CAM86H_k=Lgya$xD|>
z2f0rfGZ#dsM5nAA|9f8fmZDOMw}g?C8~
zFV*z>;NhR2zQxEDIzWb0XcU|CsNw=EHem6HpS?Vo@bi5S>SPwYI;|h#*Gml^Qu?d)Q;Ye2TQIRbkUyp(Tyk0KPlwxuN@C!jW@TBoq&X
zeE8>R_vO!;-R9jwC*!3ii<*;X!=R~4z_=Tz|FDHx`qA1mob6ji)>5P9V)K6%7;)Tx
zp*P{w^zof?4#TJrhc-DG1Ka=Mu0i19f}A6yEwD>D{YMU;_GjsSmhR>wMxB$P8%P*I
z`o4k<14`OL6U|@Kk01$@)b}>@r1FNEc8#dT0%1y2ZU71rF_TXkITOS8pC?r~=zb5u`xVYCdV>
zJg~fzD&b-IQMM-19#}2S8x-<4_$X}syp=oyEufUsw^q~vKwF2oW%v^YAKcHyN&MSU
z){Pw*sK-v+Qax4bteiMj0
zku}D_$uE0H8O6|(%KgeE;#nyYN{H(Ql&5%DCHI;OS(smi-{k)*5^E=-Ub4@n`B{+-
zg}qEfwZ`4=KY-x(-@Fq0Z`ah|<#DSY1`AIuLr6`3hkM>Q6JOby_jW+vgrpHiKyjTB
z4(JYcsV07;G%FoyZA0K=!SU{SpX=PE+A-Gf^l~GQLYbD%M=4QIpnud0f~Bt!V~OwE
zqA&%ThcID@{@C~Vy(g~qM5~gYVck)JdK>*FF~ABwh1nA9tp(*u#fNGqy~M+r%}?a8
zY=9BAx(>n>=~M77#ZAwn7fIY`;{(
zJRi4jcb^a;Eu6$hPW|w8M=TS!;(bG$fj>*d5-<}d00U6t&+_^F(M6A+5D
ze>f}aquT)&RwK2jnd~S^{%a5N^GFU7<_E!bf1)xw!<_YHdQ5me(g8~dphoAxW%>6r
z6Fq#*Q4fo058@uqrXZQrjpxbQ76vNH>KyEoUa@Vx#1+?sx-gohQ=(rd@55rPD-u3sO*s
zX2*LTx@^VbTlEhDu7JiV6A6h+-{NQ&g)GjEofw#ezVN-A5(z_&O)$r0`b;qhy1#5W
zA=3nMM-JboM+xx;gCOpfnHKwNNR<`%I!k81DG;*x0EfCfJdy`=@CjEh>{%%S@IwtE
z^{KU=u)4}2xcDe1%LlQLqdV_Gc^-#z_i(}NHo;FN6o?qyn0a-E&0O}EAA3J~=Qzk{
zPRQ?PaKJeePNeoIC^`gR!+F6s2@*PAu-hR_->EWG%IWnlAwbasc0qg-!s^3Ayo9f~
zx6#`7D3HZZxV%dxS#(`rQ8^|6xns2a7*2$?6Z7BJWzxawzL|6XyLhicp5DTvO9mVq
z-_xC-^GsZ4^aVI%Q?RjtW!H5lwu>Vr&-r(zlc2Y)5`SC2A!TX{L)c4G6Zp!qsk|~duG=sNC
zoE?IAUUm|Qt><}o<1BgA(}CS*s2VM|!4oCZ+jw?l>zNg}@D@0C9`sLi5n@$2SNSGX
z7XsYhht?j;Z`@1hMAkU}v4Jp4v{Iqzg#h|pWWapsT42`?40-Yr+1*LqnoKSz=VUYtOu|NfA;jLchFShY6RGb^WHvSFt14BuZ~?Kut<@D
z^m5qry%l`Q4pU{rL4m|JILgUYJj2^euqe&^Ud=N3o1P#U%mC&U07Kb^i@sc{9P~yc
zkX>C06!RPcYUMkM?ZKR$sFLEa_ttaN&ZK!BZ>DiyNrNhYZt`%!H$8XKA%2O~tjBVb
z5E@I|U}W0Qkwex(dV1_vTS}+#{-cCNH_G6mg9o#GHxLqm3Kpj>p0o0rt@0M%0g;)D
zqfQ+JSboALiNbcpm8q~*PJWJZ|HIVh&^cvWOxqv1MGbvQoy!-$OqrVZB@Ms8n65wg
z4mosD`~U%>nDHkM!{^it`L&l)yiw8gRU;py%wo?PipoN5J&-MsA#6Vo@1EMiT-(;3{a;Ayf1^)egHQA^1xYJf_~;uOt$)|1D0|rBYbE
zn$c8QKRIIL;j24BqTUW)YWK$T$vjb>Coy2@j337XL=k=0FYU5n+i>F4k93#cW7{4J
z!HM&KK)YkJ|IMDHyW&{N>px~~#U8~I_4~|-6FT0Ks(?&j3H0%3gBYD}2hvbN|5=9QA8bO@aTjxPwEOH=Osdgq+Lr+f4;$gcPi-1@nL@f>
zZwUTq8*8XL)edt}!8%sWBO=qOBWUjnXEt?ZlfMM=gWaCr^EQ(KJ~3|HYl?+VN7=av
zaoG2f_I>XEMQ2=4J6z<4
znmW}Ssjf9gW|acMApyo5xxW)Le>X}C_2PU~&n50=L!0HO#{NEb0|ExY3!kbHf*
z^SQuolbHtxp&<_A`is%fCu;Y1<`Z>iTJsB&cN`NkV+`U#jNMHQ=5)!{8M*=mABgIoAnN%u~OY_OhxvIZU
zUsDl|CjH7iXSPxAk~R7LPLH!(xxoN6H2R|ihxCC=N`XdhiU29mT2*w+!FqP)rlj8|
zkfOmax4wepye*=^-xrR!Ne@!1KECxGKa5Z&lok5hw|}>lcWN`j$A$Sq!RZlXgE-DlFtE4|LIzrHNx^E*3M^qj|p!{x5Ttxrqqkuj_8VA;$zk5sooLOWp?**BE;c%
zSC+3yycpm9!|36m%F36}$~(PjvqITWK{tKm@VVKM5>yocq^IurtkCSE>j)yi+@F&*
z-+jsAZzMd@xqY=*>|l!t5e3xTlg>%Mz6l
z#$I8q;s$Vg-JF<-p
zuDc{Ov#Gr-o0m|RmPryN`8&sH2c~zvF7>YLft(eQUqdoY&FfwFWyGJ+4423h28abb
zk6jrDTHp0o_NXiEI#J&r1YYsXHJyk9XIpUBtzrs#(X|Znz
zH%;xTw+YI>Xg^qkJ5+;Tr}aXBSUReo3hfqC2X=$4h;J*l`PuUH5G&@=DKx7Tt(z$%
zJW;|DmK#~wgk1nw#6P0z%D&G5pM^tC8
z*`$}n|0CW0%WOl45zbf*lX)WPv2}35&kwJYVy|4WNP#GjSyK(EZ-!le>z>V0RLhm?
z@_1D74@Re4`fi@whDBiQ&qi7#z_G`j-;KTmFh76W<5OeFQ_}Zfh8iaz{W-*%cLh8S
zPLcEni=qWL1p)MLZ{GUy*~49hRx1%bb%&y!(2l?TZt>*$E!?y_!HJMk3rkce&o){i
z-{NT}jr02TPb3X@wG{WjfSWqIe?SJ7NBt(?N#y3~@jBnoB!|yN;(N8E#610$AiaU
zMgY%hMc~--XOg^qsQ}#i+xn2tn6M0~n=)|C)t7Xl+0Mwm4ps^
z#G>IbzXfRDEfKu}0@cSVs>EHt{f3KjaUFX<;VP87zohHV#Z_l~x*WV=dFEW>q+ocr
z;(_oc{F;)-B1pwwNgwWq(hE0{9aYi%^_;TNf|q;(0@^_Sm35`<^+Lt2*JOSw9(qk!%Hjq1HM8J3>#jn&EFk
z>hVF@zx|(cpX=%~y!*u(+&I)23R@xCt0CHi18a8~91(BDcdN`7w@LtJ)f6u*!sKd7
zZUY5Z{01RjIa33&>ypb({C7u5(v+y@ctS
zEhJ>z$r{xrr28|(T?z~~_|oY<3otNzm%b7zsUk}v1GJt7CMV+%H`?q**UB{MEeBrX
zM|8@W2tJZ$3A#~qi2AW7kmLZ%Vhyo_wcN3ROwG9j!5YVACpWd0Cr{qvJr6^9-An3H
zNZAuJ9iGu&V%_{U2js&I_KqJX2P`?dGDy%BHe%RbjV
zw7bg}$y7h~5t|d7yB$ye+=V*q+l7cW@HuUNMW}CcnFTDOWVr(`7=;~xK?Dskj|;{U
zH<@HC%Chru~)!-9pQVGv*~XkbVNHwtdc14s~zJ($ACJ{5nK+HO>n&bf&rf67jcR
zzP$GYUd&Aa7$)!_ItSGklm8TnVIR%Qj=GH88GVh}PdR7MzkeJ(2eS3{d??x9kOAH3
z;$fe3W#Yoz;;ycWS6IEC4?m3L+8PVFI@JYMkpuBPi&>6pC8}gVaiADu@@fZ}U_Cj)
z8E{bD$7Uc$Bgl&v2?qblSckyb`R8~^vSxNgAr=;N@yHM%lZxHe*KKPKI1hV^7|@rK
z25Wy7?6uXGRxtyF072=%sM5v8xLF<`5r)`$)*Q#Zqnd>rI3
zXDwwfo!8C#WB^33izYRiFdb)deg_n=>jU*Z)uqeW`;*{8VwYj>2K>=o4kCEkYxVbUo>ERc&Isz*LRH
zvj>UC*JtbwaeDGl
zYy@!w7b#`Zztb+0_H8uZGV&y{|2u!yk>us?*cv5(
z8WhRP1?i6!=2wLv#hctoe2N_!p5)Shl#95CT+=*L3b?pb5fSY%7?^@s;JZFwKOq$-
zSE*X9ZE1cWAK6X0YDqZ`A>ildCq>@3J+%SNqjc?38~
zgNITPt9u{Yw@^yd4jHltHKrZ|reyOJV$iX{ND<#zQ?=Wkt|*se>l;8a%c=MAqT3C6
zXa$B8Dr3kTjy#yyA-0@}Vb%)AXz>GJ1j$^q%ICl$5Y9tnA{ts4ZHn$cSD(bZ!DQei
z0QVUHn*Xf{h=+kRYS)wh0-YQQc3LtP8r&ukQ?29wO1+gG8u;D
zV!h}b27oQ2C~&hBpC&yhPP}Bs2;mGRiE*(e5JR
zM4wTAh?@>w-kThZi|b7JCXtb+$Y8SoO`UJIBbmK#P1`M($8x!Y
z=XnEmH`Ld<=T>3qpM^%InyTccdHL42)SsDHAJw}a8OhjqAvO&=52vTc?*oTewq0I1
zHkza
zNMxN+C>e@~oID9lukW{dbLcT0ul;abh1+-if-OaY<88MFm%-TE1A)7Eg{M}kVR45UNZsE~uk{0+-NQ$U&?HfsaLINWVaWd=V%qIc=
z!1$dRr0a)J%ny`snZSq{Rllnk64jVtju$S5qPC;|{xuW=J$g(#?sC^>vzZx8tEIsZNatKf*2Utb96Uc#{?j(W&e3Ixz&2H=Xw?)Vr+Be2+`XN*Y8}y?LG+Iy1C1I#Z
zEh9|YT5AXg;lxBEtJq)aHnC~0I~j?ZsI=Lw53dfJh-$PsyJ}I~4*t}QU6!LCM#bd|
zknNRw3mh)@Q~>LuIPeRnc(--M)NxDiZC$3mp{TdFz`5NI8tfgTsOG#3@%HVN
zl^wO!H9t-=jo8Bvv%m#~+zJ(wK(qR_#HZQ8vhF{0@epbW?|8Zc|`DyE)SMZ9+
zP4u$yz_=;#;cbRUPxfdL`^HTl`+$eranTRrEc`4IEceqz3ZO}M9G8bf5Mi;v*{wPbIJhSHL!Stu#|eYZPm(^7*8}y=Dw9b0&9`@k
zd=UiMA6Lxe%CK1G-Obfvm=rLYo7+aWb`#ai22CIDWj!=fMlVY(G@t;6x+3t`^J#N@
z2Twg6rNudx3Yvpe1?y@jnUHDMA_00Ltk4?#8T;jj#0pj1gY0iA$`{3xy1dJ4JFKOC)R_
z%}Q~yvT_h3Lcq{>`yX4jBetcRx*72Bg=&v>N}174kQBx~G#CgJjB6LJaq%Nk(Uh0V
zg)oWe={~SV8iKw%Fs>2Ga~IJuc8XA=;;a3Hs);;Hf*uP>Ors@d@%
zpwX^cYEL^p6p1*|^P+guj)NL*AN{UZJ)|1ue1t-}k|rO$OaYcoS97fPYz}A`=_ot9XF|VI{-sec+1a^zXy)%qdRT|SEm2VER!&*
ze|V3JC(m8w!H98(mP;%FJHu1d6YeUvayRF^1{b$k@}DP*17$m&qJ$_P$yt5O_<{Xn
zVqQ|HnLN?+F*~?}e2qPFZqI$F8aoK5+H~!;8a=d4O;kNv4grdca%#D7z9|lFpFsHY
zp?6tt`vc;{@S-^ydvT$r_FM%ffVT|+q*I)XJ!5JpHrX@8yb)+yOTX0H1U$B(=*zr|ZeiPRwv1npPPX2#_NirU&*40??UnO2sf7=(2OnlTJo
zl6*A^5P1Vu9;PYa=8R+WHMOZ&0N&XH#;n&NOt|3i;@C(KwZr?tPp^8v*MlZ-vN&io
zA>I)MhFMgQ*xNm2yyZGkn*^VwKLEFZc8PG;8UdII?J)-~*7*NgfQ8aq^e}a}1t5E+
zTN2Qy_i5`N5D3f;i=>5ruccyF+;9)K=Wa02hy4~fPyA0C^cCQ{t>Z^YA%=FbGhhmw
z>lmnEk??LAZlo`T$p*FE4!jzs-Qwa|gQm+}2$NbPVu)J*hx!!?Xkv-+=X@+U`Nx04
zTS+*PSSt8QfzwC7XZ
zk?WaxlLYy>$-@^b_b3X|V0-ed%S7CpTPxufIx3o`xCrTtG|ac?+w$_?tn~~G=J;r0
zxLCT^e~4Qc8WO%mxWD&8evqR&U2QnWt>sGQx{1&jY~M{pfXx_CBAkpXuG86_C`qG4
zQY_BXnP+9=p;nto8~AKZl5-cEAwJIY&xObrlb;mu=!TRGWdMmg?c(Wg
z!&&@*l{93ePvV)04LmZ5c~xxQ^3|PwMU<3{?VB=9H3OB8sDV=wbv*=-0P53!;cm=P
z%33G|G5=C_-7&Bw{7onF>@R2}PvIP;iy&+P=q2LaG*}R?JR@cHLPv&qwzWtCQcE^^
zUjKB`R-%u-{D=1G5-5#?uQ|Vj05Zfu398^0md$kI4vuO|g&sY{+wE_TtGyp^cy|?1
zPtspm5#{kyu-q+c*?wV?06Tt_yuA+|Kfc&UcAD<}P}%xmspnQ+%OTu7_40vh=ndp(mz2cYyFz@2*~
z-bxkGzl*uH!8fT<=^wf{)}Uzp;BHl%H-6#`k>B3u?QT0V5&$5S45H&`C2P!J^7{Q=
z>N08gaL)7haZM_hD*Xg(bfi0ngy#^{=R`SU&$J4P&JJRuBG=yl119km?FWghn}3Xm
zQ*pi;8F}bIM#;%MLY|hbhIc#!LHpAhd0VLqW4Z}G-~)y0XLIKV0|6i%(N6#9b}SKP
zCq6!3oQoLa)mOL8o|fGMFRpy-pcS>Gn2ngQflm*=Tv1TK|0e^w!vfvXqJ>4%
zilgl9%`K_HT=N>{x~np=(^ANRB<+IDrpz*O(X?Ma3b8m;v?NCx)JK=WA!xR2hK8^e
zd1Y*EgIHMk@`o~Dnq;99#Hk;KAfW}H+bQt|H$V(}uM&xx7FkP1A^E9mLg~Ss+RWg}
z$~QVXXhf+!WWyssZI|0izMh|XOZcxwMjD47-^Htbzvr4>bGUn?b
ztGOtJw8otR6^zRC>a0VYd9)MFDvxq?jesxzCZe;F03++7bcx^>+xU3w_a&1$7m*-5
z2!$sNnQ~^@xqUQzOqo)k&0)8X69F3S5wOm-a9+%bXb{-?M}YZf7ATQsM{`|icj!ln
z1r;g6H?D2>AY}InymFDk&wk{v-}KR~%m-m_LN;Fb@M9GGNqM;;p1vIu(6k4Ks0Dxd
zj{|LK)=Jf01pQP6lrA(NIGt8>JCc5F9wmh{RZTQ9QWgSr83gj)2R|j#udSmnLm!?+
zhNF5R7MBi|Ai*|V{Qrf?YuZ}ROGV3qqERsypj7%>lv2a?dwMvo2R1lCq$Em>6jr?6
z!%7g$!`SJGC=9NCZQ(h^tcgtNHqU|pt>T4YJB;JMhU4RUl>E}#`7#ZmaV+-Gz_Iu)
z7NHTmi1FC+a88=idB~ijwuFM*bwhc#O%eN>9{Pr(Xpcp&&%RyfM6tszteqq&q#i@-
zX$k97a9RQPB^oz^sF0B5V=U5Ew~mCerbG=NMP=UxCg~P@3b5SBi^1
zC~6#k0OXPfNc-v+)Ym1?NGvMNz3HJP`N9&&oVml5)w|pDL$2lDn6{){CIpDi}gjU30I$*qnD=ZdGB+ciaZ
zB$oci8eSkqeoI5kDdd#+5Liq1%F5@4>js+%a+>=;fpy2h9%t@Q_hxi9f7z?aa}6_{zc>_&e&*HH
zbCP4!@R5o;6BcAM%ek;a`;jsJ*m+hicHAGdag-EKXX*(N?6~c+(bO9}i1a3!KUa9$
z);8Z4Ltv43gZZz0kS<=?rugo#=RAg@Q#`ovD6{@r;i=tuEVgfwE=;nXUROAWLEtl?MAvWd}(&5A#Z
zH%*yd@f5~jghk(1W$`zY4qv8R9yQu=Q#oKmn@89AU8lBw=~5T8
zGjInzT{ly{72%r1J)ecpHz&JS;>cWj42qxXM)!##uthkA27lLW2eL7V%agannMXJxe@P5^1U&`OjISNI8`B8grsk+-
ze?8p8kjAbVoczZAa$-F!kz3ikxDS-GZ&@uvG`xipmt`0xV)3-80`qZu-Szwawi(|@}
z&KPA<2IwWMQ9rtg*tkeRW>)<(G1{L;VcBSU
z6Wmlj5$Of~Lfq-bQeZFoa;Un=zf|{
ziGRozppRDa!p$57aC%q3;>p3cp|&n^afx@?{Aq_X9llnG=4jbk6Es|F@DFTsWwj^J
z2_Z)$Gunc`t!&R9&R#bg~TLBtt9d&6e5PNawNfU6dLzos~
z{+AkTs9BY7`}4+Wq4>f2L*^bjnq+<};!pcZ2wB~b#Mdt{+Rn!=Q$DRM7NLgkOUMx)U7yYfuKVnP6H?5F*p`3ivBE_pv)CMw
z^(STTiilka(#RYxFdYE(7EF3>z}vB|c&MLaG_=gXYd$2ArO*A4E0jqBq{?u^H)x==
zlm*MfSoO`<-9x-dKH!oF`U(6p^BLt!NJNjwy5h+1=)X)^r6KZ>#)6>wiZWwk
zL{wmYmj2OnnC~0g;v{&6KD^d=-Q3Gp<67SNZ2;l!Pn?~T)qZ{ioZ@OXFE2v6$6%0SY{y}77&8J?vb
z4k+18v3!!AwR}}n2koU%X{6xdZG?||q?<$t#U@C?9~t3E-ew*&Tm)LO*$B>yq|M~~+hss#C5W=Yff57)4Vb>GYM)wb
z6%y=S#;!ulKGaX^)JvLfrUH>2eRV4U+XP{^kD!|l#j0Qes2Th+SpderiMkvX>z_Qr
zSIes&jvKTV7_zKhg8vj2kdy7YKT{t8yohOC^X8NcJ|AE4GE_W?U}H;lVLf@TqGeq#
zD!o=J`(`%uTig@zUFWvP#`aJ>&(3v3g|v4ohz2y5fH#m|L9b%Zd;Eqh=f+kb=h2#+
zK;^;`>$LL1=PHCMSCte%z+9Z~sTyV@DtUPLYA^E5CP$j@XOKZ?
zo(B~e{tWkdlD^^Z%(PRV6x@sJQcN(vK{3Y5q&vA8OS8&-xFQK(}0H`e@x9uU&p
zRU>7hh!f0s-n3}USC06XMsd2=w{`2%$K*l~63RQ*;GoOXE#dOjsg2M@Bwt^@lLIZ(I|T3Pcj?L
zy+METnI7B83js3WGLN#rHd~*8e&iemq)1@Aij;Fu63-4jFOD1NV@|>d=|v1kOyc-@
z9)65y^j5|Ez>_UcIj9!^P?P`b5$G|9jM;8Q0U6C_Wr)v-wb0=XkeC}w$YdSS`Be!P
zksv^G7!z?Ai>u*F}!@r`~9I3v==bMFUF6g!|^b0*NDixiO
zHdkbH#1Ps7iaHmFjI(Jms-ixD-}Ia$IHpkr(2%`yh{9Vlzt*N?zL;I
z&ReObua#^g%ws^x3Cc_#t2&LquKDRt1`~0fs6T7(>1pUJj?6vnu*f39X{7qk=3;JS
zg2@rWs6Q2LjP1wq1BfVrVB*xPQDxKSJhi~TD9m^fQ!W@-V}{7BC8H0VFQsRH(N#U&
zpIEsGoq>1VMN&SY3{TbMB{zu3Q!MHfAbC0{n;g@)8G37@9u*!2$sslE8%>7k^fxRE
z08a9KNkgc>lax>g=>&7a|Ct9#Bq`_0(Wiu7gdl}u3{+B8i@R7^_*C{(Ewv7N6de#t~9F45UCW2-kO4@B8@=X7_M%&--vagut3V77iuu=kl5T
z!+viwL(2I8-N-M>2h+6Q%u7~7A`!|tTWwd{w|=mxzo9v%r=L+eCT%MKO0w>
zO9*U2iHwCp{K+S2eb{rd&AL)6O2GZS%t4ju
zY;IP#_piNRB-OrreoLU7>Jx%_Q&-i{#Ah?-iMrN;y==Ct1{*<+#;rGANO>KYi@2qx
zyrquC1)4H**x1j1wq_Rsoh0Wzg7V4hHVzfij1$_vhWe~x4f%|{T!{=3d)k}C=N^)%
zgeV?5mILe^S*kk!VE~{Uek0)^7lmuR(W9eB6_0oYpZ82juw|4PcOuMF*`P6Hvzg|h
z0e!mbc~vM9A-^L~?y)NLb=10ws;kPsNb+zTT~syR=oRm(3JkWkfqC;Q$N6#d@CWuA
z*XwtP41_8&=SFpY#kGe!zo<@Ck6U+3QuONLe&FWt*wWxEa8hM22Txz${NgXLe@$vK
z^fTrkCX~?U{%LOSy`VayPf}a!BWiAq|8LvQZIpK?H#69De%$|sR23EDfxf%X}zYqzRb%Ez_KsiAf?4QDbi
zwO050QQp+Q<$u=rJ@jrJZc&+e?k{Uxb0aoZ-zR3qoFVVu@0x+^6!M5>r6R
z=KgE6Tc+*h8LqvzvqfYL@tGGwXzwM}hvng7aBRA^X3>S4Cbv-R(ABN6-`J=~x=TR|
zX4{V7xs2<#21du-XRZ+
z0>iYg#zk4)mwlQoa2E>+4N`hmIF$|lv0STt{zhP=C$J_4229kdj3n5}26x59tp*&&
zj@r$#uGf{kq~Y5xktN;lPs>*C<@sAnt^@cH^_^_bwbN-QYOU+pRNr0%9nbvj{17bZ
zShj;Cx(wnF0_-$arCLX09Z-5Uj`swxsOd(~yFM3mbG2hfqzHO`@{DR%6>cmJzj@+X
z2(v(E`eN{3V&4A|PVCCGE=xe^AAJ3c-rhMRl8c=uYk|buY&Yjl<}0%Iuj%;PLoSY|
zLr}@}@^Atg*-Kx{z-J!^qgXC=F3O4GQ_AI7xl6Zt4rb2Cd4qJ~G*VFB-4o7K(`mur
z5l5bQ*Ok=dPy5SkX799Y+Hp)+ZnM|(w(GN~WV`<{BiAY^9$(A8zUAR(v#Yb~#xyi8
zP9(7ODenCGve6i(6Y(nlR*f{J8vD+D5rL1ydx#K#wQ|TI8`D8QE!O38H*Q?Cf$V!g
zyi#>JoImiv7Atk*w~HLGdi6F%ux_zOv@u|t-PHo%sE8Yfs
z98Y(x@~V5jDNmtw0~k6TONcIW{oH=Ln#RRn@N|zBN}|8RQXxW&_=$edXE?E&W$qKD
z4XVTJ;^8j%`IY0kLAdL#$^Uz*`LD(_0xmZY$PHkJZM@NYDvO;OfAzS1Im6-KY!wt*
z4{JHO23z-F?RETUwYPv6tfs&V*D?|Xi;yqFw`7!T7BYg3zPVA{g&ghHwg1vt&&-v3
zX`x~QHGB=a`t(yk8a|6i8O(SaG>&RLrc2%Jm?Z#&ICrPKccJF{tNQECJJ*bRxA
zOMLo(`Rz`iG#q2uER)lYwa!6r2vyRIo#vaRokzu=-?UZMW+<$vXo|~T{w~AjsMxv2
z;d6EshykFXmmVyrm*OFPR`9>|+{~us^VNoB`UNwI+jqn$cTb?Y^*qQxjC(b)o|Njz
zRM{-^&07c&qEND=jI1w@P&2jf<)7ZR8C6;Ou__92VcUM!X-*RoLmO(Nj)s|+20I#o
zLba(8wJ@vDy@B?Xj+XUm$xQ!52cOG6dNat0fO^O
+
+
+
+
+
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/res/layout/custom_my_info_view.xml b/coalMiningApp/app/src/main/res/layout/custom_my_info_view.xml
index 87ee061..8c7ac1a 100644
--- a/coalMiningApp/app/src/main/res/layout/custom_my_info_view.xml
+++ b/coalMiningApp/app/src/main/res/layout/custom_my_info_view.xml
@@ -7,49 +7,44 @@
-
+ android:paddingHorizontal="15dp">
-
-
-
-
-
-
-
+ android:scaleType="fitCenter"
+ android:padding="11dp"
+ tools:src="@mipmap/network"
+ tools:background="@drawable/bg_icon_network_config"/>
+
-
-
+
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/res/layout/fragment_home.xml b/coalMiningApp/app/src/main/res/layout/fragment_home.xml
index 49291b7..6b2e962 100644
--- a/coalMiningApp/app/src/main/res/layout/fragment_home.xml
+++ b/coalMiningApp/app/src/main/res/layout/fragment_home.xml
@@ -59,6 +59,10 @@
android:layout_below="@+id/title_sec"
android:layout_marginHorizontal="5dp"
android:layout_marginTop="8dp"
+ tools:itemCount="6"
+ app:spanCount="2"
+ android:overScrollMode="never"
+ app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
tools:listitem="@layout/item_home_menu_left_right" />
+
+
@@ -92,7 +93,8 @@
android:layout_height="68dp"
android:layout_centerHorizontal="true"
android:layout_marginTop="60dp"
- android:background="#e3e3e3" />
+ app:srcCompat="@drawable/ic_avatar"/>
+
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/res/layout/item_home_menu_left_right.xml b/coalMiningApp/app/src/main/res/layout/item_home_menu_left_right.xml
index 8bbfe27..e7ac021 100644
--- a/coalMiningApp/app/src/main/res/layout/item_home_menu_left_right.xml
+++ b/coalMiningApp/app/src/main/res/layout/item_home_menu_left_right.xml
@@ -7,34 +7,36 @@
-
+
+
-
-
-
+
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/res/layout/item_home_menu_top_bottom.xml b/coalMiningApp/app/src/main/res/layout/item_home_menu_top_bottom.xml
index 88c6509..a6c6022 100644
--- a/coalMiningApp/app/src/main/res/layout/item_home_menu_top_bottom.xml
+++ b/coalMiningApp/app/src/main/res/layout/item_home_menu_top_bottom.xml
@@ -7,9 +7,11 @@
-
-
+
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/res/layout/list_item_rock.xml b/coalMiningApp/app/src/main/res/layout/list_item_rock.xml
index 602d7c4..3794596 100644
--- a/coalMiningApp/app/src/main/res/layout/list_item_rock.xml
+++ b/coalMiningApp/app/src/main/res/layout/list_item_rock.xml
@@ -24,7 +24,7 @@
android:maxLines="1"
android:textCursorDrawable="@drawable/cursor_white"
android:minWidth="30dp"
- android:maxWidth="35dp"
+ android:maxWidth="55dp"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:textColor="@color/white"
@@ -47,7 +47,7 @@
android:maxLines="1"
android:textCursorDrawable="@drawable/cursor_white"
android:minWidth="30dp"
- android:maxWidth="35dp"
+ android:maxWidth="55dp"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:textColor="@color/white"
@@ -72,7 +72,7 @@
android:maxLines="1"
android:textCursorDrawable="@drawable/cursor_white"
android:minWidth="30dp"
- android:maxWidth="35dp"
+ android:maxWidth="55dp"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:textColor="@color/white"
diff --git a/coalMiningApp/app/src/main/res/layout/list_item_tunnel_working_face.xml b/coalMiningApp/app/src/main/res/layout/list_item_tunnel_working_face.xml
index cb1e861..923f70c 100644
--- a/coalMiningApp/app/src/main/res/layout/list_item_tunnel_working_face.xml
+++ b/coalMiningApp/app/src/main/res/layout/list_item_tunnel_working_face.xml
@@ -26,10 +26,22 @@
app:shapeStrokeColor="#FF26FFEB"
app:shapeStrokeWidth="0.5dp">
+
+
+
+
+
diff --git a/coalMiningApp/app/src/main/res/layout/list_item_tunnel_working_face_record.xml b/coalMiningApp/app/src/main/res/layout/list_item_tunnel_working_face_record.xml
index 4263451..7117155 100644
--- a/coalMiningApp/app/src/main/res/layout/list_item_tunnel_working_face_record.xml
+++ b/coalMiningApp/app/src/main/res/layout/list_item_tunnel_working_face_record.xml
@@ -8,7 +8,7 @@
-
@@ -68,7 +68,21 @@
android:layout_width="match_parent"
android:layout_height="1dp"
app:dividerColor="#282C38"
+ android:layout_gravity="bottom"
android:visibility="visible"/>
-
+
+
+
+
+
\ No newline at end of file
diff --git a/coalMiningApp/app/src/main/res/xml/file_paths.xml b/coalMiningApp/app/src/main/res/xml/file_paths.xml
new file mode 100644
index 0000000..ffa74ab
--- /dev/null
+++ b/coalMiningApp/app/src/main/res/xml/file_paths.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file