Compare commits

13 Commits
74 changed files with 1887 additions and 1547 deletions
+5
View File
@@ -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")
}
+20 -5
View File
@@ -3,7 +3,11 @@
xmlns:tools="http://schemas.android.com/tools"
package="com.zmkg.coaloperation">
<uses-permission android:name="android.permission.INTERNET " />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage"/>
<application
android:name=".MyApplication"
@@ -15,6 +19,17 @@
android:usesCleartextTraffic="true"
android:networkSecurityConfig="@xml/network_security_config"
tools:replace="android:allowBackup">
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"/>
</provider>
<activity
android:name=".MainActivity"
android:exported="false" />
@@ -31,13 +46,13 @@
<activity android:name=".ui.user.activity.CacheManageActivity" />
<activity android:name=".ui.user.activity.AboutUsActivity" />
<activity android:name=".ui.home.activity.GeologicalActivity" />
<activity android:name=".ui.tunneling.activity.WorkingFaceStatisticsActivity" />
<activity android:name=".ui.tunneling.activity.WorkingFaceRecordActivity" />
<activity android:name=".ui.tunneling.activity.WorkingFaceDetailActivity" />
<activity android:name=".ui.tunneling.activity.WorkingPointActivity" />
<activity android:name=".ui.tunneling.activity.WorkingFaceDetail2Activity" />
<activity android:name=".ui.tunneling.activity.AddWorkingPointActivity"
<activity android:name=".ui.tunneling.activity.AddWorkingFaceRecordActivity"
android:windowSoftInputMode="adjustPan"/>
<activity android:name=".ui.tunneling.activity.TunnelingActivity" />
<activity android:name=".ui.tunneling.activity.WorkFaceActivity"
<activity android:name=".ui.tunneling.activity.AddWorkingFaceActivity"
android:windowSoftInputMode="adjustPan" />
</application>
@@ -7,7 +7,8 @@ import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.zmkg.coaloperation.R
import com.zmkg.coaloperation.databinding.ListItemRockBinding
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelRoofLithologyEntity
import com.zmkg.coaloperation.db.entity.tunnel.TunnelRoofLithologyEntity
import com.zmkg.coaloperation.utils.formatDecimalString
class TunnelRoofLithologyAdapter(var list: MutableList<TunnelRoofLithologyEntity>) :
BaseQuickAdapter<TunnelRoofLithologyEntity, TunnelRoofLithologyAdapter.VH>(
@@ -34,13 +35,13 @@ class TunnelRoofLithologyAdapter(var list: MutableList<TunnelRoofLithologyEntity
addTextChangedListener(onTextChanged = { text, start, before, count ->
item.positionStart = text.toString().trim()
})
setText(item.positionStart)
setText(item.positionStart.formatDecimalString())
}
it.tvRockEndLen.run {
addTextChangedListener(onTextChanged = { text, start, before, count ->
item.positionEnd = text.toString().trim()
})
setText(item.positionEnd)
setText(item.positionEnd.formatDecimalString())
}
it.tvRockType.run {
addTextChangedListener(onTextChanged = { text, start, before, count ->
@@ -13,9 +13,9 @@ import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.zmkg.coaloperation.R
import com.zmkg.coaloperation.databinding.ListItemTunnelWorkingFaceBinding
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity
import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceEntity
import com.zmkg.coaloperation.ui.tunneling.activity.TunnelingActivity
import com.zmkg.coaloperation.ui.tunneling.activity.WorkingPointActivity
import com.zmkg.coaloperation.ui.tunneling.activity.WorkingFaceRecordActivity
import com.zmkg.coaloperation.utils.ScreenUtil
import com.zmkg.coaloperation.utils.gone
import com.zmkg.coaloperation.utils.toJsonString
@@ -49,6 +49,9 @@ class TunnelWorkingFaceAdapter(var list: MutableList<TunnelWorkingFaceEntity>) :
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
)
@@ -81,10 +84,10 @@ class TunnelWorkingFaceAdapter(var list: MutableList<TunnelWorkingFaceEntity>) :
Log.d(TAG, "convert: ${item.records!![recordPosition].toJsonString()}")
context.let { ctx ->
if (ctx is TunnelingActivity) {
ctx.toActivity(WorkingPointActivity::class.java, Bundle().apply {
putString(WorkingPointActivity.FACE_NAME, item.surfaceName)
ctx.toActivity(WorkingFaceRecordActivity::class.java, Bundle().apply {
putString(WorkingFaceRecordActivity.FACE_NAME, item.surfaceName)
putParcelable(
WorkingPointActivity.FACE_RECORD,
WorkingFaceRecordActivity.FACE_RECORD,
item.records!![recordPosition]
)
})
@@ -1,15 +1,16 @@
package com.zmkg.coaloperation.adapter
import android.graphics.Color
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.zmkg.coaloperation.R
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceRecordEntity
import com.zmkg.coaloperation.db.entity.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<TunnelWorkingFaceRecordEntity>) :
BaseQuickAdapter<TunnelWorkingFaceRecordEntity, TunnelWorkingFaceRecordAdapter.VH>(
@@ -50,6 +51,11 @@ class TunnelWorkingFaceRecordAdapter(var list: MutableList<TunnelWorkingFaceReco
it.operation.text = if (item.operationType == "1") "查看" else "操作"
it.divider.visibility =
if (position == list.size - 1) View.GONE else View.VISIBLE
it.ivFlagEdit.let {
if (item.dataState == "1") it.visible() else it.gone()
}
}
}
@@ -9,21 +9,21 @@ import androidx.core.view.updateLayoutParams
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.RockItem
import com.zmkg.coaloperation.bean.WorkingFaceItem
import com.zmkg.coaloperation.bean.TunnelWorkingItem
import com.zmkg.coaloperation.databinding.ListItemRockBinding
import com.zmkg.coaloperation.databinding.ListItemWorkingFaceBinding
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelRoofLithologyEntity
import com.zmkg.coaloperation.databinding.ListItemTunnelWorkingItemBinding
import com.zmkg.coaloperation.db.entity.tunnel.TunnelRoofLithologyEntity
import com.zmkg.coaloperation.utils.ScreenUtil
import com.zmkg.coaloperation.utils.formatDecimalString
class WorkingItemAdapter(data: MutableList<WorkingFaceItem>) :
BaseQuickAdapter<WorkingFaceItem, WorkingItemAdapter.VH>(
R.layout.list_item_working_face,
class TunnelWorkingItemAdapter(data: MutableList<TunnelWorkingItem>) :
BaseQuickAdapter<TunnelWorkingItem, TunnelWorkingItemAdapter.VH>(
R.layout.list_item_tunnel_working_item,
data
) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH {
val binding = ListItemWorkingFaceBinding.inflate(
val binding = ListItemTunnelWorkingItemBinding.inflate(
LayoutInflater.from(parent.context),
parent,
false
@@ -35,12 +35,12 @@ class WorkingItemAdapter(data: MutableList<WorkingFaceItem>) :
override fun convert(
holder: VH,
item: WorkingFaceItem
item: TunnelWorkingItem
) {
if (item.pageType == 0) {
loadFaceData(holder.binding, item)
} else if (item.pageType == 1) {
loadPointData(holder.binding, item)
loadRecordData(holder.binding, item)
}
val position = holder.layoutPosition
holder.binding.divider.let {
@@ -52,7 +52,7 @@ class WorkingItemAdapter(data: MutableList<WorkingFaceItem>) :
}
}
private fun loadPointData(binding: ListItemWorkingFaceBinding, item: WorkingFaceItem) {
private fun loadRecordData(binding: ListItemTunnelWorkingItemBinding, item: TunnelWorkingItem) {
binding.run {
tvItemName.text = item.name
if (item.items.isNullOrEmpty()) {
@@ -73,7 +73,7 @@ class WorkingItemAdapter(data: MutableList<WorkingFaceItem>) :
}
}
}
private fun loadFaceData(binding: ListItemWorkingFaceBinding, item: WorkingFaceItem) {
private fun loadFaceData(binding: ListItemTunnelWorkingItemBinding, item: TunnelWorkingItem) {
binding.tvItemName.let {
it.updateLayoutParams { height = ScreenUtil.dp2px(50f) }
it.text = item.name
@@ -96,12 +96,12 @@ class WorkingItemAdapter(data: MutableList<WorkingFaceItem>) :
tvRockStartLen.let {
it.focusable = EditText.NOT_FOCUSABLE
it.setOnKeyListener(null)
it.setText(item.positionStart)
it.setText(item.positionStart.formatDecimalString())
}
tvRockEndLen.let {
it.focusable = EditText.NOT_FOCUSABLE
it.setOnKeyListener(null)
it.setText(item.positionEnd)
it.setText(item.positionEnd.formatDecimalString())
}
tvRockType.let {
it.focusable = EditText.NOT_FOCUSABLE
@@ -114,5 +114,5 @@ class WorkingItemAdapter(data: MutableList<WorkingFaceItem>) :
}
inner class VH(var binding: ListItemWorkingFaceBinding) : BaseViewHolder(binding.root)
inner class VH(var binding: ListItemTunnelWorkingItemBinding) : BaseViewHolder(binding.root)
}
@@ -1,4 +1,4 @@
package com.zmkg.coaloperation.ui.tunneling.adapter
package com.zmkg.coaloperation.adapter
import android.view.LayoutInflater
import android.view.ViewGroup
@@ -6,7 +6,8 @@ import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.zmkg.coaloperation.R
import com.zmkg.coaloperation.databinding.ItemRockNatureBinding
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelRoofLithologyEntity
import com.zmkg.coaloperation.db.entity.tunnel.TunnelRoofLithologyEntity
import com.zmkg.coaloperation.utils.formatDecimalString
/**
@@ -29,8 +30,8 @@ class TunnelingRockNatureAdapter(list: MutableList<TunnelRoofLithologyEntity>) :
override fun convert(holder: VH, item: TunnelRoofLithologyEntity) {
holder.binding.let {
it.tvRock1Start.text = item.positionStart
it.tvRock1End.text = item.positionEnd
it.tvRock1Start.text = item.positionStart.formatDecimalString()
it.tvRock1End.text = item.positionEnd.formatDecimalString()
it.tvRock1Name.text = item.lithologyType
}
}
@@ -1,4 +1,4 @@
package com.zmkg.coaloperation.ui.tunneling.bean
package com.zmkg.coaloperation.bean
data class DictBean(
var seam_list: Map<String, String>?,
@@ -0,0 +1,29 @@
package com.zmkg.coaloperation.bean
import com.zmkg.coaloperation.db.entity.tunnel.TunnelRoofLithologyEntity
import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceEntity
import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceRecordEntity
data class TunnelWorkingItem(
var name: String? = "",
var value: String? = "",
var items: MutableList<TunnelRoofLithologyEntity>? = null,
var pageType:Int = 0
)
data class RockItem(
var startLen: Int = 0,
var endLen: Int = 0,
val rockType: String = ""
)
data class WorkOption(
var id:String,
var name: String
)
data class TunnelSubmitData(
var faceList: MutableList<TunnelWorkingFaceEntity>?=null,
var recordList: MutableList<TunnelWorkingFaceRecordEntity>?=null,
var lithologyList: MutableList<TunnelRoofLithologyEntity>?=null
)
@@ -0,0 +1,170 @@
package com.zmkg.coaloperation.bean
import java.io.Serializable
/**
* 掘进
*/
//data class TunnelingHomeBean(
// var contentList: MutableList<TunnelingHomeItemBean>?,
// val createBy: String?,
// val createTime: String?,
// val updateBy: String?,
// val updateTime: String?,
// val remark: String?,
// val surfaceId: String?,
// val totalFootage: String?,
// val seamId: String?,
// val areaId: String?,
// val seamName: String?,
// val surfaceName: String?,
// val areaName: String?,
// val surfaceAzimuth: String?,
// val surfaceHeight: String?,
// val surfaceWidth: String?,
// val tunnelNature: String?,
// val planStartDate: String?,
// val planEndDate: String?,
// val geologicalType: String?,
// val hydrogeologicalType: String?,
// val seamIgnition: String?,
// val seamGas: String?,
// 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
//)
data class Params(
val additionalProp1: String? = null,
val additionalProp2: String? = null,
val additionalProp3: String? = null
):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<MineWorkingLithology>,
// 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
@@ -1,21 +0,0 @@
package com.zmkg.coaloperation.bean
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelRoofLithologyEntity
data class WorkingFaceItem(
var name: String? = "",
var value: String? = "",
var items: MutableList<TunnelRoofLithologyEntity>? = null,
var pageType:Int = 0
)
data class RockItem(
var startLen: Int = 0,
var endLen: Int = 0,
val rockType: String = ""
)
data class WorkOption(
var id:String,
var name: String
)
@@ -1,18 +1,10 @@
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.db.entity.tunnel.TunnelWorkingFaceEntity
import com.zmkg.coaloperation.retorfit.UrlConfig
import com.zmkg.coaloperation.ui.tunneling.bean.FaceWorkDetailBean
import com.zmkg.coaloperation.ui.tunneling.bean.TunnelingHomeBean
import com.zmkg.coaloperation.ui.tunneling.bean.TunnelingHomeItemBean
import com.zmkg.coaloperation.ui.home.bean.WaterLedgerBean
import kotlinx.coroutines.flow.MutableSharedFlow
import okhttp3.RequestBody
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.POST
import retrofit2.http.Path
/**
* 首页
@@ -29,26 +21,26 @@ interface HomeApi {
/**
* 掘进-首页-工作面列表
*/
@GET("/api/mine/tunnelling/surface/list")
suspend fun getTunnelingHomeData(): ApiResponse<MutableList<TunnelingHomeBean>>
// @GET("/api/mine/tunnelling/surface/list")
// suspend fun getTunnelingHomeData(): ApiResponse<MutableList<TunnelingHomeBean>>
/**
* 掘进-首页-工作面记录列表
*/
@GET("/api/mine/tunnelling/surface/record/{recordId}")
suspend fun getTunnelingHomeItemData(@Path("recordId") recordId: String?): ApiResponse<MutableList<TunnelingHomeItemBean>>
// /**
// * 掘进-首页-工作面记录列表
// */
// @GET("/api/mine/tunnelling/surface/record/{recordId}")
// suspend fun getTunnelingHomeItemData(@Path("recordId") recordId: String?): ApiResponse<MutableList<TunnelingHomeItemBean>>
/**
* 掘进-工作面详情
*/
@GET("/api/mine/tunnelling/surface/detail/{surfaceId}")
suspend fun getTunnelingSurfaceDetail(@Path("surfaceId") surfaceId: String?): ApiResponse<FaceWorkDetailBean>
// /**
// * 掘进-工作面详情
// */
// @GET("/api/mine/tunnelling/surface/detail/{surfaceId}")
// suspend fun getTunnelingSurfaceDetail(@Path("surfaceId") surfaceId: String?): ApiResponse<FaceWorkDetailBean>
/**
* 掘进-新增工作面
*/
@POST("/api/mine/tunnelling/surface/add")
suspend fun postTunnellingSurfaceAdd(@Body requestBody: RequestBody): ApiResponse<String>
// @POST("/api/mine/tunnelling/surface/add")
// suspend fun postTunnellingSurfaceAdd(@Body requestBody: RequestBody): ApiResponse<String>
@GET("/api/mine/tunnelling/surface/detailList")
suspend fun getTunnelHomeList(): ApiResponse<MutableList<TunnelWorkingFaceEntity>?>
@@ -3,16 +3,9 @@ package com.zmkg.coaloperation.data.repository
import com.zmkg.coaloperation.base.repository.BaseRepository
import com.zmkg.coaloperation.data.api.HomeApi
import com.zmkg.coaloperation.data.bean.ApiResponse
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity
import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceEntity
import com.zmkg.coaloperation.retorfit.RetrofitManager
import com.zmkg.coaloperation.retorfit.RetrofitManager.toRequestBody
import com.zmkg.coaloperation.superfuntion.toJson
import com.zmkg.coaloperation.ui.tunneling.bean.FaceWorkDetailBean
import com.zmkg.coaloperation.ui.tunneling.bean.TunnelingFaceAddBean
import com.zmkg.coaloperation.ui.tunneling.bean.TunnelingHomeBean
import com.zmkg.coaloperation.ui.tunneling.bean.TunnelingHomeItemBean
import com.zmkg.coaloperation.ui.home.bean.WaterLedgerBean
import kotlinx.coroutines.flow.MutableSharedFlow
object HomeRepository : BaseRepository(){
@@ -30,44 +23,44 @@ object HomeRepository : BaseRepository(){
}
}
/**
* 掘进-首页-工作面列表
*/
suspend fun getTunnelingHomeData(): ApiResponse<MutableList<TunnelingHomeBean>> {
return apiCall {
val map = mutableMapOf<String, Any?>()
service.getTunnelingHomeData()
}
}
/**
* 掘进-首页-工作面记录列表
*/
suspend fun getTunnelingHomeItemData(surfaceId: String?): ApiResponse<MutableList<TunnelingHomeItemBean>> {
return apiCall {
val map = mutableMapOf<String, Any?>()
service.getTunnelingHomeItemData(surfaceId)
}
}
/**
* 掘进-工作面详情
*/
suspend fun getTunnelingSurfaceDetail(surfaceId: String?): ApiResponse<FaceWorkDetailBean> {
return apiCall {
val map = mutableMapOf<String, Any?>()
service.getTunnelingSurfaceDetail(surfaceId)
}
}
/**
* 掘进-新增工作面
*/
suspend fun postTunnellingSurfaceAdd(tunnelingFaceAddBean: TunnelingFaceAddBean): ApiResponse<String> {
return apiCall {
service.postTunnellingSurfaceAdd(tunnelingFaceAddBean.toJson().toRequestBody())
}
}
// /**
// * 掘进-首页-工作面列表
// */
// suspend fun getTunnelingHomeData(): ApiResponse<MutableList<TunnelingHomeBean>> {
// return apiCall {
// val map = mutableMapOf<String, Any?>()
// service.getTunnelingHomeData()
// }
// }
// /**
// * 掘进-首页-工作面记录列表
// */
// suspend fun getTunnelingHomeItemData(surfaceId: String?): ApiResponse<MutableList<TunnelingHomeItemBean>> {
// return apiCall {
// val map = mutableMapOf<String, Any?>()
// service.getTunnelingHomeItemData(surfaceId)
// }
// }
// /**
// * 掘进-工作面详情
// */
// suspend fun getTunnelingSurfaceDetail(surfaceId: String?): ApiResponse<FaceWorkDetailBean> {
// return apiCall {
// val map = mutableMapOf<String, Any?>()
// service.getTunnelingSurfaceDetail(surfaceId)
// }
// }
//
// /**
// * 掘进-新增工作面
// */
// suspend fun postTunnellingSurfaceAdd(tunnelingFaceAddBean: TunnelingFaceAddBean): ApiResponse<String> {
// return apiCall {
// service.postTunnellingSurfaceAdd(tunnelingFaceAddBean.toJson().toRequestBody())
// }
// }
//
suspend fun getTunnelHomeList() : ApiResponse<MutableList<TunnelWorkingFaceEntity>?> {
return apiCall {
service.getTunnelHomeList()
@@ -9,9 +9,9 @@ import androidx.sqlite.db.SupportSQLiteDatabase
import com.zmkg.coaloperation.db.dao.TunnelRoofLithologyDao
import com.zmkg.coaloperation.db.dao.TunnelWorkingFaceDao
import com.zmkg.coaloperation.db.dao.TunnelWorkingFaceRecordDao
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelRoofLithologyEntity
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceRecordEntity
import com.zmkg.coaloperation.db.entity.tunnel.TunnelRoofLithologyEntity
import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceEntity
import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceRecordEntity
@Database(
entities = [
@@ -5,7 +5,7 @@ import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
import androidx.room.Update
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelRoofLithologyEntity
import com.zmkg.coaloperation.db.entity.tunnel.TunnelRoofLithologyEntity
@Dao
interface TunnelRoofLithologyDao {
@@ -5,7 +5,7 @@ import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
import androidx.room.Update
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity
import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceEntity
//import kotlinx.coroutines.flow.Flow
@@ -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<TunnelWorkingFaceEntity>?
@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<TunnelWorkingFaceEntity>?
@Query("SELECT * FROM tunnel_working_face WHERE surfaceId = :surfaceId")
@@ -5,8 +5,7 @@ import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
import androidx.room.Update
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceRecordEntity
import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceRecordEntity
//import kotlinx.coroutines.flow.Flow
@@ -21,16 +20,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<TunnelWorkingFaceRecordEntity>?
@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<TunnelWorkingFaceRecordEntity>?
@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")
@@ -1,4 +0,0 @@
package com.zmkg.coaloperation.db.entiry
class OtherEntity {
}
@@ -0,0 +1,4 @@
package com.zmkg.coaloperation.db.entity
class OtherEntity {
}
@@ -1,4 +1,4 @@
package com.zmkg.coaloperation.db.entiry.tunnel
package com.zmkg.coaloperation.db.entity.tunnel
import android.os.Parcelable
import androidx.room.Entity
@@ -1,4 +1,4 @@
package com.zmkg.coaloperation.db.entiry.tunnel
package com.zmkg.coaloperation.db.entity.tunnel
//import androidx.room.ColumnInfo
import android.os.Parcelable
@@ -1,10 +1,9 @@
package com.zmkg.coaloperation.db.entiry.tunnel
package com.zmkg.coaloperation.db.entity.tunnel
import android.os.Parcelable
import androidx.room.Entity
import androidx.room.Ignore
import androidx.room.PrimaryKey
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity
import com.zmkg.coaloperation.utils.DateTimeUtil
import kotlinx.parcelize.Parcelize
import java.time.LocalDateTime
@@ -1,7 +1,7 @@
package com.zmkg.coaloperation.db.repository
import com.zmkg.coaloperation.db.dao.TunnelRoofLithologyDao
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelRoofLithologyEntity
import com.zmkg.coaloperation.db.entity.tunnel.TunnelRoofLithologyEntity
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
@@ -1,7 +1,7 @@
package com.zmkg.coaloperation.db.repository
import com.zmkg.coaloperation.db.dao.TunnelWorkingFaceRecordDao
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceRecordEntity
import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceRecordEntity
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
@@ -1,7 +1,7 @@
package com.zmkg.coaloperation.db.repository
import com.zmkg.coaloperation.db.dao.TunnelWorkingFaceDao
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity
import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceEntity
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
@@ -4,7 +4,7 @@ import android.app.Application
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.viewModelScope
import com.zmkg.coaloperation.db.AppDatabase
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelRoofLithologyEntity
import com.zmkg.coaloperation.db.entity.tunnel.TunnelRoofLithologyEntity
import com.zmkg.coaloperation.db.repository.TunnelRoofLithologyRepository
import kotlinx.coroutines.launch
@@ -4,7 +4,7 @@ import android.app.Application
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.viewModelScope
import com.zmkg.coaloperation.db.AppDatabase
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceRecordEntity
import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceRecordEntity
import com.zmkg.coaloperation.db.repository.TunnelWorkingFaceRecordRepository
import kotlinx.coroutines.launch
@@ -4,11 +4,9 @@ import android.app.Application
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.viewModelScope
import com.zmkg.coaloperation.db.AppDatabase
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity
import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceEntity
import com.zmkg.coaloperation.db.repository.TunnelWorkingFaceRepository
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
class TunnelWorkingFaceViewModel(application: Application) : AndroidViewModel(application) {
private val repository: TunnelWorkingFaceRepository
@@ -0,0 +1,28 @@
package com.zmkg.coaloperation.ui.mining
import android.os.Bundle
import android.view.View
import com.zmkg.coaloperation.R
import com.zmkg.coaloperation.base.BaseVMBActivity
import com.zmkg.coaloperation.base.viewmodel.TestViewModel
import com.zmkg.coaloperation.databinding.ActivityMiningBinding
class MiningActivity :
BaseVMBActivity<TestViewModel, ActivityMiningBinding>(R.layout.activity_mining) {
override fun initView(savedInstanceState: Bundle?) {
TODO("Not yet implemented")
}
override fun initData() {
TODO("Not yet implemented")
}
override fun bindEvent() {
TODO("Not yet implemented")
}
override fun processClick(v: View?) {
TODO("Not yet implemented")
}
}
@@ -4,28 +4,21 @@ import android.os.Bundle
import android.text.TextUtils
import android.view.View
import android.widget.TextView
import androidx.lifecycle.Lifecycle
import androidx.core.view.isGone
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.zmkg.coaloperation.R
import com.zmkg.coaloperation.base.BaseVMBActivity
import com.zmkg.coaloperation.databinding.ActivityWorkFaceBinding
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity
import com.zmkg.coaloperation.db.viewmodel.TunnelWorkingFaceViewModel
import com.zmkg.coaloperation.event.TunnelingWorkFaceRefreshEvent
import com.zmkg.coaloperation.ui.tunneling.viewmodel.TunnelingViewModel
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
import org.greenrobot.eventbus.EventBus
import androidx.core.view.isGone
import com.zmkg.coaloperation.bean.WorkOption
import com.zmkg.coaloperation.databinding.ActivityAddWorkingFaceBinding
import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceEntity
import com.zmkg.coaloperation.db.viewmodel.TunnelWorkingFaceViewModel
import com.zmkg.coaloperation.ui.tunneling.viewmodel.TunnelingViewModel
import com.zmkg.coaloperation.utils.DateTimeUtil
import com.zmkg.coaloperation.utils.DictUtils
import com.zmkg.coaloperation.utils.PickerUtil
import com.zmkg.coaloperation.utils.gone
import com.zmkg.coaloperation.utils.visible
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
import java.time.LocalDateTime
@@ -33,8 +26,8 @@ import java.time.LocalDateTime
/**
* 工作面
*/
class WorkFaceActivity :
BaseVMBActivity<TunnelingViewModel, ActivityWorkFaceBinding>(R.layout.activity_work_face) {
class AddWorkingFaceActivity :
BaseVMBActivity<TunnelingViewModel, ActivityAddWorkingFaceBinding>(R.layout.activity_add_working_face) {
companion object {
private const val TAG = "WorkFaceActivity"
@@ -79,7 +72,7 @@ class WorkFaceActivity :
mBinding.expandLayout.visible()
mBinding.imgExpand.gone()
faceDetail =
intent.getParcelableExtra(WorkingFaceDetail2Activity.FACE_WORK_DETAIL_DATA) as TunnelWorkingFaceEntity?
intent.getParcelableExtra(WorkingFaceDetailActivity.FACE_WORK_DETAIL_DATA) as TunnelWorkingFaceEntity?
if (faceDetail == null) {
showToast("未查询到工作面数据")
return
@@ -108,7 +101,7 @@ class WorkFaceActivity :
PickerUtil.showOptionPicker(this, "请选择所属煤层", DictUtils.seamList) { option ->
mBinding.tvSeamName.text = option.name
mBinding.tvSeamName.tag = option.id
seamAreaList = DictUtils.areaMap[option.id]?:mutableListOf()
seamAreaList = DictUtils.areaMap[option.id] ?: mutableListOf()
}
}
mBinding.tvAreaName.setOnClickListener { v ->
@@ -170,16 +163,6 @@ class WorkFaceActivity :
override fun createObserve() {
super.createObserve()
lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
mViewModel.tunnelingWorkFaceAdd.collectLatest {
showToast("新增成功")
EventBus.getDefault().post(TunnelingWorkFaceRefreshEvent())
delay(200)
finish()
}
}
}
}
override fun processClick(v: View?) {
@@ -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.databinding.ActivityAddWorkingPointBinding
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelRoofLithologyEntity
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceRecordEntity
import com.zmkg.coaloperation.bean.TunnelWorkingItem
import com.zmkg.coaloperation.databinding.ActivityAddWorkingFaceRecordBinding
import com.zmkg.coaloperation.db.entity.tunnel.TunnelRoofLithologyEntity
import com.zmkg.coaloperation.db.entity.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
@@ -29,8 +35,8 @@ import java.time.LocalDateTime
/**
* 开始记录
*/
class AddWorkingPointActivity :
BaseVMBActivity<TestViewModel, ActivityAddWorkingPointBinding>(R.layout.activity_add_working_point) {
class AddWorkingFaceRecordActivity :
BaseVMBActivity<TestViewModel, ActivityAddWorkingFaceRecordBinding>(R.layout.activity_add_working_face_record) {
companion object {
const val TAG = "AddWorkingPointActivity"
@@ -115,13 +121,19 @@ class AddWorkingPointActivity :
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 AddWorkingPointActivity :
}
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 AddWorkingPointActivity :
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 AddWorkingPointActivity :
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 AddWorkingPointActivity :
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 AddWorkingPointActivity :
}
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<TunnelWorkingItem> = 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)
}
}
}
@@ -10,8 +10,8 @@ import com.zmkg.coaloperation.adapter.TunnelWorkingFaceAdapter
import com.zmkg.coaloperation.adapter.TunnelWorkingFaceRecordAdapter
import com.zmkg.coaloperation.base.BaseVMBActivity
import com.zmkg.coaloperation.databinding.ActivityTunnelingBinding
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceRecordEntity
import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceEntity
import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceRecordEntity
import com.zmkg.coaloperation.db.viewmodel.TunnelWorkingFaceRecordViewModel
import com.zmkg.coaloperation.db.viewmodel.TunnelWorkingFaceViewModel
import com.zmkg.coaloperation.ui.tunneling.viewmodel.TunnelingViewModel
@@ -43,8 +43,8 @@ class TunnelingActivity :
TunnelWorkingFaceAdapter(workingFaceList).apply {
setOnItemChildClickListener { _, view, position ->
if (view.id == R.id.llWorkingFace) {
toActivity(WorkingFaceDetailActivity::class.java, Bundle().apply {
putParcelable(WorkingFaceDetailActivity.FACE_DETAIL, workingFaceList[position])
toActivity(WorkingFaceStatisticsActivity::class.java, Bundle().apply {
putParcelable(WorkingFaceStatisticsActivity.FACE_DETAIL, workingFaceList[position])
})
return@setOnItemChildClickListener
}
@@ -59,16 +59,16 @@ class TunnelingActivity :
return@setOnItemChildClickListener
}
if (view.id == R.id.start_record) {
toActivity(AddWorkingPointActivity::class.java, Bundle().apply {
toActivity(AddWorkingFaceRecordActivity::class.java, Bundle().apply {
putLong(
AddWorkingPointActivity.FACE_ID,
AddWorkingFaceRecordActivity.FACE_ID,
workingFaceList[position].surfaceId
)
putString(
AddWorkingPointActivity.FACE_NAME,
AddWorkingFaceRecordActivity.FACE_NAME,
workingFaceList[position].surfaceName
)
putInt(AddWorkingPointActivity.SHOW_TYPE, 0)
putInt(AddWorkingFaceRecordActivity.SHOW_TYPE, 0)
})
}
}
@@ -105,8 +105,8 @@ class TunnelingActivity :
override fun bindEvent() {
mBinding.toolbarLay.titleTvRight.setOnClickListener {
toActivity(WorkFaceActivity::class.java, Bundle().apply {
putString(WorkFaceActivity.WORK_FACE_TYPE, WorkFaceActivity.WorkFaceType.ADD.name)
toActivity(AddWorkingFaceActivity::class.java, Bundle().apply {
putString(AddWorkingFaceActivity.WORK_FACE_TYPE, AddWorkingFaceActivity.WorkFaceType.ADD.name)
})
}
}
@@ -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
@@ -1,112 +0,0 @@
package com.zmkg.coaloperation.ui.tunneling.activity
import android.annotation.SuppressLint
import android.os.Bundle
import android.view.View
import com.zmkg.coaloperation.R
import com.zmkg.coaloperation.base.BaseVMBActivity
import com.zmkg.coaloperation.base.viewmodel.TestViewModel
import androidx.recyclerview.widget.LinearLayoutManager
import com.zmkg.coaloperation.adapter.WorkingItemAdapter
import com.zmkg.coaloperation.bean.WorkingFaceItem
import com.zmkg.coaloperation.databinding.ActivityWorkingFaceDetail2Binding
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
/**
* 工作面详情2
*/
class WorkingFaceDetail2Activity :
BaseVMBActivity<TestViewModel, ActivityWorkingFaceDetail2Binding>(R.layout.activity_working_face_detail2) {
companion object {
const val FACE_WORK_DETAIL_DATA = "faceWorkDetailData"
}
private val list: MutableList<WorkingFaceItem> = mutableListOf()
// private var detail:FaceWorkDetailBean?=null
private var detail: TunnelWorkingFaceEntity? = null
private val adapter by lazy {
WorkingItemAdapter(list)
}
override fun initView(savedInstanceState: Bundle?) {
mBinding.toolbarLay.vLine.visibility = View.GONE
mBinding.toolbarLay.rightText = "修改"
mBinding.rvFaceList.let {
it.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
it.adapter = adapter
}
}
override fun initData() {
detail = intent.getParcelableExtra(FACE_WORK_DETAIL_DATA)
detail?.let {
loadFaceDetail(it)
}
}
override fun bindEvent() {
mBinding.toolbarLay.titleTvRight.setOnClickListener {
toActivity(WorkFaceActivity::class.java, Bundle().apply {
putString(WorkFaceActivity.WORK_FACE_TYPE, WorkFaceActivity.WorkFaceType.EDIT.name)
// putSerializable(WorkFaceActivity.FACE_WORK_DETAIL_DATA, detail)
putParcelable(WorkFaceActivity.FACE_WORK_DETAIL_DATA, detail)
})
}
}
override fun processClick(v: View?) {
}
@SuppressLint("NotifyDataSetChanged")
private fun loadFaceDetail(it: TunnelWorkingFaceEntity) {
mBinding.toolbarLay.title = it.surfaceName
list.clear()
list.add(WorkingFaceItem(pageType = 0, name = "工作面名称", value = it.surfaceName))
list.add(WorkingFaceItem(pageType = 0, name = "所属煤层", value = it.seamName))
list.add(WorkingFaceItem(pageType = 0, name = "所属采区域", value = it.areaName))
list.add(WorkingFaceItem(pageType = 0, name = "工作面方位角", value = it.surfaceAzimuth))
list.add(WorkingFaceItem(pageType = 0, name = "工作面巷高", value = it.surfaceHeight))
list.add(WorkingFaceItem(pageType = 0, name = "工作面巷宽", value = it.surfaceWidth))
list.add(WorkingFaceItem(pageType = 0, name = "巷道性质", value = it.tunnelNature))
list.add(
WorkingFaceItem(
pageType = 0,
name = "计划工期",
value = "${it.planStartDate} ~ ${it.planEndDate}"
)
)
list.add(WorkingFaceItem(pageType = 0, name = "地质类型", value = it.geologicalType))
list.add(
WorkingFaceItem(
pageType = 0,
name = "水文地质类型",
value = it.hydrogeologicalType
)
)
list.add(WorkingFaceItem(pageType = 0, name = "煤层发火性", value = it.seamIgnition))
list.add(WorkingFaceItem(pageType = 0, name = "瓦斯含量", value = it.seamGas))
list.add(
WorkingFaceItem(
pageType = 0,
name = "冲击地压危险性",
value = it.seamBumpPressure
)
)
list.add(WorkingFaceItem(pageType = 0, name = "支护形式", value = it.surfaceSupportForm))
adapter.notifyDataSetChanged()
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onWorkingFaceEvent(event: TunnelWorkingFaceEntity) {
detail = event
detail?.let {
loadFaceDetail(it)
}
}
}
@@ -1,208 +1,112 @@
package com.zmkg.coaloperation.ui.tunneling.activity
import android.annotation.SuppressLint
import android.os.Bundle
import android.view.View
import com.zmkg.coaloperation.R
import com.zmkg.coaloperation.base.BaseVMBActivity
import androidx.core.graphics.toColorInt
import androidx.lifecycle.ViewModelProvider
import com.zmkg.coaloperation.base.viewmodel.TestViewModel
import androidx.recyclerview.widget.LinearLayoutManager
import com.zmkg.coaloperation.adapter.TunnelWorkingItemAdapter
import com.zmkg.coaloperation.bean.TunnelWorkingItem
import com.zmkg.coaloperation.databinding.ActivityWorkingFaceDetailBinding
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelRoofLithologyEntity
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity
import com.zmkg.coaloperation.db.viewmodel.TunnelRoofLithologyViewModel
import com.zmkg.coaloperation.db.viewmodel.TunnelWorkingFaceRecordViewModel
import com.zmkg.coaloperation.ui.tunneling.adapter.TunnelingRockNatureAdapter
import com.zmkg.coaloperation.ui.tunneling.bean.FaceWorkDetailBean
import com.zmkg.coaloperation.ui.tunneling.viewmodel.TunnelingViewModel
import com.zmkg.coaloperation.utils.ScreenUtil
import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceEntity
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
import kotlin.apply
import kotlin.math.roundToInt
/**
* 工作面详情
* 工作面详情2
*/
class WorkingFaceDetailActivity :
BaseVMBActivity<TunnelingViewModel, ActivityWorkingFaceDetailBinding>(R.layout.activity_working_face_detail) {
BaseVMBActivity<TestViewModel, ActivityWorkingFaceDetailBinding>(R.layout.activity_working_face_detail) {
companion object {
const val FACE_DETAIL = "faceDetail"
const val FACE_WORK_DETAIL_DATA = "faceWorkDetailData"
}
private val workingFaceRecordViewModel: TunnelWorkingFaceRecordViewModel by lazy {
ViewModelProvider(this)[TunnelWorkingFaceRecordViewModel::class.java]
}
private val list: MutableList<TunnelWorkingItem> = mutableListOf()
private val roofLithologyViewModel: TunnelRoofLithologyViewModel by lazy {
ViewModelProvider(this)[TunnelRoofLithologyViewModel::class.java]
// private var detail:FaceWorkDetailBean?=null
private var detail: TunnelWorkingFaceEntity? = null
private val adapter by lazy {
TunnelWorkingItemAdapter(list)
}
private val tunnelingRockNatureAdapter: TunnelingRockNatureAdapter by lazy {
TunnelingRockNatureAdapter(lithologyList)
}
private val lithologyList:MutableList<TunnelRoofLithologyEntity> = mutableListOf()
private var faceDetail: TunnelWorkingFaceEntity? = null
override fun initView(savedInstanceState: Bundle?) {
mBinding.toolbarLay.rightText = "查看详情"
mBinding.toolbarLay.vLine.visibility = View.GONE
mBinding.rvRockNature.adapter = tunnelingRockNatureAdapter
mBinding.toolbarLay.rightText = "修改"
mBinding.arcViewGreen.let {
it.arcColor = "#30E0A1".toColorInt()
it.startAngle = 0f
it.sweepAngle = 360f
it.strokeWidth = 12f
it.radius = ScreenUtil.dp2px(122f - 12f) / 2f
mBinding.rvFaceList.let {
it.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
it.adapter = adapter
}
mBinding.arcViewRed.let {
it.arcColor = "#FA2256".toColorInt()
it.startAngle = -90f
it.strokeWidth = 10f
it.sweepAngle = 0f
it.radius = ScreenUtil.dp2px(100f - 10f) / 2f
}
mBinding.arcViewBlue.let {
it.arcColor = "#246CF9".toColorInt()
it.startAngle = -90f
it.strokeWidth = 10f
it.sweepAngle = 0f
it.radius = ScreenUtil.dp2px(100f - 10f) / 2f
}
}
override fun initData() {
// val surfaceId = intent.getStringExtra("surfaceId")
// if (TextUtils.isEmpty(surfaceId)) {
// finish()
// } else {
// mViewModel.getTunnelingSurfaceDetail(surfaceId)
// }
faceDetail = intent.getParcelableExtra(FACE_DETAIL)
faceDetail?.let { detail ->
loadFaceDetail()
workingFaceRecordViewModel.getLastEntity(detail.surfaceId) { record ->
record?.let {
mBinding.tvYesterdayLen.text = "${it.workingFootage}m"
mBinding.tvWorkingFaceAngle.text = "${it.seamDip}"
// mBinding.tvMonthAccumulateLen.text = "${it.monthFootage}m"
mBinding.tvWorkingFaceWater.text = "${it.waterYield}"
roofLithologyViewModel.getEntityList(it.recordId) { list ->
list?.let {
lithologyList.addAll(it)
tunnelingRockNatureAdapter.notifyDataSetChanged()
}
}
}
}
detail = intent.getParcelableExtra(FACE_WORK_DETAIL_DATA)
detail?.let {
loadFaceDetail(it)
}
}
override fun bindEvent() {
mBinding.toolbarLay.titleTvRight.setOnClickListener {
toActivity(WorkingFaceDetail2Activity::class.java, Bundle().apply {
// putSerializable(
// WorkingFaceDetail2Activity.FACE_WORK_DETAIL_DATA,
// mViewModel.faceWorkDetailData.value as Serializable
// )
putParcelable(WorkingFaceDetail2Activity.FACE_WORK_DETAIL_DATA, faceDetail)
toActivity(AddWorkingFaceActivity::class.java, Bundle().apply {
putString(AddWorkingFaceActivity.WORK_FACE_TYPE, AddWorkingFaceActivity.WorkFaceType.EDIT.name)
// putSerializable(WorkFaceActivity.FACE_WORK_DETAIL_DATA, detail)
putParcelable(AddWorkingFaceActivity.FACE_WORK_DETAIL_DATA, detail)
})
}
}
override fun processClick(v: View?) {
}
override fun createObserve() {
super.createObserve()
// lifecycleScope.launch {
// repeatOnLifecycle(Lifecycle.State.CREATED) {
// mViewModel.faceWorkDetailData.collectLatest {
// if (it != null) {
// setDataView(it)
// }
// }
// }
// }
}
@SuppressLint("NotifyDataSetChanged")
private fun loadFaceDetail(it: TunnelWorkingFaceEntity) {
mBinding.toolbarLay.title = it.surfaceName
list.clear()
list.add(TunnelWorkingItem(pageType = 0, name = "工作面名称", value = it.surfaceName))
list.add(TunnelWorkingItem(pageType = 0, name = "所属煤层", value = it.seamName))
list.add(TunnelWorkingItem(pageType = 0, name = "所属采区域", value = it.areaName))
list.add(TunnelWorkingItem(pageType = 0, name = "工作面方位角", value = it.surfaceAzimuth))
list.add(TunnelWorkingItem(pageType = 0, name = "工作面巷高", value = it.surfaceHeight))
list.add(TunnelWorkingItem(pageType = 0, name = "工作面巷宽", value = it.surfaceWidth))
list.add(TunnelWorkingItem(pageType = 0, name = "巷道性质", value = it.tunnelNature))
list.add(
TunnelWorkingItem(
pageType = 0,
name = "计划工期",
value = "${it.planStartDate} ~ ${it.planEndDate}"
)
)
list.add(TunnelWorkingItem(pageType = 0, name = "地质类型", value = it.geologicalType))
list.add(
TunnelWorkingItem(
pageType = 0,
name = "水文地质类型",
value = it.hydrogeologicalType
)
)
list.add(TunnelWorkingItem(pageType = 0, name = "煤层发火性", value = it.seamIgnition))
list.add(TunnelWorkingItem(pageType = 0, name = "瓦斯含量", value = it.seamGas))
list.add(
TunnelWorkingItem(
pageType = 0,
name = "冲击地压危险性",
value = it.seamBumpPressure
)
)
list.add(TunnelWorkingItem(pageType = 0, name = "支护形式", value = it.surfaceSupportForm))
private fun setDataView(bean: FaceWorkDetailBean?) {
bean ?: return
}
private fun stringToDouble(numText: String?): Double {
if (numText.isNullOrEmpty() || numText.isBlank()) return 0.toDouble()
return numText.toDouble()
}
private fun loadFaceDetail() {
val bean = faceDetail!!
mBinding.apply {
toolbarLay.title = bean.surfaceName
val total = stringToDouble(bean.totalFootage)
val accumulative = stringToDouble(bean.accumulativeFootage)
val remaining = stringToDouble(bean.remainingFootage)
tvLenTotal.text = "总进尺:${total}m"
tvLenAccumulate.text = "累计进尺:${accumulative}m"
tvLenRemain.text = "剩余进尺:${remaining}m"
//累计进尺占比
var radio = 0
//累计进尺圆圈占比
var arcViewRadio: Float
if (accumulative >= total) {
radio = 100
arcViewRadio = 360F
} else if (accumulative <= 0) {
radio = 0
arcViewRadio = 0F
} else {
arcViewRadio = (accumulative * 100F / total).toFloat()
radio = arcViewRadio.roundToInt()
}
arcViewRed.let {
it.sweepAngle = arcViewRadio
}
arcViewBlue.let {
it.sweepAngle = (360F - arcViewRadio) * -1F
}
mBinding.tvCompleteRate.text = "$radio%"
// tvYesterdayLen.text = "${bean?.yesterdayFootage}m"
// tvWorkingFaceAngle.text = "${bean?.latestRecord?.seamDip.orEmptyDefaultInt()}"
// tvMonthAccumulateLen.text = "${bean?.monthFootage}m"
// tvWorkingFaceWater.text = "${bean?.latestRecord?.waterYield.orEmptyDefaultInt()}m"
// val list = bean?.latestRecord?.mineWorkingLithologyList
// if (list.isNullOrEmpty()) {
// tvYesterdayRockType.visibility = View.GONE
// } else {
// tvYesterdayRockType.visibility = View.VISIBLE
// tunnelingRockNatureAdapter.setNewInstance(list)
// }
}
adapter.notifyDataSetChanged()
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onWorkingFaceEvent(event: TunnelWorkingFaceEntity) {
faceDetail = event
loadFaceDetail()
detail = event
detail?.let {
loadFaceDetail(it)
}
}
}
@@ -7,16 +7,15 @@ import android.view.View
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.zmkg.coaloperation.R
import com.zmkg.coaloperation.adapter.WorkingItemAdapter
import com.zmkg.coaloperation.adapter.TunnelWorkingItemAdapter
import com.zmkg.coaloperation.base.BaseVMBActivity
import com.zmkg.coaloperation.base.viewmodel.TestViewModel
import com.zmkg.coaloperation.bean.RockItem
import com.zmkg.coaloperation.bean.WorkingFaceItem
import com.zmkg.coaloperation.databinding.ActivityWorkingPointBinding
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelRoofLithologyEntity
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceRecordEntity
import com.zmkg.coaloperation.bean.TunnelWorkingItem
import com.zmkg.coaloperation.databinding.ActivityWorkingFaceRecordBinding
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.toJsonString
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
@@ -24,8 +23,8 @@ import org.greenrobot.eventbus.ThreadMode
/**
* 查看棋盘井
*/
class WorkingPointActivity :
BaseVMBActivity<TestViewModel, ActivityWorkingPointBinding>(R.layout.activity_working_point) {
class WorkingFaceRecordActivity :
BaseVMBActivity<TestViewModel, ActivityWorkingFaceRecordBinding>(R.layout.activity_working_face_record) {
companion object {
const val TAG = "WorkingPointActivity"
@@ -35,13 +34,13 @@ class WorkingPointActivity :
private var faceName: String? = null
private var faceRecord: TunnelWorkingFaceRecordEntity? = null
private val list: MutableList<WorkingFaceItem> = mutableListOf()
private val list: MutableList<TunnelWorkingItem> = mutableListOf()
private val roofLithologyViewModel: TunnelRoofLithologyViewModel by lazy {
ViewModelProvider(this)[TunnelRoofLithologyViewModel::class.java]
}
private val adapter by lazy {
WorkingItemAdapter(list)
TunnelWorkingItemAdapter(list)
}
override fun initView(savedInstanceState: Bundle?) {
@@ -49,10 +48,10 @@ class WorkingPointActivity :
mBinding.toolbarLay.title = "查看详情"
mBinding.toolbarLay.rightText = "修改"
mBinding.toolbarLay.titleTvRight.setOnClickListener {
toActivity(AddWorkingPointActivity::class.java, Bundle().apply {
putInt(AddWorkingPointActivity.SHOW_TYPE, 1)
putString(AddWorkingPointActivity.FACE_NAME, faceName)
putParcelable(AddWorkingPointActivity.FACE_RECORD, faceRecord)
toActivity(AddWorkingFaceRecordActivity::class.java, Bundle().apply {
putInt(AddWorkingFaceRecordActivity.SHOW_TYPE, 1)
putString(AddWorkingFaceRecordActivity.FACE_NAME, faceName)
putParcelable(AddWorkingFaceRecordActivity.FACE_RECORD, faceRecord)
})
}
mBinding.rvPointList.let {
@@ -67,38 +66,40 @@ class WorkingPointActivity :
Log.d(TAG, "loadFaceRecord: ${faceRecord.toJsonString()}")
faceRecord?.let {
loadFaceRecord(it)
roofLithologyViewModel.getEntityList(it.recordId) { lithologyEntities ->
list[6].items = lithologyEntities
adapter.notifyItemChanged(6)
}
}
}
@SuppressLint("NotifyDataSetChanged")
private fun loadFaceRecord(it: TunnelWorkingFaceRecordEntity) {
list.clear()
list.add(WorkingFaceItem(pageType = 1, name = "工作面名称", value = faceName))
list.add(WorkingFaceItem(pageType = 1, name = "施工日期", value = it.workingDate))
list.add(TunnelWorkingItem(pageType = 1, name = "工作面名称", value = faceName))
list.add(TunnelWorkingItem(pageType = 1, name = "施工日期", value = it.workingDate))
list.add(
WorkingFaceItem(
TunnelWorkingItem(
pageType = 1,
name = "施工班次",
value = DictUtils.getTeamShift(it.teamShift)
)
)
list.add(WorkingFaceItem(pageType = 1, name = "施工队伍", value = it.teamName))
list.add(WorkingFaceItem(pageType = 1, name = "带班队长", value = it.teamLeader))
list.add(WorkingFaceItem(pageType = 1, name = "本班进尺", value = it.workingFootage))
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"))
// val rockList = mutableListOf<TunnelRoofLithologyEntity>()
// rockList.add(RockItem(startLen = 0, endLen = 1, rockType = "泥"))
// rockList.add(RockItem(startLen = 0, endLen = 1, rockType = "砂"))
list.add(WorkingFaceItem(pageType = 1, name = "顶板岩性", value = "", items = null))
list.add(WorkingFaceItem(pageType = 1, name = "煤层倾角", value = it.seamDip))
list.add(WorkingFaceItem(pageType = 1, name = "煤层高", value = it.seamHeight))
list.add(WorkingFaceItem(pageType = 1, name = "记录人", value = it.recordPerson))
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 = it.recordPerson))
adapter.notifyDataSetChanged()
roofLithologyViewModel.getEntityList(it.recordId) { lithologyEntities ->
list[6].items = lithologyEntities
adapter.notifyItemChanged(6)
}
}
override fun bindEvent() {
@@ -0,0 +1,208 @@
package com.zmkg.coaloperation.ui.tunneling.activity
import android.os.Bundle
import android.view.View
import com.zmkg.coaloperation.R
import com.zmkg.coaloperation.base.BaseVMBActivity
import androidx.core.graphics.toColorInt
import androidx.lifecycle.ViewModelProvider
import com.zmkg.coaloperation.db.entity.tunnel.TunnelRoofLithologyEntity
import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceEntity
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.ui.tunneling.viewmodel.TunnelingViewModel
import com.zmkg.coaloperation.utils.ScreenUtil
import com.zmkg.coaloperation.utils.formatDecimalString
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
import kotlin.apply
import kotlin.math.roundToInt
/**
* 工作面详情
*/
class WorkingFaceStatisticsActivity :
BaseVMBActivity<TunnelingViewModel, ActivityWorkingFaceStatisticsBinding>(R.layout.activity_working_face_statistics) {
companion object {
const val FACE_DETAIL = "faceDetail"
}
private val workingFaceRecordViewModel: TunnelWorkingFaceRecordViewModel by lazy {
ViewModelProvider(this)[TunnelWorkingFaceRecordViewModel::class.java]
}
private val roofLithologyViewModel: TunnelRoofLithologyViewModel by lazy {
ViewModelProvider(this)[TunnelRoofLithologyViewModel::class.java]
}
private val tunnelingRockNatureAdapter: TunnelingRockNatureAdapter by lazy {
TunnelingRockNatureAdapter(lithologyList)
}
private val lithologyList:MutableList<TunnelRoofLithologyEntity> = mutableListOf()
private var faceDetail: TunnelWorkingFaceEntity? = null
override fun initView(savedInstanceState: Bundle?) {
mBinding.toolbarLay.rightText = "查看详情"
mBinding.toolbarLay.vLine.visibility = View.GONE
mBinding.rvRockNature.adapter = tunnelingRockNatureAdapter
mBinding.arcViewGreen.let {
it.arcColor = "#30E0A1".toColorInt()
it.startAngle = 0f
it.sweepAngle = 360f
it.strokeWidth = 12f
it.radius = ScreenUtil.dp2px(122f - 12f) / 2f
}
mBinding.arcViewRed.let {
it.arcColor = "#FA2256".toColorInt()
it.startAngle = -90f
it.strokeWidth = 10f
it.sweepAngle = 0f
it.radius = ScreenUtil.dp2px(100f - 10f) / 2f
}
mBinding.arcViewBlue.let {
it.arcColor = "#246CF9".toColorInt()
it.startAngle = -90f
it.strokeWidth = 10f
it.sweepAngle = 0f
it.radius = ScreenUtil.dp2px(100f - 10f) / 2f
}
}
override fun initData() {
// val surfaceId = intent.getStringExtra("surfaceId")
// if (TextUtils.isEmpty(surfaceId)) {
// finish()
// } else {
// mViewModel.getTunnelingSurfaceDetail(surfaceId)
// }
faceDetail = intent.getParcelableExtra(FACE_DETAIL)
faceDetail?.let { detail ->
loadFaceDetail()
workingFaceRecordViewModel.getLastEntity(detail.surfaceId) { record ->
record?.let {
mBinding.tvYesterdayLen.text = "${it.workingFootage?.formatDecimalString()}m"
mBinding.tvWorkingFaceAngle.text = "${it.seamDip?.formatDecimalString()}°"
// mBinding.tvMonthAccumulateLen.text = "${it.monthFootage}m"
mBinding.tvWorkingFaceWater.text = "${it.waterYield?.formatDecimalString()}"
roofLithologyViewModel.getEntityList(it.recordId) { list ->
list?.let {
lithologyList.addAll(it)
tunnelingRockNatureAdapter.notifyDataSetChanged()
}
}
}
}
}
}
override fun bindEvent() {
mBinding.toolbarLay.titleTvRight.setOnClickListener {
toActivity(WorkingFaceDetailActivity::class.java, Bundle().apply {
// putSerializable(
// WorkingFaceDetail2Activity.FACE_WORK_DETAIL_DATA,
// mViewModel.faceWorkDetailData.value as Serializable
// )
putParcelable(WorkingFaceDetailActivity.FACE_WORK_DETAIL_DATA, faceDetail)
})
}
}
override fun processClick(v: View?) {
}
override fun createObserve() {
super.createObserve()
// lifecycleScope.launch {
// repeatOnLifecycle(Lifecycle.State.CREATED) {
// mViewModel.faceWorkDetailData.collectLatest {
// if (it != null) {
// setDataView(it)
// }
// }
// }
// }
}
// private fun setDataView(bean: FaceWorkDetailBean?) {
// bean ?: return
// }
private fun stringToDouble(numText: String?): Double {
if (numText.isNullOrEmpty() || numText.isBlank()) return 0.toDouble()
return numText.toDouble()
}
private fun loadFaceDetail() {
val bean = faceDetail!!
mBinding.apply {
toolbarLay.title = bean.surfaceName
val total = stringToDouble(bean.totalFootage)
val accumulative = stringToDouble(bean.accumulativeFootage)
val remaining = stringToDouble(bean.remainingFootage)
tvLenTotal.text = "总进尺:${bean.totalFootage?.formatDecimalString()}m"
tvLenAccumulate.text = "累计进尺:${bean.accumulativeFootage?.formatDecimalString()}m"
tvLenRemain.text = "剩余进尺:${bean.remainingFootage?.formatDecimalString()}m"
//累计进尺占比
var radio = 0
//累计进尺圆圈占比
var arcViewRadio: Float
if (accumulative >= total) {
radio = 100
arcViewRadio = 360F
} else if (accumulative <= 0) {
radio = 0
arcViewRadio = 0F
} else {
arcViewRadio = (accumulative * 100F / total).toFloat()
radio = arcViewRadio.roundToInt()
}
arcViewRed.let {
it.sweepAngle = arcViewRadio
}
arcViewBlue.let {
it.sweepAngle = (360F - arcViewRadio) * -1F
}
mBinding.tvCompleteRate.text = "$radio%"
// tvYesterdayLen.text = "${bean?.yesterdayFootage}m"
// tvWorkingFaceAngle.text = "${bean?.latestRecord?.seamDip.orEmptyDefaultInt()}"
// tvMonthAccumulateLen.text = "${bean?.monthFootage}m"
// tvWorkingFaceWater.text = "${bean?.latestRecord?.waterYield.orEmptyDefaultInt()}m"
// val list = bean?.latestRecord?.mineWorkingLithologyList
// if (list.isNullOrEmpty()) {
// tvYesterdayRockType.visibility = View.GONE
// } else {
// tvYesterdayRockType.visibility = View.VISIBLE
// tunnelingRockNatureAdapter.setNewInstance(list)
// }
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onWorkingFaceEvent(event: TunnelWorkingFaceEntity) {
faceDetail = event
loadFaceDetail()
}
}
@@ -1,64 +0,0 @@
//package com.zmkg.coaloperation.ui.tunneling.adapter
//
//import android.content.Intent
//import android.view.View
//import android.widget.ImageView
//import android.widget.LinearLayout
//import androidx.recyclerview.widget.RecyclerView
//import com.chad.library.adapter.base.BaseQuickAdapter
//import com.chad.library.adapter.base.viewholder.BaseViewHolder
//import com.zmkg.coaloperation.R
//import com.zmkg.coaloperation.ui.tunneling.bean.TunnelingHomeBean
//import com.zmkg.coaloperation.ui.tunneling.activity.WorkingPointActivity
//
//
///**
// * 掘进首页列表
// */
//
//class TunnelingHomeAdapter(var listener: (Int,String?)->Unit) : BaseQuickAdapter<TunnelingHomeBean, BaseViewHolder>(
// R.layout.item_geological_list
//) {
//
// override fun convert(holder: BaseViewHolder, item: TunnelingHomeBean) {
// val tunnelingHomeListAdapter: TunnelingHomeListAdapter by lazy { TunnelingHomeListAdapter().apply {
// setOnItemClickListener { adapter, view, position ->
// context.startActivity(Intent(context, WorkingPointActivity::class.java))
// }
// } }
//
// val rvList = holder.getView<RecyclerView>(R.id.rv_content)
// val expand = holder.getView<ImageView>(R.id.expand)
// val recordLayout = holder.getView<LinearLayout>(R.id.record_layout)
//
// holder.apply {
// setText(R.id.title, item.surfaceName)
// rvList.adapter = tunnelingHomeListAdapter
// tunnelingHomeListAdapter.setNewInstance(item.contentList?:mutableListOf())
// }
// expand.setOnClickListener {
// val imageView = it as ImageView
// if (imageView.tag.equals("0")) {//收起状态
// imageView.setImageResource(R.drawable.ic_arrow_down_white)
// recordLayout.visibility = View.VISIBLE
// imageView.tag = "1"
//
// if (data[holder.absoluteAdapterPosition].contentList.isNullOrEmpty()) {
//// if (context is TunnelingActivity) {
//// (context as TunnelingActivity).getRecordList(holder.layoutPosition) {
//// tunnelingHomeListAdapter.notifyDataSetChanged()
//// }
//// }
// listener.invoke(holder.absoluteAdapterPosition,data[holder.absoluteAdapterPosition].surfaceId)
// }
// } else {//展开状态
// imageView.setImageResource(R.drawable.ic_arrow_right_gray)
// recordLayout.visibility = View.GONE
// imageView.tag = "0"
// }
// }
// }
// init {
// addChildClickViewIds(R.id.start_record)
// }
//}
@@ -1,27 +0,0 @@
//package com.zmkg.coaloperation.ui.tunneling.adapter
//
//import com.chad.library.adapter.base.BaseQuickAdapter
//import com.chad.library.adapter.base.viewholder.BaseViewHolder
//import com.zmkg.coaloperation.R
//import com.zmkg.coaloperation.ui.tunneling.bean.TunnelingHomeItemBean
//
//
///**
// * 掘进首页点击出现的列表
// */
//
//class TunnelingHomeListAdapter :
// BaseQuickAdapter<TunnelingHomeItemBean, BaseViewHolder>(R.layout.item_geological_list_content) {
//
//
// override fun convert(holder: BaseViewHolder, item: TunnelingHomeItemBean) {
// if (holder.absoluteAdapterPosition != 0) {
// holder.setGone(R.id.head, true)
// }
// holder.setText(R.id.time, item.workingDate)
// .setText(R.id.record, item.recordPerson)
//
//
// }
//
//}
@@ -1,170 +0,0 @@
package com.zmkg.coaloperation.ui.tunneling.bean
import java.io.Serializable
/**
* 掘进
*/
data class TunnelingHomeBean(
var contentList: MutableList<TunnelingHomeItemBean>?,
val createBy: String?,
val createTime: String?,
val updateBy: String?,
val updateTime: String?,
val remark: String?,
val surfaceId: String?,
val totalFootage: String?,
val seamId: String?,
val areaId: String?,
val seamName: String?,
val surfaceName: String?,
val areaName: String?,
val surfaceAzimuth: String?,
val surfaceHeight: String?,
val surfaceWidth: String?,
val tunnelNature: String?,
val planStartDate: String?,
val planEndDate: String?,
val geologicalType: String?,
val hydrogeologicalType: String?,
val seamIgnition: String?,
val seamGas: String?,
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
)
data class Params(
val additionalProp1: String? = null,
val additionalProp2: String? = null,
val additionalProp3: String? = null
):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<MineWorkingLithology>,
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
@@ -2,14 +2,10 @@ package com.zmkg.coaloperation.ui.tunneling.viewmodel
import com.zmkg.coaloperation.base.viewmodel.BaseViewModel
import com.zmkg.coaloperation.data.repository.HomeRepository
import com.zmkg.coaloperation.db.entiry.tunnel.TunnelWorkingFaceEntity
import com.zmkg.coaloperation.db.entity.tunnel.TunnelWorkingFaceEntity
import com.zmkg.coaloperation.superfuntion.handleRequest
import com.zmkg.coaloperation.superfuntion.launch
import com.zmkg.coaloperation.ui.tunneling.bean.FaceWorkDetailBean
import com.zmkg.coaloperation.ui.tunneling.bean.TunnelingFaceAddBean
import com.zmkg.coaloperation.ui.tunneling.bean.TunnelingHomeItemBean
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
/**
@@ -19,11 +15,11 @@ class TunnelingViewModel : BaseViewModel() {
// var tunnelingHomeList = MutableSharedFlow<MutableList<TunnelingHomeBean>?>()
var tunnelingHomeItemList = MutableSharedFlow<MutableList<TunnelingHomeItemBean>?>()
var tunnelingWorkFaceAdd = MutableSharedFlow<Boolean>()//新增面
var faceWorkDetailData = MutableStateFlow<FaceWorkDetailBean?>(null)//面详情
var itemIndex = MutableStateFlow(0)//item的下标
// var tunnelingHomeItemList = MutableSharedFlow<MutableList<TunnelingHomeItemBean>?>()
// var tunnelingWorkFaceAdd = MutableSharedFlow<Boolean>()//新增面
// var faceWorkDetailData = MutableStateFlow<FaceWorkDetailBean?>(null)//面详情
//
// var itemIndex = MutableStateFlow(0)//item的下标
override fun init() {
}
@@ -42,44 +38,44 @@ class TunnelingViewModel : BaseViewModel() {
// )
// }
fun getTunnelingHomeItemData(index: Int,surfaceId: String?) {
launch(
{
itemIndex.emit(index)
handleRequest(
HomeRepository.getTunnelingHomeItemData(surfaceId),
successBlock = {
tunnelingHomeItemList.emit(it.data)
})
}
)
}
fun getTunnelingSurfaceDetail(surfaceId: String?) {
launch(
{
handleRequest(
HomeRepository.getTunnelingSurfaceDetail(surfaceId),
successBlock = {
// fun getTunnelingHomeItemData(index: Int,surfaceId: String?) {
// launch(
// {
// itemIndex.emit(index)
// handleRequest(
// HomeRepository.getTunnelingHomeItemData(surfaceId),
// successBlock = {
// tunnelingHomeItemList.emit(it.data)
faceWorkDetailData.emit(it.data)
})
}
)
}
fun postTunnellingSurfaceAdd(tunnelingFaceAddBean: TunnelingFaceAddBean) {
launch(
{
handleRequest(
HomeRepository.postTunnellingSurfaceAdd(tunnelingFaceAddBean),
successBlock = {
tunnelingWorkFaceAdd.emit(true)
})
}
)
}
//
// })
// }
// )
// }
//
// fun getTunnelingSurfaceDetail(surfaceId: String?) {
// launch(
// {
// handleRequest(
// HomeRepository.getTunnelingSurfaceDetail(surfaceId),
// successBlock = {
//// tunnelingHomeItemList.emit(it.data)
// faceWorkDetailData.emit(it.data)
// })
// }
// )
// }
//
// fun postTunnellingSurfaceAdd(tunnelingFaceAddBean: TunnelingFaceAddBean) {
// launch(
// {
// handleRequest(
// HomeRepository.postTunnellingSurfaceAdd(tunnelingFaceAddBean),
// successBlock = {
// tunnelingWorkFaceAdd.emit(true)
// })
// }
// )
// }
var tunnelFaceAndRecordList = MutableSharedFlow<MutableList<TunnelWorkingFaceEntity>?>()
@@ -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<TunnelingViewModel, FragmentUserBinding>(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()}")
}
}
}
}
}
@@ -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)
@@ -3,7 +3,7 @@ package com.zmkg.coaloperation.utils
import android.util.Log
import com.google.gson.internal.LazilyParsedNumber
import com.zmkg.coaloperation.bean.WorkOption
import com.zmkg.coaloperation.ui.tunneling.bean.DictBean
import com.zmkg.coaloperation.bean.DictBean
object DictUtils {
@@ -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<TunnelWorkingItem>, 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)
@@ -55,3 +55,31 @@ fun SharedPreferences.put(vararg pairs: Pair<String, Any>) {
}
}
}
/**
* 格式化小数字符串
* 如果小数点后都是零,则去掉小数点和小数部分,否则返回原始字符串
*
* @return 格式化后的字符串
*/
fun String.formatDecimalString(): String {
// 检查字符串是否包含小数点
if (!this.contains('.')) {
return this
}
// 尝试分割整数和小数部分
val parts = this.split('.')
if (parts.size != 2) {
return this
}
// 检查小数部分是否全部为零
val decimalPart = parts[1]
val isAllZeros = decimalPart.all { it == '0' }
return if (isAllZeros) {
parts[0] // 返回整数部分
} else {
this // 返回原始字符串
}
}
@@ -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
// )
// }
// }
}
@@ -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
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="180"
android:endColor="#FF72AFD3"
android:startColor="#FF37ECBA"
android:type="linear"
android:useLevel="true" />
<corners
android:radius="12dp" />
</shape>
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="180"
android:startColor="#ff95fe99"
android:endColor="#fff5feb9"
android:type="linear"
android:useLevel="true" />
<corners
android:radius="12dp" />
</shape>
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="180"
android:endColor="#FFF89273"
android:startColor="#FFB223F6"
android:type="linear"
android:useLevel="true" />
<corners
android:radius="12dp" />
</shape>
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="180"
android:endColor="#ff7657f8"
android:startColor="#fff538f6"
android:type="linear"
android:useLevel="true" />
<corners
android:radius="12dp" />
</shape>
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="180"
android:endColor="#ff1657f8"
android:startColor="#fff51856"
android:type="linear"
android:useLevel="true" />
<corners
android:radius="12dp" />
</shape>
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="180"
android:endColor="#ff73a3f8"
android:startColor="#ff0a28f4"
android:type="linear"
android:useLevel="true" />
<corners
android:radius="12dp" />
</shape>
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="180"
android:endColor="#FF96E6A1"
android:startColor="#FFD4FC79"
android:type="linear"
android:useLevel="true" />
<corners
android:radius="12dp" />
</shape>
Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#FB2B85"/>
<size android:height="5dp" android:width="5dp"/>
</shape>
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
</layout>
@@ -18,563 +18,18 @@
android:id="@+id/toolbar_lay"
layout="@layout/lay_title_right_bar" />
<ScrollView
android:layout_marginTop="10dp"
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvFaceList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingStart="20dp"
android:paddingEnd="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:drawablePadding="5dp"
android:gravity="center_vertical"
android:text="进度信息"
android:textColor="@color/white"
app:drawableStartCompat="@drawable/line_green" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="152dp"
android:background="@drawable/bg_stroke_gray">
<TextView
android:id="@+id/tvLenTotal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:drawablePadding="5dp"
android:gravity="center_vertical"
android:textColor="@color/white"
app:drawableStartCompat="@drawable/shape_flag_green"
app:layout_constraintBottom_toTopOf="@+id/tvLenAccumulate"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed"
tools:text="进度信息" />
<TextView
android:id="@+id/tvLenAccumulate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginTop="15dp"
android:layout_marginBottom="15dp"
android:drawablePadding="5dp"
android:gravity="center_vertical"
android:textColor="@color/white"
app:drawableStartCompat="@drawable/shape_flag_red"
app:layout_constraintBottom_toTopOf="@+id/tvLenRemain"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvLenTotal"
tools:text="进度信息" />
<TextView
android:id="@+id/tvLenRemain"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:drawablePadding="5dp"
android:gravity="center_vertical"
android:textColor="@color/white"
app:drawableStartCompat="@drawable/shape_flag_blue"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvLenAccumulate"
tools:text="进度信息" />
<FrameLayout
android:layout_width="122dp"
android:layout_height="122dp"
android:layout_marginEnd="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.zmkg.coaloperation.view.CircleArcView
android:id="@+id/arcViewGreen"
android:layout_width="122dp"
android:layout_height="122dp"
android:layout_gravity="center" />
<com.zmkg.coaloperation.view.CircleArcView
android:id="@+id/arcViewRed"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center" />
<com.zmkg.coaloperation.view.CircleArcView
android:id="@+id/arcViewBlue"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center" />
<TextView
android:id="@+id/tvCompleteRate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="@color/white"
android:textSize="24sp"
tools:text="64%" />
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:drawablePadding="5dp"
android:gravity="center_vertical"
android:text="基础信息"
android:textColor="@color/white"
app:drawableStartCompat="@drawable/line_green" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_stroke_gray"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingStart="20dp"
android:paddingEnd="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="昨日进尺"
android:textColor="#6A6F87"
android:textSize="16sp" />
<TextView
android:id="@+id/tvYesterdayLen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical"
android:textColor="@color/white"
android:textSize="16sp"
tools:text="200.4m" />
</FrameLayout>
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="1dp"
app:dividerColor="#20222B" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingStart="20dp"
android:paddingEnd="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="工作面倾角"
android:textColor="#6A6F87"
android:textSize="16sp" />
<TextView
android:id="@+id/tvWorkingFaceAngle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical"
android:textColor="@color/white"
android:textSize="16sp"
tools:text="65" />
</FrameLayout>
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="1dp"
app:dividerColor="#20222B" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingStart="20dp"
android:paddingEnd="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="本月累计进尺"
android:textColor="#6A6F87"
android:textSize="16sp" />
<TextView
android:id="@+id/tvMonthAccumulateLen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical"
android:textColor="@color/white"
android:textSize="16sp"
tools:text="1400.4m" />
</FrameLayout>
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="1dp"
app:dividerColor="#20222B" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingStart="20dp"
android:paddingEnd="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="工作面涌水量"
android:textColor="#6A6F87"
android:textSize="16sp" />
<TextView
android:id="@+id/tvWorkingFaceWater"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical"
android:textColor="@color/white"
android:textSize="16sp"
tools:text="65" />
</FrameLayout>
</LinearLayout>
<TextView
android:id="@+id/tvYesterdayRockType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:drawablePadding="5dp"
android:gravity="center_vertical"
android:text="昨日顶板岩性"
android:textColor="@color/white"
app:drawableStartCompat="@drawable/line_green" />
<androidx.recyclerview.widget.RecyclerView
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
android:id="@+id/rv_rock_nature"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_stroke_gray"
tools:itemCount="3"
tools:listitem="@layout/item_rock_nature" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:drawablePadding="5dp"
android:gravity="center_vertical"
android:text="各类工程"
android:textColor="@color/white"
app:drawableStartCompat="@drawable/line_green" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_stroke_gray"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="20dp"
android:paddingEnd="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="距"
android:textColor="#6A6F87"
android:textSize="16sp" />
<TextView
android:id="@+id/tvTask1Name"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginStart="10dp"
android:background="@drawable/bg_solid_black"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:minWidth="60dp"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:textColor="@color/white"
android:textSize="14sp" />
<View
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_weight="1"
android:background="@drawable/dash_line" />
<TextView
android:id="@+id/tvTask1Value"
android:layout_width="60dp"
android:layout_height="30dp"
android:background="@drawable/bg_solid_black"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:textColor="@color/white"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:text="m"
android:textColor="@color/white"
android:textSize="14sp" />
</LinearLayout>
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="1dp"
app:dividerColor="#20222B" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="20dp"
android:paddingEnd="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="距"
android:textColor="#6A6F87"
android:textSize="16sp" />
<TextView
android:id="@+id/tvTask2Name"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginStart="10dp"
android:background="@drawable/bg_solid_black"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:minWidth="60dp"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:textColor="@color/white"
android:textSize="14sp" />
<View
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_weight="1"
android:background="@drawable/dash_line" />
<TextView
android:id="@+id/tvTask2Value"
android:layout_width="60dp"
android:layout_height="30dp"
android:background="@drawable/bg_solid_black"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:textColor="@color/white"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:text="m"
android:textColor="@color/white"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:drawablePadding="5dp"
android:gravity="center_vertical"
android:text="隐蔽致灾预报"
android:textColor="@color/white"
app:drawableStartCompat="@drawable/line_green" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:background="@drawable/bg_stroke_gray"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="20dp"
android:paddingEnd="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="距"
android:textColor="#6A6F87"
android:textSize="16sp" />
<TextView
android:id="@+id/tvDisaster1Name"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginStart="10dp"
android:background="@drawable/bg_solid_black"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:minWidth="60dp"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:textColor="@color/white"
android:textSize="14sp" />
<View
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_weight="1"
android:background="@drawable/dash_line" />
<TextView
android:id="@+id/tvDisaster1Value"
android:layout_width="60dp"
android:layout_height="30dp"
android:background="@drawable/bg_solid_black"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:textColor="@color/white"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:text="m"
android:textColor="@color/white"
android:textSize="14sp" />
</LinearLayout>
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="1dp"
app:dividerColor="#20222B" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="20dp"
android:paddingEnd="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="距"
android:textColor="#6A6F87"
android:textSize="16sp" />
<TextView
android:id="@+id/tvDisaster2Name"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginStart="10dp"
android:background="@drawable/bg_solid_black"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:minWidth="60dp"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:textColor="@color/white"
android:textSize="14sp" />
<View
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_weight="1"
android:background="@drawable/dash_line" />
<TextView
android:id="@+id/tvDisaster2Value"
android:layout_width="60dp"
android:layout_height="30dp"
android:background="@drawable/bg_solid_black"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:textColor="@color/white"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:text="m"
android:textColor="@color/white"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
android:orientation="vertical"
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
android:layout_marginBottom="10dp"
tools:itemCount="20"
android:overScrollMode="never"
tools:listitem="@layout/list_item_tunnel_working_item"
android:background="@drawable/bg_stroke_gray"/>
</LinearLayout>
</layout>
@@ -1,35 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="HardcodedText,TooManyViews">
<data>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black_bg"
android:orientation="vertical">
<include
android:id="@+id/toolbar_lay"
layout="@layout/lay_title_right_bar" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvFaceList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
android:layout_marginBottom="10dp"
tools:itemCount="20"
android:overScrollMode="never"
tools:listitem="@layout/list_item_working_face"
android:background="@drawable/bg_stroke_gray"/>
</LinearLayout>
</layout>
@@ -28,7 +28,7 @@
android:layout_marginBottom="10dp"
tools:itemCount="10"
android:overScrollMode="never"
tools:listitem="@layout/list_item_working_face"
tools:listitem="@layout/list_item_tunnel_working_item"
android:background="@drawable/bg_stroke_gray"/>
</LinearLayout>
@@ -0,0 +1,580 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="HardcodedText,TooManyViews">
<data>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black_bg"
android:orientation="vertical">
<include
android:id="@+id/toolbar_lay"
layout="@layout/lay_title_right_bar" />
<ScrollView
android:layout_marginTop="10dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingStart="20dp"
android:paddingEnd="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:drawablePadding="5dp"
android:gravity="center_vertical"
android:text="进度信息"
android:textColor="@color/white"
app:drawableStartCompat="@drawable/line_green" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="152dp"
android:background="@drawable/bg_stroke_gray">
<TextView
android:id="@+id/tvLenTotal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:drawablePadding="5dp"
android:gravity="center_vertical"
android:textColor="@color/white"
app:drawableStartCompat="@drawable/shape_flag_green"
app:layout_constraintBottom_toTopOf="@+id/tvLenAccumulate"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed"
tools:text="进度信息" />
<TextView
android:id="@+id/tvLenAccumulate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginTop="15dp"
android:layout_marginBottom="15dp"
android:drawablePadding="5dp"
android:gravity="center_vertical"
android:textColor="@color/white"
app:drawableStartCompat="@drawable/shape_flag_red"
app:layout_constraintBottom_toTopOf="@+id/tvLenRemain"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvLenTotal"
tools:text="进度信息" />
<TextView
android:id="@+id/tvLenRemain"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:drawablePadding="5dp"
android:gravity="center_vertical"
android:textColor="@color/white"
app:drawableStartCompat="@drawable/shape_flag_blue"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvLenAccumulate"
tools:text="进度信息" />
<FrameLayout
android:layout_width="122dp"
android:layout_height="122dp"
android:layout_marginEnd="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.zmkg.coaloperation.view.CircleArcView
android:id="@+id/arcViewGreen"
android:layout_width="122dp"
android:layout_height="122dp"
android:layout_gravity="center" />
<com.zmkg.coaloperation.view.CircleArcView
android:id="@+id/arcViewRed"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center" />
<com.zmkg.coaloperation.view.CircleArcView
android:id="@+id/arcViewBlue"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center" />
<TextView
android:id="@+id/tvCompleteRate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="@color/white"
android:textSize="24sp"
tools:text="64%" />
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:drawablePadding="5dp"
android:gravity="center_vertical"
android:text="基础信息"
android:textColor="@color/white"
app:drawableStartCompat="@drawable/line_green" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_stroke_gray"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingStart="20dp"
android:paddingEnd="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="昨日进尺"
android:textColor="#6A6F87"
android:textSize="16sp" />
<TextView
android:id="@+id/tvYesterdayLen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical"
android:textColor="@color/white"
android:textSize="16sp"
tools:text="200.4m" />
</FrameLayout>
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="1dp"
app:dividerColor="#20222B" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingStart="20dp"
android:paddingEnd="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="工作面倾角"
android:textColor="#6A6F87"
android:textSize="16sp" />
<TextView
android:id="@+id/tvWorkingFaceAngle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical"
android:textColor="@color/white"
android:textSize="16sp"
tools:text="65" />
</FrameLayout>
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="1dp"
app:dividerColor="#20222B" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingStart="20dp"
android:paddingEnd="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="本月累计进尺"
android:textColor="#6A6F87"
android:textSize="16sp" />
<TextView
android:id="@+id/tvMonthAccumulateLen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical"
android:textColor="@color/white"
android:textSize="16sp"
tools:text="1400.4m" />
</FrameLayout>
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="1dp"
app:dividerColor="#20222B" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingStart="20dp"
android:paddingEnd="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="工作面涌水量"
android:textColor="#6A6F87"
android:textSize="16sp" />
<TextView
android:id="@+id/tvWorkingFaceWater"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical"
android:textColor="@color/white"
android:textSize="16sp"
tools:text="65" />
</FrameLayout>
</LinearLayout>
<TextView
android:id="@+id/tvYesterdayRockType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:drawablePadding="5dp"
android:gravity="center_vertical"
android:text="昨日顶板岩性"
android:textColor="@color/white"
app:drawableStartCompat="@drawable/line_green" />
<androidx.recyclerview.widget.RecyclerView
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
android:id="@+id/rv_rock_nature"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_stroke_gray"
tools:itemCount="3"
tools:listitem="@layout/item_rock_nature" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:drawablePadding="5dp"
android:gravity="center_vertical"
android:text="各类工程"
android:textColor="@color/white"
app:drawableStartCompat="@drawable/line_green" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_stroke_gray"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="20dp"
android:paddingEnd="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="距"
android:textColor="#6A6F87"
android:textSize="16sp" />
<TextView
android:id="@+id/tvTask1Name"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginStart="10dp"
android:background="@drawable/bg_solid_black"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:minWidth="60dp"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:textColor="@color/white"
android:textSize="14sp" />
<View
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_weight="1"
android:background="@drawable/dash_line" />
<TextView
android:id="@+id/tvTask1Value"
android:layout_width="60dp"
android:layout_height="30dp"
android:background="@drawable/bg_solid_black"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:textColor="@color/white"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:text="m"
android:textColor="@color/white"
android:textSize="14sp" />
</LinearLayout>
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="1dp"
app:dividerColor="#20222B" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="20dp"
android:paddingEnd="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="距"
android:textColor="#6A6F87"
android:textSize="16sp" />
<TextView
android:id="@+id/tvTask2Name"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginStart="10dp"
android:background="@drawable/bg_solid_black"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:minWidth="60dp"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:textColor="@color/white"
android:textSize="14sp" />
<View
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_weight="1"
android:background="@drawable/dash_line" />
<TextView
android:id="@+id/tvTask2Value"
android:layout_width="60dp"
android:layout_height="30dp"
android:background="@drawable/bg_solid_black"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:textColor="@color/white"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:text="m"
android:textColor="@color/white"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:drawablePadding="5dp"
android:gravity="center_vertical"
android:text="隐蔽致灾预报"
android:textColor="@color/white"
app:drawableStartCompat="@drawable/line_green" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:background="@drawable/bg_stroke_gray"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="20dp"
android:paddingEnd="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="距"
android:textColor="#6A6F87"
android:textSize="16sp" />
<TextView
android:id="@+id/tvDisaster1Name"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginStart="10dp"
android:background="@drawable/bg_solid_black"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:minWidth="60dp"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:textColor="@color/white"
android:textSize="14sp" />
<View
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_weight="1"
android:background="@drawable/dash_line" />
<TextView
android:id="@+id/tvDisaster1Value"
android:layout_width="60dp"
android:layout_height="30dp"
android:background="@drawable/bg_solid_black"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:textColor="@color/white"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:text="m"
android:textColor="@color/white"
android:textSize="14sp" />
</LinearLayout>
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="1dp"
app:dividerColor="#20222B" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="20dp"
android:paddingEnd="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="距"
android:textColor="#6A6F87"
android:textSize="16sp" />
<TextView
android:id="@+id/tvDisaster2Name"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginStart="10dp"
android:background="@drawable/bg_solid_black"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:minWidth="60dp"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:textColor="@color/white"
android:textSize="14sp" />
<View
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_weight="1"
android:background="@drawable/dash_line" />
<TextView
android:id="@+id/tvDisaster2Value"
android:layout_width="60dp"
android:layout_height="30dp"
android:background="@drawable/bg_solid_black"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:textColor="@color/white"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:text="m"
android:textColor="@color/white"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
</layout>
@@ -7,49 +7,44 @@
</data>
<com.allen.library.shape.ShapeRelativeLayout
<com.allen.library.shape.ShapeLinearLayout
android:layout_width="match_parent"
android:layout_height="68dp"
android:layout_marginHorizontal="30dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:background="#20222B"
app:shapeSolidColor="#20222B"
app:shapeCornersRadius="16dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#20222B">
android:paddingHorizontal="15dp">
<LinearLayout
android:layout_width="wrap_content"
<ImageView
android:id="@+id/custom_info_menu_icon"
android:layout_width="44dp"
android:layout_height="44dp"
android:layout_centerVertical="true"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:id="@+id/custom_info_menu_icon"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_centerVertical="true"
android:layout_marginLeft="15dp"
android:scaleType="fitCenter"/>
<TextView
android:id="@+id/custom_info_menu_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="8dp"
tools:text="菜单"
android:textColor="@color/white"
android:textSize="14sp" />
</LinearLayout>
android:scaleType="fitCenter"
android:padding="11dp"
tools:src="@mipmap/network"
tools:background="@drawable/bg_icon_network_config"/>
<TextView
android:id="@+id/custom_info_menu_name"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginEnd="12dp"
tools:text="菜单"
android:maxLines="1"
android:ellipsize="end"
android:textColor="@color/white"
android:textSize="16sp" />
<ImageView
android:id="@+id/custom_info_iv_right"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="15dp"
android:src="@mipmap/arrow_right" />
</com.allen.library.shape.ShapeRelativeLayout>
</com.allen.library.shape.ShapeLinearLayout>
</layout>
@@ -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" />
<LinearLayout
@@ -33,54 +33,55 @@
android:textSize="24sp" />
<TextView
android:id="@+id/tvUserPhone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:gravity="center_horizontal"
android:text="账号昵称"
android:text="158****5678"
android:textColor="#6A6F87"
android:textSize="14sp" />
<com.zmkg.coaloperation.view.CustomInfoView
android:id="@+id/network_config"
android:layout_width="match_parent"
android:layout_height="68dp"
android:layout_marginHorizontal="30dp"
android:layout_height="wrap_content"
android:layout_marginTop="15dp" />
<com.zmkg.coaloperation.view.CustomInfoView
android:id="@+id/data_pull"
android:layout_width="match_parent"
android:layout_height="68dp"
android:layout_marginHorizontal="30dp"
android:layout_height="wrap_content"
android:layout_marginTop="15dp" />
<com.zmkg.coaloperation.view.CustomInfoView
android:id="@+id/data_push"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp" />
<com.zmkg.coaloperation.view.CustomInfoView
android:id="@+id/cache_manage"
android:layout_width="match_parent"
android:layout_height="68dp"
android:layout_marginHorizontal="30dp"
android:layout_height="wrap_content"
android:layout_marginTop="15dp" />
<com.zmkg.coaloperation.view.CustomInfoView
android:id="@+id/check_update"
android:layout_width="match_parent"
android:layout_height="68dp"
android:layout_marginHorizontal="30dp"
android:layout_height="wrap_content"
android:layout_marginTop="15dp" />
<com.zmkg.coaloperation.view.CustomInfoView
android:id="@+id/system_exit"
android:layout_width="match_parent"
android:layout_height="68dp"
android:layout_marginHorizontal="30dp"
android:layout_height="wrap_content"
android:layout_marginTop="15dp" />
<com.zmkg.coaloperation.view.CustomInfoView
android:id="@+id/about_us"
android:layout_width="match_parent"
android:layout_height="68dp"
android:layout_marginHorizontal="30dp"
android:layout_height="wrap_content"
android:layout_marginTop="15dp" />
</com.allen.library.shape.ShapeLinearLayout>
@@ -92,7 +93,8 @@
android:layout_height="68dp"
android:layout_centerHorizontal="true"
android:layout_marginTop="60dp"
android:background="#e3e3e3" />
app:srcCompat="@drawable/ic_avatar"/>
<!-- android:background="#e3e3e3"-->
</RelativeLayout>
</layout>
@@ -7,34 +7,36 @@
</data>
<com.allen.library.shape.ShapeRelativeLayout
<com.allen.library.shape.ShapeLinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:orientation="horizontal"
android:gravity="center_vertical"
android:layout_marginHorizontal="4dp"
android:layout_marginVertical="5dp"
android:paddingHorizontal="10dp"
app:shapeCornersRadius="6dp"
app:shapeStrokeColor="#10514C"
app:shapeStrokeWidth="0.5dp">
<TextView
android:id="@+id/title"
android:layout_width="0dp"
android:layout_weight="1"
android:maxLines="1"
android:ellipsize="end"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:textSize="18sp"
tools:text="防灭火检查" />
<ImageView
android:id="@+id/img"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="13dp"
android:layout_marginStart="10dp"
android:scaleType="fitXY" />
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:textColor="@color/white"
android:textSize="18sp"
tools:text="防灭火检查" />
</com.allen.library.shape.ShapeRelativeLayout>
</com.allen.library.shape.ShapeLinearLayout>
</layout>
@@ -7,9 +7,11 @@
</data>
<com.allen.library.shape.ShapeRelativeLayout
<com.allen.library.shape.ShapeLinearLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_height="85dp"
android:orientation="vertical"
android:gravity="center"
android:layout_marginHorizontal="2dp"
android:layout_marginVertical="2dp"
app:shapeCornersRadius="6dp"
@@ -20,20 +22,19 @@
android:layout_width="28dp"
android:layout_height="28dp"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:layout_marginRight="13dp"
android:scaleType="fitXY" />
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/img"
android:layout_centerHorizontal="true"
android:textColor="@color/white"
android:layout_marginTop="6dp"
android:maxLines="1"
android:ellipsize="end"
android:textSize="12sp"
tools:text="防灭火检查" />
</com.allen.library.shape.ShapeRelativeLayout>
</com.allen.library.shape.ShapeLinearLayout>
</layout>
@@ -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"
@@ -26,10 +26,22 @@
app:shapeStrokeColor="#FF26FFEB"
app:shapeStrokeWidth="0.5dp">
<FrameLayout
android:layout_width="20dp"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/ivFlagEdit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_flag_edit"
android:visibility="gone"/>
</FrameLayout>
<!-- android:layout_marginStart="20dp"-->
<ImageView
android:layout_width="30dp"
android:layout_height="38dp"
android:layout_marginStart="20dp"
android:layout_marginEnd="10dp"
android:background="@drawable/ic_geological" />
@@ -8,7 +8,7 @@
</data>
<LinearLayout
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
@@ -68,7 +68,21 @@
android:layout_width="match_parent"
android:layout_height="1dp"
app:dividerColor="#282C38"
android:layout_gravity="bottom"
android:visibility="visible"/>
</LinearLayout>
<FrameLayout
android:layout_width="20dp"
android:layout_height="match_parent"
android:layout_gravity="start">
<ImageView
android:id="@+id/ivFlagEdit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/ic_flag_edit"
android:visibility="gone"/>
</FrameLayout>
</FrameLayout>
</layout>
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="."/>
</paths>