diff --git a/app/build.gradle b/app/build.gradle index df28eb5..772c9e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,7 +23,7 @@ versionName "1.0.0.0" ndk { - abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86_64' + abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' } } @@ -73,7 +73,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/build.gradle b/app/build.gradle index df28eb5..772c9e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,7 +23,7 @@ versionName "1.0.0.0" ndk { - abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86_64' + abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' } } @@ -73,7 +73,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt index 31dbfa2..63e42ef 100644 --- a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt +++ b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt @@ -2,15 +2,9 @@ import android.content.Context import android.view.ViewGroup -import com.casic.br.operationsite.base.BaseApplication -import com.pengxh.kt.lite.extensions.dp2px -import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.pengxh.kt.lite.extensions.getStatusBarHeight fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - var statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this) - if (statusBarHeight == 0) { - statusBarHeight = 40f.dp2px(BaseApplication.get()) - } - rootView.setPadding(0, statusBarHeight, 0, 0) + rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) rootView.requestLayout() } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index df28eb5..772c9e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,7 +23,7 @@ versionName "1.0.0.0" ndk { - abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86_64' + abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' } } @@ -73,7 +73,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt index 31dbfa2..63e42ef 100644 --- a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt +++ b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt @@ -2,15 +2,9 @@ import android.content.Context import android.view.ViewGroup -import com.casic.br.operationsite.base.BaseApplication -import com.pengxh.kt.lite.extensions.dp2px -import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.pengxh.kt.lite.extensions.getStatusBarHeight fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - var statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this) - if (statusBarHeight == 0) { - statusBarHeight = 40f.dp2px(BaseApplication.get()) - } - rootView.setPadding(0, statusBarHeight, 0, 0) + rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) rootView.requestLayout() } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index baf7f26..e37bae7 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_completed.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 2) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - completedRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071502) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 2) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + completedRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + completedRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } completedRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/build.gradle b/app/build.gradle index df28eb5..772c9e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,7 +23,7 @@ versionName "1.0.0.0" ndk { - abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86_64' + abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' } } @@ -73,7 +73,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt index 31dbfa2..63e42ef 100644 --- a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt +++ b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt @@ -2,15 +2,9 @@ import android.content.Context import android.view.ViewGroup -import com.casic.br.operationsite.base.BaseApplication -import com.pengxh.kt.lite.extensions.dp2px -import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.pengxh.kt.lite.extensions.getStatusBarHeight fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - var statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this) - if (statusBarHeight == 0) { - statusBarHeight = 40f.dp2px(BaseApplication.get()) - } - rootView.setPadding(0, statusBarHeight, 0, 0) + rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) rootView.requestLayout() } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index baf7f26..e37bae7 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_completed.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 2) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - completedRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071502) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 2) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + completedRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + completedRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } completedRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index 12f20e4..eb71513 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_not_start.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 0) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - notStartRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071501) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 0) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + notStartRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + notStartRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView!!.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + notStartRecyclerView.addItemDecoration( + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/build.gradle b/app/build.gradle index df28eb5..772c9e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,7 +23,7 @@ versionName "1.0.0.0" ndk { - abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86_64' + abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' } } @@ -73,7 +73,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt index 31dbfa2..63e42ef 100644 --- a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt +++ b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt @@ -2,15 +2,9 @@ import android.content.Context import android.view.ViewGroup -import com.casic.br.operationsite.base.BaseApplication -import com.pengxh.kt.lite.extensions.dp2px -import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.pengxh.kt.lite.extensions.getStatusBarHeight fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - var statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this) - if (statusBarHeight == 0) { - statusBarHeight = 40f.dp2px(BaseApplication.get()) - } - rootView.setPadding(0, statusBarHeight, 0, 0) + rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) rootView.requestLayout() } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index baf7f26..e37bae7 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_completed.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 2) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - completedRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071502) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 2) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + completedRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + completedRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } completedRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index 12f20e4..eb71513 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_not_start.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 0) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - notStartRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071501) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 0) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + notStartRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + notStartRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView!!.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + notStartRecyclerView.addItemDecoration( + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 42e3203..c015bdf 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,20 +27,17 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_working.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -56,42 +52,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 1) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - workingRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -117,6 +77,43 @@ weakReferenceHandler.sendEmptyMessage(2022071101) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 1) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + workingRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + workingRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -129,55 +126,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } workingRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/build.gradle b/app/build.gradle index df28eb5..772c9e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,7 +23,7 @@ versionName "1.0.0.0" ndk { - abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86_64' + abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' } } @@ -73,7 +73,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt index 31dbfa2..63e42ef 100644 --- a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt +++ b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt @@ -2,15 +2,9 @@ import android.content.Context import android.view.ViewGroup -import com.casic.br.operationsite.base.BaseApplication -import com.pengxh.kt.lite.extensions.dp2px -import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.pengxh.kt.lite.extensions.getStatusBarHeight fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - var statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this) - if (statusBarHeight == 0) { - statusBarHeight = 40f.dp2px(BaseApplication.get()) - } - rootView.setPadding(0, statusBarHeight, 0, 0) + rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) rootView.requestLayout() } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index baf7f26..e37bae7 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_completed.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 2) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - completedRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071502) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 2) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + completedRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + completedRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } completedRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index 12f20e4..eb71513 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_not_start.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 0) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - notStartRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071501) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 0) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + notStartRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + notStartRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView!!.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + notStartRecyclerView.addItemDecoration( + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 42e3203..c015bdf 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,20 +27,17 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_working.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -56,42 +52,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 1) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - workingRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -117,6 +77,43 @@ weakReferenceHandler.sendEmptyMessage(2022071101) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 1) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + workingRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + workingRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -129,55 +126,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } workingRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt new file mode 100644 index 0000000..e9dcf92 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt @@ -0,0 +1,3 @@ +package com.casic.br.operationsite.model + +class ImageModel(val eventId: String, val id: String, val image: String) \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index df28eb5..772c9e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,7 +23,7 @@ versionName "1.0.0.0" ndk { - abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86_64' + abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' } } @@ -73,7 +73,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt index 31dbfa2..63e42ef 100644 --- a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt +++ b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt @@ -2,15 +2,9 @@ import android.content.Context import android.view.ViewGroup -import com.casic.br.operationsite.base.BaseApplication -import com.pengxh.kt.lite.extensions.dp2px -import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.pengxh.kt.lite.extensions.getStatusBarHeight fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - var statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this) - if (statusBarHeight == 0) { - statusBarHeight = 40f.dp2px(BaseApplication.get()) - } - rootView.setPadding(0, statusBarHeight, 0, 0) + rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) rootView.requestLayout() } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index baf7f26..e37bae7 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_completed.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 2) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - completedRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071502) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 2) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + completedRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + completedRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } completedRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index 12f20e4..eb71513 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_not_start.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 0) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - notStartRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071501) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 0) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + notStartRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + notStartRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView!!.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + notStartRecyclerView.addItemDecoration( + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 42e3203..c015bdf 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,20 +27,17 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_working.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -56,42 +52,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 1) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - workingRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -117,6 +77,43 @@ weakReferenceHandler.sendEmptyMessage(2022071101) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 1) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + workingRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + workingRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -129,55 +126,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } workingRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt new file mode 100644 index 0000000..e9dcf92 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt @@ -0,0 +1,3 @@ +package com.casic.br.operationsite.model + +class ImageModel(val eventId: String, val id: String, val image: String) \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java index 2359c3c..7ce3b17 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java @@ -1,9 +1,11 @@ package com.casic.br.operationsite.model; +import java.util.List; + public class WorkSiteDetailModel { private int code; - private DataBean data; + private DataModel data; private String message; private boolean success; @@ -15,11 +17,11 @@ this.code = code; } - public DataBean getData() { + public DataModel getData() { return data; } - public void setData(DataBean data) { + public void setData(DataModel data) { this.data = data; } @@ -39,33 +41,39 @@ this.success = success; } - public static class DataBean { - private String completedDate; - private String connectionPhone; + public static class DataModel { + private String createTime; + private List deviceList; private String id; private String imageUrl; - private String latitude; - private String longitude; - private String projectProgress; + private String projectState; + private String projectStateName; + private String registerTime; private String updateTime; private String workPerson; + private String workPersonDeptId; + private String workPersonDeptName; + private String workPersonName; + private String workPersonPhoneNumber; + private String workRoad; private String workSiteDesc; private String workTitle; + private List workerList; - public String getCompletedDate() { - return completedDate; + public String getCreateTime() { + return createTime; } - public void setCompletedDate(String completedDate) { - this.completedDate = completedDate; + public void setCreateTime(String createTime) { + this.createTime = createTime; } - public String getConnectionPhone() { - return connectionPhone; + public List getDeviceList() { + return deviceList; } - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; + public void setDeviceList(List deviceList) { + this.deviceList = deviceList; } public String getId() { @@ -84,28 +92,28 @@ this.imageUrl = imageUrl; } - public String getLatitude() { - return latitude; + public String getProjectState() { + return projectState; } - public void setLatitude(String latitude) { - this.latitude = latitude; + public void setProjectState(String projectState) { + this.projectState = projectState; } - public String getLongitude() { - return longitude; + public String getProjectStateName() { + return projectStateName; } - public void setLongitude(String longitude) { - this.longitude = longitude; + public void setProjectStateName(String projectStateName) { + this.projectStateName = projectStateName; } - public String getProjectProgress() { - return projectProgress; + public String getRegisterTime() { + return registerTime; } - public void setProjectProgress(String projectProgress) { - this.projectProgress = projectProgress; + public void setRegisterTime(String registerTime) { + this.registerTime = registerTime; } public String getUpdateTime() { @@ -124,6 +132,46 @@ this.workPerson = workPerson; } + public String getWorkPersonDeptId() { + return workPersonDeptId; + } + + public void setWorkPersonDeptId(String workPersonDeptId) { + this.workPersonDeptId = workPersonDeptId; + } + + public String getWorkPersonDeptName() { + return workPersonDeptName; + } + + public void setWorkPersonDeptName(String workPersonDeptName) { + this.workPersonDeptName = workPersonDeptName; + } + + public String getWorkPersonName() { + return workPersonName; + } + + public void setWorkPersonName(String workPersonName) { + this.workPersonName = workPersonName; + } + + public String getWorkPersonPhoneNumber() { + return workPersonPhoneNumber; + } + + public void setWorkPersonPhoneNumber(String workPersonPhoneNumber) { + this.workPersonPhoneNumber = workPersonPhoneNumber; + } + + public String getWorkRoad() { + return workRoad; + } + + public void setWorkRoad(String workRoad) { + this.workRoad = workRoad; + } + public String getWorkSiteDesc() { return workSiteDesc; } @@ -139,5 +187,145 @@ public void setWorkTitle(String workTitle) { this.workTitle = workTitle; } + + public List getWorkerList() { + return workerList; + } + + public void setWorkerList(List workerList) { + this.workerList = workerList; + } + + public static class DeviceListModel { + private String deviceCode; + private String deviceId; + private String id; + private String projectId; + + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + } + + public static class WorkerListModel { + private String braceletCode; + private String hatCode; + private String id; + private String projectId; + private String vastCode; + private String workerDeptId; + private String workerDeptName; + private String workerId; + private String workerName; + private String workerPhoneNumber; + + public String getBraceletCode() { + return braceletCode; + } + + public void setBraceletCode(String braceletCode) { + this.braceletCode = braceletCode; + } + + public String getHatCode() { + return hatCode; + } + + public void setHatCode(String hatCode) { + this.hatCode = hatCode; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + + public String getVastCode() { + return vastCode; + } + + public void setVastCode(String vastCode) { + this.vastCode = vastCode; + } + + public String getWorkerDeptId() { + return workerDeptId; + } + + public void setWorkerDeptId(String workerDeptId) { + this.workerDeptId = workerDeptId; + } + + public String getWorkerDeptName() { + return workerDeptName; + } + + public void setWorkerDeptName(String workerDeptName) { + this.workerDeptName = workerDeptName; + } + + public String getWorkerId() { + return workerId; + } + + public void setWorkerId(String workerId) { + this.workerId = workerId; + } + + public String getWorkerName() { + return workerName; + } + + public void setWorkerName(String workerName) { + this.workerName = workerName; + } + + public String getWorkerPhoneNumber() { + return workerPhoneNumber; + } + + public void setWorkerPhoneNumber(String workerPhoneNumber) { + this.workerPhoneNumber = workerPhoneNumber; + } + } } } diff --git a/app/build.gradle b/app/build.gradle index df28eb5..772c9e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,7 +23,7 @@ versionName "1.0.0.0" ndk { - abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86_64' + abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' } } @@ -73,7 +73,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt index 31dbfa2..63e42ef 100644 --- a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt +++ b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt @@ -2,15 +2,9 @@ import android.content.Context import android.view.ViewGroup -import com.casic.br.operationsite.base.BaseApplication -import com.pengxh.kt.lite.extensions.dp2px -import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.pengxh.kt.lite.extensions.getStatusBarHeight fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - var statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this) - if (statusBarHeight == 0) { - statusBarHeight = 40f.dp2px(BaseApplication.get()) - } - rootView.setPadding(0, statusBarHeight, 0, 0) + rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) rootView.requestLayout() } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index baf7f26..e37bae7 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_completed.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 2) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - completedRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071502) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 2) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + completedRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + completedRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } completedRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index 12f20e4..eb71513 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_not_start.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 0) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - notStartRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071501) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 0) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + notStartRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + notStartRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView!!.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + notStartRecyclerView.addItemDecoration( + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 42e3203..c015bdf 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,20 +27,17 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_working.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -56,42 +52,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 1) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - workingRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -117,6 +77,43 @@ weakReferenceHandler.sendEmptyMessage(2022071101) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 1) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + workingRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + workingRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -129,55 +126,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } workingRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt new file mode 100644 index 0000000..e9dcf92 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt @@ -0,0 +1,3 @@ +package com.casic.br.operationsite.model + +class ImageModel(val eventId: String, val id: String, val image: String) \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java index 2359c3c..7ce3b17 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java @@ -1,9 +1,11 @@ package com.casic.br.operationsite.model; +import java.util.List; + public class WorkSiteDetailModel { private int code; - private DataBean data; + private DataModel data; private String message; private boolean success; @@ -15,11 +17,11 @@ this.code = code; } - public DataBean getData() { + public DataModel getData() { return data; } - public void setData(DataBean data) { + public void setData(DataModel data) { this.data = data; } @@ -39,33 +41,39 @@ this.success = success; } - public static class DataBean { - private String completedDate; - private String connectionPhone; + public static class DataModel { + private String createTime; + private List deviceList; private String id; private String imageUrl; - private String latitude; - private String longitude; - private String projectProgress; + private String projectState; + private String projectStateName; + private String registerTime; private String updateTime; private String workPerson; + private String workPersonDeptId; + private String workPersonDeptName; + private String workPersonName; + private String workPersonPhoneNumber; + private String workRoad; private String workSiteDesc; private String workTitle; + private List workerList; - public String getCompletedDate() { - return completedDate; + public String getCreateTime() { + return createTime; } - public void setCompletedDate(String completedDate) { - this.completedDate = completedDate; + public void setCreateTime(String createTime) { + this.createTime = createTime; } - public String getConnectionPhone() { - return connectionPhone; + public List getDeviceList() { + return deviceList; } - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; + public void setDeviceList(List deviceList) { + this.deviceList = deviceList; } public String getId() { @@ -84,28 +92,28 @@ this.imageUrl = imageUrl; } - public String getLatitude() { - return latitude; + public String getProjectState() { + return projectState; } - public void setLatitude(String latitude) { - this.latitude = latitude; + public void setProjectState(String projectState) { + this.projectState = projectState; } - public String getLongitude() { - return longitude; + public String getProjectStateName() { + return projectStateName; } - public void setLongitude(String longitude) { - this.longitude = longitude; + public void setProjectStateName(String projectStateName) { + this.projectStateName = projectStateName; } - public String getProjectProgress() { - return projectProgress; + public String getRegisterTime() { + return registerTime; } - public void setProjectProgress(String projectProgress) { - this.projectProgress = projectProgress; + public void setRegisterTime(String registerTime) { + this.registerTime = registerTime; } public String getUpdateTime() { @@ -124,6 +132,46 @@ this.workPerson = workPerson; } + public String getWorkPersonDeptId() { + return workPersonDeptId; + } + + public void setWorkPersonDeptId(String workPersonDeptId) { + this.workPersonDeptId = workPersonDeptId; + } + + public String getWorkPersonDeptName() { + return workPersonDeptName; + } + + public void setWorkPersonDeptName(String workPersonDeptName) { + this.workPersonDeptName = workPersonDeptName; + } + + public String getWorkPersonName() { + return workPersonName; + } + + public void setWorkPersonName(String workPersonName) { + this.workPersonName = workPersonName; + } + + public String getWorkPersonPhoneNumber() { + return workPersonPhoneNumber; + } + + public void setWorkPersonPhoneNumber(String workPersonPhoneNumber) { + this.workPersonPhoneNumber = workPersonPhoneNumber; + } + + public String getWorkRoad() { + return workRoad; + } + + public void setWorkRoad(String workRoad) { + this.workRoad = workRoad; + } + public String getWorkSiteDesc() { return workSiteDesc; } @@ -139,5 +187,145 @@ public void setWorkTitle(String workTitle) { this.workTitle = workTitle; } + + public List getWorkerList() { + return workerList; + } + + public void setWorkerList(List workerList) { + this.workerList = workerList; + } + + public static class DeviceListModel { + private String deviceCode; + private String deviceId; + private String id; + private String projectId; + + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + } + + public static class WorkerListModel { + private String braceletCode; + private String hatCode; + private String id; + private String projectId; + private String vastCode; + private String workerDeptId; + private String workerDeptName; + private String workerId; + private String workerName; + private String workerPhoneNumber; + + public String getBraceletCode() { + return braceletCode; + } + + public void setBraceletCode(String braceletCode) { + this.braceletCode = braceletCode; + } + + public String getHatCode() { + return hatCode; + } + + public void setHatCode(String hatCode) { + this.hatCode = hatCode; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + + public String getVastCode() { + return vastCode; + } + + public void setVastCode(String vastCode) { + this.vastCode = vastCode; + } + + public String getWorkerDeptId() { + return workerDeptId; + } + + public void setWorkerDeptId(String workerDeptId) { + this.workerDeptId = workerDeptId; + } + + public String getWorkerDeptName() { + return workerDeptName; + } + + public void setWorkerDeptName(String workerDeptName) { + this.workerDeptName = workerDeptName; + } + + public String getWorkerId() { + return workerId; + } + + public void setWorkerId(String workerId) { + this.workerId = workerId; + } + + public String getWorkerName() { + return workerName; + } + + public void setWorkerName(String workerName) { + this.workerName = workerName; + } + + public String getWorkerPhoneNumber() { + return workerPhoneNumber; + } + + public void setWorkerPhoneNumber(String workerPhoneNumber) { + this.workerPhoneNumber = workerPhoneNumber; + } + } } } diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java index e6aefc7..bca3cff 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java @@ -8,7 +8,7 @@ public class WorkSiteListModel { private int code; - private DataBean data; + private DataModel data; private String message; private boolean success; @@ -20,11 +20,11 @@ this.code = code; } - public DataBean getData() { + public DataModel getData() { return data; } - public void setData(DataBean data) { + public void setData(DataModel data) { this.data = data; } @@ -44,15 +44,15 @@ this.success = success; } - public static class DataBean { - private List rows; + public static class DataModel { + private List rows; private int total; - public List getRows() { + public List getRows() { return rows; } - public void setRows(List rows) { + public void setRows(List rows) { this.rows = rows; } @@ -64,33 +64,29 @@ this.total = total; } - public static class RowsBean { - private String completedDate; - private String connectionPhone; + public static class RowsModel { + private String createTime; private String id; private String imageUrl; - private String latitude; - private String longitude; - private String projectProgress; + private String projectState; + private String projectStateName; + private String registerTime; private String updateTime; private String workPerson; + private String workPersonDeptId; + private String workPersonDeptName; + private String workPersonName; + private String workPersonPhoneNumber; + private String workRoad; private String workSiteDesc; private String workTitle; - public String getCompletedDate() { - return completedDate; + public String getCreateTime() { + return createTime; } - public void setCompletedDate(String completedDate) { - this.completedDate = completedDate; - } - - public String getConnectionPhone() { - return connectionPhone; - } - - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; + public void setCreateTime(String createTime) { + this.createTime = createTime; } public String getId() { @@ -109,28 +105,28 @@ this.imageUrl = imageUrl; } - public String getLatitude() { - return latitude; + public String getProjectState() { + return projectState; } - public void setLatitude(String latitude) { - this.latitude = latitude; + public void setProjectState(String projectState) { + this.projectState = projectState; } - public String getLongitude() { - return longitude; + public String getProjectStateName() { + return projectStateName; } - public void setLongitude(String longitude) { - this.longitude = longitude; + public void setProjectStateName(String projectStateName) { + this.projectStateName = projectStateName; } - public String getProjectProgress() { - return projectProgress; + public String getRegisterTime() { + return registerTime; } - public void setProjectProgress(String projectProgress) { - this.projectProgress = projectProgress; + public void setRegisterTime(String registerTime) { + this.registerTime = registerTime; } public String getUpdateTime() { @@ -149,6 +145,46 @@ this.workPerson = workPerson; } + public String getWorkPersonDeptId() { + return workPersonDeptId; + } + + public void setWorkPersonDeptId(String workPersonDeptId) { + this.workPersonDeptId = workPersonDeptId; + } + + public String getWorkPersonDeptName() { + return workPersonDeptName; + } + + public void setWorkPersonDeptName(String workPersonDeptName) { + this.workPersonDeptName = workPersonDeptName; + } + + public String getWorkPersonName() { + return workPersonName; + } + + public void setWorkPersonName(String workPersonName) { + this.workPersonName = workPersonName; + } + + public String getWorkPersonPhoneNumber() { + return workPersonPhoneNumber; + } + + public void setWorkPersonPhoneNumber(String workPersonPhoneNumber) { + this.workPersonPhoneNumber = workPersonPhoneNumber; + } + + public String getWorkRoad() { + return workRoad; + } + + public void setWorkRoad(String workRoad) { + this.workRoad = workRoad; + } + public String getWorkSiteDesc() { return workSiteDesc; } diff --git a/app/build.gradle b/app/build.gradle index df28eb5..772c9e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,7 +23,7 @@ versionName "1.0.0.0" ndk { - abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86_64' + abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' } } @@ -73,7 +73,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt index 31dbfa2..63e42ef 100644 --- a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt +++ b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt @@ -2,15 +2,9 @@ import android.content.Context import android.view.ViewGroup -import com.casic.br.operationsite.base.BaseApplication -import com.pengxh.kt.lite.extensions.dp2px -import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.pengxh.kt.lite.extensions.getStatusBarHeight fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - var statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this) - if (statusBarHeight == 0) { - statusBarHeight = 40f.dp2px(BaseApplication.get()) - } - rootView.setPadding(0, statusBarHeight, 0, 0) + rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) rootView.requestLayout() } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index baf7f26..e37bae7 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_completed.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 2) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - completedRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071502) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 2) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + completedRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + completedRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } completedRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index 12f20e4..eb71513 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_not_start.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 0) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - notStartRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071501) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 0) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + notStartRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + notStartRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView!!.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + notStartRecyclerView.addItemDecoration( + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 42e3203..c015bdf 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,20 +27,17 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_working.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -56,42 +52,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 1) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - workingRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -117,6 +77,43 @@ weakReferenceHandler.sendEmptyMessage(2022071101) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 1) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + workingRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + workingRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -129,55 +126,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } workingRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt new file mode 100644 index 0000000..e9dcf92 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt @@ -0,0 +1,3 @@ +package com.casic.br.operationsite.model + +class ImageModel(val eventId: String, val id: String, val image: String) \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java index 2359c3c..7ce3b17 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java @@ -1,9 +1,11 @@ package com.casic.br.operationsite.model; +import java.util.List; + public class WorkSiteDetailModel { private int code; - private DataBean data; + private DataModel data; private String message; private boolean success; @@ -15,11 +17,11 @@ this.code = code; } - public DataBean getData() { + public DataModel getData() { return data; } - public void setData(DataBean data) { + public void setData(DataModel data) { this.data = data; } @@ -39,33 +41,39 @@ this.success = success; } - public static class DataBean { - private String completedDate; - private String connectionPhone; + public static class DataModel { + private String createTime; + private List deviceList; private String id; private String imageUrl; - private String latitude; - private String longitude; - private String projectProgress; + private String projectState; + private String projectStateName; + private String registerTime; private String updateTime; private String workPerson; + private String workPersonDeptId; + private String workPersonDeptName; + private String workPersonName; + private String workPersonPhoneNumber; + private String workRoad; private String workSiteDesc; private String workTitle; + private List workerList; - public String getCompletedDate() { - return completedDate; + public String getCreateTime() { + return createTime; } - public void setCompletedDate(String completedDate) { - this.completedDate = completedDate; + public void setCreateTime(String createTime) { + this.createTime = createTime; } - public String getConnectionPhone() { - return connectionPhone; + public List getDeviceList() { + return deviceList; } - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; + public void setDeviceList(List deviceList) { + this.deviceList = deviceList; } public String getId() { @@ -84,28 +92,28 @@ this.imageUrl = imageUrl; } - public String getLatitude() { - return latitude; + public String getProjectState() { + return projectState; } - public void setLatitude(String latitude) { - this.latitude = latitude; + public void setProjectState(String projectState) { + this.projectState = projectState; } - public String getLongitude() { - return longitude; + public String getProjectStateName() { + return projectStateName; } - public void setLongitude(String longitude) { - this.longitude = longitude; + public void setProjectStateName(String projectStateName) { + this.projectStateName = projectStateName; } - public String getProjectProgress() { - return projectProgress; + public String getRegisterTime() { + return registerTime; } - public void setProjectProgress(String projectProgress) { - this.projectProgress = projectProgress; + public void setRegisterTime(String registerTime) { + this.registerTime = registerTime; } public String getUpdateTime() { @@ -124,6 +132,46 @@ this.workPerson = workPerson; } + public String getWorkPersonDeptId() { + return workPersonDeptId; + } + + public void setWorkPersonDeptId(String workPersonDeptId) { + this.workPersonDeptId = workPersonDeptId; + } + + public String getWorkPersonDeptName() { + return workPersonDeptName; + } + + public void setWorkPersonDeptName(String workPersonDeptName) { + this.workPersonDeptName = workPersonDeptName; + } + + public String getWorkPersonName() { + return workPersonName; + } + + public void setWorkPersonName(String workPersonName) { + this.workPersonName = workPersonName; + } + + public String getWorkPersonPhoneNumber() { + return workPersonPhoneNumber; + } + + public void setWorkPersonPhoneNumber(String workPersonPhoneNumber) { + this.workPersonPhoneNumber = workPersonPhoneNumber; + } + + public String getWorkRoad() { + return workRoad; + } + + public void setWorkRoad(String workRoad) { + this.workRoad = workRoad; + } + public String getWorkSiteDesc() { return workSiteDesc; } @@ -139,5 +187,145 @@ public void setWorkTitle(String workTitle) { this.workTitle = workTitle; } + + public List getWorkerList() { + return workerList; + } + + public void setWorkerList(List workerList) { + this.workerList = workerList; + } + + public static class DeviceListModel { + private String deviceCode; + private String deviceId; + private String id; + private String projectId; + + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + } + + public static class WorkerListModel { + private String braceletCode; + private String hatCode; + private String id; + private String projectId; + private String vastCode; + private String workerDeptId; + private String workerDeptName; + private String workerId; + private String workerName; + private String workerPhoneNumber; + + public String getBraceletCode() { + return braceletCode; + } + + public void setBraceletCode(String braceletCode) { + this.braceletCode = braceletCode; + } + + public String getHatCode() { + return hatCode; + } + + public void setHatCode(String hatCode) { + this.hatCode = hatCode; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + + public String getVastCode() { + return vastCode; + } + + public void setVastCode(String vastCode) { + this.vastCode = vastCode; + } + + public String getWorkerDeptId() { + return workerDeptId; + } + + public void setWorkerDeptId(String workerDeptId) { + this.workerDeptId = workerDeptId; + } + + public String getWorkerDeptName() { + return workerDeptName; + } + + public void setWorkerDeptName(String workerDeptName) { + this.workerDeptName = workerDeptName; + } + + public String getWorkerId() { + return workerId; + } + + public void setWorkerId(String workerId) { + this.workerId = workerId; + } + + public String getWorkerName() { + return workerName; + } + + public void setWorkerName(String workerName) { + this.workerName = workerName; + } + + public String getWorkerPhoneNumber() { + return workerPhoneNumber; + } + + public void setWorkerPhoneNumber(String workerPhoneNumber) { + this.workerPhoneNumber = workerPhoneNumber; + } + } } } diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java index e6aefc7..bca3cff 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java @@ -8,7 +8,7 @@ public class WorkSiteListModel { private int code; - private DataBean data; + private DataModel data; private String message; private boolean success; @@ -20,11 +20,11 @@ this.code = code; } - public DataBean getData() { + public DataModel getData() { return data; } - public void setData(DataBean data) { + public void setData(DataModel data) { this.data = data; } @@ -44,15 +44,15 @@ this.success = success; } - public static class DataBean { - private List rows; + public static class DataModel { + private List rows; private int total; - public List getRows() { + public List getRows() { return rows; } - public void setRows(List rows) { + public void setRows(List rows) { this.rows = rows; } @@ -64,33 +64,29 @@ this.total = total; } - public static class RowsBean { - private String completedDate; - private String connectionPhone; + public static class RowsModel { + private String createTime; private String id; private String imageUrl; - private String latitude; - private String longitude; - private String projectProgress; + private String projectState; + private String projectStateName; + private String registerTime; private String updateTime; private String workPerson; + private String workPersonDeptId; + private String workPersonDeptName; + private String workPersonName; + private String workPersonPhoneNumber; + private String workRoad; private String workSiteDesc; private String workTitle; - public String getCompletedDate() { - return completedDate; + public String getCreateTime() { + return createTime; } - public void setCompletedDate(String completedDate) { - this.completedDate = completedDate; - } - - public String getConnectionPhone() { - return connectionPhone; - } - - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; + public void setCreateTime(String createTime) { + this.createTime = createTime; } public String getId() { @@ -109,28 +105,28 @@ this.imageUrl = imageUrl; } - public String getLatitude() { - return latitude; + public String getProjectState() { + return projectState; } - public void setLatitude(String latitude) { - this.latitude = latitude; + public void setProjectState(String projectState) { + this.projectState = projectState; } - public String getLongitude() { - return longitude; + public String getProjectStateName() { + return projectStateName; } - public void setLongitude(String longitude) { - this.longitude = longitude; + public void setProjectStateName(String projectStateName) { + this.projectStateName = projectStateName; } - public String getProjectProgress() { - return projectProgress; + public String getRegisterTime() { + return registerTime; } - public void setProjectProgress(String projectProgress) { - this.projectProgress = projectProgress; + public void setRegisterTime(String registerTime) { + this.registerTime = registerTime; } public String getUpdateTime() { @@ -149,6 +145,46 @@ this.workPerson = workPerson; } + public String getWorkPersonDeptId() { + return workPersonDeptId; + } + + public void setWorkPersonDeptId(String workPersonDeptId) { + this.workPersonDeptId = workPersonDeptId; + } + + public String getWorkPersonDeptName() { + return workPersonDeptName; + } + + public void setWorkPersonDeptName(String workPersonDeptName) { + this.workPersonDeptName = workPersonDeptName; + } + + public String getWorkPersonName() { + return workPersonName; + } + + public void setWorkPersonName(String workPersonName) { + this.workPersonName = workPersonName; + } + + public String getWorkPersonPhoneNumber() { + return workPersonPhoneNumber; + } + + public void setWorkPersonPhoneNumber(String workPersonPhoneNumber) { + this.workPersonPhoneNumber = workPersonPhoneNumber; + } + + public String getWorkRoad() { + return workRoad; + } + + public void setWorkRoad(String workRoad) { + this.workRoad = workRoad; + } + public String getWorkSiteDesc() { return workSiteDesc; } diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index aaccfb1..6aad0a0 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -1,6 +1,7 @@ package com.casic.br.operationsite.retrofit import okhttp3.MultipartBody +import okhttp3.RequestBody import retrofit2.http.* interface RetrofitService { @@ -49,7 +50,7 @@ @GET("/site/detail") suspend fun obtainProjectDetail( @Header("token") token: String, - @Query("id") id: String + @Query("projectId") projectId: String ): String /** @@ -87,18 +88,10 @@ /** * 新增事件 */ - @FormUrlEncoded @POST("/event/add") suspend fun addEvent( @Header("token") token: String, - @Field("eventTitle") eventTitle: String, - @Field("uploadName") uploadName: String, - @Field("phoneNumber") phoneNumber: String, - @Field("eventDescription") eventDescription: String, - @Field("eventImage") eventImage: String, - @Field("lng") lng: String, - @Field("lat") lat: String, - @Field("createTime") createTime: String + @Body requestBody: RequestBody ): String /** diff --git a/app/build.gradle b/app/build.gradle index df28eb5..772c9e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,7 +23,7 @@ versionName "1.0.0.0" ndk { - abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86_64' + abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' } } @@ -73,7 +73,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt index 31dbfa2..63e42ef 100644 --- a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt +++ b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt @@ -2,15 +2,9 @@ import android.content.Context import android.view.ViewGroup -import com.casic.br.operationsite.base.BaseApplication -import com.pengxh.kt.lite.extensions.dp2px -import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.pengxh.kt.lite.extensions.getStatusBarHeight fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - var statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this) - if (statusBarHeight == 0) { - statusBarHeight = 40f.dp2px(BaseApplication.get()) - } - rootView.setPadding(0, statusBarHeight, 0, 0) + rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) rootView.requestLayout() } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index baf7f26..e37bae7 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_completed.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 2) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - completedRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071502) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 2) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + completedRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + completedRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } completedRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index 12f20e4..eb71513 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_not_start.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 0) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - notStartRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071501) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 0) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + notStartRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + notStartRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView!!.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + notStartRecyclerView.addItemDecoration( + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 42e3203..c015bdf 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,20 +27,17 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_working.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -56,42 +52,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 1) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - workingRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -117,6 +77,43 @@ weakReferenceHandler.sendEmptyMessage(2022071101) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 1) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + workingRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + workingRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -129,55 +126,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } workingRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt new file mode 100644 index 0000000..e9dcf92 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt @@ -0,0 +1,3 @@ +package com.casic.br.operationsite.model + +class ImageModel(val eventId: String, val id: String, val image: String) \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java index 2359c3c..7ce3b17 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java @@ -1,9 +1,11 @@ package com.casic.br.operationsite.model; +import java.util.List; + public class WorkSiteDetailModel { private int code; - private DataBean data; + private DataModel data; private String message; private boolean success; @@ -15,11 +17,11 @@ this.code = code; } - public DataBean getData() { + public DataModel getData() { return data; } - public void setData(DataBean data) { + public void setData(DataModel data) { this.data = data; } @@ -39,33 +41,39 @@ this.success = success; } - public static class DataBean { - private String completedDate; - private String connectionPhone; + public static class DataModel { + private String createTime; + private List deviceList; private String id; private String imageUrl; - private String latitude; - private String longitude; - private String projectProgress; + private String projectState; + private String projectStateName; + private String registerTime; private String updateTime; private String workPerson; + private String workPersonDeptId; + private String workPersonDeptName; + private String workPersonName; + private String workPersonPhoneNumber; + private String workRoad; private String workSiteDesc; private String workTitle; + private List workerList; - public String getCompletedDate() { - return completedDate; + public String getCreateTime() { + return createTime; } - public void setCompletedDate(String completedDate) { - this.completedDate = completedDate; + public void setCreateTime(String createTime) { + this.createTime = createTime; } - public String getConnectionPhone() { - return connectionPhone; + public List getDeviceList() { + return deviceList; } - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; + public void setDeviceList(List deviceList) { + this.deviceList = deviceList; } public String getId() { @@ -84,28 +92,28 @@ this.imageUrl = imageUrl; } - public String getLatitude() { - return latitude; + public String getProjectState() { + return projectState; } - public void setLatitude(String latitude) { - this.latitude = latitude; + public void setProjectState(String projectState) { + this.projectState = projectState; } - public String getLongitude() { - return longitude; + public String getProjectStateName() { + return projectStateName; } - public void setLongitude(String longitude) { - this.longitude = longitude; + public void setProjectStateName(String projectStateName) { + this.projectStateName = projectStateName; } - public String getProjectProgress() { - return projectProgress; + public String getRegisterTime() { + return registerTime; } - public void setProjectProgress(String projectProgress) { - this.projectProgress = projectProgress; + public void setRegisterTime(String registerTime) { + this.registerTime = registerTime; } public String getUpdateTime() { @@ -124,6 +132,46 @@ this.workPerson = workPerson; } + public String getWorkPersonDeptId() { + return workPersonDeptId; + } + + public void setWorkPersonDeptId(String workPersonDeptId) { + this.workPersonDeptId = workPersonDeptId; + } + + public String getWorkPersonDeptName() { + return workPersonDeptName; + } + + public void setWorkPersonDeptName(String workPersonDeptName) { + this.workPersonDeptName = workPersonDeptName; + } + + public String getWorkPersonName() { + return workPersonName; + } + + public void setWorkPersonName(String workPersonName) { + this.workPersonName = workPersonName; + } + + public String getWorkPersonPhoneNumber() { + return workPersonPhoneNumber; + } + + public void setWorkPersonPhoneNumber(String workPersonPhoneNumber) { + this.workPersonPhoneNumber = workPersonPhoneNumber; + } + + public String getWorkRoad() { + return workRoad; + } + + public void setWorkRoad(String workRoad) { + this.workRoad = workRoad; + } + public String getWorkSiteDesc() { return workSiteDesc; } @@ -139,5 +187,145 @@ public void setWorkTitle(String workTitle) { this.workTitle = workTitle; } + + public List getWorkerList() { + return workerList; + } + + public void setWorkerList(List workerList) { + this.workerList = workerList; + } + + public static class DeviceListModel { + private String deviceCode; + private String deviceId; + private String id; + private String projectId; + + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + } + + public static class WorkerListModel { + private String braceletCode; + private String hatCode; + private String id; + private String projectId; + private String vastCode; + private String workerDeptId; + private String workerDeptName; + private String workerId; + private String workerName; + private String workerPhoneNumber; + + public String getBraceletCode() { + return braceletCode; + } + + public void setBraceletCode(String braceletCode) { + this.braceletCode = braceletCode; + } + + public String getHatCode() { + return hatCode; + } + + public void setHatCode(String hatCode) { + this.hatCode = hatCode; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + + public String getVastCode() { + return vastCode; + } + + public void setVastCode(String vastCode) { + this.vastCode = vastCode; + } + + public String getWorkerDeptId() { + return workerDeptId; + } + + public void setWorkerDeptId(String workerDeptId) { + this.workerDeptId = workerDeptId; + } + + public String getWorkerDeptName() { + return workerDeptName; + } + + public void setWorkerDeptName(String workerDeptName) { + this.workerDeptName = workerDeptName; + } + + public String getWorkerId() { + return workerId; + } + + public void setWorkerId(String workerId) { + this.workerId = workerId; + } + + public String getWorkerName() { + return workerName; + } + + public void setWorkerName(String workerName) { + this.workerName = workerName; + } + + public String getWorkerPhoneNumber() { + return workerPhoneNumber; + } + + public void setWorkerPhoneNumber(String workerPhoneNumber) { + this.workerPhoneNumber = workerPhoneNumber; + } + } } } diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java index e6aefc7..bca3cff 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java @@ -8,7 +8,7 @@ public class WorkSiteListModel { private int code; - private DataBean data; + private DataModel data; private String message; private boolean success; @@ -20,11 +20,11 @@ this.code = code; } - public DataBean getData() { + public DataModel getData() { return data; } - public void setData(DataBean data) { + public void setData(DataModel data) { this.data = data; } @@ -44,15 +44,15 @@ this.success = success; } - public static class DataBean { - private List rows; + public static class DataModel { + private List rows; private int total; - public List getRows() { + public List getRows() { return rows; } - public void setRows(List rows) { + public void setRows(List rows) { this.rows = rows; } @@ -64,33 +64,29 @@ this.total = total; } - public static class RowsBean { - private String completedDate; - private String connectionPhone; + public static class RowsModel { + private String createTime; private String id; private String imageUrl; - private String latitude; - private String longitude; - private String projectProgress; + private String projectState; + private String projectStateName; + private String registerTime; private String updateTime; private String workPerson; + private String workPersonDeptId; + private String workPersonDeptName; + private String workPersonName; + private String workPersonPhoneNumber; + private String workRoad; private String workSiteDesc; private String workTitle; - public String getCompletedDate() { - return completedDate; + public String getCreateTime() { + return createTime; } - public void setCompletedDate(String completedDate) { - this.completedDate = completedDate; - } - - public String getConnectionPhone() { - return connectionPhone; - } - - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; + public void setCreateTime(String createTime) { + this.createTime = createTime; } public String getId() { @@ -109,28 +105,28 @@ this.imageUrl = imageUrl; } - public String getLatitude() { - return latitude; + public String getProjectState() { + return projectState; } - public void setLatitude(String latitude) { - this.latitude = latitude; + public void setProjectState(String projectState) { + this.projectState = projectState; } - public String getLongitude() { - return longitude; + public String getProjectStateName() { + return projectStateName; } - public void setLongitude(String longitude) { - this.longitude = longitude; + public void setProjectStateName(String projectStateName) { + this.projectStateName = projectStateName; } - public String getProjectProgress() { - return projectProgress; + public String getRegisterTime() { + return registerTime; } - public void setProjectProgress(String projectProgress) { - this.projectProgress = projectProgress; + public void setRegisterTime(String registerTime) { + this.registerTime = registerTime; } public String getUpdateTime() { @@ -149,6 +145,46 @@ this.workPerson = workPerson; } + public String getWorkPersonDeptId() { + return workPersonDeptId; + } + + public void setWorkPersonDeptId(String workPersonDeptId) { + this.workPersonDeptId = workPersonDeptId; + } + + public String getWorkPersonDeptName() { + return workPersonDeptName; + } + + public void setWorkPersonDeptName(String workPersonDeptName) { + this.workPersonDeptName = workPersonDeptName; + } + + public String getWorkPersonName() { + return workPersonName; + } + + public void setWorkPersonName(String workPersonName) { + this.workPersonName = workPersonName; + } + + public String getWorkPersonPhoneNumber() { + return workPersonPhoneNumber; + } + + public void setWorkPersonPhoneNumber(String workPersonPhoneNumber) { + this.workPersonPhoneNumber = workPersonPhoneNumber; + } + + public String getWorkRoad() { + return workRoad; + } + + public void setWorkRoad(String workRoad) { + this.workRoad = workRoad; + } + public String getWorkSiteDesc() { return workSiteDesc; } diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index aaccfb1..6aad0a0 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -1,6 +1,7 @@ package com.casic.br.operationsite.retrofit import okhttp3.MultipartBody +import okhttp3.RequestBody import retrofit2.http.* interface RetrofitService { @@ -49,7 +50,7 @@ @GET("/site/detail") suspend fun obtainProjectDetail( @Header("token") token: String, - @Query("id") id: String + @Query("projectId") projectId: String ): String /** @@ -87,18 +88,10 @@ /** * 新增事件 */ - @FormUrlEncoded @POST("/event/add") suspend fun addEvent( @Header("token") token: String, - @Field("eventTitle") eventTitle: String, - @Field("uploadName") uploadName: String, - @Field("phoneNumber") phoneNumber: String, - @Field("eventDescription") eventDescription: String, - @Field("eventImage") eventImage: String, - @Field("lng") lng: String, - @Field("lat") lat: String, - @Field("createTime") createTime: String + @Body requestBody: RequestBody ): String /** diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 0c15793..72e7aaf 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -1,12 +1,18 @@ package com.casic.br.operationsite.retrofit +import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LocaleConstant +import com.google.gson.Gson +import com.google.gson.JsonObject +import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory import com.pengxh.kt.lite.utils.SaveKeyValues +import okhttp3.MediaType.Companion.toMediaType import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.MultipartBody import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.toRequestBody import java.io.File object RetrofitServiceManager { @@ -51,8 +57,8 @@ /** * 施工现场详情 */ - suspend fun obtainProjectDetail(id: String): String { - return api.obtainProjectDetail(AuthenticationHelper.token!!, id) + suspend fun obtainProjectDetail(projectId: String): String { + return api.obtainProjectDetail(AuthenticationHelper.token!!, projectId) } /** @@ -83,14 +89,34 @@ /** * 新增事件 */ + private val gson by lazy { Gson() } + private val typeToken = object : TypeToken>() {}.type suspend fun addEvent( - eventTitle: String, uploadName: String, phoneNumber: String, eventDescription: String, - eventImage: String, lng: String, lat: String, createTime: String + eventTitle: String, + phoneNumber: String, + lng: String, + createTime: String, + eventDescription: String, + id: String, + uploadName: String, + imageList: Array, + lat: String ): String { - return api.addEvent( - AuthenticationHelper.token!!, - eventTitle, uploadName, phoneNumber, eventDescription, eventImage, lng, lat, createTime + val param = JsonObject() + param.addProperty("eventTitle", eventTitle) + param.addProperty("phoneNumber", phoneNumber) + param.addProperty("lng", lng) + param.addProperty("createTime", createTime) + param.addProperty("eventDescription", eventDescription) + param.addProperty("id", id) + param.addProperty("uploadName", uploadName) + param.add("imageList", gson.toJsonTree(imageList, typeToken).asJsonArray) + param.addProperty("lat", lat) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() ) + return api.addEvent(AuthenticationHelper.token!!, requestBody) } /** diff --git a/app/build.gradle b/app/build.gradle index df28eb5..772c9e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,7 +23,7 @@ versionName "1.0.0.0" ndk { - abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86_64' + abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' } } @@ -73,7 +73,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt index 31dbfa2..63e42ef 100644 --- a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt +++ b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt @@ -2,15 +2,9 @@ import android.content.Context import android.view.ViewGroup -import com.casic.br.operationsite.base.BaseApplication -import com.pengxh.kt.lite.extensions.dp2px -import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.pengxh.kt.lite.extensions.getStatusBarHeight fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - var statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this) - if (statusBarHeight == 0) { - statusBarHeight = 40f.dp2px(BaseApplication.get()) - } - rootView.setPadding(0, statusBarHeight, 0, 0) + rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) rootView.requestLayout() } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index baf7f26..e37bae7 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_completed.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 2) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - completedRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071502) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 2) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + completedRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + completedRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } completedRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index 12f20e4..eb71513 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_not_start.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 0) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - notStartRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071501) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 0) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + notStartRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + notStartRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView!!.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + notStartRecyclerView.addItemDecoration( + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 42e3203..c015bdf 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,20 +27,17 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_working.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -56,42 +52,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 1) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - workingRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -117,6 +77,43 @@ weakReferenceHandler.sendEmptyMessage(2022071101) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 1) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + workingRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + workingRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -129,55 +126,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } workingRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt new file mode 100644 index 0000000..e9dcf92 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt @@ -0,0 +1,3 @@ +package com.casic.br.operationsite.model + +class ImageModel(val eventId: String, val id: String, val image: String) \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java index 2359c3c..7ce3b17 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java @@ -1,9 +1,11 @@ package com.casic.br.operationsite.model; +import java.util.List; + public class WorkSiteDetailModel { private int code; - private DataBean data; + private DataModel data; private String message; private boolean success; @@ -15,11 +17,11 @@ this.code = code; } - public DataBean getData() { + public DataModel getData() { return data; } - public void setData(DataBean data) { + public void setData(DataModel data) { this.data = data; } @@ -39,33 +41,39 @@ this.success = success; } - public static class DataBean { - private String completedDate; - private String connectionPhone; + public static class DataModel { + private String createTime; + private List deviceList; private String id; private String imageUrl; - private String latitude; - private String longitude; - private String projectProgress; + private String projectState; + private String projectStateName; + private String registerTime; private String updateTime; private String workPerson; + private String workPersonDeptId; + private String workPersonDeptName; + private String workPersonName; + private String workPersonPhoneNumber; + private String workRoad; private String workSiteDesc; private String workTitle; + private List workerList; - public String getCompletedDate() { - return completedDate; + public String getCreateTime() { + return createTime; } - public void setCompletedDate(String completedDate) { - this.completedDate = completedDate; + public void setCreateTime(String createTime) { + this.createTime = createTime; } - public String getConnectionPhone() { - return connectionPhone; + public List getDeviceList() { + return deviceList; } - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; + public void setDeviceList(List deviceList) { + this.deviceList = deviceList; } public String getId() { @@ -84,28 +92,28 @@ this.imageUrl = imageUrl; } - public String getLatitude() { - return latitude; + public String getProjectState() { + return projectState; } - public void setLatitude(String latitude) { - this.latitude = latitude; + public void setProjectState(String projectState) { + this.projectState = projectState; } - public String getLongitude() { - return longitude; + public String getProjectStateName() { + return projectStateName; } - public void setLongitude(String longitude) { - this.longitude = longitude; + public void setProjectStateName(String projectStateName) { + this.projectStateName = projectStateName; } - public String getProjectProgress() { - return projectProgress; + public String getRegisterTime() { + return registerTime; } - public void setProjectProgress(String projectProgress) { - this.projectProgress = projectProgress; + public void setRegisterTime(String registerTime) { + this.registerTime = registerTime; } public String getUpdateTime() { @@ -124,6 +132,46 @@ this.workPerson = workPerson; } + public String getWorkPersonDeptId() { + return workPersonDeptId; + } + + public void setWorkPersonDeptId(String workPersonDeptId) { + this.workPersonDeptId = workPersonDeptId; + } + + public String getWorkPersonDeptName() { + return workPersonDeptName; + } + + public void setWorkPersonDeptName(String workPersonDeptName) { + this.workPersonDeptName = workPersonDeptName; + } + + public String getWorkPersonName() { + return workPersonName; + } + + public void setWorkPersonName(String workPersonName) { + this.workPersonName = workPersonName; + } + + public String getWorkPersonPhoneNumber() { + return workPersonPhoneNumber; + } + + public void setWorkPersonPhoneNumber(String workPersonPhoneNumber) { + this.workPersonPhoneNumber = workPersonPhoneNumber; + } + + public String getWorkRoad() { + return workRoad; + } + + public void setWorkRoad(String workRoad) { + this.workRoad = workRoad; + } + public String getWorkSiteDesc() { return workSiteDesc; } @@ -139,5 +187,145 @@ public void setWorkTitle(String workTitle) { this.workTitle = workTitle; } + + public List getWorkerList() { + return workerList; + } + + public void setWorkerList(List workerList) { + this.workerList = workerList; + } + + public static class DeviceListModel { + private String deviceCode; + private String deviceId; + private String id; + private String projectId; + + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + } + + public static class WorkerListModel { + private String braceletCode; + private String hatCode; + private String id; + private String projectId; + private String vastCode; + private String workerDeptId; + private String workerDeptName; + private String workerId; + private String workerName; + private String workerPhoneNumber; + + public String getBraceletCode() { + return braceletCode; + } + + public void setBraceletCode(String braceletCode) { + this.braceletCode = braceletCode; + } + + public String getHatCode() { + return hatCode; + } + + public void setHatCode(String hatCode) { + this.hatCode = hatCode; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + + public String getVastCode() { + return vastCode; + } + + public void setVastCode(String vastCode) { + this.vastCode = vastCode; + } + + public String getWorkerDeptId() { + return workerDeptId; + } + + public void setWorkerDeptId(String workerDeptId) { + this.workerDeptId = workerDeptId; + } + + public String getWorkerDeptName() { + return workerDeptName; + } + + public void setWorkerDeptName(String workerDeptName) { + this.workerDeptName = workerDeptName; + } + + public String getWorkerId() { + return workerId; + } + + public void setWorkerId(String workerId) { + this.workerId = workerId; + } + + public String getWorkerName() { + return workerName; + } + + public void setWorkerName(String workerName) { + this.workerName = workerName; + } + + public String getWorkerPhoneNumber() { + return workerPhoneNumber; + } + + public void setWorkerPhoneNumber(String workerPhoneNumber) { + this.workerPhoneNumber = workerPhoneNumber; + } + } } } diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java index e6aefc7..bca3cff 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java @@ -8,7 +8,7 @@ public class WorkSiteListModel { private int code; - private DataBean data; + private DataModel data; private String message; private boolean success; @@ -20,11 +20,11 @@ this.code = code; } - public DataBean getData() { + public DataModel getData() { return data; } - public void setData(DataBean data) { + public void setData(DataModel data) { this.data = data; } @@ -44,15 +44,15 @@ this.success = success; } - public static class DataBean { - private List rows; + public static class DataModel { + private List rows; private int total; - public List getRows() { + public List getRows() { return rows; } - public void setRows(List rows) { + public void setRows(List rows) { this.rows = rows; } @@ -64,33 +64,29 @@ this.total = total; } - public static class RowsBean { - private String completedDate; - private String connectionPhone; + public static class RowsModel { + private String createTime; private String id; private String imageUrl; - private String latitude; - private String longitude; - private String projectProgress; + private String projectState; + private String projectStateName; + private String registerTime; private String updateTime; private String workPerson; + private String workPersonDeptId; + private String workPersonDeptName; + private String workPersonName; + private String workPersonPhoneNumber; + private String workRoad; private String workSiteDesc; private String workTitle; - public String getCompletedDate() { - return completedDate; + public String getCreateTime() { + return createTime; } - public void setCompletedDate(String completedDate) { - this.completedDate = completedDate; - } - - public String getConnectionPhone() { - return connectionPhone; - } - - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; + public void setCreateTime(String createTime) { + this.createTime = createTime; } public String getId() { @@ -109,28 +105,28 @@ this.imageUrl = imageUrl; } - public String getLatitude() { - return latitude; + public String getProjectState() { + return projectState; } - public void setLatitude(String latitude) { - this.latitude = latitude; + public void setProjectState(String projectState) { + this.projectState = projectState; } - public String getLongitude() { - return longitude; + public String getProjectStateName() { + return projectStateName; } - public void setLongitude(String longitude) { - this.longitude = longitude; + public void setProjectStateName(String projectStateName) { + this.projectStateName = projectStateName; } - public String getProjectProgress() { - return projectProgress; + public String getRegisterTime() { + return registerTime; } - public void setProjectProgress(String projectProgress) { - this.projectProgress = projectProgress; + public void setRegisterTime(String registerTime) { + this.registerTime = registerTime; } public String getUpdateTime() { @@ -149,6 +145,46 @@ this.workPerson = workPerson; } + public String getWorkPersonDeptId() { + return workPersonDeptId; + } + + public void setWorkPersonDeptId(String workPersonDeptId) { + this.workPersonDeptId = workPersonDeptId; + } + + public String getWorkPersonDeptName() { + return workPersonDeptName; + } + + public void setWorkPersonDeptName(String workPersonDeptName) { + this.workPersonDeptName = workPersonDeptName; + } + + public String getWorkPersonName() { + return workPersonName; + } + + public void setWorkPersonName(String workPersonName) { + this.workPersonName = workPersonName; + } + + public String getWorkPersonPhoneNumber() { + return workPersonPhoneNumber; + } + + public void setWorkPersonPhoneNumber(String workPersonPhoneNumber) { + this.workPersonPhoneNumber = workPersonPhoneNumber; + } + + public String getWorkRoad() { + return workRoad; + } + + public void setWorkRoad(String workRoad) { + this.workRoad = workRoad; + } + public String getWorkSiteDesc() { return workSiteDesc; } diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index aaccfb1..6aad0a0 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -1,6 +1,7 @@ package com.casic.br.operationsite.retrofit import okhttp3.MultipartBody +import okhttp3.RequestBody import retrofit2.http.* interface RetrofitService { @@ -49,7 +50,7 @@ @GET("/site/detail") suspend fun obtainProjectDetail( @Header("token") token: String, - @Query("id") id: String + @Query("projectId") projectId: String ): String /** @@ -87,18 +88,10 @@ /** * 新增事件 */ - @FormUrlEncoded @POST("/event/add") suspend fun addEvent( @Header("token") token: String, - @Field("eventTitle") eventTitle: String, - @Field("uploadName") uploadName: String, - @Field("phoneNumber") phoneNumber: String, - @Field("eventDescription") eventDescription: String, - @Field("eventImage") eventImage: String, - @Field("lng") lng: String, - @Field("lat") lat: String, - @Field("createTime") createTime: String + @Body requestBody: RequestBody ): String /** diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 0c15793..72e7aaf 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -1,12 +1,18 @@ package com.casic.br.operationsite.retrofit +import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LocaleConstant +import com.google.gson.Gson +import com.google.gson.JsonObject +import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory import com.pengxh.kt.lite.utils.SaveKeyValues +import okhttp3.MediaType.Companion.toMediaType import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.MultipartBody import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.toRequestBody import java.io.File object RetrofitServiceManager { @@ -51,8 +57,8 @@ /** * 施工现场详情 */ - suspend fun obtainProjectDetail(id: String): String { - return api.obtainProjectDetail(AuthenticationHelper.token!!, id) + suspend fun obtainProjectDetail(projectId: String): String { + return api.obtainProjectDetail(AuthenticationHelper.token!!, projectId) } /** @@ -83,14 +89,34 @@ /** * 新增事件 */ + private val gson by lazy { Gson() } + private val typeToken = object : TypeToken>() {}.type suspend fun addEvent( - eventTitle: String, uploadName: String, phoneNumber: String, eventDescription: String, - eventImage: String, lng: String, lat: String, createTime: String + eventTitle: String, + phoneNumber: String, + lng: String, + createTime: String, + eventDescription: String, + id: String, + uploadName: String, + imageList: Array, + lat: String ): String { - return api.addEvent( - AuthenticationHelper.token!!, - eventTitle, uploadName, phoneNumber, eventDescription, eventImage, lng, lat, createTime + val param = JsonObject() + param.addProperty("eventTitle", eventTitle) + param.addProperty("phoneNumber", phoneNumber) + param.addProperty("lng", lng) + param.addProperty("createTime", createTime) + param.addProperty("eventDescription", eventDescription) + param.addProperty("id", id) + param.addProperty("uploadName", uploadName) + param.add("imageList", gson.toJsonTree(imageList, typeToken).asJsonArray) + param.addProperty("lat", lat) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() ) + return api.addEvent(AuthenticationHelper.token!!, requestBody) } /** diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 231a4a5..e6a213a 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -16,8 +16,7 @@ Manifest.permission.WRITE_SETTINGS ) - // const val SERVER_BASE_URL = "http://192.168.43.66:12210" - const val SERVER_BASE_URL = "http://111.198.10.15:12210" + const val SERVER_BASE_URL = "http://111.198.10.15:21409" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/build.gradle b/app/build.gradle index df28eb5..772c9e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,7 +23,7 @@ versionName "1.0.0.0" ndk { - abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86_64' + abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' } } @@ -73,7 +73,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt index 31dbfa2..63e42ef 100644 --- a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt +++ b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt @@ -2,15 +2,9 @@ import android.content.Context import android.view.ViewGroup -import com.casic.br.operationsite.base.BaseApplication -import com.pengxh.kt.lite.extensions.dp2px -import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.pengxh.kt.lite.extensions.getStatusBarHeight fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - var statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this) - if (statusBarHeight == 0) { - statusBarHeight = 40f.dp2px(BaseApplication.get()) - } - rootView.setPadding(0, statusBarHeight, 0, 0) + rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) rootView.requestLayout() } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index baf7f26..e37bae7 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_completed.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 2) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - completedRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071502) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 2) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + completedRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + completedRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } completedRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index 12f20e4..eb71513 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_not_start.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 0) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - notStartRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071501) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 0) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + notStartRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + notStartRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView!!.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + notStartRecyclerView.addItemDecoration( + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 42e3203..c015bdf 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,20 +27,17 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_working.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -56,42 +52,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 1) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - workingRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -117,6 +77,43 @@ weakReferenceHandler.sendEmptyMessage(2022071101) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 1) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + workingRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + workingRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -129,55 +126,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } workingRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt new file mode 100644 index 0000000..e9dcf92 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt @@ -0,0 +1,3 @@ +package com.casic.br.operationsite.model + +class ImageModel(val eventId: String, val id: String, val image: String) \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java index 2359c3c..7ce3b17 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java @@ -1,9 +1,11 @@ package com.casic.br.operationsite.model; +import java.util.List; + public class WorkSiteDetailModel { private int code; - private DataBean data; + private DataModel data; private String message; private boolean success; @@ -15,11 +17,11 @@ this.code = code; } - public DataBean getData() { + public DataModel getData() { return data; } - public void setData(DataBean data) { + public void setData(DataModel data) { this.data = data; } @@ -39,33 +41,39 @@ this.success = success; } - public static class DataBean { - private String completedDate; - private String connectionPhone; + public static class DataModel { + private String createTime; + private List deviceList; private String id; private String imageUrl; - private String latitude; - private String longitude; - private String projectProgress; + private String projectState; + private String projectStateName; + private String registerTime; private String updateTime; private String workPerson; + private String workPersonDeptId; + private String workPersonDeptName; + private String workPersonName; + private String workPersonPhoneNumber; + private String workRoad; private String workSiteDesc; private String workTitle; + private List workerList; - public String getCompletedDate() { - return completedDate; + public String getCreateTime() { + return createTime; } - public void setCompletedDate(String completedDate) { - this.completedDate = completedDate; + public void setCreateTime(String createTime) { + this.createTime = createTime; } - public String getConnectionPhone() { - return connectionPhone; + public List getDeviceList() { + return deviceList; } - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; + public void setDeviceList(List deviceList) { + this.deviceList = deviceList; } public String getId() { @@ -84,28 +92,28 @@ this.imageUrl = imageUrl; } - public String getLatitude() { - return latitude; + public String getProjectState() { + return projectState; } - public void setLatitude(String latitude) { - this.latitude = latitude; + public void setProjectState(String projectState) { + this.projectState = projectState; } - public String getLongitude() { - return longitude; + public String getProjectStateName() { + return projectStateName; } - public void setLongitude(String longitude) { - this.longitude = longitude; + public void setProjectStateName(String projectStateName) { + this.projectStateName = projectStateName; } - public String getProjectProgress() { - return projectProgress; + public String getRegisterTime() { + return registerTime; } - public void setProjectProgress(String projectProgress) { - this.projectProgress = projectProgress; + public void setRegisterTime(String registerTime) { + this.registerTime = registerTime; } public String getUpdateTime() { @@ -124,6 +132,46 @@ this.workPerson = workPerson; } + public String getWorkPersonDeptId() { + return workPersonDeptId; + } + + public void setWorkPersonDeptId(String workPersonDeptId) { + this.workPersonDeptId = workPersonDeptId; + } + + public String getWorkPersonDeptName() { + return workPersonDeptName; + } + + public void setWorkPersonDeptName(String workPersonDeptName) { + this.workPersonDeptName = workPersonDeptName; + } + + public String getWorkPersonName() { + return workPersonName; + } + + public void setWorkPersonName(String workPersonName) { + this.workPersonName = workPersonName; + } + + public String getWorkPersonPhoneNumber() { + return workPersonPhoneNumber; + } + + public void setWorkPersonPhoneNumber(String workPersonPhoneNumber) { + this.workPersonPhoneNumber = workPersonPhoneNumber; + } + + public String getWorkRoad() { + return workRoad; + } + + public void setWorkRoad(String workRoad) { + this.workRoad = workRoad; + } + public String getWorkSiteDesc() { return workSiteDesc; } @@ -139,5 +187,145 @@ public void setWorkTitle(String workTitle) { this.workTitle = workTitle; } + + public List getWorkerList() { + return workerList; + } + + public void setWorkerList(List workerList) { + this.workerList = workerList; + } + + public static class DeviceListModel { + private String deviceCode; + private String deviceId; + private String id; + private String projectId; + + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + } + + public static class WorkerListModel { + private String braceletCode; + private String hatCode; + private String id; + private String projectId; + private String vastCode; + private String workerDeptId; + private String workerDeptName; + private String workerId; + private String workerName; + private String workerPhoneNumber; + + public String getBraceletCode() { + return braceletCode; + } + + public void setBraceletCode(String braceletCode) { + this.braceletCode = braceletCode; + } + + public String getHatCode() { + return hatCode; + } + + public void setHatCode(String hatCode) { + this.hatCode = hatCode; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + + public String getVastCode() { + return vastCode; + } + + public void setVastCode(String vastCode) { + this.vastCode = vastCode; + } + + public String getWorkerDeptId() { + return workerDeptId; + } + + public void setWorkerDeptId(String workerDeptId) { + this.workerDeptId = workerDeptId; + } + + public String getWorkerDeptName() { + return workerDeptName; + } + + public void setWorkerDeptName(String workerDeptName) { + this.workerDeptName = workerDeptName; + } + + public String getWorkerId() { + return workerId; + } + + public void setWorkerId(String workerId) { + this.workerId = workerId; + } + + public String getWorkerName() { + return workerName; + } + + public void setWorkerName(String workerName) { + this.workerName = workerName; + } + + public String getWorkerPhoneNumber() { + return workerPhoneNumber; + } + + public void setWorkerPhoneNumber(String workerPhoneNumber) { + this.workerPhoneNumber = workerPhoneNumber; + } + } } } diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java index e6aefc7..bca3cff 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java @@ -8,7 +8,7 @@ public class WorkSiteListModel { private int code; - private DataBean data; + private DataModel data; private String message; private boolean success; @@ -20,11 +20,11 @@ this.code = code; } - public DataBean getData() { + public DataModel getData() { return data; } - public void setData(DataBean data) { + public void setData(DataModel data) { this.data = data; } @@ -44,15 +44,15 @@ this.success = success; } - public static class DataBean { - private List rows; + public static class DataModel { + private List rows; private int total; - public List getRows() { + public List getRows() { return rows; } - public void setRows(List rows) { + public void setRows(List rows) { this.rows = rows; } @@ -64,33 +64,29 @@ this.total = total; } - public static class RowsBean { - private String completedDate; - private String connectionPhone; + public static class RowsModel { + private String createTime; private String id; private String imageUrl; - private String latitude; - private String longitude; - private String projectProgress; + private String projectState; + private String projectStateName; + private String registerTime; private String updateTime; private String workPerson; + private String workPersonDeptId; + private String workPersonDeptName; + private String workPersonName; + private String workPersonPhoneNumber; + private String workRoad; private String workSiteDesc; private String workTitle; - public String getCompletedDate() { - return completedDate; + public String getCreateTime() { + return createTime; } - public void setCompletedDate(String completedDate) { - this.completedDate = completedDate; - } - - public String getConnectionPhone() { - return connectionPhone; - } - - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; + public void setCreateTime(String createTime) { + this.createTime = createTime; } public String getId() { @@ -109,28 +105,28 @@ this.imageUrl = imageUrl; } - public String getLatitude() { - return latitude; + public String getProjectState() { + return projectState; } - public void setLatitude(String latitude) { - this.latitude = latitude; + public void setProjectState(String projectState) { + this.projectState = projectState; } - public String getLongitude() { - return longitude; + public String getProjectStateName() { + return projectStateName; } - public void setLongitude(String longitude) { - this.longitude = longitude; + public void setProjectStateName(String projectStateName) { + this.projectStateName = projectStateName; } - public String getProjectProgress() { - return projectProgress; + public String getRegisterTime() { + return registerTime; } - public void setProjectProgress(String projectProgress) { - this.projectProgress = projectProgress; + public void setRegisterTime(String registerTime) { + this.registerTime = registerTime; } public String getUpdateTime() { @@ -149,6 +145,46 @@ this.workPerson = workPerson; } + public String getWorkPersonDeptId() { + return workPersonDeptId; + } + + public void setWorkPersonDeptId(String workPersonDeptId) { + this.workPersonDeptId = workPersonDeptId; + } + + public String getWorkPersonDeptName() { + return workPersonDeptName; + } + + public void setWorkPersonDeptName(String workPersonDeptName) { + this.workPersonDeptName = workPersonDeptName; + } + + public String getWorkPersonName() { + return workPersonName; + } + + public void setWorkPersonName(String workPersonName) { + this.workPersonName = workPersonName; + } + + public String getWorkPersonPhoneNumber() { + return workPersonPhoneNumber; + } + + public void setWorkPersonPhoneNumber(String workPersonPhoneNumber) { + this.workPersonPhoneNumber = workPersonPhoneNumber; + } + + public String getWorkRoad() { + return workRoad; + } + + public void setWorkRoad(String workRoad) { + this.workRoad = workRoad; + } + public String getWorkSiteDesc() { return workSiteDesc; } diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index aaccfb1..6aad0a0 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -1,6 +1,7 @@ package com.casic.br.operationsite.retrofit import okhttp3.MultipartBody +import okhttp3.RequestBody import retrofit2.http.* interface RetrofitService { @@ -49,7 +50,7 @@ @GET("/site/detail") suspend fun obtainProjectDetail( @Header("token") token: String, - @Query("id") id: String + @Query("projectId") projectId: String ): String /** @@ -87,18 +88,10 @@ /** * 新增事件 */ - @FormUrlEncoded @POST("/event/add") suspend fun addEvent( @Header("token") token: String, - @Field("eventTitle") eventTitle: String, - @Field("uploadName") uploadName: String, - @Field("phoneNumber") phoneNumber: String, - @Field("eventDescription") eventDescription: String, - @Field("eventImage") eventImage: String, - @Field("lng") lng: String, - @Field("lat") lat: String, - @Field("createTime") createTime: String + @Body requestBody: RequestBody ): String /** diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 0c15793..72e7aaf 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -1,12 +1,18 @@ package com.casic.br.operationsite.retrofit +import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LocaleConstant +import com.google.gson.Gson +import com.google.gson.JsonObject +import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory import com.pengxh.kt.lite.utils.SaveKeyValues +import okhttp3.MediaType.Companion.toMediaType import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.MultipartBody import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.toRequestBody import java.io.File object RetrofitServiceManager { @@ -51,8 +57,8 @@ /** * 施工现场详情 */ - suspend fun obtainProjectDetail(id: String): String { - return api.obtainProjectDetail(AuthenticationHelper.token!!, id) + suspend fun obtainProjectDetail(projectId: String): String { + return api.obtainProjectDetail(AuthenticationHelper.token!!, projectId) } /** @@ -83,14 +89,34 @@ /** * 新增事件 */ + private val gson by lazy { Gson() } + private val typeToken = object : TypeToken>() {}.type suspend fun addEvent( - eventTitle: String, uploadName: String, phoneNumber: String, eventDescription: String, - eventImage: String, lng: String, lat: String, createTime: String + eventTitle: String, + phoneNumber: String, + lng: String, + createTime: String, + eventDescription: String, + id: String, + uploadName: String, + imageList: Array, + lat: String ): String { - return api.addEvent( - AuthenticationHelper.token!!, - eventTitle, uploadName, phoneNumber, eventDescription, eventImage, lng, lat, createTime + val param = JsonObject() + param.addProperty("eventTitle", eventTitle) + param.addProperty("phoneNumber", phoneNumber) + param.addProperty("lng", lng) + param.addProperty("createTime", createTime) + param.addProperty("eventDescription", eventDescription) + param.addProperty("id", id) + param.addProperty("uploadName", uploadName) + param.add("imageList", gson.toJsonTree(imageList, typeToken).asJsonArray) + param.addProperty("lat", lat) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() ) + return api.addEvent(AuthenticationHelper.token!!, requestBody) } /** diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 231a4a5..e6a213a 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -16,8 +16,7 @@ Manifest.permission.WRITE_SETTINGS ) - // const val SERVER_BASE_URL = "http://192.168.43.66:12210" - const val SERVER_BASE_URL = "http://111.198.10.15:12210" + const val SERVER_BASE_URL = "http://111.198.10.15:21409" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt index 9ae3e27..cc59d26 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt @@ -14,7 +14,7 @@ import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar -import com.casic.br.operationsite.extensions.reformat +import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.model.UserDetailModel import com.casic.br.operationsite.utils.GlideLoadEngine import com.casic.br.operationsite.utils.LoadingDialogHub @@ -176,15 +176,26 @@ return@setOnClickListener } + val imageModels = ArrayList() + imagePaths.forEach { url -> + imageModels.add(ImageModel("", "", url)) + } + + val imageArray = arrayOf() + imageModels.forEachIndexed { index, imageModel -> + imageArray[index] = imageModel + } + eventViewModel.addEvent( eventNameView.text.toString(), - uploadPersonView.text.toString(), personNumberView.text.toString(), - siteEditView.text.toString(), - imagePaths.reformat(), mapLocation?.longitude.toString(), + System.currentTimeMillis().timestampToCompleteDate(), + siteEditView.text.toString(), + "", + uploadPersonView.text.toString(), + imageArray, mapLocation?.latitude.toString(), - System.currentTimeMillis().timestampToCompleteDate() ) } diff --git a/app/build.gradle b/app/build.gradle index df28eb5..772c9e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,7 +23,7 @@ versionName "1.0.0.0" ndk { - abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86_64' + abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' } } @@ -73,7 +73,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt index 31dbfa2..63e42ef 100644 --- a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt +++ b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt @@ -2,15 +2,9 @@ import android.content.Context import android.view.ViewGroup -import com.casic.br.operationsite.base.BaseApplication -import com.pengxh.kt.lite.extensions.dp2px -import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.pengxh.kt.lite.extensions.getStatusBarHeight fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - var statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this) - if (statusBarHeight == 0) { - statusBarHeight = 40f.dp2px(BaseApplication.get()) - } - rootView.setPadding(0, statusBarHeight, 0, 0) + rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) rootView.requestLayout() } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index baf7f26..e37bae7 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_completed.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 2) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - completedRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071502) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 2) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + completedRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + completedRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } completedRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index 12f20e4..eb71513 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_not_start.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 0) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - notStartRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071501) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 0) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + notStartRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + notStartRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView!!.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + notStartRecyclerView.addItemDecoration( + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 42e3203..c015bdf 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,20 +27,17 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_working.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -56,42 +52,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 1) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - workingRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -117,6 +77,43 @@ weakReferenceHandler.sendEmptyMessage(2022071101) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 1) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + workingRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + workingRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -129,55 +126,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } workingRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt new file mode 100644 index 0000000..e9dcf92 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt @@ -0,0 +1,3 @@ +package com.casic.br.operationsite.model + +class ImageModel(val eventId: String, val id: String, val image: String) \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java index 2359c3c..7ce3b17 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java @@ -1,9 +1,11 @@ package com.casic.br.operationsite.model; +import java.util.List; + public class WorkSiteDetailModel { private int code; - private DataBean data; + private DataModel data; private String message; private boolean success; @@ -15,11 +17,11 @@ this.code = code; } - public DataBean getData() { + public DataModel getData() { return data; } - public void setData(DataBean data) { + public void setData(DataModel data) { this.data = data; } @@ -39,33 +41,39 @@ this.success = success; } - public static class DataBean { - private String completedDate; - private String connectionPhone; + public static class DataModel { + private String createTime; + private List deviceList; private String id; private String imageUrl; - private String latitude; - private String longitude; - private String projectProgress; + private String projectState; + private String projectStateName; + private String registerTime; private String updateTime; private String workPerson; + private String workPersonDeptId; + private String workPersonDeptName; + private String workPersonName; + private String workPersonPhoneNumber; + private String workRoad; private String workSiteDesc; private String workTitle; + private List workerList; - public String getCompletedDate() { - return completedDate; + public String getCreateTime() { + return createTime; } - public void setCompletedDate(String completedDate) { - this.completedDate = completedDate; + public void setCreateTime(String createTime) { + this.createTime = createTime; } - public String getConnectionPhone() { - return connectionPhone; + public List getDeviceList() { + return deviceList; } - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; + public void setDeviceList(List deviceList) { + this.deviceList = deviceList; } public String getId() { @@ -84,28 +92,28 @@ this.imageUrl = imageUrl; } - public String getLatitude() { - return latitude; + public String getProjectState() { + return projectState; } - public void setLatitude(String latitude) { - this.latitude = latitude; + public void setProjectState(String projectState) { + this.projectState = projectState; } - public String getLongitude() { - return longitude; + public String getProjectStateName() { + return projectStateName; } - public void setLongitude(String longitude) { - this.longitude = longitude; + public void setProjectStateName(String projectStateName) { + this.projectStateName = projectStateName; } - public String getProjectProgress() { - return projectProgress; + public String getRegisterTime() { + return registerTime; } - public void setProjectProgress(String projectProgress) { - this.projectProgress = projectProgress; + public void setRegisterTime(String registerTime) { + this.registerTime = registerTime; } public String getUpdateTime() { @@ -124,6 +132,46 @@ this.workPerson = workPerson; } + public String getWorkPersonDeptId() { + return workPersonDeptId; + } + + public void setWorkPersonDeptId(String workPersonDeptId) { + this.workPersonDeptId = workPersonDeptId; + } + + public String getWorkPersonDeptName() { + return workPersonDeptName; + } + + public void setWorkPersonDeptName(String workPersonDeptName) { + this.workPersonDeptName = workPersonDeptName; + } + + public String getWorkPersonName() { + return workPersonName; + } + + public void setWorkPersonName(String workPersonName) { + this.workPersonName = workPersonName; + } + + public String getWorkPersonPhoneNumber() { + return workPersonPhoneNumber; + } + + public void setWorkPersonPhoneNumber(String workPersonPhoneNumber) { + this.workPersonPhoneNumber = workPersonPhoneNumber; + } + + public String getWorkRoad() { + return workRoad; + } + + public void setWorkRoad(String workRoad) { + this.workRoad = workRoad; + } + public String getWorkSiteDesc() { return workSiteDesc; } @@ -139,5 +187,145 @@ public void setWorkTitle(String workTitle) { this.workTitle = workTitle; } + + public List getWorkerList() { + return workerList; + } + + public void setWorkerList(List workerList) { + this.workerList = workerList; + } + + public static class DeviceListModel { + private String deviceCode; + private String deviceId; + private String id; + private String projectId; + + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + } + + public static class WorkerListModel { + private String braceletCode; + private String hatCode; + private String id; + private String projectId; + private String vastCode; + private String workerDeptId; + private String workerDeptName; + private String workerId; + private String workerName; + private String workerPhoneNumber; + + public String getBraceletCode() { + return braceletCode; + } + + public void setBraceletCode(String braceletCode) { + this.braceletCode = braceletCode; + } + + public String getHatCode() { + return hatCode; + } + + public void setHatCode(String hatCode) { + this.hatCode = hatCode; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + + public String getVastCode() { + return vastCode; + } + + public void setVastCode(String vastCode) { + this.vastCode = vastCode; + } + + public String getWorkerDeptId() { + return workerDeptId; + } + + public void setWorkerDeptId(String workerDeptId) { + this.workerDeptId = workerDeptId; + } + + public String getWorkerDeptName() { + return workerDeptName; + } + + public void setWorkerDeptName(String workerDeptName) { + this.workerDeptName = workerDeptName; + } + + public String getWorkerId() { + return workerId; + } + + public void setWorkerId(String workerId) { + this.workerId = workerId; + } + + public String getWorkerName() { + return workerName; + } + + public void setWorkerName(String workerName) { + this.workerName = workerName; + } + + public String getWorkerPhoneNumber() { + return workerPhoneNumber; + } + + public void setWorkerPhoneNumber(String workerPhoneNumber) { + this.workerPhoneNumber = workerPhoneNumber; + } + } } } diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java index e6aefc7..bca3cff 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java @@ -8,7 +8,7 @@ public class WorkSiteListModel { private int code; - private DataBean data; + private DataModel data; private String message; private boolean success; @@ -20,11 +20,11 @@ this.code = code; } - public DataBean getData() { + public DataModel getData() { return data; } - public void setData(DataBean data) { + public void setData(DataModel data) { this.data = data; } @@ -44,15 +44,15 @@ this.success = success; } - public static class DataBean { - private List rows; + public static class DataModel { + private List rows; private int total; - public List getRows() { + public List getRows() { return rows; } - public void setRows(List rows) { + public void setRows(List rows) { this.rows = rows; } @@ -64,33 +64,29 @@ this.total = total; } - public static class RowsBean { - private String completedDate; - private String connectionPhone; + public static class RowsModel { + private String createTime; private String id; private String imageUrl; - private String latitude; - private String longitude; - private String projectProgress; + private String projectState; + private String projectStateName; + private String registerTime; private String updateTime; private String workPerson; + private String workPersonDeptId; + private String workPersonDeptName; + private String workPersonName; + private String workPersonPhoneNumber; + private String workRoad; private String workSiteDesc; private String workTitle; - public String getCompletedDate() { - return completedDate; + public String getCreateTime() { + return createTime; } - public void setCompletedDate(String completedDate) { - this.completedDate = completedDate; - } - - public String getConnectionPhone() { - return connectionPhone; - } - - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; + public void setCreateTime(String createTime) { + this.createTime = createTime; } public String getId() { @@ -109,28 +105,28 @@ this.imageUrl = imageUrl; } - public String getLatitude() { - return latitude; + public String getProjectState() { + return projectState; } - public void setLatitude(String latitude) { - this.latitude = latitude; + public void setProjectState(String projectState) { + this.projectState = projectState; } - public String getLongitude() { - return longitude; + public String getProjectStateName() { + return projectStateName; } - public void setLongitude(String longitude) { - this.longitude = longitude; + public void setProjectStateName(String projectStateName) { + this.projectStateName = projectStateName; } - public String getProjectProgress() { - return projectProgress; + public String getRegisterTime() { + return registerTime; } - public void setProjectProgress(String projectProgress) { - this.projectProgress = projectProgress; + public void setRegisterTime(String registerTime) { + this.registerTime = registerTime; } public String getUpdateTime() { @@ -149,6 +145,46 @@ this.workPerson = workPerson; } + public String getWorkPersonDeptId() { + return workPersonDeptId; + } + + public void setWorkPersonDeptId(String workPersonDeptId) { + this.workPersonDeptId = workPersonDeptId; + } + + public String getWorkPersonDeptName() { + return workPersonDeptName; + } + + public void setWorkPersonDeptName(String workPersonDeptName) { + this.workPersonDeptName = workPersonDeptName; + } + + public String getWorkPersonName() { + return workPersonName; + } + + public void setWorkPersonName(String workPersonName) { + this.workPersonName = workPersonName; + } + + public String getWorkPersonPhoneNumber() { + return workPersonPhoneNumber; + } + + public void setWorkPersonPhoneNumber(String workPersonPhoneNumber) { + this.workPersonPhoneNumber = workPersonPhoneNumber; + } + + public String getWorkRoad() { + return workRoad; + } + + public void setWorkRoad(String workRoad) { + this.workRoad = workRoad; + } + public String getWorkSiteDesc() { return workSiteDesc; } diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index aaccfb1..6aad0a0 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -1,6 +1,7 @@ package com.casic.br.operationsite.retrofit import okhttp3.MultipartBody +import okhttp3.RequestBody import retrofit2.http.* interface RetrofitService { @@ -49,7 +50,7 @@ @GET("/site/detail") suspend fun obtainProjectDetail( @Header("token") token: String, - @Query("id") id: String + @Query("projectId") projectId: String ): String /** @@ -87,18 +88,10 @@ /** * 新增事件 */ - @FormUrlEncoded @POST("/event/add") suspend fun addEvent( @Header("token") token: String, - @Field("eventTitle") eventTitle: String, - @Field("uploadName") uploadName: String, - @Field("phoneNumber") phoneNumber: String, - @Field("eventDescription") eventDescription: String, - @Field("eventImage") eventImage: String, - @Field("lng") lng: String, - @Field("lat") lat: String, - @Field("createTime") createTime: String + @Body requestBody: RequestBody ): String /** diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 0c15793..72e7aaf 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -1,12 +1,18 @@ package com.casic.br.operationsite.retrofit +import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LocaleConstant +import com.google.gson.Gson +import com.google.gson.JsonObject +import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory import com.pengxh.kt.lite.utils.SaveKeyValues +import okhttp3.MediaType.Companion.toMediaType import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.MultipartBody import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.toRequestBody import java.io.File object RetrofitServiceManager { @@ -51,8 +57,8 @@ /** * 施工现场详情 */ - suspend fun obtainProjectDetail(id: String): String { - return api.obtainProjectDetail(AuthenticationHelper.token!!, id) + suspend fun obtainProjectDetail(projectId: String): String { + return api.obtainProjectDetail(AuthenticationHelper.token!!, projectId) } /** @@ -83,14 +89,34 @@ /** * 新增事件 */ + private val gson by lazy { Gson() } + private val typeToken = object : TypeToken>() {}.type suspend fun addEvent( - eventTitle: String, uploadName: String, phoneNumber: String, eventDescription: String, - eventImage: String, lng: String, lat: String, createTime: String + eventTitle: String, + phoneNumber: String, + lng: String, + createTime: String, + eventDescription: String, + id: String, + uploadName: String, + imageList: Array, + lat: String ): String { - return api.addEvent( - AuthenticationHelper.token!!, - eventTitle, uploadName, phoneNumber, eventDescription, eventImage, lng, lat, createTime + val param = JsonObject() + param.addProperty("eventTitle", eventTitle) + param.addProperty("phoneNumber", phoneNumber) + param.addProperty("lng", lng) + param.addProperty("createTime", createTime) + param.addProperty("eventDescription", eventDescription) + param.addProperty("id", id) + param.addProperty("uploadName", uploadName) + param.add("imageList", gson.toJsonTree(imageList, typeToken).asJsonArray) + param.addProperty("lat", lat) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() ) + return api.addEvent(AuthenticationHelper.token!!, requestBody) } /** diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 231a4a5..e6a213a 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -16,8 +16,7 @@ Manifest.permission.WRITE_SETTINGS ) - // const val SERVER_BASE_URL = "http://192.168.43.66:12210" - const val SERVER_BASE_URL = "http://111.198.10.15:12210" + const val SERVER_BASE_URL = "http://111.198.10.15:21409" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt index 9ae3e27..cc59d26 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt @@ -14,7 +14,7 @@ import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar -import com.casic.br.operationsite.extensions.reformat +import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.model.UserDetailModel import com.casic.br.operationsite.utils.GlideLoadEngine import com.casic.br.operationsite.utils.LoadingDialogHub @@ -176,15 +176,26 @@ return@setOnClickListener } + val imageModels = ArrayList() + imagePaths.forEach { url -> + imageModels.add(ImageModel("", "", url)) + } + + val imageArray = arrayOf() + imageModels.forEachIndexed { index, imageModel -> + imageArray[index] = imageModel + } + eventViewModel.addEvent( eventNameView.text.toString(), - uploadPersonView.text.toString(), personNumberView.text.toString(), - siteEditView.text.toString(), - imagePaths.reformat(), mapLocation?.longitude.toString(), + System.currentTimeMillis().timestampToCompleteDate(), + siteEditView.text.toString(), + "", + uploadPersonView.text.toString(), + imageArray, mapLocation?.latitude.toString(), - System.currentTimeMillis().timestampToCompleteDate() ) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 116ac73..9b225f1 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -4,16 +4,13 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions -import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* -import com.amap.api.services.core.LatLonPoint -import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Poi import com.amap.api.services.geocoder.GeocodeSearch -import com.amap.api.services.geocoder.RegeocodeQuery -import com.amap.api.services.geocoder.RegeocodeResult import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.showRouteOnMap +import com.casic.br.operationsite.utils.LoadingDialogHub import com.casic.br.operationsite.vm.WorkSiteViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -21,6 +18,7 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant +import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_site_tab.* @@ -30,7 +28,6 @@ private lateinit var aMap: AMap private lateinit var workSiteViewModel: WorkSiteViewModel - private lateinit var id: String private val geocoderSearch by lazy { GeocodeSearch(this) } private var latLng: LatLng? = null @@ -46,7 +43,7 @@ } override fun initData() { - this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! + val projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! /** * 地图初始化设置 @@ -63,71 +60,66 @@ * 数据初始化 * */ workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] + workSiteViewModel.obtainProjectDetail(projectId) + workSiteViewModel.detailModel.observe(this) { + if (it.code == 200) { + projectNameView.text = it.data.workTitle + principalView.text = String.format("现场负责人:${it.data.workPersonName}") + phoneNumberView.text = String.format("联系电话:${it.data.workPersonPhoneNumber}") + workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") + locationView.text = String.format("所属道路:${it.data.workRoad}") + +// val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) +// val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) +// aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { +// override fun onFinish() { +// //添加Marker +// val markerOptions = MarkerOptions() +// .position(latLng) +// .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) +// .draggable(true) +// aMap.addMarker(markerOptions) +// } +// +// override fun onCancel() { +// +// } +// }) +// +// val queryParam = RegeocodeQuery( +// LatLonPoint(detailData.latitude.toDouble(), detailData.longitude.toDouble()), +// 200f, +// GeocodeSearch.AMAP +// ) +// geocoderSearch.getFromLocationAsyn(queryParam) +// geocoderSearch.setOnGeocodeSearchListener(object : +// GeocodeSearch.OnGeocodeSearchListener { +// override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { +// if (rCode == 1000) { +// locationView.text = String.format( +// "地址:${result?.regeocodeAddress?.formatAddress}" +// ) +// } +// } +// +// override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { +// +// } +// }) + } + } } override fun observeRequestState() { -// workSiteViewModel.loadState.observe(this) { -// when (it) { -// LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") -// else -> LoadingDialogHub.dismiss() -// } -// } + workSiteViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + } } override fun initEvent() { - workSiteViewModel.obtainProjectDetail(id) - workSiteViewModel.detailModel.observe(this) { - if (it.code == 200) { - val detailData = it.data - projectNameView.text = detailData.workTitle - principalView.text = String.format("现场负责人:${detailData.workPerson}") - phoneNumberView.text = String.format("联系电话:${detailData.connectionPhone}") - completedDateView.text = String.format("竣工日期:${detailData.completedDate}") - projectProgressView.text = "工程进度:${detailData.projectProgress}%" - - this.latLng = LatLng( - detailData.latitude.toDouble(), detailData.longitude.toDouble() - ) - val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) - val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { - override fun onFinish() { - //添加Marker - val markerOptions = MarkerOptions() - .position(latLng) - .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) - .draggable(true) - aMap.addMarker(markerOptions) - } - - override fun onCancel() { - - } - }) - - val queryParam = RegeocodeQuery( - LatLonPoint(detailData.latitude.toDouble(), detailData.longitude.toDouble()), - 200f, - GeocodeSearch.AMAP - ) - geocoderSearch.getFromLocationAsyn(queryParam) - geocoderSearch.setOnGeocodeSearchListener(object : - GeocodeSearch.OnGeocodeSearchListener { - override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { - if (rCode == 1000) { - locationView.text = String.format( - "地址:${result?.regeocodeAddress?.formatAddress}" - ) - } - } - - override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { - - } - }) - } - } - navigationView.setOnClickListener { if (latLng == null) { "经纬度异常,无法开启导航".show(this) @@ -178,13 +170,6 @@ applyTextView.setOnClickListener { navigatePageTo() } - - /** - * TODO - * */ - warningTagView.setOnClickListener { - "需求不明,待完善".show(this) - } } /**地图相关*********/ diff --git a/app/build.gradle b/app/build.gradle index df28eb5..772c9e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,7 +23,7 @@ versionName "1.0.0.0" ndk { - abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86_64' + abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' } } @@ -73,7 +73,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt index 31dbfa2..63e42ef 100644 --- a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt +++ b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt @@ -2,15 +2,9 @@ import android.content.Context import android.view.ViewGroup -import com.casic.br.operationsite.base.BaseApplication -import com.pengxh.kt.lite.extensions.dp2px -import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.pengxh.kt.lite.extensions.getStatusBarHeight fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - var statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this) - if (statusBarHeight == 0) { - statusBarHeight = 40f.dp2px(BaseApplication.get()) - } - rootView.setPadding(0, statusBarHeight, 0, 0) + rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) rootView.requestLayout() } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index baf7f26..e37bae7 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_completed.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 2) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - completedRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071502) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 2) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + completedRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + completedRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } completedRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index 12f20e4..eb71513 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_not_start.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 0) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - notStartRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071501) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 0) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + notStartRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + notStartRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView!!.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + notStartRecyclerView.addItemDecoration( + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 42e3203..c015bdf 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,20 +27,17 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_working.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -56,42 +52,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 1) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - workingRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -117,6 +77,43 @@ weakReferenceHandler.sendEmptyMessage(2022071101) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 1) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + workingRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + workingRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -129,55 +126,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } workingRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt new file mode 100644 index 0000000..e9dcf92 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt @@ -0,0 +1,3 @@ +package com.casic.br.operationsite.model + +class ImageModel(val eventId: String, val id: String, val image: String) \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java index 2359c3c..7ce3b17 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java @@ -1,9 +1,11 @@ package com.casic.br.operationsite.model; +import java.util.List; + public class WorkSiteDetailModel { private int code; - private DataBean data; + private DataModel data; private String message; private boolean success; @@ -15,11 +17,11 @@ this.code = code; } - public DataBean getData() { + public DataModel getData() { return data; } - public void setData(DataBean data) { + public void setData(DataModel data) { this.data = data; } @@ -39,33 +41,39 @@ this.success = success; } - public static class DataBean { - private String completedDate; - private String connectionPhone; + public static class DataModel { + private String createTime; + private List deviceList; private String id; private String imageUrl; - private String latitude; - private String longitude; - private String projectProgress; + private String projectState; + private String projectStateName; + private String registerTime; private String updateTime; private String workPerson; + private String workPersonDeptId; + private String workPersonDeptName; + private String workPersonName; + private String workPersonPhoneNumber; + private String workRoad; private String workSiteDesc; private String workTitle; + private List workerList; - public String getCompletedDate() { - return completedDate; + public String getCreateTime() { + return createTime; } - public void setCompletedDate(String completedDate) { - this.completedDate = completedDate; + public void setCreateTime(String createTime) { + this.createTime = createTime; } - public String getConnectionPhone() { - return connectionPhone; + public List getDeviceList() { + return deviceList; } - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; + public void setDeviceList(List deviceList) { + this.deviceList = deviceList; } public String getId() { @@ -84,28 +92,28 @@ this.imageUrl = imageUrl; } - public String getLatitude() { - return latitude; + public String getProjectState() { + return projectState; } - public void setLatitude(String latitude) { - this.latitude = latitude; + public void setProjectState(String projectState) { + this.projectState = projectState; } - public String getLongitude() { - return longitude; + public String getProjectStateName() { + return projectStateName; } - public void setLongitude(String longitude) { - this.longitude = longitude; + public void setProjectStateName(String projectStateName) { + this.projectStateName = projectStateName; } - public String getProjectProgress() { - return projectProgress; + public String getRegisterTime() { + return registerTime; } - public void setProjectProgress(String projectProgress) { - this.projectProgress = projectProgress; + public void setRegisterTime(String registerTime) { + this.registerTime = registerTime; } public String getUpdateTime() { @@ -124,6 +132,46 @@ this.workPerson = workPerson; } + public String getWorkPersonDeptId() { + return workPersonDeptId; + } + + public void setWorkPersonDeptId(String workPersonDeptId) { + this.workPersonDeptId = workPersonDeptId; + } + + public String getWorkPersonDeptName() { + return workPersonDeptName; + } + + public void setWorkPersonDeptName(String workPersonDeptName) { + this.workPersonDeptName = workPersonDeptName; + } + + public String getWorkPersonName() { + return workPersonName; + } + + public void setWorkPersonName(String workPersonName) { + this.workPersonName = workPersonName; + } + + public String getWorkPersonPhoneNumber() { + return workPersonPhoneNumber; + } + + public void setWorkPersonPhoneNumber(String workPersonPhoneNumber) { + this.workPersonPhoneNumber = workPersonPhoneNumber; + } + + public String getWorkRoad() { + return workRoad; + } + + public void setWorkRoad(String workRoad) { + this.workRoad = workRoad; + } + public String getWorkSiteDesc() { return workSiteDesc; } @@ -139,5 +187,145 @@ public void setWorkTitle(String workTitle) { this.workTitle = workTitle; } + + public List getWorkerList() { + return workerList; + } + + public void setWorkerList(List workerList) { + this.workerList = workerList; + } + + public static class DeviceListModel { + private String deviceCode; + private String deviceId; + private String id; + private String projectId; + + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + } + + public static class WorkerListModel { + private String braceletCode; + private String hatCode; + private String id; + private String projectId; + private String vastCode; + private String workerDeptId; + private String workerDeptName; + private String workerId; + private String workerName; + private String workerPhoneNumber; + + public String getBraceletCode() { + return braceletCode; + } + + public void setBraceletCode(String braceletCode) { + this.braceletCode = braceletCode; + } + + public String getHatCode() { + return hatCode; + } + + public void setHatCode(String hatCode) { + this.hatCode = hatCode; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + + public String getVastCode() { + return vastCode; + } + + public void setVastCode(String vastCode) { + this.vastCode = vastCode; + } + + public String getWorkerDeptId() { + return workerDeptId; + } + + public void setWorkerDeptId(String workerDeptId) { + this.workerDeptId = workerDeptId; + } + + public String getWorkerDeptName() { + return workerDeptName; + } + + public void setWorkerDeptName(String workerDeptName) { + this.workerDeptName = workerDeptName; + } + + public String getWorkerId() { + return workerId; + } + + public void setWorkerId(String workerId) { + this.workerId = workerId; + } + + public String getWorkerName() { + return workerName; + } + + public void setWorkerName(String workerName) { + this.workerName = workerName; + } + + public String getWorkerPhoneNumber() { + return workerPhoneNumber; + } + + public void setWorkerPhoneNumber(String workerPhoneNumber) { + this.workerPhoneNumber = workerPhoneNumber; + } + } } } diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java index e6aefc7..bca3cff 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java @@ -8,7 +8,7 @@ public class WorkSiteListModel { private int code; - private DataBean data; + private DataModel data; private String message; private boolean success; @@ -20,11 +20,11 @@ this.code = code; } - public DataBean getData() { + public DataModel getData() { return data; } - public void setData(DataBean data) { + public void setData(DataModel data) { this.data = data; } @@ -44,15 +44,15 @@ this.success = success; } - public static class DataBean { - private List rows; + public static class DataModel { + private List rows; private int total; - public List getRows() { + public List getRows() { return rows; } - public void setRows(List rows) { + public void setRows(List rows) { this.rows = rows; } @@ -64,33 +64,29 @@ this.total = total; } - public static class RowsBean { - private String completedDate; - private String connectionPhone; + public static class RowsModel { + private String createTime; private String id; private String imageUrl; - private String latitude; - private String longitude; - private String projectProgress; + private String projectState; + private String projectStateName; + private String registerTime; private String updateTime; private String workPerson; + private String workPersonDeptId; + private String workPersonDeptName; + private String workPersonName; + private String workPersonPhoneNumber; + private String workRoad; private String workSiteDesc; private String workTitle; - public String getCompletedDate() { - return completedDate; + public String getCreateTime() { + return createTime; } - public void setCompletedDate(String completedDate) { - this.completedDate = completedDate; - } - - public String getConnectionPhone() { - return connectionPhone; - } - - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; + public void setCreateTime(String createTime) { + this.createTime = createTime; } public String getId() { @@ -109,28 +105,28 @@ this.imageUrl = imageUrl; } - public String getLatitude() { - return latitude; + public String getProjectState() { + return projectState; } - public void setLatitude(String latitude) { - this.latitude = latitude; + public void setProjectState(String projectState) { + this.projectState = projectState; } - public String getLongitude() { - return longitude; + public String getProjectStateName() { + return projectStateName; } - public void setLongitude(String longitude) { - this.longitude = longitude; + public void setProjectStateName(String projectStateName) { + this.projectStateName = projectStateName; } - public String getProjectProgress() { - return projectProgress; + public String getRegisterTime() { + return registerTime; } - public void setProjectProgress(String projectProgress) { - this.projectProgress = projectProgress; + public void setRegisterTime(String registerTime) { + this.registerTime = registerTime; } public String getUpdateTime() { @@ -149,6 +145,46 @@ this.workPerson = workPerson; } + public String getWorkPersonDeptId() { + return workPersonDeptId; + } + + public void setWorkPersonDeptId(String workPersonDeptId) { + this.workPersonDeptId = workPersonDeptId; + } + + public String getWorkPersonDeptName() { + return workPersonDeptName; + } + + public void setWorkPersonDeptName(String workPersonDeptName) { + this.workPersonDeptName = workPersonDeptName; + } + + public String getWorkPersonName() { + return workPersonName; + } + + public void setWorkPersonName(String workPersonName) { + this.workPersonName = workPersonName; + } + + public String getWorkPersonPhoneNumber() { + return workPersonPhoneNumber; + } + + public void setWorkPersonPhoneNumber(String workPersonPhoneNumber) { + this.workPersonPhoneNumber = workPersonPhoneNumber; + } + + public String getWorkRoad() { + return workRoad; + } + + public void setWorkRoad(String workRoad) { + this.workRoad = workRoad; + } + public String getWorkSiteDesc() { return workSiteDesc; } diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index aaccfb1..6aad0a0 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -1,6 +1,7 @@ package com.casic.br.operationsite.retrofit import okhttp3.MultipartBody +import okhttp3.RequestBody import retrofit2.http.* interface RetrofitService { @@ -49,7 +50,7 @@ @GET("/site/detail") suspend fun obtainProjectDetail( @Header("token") token: String, - @Query("id") id: String + @Query("projectId") projectId: String ): String /** @@ -87,18 +88,10 @@ /** * 新增事件 */ - @FormUrlEncoded @POST("/event/add") suspend fun addEvent( @Header("token") token: String, - @Field("eventTitle") eventTitle: String, - @Field("uploadName") uploadName: String, - @Field("phoneNumber") phoneNumber: String, - @Field("eventDescription") eventDescription: String, - @Field("eventImage") eventImage: String, - @Field("lng") lng: String, - @Field("lat") lat: String, - @Field("createTime") createTime: String + @Body requestBody: RequestBody ): String /** diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 0c15793..72e7aaf 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -1,12 +1,18 @@ package com.casic.br.operationsite.retrofit +import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LocaleConstant +import com.google.gson.Gson +import com.google.gson.JsonObject +import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory import com.pengxh.kt.lite.utils.SaveKeyValues +import okhttp3.MediaType.Companion.toMediaType import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.MultipartBody import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.toRequestBody import java.io.File object RetrofitServiceManager { @@ -51,8 +57,8 @@ /** * 施工现场详情 */ - suspend fun obtainProjectDetail(id: String): String { - return api.obtainProjectDetail(AuthenticationHelper.token!!, id) + suspend fun obtainProjectDetail(projectId: String): String { + return api.obtainProjectDetail(AuthenticationHelper.token!!, projectId) } /** @@ -83,14 +89,34 @@ /** * 新增事件 */ + private val gson by lazy { Gson() } + private val typeToken = object : TypeToken>() {}.type suspend fun addEvent( - eventTitle: String, uploadName: String, phoneNumber: String, eventDescription: String, - eventImage: String, lng: String, lat: String, createTime: String + eventTitle: String, + phoneNumber: String, + lng: String, + createTime: String, + eventDescription: String, + id: String, + uploadName: String, + imageList: Array, + lat: String ): String { - return api.addEvent( - AuthenticationHelper.token!!, - eventTitle, uploadName, phoneNumber, eventDescription, eventImage, lng, lat, createTime + val param = JsonObject() + param.addProperty("eventTitle", eventTitle) + param.addProperty("phoneNumber", phoneNumber) + param.addProperty("lng", lng) + param.addProperty("createTime", createTime) + param.addProperty("eventDescription", eventDescription) + param.addProperty("id", id) + param.addProperty("uploadName", uploadName) + param.add("imageList", gson.toJsonTree(imageList, typeToken).asJsonArray) + param.addProperty("lat", lat) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() ) + return api.addEvent(AuthenticationHelper.token!!, requestBody) } /** diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 231a4a5..e6a213a 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -16,8 +16,7 @@ Manifest.permission.WRITE_SETTINGS ) - // const val SERVER_BASE_URL = "http://192.168.43.66:12210" - const val SERVER_BASE_URL = "http://111.198.10.15:12210" + const val SERVER_BASE_URL = "http://111.198.10.15:21409" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt index 9ae3e27..cc59d26 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt @@ -14,7 +14,7 @@ import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar -import com.casic.br.operationsite.extensions.reformat +import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.model.UserDetailModel import com.casic.br.operationsite.utils.GlideLoadEngine import com.casic.br.operationsite.utils.LoadingDialogHub @@ -176,15 +176,26 @@ return@setOnClickListener } + val imageModels = ArrayList() + imagePaths.forEach { url -> + imageModels.add(ImageModel("", "", url)) + } + + val imageArray = arrayOf() + imageModels.forEachIndexed { index, imageModel -> + imageArray[index] = imageModel + } + eventViewModel.addEvent( eventNameView.text.toString(), - uploadPersonView.text.toString(), personNumberView.text.toString(), - siteEditView.text.toString(), - imagePaths.reformat(), mapLocation?.longitude.toString(), + System.currentTimeMillis().timestampToCompleteDate(), + siteEditView.text.toString(), + "", + uploadPersonView.text.toString(), + imageArray, mapLocation?.latitude.toString(), - System.currentTimeMillis().timestampToCompleteDate() ) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 116ac73..9b225f1 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -4,16 +4,13 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions -import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* -import com.amap.api.services.core.LatLonPoint -import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Poi import com.amap.api.services.geocoder.GeocodeSearch -import com.amap.api.services.geocoder.RegeocodeQuery -import com.amap.api.services.geocoder.RegeocodeResult import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.showRouteOnMap +import com.casic.br.operationsite.utils.LoadingDialogHub import com.casic.br.operationsite.vm.WorkSiteViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -21,6 +18,7 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant +import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_site_tab.* @@ -30,7 +28,6 @@ private lateinit var aMap: AMap private lateinit var workSiteViewModel: WorkSiteViewModel - private lateinit var id: String private val geocoderSearch by lazy { GeocodeSearch(this) } private var latLng: LatLng? = null @@ -46,7 +43,7 @@ } override fun initData() { - this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! + val projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! /** * 地图初始化设置 @@ -63,71 +60,66 @@ * 数据初始化 * */ workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] + workSiteViewModel.obtainProjectDetail(projectId) + workSiteViewModel.detailModel.observe(this) { + if (it.code == 200) { + projectNameView.text = it.data.workTitle + principalView.text = String.format("现场负责人:${it.data.workPersonName}") + phoneNumberView.text = String.format("联系电话:${it.data.workPersonPhoneNumber}") + workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") + locationView.text = String.format("所属道路:${it.data.workRoad}") + +// val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) +// val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) +// aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { +// override fun onFinish() { +// //添加Marker +// val markerOptions = MarkerOptions() +// .position(latLng) +// .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) +// .draggable(true) +// aMap.addMarker(markerOptions) +// } +// +// override fun onCancel() { +// +// } +// }) +// +// val queryParam = RegeocodeQuery( +// LatLonPoint(detailData.latitude.toDouble(), detailData.longitude.toDouble()), +// 200f, +// GeocodeSearch.AMAP +// ) +// geocoderSearch.getFromLocationAsyn(queryParam) +// geocoderSearch.setOnGeocodeSearchListener(object : +// GeocodeSearch.OnGeocodeSearchListener { +// override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { +// if (rCode == 1000) { +// locationView.text = String.format( +// "地址:${result?.regeocodeAddress?.formatAddress}" +// ) +// } +// } +// +// override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { +// +// } +// }) + } + } } override fun observeRequestState() { -// workSiteViewModel.loadState.observe(this) { -// when (it) { -// LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") -// else -> LoadingDialogHub.dismiss() -// } -// } + workSiteViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + } } override fun initEvent() { - workSiteViewModel.obtainProjectDetail(id) - workSiteViewModel.detailModel.observe(this) { - if (it.code == 200) { - val detailData = it.data - projectNameView.text = detailData.workTitle - principalView.text = String.format("现场负责人:${detailData.workPerson}") - phoneNumberView.text = String.format("联系电话:${detailData.connectionPhone}") - completedDateView.text = String.format("竣工日期:${detailData.completedDate}") - projectProgressView.text = "工程进度:${detailData.projectProgress}%" - - this.latLng = LatLng( - detailData.latitude.toDouble(), detailData.longitude.toDouble() - ) - val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) - val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { - override fun onFinish() { - //添加Marker - val markerOptions = MarkerOptions() - .position(latLng) - .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) - .draggable(true) - aMap.addMarker(markerOptions) - } - - override fun onCancel() { - - } - }) - - val queryParam = RegeocodeQuery( - LatLonPoint(detailData.latitude.toDouble(), detailData.longitude.toDouble()), - 200f, - GeocodeSearch.AMAP - ) - geocoderSearch.getFromLocationAsyn(queryParam) - geocoderSearch.setOnGeocodeSearchListener(object : - GeocodeSearch.OnGeocodeSearchListener { - override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { - if (rCode == 1000) { - locationView.text = String.format( - "地址:${result?.regeocodeAddress?.formatAddress}" - ) - } - } - - override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { - - } - }) - } - } - navigationView.setOnClickListener { if (latLng == null) { "经纬度异常,无法开启导航".show(this) @@ -178,13 +170,6 @@ applyTextView.setOnClickListener { navigatePageTo() } - - /** - * TODO - * */ - warningTagView.setOnClickListener { - "需求不明,待完善".show(this) - } } /**地图相关*********/ diff --git a/app/src/main/java/com/casic/br/operationsite/vm/EventViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/EventViewModel.kt index 134f657..3035020 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/EventViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/EventViewModel.kt @@ -5,6 +5,7 @@ import com.casic.br.operationsite.extensions.separateResponseCode import com.casic.br.operationsite.extensions.toErrorMessage import com.casic.br.operationsite.model.CommonResultModel +import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -18,13 +19,27 @@ val resultModel = MutableLiveData() fun addEvent( - eventTitle: String, uploadName: String, phoneNumber: String, eventDescription: String, - eventImage: String, lng: String, lat: String, createTime: String + eventTitle: String, + phoneNumber: String, + lng: String, + createTime: String, + eventDescription: String, + id: String, + uploadName: String, + imageList: Array, + lat: String ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.addEvent( - eventTitle, uploadName, phoneNumber, eventDescription, - eventImage, lng, lat, createTime + eventTitle, + phoneNumber, + lng, + createTime, + eventDescription, + id, + uploadName, + imageList, + lat ) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/build.gradle b/app/build.gradle index df28eb5..772c9e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,7 +23,7 @@ versionName "1.0.0.0" ndk { - abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86_64' + abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' } } @@ -73,7 +73,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt index 31dbfa2..63e42ef 100644 --- a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt +++ b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt @@ -2,15 +2,9 @@ import android.content.Context import android.view.ViewGroup -import com.casic.br.operationsite.base.BaseApplication -import com.pengxh.kt.lite.extensions.dp2px -import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.pengxh.kt.lite.extensions.getStatusBarHeight fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - var statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this) - if (statusBarHeight == 0) { - statusBarHeight = 40f.dp2px(BaseApplication.get()) - } - rootView.setPadding(0, statusBarHeight, 0, 0) + rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) rootView.requestLayout() } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index baf7f26..e37bae7 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_completed.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 2) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - completedRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071502) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 2) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + completedRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + completedRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } completedRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index 12f20e4..eb71513 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_not_start.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 0) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - notStartRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071501) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 0) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + notStartRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + notStartRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView!!.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + notStartRecyclerView.addItemDecoration( + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 42e3203..c015bdf 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,20 +27,17 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_working.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -56,42 +52,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 1) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - workingRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -117,6 +77,43 @@ weakReferenceHandler.sendEmptyMessage(2022071101) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 1) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + workingRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + workingRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -129,55 +126,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } workingRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt new file mode 100644 index 0000000..e9dcf92 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt @@ -0,0 +1,3 @@ +package com.casic.br.operationsite.model + +class ImageModel(val eventId: String, val id: String, val image: String) \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java index 2359c3c..7ce3b17 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java @@ -1,9 +1,11 @@ package com.casic.br.operationsite.model; +import java.util.List; + public class WorkSiteDetailModel { private int code; - private DataBean data; + private DataModel data; private String message; private boolean success; @@ -15,11 +17,11 @@ this.code = code; } - public DataBean getData() { + public DataModel getData() { return data; } - public void setData(DataBean data) { + public void setData(DataModel data) { this.data = data; } @@ -39,33 +41,39 @@ this.success = success; } - public static class DataBean { - private String completedDate; - private String connectionPhone; + public static class DataModel { + private String createTime; + private List deviceList; private String id; private String imageUrl; - private String latitude; - private String longitude; - private String projectProgress; + private String projectState; + private String projectStateName; + private String registerTime; private String updateTime; private String workPerson; + private String workPersonDeptId; + private String workPersonDeptName; + private String workPersonName; + private String workPersonPhoneNumber; + private String workRoad; private String workSiteDesc; private String workTitle; + private List workerList; - public String getCompletedDate() { - return completedDate; + public String getCreateTime() { + return createTime; } - public void setCompletedDate(String completedDate) { - this.completedDate = completedDate; + public void setCreateTime(String createTime) { + this.createTime = createTime; } - public String getConnectionPhone() { - return connectionPhone; + public List getDeviceList() { + return deviceList; } - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; + public void setDeviceList(List deviceList) { + this.deviceList = deviceList; } public String getId() { @@ -84,28 +92,28 @@ this.imageUrl = imageUrl; } - public String getLatitude() { - return latitude; + public String getProjectState() { + return projectState; } - public void setLatitude(String latitude) { - this.latitude = latitude; + public void setProjectState(String projectState) { + this.projectState = projectState; } - public String getLongitude() { - return longitude; + public String getProjectStateName() { + return projectStateName; } - public void setLongitude(String longitude) { - this.longitude = longitude; + public void setProjectStateName(String projectStateName) { + this.projectStateName = projectStateName; } - public String getProjectProgress() { - return projectProgress; + public String getRegisterTime() { + return registerTime; } - public void setProjectProgress(String projectProgress) { - this.projectProgress = projectProgress; + public void setRegisterTime(String registerTime) { + this.registerTime = registerTime; } public String getUpdateTime() { @@ -124,6 +132,46 @@ this.workPerson = workPerson; } + public String getWorkPersonDeptId() { + return workPersonDeptId; + } + + public void setWorkPersonDeptId(String workPersonDeptId) { + this.workPersonDeptId = workPersonDeptId; + } + + public String getWorkPersonDeptName() { + return workPersonDeptName; + } + + public void setWorkPersonDeptName(String workPersonDeptName) { + this.workPersonDeptName = workPersonDeptName; + } + + public String getWorkPersonName() { + return workPersonName; + } + + public void setWorkPersonName(String workPersonName) { + this.workPersonName = workPersonName; + } + + public String getWorkPersonPhoneNumber() { + return workPersonPhoneNumber; + } + + public void setWorkPersonPhoneNumber(String workPersonPhoneNumber) { + this.workPersonPhoneNumber = workPersonPhoneNumber; + } + + public String getWorkRoad() { + return workRoad; + } + + public void setWorkRoad(String workRoad) { + this.workRoad = workRoad; + } + public String getWorkSiteDesc() { return workSiteDesc; } @@ -139,5 +187,145 @@ public void setWorkTitle(String workTitle) { this.workTitle = workTitle; } + + public List getWorkerList() { + return workerList; + } + + public void setWorkerList(List workerList) { + this.workerList = workerList; + } + + public static class DeviceListModel { + private String deviceCode; + private String deviceId; + private String id; + private String projectId; + + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + } + + public static class WorkerListModel { + private String braceletCode; + private String hatCode; + private String id; + private String projectId; + private String vastCode; + private String workerDeptId; + private String workerDeptName; + private String workerId; + private String workerName; + private String workerPhoneNumber; + + public String getBraceletCode() { + return braceletCode; + } + + public void setBraceletCode(String braceletCode) { + this.braceletCode = braceletCode; + } + + public String getHatCode() { + return hatCode; + } + + public void setHatCode(String hatCode) { + this.hatCode = hatCode; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + + public String getVastCode() { + return vastCode; + } + + public void setVastCode(String vastCode) { + this.vastCode = vastCode; + } + + public String getWorkerDeptId() { + return workerDeptId; + } + + public void setWorkerDeptId(String workerDeptId) { + this.workerDeptId = workerDeptId; + } + + public String getWorkerDeptName() { + return workerDeptName; + } + + public void setWorkerDeptName(String workerDeptName) { + this.workerDeptName = workerDeptName; + } + + public String getWorkerId() { + return workerId; + } + + public void setWorkerId(String workerId) { + this.workerId = workerId; + } + + public String getWorkerName() { + return workerName; + } + + public void setWorkerName(String workerName) { + this.workerName = workerName; + } + + public String getWorkerPhoneNumber() { + return workerPhoneNumber; + } + + public void setWorkerPhoneNumber(String workerPhoneNumber) { + this.workerPhoneNumber = workerPhoneNumber; + } + } } } diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java index e6aefc7..bca3cff 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java @@ -8,7 +8,7 @@ public class WorkSiteListModel { private int code; - private DataBean data; + private DataModel data; private String message; private boolean success; @@ -20,11 +20,11 @@ this.code = code; } - public DataBean getData() { + public DataModel getData() { return data; } - public void setData(DataBean data) { + public void setData(DataModel data) { this.data = data; } @@ -44,15 +44,15 @@ this.success = success; } - public static class DataBean { - private List rows; + public static class DataModel { + private List rows; private int total; - public List getRows() { + public List getRows() { return rows; } - public void setRows(List rows) { + public void setRows(List rows) { this.rows = rows; } @@ -64,33 +64,29 @@ this.total = total; } - public static class RowsBean { - private String completedDate; - private String connectionPhone; + public static class RowsModel { + private String createTime; private String id; private String imageUrl; - private String latitude; - private String longitude; - private String projectProgress; + private String projectState; + private String projectStateName; + private String registerTime; private String updateTime; private String workPerson; + private String workPersonDeptId; + private String workPersonDeptName; + private String workPersonName; + private String workPersonPhoneNumber; + private String workRoad; private String workSiteDesc; private String workTitle; - public String getCompletedDate() { - return completedDate; + public String getCreateTime() { + return createTime; } - public void setCompletedDate(String completedDate) { - this.completedDate = completedDate; - } - - public String getConnectionPhone() { - return connectionPhone; - } - - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; + public void setCreateTime(String createTime) { + this.createTime = createTime; } public String getId() { @@ -109,28 +105,28 @@ this.imageUrl = imageUrl; } - public String getLatitude() { - return latitude; + public String getProjectState() { + return projectState; } - public void setLatitude(String latitude) { - this.latitude = latitude; + public void setProjectState(String projectState) { + this.projectState = projectState; } - public String getLongitude() { - return longitude; + public String getProjectStateName() { + return projectStateName; } - public void setLongitude(String longitude) { - this.longitude = longitude; + public void setProjectStateName(String projectStateName) { + this.projectStateName = projectStateName; } - public String getProjectProgress() { - return projectProgress; + public String getRegisterTime() { + return registerTime; } - public void setProjectProgress(String projectProgress) { - this.projectProgress = projectProgress; + public void setRegisterTime(String registerTime) { + this.registerTime = registerTime; } public String getUpdateTime() { @@ -149,6 +145,46 @@ this.workPerson = workPerson; } + public String getWorkPersonDeptId() { + return workPersonDeptId; + } + + public void setWorkPersonDeptId(String workPersonDeptId) { + this.workPersonDeptId = workPersonDeptId; + } + + public String getWorkPersonDeptName() { + return workPersonDeptName; + } + + public void setWorkPersonDeptName(String workPersonDeptName) { + this.workPersonDeptName = workPersonDeptName; + } + + public String getWorkPersonName() { + return workPersonName; + } + + public void setWorkPersonName(String workPersonName) { + this.workPersonName = workPersonName; + } + + public String getWorkPersonPhoneNumber() { + return workPersonPhoneNumber; + } + + public void setWorkPersonPhoneNumber(String workPersonPhoneNumber) { + this.workPersonPhoneNumber = workPersonPhoneNumber; + } + + public String getWorkRoad() { + return workRoad; + } + + public void setWorkRoad(String workRoad) { + this.workRoad = workRoad; + } + public String getWorkSiteDesc() { return workSiteDesc; } diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index aaccfb1..6aad0a0 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -1,6 +1,7 @@ package com.casic.br.operationsite.retrofit import okhttp3.MultipartBody +import okhttp3.RequestBody import retrofit2.http.* interface RetrofitService { @@ -49,7 +50,7 @@ @GET("/site/detail") suspend fun obtainProjectDetail( @Header("token") token: String, - @Query("id") id: String + @Query("projectId") projectId: String ): String /** @@ -87,18 +88,10 @@ /** * 新增事件 */ - @FormUrlEncoded @POST("/event/add") suspend fun addEvent( @Header("token") token: String, - @Field("eventTitle") eventTitle: String, - @Field("uploadName") uploadName: String, - @Field("phoneNumber") phoneNumber: String, - @Field("eventDescription") eventDescription: String, - @Field("eventImage") eventImage: String, - @Field("lng") lng: String, - @Field("lat") lat: String, - @Field("createTime") createTime: String + @Body requestBody: RequestBody ): String /** diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 0c15793..72e7aaf 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -1,12 +1,18 @@ package com.casic.br.operationsite.retrofit +import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LocaleConstant +import com.google.gson.Gson +import com.google.gson.JsonObject +import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory import com.pengxh.kt.lite.utils.SaveKeyValues +import okhttp3.MediaType.Companion.toMediaType import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.MultipartBody import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.toRequestBody import java.io.File object RetrofitServiceManager { @@ -51,8 +57,8 @@ /** * 施工现场详情 */ - suspend fun obtainProjectDetail(id: String): String { - return api.obtainProjectDetail(AuthenticationHelper.token!!, id) + suspend fun obtainProjectDetail(projectId: String): String { + return api.obtainProjectDetail(AuthenticationHelper.token!!, projectId) } /** @@ -83,14 +89,34 @@ /** * 新增事件 */ + private val gson by lazy { Gson() } + private val typeToken = object : TypeToken>() {}.type suspend fun addEvent( - eventTitle: String, uploadName: String, phoneNumber: String, eventDescription: String, - eventImage: String, lng: String, lat: String, createTime: String + eventTitle: String, + phoneNumber: String, + lng: String, + createTime: String, + eventDescription: String, + id: String, + uploadName: String, + imageList: Array, + lat: String ): String { - return api.addEvent( - AuthenticationHelper.token!!, - eventTitle, uploadName, phoneNumber, eventDescription, eventImage, lng, lat, createTime + val param = JsonObject() + param.addProperty("eventTitle", eventTitle) + param.addProperty("phoneNumber", phoneNumber) + param.addProperty("lng", lng) + param.addProperty("createTime", createTime) + param.addProperty("eventDescription", eventDescription) + param.addProperty("id", id) + param.addProperty("uploadName", uploadName) + param.add("imageList", gson.toJsonTree(imageList, typeToken).asJsonArray) + param.addProperty("lat", lat) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() ) + return api.addEvent(AuthenticationHelper.token!!, requestBody) } /** diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 231a4a5..e6a213a 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -16,8 +16,7 @@ Manifest.permission.WRITE_SETTINGS ) - // const val SERVER_BASE_URL = "http://192.168.43.66:12210" - const val SERVER_BASE_URL = "http://111.198.10.15:12210" + const val SERVER_BASE_URL = "http://111.198.10.15:21409" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt index 9ae3e27..cc59d26 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt @@ -14,7 +14,7 @@ import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar -import com.casic.br.operationsite.extensions.reformat +import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.model.UserDetailModel import com.casic.br.operationsite.utils.GlideLoadEngine import com.casic.br.operationsite.utils.LoadingDialogHub @@ -176,15 +176,26 @@ return@setOnClickListener } + val imageModels = ArrayList() + imagePaths.forEach { url -> + imageModels.add(ImageModel("", "", url)) + } + + val imageArray = arrayOf() + imageModels.forEachIndexed { index, imageModel -> + imageArray[index] = imageModel + } + eventViewModel.addEvent( eventNameView.text.toString(), - uploadPersonView.text.toString(), personNumberView.text.toString(), - siteEditView.text.toString(), - imagePaths.reformat(), mapLocation?.longitude.toString(), + System.currentTimeMillis().timestampToCompleteDate(), + siteEditView.text.toString(), + "", + uploadPersonView.text.toString(), + imageArray, mapLocation?.latitude.toString(), - System.currentTimeMillis().timestampToCompleteDate() ) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 116ac73..9b225f1 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -4,16 +4,13 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions -import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* -import com.amap.api.services.core.LatLonPoint -import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Poi import com.amap.api.services.geocoder.GeocodeSearch -import com.amap.api.services.geocoder.RegeocodeQuery -import com.amap.api.services.geocoder.RegeocodeResult import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.showRouteOnMap +import com.casic.br.operationsite.utils.LoadingDialogHub import com.casic.br.operationsite.vm.WorkSiteViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -21,6 +18,7 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant +import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_site_tab.* @@ -30,7 +28,6 @@ private lateinit var aMap: AMap private lateinit var workSiteViewModel: WorkSiteViewModel - private lateinit var id: String private val geocoderSearch by lazy { GeocodeSearch(this) } private var latLng: LatLng? = null @@ -46,7 +43,7 @@ } override fun initData() { - this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! + val projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! /** * 地图初始化设置 @@ -63,71 +60,66 @@ * 数据初始化 * */ workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] + workSiteViewModel.obtainProjectDetail(projectId) + workSiteViewModel.detailModel.observe(this) { + if (it.code == 200) { + projectNameView.text = it.data.workTitle + principalView.text = String.format("现场负责人:${it.data.workPersonName}") + phoneNumberView.text = String.format("联系电话:${it.data.workPersonPhoneNumber}") + workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") + locationView.text = String.format("所属道路:${it.data.workRoad}") + +// val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) +// val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) +// aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { +// override fun onFinish() { +// //添加Marker +// val markerOptions = MarkerOptions() +// .position(latLng) +// .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) +// .draggable(true) +// aMap.addMarker(markerOptions) +// } +// +// override fun onCancel() { +// +// } +// }) +// +// val queryParam = RegeocodeQuery( +// LatLonPoint(detailData.latitude.toDouble(), detailData.longitude.toDouble()), +// 200f, +// GeocodeSearch.AMAP +// ) +// geocoderSearch.getFromLocationAsyn(queryParam) +// geocoderSearch.setOnGeocodeSearchListener(object : +// GeocodeSearch.OnGeocodeSearchListener { +// override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { +// if (rCode == 1000) { +// locationView.text = String.format( +// "地址:${result?.regeocodeAddress?.formatAddress}" +// ) +// } +// } +// +// override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { +// +// } +// }) + } + } } override fun observeRequestState() { -// workSiteViewModel.loadState.observe(this) { -// when (it) { -// LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") -// else -> LoadingDialogHub.dismiss() -// } -// } + workSiteViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + } } override fun initEvent() { - workSiteViewModel.obtainProjectDetail(id) - workSiteViewModel.detailModel.observe(this) { - if (it.code == 200) { - val detailData = it.data - projectNameView.text = detailData.workTitle - principalView.text = String.format("现场负责人:${detailData.workPerson}") - phoneNumberView.text = String.format("联系电话:${detailData.connectionPhone}") - completedDateView.text = String.format("竣工日期:${detailData.completedDate}") - projectProgressView.text = "工程进度:${detailData.projectProgress}%" - - this.latLng = LatLng( - detailData.latitude.toDouble(), detailData.longitude.toDouble() - ) - val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) - val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { - override fun onFinish() { - //添加Marker - val markerOptions = MarkerOptions() - .position(latLng) - .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) - .draggable(true) - aMap.addMarker(markerOptions) - } - - override fun onCancel() { - - } - }) - - val queryParam = RegeocodeQuery( - LatLonPoint(detailData.latitude.toDouble(), detailData.longitude.toDouble()), - 200f, - GeocodeSearch.AMAP - ) - geocoderSearch.getFromLocationAsyn(queryParam) - geocoderSearch.setOnGeocodeSearchListener(object : - GeocodeSearch.OnGeocodeSearchListener { - override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { - if (rCode == 1000) { - locationView.text = String.format( - "地址:${result?.regeocodeAddress?.formatAddress}" - ) - } - } - - override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { - - } - }) - } - } - navigationView.setOnClickListener { if (latLng == null) { "经纬度异常,无法开启导航".show(this) @@ -178,13 +170,6 @@ applyTextView.setOnClickListener { navigatePageTo() } - - /** - * TODO - * */ - warningTagView.setOnClickListener { - "需求不明,待完善".show(this) - } } /**地图相关*********/ diff --git a/app/src/main/java/com/casic/br/operationsite/vm/EventViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/EventViewModel.kt index 134f657..3035020 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/EventViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/EventViewModel.kt @@ -5,6 +5,7 @@ import com.casic.br.operationsite.extensions.separateResponseCode import com.casic.br.operationsite.extensions.toErrorMessage import com.casic.br.operationsite.model.CommonResultModel +import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -18,13 +19,27 @@ val resultModel = MutableLiveData() fun addEvent( - eventTitle: String, uploadName: String, phoneNumber: String, eventDescription: String, - eventImage: String, lng: String, lat: String, createTime: String + eventTitle: String, + phoneNumber: String, + lng: String, + createTime: String, + eventDescription: String, + id: String, + uploadName: String, + imageList: Array, + lat: String ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.addEvent( - eventTitle, uploadName, phoneNumber, eventDescription, - eventImage, lng, lat, createTime + eventTitle, + phoneNumber, + lng, + createTime, + eventDescription, + id, + uploadName, + imageList, + lat ) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt index 9b2abd0..4d574e4 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt @@ -6,10 +6,10 @@ import com.casic.br.operationsite.extensions.toErrorMessage import com.casic.br.operationsite.model.WorkSiteDetailModel import com.casic.br.operationsite.model.WorkSiteListModel +import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.readAssetsFile import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.BaseViewModel import com.pengxh.kt.lite.vm.LoadState @@ -24,8 +24,7 @@ val detailModel = MutableLiveData() fun obtainProjectListByPage(keywords: String, state: String, page: Int) = launch({ - val response = BaseApplication.get().readAssetsFile("TestListData.json") -// val response = RetrofitServiceManager.obtainProjectListByPage(keywords, state, page) + val response = RetrofitServiceManager.obtainProjectListByPage(keywords, state, page) val responseCode = response.separateResponseCode() if (responseCode == 200) { worksiteModel.value = gson.fromJson( @@ -40,10 +39,9 @@ it.printStackTrace() }) - fun obtainProjectDetail(id: String) = launch({ + fun obtainProjectDetail(projectId: String) = launch({ loadState.value = LoadState.Loading - val response = BaseApplication.get().readAssetsFile("TestDetailData.json") -// val response = RetrofitServiceManager.obtainProjectDetail(id) + val response = RetrofitServiceManager.obtainProjectDetail(projectId) val responseCode = response.separateResponseCode() if (responseCode == 200) { detailModel.value = gson.fromJson( diff --git a/app/build.gradle b/app/build.gradle index df28eb5..772c9e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,7 +23,7 @@ versionName "1.0.0.0" ndk { - abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86_64' + abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' } } @@ -73,7 +73,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') //基础依赖库 - implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.1' + implementation 'com.github.AndroidCoderPeng:Kotlin-lite-lib:1.0.4.3' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.core:core-ktx:1.9.0' implementation 'com.google.android.material:material:1.6.1' diff --git a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt index 31dbfa2..63e42ef 100644 --- a/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt +++ b/app/src/main/java/com/casic/br/operationsite/extensions/Context.kt @@ -2,15 +2,9 @@ import android.content.Context import android.view.ViewGroup -import com.casic.br.operationsite.base.BaseApplication -import com.pengxh.kt.lite.extensions.dp2px -import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.pengxh.kt.lite.extensions.getStatusBarHeight fun Context.initLayoutImmersionBar(rootView: ViewGroup) { - var statusBarHeight = QMUIDisplayHelper.getStatusBarHeight(this) - if (statusBarHeight == 0) { - statusBarHeight = 40f.dp2px(BaseApplication.get()) - } - rootView.setPadding(0, statusBarHeight, 0, 0) + rootView.setPadding(0, this.getStatusBarHeight(), 0, 0) rootView.requestLayout() } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index baf7f26..e37bae7 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_completed.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class CompletedFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 2) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - completedRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071502) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 2) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + completedRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + completedRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } completedRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index 12f20e4..eb71513 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_not_start.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 0) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - notStartRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071501) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 0) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + notStartRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + notStartRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView!!.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + notStartRecyclerView.addItemDecoration( + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 42e3203..c015bdf 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,20 +27,17 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_working.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -56,42 +52,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 1) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - workingRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -117,6 +77,43 @@ weakReferenceHandler.sendEmptyMessage(2022071101) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 1) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + workingRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + workingRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -129,55 +126,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } workingRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt new file mode 100644 index 0000000..e9dcf92 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt @@ -0,0 +1,3 @@ +package com.casic.br.operationsite.model + +class ImageModel(val eventId: String, val id: String, val image: String) \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java index 2359c3c..7ce3b17 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java @@ -1,9 +1,11 @@ package com.casic.br.operationsite.model; +import java.util.List; + public class WorkSiteDetailModel { private int code; - private DataBean data; + private DataModel data; private String message; private boolean success; @@ -15,11 +17,11 @@ this.code = code; } - public DataBean getData() { + public DataModel getData() { return data; } - public void setData(DataBean data) { + public void setData(DataModel data) { this.data = data; } @@ -39,33 +41,39 @@ this.success = success; } - public static class DataBean { - private String completedDate; - private String connectionPhone; + public static class DataModel { + private String createTime; + private List deviceList; private String id; private String imageUrl; - private String latitude; - private String longitude; - private String projectProgress; + private String projectState; + private String projectStateName; + private String registerTime; private String updateTime; private String workPerson; + private String workPersonDeptId; + private String workPersonDeptName; + private String workPersonName; + private String workPersonPhoneNumber; + private String workRoad; private String workSiteDesc; private String workTitle; + private List workerList; - public String getCompletedDate() { - return completedDate; + public String getCreateTime() { + return createTime; } - public void setCompletedDate(String completedDate) { - this.completedDate = completedDate; + public void setCreateTime(String createTime) { + this.createTime = createTime; } - public String getConnectionPhone() { - return connectionPhone; + public List getDeviceList() { + return deviceList; } - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; + public void setDeviceList(List deviceList) { + this.deviceList = deviceList; } public String getId() { @@ -84,28 +92,28 @@ this.imageUrl = imageUrl; } - public String getLatitude() { - return latitude; + public String getProjectState() { + return projectState; } - public void setLatitude(String latitude) { - this.latitude = latitude; + public void setProjectState(String projectState) { + this.projectState = projectState; } - public String getLongitude() { - return longitude; + public String getProjectStateName() { + return projectStateName; } - public void setLongitude(String longitude) { - this.longitude = longitude; + public void setProjectStateName(String projectStateName) { + this.projectStateName = projectStateName; } - public String getProjectProgress() { - return projectProgress; + public String getRegisterTime() { + return registerTime; } - public void setProjectProgress(String projectProgress) { - this.projectProgress = projectProgress; + public void setRegisterTime(String registerTime) { + this.registerTime = registerTime; } public String getUpdateTime() { @@ -124,6 +132,46 @@ this.workPerson = workPerson; } + public String getWorkPersonDeptId() { + return workPersonDeptId; + } + + public void setWorkPersonDeptId(String workPersonDeptId) { + this.workPersonDeptId = workPersonDeptId; + } + + public String getWorkPersonDeptName() { + return workPersonDeptName; + } + + public void setWorkPersonDeptName(String workPersonDeptName) { + this.workPersonDeptName = workPersonDeptName; + } + + public String getWorkPersonName() { + return workPersonName; + } + + public void setWorkPersonName(String workPersonName) { + this.workPersonName = workPersonName; + } + + public String getWorkPersonPhoneNumber() { + return workPersonPhoneNumber; + } + + public void setWorkPersonPhoneNumber(String workPersonPhoneNumber) { + this.workPersonPhoneNumber = workPersonPhoneNumber; + } + + public String getWorkRoad() { + return workRoad; + } + + public void setWorkRoad(String workRoad) { + this.workRoad = workRoad; + } + public String getWorkSiteDesc() { return workSiteDesc; } @@ -139,5 +187,145 @@ public void setWorkTitle(String workTitle) { this.workTitle = workTitle; } + + public List getWorkerList() { + return workerList; + } + + public void setWorkerList(List workerList) { + this.workerList = workerList; + } + + public static class DeviceListModel { + private String deviceCode; + private String deviceId; + private String id; + private String projectId; + + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + } + + public static class WorkerListModel { + private String braceletCode; + private String hatCode; + private String id; + private String projectId; + private String vastCode; + private String workerDeptId; + private String workerDeptName; + private String workerId; + private String workerName; + private String workerPhoneNumber; + + public String getBraceletCode() { + return braceletCode; + } + + public void setBraceletCode(String braceletCode) { + this.braceletCode = braceletCode; + } + + public String getHatCode() { + return hatCode; + } + + public void setHatCode(String hatCode) { + this.hatCode = hatCode; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + + public String getVastCode() { + return vastCode; + } + + public void setVastCode(String vastCode) { + this.vastCode = vastCode; + } + + public String getWorkerDeptId() { + return workerDeptId; + } + + public void setWorkerDeptId(String workerDeptId) { + this.workerDeptId = workerDeptId; + } + + public String getWorkerDeptName() { + return workerDeptName; + } + + public void setWorkerDeptName(String workerDeptName) { + this.workerDeptName = workerDeptName; + } + + public String getWorkerId() { + return workerId; + } + + public void setWorkerId(String workerId) { + this.workerId = workerId; + } + + public String getWorkerName() { + return workerName; + } + + public void setWorkerName(String workerName) { + this.workerName = workerName; + } + + public String getWorkerPhoneNumber() { + return workerPhoneNumber; + } + + public void setWorkerPhoneNumber(String workerPhoneNumber) { + this.workerPhoneNumber = workerPhoneNumber; + } + } } } diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java index e6aefc7..bca3cff 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java @@ -8,7 +8,7 @@ public class WorkSiteListModel { private int code; - private DataBean data; + private DataModel data; private String message; private boolean success; @@ -20,11 +20,11 @@ this.code = code; } - public DataBean getData() { + public DataModel getData() { return data; } - public void setData(DataBean data) { + public void setData(DataModel data) { this.data = data; } @@ -44,15 +44,15 @@ this.success = success; } - public static class DataBean { - private List rows; + public static class DataModel { + private List rows; private int total; - public List getRows() { + public List getRows() { return rows; } - public void setRows(List rows) { + public void setRows(List rows) { this.rows = rows; } @@ -64,33 +64,29 @@ this.total = total; } - public static class RowsBean { - private String completedDate; - private String connectionPhone; + public static class RowsModel { + private String createTime; private String id; private String imageUrl; - private String latitude; - private String longitude; - private String projectProgress; + private String projectState; + private String projectStateName; + private String registerTime; private String updateTime; private String workPerson; + private String workPersonDeptId; + private String workPersonDeptName; + private String workPersonName; + private String workPersonPhoneNumber; + private String workRoad; private String workSiteDesc; private String workTitle; - public String getCompletedDate() { - return completedDate; + public String getCreateTime() { + return createTime; } - public void setCompletedDate(String completedDate) { - this.completedDate = completedDate; - } - - public String getConnectionPhone() { - return connectionPhone; - } - - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; + public void setCreateTime(String createTime) { + this.createTime = createTime; } public String getId() { @@ -109,28 +105,28 @@ this.imageUrl = imageUrl; } - public String getLatitude() { - return latitude; + public String getProjectState() { + return projectState; } - public void setLatitude(String latitude) { - this.latitude = latitude; + public void setProjectState(String projectState) { + this.projectState = projectState; } - public String getLongitude() { - return longitude; + public String getProjectStateName() { + return projectStateName; } - public void setLongitude(String longitude) { - this.longitude = longitude; + public void setProjectStateName(String projectStateName) { + this.projectStateName = projectStateName; } - public String getProjectProgress() { - return projectProgress; + public String getRegisterTime() { + return registerTime; } - public void setProjectProgress(String projectProgress) { - this.projectProgress = projectProgress; + public void setRegisterTime(String registerTime) { + this.registerTime = registerTime; } public String getUpdateTime() { @@ -149,6 +145,46 @@ this.workPerson = workPerson; } + public String getWorkPersonDeptId() { + return workPersonDeptId; + } + + public void setWorkPersonDeptId(String workPersonDeptId) { + this.workPersonDeptId = workPersonDeptId; + } + + public String getWorkPersonDeptName() { + return workPersonDeptName; + } + + public void setWorkPersonDeptName(String workPersonDeptName) { + this.workPersonDeptName = workPersonDeptName; + } + + public String getWorkPersonName() { + return workPersonName; + } + + public void setWorkPersonName(String workPersonName) { + this.workPersonName = workPersonName; + } + + public String getWorkPersonPhoneNumber() { + return workPersonPhoneNumber; + } + + public void setWorkPersonPhoneNumber(String workPersonPhoneNumber) { + this.workPersonPhoneNumber = workPersonPhoneNumber; + } + + public String getWorkRoad() { + return workRoad; + } + + public void setWorkRoad(String workRoad) { + this.workRoad = workRoad; + } + public String getWorkSiteDesc() { return workSiteDesc; } diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index aaccfb1..6aad0a0 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -1,6 +1,7 @@ package com.casic.br.operationsite.retrofit import okhttp3.MultipartBody +import okhttp3.RequestBody import retrofit2.http.* interface RetrofitService { @@ -49,7 +50,7 @@ @GET("/site/detail") suspend fun obtainProjectDetail( @Header("token") token: String, - @Query("id") id: String + @Query("projectId") projectId: String ): String /** @@ -87,18 +88,10 @@ /** * 新增事件 */ - @FormUrlEncoded @POST("/event/add") suspend fun addEvent( @Header("token") token: String, - @Field("eventTitle") eventTitle: String, - @Field("uploadName") uploadName: String, - @Field("phoneNumber") phoneNumber: String, - @Field("eventDescription") eventDescription: String, - @Field("eventImage") eventImage: String, - @Field("lng") lng: String, - @Field("lat") lat: String, - @Field("createTime") createTime: String + @Body requestBody: RequestBody ): String /** diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 0c15793..72e7aaf 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -1,12 +1,18 @@ package com.casic.br.operationsite.retrofit +import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LocaleConstant +import com.google.gson.Gson +import com.google.gson.JsonObject +import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory import com.pengxh.kt.lite.utils.SaveKeyValues +import okhttp3.MediaType.Companion.toMediaType import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.MultipartBody import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.toRequestBody import java.io.File object RetrofitServiceManager { @@ -51,8 +57,8 @@ /** * 施工现场详情 */ - suspend fun obtainProjectDetail(id: String): String { - return api.obtainProjectDetail(AuthenticationHelper.token!!, id) + suspend fun obtainProjectDetail(projectId: String): String { + return api.obtainProjectDetail(AuthenticationHelper.token!!, projectId) } /** @@ -83,14 +89,34 @@ /** * 新增事件 */ + private val gson by lazy { Gson() } + private val typeToken = object : TypeToken>() {}.type suspend fun addEvent( - eventTitle: String, uploadName: String, phoneNumber: String, eventDescription: String, - eventImage: String, lng: String, lat: String, createTime: String + eventTitle: String, + phoneNumber: String, + lng: String, + createTime: String, + eventDescription: String, + id: String, + uploadName: String, + imageList: Array, + lat: String ): String { - return api.addEvent( - AuthenticationHelper.token!!, - eventTitle, uploadName, phoneNumber, eventDescription, eventImage, lng, lat, createTime + val param = JsonObject() + param.addProperty("eventTitle", eventTitle) + param.addProperty("phoneNumber", phoneNumber) + param.addProperty("lng", lng) + param.addProperty("createTime", createTime) + param.addProperty("eventDescription", eventDescription) + param.addProperty("id", id) + param.addProperty("uploadName", uploadName) + param.add("imageList", gson.toJsonTree(imageList, typeToken).asJsonArray) + param.addProperty("lat", lat) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() ) + return api.addEvent(AuthenticationHelper.token!!, requestBody) } /** diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 231a4a5..e6a213a 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -16,8 +16,7 @@ Manifest.permission.WRITE_SETTINGS ) - // const val SERVER_BASE_URL = "http://192.168.43.66:12210" - const val SERVER_BASE_URL = "http://111.198.10.15:12210" + const val SERVER_BASE_URL = "http://111.198.10.15:21409" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt index 9ae3e27..cc59d26 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt @@ -14,7 +14,7 @@ import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar -import com.casic.br.operationsite.extensions.reformat +import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.model.UserDetailModel import com.casic.br.operationsite.utils.GlideLoadEngine import com.casic.br.operationsite.utils.LoadingDialogHub @@ -176,15 +176,26 @@ return@setOnClickListener } + val imageModels = ArrayList() + imagePaths.forEach { url -> + imageModels.add(ImageModel("", "", url)) + } + + val imageArray = arrayOf() + imageModels.forEachIndexed { index, imageModel -> + imageArray[index] = imageModel + } + eventViewModel.addEvent( eventNameView.text.toString(), - uploadPersonView.text.toString(), personNumberView.text.toString(), - siteEditView.text.toString(), - imagePaths.reformat(), mapLocation?.longitude.toString(), + System.currentTimeMillis().timestampToCompleteDate(), + siteEditView.text.toString(), + "", + uploadPersonView.text.toString(), + imageArray, mapLocation?.latitude.toString(), - System.currentTimeMillis().timestampToCompleteDate() ) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 116ac73..9b225f1 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -4,16 +4,13 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions -import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* -import com.amap.api.services.core.LatLonPoint -import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Poi import com.amap.api.services.geocoder.GeocodeSearch -import com.amap.api.services.geocoder.RegeocodeQuery -import com.amap.api.services.geocoder.RegeocodeResult import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.showRouteOnMap +import com.casic.br.operationsite.utils.LoadingDialogHub import com.casic.br.operationsite.vm.WorkSiteViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -21,6 +18,7 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant +import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_site_tab.* @@ -30,7 +28,6 @@ private lateinit var aMap: AMap private lateinit var workSiteViewModel: WorkSiteViewModel - private lateinit var id: String private val geocoderSearch by lazy { GeocodeSearch(this) } private var latLng: LatLng? = null @@ -46,7 +43,7 @@ } override fun initData() { - this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! + val projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! /** * 地图初始化设置 @@ -63,71 +60,66 @@ * 数据初始化 * */ workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] + workSiteViewModel.obtainProjectDetail(projectId) + workSiteViewModel.detailModel.observe(this) { + if (it.code == 200) { + projectNameView.text = it.data.workTitle + principalView.text = String.format("现场负责人:${it.data.workPersonName}") + phoneNumberView.text = String.format("联系电话:${it.data.workPersonPhoneNumber}") + workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") + locationView.text = String.format("所属道路:${it.data.workRoad}") + +// val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) +// val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) +// aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { +// override fun onFinish() { +// //添加Marker +// val markerOptions = MarkerOptions() +// .position(latLng) +// .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) +// .draggable(true) +// aMap.addMarker(markerOptions) +// } +// +// override fun onCancel() { +// +// } +// }) +// +// val queryParam = RegeocodeQuery( +// LatLonPoint(detailData.latitude.toDouble(), detailData.longitude.toDouble()), +// 200f, +// GeocodeSearch.AMAP +// ) +// geocoderSearch.getFromLocationAsyn(queryParam) +// geocoderSearch.setOnGeocodeSearchListener(object : +// GeocodeSearch.OnGeocodeSearchListener { +// override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { +// if (rCode == 1000) { +// locationView.text = String.format( +// "地址:${result?.regeocodeAddress?.formatAddress}" +// ) +// } +// } +// +// override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { +// +// } +// }) + } + } } override fun observeRequestState() { -// workSiteViewModel.loadState.observe(this) { -// when (it) { -// LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") -// else -> LoadingDialogHub.dismiss() -// } -// } + workSiteViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + } } override fun initEvent() { - workSiteViewModel.obtainProjectDetail(id) - workSiteViewModel.detailModel.observe(this) { - if (it.code == 200) { - val detailData = it.data - projectNameView.text = detailData.workTitle - principalView.text = String.format("现场负责人:${detailData.workPerson}") - phoneNumberView.text = String.format("联系电话:${detailData.connectionPhone}") - completedDateView.text = String.format("竣工日期:${detailData.completedDate}") - projectProgressView.text = "工程进度:${detailData.projectProgress}%" - - this.latLng = LatLng( - detailData.latitude.toDouble(), detailData.longitude.toDouble() - ) - val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) - val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { - override fun onFinish() { - //添加Marker - val markerOptions = MarkerOptions() - .position(latLng) - .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) - .draggable(true) - aMap.addMarker(markerOptions) - } - - override fun onCancel() { - - } - }) - - val queryParam = RegeocodeQuery( - LatLonPoint(detailData.latitude.toDouble(), detailData.longitude.toDouble()), - 200f, - GeocodeSearch.AMAP - ) - geocoderSearch.getFromLocationAsyn(queryParam) - geocoderSearch.setOnGeocodeSearchListener(object : - GeocodeSearch.OnGeocodeSearchListener { - override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { - if (rCode == 1000) { - locationView.text = String.format( - "地址:${result?.regeocodeAddress?.formatAddress}" - ) - } - } - - override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { - - } - }) - } - } - navigationView.setOnClickListener { if (latLng == null) { "经纬度异常,无法开启导航".show(this) @@ -178,13 +170,6 @@ applyTextView.setOnClickListener { navigatePageTo() } - - /** - * TODO - * */ - warningTagView.setOnClickListener { - "需求不明,待完善".show(this) - } } /**地图相关*********/ diff --git a/app/src/main/java/com/casic/br/operationsite/vm/EventViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/EventViewModel.kt index 134f657..3035020 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/EventViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/EventViewModel.kt @@ -5,6 +5,7 @@ import com.casic.br.operationsite.extensions.separateResponseCode import com.casic.br.operationsite.extensions.toErrorMessage import com.casic.br.operationsite.model.CommonResultModel +import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -18,13 +19,27 @@ val resultModel = MutableLiveData() fun addEvent( - eventTitle: String, uploadName: String, phoneNumber: String, eventDescription: String, - eventImage: String, lng: String, lat: String, createTime: String + eventTitle: String, + phoneNumber: String, + lng: String, + createTime: String, + eventDescription: String, + id: String, + uploadName: String, + imageList: Array, + lat: String ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.addEvent( - eventTitle, uploadName, phoneNumber, eventDescription, - eventImage, lng, lat, createTime + eventTitle, + phoneNumber, + lng, + createTime, + eventDescription, + id, + uploadName, + imageList, + lat ) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt index 9b2abd0..4d574e4 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt @@ -6,10 +6,10 @@ import com.casic.br.operationsite.extensions.toErrorMessage import com.casic.br.operationsite.model.WorkSiteDetailModel import com.casic.br.operationsite.model.WorkSiteListModel +import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.readAssetsFile import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.BaseViewModel import com.pengxh.kt.lite.vm.LoadState @@ -24,8 +24,7 @@ val detailModel = MutableLiveData() fun obtainProjectListByPage(keywords: String, state: String, page: Int) = launch({ - val response = BaseApplication.get().readAssetsFile("TestListData.json") -// val response = RetrofitServiceManager.obtainProjectListByPage(keywords, state, page) + val response = RetrofitServiceManager.obtainProjectListByPage(keywords, state, page) val responseCode = response.separateResponseCode() if (responseCode == 200) { worksiteModel.value = gson.fromJson( @@ -40,10 +39,9 @@ it.printStackTrace() }) - fun obtainProjectDetail(id: String) = launch({ + fun obtainProjectDetail(projectId: String) = launch({ loadState.value = LoadState.Loading - val response = BaseApplication.get().readAssetsFile("TestDetailData.json") -// val response = RetrofitServiceManager.obtainProjectDetail(id) + val response = RetrofitServiceManager.obtainProjectDetail(projectId) val responseCode = response.separateResponseCode() if (responseCode == 200) { detailModel.value = gson.fromJson( diff --git a/app/src/main/res/layout/activity_site_tab.xml b/app/src/main/res/layout/activity_site_tab.xml index 93db9c0..b0d6687 100644 --- a/app/src/main/res/layout/activity_site_tab.xml +++ b/app/src/main/res/layout/activity_site_tab.xml @@ -31,8 +31,8 @@ - - - - + android:autoLink="phone" + android:text="现场情况:" /> @@ -111,7 +100,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" - android:text="地址:" + android:text="所属道路:" android:textSize="@dimen/sp_14" /> + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 2) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - completedRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071502) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 2) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + completedRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + completedRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } completedRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index 12f20e4..eb71513 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_not_start.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 0) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - notStartRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071501) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 0) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + notStartRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + notStartRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView!!.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + notStartRecyclerView.addItemDecoration( + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 42e3203..c015bdf 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,20 +27,17 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_working.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -56,42 +52,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 1) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - workingRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -117,6 +77,43 @@ weakReferenceHandler.sendEmptyMessage(2022071101) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 1) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + workingRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + workingRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -129,55 +126,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } workingRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt new file mode 100644 index 0000000..e9dcf92 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt @@ -0,0 +1,3 @@ +package com.casic.br.operationsite.model + +class ImageModel(val eventId: String, val id: String, val image: String) \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java index 2359c3c..7ce3b17 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java @@ -1,9 +1,11 @@ package com.casic.br.operationsite.model; +import java.util.List; + public class WorkSiteDetailModel { private int code; - private DataBean data; + private DataModel data; private String message; private boolean success; @@ -15,11 +17,11 @@ this.code = code; } - public DataBean getData() { + public DataModel getData() { return data; } - public void setData(DataBean data) { + public void setData(DataModel data) { this.data = data; } @@ -39,33 +41,39 @@ this.success = success; } - public static class DataBean { - private String completedDate; - private String connectionPhone; + public static class DataModel { + private String createTime; + private List deviceList; private String id; private String imageUrl; - private String latitude; - private String longitude; - private String projectProgress; + private String projectState; + private String projectStateName; + private String registerTime; private String updateTime; private String workPerson; + private String workPersonDeptId; + private String workPersonDeptName; + private String workPersonName; + private String workPersonPhoneNumber; + private String workRoad; private String workSiteDesc; private String workTitle; + private List workerList; - public String getCompletedDate() { - return completedDate; + public String getCreateTime() { + return createTime; } - public void setCompletedDate(String completedDate) { - this.completedDate = completedDate; + public void setCreateTime(String createTime) { + this.createTime = createTime; } - public String getConnectionPhone() { - return connectionPhone; + public List getDeviceList() { + return deviceList; } - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; + public void setDeviceList(List deviceList) { + this.deviceList = deviceList; } public String getId() { @@ -84,28 +92,28 @@ this.imageUrl = imageUrl; } - public String getLatitude() { - return latitude; + public String getProjectState() { + return projectState; } - public void setLatitude(String latitude) { - this.latitude = latitude; + public void setProjectState(String projectState) { + this.projectState = projectState; } - public String getLongitude() { - return longitude; + public String getProjectStateName() { + return projectStateName; } - public void setLongitude(String longitude) { - this.longitude = longitude; + public void setProjectStateName(String projectStateName) { + this.projectStateName = projectStateName; } - public String getProjectProgress() { - return projectProgress; + public String getRegisterTime() { + return registerTime; } - public void setProjectProgress(String projectProgress) { - this.projectProgress = projectProgress; + public void setRegisterTime(String registerTime) { + this.registerTime = registerTime; } public String getUpdateTime() { @@ -124,6 +132,46 @@ this.workPerson = workPerson; } + public String getWorkPersonDeptId() { + return workPersonDeptId; + } + + public void setWorkPersonDeptId(String workPersonDeptId) { + this.workPersonDeptId = workPersonDeptId; + } + + public String getWorkPersonDeptName() { + return workPersonDeptName; + } + + public void setWorkPersonDeptName(String workPersonDeptName) { + this.workPersonDeptName = workPersonDeptName; + } + + public String getWorkPersonName() { + return workPersonName; + } + + public void setWorkPersonName(String workPersonName) { + this.workPersonName = workPersonName; + } + + public String getWorkPersonPhoneNumber() { + return workPersonPhoneNumber; + } + + public void setWorkPersonPhoneNumber(String workPersonPhoneNumber) { + this.workPersonPhoneNumber = workPersonPhoneNumber; + } + + public String getWorkRoad() { + return workRoad; + } + + public void setWorkRoad(String workRoad) { + this.workRoad = workRoad; + } + public String getWorkSiteDesc() { return workSiteDesc; } @@ -139,5 +187,145 @@ public void setWorkTitle(String workTitle) { this.workTitle = workTitle; } + + public List getWorkerList() { + return workerList; + } + + public void setWorkerList(List workerList) { + this.workerList = workerList; + } + + public static class DeviceListModel { + private String deviceCode; + private String deviceId; + private String id; + private String projectId; + + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + } + + public static class WorkerListModel { + private String braceletCode; + private String hatCode; + private String id; + private String projectId; + private String vastCode; + private String workerDeptId; + private String workerDeptName; + private String workerId; + private String workerName; + private String workerPhoneNumber; + + public String getBraceletCode() { + return braceletCode; + } + + public void setBraceletCode(String braceletCode) { + this.braceletCode = braceletCode; + } + + public String getHatCode() { + return hatCode; + } + + public void setHatCode(String hatCode) { + this.hatCode = hatCode; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + + public String getVastCode() { + return vastCode; + } + + public void setVastCode(String vastCode) { + this.vastCode = vastCode; + } + + public String getWorkerDeptId() { + return workerDeptId; + } + + public void setWorkerDeptId(String workerDeptId) { + this.workerDeptId = workerDeptId; + } + + public String getWorkerDeptName() { + return workerDeptName; + } + + public void setWorkerDeptName(String workerDeptName) { + this.workerDeptName = workerDeptName; + } + + public String getWorkerId() { + return workerId; + } + + public void setWorkerId(String workerId) { + this.workerId = workerId; + } + + public String getWorkerName() { + return workerName; + } + + public void setWorkerName(String workerName) { + this.workerName = workerName; + } + + public String getWorkerPhoneNumber() { + return workerPhoneNumber; + } + + public void setWorkerPhoneNumber(String workerPhoneNumber) { + this.workerPhoneNumber = workerPhoneNumber; + } + } } } diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java index e6aefc7..bca3cff 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java @@ -8,7 +8,7 @@ public class WorkSiteListModel { private int code; - private DataBean data; + private DataModel data; private String message; private boolean success; @@ -20,11 +20,11 @@ this.code = code; } - public DataBean getData() { + public DataModel getData() { return data; } - public void setData(DataBean data) { + public void setData(DataModel data) { this.data = data; } @@ -44,15 +44,15 @@ this.success = success; } - public static class DataBean { - private List rows; + public static class DataModel { + private List rows; private int total; - public List getRows() { + public List getRows() { return rows; } - public void setRows(List rows) { + public void setRows(List rows) { this.rows = rows; } @@ -64,33 +64,29 @@ this.total = total; } - public static class RowsBean { - private String completedDate; - private String connectionPhone; + public static class RowsModel { + private String createTime; private String id; private String imageUrl; - private String latitude; - private String longitude; - private String projectProgress; + private String projectState; + private String projectStateName; + private String registerTime; private String updateTime; private String workPerson; + private String workPersonDeptId; + private String workPersonDeptName; + private String workPersonName; + private String workPersonPhoneNumber; + private String workRoad; private String workSiteDesc; private String workTitle; - public String getCompletedDate() { - return completedDate; + public String getCreateTime() { + return createTime; } - public void setCompletedDate(String completedDate) { - this.completedDate = completedDate; - } - - public String getConnectionPhone() { - return connectionPhone; - } - - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; + public void setCreateTime(String createTime) { + this.createTime = createTime; } public String getId() { @@ -109,28 +105,28 @@ this.imageUrl = imageUrl; } - public String getLatitude() { - return latitude; + public String getProjectState() { + return projectState; } - public void setLatitude(String latitude) { - this.latitude = latitude; + public void setProjectState(String projectState) { + this.projectState = projectState; } - public String getLongitude() { - return longitude; + public String getProjectStateName() { + return projectStateName; } - public void setLongitude(String longitude) { - this.longitude = longitude; + public void setProjectStateName(String projectStateName) { + this.projectStateName = projectStateName; } - public String getProjectProgress() { - return projectProgress; + public String getRegisterTime() { + return registerTime; } - public void setProjectProgress(String projectProgress) { - this.projectProgress = projectProgress; + public void setRegisterTime(String registerTime) { + this.registerTime = registerTime; } public String getUpdateTime() { @@ -149,6 +145,46 @@ this.workPerson = workPerson; } + public String getWorkPersonDeptId() { + return workPersonDeptId; + } + + public void setWorkPersonDeptId(String workPersonDeptId) { + this.workPersonDeptId = workPersonDeptId; + } + + public String getWorkPersonDeptName() { + return workPersonDeptName; + } + + public void setWorkPersonDeptName(String workPersonDeptName) { + this.workPersonDeptName = workPersonDeptName; + } + + public String getWorkPersonName() { + return workPersonName; + } + + public void setWorkPersonName(String workPersonName) { + this.workPersonName = workPersonName; + } + + public String getWorkPersonPhoneNumber() { + return workPersonPhoneNumber; + } + + public void setWorkPersonPhoneNumber(String workPersonPhoneNumber) { + this.workPersonPhoneNumber = workPersonPhoneNumber; + } + + public String getWorkRoad() { + return workRoad; + } + + public void setWorkRoad(String workRoad) { + this.workRoad = workRoad; + } + public String getWorkSiteDesc() { return workSiteDesc; } diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index aaccfb1..6aad0a0 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -1,6 +1,7 @@ package com.casic.br.operationsite.retrofit import okhttp3.MultipartBody +import okhttp3.RequestBody import retrofit2.http.* interface RetrofitService { @@ -49,7 +50,7 @@ @GET("/site/detail") suspend fun obtainProjectDetail( @Header("token") token: String, - @Query("id") id: String + @Query("projectId") projectId: String ): String /** @@ -87,18 +88,10 @@ /** * 新增事件 */ - @FormUrlEncoded @POST("/event/add") suspend fun addEvent( @Header("token") token: String, - @Field("eventTitle") eventTitle: String, - @Field("uploadName") uploadName: String, - @Field("phoneNumber") phoneNumber: String, - @Field("eventDescription") eventDescription: String, - @Field("eventImage") eventImage: String, - @Field("lng") lng: String, - @Field("lat") lat: String, - @Field("createTime") createTime: String + @Body requestBody: RequestBody ): String /** diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 0c15793..72e7aaf 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -1,12 +1,18 @@ package com.casic.br.operationsite.retrofit +import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LocaleConstant +import com.google.gson.Gson +import com.google.gson.JsonObject +import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory import com.pengxh.kt.lite.utils.SaveKeyValues +import okhttp3.MediaType.Companion.toMediaType import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.MultipartBody import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.toRequestBody import java.io.File object RetrofitServiceManager { @@ -51,8 +57,8 @@ /** * 施工现场详情 */ - suspend fun obtainProjectDetail(id: String): String { - return api.obtainProjectDetail(AuthenticationHelper.token!!, id) + suspend fun obtainProjectDetail(projectId: String): String { + return api.obtainProjectDetail(AuthenticationHelper.token!!, projectId) } /** @@ -83,14 +89,34 @@ /** * 新增事件 */ + private val gson by lazy { Gson() } + private val typeToken = object : TypeToken>() {}.type suspend fun addEvent( - eventTitle: String, uploadName: String, phoneNumber: String, eventDescription: String, - eventImage: String, lng: String, lat: String, createTime: String + eventTitle: String, + phoneNumber: String, + lng: String, + createTime: String, + eventDescription: String, + id: String, + uploadName: String, + imageList: Array, + lat: String ): String { - return api.addEvent( - AuthenticationHelper.token!!, - eventTitle, uploadName, phoneNumber, eventDescription, eventImage, lng, lat, createTime + val param = JsonObject() + param.addProperty("eventTitle", eventTitle) + param.addProperty("phoneNumber", phoneNumber) + param.addProperty("lng", lng) + param.addProperty("createTime", createTime) + param.addProperty("eventDescription", eventDescription) + param.addProperty("id", id) + param.addProperty("uploadName", uploadName) + param.add("imageList", gson.toJsonTree(imageList, typeToken).asJsonArray) + param.addProperty("lat", lat) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() ) + return api.addEvent(AuthenticationHelper.token!!, requestBody) } /** diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 231a4a5..e6a213a 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -16,8 +16,7 @@ Manifest.permission.WRITE_SETTINGS ) - // const val SERVER_BASE_URL = "http://192.168.43.66:12210" - const val SERVER_BASE_URL = "http://111.198.10.15:12210" + const val SERVER_BASE_URL = "http://111.198.10.15:21409" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt index 9ae3e27..cc59d26 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt @@ -14,7 +14,7 @@ import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar -import com.casic.br.operationsite.extensions.reformat +import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.model.UserDetailModel import com.casic.br.operationsite.utils.GlideLoadEngine import com.casic.br.operationsite.utils.LoadingDialogHub @@ -176,15 +176,26 @@ return@setOnClickListener } + val imageModels = ArrayList() + imagePaths.forEach { url -> + imageModels.add(ImageModel("", "", url)) + } + + val imageArray = arrayOf() + imageModels.forEachIndexed { index, imageModel -> + imageArray[index] = imageModel + } + eventViewModel.addEvent( eventNameView.text.toString(), - uploadPersonView.text.toString(), personNumberView.text.toString(), - siteEditView.text.toString(), - imagePaths.reformat(), mapLocation?.longitude.toString(), + System.currentTimeMillis().timestampToCompleteDate(), + siteEditView.text.toString(), + "", + uploadPersonView.text.toString(), + imageArray, mapLocation?.latitude.toString(), - System.currentTimeMillis().timestampToCompleteDate() ) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 116ac73..9b225f1 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -4,16 +4,13 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions -import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* -import com.amap.api.services.core.LatLonPoint -import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Poi import com.amap.api.services.geocoder.GeocodeSearch -import com.amap.api.services.geocoder.RegeocodeQuery -import com.amap.api.services.geocoder.RegeocodeResult import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.showRouteOnMap +import com.casic.br.operationsite.utils.LoadingDialogHub import com.casic.br.operationsite.vm.WorkSiteViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -21,6 +18,7 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant +import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_site_tab.* @@ -30,7 +28,6 @@ private lateinit var aMap: AMap private lateinit var workSiteViewModel: WorkSiteViewModel - private lateinit var id: String private val geocoderSearch by lazy { GeocodeSearch(this) } private var latLng: LatLng? = null @@ -46,7 +43,7 @@ } override fun initData() { - this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! + val projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! /** * 地图初始化设置 @@ -63,71 +60,66 @@ * 数据初始化 * */ workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] + workSiteViewModel.obtainProjectDetail(projectId) + workSiteViewModel.detailModel.observe(this) { + if (it.code == 200) { + projectNameView.text = it.data.workTitle + principalView.text = String.format("现场负责人:${it.data.workPersonName}") + phoneNumberView.text = String.format("联系电话:${it.data.workPersonPhoneNumber}") + workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") + locationView.text = String.format("所属道路:${it.data.workRoad}") + +// val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) +// val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) +// aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { +// override fun onFinish() { +// //添加Marker +// val markerOptions = MarkerOptions() +// .position(latLng) +// .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) +// .draggable(true) +// aMap.addMarker(markerOptions) +// } +// +// override fun onCancel() { +// +// } +// }) +// +// val queryParam = RegeocodeQuery( +// LatLonPoint(detailData.latitude.toDouble(), detailData.longitude.toDouble()), +// 200f, +// GeocodeSearch.AMAP +// ) +// geocoderSearch.getFromLocationAsyn(queryParam) +// geocoderSearch.setOnGeocodeSearchListener(object : +// GeocodeSearch.OnGeocodeSearchListener { +// override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { +// if (rCode == 1000) { +// locationView.text = String.format( +// "地址:${result?.regeocodeAddress?.formatAddress}" +// ) +// } +// } +// +// override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { +// +// } +// }) + } + } } override fun observeRequestState() { -// workSiteViewModel.loadState.observe(this) { -// when (it) { -// LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") -// else -> LoadingDialogHub.dismiss() -// } -// } + workSiteViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + } } override fun initEvent() { - workSiteViewModel.obtainProjectDetail(id) - workSiteViewModel.detailModel.observe(this) { - if (it.code == 200) { - val detailData = it.data - projectNameView.text = detailData.workTitle - principalView.text = String.format("现场负责人:${detailData.workPerson}") - phoneNumberView.text = String.format("联系电话:${detailData.connectionPhone}") - completedDateView.text = String.format("竣工日期:${detailData.completedDate}") - projectProgressView.text = "工程进度:${detailData.projectProgress}%" - - this.latLng = LatLng( - detailData.latitude.toDouble(), detailData.longitude.toDouble() - ) - val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) - val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { - override fun onFinish() { - //添加Marker - val markerOptions = MarkerOptions() - .position(latLng) - .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) - .draggable(true) - aMap.addMarker(markerOptions) - } - - override fun onCancel() { - - } - }) - - val queryParam = RegeocodeQuery( - LatLonPoint(detailData.latitude.toDouble(), detailData.longitude.toDouble()), - 200f, - GeocodeSearch.AMAP - ) - geocoderSearch.getFromLocationAsyn(queryParam) - geocoderSearch.setOnGeocodeSearchListener(object : - GeocodeSearch.OnGeocodeSearchListener { - override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { - if (rCode == 1000) { - locationView.text = String.format( - "地址:${result?.regeocodeAddress?.formatAddress}" - ) - } - } - - override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { - - } - }) - } - } - navigationView.setOnClickListener { if (latLng == null) { "经纬度异常,无法开启导航".show(this) @@ -178,13 +170,6 @@ applyTextView.setOnClickListener { navigatePageTo() } - - /** - * TODO - * */ - warningTagView.setOnClickListener { - "需求不明,待完善".show(this) - } } /**地图相关*********/ diff --git a/app/src/main/java/com/casic/br/operationsite/vm/EventViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/EventViewModel.kt index 134f657..3035020 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/EventViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/EventViewModel.kt @@ -5,6 +5,7 @@ import com.casic.br.operationsite.extensions.separateResponseCode import com.casic.br.operationsite.extensions.toErrorMessage import com.casic.br.operationsite.model.CommonResultModel +import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -18,13 +19,27 @@ val resultModel = MutableLiveData() fun addEvent( - eventTitle: String, uploadName: String, phoneNumber: String, eventDescription: String, - eventImage: String, lng: String, lat: String, createTime: String + eventTitle: String, + phoneNumber: String, + lng: String, + createTime: String, + eventDescription: String, + id: String, + uploadName: String, + imageList: Array, + lat: String ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.addEvent( - eventTitle, uploadName, phoneNumber, eventDescription, - eventImage, lng, lat, createTime + eventTitle, + phoneNumber, + lng, + createTime, + eventDescription, + id, + uploadName, + imageList, + lat ) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt index 9b2abd0..4d574e4 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt @@ -6,10 +6,10 @@ import com.casic.br.operationsite.extensions.toErrorMessage import com.casic.br.operationsite.model.WorkSiteDetailModel import com.casic.br.operationsite.model.WorkSiteListModel +import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.readAssetsFile import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.BaseViewModel import com.pengxh.kt.lite.vm.LoadState @@ -24,8 +24,7 @@ val detailModel = MutableLiveData() fun obtainProjectListByPage(keywords: String, state: String, page: Int) = launch({ - val response = BaseApplication.get().readAssetsFile("TestListData.json") -// val response = RetrofitServiceManager.obtainProjectListByPage(keywords, state, page) + val response = RetrofitServiceManager.obtainProjectListByPage(keywords, state, page) val responseCode = response.separateResponseCode() if (responseCode == 200) { worksiteModel.value = gson.fromJson( @@ -40,10 +39,9 @@ it.printStackTrace() }) - fun obtainProjectDetail(id: String) = launch({ + fun obtainProjectDetail(projectId: String) = launch({ loadState.value = LoadState.Loading - val response = BaseApplication.get().readAssetsFile("TestDetailData.json") -// val response = RetrofitServiceManager.obtainProjectDetail(id) + val response = RetrofitServiceManager.obtainProjectDetail(projectId) val responseCode = response.separateResponseCode() if (responseCode == 200) { detailModel.value = gson.fromJson( diff --git a/app/src/main/res/layout/activity_site_tab.xml b/app/src/main/res/layout/activity_site_tab.xml index 93db9c0..b0d6687 100644 --- a/app/src/main/res/layout/activity_site_tab.xml +++ b/app/src/main/res/layout/activity_site_tab.xml @@ -31,8 +31,8 @@ - - - - + android:autoLink="phone" + android:text="现场情况:" /> @@ -111,7 +100,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" - android:text="地址:" + android:text="所属道路:" android:textSize="@dimen/sp_14" /> + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 2) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - completedRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - completedRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071502) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 2) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + completedRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + completedRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } completedRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) completedRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index 12f20e4..eb71513 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,19 +27,16 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_not_start.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class NotStartFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -55,42 +51,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 0) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - notStartRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - notStartRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -116,6 +76,43 @@ weakReferenceHandler.sendEmptyMessage(2022071501) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 0) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + notStartRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + notStartRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -128,55 +125,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } - notStartRecyclerView!!.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + notStartRecyclerView.addItemDecoration( + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) notStartRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 42e3203..c015bdf 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -5,9 +5,6 @@ import android.content.Intent import android.os.Handler import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.DividerItemDecoration -import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.showEmptyPage @@ -21,6 +18,8 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.divider.ItemDecoration +import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager @@ -28,20 +27,17 @@ import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.fragment_working.* import kotlinx.android.synthetic.main.include_empty_view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext class WorkingFragment : KotlinBaseFragment() { private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var workingListAdapter: NormalRecyclerAdapter + private lateinit var workingListAdapter: NormalRecyclerAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager private val gson by lazy { Gson() } private val typeToken = object : TypeToken() {}.type - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -56,42 +52,6 @@ override fun initData() { weakReferenceHandler = WeakReferenceHandler(callback) workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] - broadcastManager = BroadcastManager.obtainInstance(requireContext()) - broadcastManager.addAction(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) - val dataModel = gson.fromJson(stringExtra, typeToken) - if (dataModel.currentPage == 1) { - pageIndex = 1 - keywords = dataModel.keywords - obtainProjectListByPage() - } - } - }, LocaleConstant.SEARCH_ACTION) - } - - override fun onResume() { - super.onResume() - obtainProjectListByPage() - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - workingRefreshLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainProjectListByPage() - } - workingRefreshLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainProjectListByPage() - } - workSiteViewModel.worksiteModel.observe(this) { if (it.code == 200) { val dataRows = it.data?.rows @@ -117,6 +77,43 @@ weakReferenceHandler.sendEmptyMessage(2022071101) } } + + broadcastManager = BroadcastManager.obtainInstance(requireContext()) + broadcastManager.addAction(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + val stringExtra = intent?.getStringExtra(Constant.BROADCAST_INTENT_DATA_KEY) + val dataModel = gson.fromJson(stringExtra, typeToken) + if (dataModel.currentPage == 1) { + pageIndex = 1 + keywords = dataModel.keywords + obtainProjectListByPage() + } + } + }, LocaleConstant.SEARCH_ACTION) + } + + override fun onResume() { + super.onResume() + pageIndex = 1 + obtainProjectListByPage() + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + workingRefreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + obtainProjectListByPage() + } + workingRefreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + obtainProjectListByPage() + } } private fun obtainProjectListByPage() { @@ -129,55 +126,44 @@ workingListAdapter.notifyDataSetChanged() } else { //首次加载数据 if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { + emptyView.showEmptyPage { pageIndex = 1 obtainProjectListByPage() } } else { - emptyView!!.hide() + emptyView.hide() workingListAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_working_rv, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: WorkSiteListModel.DataBean.RowsBean + item: WorkSiteListModel.DataModel.RowsModel ) { if (item.imageUrl.isNullOrBlank()) { viewHolder.setImageResource( R.id.workSiteImageView, R.mipmap.ic_launcher ) } else { - val imagePath = item.imageUrl.combineImagePath() - lifecycleScope.launch(Dispatchers.Main) { - try { - val drawable = withContext(Dispatchers.IO) { - Glide.with(requireContext()).load(imagePath).submit() - .get() - } - viewHolder.setImageResource( - R.id.workSiteImageView, drawable - ) - } catch (e: Exception) { - e.printStackTrace() - } - } + viewHolder.setImageResource( + R.id.workSiteImageView, item.imageUrl.combineImagePath() + ) } viewHolder.setText(R.id.workTitleView, item.workTitle) - .setText(R.id.workPersonView, "现场负责人:${item.workPerson}") - .setText(R.id.connectionPhoneView, "联系电话:${item.connectionPhone}") + .setText(R.id.workPersonView, "现场负责人:${item.workPersonName}") + .setText(R.id.connectionPhoneView, "联系电话:${item.workPersonPhoneNumber}") .setText(R.id.workSiteView, "现场描述:${item.workSiteDesc}") } } workingRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + ItemDecoration(95f.dp2px(requireContext()).toFloat(), 0f) ) workingRecyclerView.adapter = workingListAdapter workingListAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: WorkSiteListModel.DataBean.RowsBean + position: Int, t: WorkSiteListModel.DataModel.RowsModel ) { requireContext().navigatePageTo(t.id) } diff --git a/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt new file mode 100644 index 0000000..e9dcf92 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/ImageModel.kt @@ -0,0 +1,3 @@ +package com.casic.br.operationsite.model + +class ImageModel(val eventId: String, val id: String, val image: String) \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java index 2359c3c..7ce3b17 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java @@ -1,9 +1,11 @@ package com.casic.br.operationsite.model; +import java.util.List; + public class WorkSiteDetailModel { private int code; - private DataBean data; + private DataModel data; private String message; private boolean success; @@ -15,11 +17,11 @@ this.code = code; } - public DataBean getData() { + public DataModel getData() { return data; } - public void setData(DataBean data) { + public void setData(DataModel data) { this.data = data; } @@ -39,33 +41,39 @@ this.success = success; } - public static class DataBean { - private String completedDate; - private String connectionPhone; + public static class DataModel { + private String createTime; + private List deviceList; private String id; private String imageUrl; - private String latitude; - private String longitude; - private String projectProgress; + private String projectState; + private String projectStateName; + private String registerTime; private String updateTime; private String workPerson; + private String workPersonDeptId; + private String workPersonDeptName; + private String workPersonName; + private String workPersonPhoneNumber; + private String workRoad; private String workSiteDesc; private String workTitle; + private List workerList; - public String getCompletedDate() { - return completedDate; + public String getCreateTime() { + return createTime; } - public void setCompletedDate(String completedDate) { - this.completedDate = completedDate; + public void setCreateTime(String createTime) { + this.createTime = createTime; } - public String getConnectionPhone() { - return connectionPhone; + public List getDeviceList() { + return deviceList; } - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; + public void setDeviceList(List deviceList) { + this.deviceList = deviceList; } public String getId() { @@ -84,28 +92,28 @@ this.imageUrl = imageUrl; } - public String getLatitude() { - return latitude; + public String getProjectState() { + return projectState; } - public void setLatitude(String latitude) { - this.latitude = latitude; + public void setProjectState(String projectState) { + this.projectState = projectState; } - public String getLongitude() { - return longitude; + public String getProjectStateName() { + return projectStateName; } - public void setLongitude(String longitude) { - this.longitude = longitude; + public void setProjectStateName(String projectStateName) { + this.projectStateName = projectStateName; } - public String getProjectProgress() { - return projectProgress; + public String getRegisterTime() { + return registerTime; } - public void setProjectProgress(String projectProgress) { - this.projectProgress = projectProgress; + public void setRegisterTime(String registerTime) { + this.registerTime = registerTime; } public String getUpdateTime() { @@ -124,6 +132,46 @@ this.workPerson = workPerson; } + public String getWorkPersonDeptId() { + return workPersonDeptId; + } + + public void setWorkPersonDeptId(String workPersonDeptId) { + this.workPersonDeptId = workPersonDeptId; + } + + public String getWorkPersonDeptName() { + return workPersonDeptName; + } + + public void setWorkPersonDeptName(String workPersonDeptName) { + this.workPersonDeptName = workPersonDeptName; + } + + public String getWorkPersonName() { + return workPersonName; + } + + public void setWorkPersonName(String workPersonName) { + this.workPersonName = workPersonName; + } + + public String getWorkPersonPhoneNumber() { + return workPersonPhoneNumber; + } + + public void setWorkPersonPhoneNumber(String workPersonPhoneNumber) { + this.workPersonPhoneNumber = workPersonPhoneNumber; + } + + public String getWorkRoad() { + return workRoad; + } + + public void setWorkRoad(String workRoad) { + this.workRoad = workRoad; + } + public String getWorkSiteDesc() { return workSiteDesc; } @@ -139,5 +187,145 @@ public void setWorkTitle(String workTitle) { this.workTitle = workTitle; } + + public List getWorkerList() { + return workerList; + } + + public void setWorkerList(List workerList) { + this.workerList = workerList; + } + + public static class DeviceListModel { + private String deviceCode; + private String deviceId; + private String id; + private String projectId; + + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + } + + public static class WorkerListModel { + private String braceletCode; + private String hatCode; + private String id; + private String projectId; + private String vastCode; + private String workerDeptId; + private String workerDeptName; + private String workerId; + private String workerName; + private String workerPhoneNumber; + + public String getBraceletCode() { + return braceletCode; + } + + public void setBraceletCode(String braceletCode) { + this.braceletCode = braceletCode; + } + + public String getHatCode() { + return hatCode; + } + + public void setHatCode(String hatCode) { + this.hatCode = hatCode; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProjectId() { + return projectId; + } + + public void setProjectId(String projectId) { + this.projectId = projectId; + } + + public String getVastCode() { + return vastCode; + } + + public void setVastCode(String vastCode) { + this.vastCode = vastCode; + } + + public String getWorkerDeptId() { + return workerDeptId; + } + + public void setWorkerDeptId(String workerDeptId) { + this.workerDeptId = workerDeptId; + } + + public String getWorkerDeptName() { + return workerDeptName; + } + + public void setWorkerDeptName(String workerDeptName) { + this.workerDeptName = workerDeptName; + } + + public String getWorkerId() { + return workerId; + } + + public void setWorkerId(String workerId) { + this.workerId = workerId; + } + + public String getWorkerName() { + return workerName; + } + + public void setWorkerName(String workerName) { + this.workerName = workerName; + } + + public String getWorkerPhoneNumber() { + return workerPhoneNumber; + } + + public void setWorkerPhoneNumber(String workerPhoneNumber) { + this.workerPhoneNumber = workerPhoneNumber; + } + } } } diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java index e6aefc7..bca3cff 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java @@ -8,7 +8,7 @@ public class WorkSiteListModel { private int code; - private DataBean data; + private DataModel data; private String message; private boolean success; @@ -20,11 +20,11 @@ this.code = code; } - public DataBean getData() { + public DataModel getData() { return data; } - public void setData(DataBean data) { + public void setData(DataModel data) { this.data = data; } @@ -44,15 +44,15 @@ this.success = success; } - public static class DataBean { - private List rows; + public static class DataModel { + private List rows; private int total; - public List getRows() { + public List getRows() { return rows; } - public void setRows(List rows) { + public void setRows(List rows) { this.rows = rows; } @@ -64,33 +64,29 @@ this.total = total; } - public static class RowsBean { - private String completedDate; - private String connectionPhone; + public static class RowsModel { + private String createTime; private String id; private String imageUrl; - private String latitude; - private String longitude; - private String projectProgress; + private String projectState; + private String projectStateName; + private String registerTime; private String updateTime; private String workPerson; + private String workPersonDeptId; + private String workPersonDeptName; + private String workPersonName; + private String workPersonPhoneNumber; + private String workRoad; private String workSiteDesc; private String workTitle; - public String getCompletedDate() { - return completedDate; + public String getCreateTime() { + return createTime; } - public void setCompletedDate(String completedDate) { - this.completedDate = completedDate; - } - - public String getConnectionPhone() { - return connectionPhone; - } - - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; + public void setCreateTime(String createTime) { + this.createTime = createTime; } public String getId() { @@ -109,28 +105,28 @@ this.imageUrl = imageUrl; } - public String getLatitude() { - return latitude; + public String getProjectState() { + return projectState; } - public void setLatitude(String latitude) { - this.latitude = latitude; + public void setProjectState(String projectState) { + this.projectState = projectState; } - public String getLongitude() { - return longitude; + public String getProjectStateName() { + return projectStateName; } - public void setLongitude(String longitude) { - this.longitude = longitude; + public void setProjectStateName(String projectStateName) { + this.projectStateName = projectStateName; } - public String getProjectProgress() { - return projectProgress; + public String getRegisterTime() { + return registerTime; } - public void setProjectProgress(String projectProgress) { - this.projectProgress = projectProgress; + public void setRegisterTime(String registerTime) { + this.registerTime = registerTime; } public String getUpdateTime() { @@ -149,6 +145,46 @@ this.workPerson = workPerson; } + public String getWorkPersonDeptId() { + return workPersonDeptId; + } + + public void setWorkPersonDeptId(String workPersonDeptId) { + this.workPersonDeptId = workPersonDeptId; + } + + public String getWorkPersonDeptName() { + return workPersonDeptName; + } + + public void setWorkPersonDeptName(String workPersonDeptName) { + this.workPersonDeptName = workPersonDeptName; + } + + public String getWorkPersonName() { + return workPersonName; + } + + public void setWorkPersonName(String workPersonName) { + this.workPersonName = workPersonName; + } + + public String getWorkPersonPhoneNumber() { + return workPersonPhoneNumber; + } + + public void setWorkPersonPhoneNumber(String workPersonPhoneNumber) { + this.workPersonPhoneNumber = workPersonPhoneNumber; + } + + public String getWorkRoad() { + return workRoad; + } + + public void setWorkRoad(String workRoad) { + this.workRoad = workRoad; + } + public String getWorkSiteDesc() { return workSiteDesc; } diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index aaccfb1..6aad0a0 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -1,6 +1,7 @@ package com.casic.br.operationsite.retrofit import okhttp3.MultipartBody +import okhttp3.RequestBody import retrofit2.http.* interface RetrofitService { @@ -49,7 +50,7 @@ @GET("/site/detail") suspend fun obtainProjectDetail( @Header("token") token: String, - @Query("id") id: String + @Query("projectId") projectId: String ): String /** @@ -87,18 +88,10 @@ /** * 新增事件 */ - @FormUrlEncoded @POST("/event/add") suspend fun addEvent( @Header("token") token: String, - @Field("eventTitle") eventTitle: String, - @Field("uploadName") uploadName: String, - @Field("phoneNumber") phoneNumber: String, - @Field("eventDescription") eventDescription: String, - @Field("eventImage") eventImage: String, - @Field("lng") lng: String, - @Field("lat") lat: String, - @Field("createTime") createTime: String + @Body requestBody: RequestBody ): String /** diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 0c15793..72e7aaf 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -1,12 +1,18 @@ package com.casic.br.operationsite.retrofit +import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.utils.AuthenticationHelper import com.casic.br.operationsite.utils.LocaleConstant +import com.google.gson.Gson +import com.google.gson.JsonObject +import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.utils.RetrofitFactory import com.pengxh.kt.lite.utils.SaveKeyValues +import okhttp3.MediaType.Companion.toMediaType import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.MultipartBody import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.toRequestBody import java.io.File object RetrofitServiceManager { @@ -51,8 +57,8 @@ /** * 施工现场详情 */ - suspend fun obtainProjectDetail(id: String): String { - return api.obtainProjectDetail(AuthenticationHelper.token!!, id) + suspend fun obtainProjectDetail(projectId: String): String { + return api.obtainProjectDetail(AuthenticationHelper.token!!, projectId) } /** @@ -83,14 +89,34 @@ /** * 新增事件 */ + private val gson by lazy { Gson() } + private val typeToken = object : TypeToken>() {}.type suspend fun addEvent( - eventTitle: String, uploadName: String, phoneNumber: String, eventDescription: String, - eventImage: String, lng: String, lat: String, createTime: String + eventTitle: String, + phoneNumber: String, + lng: String, + createTime: String, + eventDescription: String, + id: String, + uploadName: String, + imageList: Array, + lat: String ): String { - return api.addEvent( - AuthenticationHelper.token!!, - eventTitle, uploadName, phoneNumber, eventDescription, eventImage, lng, lat, createTime + val param = JsonObject() + param.addProperty("eventTitle", eventTitle) + param.addProperty("phoneNumber", phoneNumber) + param.addProperty("lng", lng) + param.addProperty("createTime", createTime) + param.addProperty("eventDescription", eventDescription) + param.addProperty("id", id) + param.addProperty("uploadName", uploadName) + param.add("imageList", gson.toJsonTree(imageList, typeToken).asJsonArray) + param.addProperty("lat", lat) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() ) + return api.addEvent(AuthenticationHelper.token!!, requestBody) } /** diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 231a4a5..e6a213a 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -16,8 +16,7 @@ Manifest.permission.WRITE_SETTINGS ) - // const val SERVER_BASE_URL = "http://192.168.43.66:12210" - const val SERVER_BASE_URL = "http://111.198.10.15:12210" + const val SERVER_BASE_URL = "http://111.198.10.15:21409" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt index 9ae3e27..cc59d26 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/UploadEventActivity.kt @@ -14,7 +14,7 @@ import com.casic.br.operationsite.extensions.combineImagePath import com.casic.br.operationsite.extensions.compressImage import com.casic.br.operationsite.extensions.initLayoutImmersionBar -import com.casic.br.operationsite.extensions.reformat +import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.model.UserDetailModel import com.casic.br.operationsite.utils.GlideLoadEngine import com.casic.br.operationsite.utils.LoadingDialogHub @@ -176,15 +176,26 @@ return@setOnClickListener } + val imageModels = ArrayList() + imagePaths.forEach { url -> + imageModels.add(ImageModel("", "", url)) + } + + val imageArray = arrayOf() + imageModels.forEachIndexed { index, imageModel -> + imageArray[index] = imageModel + } + eventViewModel.addEvent( eventNameView.text.toString(), - uploadPersonView.text.toString(), personNumberView.text.toString(), - siteEditView.text.toString(), - imagePaths.reformat(), mapLocation?.longitude.toString(), + System.currentTimeMillis().timestampToCompleteDate(), + siteEditView.text.toString(), + "", + uploadPersonView.text.toString(), + imageArray, mapLocation?.latitude.toString(), - System.currentTimeMillis().timestampToCompleteDate() ) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 116ac73..9b225f1 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -4,16 +4,13 @@ import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions -import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.* -import com.amap.api.services.core.LatLonPoint -import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Poi import com.amap.api.services.geocoder.GeocodeSearch -import com.amap.api.services.geocoder.RegeocodeQuery -import com.amap.api.services.geocoder.RegeocodeResult import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.extensions.showRouteOnMap +import com.casic.br.operationsite.utils.LoadingDialogHub import com.casic.br.operationsite.vm.WorkSiteViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -21,6 +18,7 @@ import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant +import com.pengxh.kt.lite.vm.LoadState import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_site_tab.* @@ -30,7 +28,6 @@ private lateinit var aMap: AMap private lateinit var workSiteViewModel: WorkSiteViewModel - private lateinit var id: String private val geocoderSearch by lazy { GeocodeSearch(this) } private var latLng: LatLng? = null @@ -46,7 +43,7 @@ } override fun initData() { - this.id = intent.getStringExtra(Constant.INTENT_PARAM)!! + val projectId = intent.getStringExtra(Constant.INTENT_PARAM)!! /** * 地图初始化设置 @@ -63,71 +60,66 @@ * 数据初始化 * */ workSiteViewModel = ViewModelProvider(this)[WorkSiteViewModel::class.java] + workSiteViewModel.obtainProjectDetail(projectId) + workSiteViewModel.detailModel.observe(this) { + if (it.code == 200) { + projectNameView.text = it.data.workTitle + principalView.text = String.format("现场负责人:${it.data.workPersonName}") + phoneNumberView.text = String.format("联系电话:${it.data.workPersonPhoneNumber}") + workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") + locationView.text = String.format("所属道路:${it.data.workRoad}") + +// val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) +// val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) +// aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { +// override fun onFinish() { +// //添加Marker +// val markerOptions = MarkerOptions() +// .position(latLng) +// .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) +// .draggable(true) +// aMap.addMarker(markerOptions) +// } +// +// override fun onCancel() { +// +// } +// }) +// +// val queryParam = RegeocodeQuery( +// LatLonPoint(detailData.latitude.toDouble(), detailData.longitude.toDouble()), +// 200f, +// GeocodeSearch.AMAP +// ) +// geocoderSearch.getFromLocationAsyn(queryParam) +// geocoderSearch.setOnGeocodeSearchListener(object : +// GeocodeSearch.OnGeocodeSearchListener { +// override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { +// if (rCode == 1000) { +// locationView.text = String.format( +// "地址:${result?.regeocodeAddress?.formatAddress}" +// ) +// } +// } +// +// override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { +// +// } +// }) + } + } } override fun observeRequestState() { -// workSiteViewModel.loadState.observe(this) { -// when (it) { -// LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") -// else -> LoadingDialogHub.dismiss() -// } -// } + workSiteViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + } } override fun initEvent() { - workSiteViewModel.obtainProjectDetail(id) - workSiteViewModel.detailModel.observe(this) { - if (it.code == 200) { - val detailData = it.data - projectNameView.text = detailData.workTitle - principalView.text = String.format("现场负责人:${detailData.workPerson}") - phoneNumberView.text = String.format("联系电话:${detailData.connectionPhone}") - completedDateView.text = String.format("竣工日期:${detailData.completedDate}") - projectProgressView.text = "工程进度:${detailData.projectProgress}%" - - this.latLng = LatLng( - detailData.latitude.toDouble(), detailData.longitude.toDouble() - ) - val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) - val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { - override fun onFinish() { - //添加Marker - val markerOptions = MarkerOptions() - .position(latLng) - .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) - .draggable(true) - aMap.addMarker(markerOptions) - } - - override fun onCancel() { - - } - }) - - val queryParam = RegeocodeQuery( - LatLonPoint(detailData.latitude.toDouble(), detailData.longitude.toDouble()), - 200f, - GeocodeSearch.AMAP - ) - geocoderSearch.getFromLocationAsyn(queryParam) - geocoderSearch.setOnGeocodeSearchListener(object : - GeocodeSearch.OnGeocodeSearchListener { - override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { - if (rCode == 1000) { - locationView.text = String.format( - "地址:${result?.regeocodeAddress?.formatAddress}" - ) - } - } - - override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { - - } - }) - } - } - navigationView.setOnClickListener { if (latLng == null) { "经纬度异常,无法开启导航".show(this) @@ -178,13 +170,6 @@ applyTextView.setOnClickListener { navigatePageTo() } - - /** - * TODO - * */ - warningTagView.setOnClickListener { - "需求不明,待完善".show(this) - } } /**地图相关*********/ diff --git a/app/src/main/java/com/casic/br/operationsite/vm/EventViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/EventViewModel.kt index 134f657..3035020 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/EventViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/EventViewModel.kt @@ -5,6 +5,7 @@ import com.casic.br.operationsite.extensions.separateResponseCode import com.casic.br.operationsite.extensions.toErrorMessage import com.casic.br.operationsite.model.CommonResultModel +import com.casic.br.operationsite.model.ImageModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -18,13 +19,27 @@ val resultModel = MutableLiveData() fun addEvent( - eventTitle: String, uploadName: String, phoneNumber: String, eventDescription: String, - eventImage: String, lng: String, lat: String, createTime: String + eventTitle: String, + phoneNumber: String, + lng: String, + createTime: String, + eventDescription: String, + id: String, + uploadName: String, + imageList: Array, + lat: String ) = launch({ loadState.value = LoadState.Loading val response = RetrofitServiceManager.addEvent( - eventTitle, uploadName, phoneNumber, eventDescription, - eventImage, lng, lat, createTime + eventTitle, + phoneNumber, + lng, + createTime, + eventDescription, + id, + uploadName, + imageList, + lat ) val responseCode = response.separateResponseCode() if (responseCode == 200) { diff --git a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt index 9b2abd0..4d574e4 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt @@ -6,10 +6,10 @@ import com.casic.br.operationsite.extensions.toErrorMessage import com.casic.br.operationsite.model.WorkSiteDetailModel import com.casic.br.operationsite.model.WorkSiteListModel +import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.readAssetsFile import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.BaseViewModel import com.pengxh.kt.lite.vm.LoadState @@ -24,8 +24,7 @@ val detailModel = MutableLiveData() fun obtainProjectListByPage(keywords: String, state: String, page: Int) = launch({ - val response = BaseApplication.get().readAssetsFile("TestListData.json") -// val response = RetrofitServiceManager.obtainProjectListByPage(keywords, state, page) + val response = RetrofitServiceManager.obtainProjectListByPage(keywords, state, page) val responseCode = response.separateResponseCode() if (responseCode == 200) { worksiteModel.value = gson.fromJson( @@ -40,10 +39,9 @@ it.printStackTrace() }) - fun obtainProjectDetail(id: String) = launch({ + fun obtainProjectDetail(projectId: String) = launch({ loadState.value = LoadState.Loading - val response = BaseApplication.get().readAssetsFile("TestDetailData.json") -// val response = RetrofitServiceManager.obtainProjectDetail(id) + val response = RetrofitServiceManager.obtainProjectDetail(projectId) val responseCode = response.separateResponseCode() if (responseCode == 200) { detailModel.value = gson.fromJson( diff --git a/app/src/main/res/layout/activity_site_tab.xml b/app/src/main/res/layout/activity_site_tab.xml index 93db9c0..b0d6687 100644 --- a/app/src/main/res/layout/activity_site_tab.xml +++ b/app/src/main/res/layout/activity_site_tab.xml @@ -31,8 +31,8 @@ - - - - + android:autoLink="phone" + android:text="现场情况:" /> @@ -111,7 +100,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" - android:text="地址:" + android:text="所属道路:" android:textSize="@dimen/sp_14" /> 动态感知 - 中国航天科工集团 + 中国航天科工集团二院二〇三所 未知 \ No newline at end of file