diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index 38eb818..91e8410 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -25,6 +25,7 @@ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val ORDER_TRANSFER_OK = 21 const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index 38eb818..91e8410 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -25,6 +25,7 @@ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val ORDER_TRANSFER_OK = 21 const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 7cf9d3e..cd3b564 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -107,6 +107,16 @@ ): WorkOrderDetailModel /** + * 转单 + */ + @FormUrlEncoded + @POST("/job/getJob") + suspend fun acceptWorkOrder( + @Header("token") token: String, + @Field("id") id: Int + ): CommonResultModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index 38eb818..91e8410 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -25,6 +25,7 @@ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val ORDER_TRANSFER_OK = 21 const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 7cf9d3e..cd3b564 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -107,6 +107,16 @@ ): WorkOrderDetailModel /** + * 转单 + */ + @FormUrlEncoded + @POST("/job/getJob") + suspend fun acceptWorkOrder( + @Header("token") token: String, + @Field("id") id: Int + ): CommonResultModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5199e89..bfc49e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -103,6 +103,13 @@ } /** + * 接单 + */ + suspend fun acceptWorkOrder(id: Int): CommonResultModel { + return api.acceptWorkOrder(AuthenticationHelper.token!!, id) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index 38eb818..91e8410 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -25,6 +25,7 @@ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val ORDER_TRANSFER_OK = 21 const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 7cf9d3e..cd3b564 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -107,6 +107,16 @@ ): WorkOrderDetailModel /** + * 转单 + */ + @FormUrlEncoded + @POST("/job/getJob") + suspend fun acceptWorkOrder( + @Header("token") token: String, + @Field("id") id: Int + ): CommonResultModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5199e89..bfc49e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -103,6 +103,13 @@ } /** + * 接单 + */ + suspend fun acceptWorkOrder(id: Int): CommonResultModel { + return api.acceptWorkOrder(AuthenticationHelper.token!!, id) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt index 65c6b8e..d985854 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt @@ -5,18 +5,24 @@ import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.covertColor import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.view.fragment.TodoOrderFragment +import com.casic.app.smartwell.vm.AcceptOrderViewModel +import com.casic.app.smartwell.vm.WellDetailViewModel import com.casic.app.smartwell.vm.WorkOrderDetailViewModel import kotlinx.android.synthetic.main.activity_order_detail.* class WorkOrderDetailActivity : BaseActivity() { private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel + private lateinit var wellDetailViewModel: WellDetailViewModel + private lateinit var acceptOrderViewModel: AcceptOrderViewModel override fun initLayoutView(): Int = R.layout.activity_order_detail @@ -30,40 +36,61 @@ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId.toLong()) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { - val wellDetail = it.data!! - alarmTypeView.text = wellDetail.alarmContentName - wellCodeView.text = wellDetail.wellCode - wellNameView.text = wellDetail.wellName - wellTypeView.text = wellDetail.wellId.valueToType() -// wellStateView.text = wellDetail.bfztName - installDateView.text = wellDetail.createTime - val depth = wellDetail.deep.toString() + val orderDetail = it.data!! + alarmTypeView.text = orderDetail.alarmContentName + wellCodeView.text = orderDetail.wellCode + wellNameView.text = orderDetail.wellName + wellTypeView.text = orderDetail.wellId.valueToType() + + wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java) + val wellId = orderDetail.wellId.toString() + if (wellId == "") { + wellStateView.text = "状态未知" + } else { + wellDetailViewModel.obtainWellDetail(id = wellId) + wellDetailViewModel.detailModel.observe(this, { well -> + if (well.code == 200) { + val wellDetail = well.data!! + if (wellDetail.bfztName == "布防") { + wellStateView.setTextColor(R.color.greenTextColor.covertColor(this)) + } else { + wellStateView.setTextColor(R.color.redTextColor.covertColor(this)) + } + wellStateView.text = wellDetail.bfztName + } + }) + } + + installDateView.text = orderDetail.createTime + val depth = orderDetail.deep.toString() if (depth == "") { wellDepthView.text = resources.getString(R.string.unknown) } else { wellDepthView.text = depth } //绑定窨井位置 - val wellPosition = wellDetail.position.toString() + val wellPosition = orderDetail.position.toString() wellLocationView.text = wellPosition - //转单 - operationButton.setChangeAlphaWhenPress(true) - operationButton.setOnClickListener { - + //接单 + acceptOrderButton.setChangeAlphaWhenPress(true) + acceptOrderButton.setOnClickListener { + acceptOrderViewModel = + ViewModelProvider(this).get(AcceptOrderViewModel::class.java) + acceptOrderViewModel.acceptWorkOrder(id = orderDetail.id) } //导航 navigationButton.setChangeAlphaWhenPress(true) navigationButton.setOnClickListener { - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() + val lat = orderDetail.latGaode.toString() + val lng = orderDetail.lngGaode.toString() if (lat == "" || lng == "") { "窨井经纬度异常,无法开启导航".show(this) return@setOnClickListener } Poi( - wellDetail.position, + orderDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" ).showRouteOnMap(this) @@ -73,6 +100,7 @@ } override fun initEvent() { + //数据加载状态处理 workOrderDetailViewModel.loadState.observe(this, { when (it) { is LoadState.Loading -> { @@ -83,5 +111,26 @@ } } }) + + //接单状态处理 + acceptOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "接单中,请稍后") + } + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + "接单成功".show(this) + //通知列表刷行数据 + TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TRANSFER_OK) + //TODO 还需要通知待确认列表 + this.finish() + } + else -> { + DialogHelper.dismissLoadingDialog() + "接单失败".show(this) + } + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index 38eb818..91e8410 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -25,6 +25,7 @@ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val ORDER_TRANSFER_OK = 21 const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 7cf9d3e..cd3b564 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -107,6 +107,16 @@ ): WorkOrderDetailModel /** + * 转单 + */ + @FormUrlEncoded + @POST("/job/getJob") + suspend fun acceptWorkOrder( + @Header("token") token: String, + @Field("id") id: Int + ): CommonResultModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5199e89..bfc49e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -103,6 +103,13 @@ } /** + * 接单 + */ + suspend fun acceptWorkOrder(id: Int): CommonResultModel { + return api.acceptWorkOrder(AuthenticationHelper.token!!, id) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt index 65c6b8e..d985854 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt @@ -5,18 +5,24 @@ import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.covertColor import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.view.fragment.TodoOrderFragment +import com.casic.app.smartwell.vm.AcceptOrderViewModel +import com.casic.app.smartwell.vm.WellDetailViewModel import com.casic.app.smartwell.vm.WorkOrderDetailViewModel import kotlinx.android.synthetic.main.activity_order_detail.* class WorkOrderDetailActivity : BaseActivity() { private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel + private lateinit var wellDetailViewModel: WellDetailViewModel + private lateinit var acceptOrderViewModel: AcceptOrderViewModel override fun initLayoutView(): Int = R.layout.activity_order_detail @@ -30,40 +36,61 @@ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId.toLong()) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { - val wellDetail = it.data!! - alarmTypeView.text = wellDetail.alarmContentName - wellCodeView.text = wellDetail.wellCode - wellNameView.text = wellDetail.wellName - wellTypeView.text = wellDetail.wellId.valueToType() -// wellStateView.text = wellDetail.bfztName - installDateView.text = wellDetail.createTime - val depth = wellDetail.deep.toString() + val orderDetail = it.data!! + alarmTypeView.text = orderDetail.alarmContentName + wellCodeView.text = orderDetail.wellCode + wellNameView.text = orderDetail.wellName + wellTypeView.text = orderDetail.wellId.valueToType() + + wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java) + val wellId = orderDetail.wellId.toString() + if (wellId == "") { + wellStateView.text = "状态未知" + } else { + wellDetailViewModel.obtainWellDetail(id = wellId) + wellDetailViewModel.detailModel.observe(this, { well -> + if (well.code == 200) { + val wellDetail = well.data!! + if (wellDetail.bfztName == "布防") { + wellStateView.setTextColor(R.color.greenTextColor.covertColor(this)) + } else { + wellStateView.setTextColor(R.color.redTextColor.covertColor(this)) + } + wellStateView.text = wellDetail.bfztName + } + }) + } + + installDateView.text = orderDetail.createTime + val depth = orderDetail.deep.toString() if (depth == "") { wellDepthView.text = resources.getString(R.string.unknown) } else { wellDepthView.text = depth } //绑定窨井位置 - val wellPosition = wellDetail.position.toString() + val wellPosition = orderDetail.position.toString() wellLocationView.text = wellPosition - //转单 - operationButton.setChangeAlphaWhenPress(true) - operationButton.setOnClickListener { - + //接单 + acceptOrderButton.setChangeAlphaWhenPress(true) + acceptOrderButton.setOnClickListener { + acceptOrderViewModel = + ViewModelProvider(this).get(AcceptOrderViewModel::class.java) + acceptOrderViewModel.acceptWorkOrder(id = orderDetail.id) } //导航 navigationButton.setChangeAlphaWhenPress(true) navigationButton.setOnClickListener { - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() + val lat = orderDetail.latGaode.toString() + val lng = orderDetail.lngGaode.toString() if (lat == "" || lng == "") { "窨井经纬度异常,无法开启导航".show(this) return@setOnClickListener } Poi( - wellDetail.position, + orderDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" ).showRouteOnMap(this) @@ -73,6 +100,7 @@ } override fun initEvent() { + //数据加载状态处理 workOrderDetailViewModel.loadState.observe(this, { when (it) { is LoadState.Loading -> { @@ -83,5 +111,26 @@ } } }) + + //接单状态处理 + acceptOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "接单中,请稍后") + } + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + "接单成功".show(this) + //通知列表刷行数据 + TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TRANSFER_OK) + //TODO 还需要通知待确认列表 + this.finish() + } + else -> { + DialogHelper.dismissLoadingDialog() + "接单失败".show(this) + } + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt index 60e552a..3a12e7c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt @@ -4,6 +4,7 @@ import android.os.Handler import android.os.Looper import android.os.Message +import android.util.Log import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -11,6 +12,7 @@ import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.WorkOrderDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment @@ -19,7 +21,6 @@ class TodoOrderFragment : BaseFragment() { - private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter private lateinit var workOrderListViewModel: WorkOrderListViewModel private var dataBeans: MutableList = ArrayList() @@ -27,6 +28,18 @@ private var isRefresh = false private var isLoadMore = false + companion object { + private const val kTag = "TodoOrderFragment" + private var weakReferenceHandler: WeakReferenceHandler? = null + + fun sendEmptyMessage(what: Int) { + if (weakReferenceHandler == null) { + return + } + weakReferenceHandler!!.sendEmptyMessage(what) + } + } + override fun initLayoutView(): Int = R.layout.fragment_order_todo override fun initData() { @@ -55,7 +68,7 @@ dataBeans = dataRows!! } } - weakReferenceHandler.sendEmptyMessage(2022032901) + weakReferenceHandler!!.sendEmptyMessage(2022032901) } }) } @@ -86,39 +99,49 @@ override fun handleMessage(msg: Message) { super.handleMessage(msg) val fragment = reference.get()!! - if (msg.what == 2022032901) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.workOrderListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) - } else { - fragment.emptyView!!.hide() - fragment.workOrderListAdapter = - TodoWorkOrderListAdapter(fragment.requireContext(), fragment.dataBeans) - fragment.todoOrderView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter - fragment.workOrderListAdapter.setOnItemClickListener(object : - TodoWorkOrderListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId == "") { - "工单编号异常,无法查看详情".show(fragment.requireContext()) - return + when (msg.what) { + Constant.ORDER_TRANSFER_OK -> { + Log.d(kTag, "转单成功,更新列表") + fragment.isRefresh = true + fragment.pageIndex = 1 + fragment.obtainWorkOrderList(fragment.pageIndex) + } + 2022032901 -> { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (fragment.dataBeans.size == 0) { + fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) + } else { + fragment.emptyView!!.hide() + fragment.workOrderListAdapter = TodoWorkOrderListAdapter( + fragment.requireContext(), + fragment.dataBeans + ) + fragment.todoOrderView!!.layoutManager = + LinearLayoutManager(fragment.requireContext()) + fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter + fragment.workOrderListAdapter.setOnItemClickListener(object : + TodoWorkOrderListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = fragment.dataBeans[position].jobId.toString() + if (jobId == "") { + "工单编号异常,无法查看详情".show(fragment.requireContext()) + return + } + fragment.requireContext() + .navigatePageTo(WorkOrderDetailActivity::class.java, jobId) } - fragment.requireContext() - .navigatePageTo(WorkOrderDetailActivity::class.java, jobId) - } - override fun onOperationClicked(position: Int) { + override fun onOperationClicked(position: Int) { - } + } - override fun onNavigationButtonClicked(position: Int) { + override fun onNavigationButtonClicked(position: Int) { - } - }) + } + }) + } } } } diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index 38eb818..91e8410 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -25,6 +25,7 @@ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val ORDER_TRANSFER_OK = 21 const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 7cf9d3e..cd3b564 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -107,6 +107,16 @@ ): WorkOrderDetailModel /** + * 转单 + */ + @FormUrlEncoded + @POST("/job/getJob") + suspend fun acceptWorkOrder( + @Header("token") token: String, + @Field("id") id: Int + ): CommonResultModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5199e89..bfc49e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -103,6 +103,13 @@ } /** + * 接单 + */ + suspend fun acceptWorkOrder(id: Int): CommonResultModel { + return api.acceptWorkOrder(AuthenticationHelper.token!!, id) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt index 65c6b8e..d985854 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt @@ -5,18 +5,24 @@ import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.covertColor import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.view.fragment.TodoOrderFragment +import com.casic.app.smartwell.vm.AcceptOrderViewModel +import com.casic.app.smartwell.vm.WellDetailViewModel import com.casic.app.smartwell.vm.WorkOrderDetailViewModel import kotlinx.android.synthetic.main.activity_order_detail.* class WorkOrderDetailActivity : BaseActivity() { private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel + private lateinit var wellDetailViewModel: WellDetailViewModel + private lateinit var acceptOrderViewModel: AcceptOrderViewModel override fun initLayoutView(): Int = R.layout.activity_order_detail @@ -30,40 +36,61 @@ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId.toLong()) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { - val wellDetail = it.data!! - alarmTypeView.text = wellDetail.alarmContentName - wellCodeView.text = wellDetail.wellCode - wellNameView.text = wellDetail.wellName - wellTypeView.text = wellDetail.wellId.valueToType() -// wellStateView.text = wellDetail.bfztName - installDateView.text = wellDetail.createTime - val depth = wellDetail.deep.toString() + val orderDetail = it.data!! + alarmTypeView.text = orderDetail.alarmContentName + wellCodeView.text = orderDetail.wellCode + wellNameView.text = orderDetail.wellName + wellTypeView.text = orderDetail.wellId.valueToType() + + wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java) + val wellId = orderDetail.wellId.toString() + if (wellId == "") { + wellStateView.text = "状态未知" + } else { + wellDetailViewModel.obtainWellDetail(id = wellId) + wellDetailViewModel.detailModel.observe(this, { well -> + if (well.code == 200) { + val wellDetail = well.data!! + if (wellDetail.bfztName == "布防") { + wellStateView.setTextColor(R.color.greenTextColor.covertColor(this)) + } else { + wellStateView.setTextColor(R.color.redTextColor.covertColor(this)) + } + wellStateView.text = wellDetail.bfztName + } + }) + } + + installDateView.text = orderDetail.createTime + val depth = orderDetail.deep.toString() if (depth == "") { wellDepthView.text = resources.getString(R.string.unknown) } else { wellDepthView.text = depth } //绑定窨井位置 - val wellPosition = wellDetail.position.toString() + val wellPosition = orderDetail.position.toString() wellLocationView.text = wellPosition - //转单 - operationButton.setChangeAlphaWhenPress(true) - operationButton.setOnClickListener { - + //接单 + acceptOrderButton.setChangeAlphaWhenPress(true) + acceptOrderButton.setOnClickListener { + acceptOrderViewModel = + ViewModelProvider(this).get(AcceptOrderViewModel::class.java) + acceptOrderViewModel.acceptWorkOrder(id = orderDetail.id) } //导航 navigationButton.setChangeAlphaWhenPress(true) navigationButton.setOnClickListener { - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() + val lat = orderDetail.latGaode.toString() + val lng = orderDetail.lngGaode.toString() if (lat == "" || lng == "") { "窨井经纬度异常,无法开启导航".show(this) return@setOnClickListener } Poi( - wellDetail.position, + orderDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" ).showRouteOnMap(this) @@ -73,6 +100,7 @@ } override fun initEvent() { + //数据加载状态处理 workOrderDetailViewModel.loadState.observe(this, { when (it) { is LoadState.Loading -> { @@ -83,5 +111,26 @@ } } }) + + //接单状态处理 + acceptOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "接单中,请稍后") + } + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + "接单成功".show(this) + //通知列表刷行数据 + TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TRANSFER_OK) + //TODO 还需要通知待确认列表 + this.finish() + } + else -> { + DialogHelper.dismissLoadingDialog() + "接单失败".show(this) + } + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt index 60e552a..3a12e7c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt @@ -4,6 +4,7 @@ import android.os.Handler import android.os.Looper import android.os.Message +import android.util.Log import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -11,6 +12,7 @@ import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.WorkOrderDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment @@ -19,7 +21,6 @@ class TodoOrderFragment : BaseFragment() { - private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter private lateinit var workOrderListViewModel: WorkOrderListViewModel private var dataBeans: MutableList = ArrayList() @@ -27,6 +28,18 @@ private var isRefresh = false private var isLoadMore = false + companion object { + private const val kTag = "TodoOrderFragment" + private var weakReferenceHandler: WeakReferenceHandler? = null + + fun sendEmptyMessage(what: Int) { + if (weakReferenceHandler == null) { + return + } + weakReferenceHandler!!.sendEmptyMessage(what) + } + } + override fun initLayoutView(): Int = R.layout.fragment_order_todo override fun initData() { @@ -55,7 +68,7 @@ dataBeans = dataRows!! } } - weakReferenceHandler.sendEmptyMessage(2022032901) + weakReferenceHandler!!.sendEmptyMessage(2022032901) } }) } @@ -86,39 +99,49 @@ override fun handleMessage(msg: Message) { super.handleMessage(msg) val fragment = reference.get()!! - if (msg.what == 2022032901) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.workOrderListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) - } else { - fragment.emptyView!!.hide() - fragment.workOrderListAdapter = - TodoWorkOrderListAdapter(fragment.requireContext(), fragment.dataBeans) - fragment.todoOrderView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter - fragment.workOrderListAdapter.setOnItemClickListener(object : - TodoWorkOrderListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId == "") { - "工单编号异常,无法查看详情".show(fragment.requireContext()) - return + when (msg.what) { + Constant.ORDER_TRANSFER_OK -> { + Log.d(kTag, "转单成功,更新列表") + fragment.isRefresh = true + fragment.pageIndex = 1 + fragment.obtainWorkOrderList(fragment.pageIndex) + } + 2022032901 -> { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (fragment.dataBeans.size == 0) { + fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) + } else { + fragment.emptyView!!.hide() + fragment.workOrderListAdapter = TodoWorkOrderListAdapter( + fragment.requireContext(), + fragment.dataBeans + ) + fragment.todoOrderView!!.layoutManager = + LinearLayoutManager(fragment.requireContext()) + fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter + fragment.workOrderListAdapter.setOnItemClickListener(object : + TodoWorkOrderListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = fragment.dataBeans[position].jobId.toString() + if (jobId == "") { + "工单编号异常,无法查看详情".show(fragment.requireContext()) + return + } + fragment.requireContext() + .navigatePageTo(WorkOrderDetailActivity::class.java, jobId) } - fragment.requireContext() - .navigatePageTo(WorkOrderDetailActivity::class.java, jobId) - } - override fun onOperationClicked(position: Int) { + override fun onOperationClicked(position: Int) { - } + } - override fun onNavigationButtonClicked(position: Int) { + override fun onNavigationButtonClicked(position: Int) { - } - }) + } + }) + } } } } diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AcceptOrderViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AcceptOrderViewModel.kt new file mode 100644 index 0000000..7af02ae --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/AcceptOrderViewModel.kt @@ -0,0 +1,17 @@ +package com.casic.app.smartwell.vm + +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class AcceptOrderViewModel : BaseViewModel() { + + fun acceptWorkOrder(id: Int) = launch({ + loadState.value = LoadState.Loading + RetrofitServiceManager.acceptWorkOrder(id) + loadState.value = LoadState.Success + }, { + loadState.value = LoadState.Fail + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index 38eb818..91e8410 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -25,6 +25,7 @@ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val ORDER_TRANSFER_OK = 21 const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 7cf9d3e..cd3b564 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -107,6 +107,16 @@ ): WorkOrderDetailModel /** + * 转单 + */ + @FormUrlEncoded + @POST("/job/getJob") + suspend fun acceptWorkOrder( + @Header("token") token: String, + @Field("id") id: Int + ): CommonResultModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5199e89..bfc49e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -103,6 +103,13 @@ } /** + * 接单 + */ + suspend fun acceptWorkOrder(id: Int): CommonResultModel { + return api.acceptWorkOrder(AuthenticationHelper.token!!, id) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt index 65c6b8e..d985854 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt @@ -5,18 +5,24 @@ import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.covertColor import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.view.fragment.TodoOrderFragment +import com.casic.app.smartwell.vm.AcceptOrderViewModel +import com.casic.app.smartwell.vm.WellDetailViewModel import com.casic.app.smartwell.vm.WorkOrderDetailViewModel import kotlinx.android.synthetic.main.activity_order_detail.* class WorkOrderDetailActivity : BaseActivity() { private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel + private lateinit var wellDetailViewModel: WellDetailViewModel + private lateinit var acceptOrderViewModel: AcceptOrderViewModel override fun initLayoutView(): Int = R.layout.activity_order_detail @@ -30,40 +36,61 @@ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId.toLong()) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { - val wellDetail = it.data!! - alarmTypeView.text = wellDetail.alarmContentName - wellCodeView.text = wellDetail.wellCode - wellNameView.text = wellDetail.wellName - wellTypeView.text = wellDetail.wellId.valueToType() -// wellStateView.text = wellDetail.bfztName - installDateView.text = wellDetail.createTime - val depth = wellDetail.deep.toString() + val orderDetail = it.data!! + alarmTypeView.text = orderDetail.alarmContentName + wellCodeView.text = orderDetail.wellCode + wellNameView.text = orderDetail.wellName + wellTypeView.text = orderDetail.wellId.valueToType() + + wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java) + val wellId = orderDetail.wellId.toString() + if (wellId == "") { + wellStateView.text = "状态未知" + } else { + wellDetailViewModel.obtainWellDetail(id = wellId) + wellDetailViewModel.detailModel.observe(this, { well -> + if (well.code == 200) { + val wellDetail = well.data!! + if (wellDetail.bfztName == "布防") { + wellStateView.setTextColor(R.color.greenTextColor.covertColor(this)) + } else { + wellStateView.setTextColor(R.color.redTextColor.covertColor(this)) + } + wellStateView.text = wellDetail.bfztName + } + }) + } + + installDateView.text = orderDetail.createTime + val depth = orderDetail.deep.toString() if (depth == "") { wellDepthView.text = resources.getString(R.string.unknown) } else { wellDepthView.text = depth } //绑定窨井位置 - val wellPosition = wellDetail.position.toString() + val wellPosition = orderDetail.position.toString() wellLocationView.text = wellPosition - //转单 - operationButton.setChangeAlphaWhenPress(true) - operationButton.setOnClickListener { - + //接单 + acceptOrderButton.setChangeAlphaWhenPress(true) + acceptOrderButton.setOnClickListener { + acceptOrderViewModel = + ViewModelProvider(this).get(AcceptOrderViewModel::class.java) + acceptOrderViewModel.acceptWorkOrder(id = orderDetail.id) } //导航 navigationButton.setChangeAlphaWhenPress(true) navigationButton.setOnClickListener { - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() + val lat = orderDetail.latGaode.toString() + val lng = orderDetail.lngGaode.toString() if (lat == "" || lng == "") { "窨井经纬度异常,无法开启导航".show(this) return@setOnClickListener } Poi( - wellDetail.position, + orderDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" ).showRouteOnMap(this) @@ -73,6 +100,7 @@ } override fun initEvent() { + //数据加载状态处理 workOrderDetailViewModel.loadState.observe(this, { when (it) { is LoadState.Loading -> { @@ -83,5 +111,26 @@ } } }) + + //接单状态处理 + acceptOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "接单中,请稍后") + } + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + "接单成功".show(this) + //通知列表刷行数据 + TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TRANSFER_OK) + //TODO 还需要通知待确认列表 + this.finish() + } + else -> { + DialogHelper.dismissLoadingDialog() + "接单失败".show(this) + } + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt index 60e552a..3a12e7c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt @@ -4,6 +4,7 @@ import android.os.Handler import android.os.Looper import android.os.Message +import android.util.Log import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -11,6 +12,7 @@ import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.WorkOrderDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment @@ -19,7 +21,6 @@ class TodoOrderFragment : BaseFragment() { - private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter private lateinit var workOrderListViewModel: WorkOrderListViewModel private var dataBeans: MutableList = ArrayList() @@ -27,6 +28,18 @@ private var isRefresh = false private var isLoadMore = false + companion object { + private const val kTag = "TodoOrderFragment" + private var weakReferenceHandler: WeakReferenceHandler? = null + + fun sendEmptyMessage(what: Int) { + if (weakReferenceHandler == null) { + return + } + weakReferenceHandler!!.sendEmptyMessage(what) + } + } + override fun initLayoutView(): Int = R.layout.fragment_order_todo override fun initData() { @@ -55,7 +68,7 @@ dataBeans = dataRows!! } } - weakReferenceHandler.sendEmptyMessage(2022032901) + weakReferenceHandler!!.sendEmptyMessage(2022032901) } }) } @@ -86,39 +99,49 @@ override fun handleMessage(msg: Message) { super.handleMessage(msg) val fragment = reference.get()!! - if (msg.what == 2022032901) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.workOrderListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) - } else { - fragment.emptyView!!.hide() - fragment.workOrderListAdapter = - TodoWorkOrderListAdapter(fragment.requireContext(), fragment.dataBeans) - fragment.todoOrderView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter - fragment.workOrderListAdapter.setOnItemClickListener(object : - TodoWorkOrderListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId == "") { - "工单编号异常,无法查看详情".show(fragment.requireContext()) - return + when (msg.what) { + Constant.ORDER_TRANSFER_OK -> { + Log.d(kTag, "转单成功,更新列表") + fragment.isRefresh = true + fragment.pageIndex = 1 + fragment.obtainWorkOrderList(fragment.pageIndex) + } + 2022032901 -> { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (fragment.dataBeans.size == 0) { + fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) + } else { + fragment.emptyView!!.hide() + fragment.workOrderListAdapter = TodoWorkOrderListAdapter( + fragment.requireContext(), + fragment.dataBeans + ) + fragment.todoOrderView!!.layoutManager = + LinearLayoutManager(fragment.requireContext()) + fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter + fragment.workOrderListAdapter.setOnItemClickListener(object : + TodoWorkOrderListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = fragment.dataBeans[position].jobId.toString() + if (jobId == "") { + "工单编号异常,无法查看详情".show(fragment.requireContext()) + return + } + fragment.requireContext() + .navigatePageTo(WorkOrderDetailActivity::class.java, jobId) } - fragment.requireContext() - .navigatePageTo(WorkOrderDetailActivity::class.java, jobId) - } - override fun onOperationClicked(position: Int) { + override fun onOperationClicked(position: Int) { - } + } - override fun onNavigationButtonClicked(position: Int) { + override fun onNavigationButtonClicked(position: Int) { - } - }) + } + }) + } } } } diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AcceptOrderViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AcceptOrderViewModel.kt new file mode 100644 index 0000000..7af02ae --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/AcceptOrderViewModel.kt @@ -0,0 +1,17 @@ +package com.casic.app.smartwell.vm + +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class AcceptOrderViewModel : BaseViewModel() { + + fun acceptWorkOrder(id: Int) = launch({ + loadState.value = LoadState.Loading + RetrofitServiceManager.acceptWorkOrder(id) + loadState.value = LoadState.Success + }, { + loadState.value = LoadState.Fail + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt index 201c46b..56a7af4 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt @@ -17,6 +17,6 @@ loadState.value = LoadState.Loading keyModel.value = RetrofitServiceManager.authenticate() }, { - Log.d(kTag, "loginOut: ${it.printStackTrace()}") + Log.d(kTag, "obtainPublicKey: ${it.printStackTrace()}") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index 38eb818..91e8410 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -25,6 +25,7 @@ const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val ORDER_TRANSFER_OK = 21 const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 7cf9d3e..cd3b564 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -107,6 +107,16 @@ ): WorkOrderDetailModel /** + * 转单 + */ + @FormUrlEncoded + @POST("/job/getJob") + suspend fun acceptWorkOrder( + @Header("token") token: String, + @Field("id") id: Int + ): CommonResultModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 5199e89..bfc49e8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -103,6 +103,13 @@ } /** + * 接单 + */ + suspend fun acceptWorkOrder(id: Int): CommonResultModel { + return api.acceptWorkOrder(AuthenticationHelper.token!!, id) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt index 65c6b8e..d985854 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt @@ -5,18 +5,24 @@ import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.covertColor import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.showRouteOnMap import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.view.fragment.TodoOrderFragment +import com.casic.app.smartwell.vm.AcceptOrderViewModel +import com.casic.app.smartwell.vm.WellDetailViewModel import com.casic.app.smartwell.vm.WorkOrderDetailViewModel import kotlinx.android.synthetic.main.activity_order_detail.* class WorkOrderDetailActivity : BaseActivity() { private lateinit var workOrderDetailViewModel: WorkOrderDetailViewModel + private lateinit var wellDetailViewModel: WellDetailViewModel + private lateinit var acceptOrderViewModel: AcceptOrderViewModel override fun initLayoutView(): Int = R.layout.activity_order_detail @@ -30,40 +36,61 @@ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId.toLong()) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { - val wellDetail = it.data!! - alarmTypeView.text = wellDetail.alarmContentName - wellCodeView.text = wellDetail.wellCode - wellNameView.text = wellDetail.wellName - wellTypeView.text = wellDetail.wellId.valueToType() -// wellStateView.text = wellDetail.bfztName - installDateView.text = wellDetail.createTime - val depth = wellDetail.deep.toString() + val orderDetail = it.data!! + alarmTypeView.text = orderDetail.alarmContentName + wellCodeView.text = orderDetail.wellCode + wellNameView.text = orderDetail.wellName + wellTypeView.text = orderDetail.wellId.valueToType() + + wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java) + val wellId = orderDetail.wellId.toString() + if (wellId == "") { + wellStateView.text = "状态未知" + } else { + wellDetailViewModel.obtainWellDetail(id = wellId) + wellDetailViewModel.detailModel.observe(this, { well -> + if (well.code == 200) { + val wellDetail = well.data!! + if (wellDetail.bfztName == "布防") { + wellStateView.setTextColor(R.color.greenTextColor.covertColor(this)) + } else { + wellStateView.setTextColor(R.color.redTextColor.covertColor(this)) + } + wellStateView.text = wellDetail.bfztName + } + }) + } + + installDateView.text = orderDetail.createTime + val depth = orderDetail.deep.toString() if (depth == "") { wellDepthView.text = resources.getString(R.string.unknown) } else { wellDepthView.text = depth } //绑定窨井位置 - val wellPosition = wellDetail.position.toString() + val wellPosition = orderDetail.position.toString() wellLocationView.text = wellPosition - //转单 - operationButton.setChangeAlphaWhenPress(true) - operationButton.setOnClickListener { - + //接单 + acceptOrderButton.setChangeAlphaWhenPress(true) + acceptOrderButton.setOnClickListener { + acceptOrderViewModel = + ViewModelProvider(this).get(AcceptOrderViewModel::class.java) + acceptOrderViewModel.acceptWorkOrder(id = orderDetail.id) } //导航 navigationButton.setChangeAlphaWhenPress(true) navigationButton.setOnClickListener { - val lat = wellDetail.latGaode.toString() - val lng = wellDetail.lngGaode.toString() + val lat = orderDetail.latGaode.toString() + val lng = orderDetail.lngGaode.toString() if (lat == "" || lng == "") { "窨井经纬度异常,无法开启导航".show(this) return@setOnClickListener } Poi( - wellDetail.position, + orderDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" ).showRouteOnMap(this) @@ -73,6 +100,7 @@ } override fun initEvent() { + //数据加载状态处理 workOrderDetailViewModel.loadState.observe(this, { when (it) { is LoadState.Loading -> { @@ -83,5 +111,26 @@ } } }) + + //接单状态处理 + acceptOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "接单中,请稍后") + } + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + "接单成功".show(this) + //通知列表刷行数据 + TodoOrderFragment.sendEmptyMessage(Constant.ORDER_TRANSFER_OK) + //TODO 还需要通知待确认列表 + this.finish() + } + else -> { + DialogHelper.dismissLoadingDialog() + "接单失败".show(this) + } + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt index 60e552a..3a12e7c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/fragment/TodoOrderFragment.kt @@ -4,6 +4,7 @@ import android.os.Handler import android.os.Looper import android.os.Message +import android.util.Log import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.app.smartwell.R @@ -11,6 +12,7 @@ import com.casic.app.smartwell.extensions.navigatePageTo import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.model.WorkOrderListModel +import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.view.WorkOrderDetailActivity import com.casic.app.smartwell.vm.WorkOrderListViewModel import com.pengxh.app.multilib.base.BaseFragment @@ -19,7 +21,6 @@ class TodoOrderFragment : BaseFragment() { - private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var workOrderListAdapter: TodoWorkOrderListAdapter private lateinit var workOrderListViewModel: WorkOrderListViewModel private var dataBeans: MutableList = ArrayList() @@ -27,6 +28,18 @@ private var isRefresh = false private var isLoadMore = false + companion object { + private const val kTag = "TodoOrderFragment" + private var weakReferenceHandler: WeakReferenceHandler? = null + + fun sendEmptyMessage(what: Int) { + if (weakReferenceHandler == null) { + return + } + weakReferenceHandler!!.sendEmptyMessage(what) + } + } + override fun initLayoutView(): Int = R.layout.fragment_order_todo override fun initData() { @@ -55,7 +68,7 @@ dataBeans = dataRows!! } } - weakReferenceHandler.sendEmptyMessage(2022032901) + weakReferenceHandler!!.sendEmptyMessage(2022032901) } }) } @@ -86,39 +99,49 @@ override fun handleMessage(msg: Message) { super.handleMessage(msg) val fragment = reference.get()!! - if (msg.what == 2022032901) { - if (fragment.isRefresh || fragment.isLoadMore) { - fragment.workOrderListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (fragment.dataBeans.size == 0) { - fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) - } else { - fragment.emptyView!!.hide() - fragment.workOrderListAdapter = - TodoWorkOrderListAdapter(fragment.requireContext(), fragment.dataBeans) - fragment.todoOrderView!!.layoutManager = - LinearLayoutManager(fragment.requireContext()) - fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter - fragment.workOrderListAdapter.setOnItemClickListener(object : - TodoWorkOrderListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val jobId = fragment.dataBeans[position].jobId.toString() - if (jobId == "") { - "工单编号异常,无法查看详情".show(fragment.requireContext()) - return + when (msg.what) { + Constant.ORDER_TRANSFER_OK -> { + Log.d(kTag, "转单成功,更新列表") + fragment.isRefresh = true + fragment.pageIndex = 1 + fragment.obtainWorkOrderList(fragment.pageIndex) + } + 2022032901 -> { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.workOrderListAdapter.notifyDataSetChanged() + } else { //首次加载数据 + if (fragment.dataBeans.size == 0) { + fragment.emptyView!!.show("抱歉,无法查询到相关记录", null) + } else { + fragment.emptyView!!.hide() + fragment.workOrderListAdapter = TodoWorkOrderListAdapter( + fragment.requireContext(), + fragment.dataBeans + ) + fragment.todoOrderView!!.layoutManager = + LinearLayoutManager(fragment.requireContext()) + fragment.todoOrderView!!.adapter = fragment.workOrderListAdapter + fragment.workOrderListAdapter.setOnItemClickListener(object : + TodoWorkOrderListAdapter.OnItemClickListener { + override fun onClicked(position: Int) { + val jobId = fragment.dataBeans[position].jobId.toString() + if (jobId == "") { + "工单编号异常,无法查看详情".show(fragment.requireContext()) + return + } + fragment.requireContext() + .navigatePageTo(WorkOrderDetailActivity::class.java, jobId) } - fragment.requireContext() - .navigatePageTo(WorkOrderDetailActivity::class.java, jobId) - } - override fun onOperationClicked(position: Int) { + override fun onOperationClicked(position: Int) { - } + } - override fun onNavigationButtonClicked(position: Int) { + override fun onNavigationButtonClicked(position: Int) { - } - }) + } + }) + } } } } diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AcceptOrderViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AcceptOrderViewModel.kt new file mode 100644 index 0000000..7af02ae --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/AcceptOrderViewModel.kt @@ -0,0 +1,17 @@ +package com.casic.app.smartwell.vm + +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.utils.LoadState +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class AcceptOrderViewModel : BaseViewModel() { + + fun acceptWorkOrder(id: Int) = launch({ + loadState.value = LoadState.Loading + RetrofitServiceManager.acceptWorkOrder(id) + loadState.value = LoadState.Success + }, { + loadState.value = LoadState.Fail + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt index 201c46b..56a7af4 100644 --- a/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/vm/AuthenticateViewModel.kt @@ -17,6 +17,6 @@ loadState.value = LoadState.Loading keyModel.value = RetrofitServiceManager.authenticate() }, { - Log.d(kTag, "loginOut: ${it.printStackTrace()}") + Log.d(kTag, "obtainPublicKey: ${it.printStackTrace()}") }) } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_order_detail.xml b/app/src/main/res/layout/activity_order_detail.xml index ba0b02b..30bec70 100644 --- a/app/src/main/res/layout/activity_order_detail.xml +++ b/app/src/main/res/layout/activity_order_detail.xml @@ -49,8 +49,7 @@ android:id="@+id/wellCodeView" style="@style/textViewStyle" android:layout_alignParentEnd="true" - android:text="@string/unknown" - android:textColor="@color/mainThemeColor" /> + android:text="@string/unknown" /> @@ -168,12 +167,12 @@ android:padding="@dimen/dp_20"> + android:text="接单" />