diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f3b368d..95f17d4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -74,6 +74,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f3b368d..95f17d4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -74,6 +74,7 @@
+
diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
index 60f8761..66b419a 100644
--- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
@@ -171,7 +171,7 @@
"能力列表" -> requireContext().navigatePageTo()
"计量培训" -> requireContext().navigatePageTo()
"合同发票" -> requireContext().navigatePageTo()
-// "业务统计" -> requireContext().navigatePageTo()
+ "业务统计" -> requireContext().navigatePageTo()
"客户列表" -> requireContext().navigatePageTo()
"外场检测" -> requireContext().navigatePageTo()
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f3b368d..95f17d4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -74,6 +74,7 @@
+
diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
index 60f8761..66b419a 100644
--- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
@@ -171,7 +171,7 @@
"能力列表" -> requireContext().navigatePageTo()
"计量培训" -> requireContext().navigatePageTo()
"合同发票" -> requireContext().navigatePageTo()
-// "业务统计" -> requireContext().navigatePageTo()
+ "业务统计" -> requireContext().navigatePageTo()
"客户列表" -> requireContext().navigatePageTo()
"外场检测" -> requireContext().navigatePageTo()
}
diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
index 1b66d02..a8d54f5 100644
--- a/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
+++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
@@ -54,14 +54,18 @@
public static class RowsModel {
private String createTime;
+ private String customerAddress;
+ private String customerId;
private String customerName;
private String customerNo;
private String customerPhone;
private String deliverer;
+ private String delivererTel;
private String id;
private String isUrgent;
private String orderCode;
private String orderTime;
+ private String planDeliverTime;
private String remark;
private String requireOverTime;
private String sampleCount;
@@ -76,6 +80,22 @@
this.createTime = createTime;
}
+ public String getCustomerAddress() {
+ return customerAddress;
+ }
+
+ public void setCustomerAddress(String customerAddress) {
+ this.customerAddress = customerAddress;
+ }
+
+ public String getCustomerId() {
+ return customerId;
+ }
+
+ public void setCustomerId(String customerId) {
+ this.customerId = customerId;
+ }
+
public String getCustomerName() {
return customerName;
}
@@ -108,6 +128,14 @@
this.deliverer = deliverer;
}
+ public String getDelivererTel() {
+ return delivererTel;
+ }
+
+ public void setDelivererTel(String delivererTel) {
+ this.delivererTel = delivererTel;
+ }
+
public String getId() {
return id;
}
@@ -140,6 +168,14 @@
this.orderTime = orderTime;
}
+ public String getPlanDeliverTime() {
+ return planDeliverTime;
+ }
+
+ public void setPlanDeliverTime(String planDeliverTime) {
+ this.planDeliverTime = planDeliverTime;
+ }
+
public String getRemark() {
return remark;
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f3b368d..95f17d4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -74,6 +74,7 @@
+
diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
index 60f8761..66b419a 100644
--- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
@@ -171,7 +171,7 @@
"能力列表" -> requireContext().navigatePageTo()
"计量培训" -> requireContext().navigatePageTo()
"合同发票" -> requireContext().navigatePageTo()
-// "业务统计" -> requireContext().navigatePageTo()
+ "业务统计" -> requireContext().navigatePageTo()
"客户列表" -> requireContext().navigatePageTo()
"外场检测" -> requireContext().navigatePageTo()
}
diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
index 1b66d02..a8d54f5 100644
--- a/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
+++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
@@ -54,14 +54,18 @@
public static class RowsModel {
private String createTime;
+ private String customerAddress;
+ private String customerId;
private String customerName;
private String customerNo;
private String customerPhone;
private String deliverer;
+ private String delivererTel;
private String id;
private String isUrgent;
private String orderCode;
private String orderTime;
+ private String planDeliverTime;
private String remark;
private String requireOverTime;
private String sampleCount;
@@ -76,6 +80,22 @@
this.createTime = createTime;
}
+ public String getCustomerAddress() {
+ return customerAddress;
+ }
+
+ public void setCustomerAddress(String customerAddress) {
+ this.customerAddress = customerAddress;
+ }
+
+ public String getCustomerId() {
+ return customerId;
+ }
+
+ public void setCustomerId(String customerId) {
+ this.customerId = customerId;
+ }
+
public String getCustomerName() {
return customerName;
}
@@ -108,6 +128,14 @@
this.deliverer = deliverer;
}
+ public String getDelivererTel() {
+ return delivererTel;
+ }
+
+ public void setDelivererTel(String delivererTel) {
+ this.delivererTel = delivererTel;
+ }
+
public String getId() {
return id;
}
@@ -140,6 +168,14 @@
this.orderTime = orderTime;
}
+ public String getPlanDeliverTime() {
+ return planDeliverTime;
+ }
+
+ public void setPlanDeliverTime(String planDeliverTime) {
+ this.planDeliverTime = planDeliverTime;
+ }
+
public String getRemark() {
return remark;
}
diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
index 3b9791a..c4eb16d 100644
--- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
@@ -276,6 +276,18 @@
): String
/**
+ * 获取到期设备数
+ */
+ @GET("/meter/assets/remindQuantity")
+ suspend fun getRemindEquipmentCount(@Header("token") token: String): String
+
+ /**
+ * 获取到期仪器数
+ */
+ @GET("/meter/standard/remindQuantity")
+ suspend fun getRemindDeviceCount(@Header("token") token: String): String
+
+ /**
* 获取检定规程列表
*/
@POST("/meter/standard/regulation/listPage")
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f3b368d..95f17d4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -74,6 +74,7 @@
+
diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
index 60f8761..66b419a 100644
--- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
@@ -171,7 +171,7 @@
"能力列表" -> requireContext().navigatePageTo()
"计量培训" -> requireContext().navigatePageTo()
"合同发票" -> requireContext().navigatePageTo()
-// "业务统计" -> requireContext().navigatePageTo()
+ "业务统计" -> requireContext().navigatePageTo()
"客户列表" -> requireContext().navigatePageTo()
"外场检测" -> requireContext().navigatePageTo()
}
diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
index 1b66d02..a8d54f5 100644
--- a/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
+++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
@@ -54,14 +54,18 @@
public static class RowsModel {
private String createTime;
+ private String customerAddress;
+ private String customerId;
private String customerName;
private String customerNo;
private String customerPhone;
private String deliverer;
+ private String delivererTel;
private String id;
private String isUrgent;
private String orderCode;
private String orderTime;
+ private String planDeliverTime;
private String remark;
private String requireOverTime;
private String sampleCount;
@@ -76,6 +80,22 @@
this.createTime = createTime;
}
+ public String getCustomerAddress() {
+ return customerAddress;
+ }
+
+ public void setCustomerAddress(String customerAddress) {
+ this.customerAddress = customerAddress;
+ }
+
+ public String getCustomerId() {
+ return customerId;
+ }
+
+ public void setCustomerId(String customerId) {
+ this.customerId = customerId;
+ }
+
public String getCustomerName() {
return customerName;
}
@@ -108,6 +128,14 @@
this.deliverer = deliverer;
}
+ public String getDelivererTel() {
+ return delivererTel;
+ }
+
+ public void setDelivererTel(String delivererTel) {
+ this.delivererTel = delivererTel;
+ }
+
public String getId() {
return id;
}
@@ -140,6 +168,14 @@
this.orderTime = orderTime;
}
+ public String getPlanDeliverTime() {
+ return planDeliverTime;
+ }
+
+ public void setPlanDeliverTime(String planDeliverTime) {
+ this.planDeliverTime = planDeliverTime;
+ }
+
public String getRemark() {
return remark;
}
diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
index 3b9791a..c4eb16d 100644
--- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
@@ -276,6 +276,18 @@
): String
/**
+ * 获取到期设备数
+ */
+ @GET("/meter/assets/remindQuantity")
+ suspend fun getRemindEquipmentCount(@Header("token") token: String): String
+
+ /**
+ * 获取到期仪器数
+ */
+ @GET("/meter/standard/remindQuantity")
+ suspend fun getRemindDeviceCount(@Header("token") token: String): String
+
+ /**
* 获取检定规程列表
*/
@POST("/meter/standard/regulation/listPage")
diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
index 996d452..8b385fa 100644
--- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
@@ -599,6 +599,20 @@
}
/**
+ * 获取到期设备数
+ */
+ suspend fun getRemindEquipmentCount(): String {
+ return api.getRemindEquipmentCount(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取到期仪器数
+ */
+ suspend fun getRemindDeviceCount(): String {
+ return api.getRemindDeviceCount(AuthenticationHelper.token!!)
+ }
+
+ /**
* 获取检定规程列表
*/
suspend fun getVerifyProcedureList(id: String): String {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f3b368d..95f17d4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -74,6 +74,7 @@
+
diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
index 60f8761..66b419a 100644
--- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
@@ -171,7 +171,7 @@
"能力列表" -> requireContext().navigatePageTo()
"计量培训" -> requireContext().navigatePageTo()
"合同发票" -> requireContext().navigatePageTo()
-// "业务统计" -> requireContext().navigatePageTo()
+ "业务统计" -> requireContext().navigatePageTo()
"客户列表" -> requireContext().navigatePageTo()
"外场检测" -> requireContext().navigatePageTo()
}
diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
index 1b66d02..a8d54f5 100644
--- a/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
+++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
@@ -54,14 +54,18 @@
public static class RowsModel {
private String createTime;
+ private String customerAddress;
+ private String customerId;
private String customerName;
private String customerNo;
private String customerPhone;
private String deliverer;
+ private String delivererTel;
private String id;
private String isUrgent;
private String orderCode;
private String orderTime;
+ private String planDeliverTime;
private String remark;
private String requireOverTime;
private String sampleCount;
@@ -76,6 +80,22 @@
this.createTime = createTime;
}
+ public String getCustomerAddress() {
+ return customerAddress;
+ }
+
+ public void setCustomerAddress(String customerAddress) {
+ this.customerAddress = customerAddress;
+ }
+
+ public String getCustomerId() {
+ return customerId;
+ }
+
+ public void setCustomerId(String customerId) {
+ this.customerId = customerId;
+ }
+
public String getCustomerName() {
return customerName;
}
@@ -108,6 +128,14 @@
this.deliverer = deliverer;
}
+ public String getDelivererTel() {
+ return delivererTel;
+ }
+
+ public void setDelivererTel(String delivererTel) {
+ this.delivererTel = delivererTel;
+ }
+
public String getId() {
return id;
}
@@ -140,6 +168,14 @@
this.orderTime = orderTime;
}
+ public String getPlanDeliverTime() {
+ return planDeliverTime;
+ }
+
+ public void setPlanDeliverTime(String planDeliverTime) {
+ this.planDeliverTime = planDeliverTime;
+ }
+
public String getRemark() {
return remark;
}
diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
index 3b9791a..c4eb16d 100644
--- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
@@ -276,6 +276,18 @@
): String
/**
+ * 获取到期设备数
+ */
+ @GET("/meter/assets/remindQuantity")
+ suspend fun getRemindEquipmentCount(@Header("token") token: String): String
+
+ /**
+ * 获取到期仪器数
+ */
+ @GET("/meter/standard/remindQuantity")
+ suspend fun getRemindDeviceCount(@Header("token") token: String): String
+
+ /**
* 获取检定规程列表
*/
@POST("/meter/standard/regulation/listPage")
diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
index 996d452..8b385fa 100644
--- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
@@ -599,6 +599,20 @@
}
/**
+ * 获取到期设备数
+ */
+ suspend fun getRemindEquipmentCount(): String {
+ return api.getRemindEquipmentCount(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取到期仪器数
+ */
+ suspend fun getRemindDeviceCount(): String {
+ return api.getRemindDeviceCount(AuthenticationHelper.token!!)
+ }
+
+ /**
* 获取检定规程列表
*/
suspend fun getVerifyProcedureList(id: String): String {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt
new file mode 100644
index 0000000..9fa4040
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt
@@ -0,0 +1,257 @@
+package com.casic.xz.meterage.view.home
+
+import android.content.Context
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.base.ApplicationBaseActivity
+import com.casic.xz.meterage.callback.DateSelectedCallback
+import com.casic.xz.meterage.extensions.*
+import com.casic.xz.meterage.model.EntrustListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.vm.EntrustViewModel
+import com.casic.xz.meterage.vm.EquipmentViewModel
+import com.github.gzuliyujiang.wheelpicker.entity.DateEntity
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_business_statistics.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
+
+class BusinessStatisticsActivity : ApplicationBaseActivity() {
+
+ private val context: Context = this@BusinessStatisticsActivity
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var equipmentViewModel: EquipmentViewModel
+ private lateinit var entrustViewModel: EntrustViewModel
+ private lateinit var entrustAdapter: NormalRecyclerAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initLayoutView(): Int = R.layout.activity_business_statistics
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "业务统计"
+ }
+
+ override fun initData() {
+ equipmentViewModel = ViewModelProvider(this)[EquipmentViewModel::class.java]
+ equipmentViewModel.remindEquipmentCount.observe(this) {
+ equipOvertimeCountView.text = it.toString()
+ }
+ equipmentViewModel.remindDeviceCount.observe(this) {
+ deviceOvertimeCountView.text = it.toString()
+ }
+
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java]
+ entrustViewModel.entrustList.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ entrustLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ entrustLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023041401)
+ }
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ equipmentViewModel.getRemindEquipmentCount()
+ equipmentViewModel.getRemindDeviceCount()
+
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ private fun getEntrustListByPage() {
+ val startDate = if (startDateView.text.toString() == "开始日期") {
+ ""
+ } else {
+ "${startDateView.text} 00:00:00"
+ }
+
+ val endDate = if (endDateView.text.toString() == "结束日期") {
+ ""
+ } else {
+ "${endDateView.text} 00:00:00"
+ }
+
+ entrustViewModel.getEntrustList(
+ "",
+ "",
+ "",
+ "",
+ startDate,
+ endDate,
+ "",
+ "",
+ arrayOf(),
+ pageIndex
+ )
+ }
+
+ override fun observeRequestState() {
+ entrustViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ equipOvertimeLayout.setOnClickListener {
+
+ }
+
+ deviceOvertimeLayout.setOnClickListener {
+
+ }
+
+ workTimeLayout.setOnClickListener {
+
+ }
+
+ deptDataLayout.setOnClickListener {
+
+ }
+
+ startDateView.setOnClickListener {
+ showDatePicker(DateEntity.target(1949, 10, 1), object : DateSelectedCallback {
+ override fun onDateSelected(date: String) {
+ startDateView.text = date
+ }
+ })
+ }
+
+ endDateView.setOnClickListener {
+ showDatePicker(DateEntity.target(1949, 10, 1), object : DateSelectedCallback {
+ override fun onDateSelected(date: String) {
+ endDateView.text = date
+ }
+ })
+ }
+
+ searchButton.setOnClickListener {
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ entrustLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ entrustLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getEntrustListByPage()
+ }
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023041401 -> {
+ if (isRefresh || isLoadMore) {
+ entrustAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无委托任务数据") {
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+ } else {
+ emptyView!!.hide()
+ entrustAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_entrust_bs_rv_l, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder,
+ position: Int,
+ item: EntrustListModel.DataModel.RowsModel
+ ) {
+ //未接收:1;已接收:2;已取消:3;检测完成:4
+ val color = when (item.status) {
+ "1" -> R.color.red.convertColor(context)
+ "2" -> R.color.blue.convertColor(context)
+ "3" -> R.color.gray.convertColor(context)
+ else -> R.color.green.convertColor(context)
+ }
+ viewHolder.setBackgroundColor(R.id.entrustStateView, color)
+
+ if (item.requireOverTime.isEarlierThenCurrent()) {
+ viewHolder.setTextColor(
+ R.id.requireOverTimeView, R.color.red.convertColor(context)
+ )
+ } else {
+ viewHolder.setTextColor(
+ R.id.requireOverTimeView,
+ R.color.gray.convertColor(context)
+ )
+ }
+
+ viewHolder.setText(R.id.customerNameView, item.customerName)
+ .setText(R.id.entrustStateView, item.statusName)
+ .setText(R.id.entrustCodeView, "委托书编号:${item.orderCode}")
+ .setText(
+ R.id.createTimeView,
+ "委托创建时间:${item.createTime.formatToYearMonthDay()}"
+ ).setText(
+ R.id.planDeliverTimeView,
+ "预计送达时间:${item.planDeliverTime.formatToYearMonthDay()}"
+ )
+ .setText(
+ R.id.requireOverTimeView,
+ "要求检完时间:${item.requireOverTime.formatToYearMonthDay()}"
+ )
+ }
+ }
+ entrustRecyclerView.adapter = entrustAdapter
+ entrustAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: EntrustListModel.DataModel.RowsModel
+ ) {
+ navigatePageTo(t.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f3b368d..95f17d4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -74,6 +74,7 @@
+
diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
index 60f8761..66b419a 100644
--- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
@@ -171,7 +171,7 @@
"能力列表" -> requireContext().navigatePageTo()
"计量培训" -> requireContext().navigatePageTo()
"合同发票" -> requireContext().navigatePageTo()
-// "业务统计" -> requireContext().navigatePageTo()
+ "业务统计" -> requireContext().navigatePageTo()
"客户列表" -> requireContext().navigatePageTo()
"外场检测" -> requireContext().navigatePageTo()
}
diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
index 1b66d02..a8d54f5 100644
--- a/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
+++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
@@ -54,14 +54,18 @@
public static class RowsModel {
private String createTime;
+ private String customerAddress;
+ private String customerId;
private String customerName;
private String customerNo;
private String customerPhone;
private String deliverer;
+ private String delivererTel;
private String id;
private String isUrgent;
private String orderCode;
private String orderTime;
+ private String planDeliverTime;
private String remark;
private String requireOverTime;
private String sampleCount;
@@ -76,6 +80,22 @@
this.createTime = createTime;
}
+ public String getCustomerAddress() {
+ return customerAddress;
+ }
+
+ public void setCustomerAddress(String customerAddress) {
+ this.customerAddress = customerAddress;
+ }
+
+ public String getCustomerId() {
+ return customerId;
+ }
+
+ public void setCustomerId(String customerId) {
+ this.customerId = customerId;
+ }
+
public String getCustomerName() {
return customerName;
}
@@ -108,6 +128,14 @@
this.deliverer = deliverer;
}
+ public String getDelivererTel() {
+ return delivererTel;
+ }
+
+ public void setDelivererTel(String delivererTel) {
+ this.delivererTel = delivererTel;
+ }
+
public String getId() {
return id;
}
@@ -140,6 +168,14 @@
this.orderTime = orderTime;
}
+ public String getPlanDeliverTime() {
+ return planDeliverTime;
+ }
+
+ public void setPlanDeliverTime(String planDeliverTime) {
+ this.planDeliverTime = planDeliverTime;
+ }
+
public String getRemark() {
return remark;
}
diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
index 3b9791a..c4eb16d 100644
--- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
@@ -276,6 +276,18 @@
): String
/**
+ * 获取到期设备数
+ */
+ @GET("/meter/assets/remindQuantity")
+ suspend fun getRemindEquipmentCount(@Header("token") token: String): String
+
+ /**
+ * 获取到期仪器数
+ */
+ @GET("/meter/standard/remindQuantity")
+ suspend fun getRemindDeviceCount(@Header("token") token: String): String
+
+ /**
* 获取检定规程列表
*/
@POST("/meter/standard/regulation/listPage")
diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
index 996d452..8b385fa 100644
--- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
@@ -599,6 +599,20 @@
}
/**
+ * 获取到期设备数
+ */
+ suspend fun getRemindEquipmentCount(): String {
+ return api.getRemindEquipmentCount(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取到期仪器数
+ */
+ suspend fun getRemindDeviceCount(): String {
+ return api.getRemindDeviceCount(AuthenticationHelper.token!!)
+ }
+
+ /**
* 获取检定规程列表
*/
suspend fun getVerifyProcedureList(id: String): String {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt
new file mode 100644
index 0000000..9fa4040
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt
@@ -0,0 +1,257 @@
+package com.casic.xz.meterage.view.home
+
+import android.content.Context
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.base.ApplicationBaseActivity
+import com.casic.xz.meterage.callback.DateSelectedCallback
+import com.casic.xz.meterage.extensions.*
+import com.casic.xz.meterage.model.EntrustListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.vm.EntrustViewModel
+import com.casic.xz.meterage.vm.EquipmentViewModel
+import com.github.gzuliyujiang.wheelpicker.entity.DateEntity
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_business_statistics.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
+
+class BusinessStatisticsActivity : ApplicationBaseActivity() {
+
+ private val context: Context = this@BusinessStatisticsActivity
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var equipmentViewModel: EquipmentViewModel
+ private lateinit var entrustViewModel: EntrustViewModel
+ private lateinit var entrustAdapter: NormalRecyclerAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initLayoutView(): Int = R.layout.activity_business_statistics
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "业务统计"
+ }
+
+ override fun initData() {
+ equipmentViewModel = ViewModelProvider(this)[EquipmentViewModel::class.java]
+ equipmentViewModel.remindEquipmentCount.observe(this) {
+ equipOvertimeCountView.text = it.toString()
+ }
+ equipmentViewModel.remindDeviceCount.observe(this) {
+ deviceOvertimeCountView.text = it.toString()
+ }
+
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java]
+ entrustViewModel.entrustList.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ entrustLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ entrustLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023041401)
+ }
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ equipmentViewModel.getRemindEquipmentCount()
+ equipmentViewModel.getRemindDeviceCount()
+
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ private fun getEntrustListByPage() {
+ val startDate = if (startDateView.text.toString() == "开始日期") {
+ ""
+ } else {
+ "${startDateView.text} 00:00:00"
+ }
+
+ val endDate = if (endDateView.text.toString() == "结束日期") {
+ ""
+ } else {
+ "${endDateView.text} 00:00:00"
+ }
+
+ entrustViewModel.getEntrustList(
+ "",
+ "",
+ "",
+ "",
+ startDate,
+ endDate,
+ "",
+ "",
+ arrayOf(),
+ pageIndex
+ )
+ }
+
+ override fun observeRequestState() {
+ entrustViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ equipOvertimeLayout.setOnClickListener {
+
+ }
+
+ deviceOvertimeLayout.setOnClickListener {
+
+ }
+
+ workTimeLayout.setOnClickListener {
+
+ }
+
+ deptDataLayout.setOnClickListener {
+
+ }
+
+ startDateView.setOnClickListener {
+ showDatePicker(DateEntity.target(1949, 10, 1), object : DateSelectedCallback {
+ override fun onDateSelected(date: String) {
+ startDateView.text = date
+ }
+ })
+ }
+
+ endDateView.setOnClickListener {
+ showDatePicker(DateEntity.target(1949, 10, 1), object : DateSelectedCallback {
+ override fun onDateSelected(date: String) {
+ endDateView.text = date
+ }
+ })
+ }
+
+ searchButton.setOnClickListener {
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ entrustLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ entrustLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getEntrustListByPage()
+ }
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023041401 -> {
+ if (isRefresh || isLoadMore) {
+ entrustAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无委托任务数据") {
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+ } else {
+ emptyView!!.hide()
+ entrustAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_entrust_bs_rv_l, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder,
+ position: Int,
+ item: EntrustListModel.DataModel.RowsModel
+ ) {
+ //未接收:1;已接收:2;已取消:3;检测完成:4
+ val color = when (item.status) {
+ "1" -> R.color.red.convertColor(context)
+ "2" -> R.color.blue.convertColor(context)
+ "3" -> R.color.gray.convertColor(context)
+ else -> R.color.green.convertColor(context)
+ }
+ viewHolder.setBackgroundColor(R.id.entrustStateView, color)
+
+ if (item.requireOverTime.isEarlierThenCurrent()) {
+ viewHolder.setTextColor(
+ R.id.requireOverTimeView, R.color.red.convertColor(context)
+ )
+ } else {
+ viewHolder.setTextColor(
+ R.id.requireOverTimeView,
+ R.color.gray.convertColor(context)
+ )
+ }
+
+ viewHolder.setText(R.id.customerNameView, item.customerName)
+ .setText(R.id.entrustStateView, item.statusName)
+ .setText(R.id.entrustCodeView, "委托书编号:${item.orderCode}")
+ .setText(
+ R.id.createTimeView,
+ "委托创建时间:${item.createTime.formatToYearMonthDay()}"
+ ).setText(
+ R.id.planDeliverTimeView,
+ "预计送达时间:${item.planDeliverTime.formatToYearMonthDay()}"
+ )
+ .setText(
+ R.id.requireOverTimeView,
+ "要求检完时间:${item.requireOverTime.formatToYearMonthDay()}"
+ )
+ }
+ }
+ entrustRecyclerView.adapter = entrustAdapter
+ entrustAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: EntrustListModel.DataModel.RowsModel
+ ) {
+ navigatePageTo(t.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt
index c7a2e22..076ac4c 100644
--- a/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt
+++ b/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt
@@ -12,6 +12,7 @@
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.vm.BaseViewModel
import com.pengxh.kt.lite.vm.LoadState
+import org.json.JSONObject
/**
* 装备、装置相关 VM
@@ -26,6 +27,8 @@
val supportEquipmentList = MutableLiveData()
val stateChangeResult = MutableLiveData()
val usageRecordResult = MutableLiveData()
+ val remindEquipmentCount = MutableLiveData()
+ val remindDeviceCount = MutableLiveData()
fun getEquipmentList(
equipmentNo: String,
@@ -211,4 +214,34 @@
it.cause.toString().show(BaseApplication.get())
it.printStackTrace()
})
+
+ fun getRemindEquipmentCount() = launch({
+ val response = RetrofitServiceManager.getRemindEquipmentCount()
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ remindEquipmentCount.value = JSONObject(response)
+ .getJSONObject("data")
+ .getInt("remindQuantity")
+ } else {
+ response.toErrorMessage().show(BaseApplication.get())
+ }
+ }, {
+ it.cause.toString().show(BaseApplication.get())
+ it.printStackTrace()
+ })
+
+ fun getRemindDeviceCount() = launch({
+ val response = RetrofitServiceManager.getRemindDeviceCount()
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ remindDeviceCount.value = JSONObject(response)
+ .getJSONObject("data")
+ .getInt("remindQuantity")
+ } else {
+ response.toErrorMessage().show(BaseApplication.get())
+ }
+ }, {
+ it.cause.toString().show(BaseApplication.get())
+ it.printStackTrace()
+ })
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f3b368d..95f17d4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -74,6 +74,7 @@
+
diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
index 60f8761..66b419a 100644
--- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
@@ -171,7 +171,7 @@
"能力列表" -> requireContext().navigatePageTo()
"计量培训" -> requireContext().navigatePageTo()
"合同发票" -> requireContext().navigatePageTo()
-// "业务统计" -> requireContext().navigatePageTo()
+ "业务统计" -> requireContext().navigatePageTo()
"客户列表" -> requireContext().navigatePageTo()
"外场检测" -> requireContext().navigatePageTo()
}
diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
index 1b66d02..a8d54f5 100644
--- a/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
+++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
@@ -54,14 +54,18 @@
public static class RowsModel {
private String createTime;
+ private String customerAddress;
+ private String customerId;
private String customerName;
private String customerNo;
private String customerPhone;
private String deliverer;
+ private String delivererTel;
private String id;
private String isUrgent;
private String orderCode;
private String orderTime;
+ private String planDeliverTime;
private String remark;
private String requireOverTime;
private String sampleCount;
@@ -76,6 +80,22 @@
this.createTime = createTime;
}
+ public String getCustomerAddress() {
+ return customerAddress;
+ }
+
+ public void setCustomerAddress(String customerAddress) {
+ this.customerAddress = customerAddress;
+ }
+
+ public String getCustomerId() {
+ return customerId;
+ }
+
+ public void setCustomerId(String customerId) {
+ this.customerId = customerId;
+ }
+
public String getCustomerName() {
return customerName;
}
@@ -108,6 +128,14 @@
this.deliverer = deliverer;
}
+ public String getDelivererTel() {
+ return delivererTel;
+ }
+
+ public void setDelivererTel(String delivererTel) {
+ this.delivererTel = delivererTel;
+ }
+
public String getId() {
return id;
}
@@ -140,6 +168,14 @@
this.orderTime = orderTime;
}
+ public String getPlanDeliverTime() {
+ return planDeliverTime;
+ }
+
+ public void setPlanDeliverTime(String planDeliverTime) {
+ this.planDeliverTime = planDeliverTime;
+ }
+
public String getRemark() {
return remark;
}
diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
index 3b9791a..c4eb16d 100644
--- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
@@ -276,6 +276,18 @@
): String
/**
+ * 获取到期设备数
+ */
+ @GET("/meter/assets/remindQuantity")
+ suspend fun getRemindEquipmentCount(@Header("token") token: String): String
+
+ /**
+ * 获取到期仪器数
+ */
+ @GET("/meter/standard/remindQuantity")
+ suspend fun getRemindDeviceCount(@Header("token") token: String): String
+
+ /**
* 获取检定规程列表
*/
@POST("/meter/standard/regulation/listPage")
diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
index 996d452..8b385fa 100644
--- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
@@ -599,6 +599,20 @@
}
/**
+ * 获取到期设备数
+ */
+ suspend fun getRemindEquipmentCount(): String {
+ return api.getRemindEquipmentCount(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取到期仪器数
+ */
+ suspend fun getRemindDeviceCount(): String {
+ return api.getRemindDeviceCount(AuthenticationHelper.token!!)
+ }
+
+ /**
* 获取检定规程列表
*/
suspend fun getVerifyProcedureList(id: String): String {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt
new file mode 100644
index 0000000..9fa4040
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt
@@ -0,0 +1,257 @@
+package com.casic.xz.meterage.view.home
+
+import android.content.Context
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.base.ApplicationBaseActivity
+import com.casic.xz.meterage.callback.DateSelectedCallback
+import com.casic.xz.meterage.extensions.*
+import com.casic.xz.meterage.model.EntrustListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.vm.EntrustViewModel
+import com.casic.xz.meterage.vm.EquipmentViewModel
+import com.github.gzuliyujiang.wheelpicker.entity.DateEntity
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_business_statistics.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
+
+class BusinessStatisticsActivity : ApplicationBaseActivity() {
+
+ private val context: Context = this@BusinessStatisticsActivity
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var equipmentViewModel: EquipmentViewModel
+ private lateinit var entrustViewModel: EntrustViewModel
+ private lateinit var entrustAdapter: NormalRecyclerAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initLayoutView(): Int = R.layout.activity_business_statistics
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "业务统计"
+ }
+
+ override fun initData() {
+ equipmentViewModel = ViewModelProvider(this)[EquipmentViewModel::class.java]
+ equipmentViewModel.remindEquipmentCount.observe(this) {
+ equipOvertimeCountView.text = it.toString()
+ }
+ equipmentViewModel.remindDeviceCount.observe(this) {
+ deviceOvertimeCountView.text = it.toString()
+ }
+
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java]
+ entrustViewModel.entrustList.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ entrustLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ entrustLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023041401)
+ }
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ equipmentViewModel.getRemindEquipmentCount()
+ equipmentViewModel.getRemindDeviceCount()
+
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ private fun getEntrustListByPage() {
+ val startDate = if (startDateView.text.toString() == "开始日期") {
+ ""
+ } else {
+ "${startDateView.text} 00:00:00"
+ }
+
+ val endDate = if (endDateView.text.toString() == "结束日期") {
+ ""
+ } else {
+ "${endDateView.text} 00:00:00"
+ }
+
+ entrustViewModel.getEntrustList(
+ "",
+ "",
+ "",
+ "",
+ startDate,
+ endDate,
+ "",
+ "",
+ arrayOf(),
+ pageIndex
+ )
+ }
+
+ override fun observeRequestState() {
+ entrustViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ equipOvertimeLayout.setOnClickListener {
+
+ }
+
+ deviceOvertimeLayout.setOnClickListener {
+
+ }
+
+ workTimeLayout.setOnClickListener {
+
+ }
+
+ deptDataLayout.setOnClickListener {
+
+ }
+
+ startDateView.setOnClickListener {
+ showDatePicker(DateEntity.target(1949, 10, 1), object : DateSelectedCallback {
+ override fun onDateSelected(date: String) {
+ startDateView.text = date
+ }
+ })
+ }
+
+ endDateView.setOnClickListener {
+ showDatePicker(DateEntity.target(1949, 10, 1), object : DateSelectedCallback {
+ override fun onDateSelected(date: String) {
+ endDateView.text = date
+ }
+ })
+ }
+
+ searchButton.setOnClickListener {
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ entrustLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ entrustLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getEntrustListByPage()
+ }
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023041401 -> {
+ if (isRefresh || isLoadMore) {
+ entrustAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无委托任务数据") {
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+ } else {
+ emptyView!!.hide()
+ entrustAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_entrust_bs_rv_l, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder,
+ position: Int,
+ item: EntrustListModel.DataModel.RowsModel
+ ) {
+ //未接收:1;已接收:2;已取消:3;检测完成:4
+ val color = when (item.status) {
+ "1" -> R.color.red.convertColor(context)
+ "2" -> R.color.blue.convertColor(context)
+ "3" -> R.color.gray.convertColor(context)
+ else -> R.color.green.convertColor(context)
+ }
+ viewHolder.setBackgroundColor(R.id.entrustStateView, color)
+
+ if (item.requireOverTime.isEarlierThenCurrent()) {
+ viewHolder.setTextColor(
+ R.id.requireOverTimeView, R.color.red.convertColor(context)
+ )
+ } else {
+ viewHolder.setTextColor(
+ R.id.requireOverTimeView,
+ R.color.gray.convertColor(context)
+ )
+ }
+
+ viewHolder.setText(R.id.customerNameView, item.customerName)
+ .setText(R.id.entrustStateView, item.statusName)
+ .setText(R.id.entrustCodeView, "委托书编号:${item.orderCode}")
+ .setText(
+ R.id.createTimeView,
+ "委托创建时间:${item.createTime.formatToYearMonthDay()}"
+ ).setText(
+ R.id.planDeliverTimeView,
+ "预计送达时间:${item.planDeliverTime.formatToYearMonthDay()}"
+ )
+ .setText(
+ R.id.requireOverTimeView,
+ "要求检完时间:${item.requireOverTime.formatToYearMonthDay()}"
+ )
+ }
+ }
+ entrustRecyclerView.adapter = entrustAdapter
+ entrustAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: EntrustListModel.DataModel.RowsModel
+ ) {
+ navigatePageTo(t.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt
index c7a2e22..076ac4c 100644
--- a/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt
+++ b/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt
@@ -12,6 +12,7 @@
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.vm.BaseViewModel
import com.pengxh.kt.lite.vm.LoadState
+import org.json.JSONObject
/**
* 装备、装置相关 VM
@@ -26,6 +27,8 @@
val supportEquipmentList = MutableLiveData()
val stateChangeResult = MutableLiveData()
val usageRecordResult = MutableLiveData()
+ val remindEquipmentCount = MutableLiveData()
+ val remindDeviceCount = MutableLiveData()
fun getEquipmentList(
equipmentNo: String,
@@ -211,4 +214,34 @@
it.cause.toString().show(BaseApplication.get())
it.printStackTrace()
})
+
+ fun getRemindEquipmentCount() = launch({
+ val response = RetrofitServiceManager.getRemindEquipmentCount()
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ remindEquipmentCount.value = JSONObject(response)
+ .getJSONObject("data")
+ .getInt("remindQuantity")
+ } else {
+ response.toErrorMessage().show(BaseApplication.get())
+ }
+ }, {
+ it.cause.toString().show(BaseApplication.get())
+ it.printStackTrace()
+ })
+
+ fun getRemindDeviceCount() = launch({
+ val response = RetrofitServiceManager.getRemindDeviceCount()
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ remindDeviceCount.value = JSONObject(response)
+ .getJSONObject("data")
+ .getInt("remindQuantity")
+ } else {
+ response.toErrorMessage().show(BaseApplication.get())
+ }
+ }, {
+ it.cause.toString().show(BaseApplication.get())
+ it.printStackTrace()
+ })
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt
new file mode 100644
index 0000000..665b3be
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt
@@ -0,0 +1,32 @@
+package com.casic.xz.meterage.vm
+
+import com.google.gson.Gson
+import com.pengxh.kt.lite.vm.BaseViewModel
+
+/**
+ * 业务统计 VM
+ * */
+class StatisticsViewModel : BaseViewModel() {
+
+ private val gson by lazy { Gson() }
+// val capabilityDetail = MutableLiveData()
+//
+// fun getCapabilityDetail(id: String) = launch({
+// loadState.value = LoadState.Loading
+// val response = RetrofitServiceManager.getCapabilityDetail(id)
+// val responseCode = response.separateResponseCode()
+// if (responseCode == 200) {
+// loadState.value = LoadState.Success
+// capabilityDetail.value = gson.fromJson(
+// response, object : TypeToken() {}.type
+// )
+// } else {
+// loadState.value = LoadState.Fail
+// response.toErrorMessage().show(BaseApplication.get())
+// }
+// }, {
+// loadState.value = LoadState.Fail
+// it.cause.toString().show(BaseApplication.get())
+// it.printStackTrace()
+// })
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f3b368d..95f17d4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -74,6 +74,7 @@
+
diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
index 60f8761..66b419a 100644
--- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
@@ -171,7 +171,7 @@
"能力列表" -> requireContext().navigatePageTo()
"计量培训" -> requireContext().navigatePageTo()
"合同发票" -> requireContext().navigatePageTo()
-// "业务统计" -> requireContext().navigatePageTo()
+ "业务统计" -> requireContext().navigatePageTo()
"客户列表" -> requireContext().navigatePageTo()
"外场检测" -> requireContext().navigatePageTo()
}
diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
index 1b66d02..a8d54f5 100644
--- a/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
+++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
@@ -54,14 +54,18 @@
public static class RowsModel {
private String createTime;
+ private String customerAddress;
+ private String customerId;
private String customerName;
private String customerNo;
private String customerPhone;
private String deliverer;
+ private String delivererTel;
private String id;
private String isUrgent;
private String orderCode;
private String orderTime;
+ private String planDeliverTime;
private String remark;
private String requireOverTime;
private String sampleCount;
@@ -76,6 +80,22 @@
this.createTime = createTime;
}
+ public String getCustomerAddress() {
+ return customerAddress;
+ }
+
+ public void setCustomerAddress(String customerAddress) {
+ this.customerAddress = customerAddress;
+ }
+
+ public String getCustomerId() {
+ return customerId;
+ }
+
+ public void setCustomerId(String customerId) {
+ this.customerId = customerId;
+ }
+
public String getCustomerName() {
return customerName;
}
@@ -108,6 +128,14 @@
this.deliverer = deliverer;
}
+ public String getDelivererTel() {
+ return delivererTel;
+ }
+
+ public void setDelivererTel(String delivererTel) {
+ this.delivererTel = delivererTel;
+ }
+
public String getId() {
return id;
}
@@ -140,6 +168,14 @@
this.orderTime = orderTime;
}
+ public String getPlanDeliverTime() {
+ return planDeliverTime;
+ }
+
+ public void setPlanDeliverTime(String planDeliverTime) {
+ this.planDeliverTime = planDeliverTime;
+ }
+
public String getRemark() {
return remark;
}
diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
index 3b9791a..c4eb16d 100644
--- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
@@ -276,6 +276,18 @@
): String
/**
+ * 获取到期设备数
+ */
+ @GET("/meter/assets/remindQuantity")
+ suspend fun getRemindEquipmentCount(@Header("token") token: String): String
+
+ /**
+ * 获取到期仪器数
+ */
+ @GET("/meter/standard/remindQuantity")
+ suspend fun getRemindDeviceCount(@Header("token") token: String): String
+
+ /**
* 获取检定规程列表
*/
@POST("/meter/standard/regulation/listPage")
diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
index 996d452..8b385fa 100644
--- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
@@ -599,6 +599,20 @@
}
/**
+ * 获取到期设备数
+ */
+ suspend fun getRemindEquipmentCount(): String {
+ return api.getRemindEquipmentCount(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取到期仪器数
+ */
+ suspend fun getRemindDeviceCount(): String {
+ return api.getRemindDeviceCount(AuthenticationHelper.token!!)
+ }
+
+ /**
* 获取检定规程列表
*/
suspend fun getVerifyProcedureList(id: String): String {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt
new file mode 100644
index 0000000..9fa4040
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt
@@ -0,0 +1,257 @@
+package com.casic.xz.meterage.view.home
+
+import android.content.Context
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.base.ApplicationBaseActivity
+import com.casic.xz.meterage.callback.DateSelectedCallback
+import com.casic.xz.meterage.extensions.*
+import com.casic.xz.meterage.model.EntrustListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.vm.EntrustViewModel
+import com.casic.xz.meterage.vm.EquipmentViewModel
+import com.github.gzuliyujiang.wheelpicker.entity.DateEntity
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_business_statistics.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
+
+class BusinessStatisticsActivity : ApplicationBaseActivity() {
+
+ private val context: Context = this@BusinessStatisticsActivity
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var equipmentViewModel: EquipmentViewModel
+ private lateinit var entrustViewModel: EntrustViewModel
+ private lateinit var entrustAdapter: NormalRecyclerAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initLayoutView(): Int = R.layout.activity_business_statistics
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "业务统计"
+ }
+
+ override fun initData() {
+ equipmentViewModel = ViewModelProvider(this)[EquipmentViewModel::class.java]
+ equipmentViewModel.remindEquipmentCount.observe(this) {
+ equipOvertimeCountView.text = it.toString()
+ }
+ equipmentViewModel.remindDeviceCount.observe(this) {
+ deviceOvertimeCountView.text = it.toString()
+ }
+
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java]
+ entrustViewModel.entrustList.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ entrustLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ entrustLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023041401)
+ }
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ equipmentViewModel.getRemindEquipmentCount()
+ equipmentViewModel.getRemindDeviceCount()
+
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ private fun getEntrustListByPage() {
+ val startDate = if (startDateView.text.toString() == "开始日期") {
+ ""
+ } else {
+ "${startDateView.text} 00:00:00"
+ }
+
+ val endDate = if (endDateView.text.toString() == "结束日期") {
+ ""
+ } else {
+ "${endDateView.text} 00:00:00"
+ }
+
+ entrustViewModel.getEntrustList(
+ "",
+ "",
+ "",
+ "",
+ startDate,
+ endDate,
+ "",
+ "",
+ arrayOf(),
+ pageIndex
+ )
+ }
+
+ override fun observeRequestState() {
+ entrustViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ equipOvertimeLayout.setOnClickListener {
+
+ }
+
+ deviceOvertimeLayout.setOnClickListener {
+
+ }
+
+ workTimeLayout.setOnClickListener {
+
+ }
+
+ deptDataLayout.setOnClickListener {
+
+ }
+
+ startDateView.setOnClickListener {
+ showDatePicker(DateEntity.target(1949, 10, 1), object : DateSelectedCallback {
+ override fun onDateSelected(date: String) {
+ startDateView.text = date
+ }
+ })
+ }
+
+ endDateView.setOnClickListener {
+ showDatePicker(DateEntity.target(1949, 10, 1), object : DateSelectedCallback {
+ override fun onDateSelected(date: String) {
+ endDateView.text = date
+ }
+ })
+ }
+
+ searchButton.setOnClickListener {
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ entrustLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ entrustLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getEntrustListByPage()
+ }
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023041401 -> {
+ if (isRefresh || isLoadMore) {
+ entrustAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无委托任务数据") {
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+ } else {
+ emptyView!!.hide()
+ entrustAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_entrust_bs_rv_l, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder,
+ position: Int,
+ item: EntrustListModel.DataModel.RowsModel
+ ) {
+ //未接收:1;已接收:2;已取消:3;检测完成:4
+ val color = when (item.status) {
+ "1" -> R.color.red.convertColor(context)
+ "2" -> R.color.blue.convertColor(context)
+ "3" -> R.color.gray.convertColor(context)
+ else -> R.color.green.convertColor(context)
+ }
+ viewHolder.setBackgroundColor(R.id.entrustStateView, color)
+
+ if (item.requireOverTime.isEarlierThenCurrent()) {
+ viewHolder.setTextColor(
+ R.id.requireOverTimeView, R.color.red.convertColor(context)
+ )
+ } else {
+ viewHolder.setTextColor(
+ R.id.requireOverTimeView,
+ R.color.gray.convertColor(context)
+ )
+ }
+
+ viewHolder.setText(R.id.customerNameView, item.customerName)
+ .setText(R.id.entrustStateView, item.statusName)
+ .setText(R.id.entrustCodeView, "委托书编号:${item.orderCode}")
+ .setText(
+ R.id.createTimeView,
+ "委托创建时间:${item.createTime.formatToYearMonthDay()}"
+ ).setText(
+ R.id.planDeliverTimeView,
+ "预计送达时间:${item.planDeliverTime.formatToYearMonthDay()}"
+ )
+ .setText(
+ R.id.requireOverTimeView,
+ "要求检完时间:${item.requireOverTime.formatToYearMonthDay()}"
+ )
+ }
+ }
+ entrustRecyclerView.adapter = entrustAdapter
+ entrustAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: EntrustListModel.DataModel.RowsModel
+ ) {
+ navigatePageTo(t.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt
index c7a2e22..076ac4c 100644
--- a/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt
+++ b/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt
@@ -12,6 +12,7 @@
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.vm.BaseViewModel
import com.pengxh.kt.lite.vm.LoadState
+import org.json.JSONObject
/**
* 装备、装置相关 VM
@@ -26,6 +27,8 @@
val supportEquipmentList = MutableLiveData()
val stateChangeResult = MutableLiveData()
val usageRecordResult = MutableLiveData()
+ val remindEquipmentCount = MutableLiveData()
+ val remindDeviceCount = MutableLiveData()
fun getEquipmentList(
equipmentNo: String,
@@ -211,4 +214,34 @@
it.cause.toString().show(BaseApplication.get())
it.printStackTrace()
})
+
+ fun getRemindEquipmentCount() = launch({
+ val response = RetrofitServiceManager.getRemindEquipmentCount()
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ remindEquipmentCount.value = JSONObject(response)
+ .getJSONObject("data")
+ .getInt("remindQuantity")
+ } else {
+ response.toErrorMessage().show(BaseApplication.get())
+ }
+ }, {
+ it.cause.toString().show(BaseApplication.get())
+ it.printStackTrace()
+ })
+
+ fun getRemindDeviceCount() = launch({
+ val response = RetrofitServiceManager.getRemindDeviceCount()
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ remindDeviceCount.value = JSONObject(response)
+ .getJSONObject("data")
+ .getInt("remindQuantity")
+ } else {
+ response.toErrorMessage().show(BaseApplication.get())
+ }
+ }, {
+ it.cause.toString().show(BaseApplication.get())
+ it.printStackTrace()
+ })
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt
new file mode 100644
index 0000000..665b3be
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt
@@ -0,0 +1,32 @@
+package com.casic.xz.meterage.vm
+
+import com.google.gson.Gson
+import com.pengxh.kt.lite.vm.BaseViewModel
+
+/**
+ * 业务统计 VM
+ * */
+class StatisticsViewModel : BaseViewModel() {
+
+ private val gson by lazy { Gson() }
+// val capabilityDetail = MutableLiveData()
+//
+// fun getCapabilityDetail(id: String) = launch({
+// loadState.value = LoadState.Loading
+// val response = RetrofitServiceManager.getCapabilityDetail(id)
+// val responseCode = response.separateResponseCode()
+// if (responseCode == 200) {
+// loadState.value = LoadState.Success
+// capabilityDetail.value = gson.fromJson(
+// response, object : TypeToken() {}.type
+// )
+// } else {
+// loadState.value = LoadState.Fail
+// response.toErrorMessage().show(BaseApplication.get())
+// }
+// }, {
+// loadState.value = LoadState.Fail
+// it.cause.toString().show(BaseApplication.get())
+// it.printStackTrace()
+// })
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_business_statistics.xml b/app/src/main/res/layout/activity_business_statistics.xml
new file mode 100644
index 0000000..ba61145
--- /dev/null
+++ b/app/src/main/res/layout/activity_business_statistics.xml
@@ -0,0 +1,197 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f3b368d..95f17d4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -74,6 +74,7 @@
+
diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
index 60f8761..66b419a 100644
--- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
@@ -171,7 +171,7 @@
"能力列表" -> requireContext().navigatePageTo()
"计量培训" -> requireContext().navigatePageTo()
"合同发票" -> requireContext().navigatePageTo()
-// "业务统计" -> requireContext().navigatePageTo()
+ "业务统计" -> requireContext().navigatePageTo()
"客户列表" -> requireContext().navigatePageTo()
"外场检测" -> requireContext().navigatePageTo()
}
diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
index 1b66d02..a8d54f5 100644
--- a/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
+++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
@@ -54,14 +54,18 @@
public static class RowsModel {
private String createTime;
+ private String customerAddress;
+ private String customerId;
private String customerName;
private String customerNo;
private String customerPhone;
private String deliverer;
+ private String delivererTel;
private String id;
private String isUrgent;
private String orderCode;
private String orderTime;
+ private String planDeliverTime;
private String remark;
private String requireOverTime;
private String sampleCount;
@@ -76,6 +80,22 @@
this.createTime = createTime;
}
+ public String getCustomerAddress() {
+ return customerAddress;
+ }
+
+ public void setCustomerAddress(String customerAddress) {
+ this.customerAddress = customerAddress;
+ }
+
+ public String getCustomerId() {
+ return customerId;
+ }
+
+ public void setCustomerId(String customerId) {
+ this.customerId = customerId;
+ }
+
public String getCustomerName() {
return customerName;
}
@@ -108,6 +128,14 @@
this.deliverer = deliverer;
}
+ public String getDelivererTel() {
+ return delivererTel;
+ }
+
+ public void setDelivererTel(String delivererTel) {
+ this.delivererTel = delivererTel;
+ }
+
public String getId() {
return id;
}
@@ -140,6 +168,14 @@
this.orderTime = orderTime;
}
+ public String getPlanDeliverTime() {
+ return planDeliverTime;
+ }
+
+ public void setPlanDeliverTime(String planDeliverTime) {
+ this.planDeliverTime = planDeliverTime;
+ }
+
public String getRemark() {
return remark;
}
diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
index 3b9791a..c4eb16d 100644
--- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
@@ -276,6 +276,18 @@
): String
/**
+ * 获取到期设备数
+ */
+ @GET("/meter/assets/remindQuantity")
+ suspend fun getRemindEquipmentCount(@Header("token") token: String): String
+
+ /**
+ * 获取到期仪器数
+ */
+ @GET("/meter/standard/remindQuantity")
+ suspend fun getRemindDeviceCount(@Header("token") token: String): String
+
+ /**
* 获取检定规程列表
*/
@POST("/meter/standard/regulation/listPage")
diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
index 996d452..8b385fa 100644
--- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
@@ -599,6 +599,20 @@
}
/**
+ * 获取到期设备数
+ */
+ suspend fun getRemindEquipmentCount(): String {
+ return api.getRemindEquipmentCount(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取到期仪器数
+ */
+ suspend fun getRemindDeviceCount(): String {
+ return api.getRemindDeviceCount(AuthenticationHelper.token!!)
+ }
+
+ /**
* 获取检定规程列表
*/
suspend fun getVerifyProcedureList(id: String): String {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt
new file mode 100644
index 0000000..9fa4040
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt
@@ -0,0 +1,257 @@
+package com.casic.xz.meterage.view.home
+
+import android.content.Context
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.base.ApplicationBaseActivity
+import com.casic.xz.meterage.callback.DateSelectedCallback
+import com.casic.xz.meterage.extensions.*
+import com.casic.xz.meterage.model.EntrustListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.vm.EntrustViewModel
+import com.casic.xz.meterage.vm.EquipmentViewModel
+import com.github.gzuliyujiang.wheelpicker.entity.DateEntity
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_business_statistics.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
+
+class BusinessStatisticsActivity : ApplicationBaseActivity() {
+
+ private val context: Context = this@BusinessStatisticsActivity
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var equipmentViewModel: EquipmentViewModel
+ private lateinit var entrustViewModel: EntrustViewModel
+ private lateinit var entrustAdapter: NormalRecyclerAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initLayoutView(): Int = R.layout.activity_business_statistics
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "业务统计"
+ }
+
+ override fun initData() {
+ equipmentViewModel = ViewModelProvider(this)[EquipmentViewModel::class.java]
+ equipmentViewModel.remindEquipmentCount.observe(this) {
+ equipOvertimeCountView.text = it.toString()
+ }
+ equipmentViewModel.remindDeviceCount.observe(this) {
+ deviceOvertimeCountView.text = it.toString()
+ }
+
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java]
+ entrustViewModel.entrustList.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ entrustLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ entrustLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023041401)
+ }
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ equipmentViewModel.getRemindEquipmentCount()
+ equipmentViewModel.getRemindDeviceCount()
+
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ private fun getEntrustListByPage() {
+ val startDate = if (startDateView.text.toString() == "开始日期") {
+ ""
+ } else {
+ "${startDateView.text} 00:00:00"
+ }
+
+ val endDate = if (endDateView.text.toString() == "结束日期") {
+ ""
+ } else {
+ "${endDateView.text} 00:00:00"
+ }
+
+ entrustViewModel.getEntrustList(
+ "",
+ "",
+ "",
+ "",
+ startDate,
+ endDate,
+ "",
+ "",
+ arrayOf(),
+ pageIndex
+ )
+ }
+
+ override fun observeRequestState() {
+ entrustViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ equipOvertimeLayout.setOnClickListener {
+
+ }
+
+ deviceOvertimeLayout.setOnClickListener {
+
+ }
+
+ workTimeLayout.setOnClickListener {
+
+ }
+
+ deptDataLayout.setOnClickListener {
+
+ }
+
+ startDateView.setOnClickListener {
+ showDatePicker(DateEntity.target(1949, 10, 1), object : DateSelectedCallback {
+ override fun onDateSelected(date: String) {
+ startDateView.text = date
+ }
+ })
+ }
+
+ endDateView.setOnClickListener {
+ showDatePicker(DateEntity.target(1949, 10, 1), object : DateSelectedCallback {
+ override fun onDateSelected(date: String) {
+ endDateView.text = date
+ }
+ })
+ }
+
+ searchButton.setOnClickListener {
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ entrustLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ entrustLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getEntrustListByPage()
+ }
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023041401 -> {
+ if (isRefresh || isLoadMore) {
+ entrustAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无委托任务数据") {
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+ } else {
+ emptyView!!.hide()
+ entrustAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_entrust_bs_rv_l, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder,
+ position: Int,
+ item: EntrustListModel.DataModel.RowsModel
+ ) {
+ //未接收:1;已接收:2;已取消:3;检测完成:4
+ val color = when (item.status) {
+ "1" -> R.color.red.convertColor(context)
+ "2" -> R.color.blue.convertColor(context)
+ "3" -> R.color.gray.convertColor(context)
+ else -> R.color.green.convertColor(context)
+ }
+ viewHolder.setBackgroundColor(R.id.entrustStateView, color)
+
+ if (item.requireOverTime.isEarlierThenCurrent()) {
+ viewHolder.setTextColor(
+ R.id.requireOverTimeView, R.color.red.convertColor(context)
+ )
+ } else {
+ viewHolder.setTextColor(
+ R.id.requireOverTimeView,
+ R.color.gray.convertColor(context)
+ )
+ }
+
+ viewHolder.setText(R.id.customerNameView, item.customerName)
+ .setText(R.id.entrustStateView, item.statusName)
+ .setText(R.id.entrustCodeView, "委托书编号:${item.orderCode}")
+ .setText(
+ R.id.createTimeView,
+ "委托创建时间:${item.createTime.formatToYearMonthDay()}"
+ ).setText(
+ R.id.planDeliverTimeView,
+ "预计送达时间:${item.planDeliverTime.formatToYearMonthDay()}"
+ )
+ .setText(
+ R.id.requireOverTimeView,
+ "要求检完时间:${item.requireOverTime.formatToYearMonthDay()}"
+ )
+ }
+ }
+ entrustRecyclerView.adapter = entrustAdapter
+ entrustAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: EntrustListModel.DataModel.RowsModel
+ ) {
+ navigatePageTo(t.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt
index c7a2e22..076ac4c 100644
--- a/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt
+++ b/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt
@@ -12,6 +12,7 @@
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.vm.BaseViewModel
import com.pengxh.kt.lite.vm.LoadState
+import org.json.JSONObject
/**
* 装备、装置相关 VM
@@ -26,6 +27,8 @@
val supportEquipmentList = MutableLiveData()
val stateChangeResult = MutableLiveData()
val usageRecordResult = MutableLiveData()
+ val remindEquipmentCount = MutableLiveData()
+ val remindDeviceCount = MutableLiveData()
fun getEquipmentList(
equipmentNo: String,
@@ -211,4 +214,34 @@
it.cause.toString().show(BaseApplication.get())
it.printStackTrace()
})
+
+ fun getRemindEquipmentCount() = launch({
+ val response = RetrofitServiceManager.getRemindEquipmentCount()
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ remindEquipmentCount.value = JSONObject(response)
+ .getJSONObject("data")
+ .getInt("remindQuantity")
+ } else {
+ response.toErrorMessage().show(BaseApplication.get())
+ }
+ }, {
+ it.cause.toString().show(BaseApplication.get())
+ it.printStackTrace()
+ })
+
+ fun getRemindDeviceCount() = launch({
+ val response = RetrofitServiceManager.getRemindDeviceCount()
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ remindDeviceCount.value = JSONObject(response)
+ .getJSONObject("data")
+ .getInt("remindQuantity")
+ } else {
+ response.toErrorMessage().show(BaseApplication.get())
+ }
+ }, {
+ it.cause.toString().show(BaseApplication.get())
+ it.printStackTrace()
+ })
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt
new file mode 100644
index 0000000..665b3be
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt
@@ -0,0 +1,32 @@
+package com.casic.xz.meterage.vm
+
+import com.google.gson.Gson
+import com.pengxh.kt.lite.vm.BaseViewModel
+
+/**
+ * 业务统计 VM
+ * */
+class StatisticsViewModel : BaseViewModel() {
+
+ private val gson by lazy { Gson() }
+// val capabilityDetail = MutableLiveData()
+//
+// fun getCapabilityDetail(id: String) = launch({
+// loadState.value = LoadState.Loading
+// val response = RetrofitServiceManager.getCapabilityDetail(id)
+// val responseCode = response.separateResponseCode()
+// if (responseCode == 200) {
+// loadState.value = LoadState.Success
+// capabilityDetail.value = gson.fromJson(
+// response, object : TypeToken() {}.type
+// )
+// } else {
+// loadState.value = LoadState.Fail
+// response.toErrorMessage().show(BaseApplication.get())
+// }
+// }, {
+// loadState.value = LoadState.Fail
+// it.cause.toString().show(BaseApplication.get())
+// it.printStackTrace()
+// })
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_business_statistics.xml b/app/src/main/res/layout/activity_business_statistics.xml
new file mode 100644
index 0000000..ba61145
--- /dev/null
+++ b/app/src/main/res/layout/activity_business_statistics.xml
@@ -0,0 +1,197 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_entrust_bs_rv_l.xml b/app/src/main/res/layout/item_entrust_bs_rv_l.xml
new file mode 100644
index 0000000..59c6aef
--- /dev/null
+++ b/app/src/main/res/layout/item_entrust_bs_rv_l.xml
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f3b368d..95f17d4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -74,6 +74,7 @@
+
diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
index 60f8761..66b419a 100644
--- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
@@ -171,7 +171,7 @@
"能力列表" -> requireContext().navigatePageTo()
"计量培训" -> requireContext().navigatePageTo()
"合同发票" -> requireContext().navigatePageTo()
-// "业务统计" -> requireContext().navigatePageTo()
+ "业务统计" -> requireContext().navigatePageTo()
"客户列表" -> requireContext().navigatePageTo()
"外场检测" -> requireContext().navigatePageTo()
}
diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
index 1b66d02..a8d54f5 100644
--- a/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
+++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
@@ -54,14 +54,18 @@
public static class RowsModel {
private String createTime;
+ private String customerAddress;
+ private String customerId;
private String customerName;
private String customerNo;
private String customerPhone;
private String deliverer;
+ private String delivererTel;
private String id;
private String isUrgent;
private String orderCode;
private String orderTime;
+ private String planDeliverTime;
private String remark;
private String requireOverTime;
private String sampleCount;
@@ -76,6 +80,22 @@
this.createTime = createTime;
}
+ public String getCustomerAddress() {
+ return customerAddress;
+ }
+
+ public void setCustomerAddress(String customerAddress) {
+ this.customerAddress = customerAddress;
+ }
+
+ public String getCustomerId() {
+ return customerId;
+ }
+
+ public void setCustomerId(String customerId) {
+ this.customerId = customerId;
+ }
+
public String getCustomerName() {
return customerName;
}
@@ -108,6 +128,14 @@
this.deliverer = deliverer;
}
+ public String getDelivererTel() {
+ return delivererTel;
+ }
+
+ public void setDelivererTel(String delivererTel) {
+ this.delivererTel = delivererTel;
+ }
+
public String getId() {
return id;
}
@@ -140,6 +168,14 @@
this.orderTime = orderTime;
}
+ public String getPlanDeliverTime() {
+ return planDeliverTime;
+ }
+
+ public void setPlanDeliverTime(String planDeliverTime) {
+ this.planDeliverTime = planDeliverTime;
+ }
+
public String getRemark() {
return remark;
}
diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
index 3b9791a..c4eb16d 100644
--- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
@@ -276,6 +276,18 @@
): String
/**
+ * 获取到期设备数
+ */
+ @GET("/meter/assets/remindQuantity")
+ suspend fun getRemindEquipmentCount(@Header("token") token: String): String
+
+ /**
+ * 获取到期仪器数
+ */
+ @GET("/meter/standard/remindQuantity")
+ suspend fun getRemindDeviceCount(@Header("token") token: String): String
+
+ /**
* 获取检定规程列表
*/
@POST("/meter/standard/regulation/listPage")
diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
index 996d452..8b385fa 100644
--- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
@@ -599,6 +599,20 @@
}
/**
+ * 获取到期设备数
+ */
+ suspend fun getRemindEquipmentCount(): String {
+ return api.getRemindEquipmentCount(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取到期仪器数
+ */
+ suspend fun getRemindDeviceCount(): String {
+ return api.getRemindDeviceCount(AuthenticationHelper.token!!)
+ }
+
+ /**
* 获取检定规程列表
*/
suspend fun getVerifyProcedureList(id: String): String {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt
new file mode 100644
index 0000000..9fa4040
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt
@@ -0,0 +1,257 @@
+package com.casic.xz.meterage.view.home
+
+import android.content.Context
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.base.ApplicationBaseActivity
+import com.casic.xz.meterage.callback.DateSelectedCallback
+import com.casic.xz.meterage.extensions.*
+import com.casic.xz.meterage.model.EntrustListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.vm.EntrustViewModel
+import com.casic.xz.meterage.vm.EquipmentViewModel
+import com.github.gzuliyujiang.wheelpicker.entity.DateEntity
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_business_statistics.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
+
+class BusinessStatisticsActivity : ApplicationBaseActivity() {
+
+ private val context: Context = this@BusinessStatisticsActivity
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var equipmentViewModel: EquipmentViewModel
+ private lateinit var entrustViewModel: EntrustViewModel
+ private lateinit var entrustAdapter: NormalRecyclerAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initLayoutView(): Int = R.layout.activity_business_statistics
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "业务统计"
+ }
+
+ override fun initData() {
+ equipmentViewModel = ViewModelProvider(this)[EquipmentViewModel::class.java]
+ equipmentViewModel.remindEquipmentCount.observe(this) {
+ equipOvertimeCountView.text = it.toString()
+ }
+ equipmentViewModel.remindDeviceCount.observe(this) {
+ deviceOvertimeCountView.text = it.toString()
+ }
+
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java]
+ entrustViewModel.entrustList.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ entrustLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ entrustLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023041401)
+ }
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ equipmentViewModel.getRemindEquipmentCount()
+ equipmentViewModel.getRemindDeviceCount()
+
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ private fun getEntrustListByPage() {
+ val startDate = if (startDateView.text.toString() == "开始日期") {
+ ""
+ } else {
+ "${startDateView.text} 00:00:00"
+ }
+
+ val endDate = if (endDateView.text.toString() == "结束日期") {
+ ""
+ } else {
+ "${endDateView.text} 00:00:00"
+ }
+
+ entrustViewModel.getEntrustList(
+ "",
+ "",
+ "",
+ "",
+ startDate,
+ endDate,
+ "",
+ "",
+ arrayOf(),
+ pageIndex
+ )
+ }
+
+ override fun observeRequestState() {
+ entrustViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ equipOvertimeLayout.setOnClickListener {
+
+ }
+
+ deviceOvertimeLayout.setOnClickListener {
+
+ }
+
+ workTimeLayout.setOnClickListener {
+
+ }
+
+ deptDataLayout.setOnClickListener {
+
+ }
+
+ startDateView.setOnClickListener {
+ showDatePicker(DateEntity.target(1949, 10, 1), object : DateSelectedCallback {
+ override fun onDateSelected(date: String) {
+ startDateView.text = date
+ }
+ })
+ }
+
+ endDateView.setOnClickListener {
+ showDatePicker(DateEntity.target(1949, 10, 1), object : DateSelectedCallback {
+ override fun onDateSelected(date: String) {
+ endDateView.text = date
+ }
+ })
+ }
+
+ searchButton.setOnClickListener {
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ entrustLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ entrustLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getEntrustListByPage()
+ }
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023041401 -> {
+ if (isRefresh || isLoadMore) {
+ entrustAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无委托任务数据") {
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+ } else {
+ emptyView!!.hide()
+ entrustAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_entrust_bs_rv_l, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder,
+ position: Int,
+ item: EntrustListModel.DataModel.RowsModel
+ ) {
+ //未接收:1;已接收:2;已取消:3;检测完成:4
+ val color = when (item.status) {
+ "1" -> R.color.red.convertColor(context)
+ "2" -> R.color.blue.convertColor(context)
+ "3" -> R.color.gray.convertColor(context)
+ else -> R.color.green.convertColor(context)
+ }
+ viewHolder.setBackgroundColor(R.id.entrustStateView, color)
+
+ if (item.requireOverTime.isEarlierThenCurrent()) {
+ viewHolder.setTextColor(
+ R.id.requireOverTimeView, R.color.red.convertColor(context)
+ )
+ } else {
+ viewHolder.setTextColor(
+ R.id.requireOverTimeView,
+ R.color.gray.convertColor(context)
+ )
+ }
+
+ viewHolder.setText(R.id.customerNameView, item.customerName)
+ .setText(R.id.entrustStateView, item.statusName)
+ .setText(R.id.entrustCodeView, "委托书编号:${item.orderCode}")
+ .setText(
+ R.id.createTimeView,
+ "委托创建时间:${item.createTime.formatToYearMonthDay()}"
+ ).setText(
+ R.id.planDeliverTimeView,
+ "预计送达时间:${item.planDeliverTime.formatToYearMonthDay()}"
+ )
+ .setText(
+ R.id.requireOverTimeView,
+ "要求检完时间:${item.requireOverTime.formatToYearMonthDay()}"
+ )
+ }
+ }
+ entrustRecyclerView.adapter = entrustAdapter
+ entrustAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: EntrustListModel.DataModel.RowsModel
+ ) {
+ navigatePageTo(t.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt
index c7a2e22..076ac4c 100644
--- a/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt
+++ b/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt
@@ -12,6 +12,7 @@
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.vm.BaseViewModel
import com.pengxh.kt.lite.vm.LoadState
+import org.json.JSONObject
/**
* 装备、装置相关 VM
@@ -26,6 +27,8 @@
val supportEquipmentList = MutableLiveData()
val stateChangeResult = MutableLiveData()
val usageRecordResult = MutableLiveData()
+ val remindEquipmentCount = MutableLiveData()
+ val remindDeviceCount = MutableLiveData()
fun getEquipmentList(
equipmentNo: String,
@@ -211,4 +214,34 @@
it.cause.toString().show(BaseApplication.get())
it.printStackTrace()
})
+
+ fun getRemindEquipmentCount() = launch({
+ val response = RetrofitServiceManager.getRemindEquipmentCount()
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ remindEquipmentCount.value = JSONObject(response)
+ .getJSONObject("data")
+ .getInt("remindQuantity")
+ } else {
+ response.toErrorMessage().show(BaseApplication.get())
+ }
+ }, {
+ it.cause.toString().show(BaseApplication.get())
+ it.printStackTrace()
+ })
+
+ fun getRemindDeviceCount() = launch({
+ val response = RetrofitServiceManager.getRemindDeviceCount()
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ remindDeviceCount.value = JSONObject(response)
+ .getJSONObject("data")
+ .getInt("remindQuantity")
+ } else {
+ response.toErrorMessage().show(BaseApplication.get())
+ }
+ }, {
+ it.cause.toString().show(BaseApplication.get())
+ it.printStackTrace()
+ })
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt
new file mode 100644
index 0000000..665b3be
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt
@@ -0,0 +1,32 @@
+package com.casic.xz.meterage.vm
+
+import com.google.gson.Gson
+import com.pengxh.kt.lite.vm.BaseViewModel
+
+/**
+ * 业务统计 VM
+ * */
+class StatisticsViewModel : BaseViewModel() {
+
+ private val gson by lazy { Gson() }
+// val capabilityDetail = MutableLiveData()
+//
+// fun getCapabilityDetail(id: String) = launch({
+// loadState.value = LoadState.Loading
+// val response = RetrofitServiceManager.getCapabilityDetail(id)
+// val responseCode = response.separateResponseCode()
+// if (responseCode == 200) {
+// loadState.value = LoadState.Success
+// capabilityDetail.value = gson.fromJson(
+// response, object : TypeToken() {}.type
+// )
+// } else {
+// loadState.value = LoadState.Fail
+// response.toErrorMessage().show(BaseApplication.get())
+// }
+// }, {
+// loadState.value = LoadState.Fail
+// it.cause.toString().show(BaseApplication.get())
+// it.printStackTrace()
+// })
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_business_statistics.xml b/app/src/main/res/layout/activity_business_statistics.xml
new file mode 100644
index 0000000..ba61145
--- /dev/null
+++ b/app/src/main/res/layout/activity_business_statistics.xml
@@ -0,0 +1,197 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_entrust_bs_rv_l.xml b/app/src/main/res/layout/item_entrust_bs_rv_l.xml
new file mode 100644
index 0000000..59c6aef
--- /dev/null
+++ b/app/src/main/res/layout/item_entrust_bs_rv_l.xml
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxxhdpi/dept_data.jpg b/app/src/main/res/mipmap-xxxhdpi/dept_data.jpg
new file mode 100644
index 0000000..19fd955
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/dept_data.jpg
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f3b368d..95f17d4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -74,6 +74,7 @@
+
diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
index 60f8761..66b419a 100644
--- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
@@ -171,7 +171,7 @@
"能力列表" -> requireContext().navigatePageTo()
"计量培训" -> requireContext().navigatePageTo()
"合同发票" -> requireContext().navigatePageTo()
-// "业务统计" -> requireContext().navigatePageTo()
+ "业务统计" -> requireContext().navigatePageTo()
"客户列表" -> requireContext().navigatePageTo()
"外场检测" -> requireContext().navigatePageTo()
}
diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
index 1b66d02..a8d54f5 100644
--- a/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
+++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
@@ -54,14 +54,18 @@
public static class RowsModel {
private String createTime;
+ private String customerAddress;
+ private String customerId;
private String customerName;
private String customerNo;
private String customerPhone;
private String deliverer;
+ private String delivererTel;
private String id;
private String isUrgent;
private String orderCode;
private String orderTime;
+ private String planDeliverTime;
private String remark;
private String requireOverTime;
private String sampleCount;
@@ -76,6 +80,22 @@
this.createTime = createTime;
}
+ public String getCustomerAddress() {
+ return customerAddress;
+ }
+
+ public void setCustomerAddress(String customerAddress) {
+ this.customerAddress = customerAddress;
+ }
+
+ public String getCustomerId() {
+ return customerId;
+ }
+
+ public void setCustomerId(String customerId) {
+ this.customerId = customerId;
+ }
+
public String getCustomerName() {
return customerName;
}
@@ -108,6 +128,14 @@
this.deliverer = deliverer;
}
+ public String getDelivererTel() {
+ return delivererTel;
+ }
+
+ public void setDelivererTel(String delivererTel) {
+ this.delivererTel = delivererTel;
+ }
+
public String getId() {
return id;
}
@@ -140,6 +168,14 @@
this.orderTime = orderTime;
}
+ public String getPlanDeliverTime() {
+ return planDeliverTime;
+ }
+
+ public void setPlanDeliverTime(String planDeliverTime) {
+ this.planDeliverTime = planDeliverTime;
+ }
+
public String getRemark() {
return remark;
}
diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
index 3b9791a..c4eb16d 100644
--- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
@@ -276,6 +276,18 @@
): String
/**
+ * 获取到期设备数
+ */
+ @GET("/meter/assets/remindQuantity")
+ suspend fun getRemindEquipmentCount(@Header("token") token: String): String
+
+ /**
+ * 获取到期仪器数
+ */
+ @GET("/meter/standard/remindQuantity")
+ suspend fun getRemindDeviceCount(@Header("token") token: String): String
+
+ /**
* 获取检定规程列表
*/
@POST("/meter/standard/regulation/listPage")
diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
index 996d452..8b385fa 100644
--- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
@@ -599,6 +599,20 @@
}
/**
+ * 获取到期设备数
+ */
+ suspend fun getRemindEquipmentCount(): String {
+ return api.getRemindEquipmentCount(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取到期仪器数
+ */
+ suspend fun getRemindDeviceCount(): String {
+ return api.getRemindDeviceCount(AuthenticationHelper.token!!)
+ }
+
+ /**
* 获取检定规程列表
*/
suspend fun getVerifyProcedureList(id: String): String {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt
new file mode 100644
index 0000000..9fa4040
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt
@@ -0,0 +1,257 @@
+package com.casic.xz.meterage.view.home
+
+import android.content.Context
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.base.ApplicationBaseActivity
+import com.casic.xz.meterage.callback.DateSelectedCallback
+import com.casic.xz.meterage.extensions.*
+import com.casic.xz.meterage.model.EntrustListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.vm.EntrustViewModel
+import com.casic.xz.meterage.vm.EquipmentViewModel
+import com.github.gzuliyujiang.wheelpicker.entity.DateEntity
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_business_statistics.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
+
+class BusinessStatisticsActivity : ApplicationBaseActivity() {
+
+ private val context: Context = this@BusinessStatisticsActivity
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var equipmentViewModel: EquipmentViewModel
+ private lateinit var entrustViewModel: EntrustViewModel
+ private lateinit var entrustAdapter: NormalRecyclerAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initLayoutView(): Int = R.layout.activity_business_statistics
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "业务统计"
+ }
+
+ override fun initData() {
+ equipmentViewModel = ViewModelProvider(this)[EquipmentViewModel::class.java]
+ equipmentViewModel.remindEquipmentCount.observe(this) {
+ equipOvertimeCountView.text = it.toString()
+ }
+ equipmentViewModel.remindDeviceCount.observe(this) {
+ deviceOvertimeCountView.text = it.toString()
+ }
+
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java]
+ entrustViewModel.entrustList.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ entrustLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ entrustLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023041401)
+ }
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ equipmentViewModel.getRemindEquipmentCount()
+ equipmentViewModel.getRemindDeviceCount()
+
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ private fun getEntrustListByPage() {
+ val startDate = if (startDateView.text.toString() == "开始日期") {
+ ""
+ } else {
+ "${startDateView.text} 00:00:00"
+ }
+
+ val endDate = if (endDateView.text.toString() == "结束日期") {
+ ""
+ } else {
+ "${endDateView.text} 00:00:00"
+ }
+
+ entrustViewModel.getEntrustList(
+ "",
+ "",
+ "",
+ "",
+ startDate,
+ endDate,
+ "",
+ "",
+ arrayOf(),
+ pageIndex
+ )
+ }
+
+ override fun observeRequestState() {
+ entrustViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ equipOvertimeLayout.setOnClickListener {
+
+ }
+
+ deviceOvertimeLayout.setOnClickListener {
+
+ }
+
+ workTimeLayout.setOnClickListener {
+
+ }
+
+ deptDataLayout.setOnClickListener {
+
+ }
+
+ startDateView.setOnClickListener {
+ showDatePicker(DateEntity.target(1949, 10, 1), object : DateSelectedCallback {
+ override fun onDateSelected(date: String) {
+ startDateView.text = date
+ }
+ })
+ }
+
+ endDateView.setOnClickListener {
+ showDatePicker(DateEntity.target(1949, 10, 1), object : DateSelectedCallback {
+ override fun onDateSelected(date: String) {
+ endDateView.text = date
+ }
+ })
+ }
+
+ searchButton.setOnClickListener {
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ entrustLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ entrustLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getEntrustListByPage()
+ }
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023041401 -> {
+ if (isRefresh || isLoadMore) {
+ entrustAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无委托任务数据") {
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+ } else {
+ emptyView!!.hide()
+ entrustAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_entrust_bs_rv_l, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder,
+ position: Int,
+ item: EntrustListModel.DataModel.RowsModel
+ ) {
+ //未接收:1;已接收:2;已取消:3;检测完成:4
+ val color = when (item.status) {
+ "1" -> R.color.red.convertColor(context)
+ "2" -> R.color.blue.convertColor(context)
+ "3" -> R.color.gray.convertColor(context)
+ else -> R.color.green.convertColor(context)
+ }
+ viewHolder.setBackgroundColor(R.id.entrustStateView, color)
+
+ if (item.requireOverTime.isEarlierThenCurrent()) {
+ viewHolder.setTextColor(
+ R.id.requireOverTimeView, R.color.red.convertColor(context)
+ )
+ } else {
+ viewHolder.setTextColor(
+ R.id.requireOverTimeView,
+ R.color.gray.convertColor(context)
+ )
+ }
+
+ viewHolder.setText(R.id.customerNameView, item.customerName)
+ .setText(R.id.entrustStateView, item.statusName)
+ .setText(R.id.entrustCodeView, "委托书编号:${item.orderCode}")
+ .setText(
+ R.id.createTimeView,
+ "委托创建时间:${item.createTime.formatToYearMonthDay()}"
+ ).setText(
+ R.id.planDeliverTimeView,
+ "预计送达时间:${item.planDeliverTime.formatToYearMonthDay()}"
+ )
+ .setText(
+ R.id.requireOverTimeView,
+ "要求检完时间:${item.requireOverTime.formatToYearMonthDay()}"
+ )
+ }
+ }
+ entrustRecyclerView.adapter = entrustAdapter
+ entrustAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: EntrustListModel.DataModel.RowsModel
+ ) {
+ navigatePageTo(t.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt
index c7a2e22..076ac4c 100644
--- a/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt
+++ b/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt
@@ -12,6 +12,7 @@
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.vm.BaseViewModel
import com.pengxh.kt.lite.vm.LoadState
+import org.json.JSONObject
/**
* 装备、装置相关 VM
@@ -26,6 +27,8 @@
val supportEquipmentList = MutableLiveData()
val stateChangeResult = MutableLiveData()
val usageRecordResult = MutableLiveData()
+ val remindEquipmentCount = MutableLiveData()
+ val remindDeviceCount = MutableLiveData()
fun getEquipmentList(
equipmentNo: String,
@@ -211,4 +214,34 @@
it.cause.toString().show(BaseApplication.get())
it.printStackTrace()
})
+
+ fun getRemindEquipmentCount() = launch({
+ val response = RetrofitServiceManager.getRemindEquipmentCount()
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ remindEquipmentCount.value = JSONObject(response)
+ .getJSONObject("data")
+ .getInt("remindQuantity")
+ } else {
+ response.toErrorMessage().show(BaseApplication.get())
+ }
+ }, {
+ it.cause.toString().show(BaseApplication.get())
+ it.printStackTrace()
+ })
+
+ fun getRemindDeviceCount() = launch({
+ val response = RetrofitServiceManager.getRemindDeviceCount()
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ remindDeviceCount.value = JSONObject(response)
+ .getJSONObject("data")
+ .getInt("remindQuantity")
+ } else {
+ response.toErrorMessage().show(BaseApplication.get())
+ }
+ }, {
+ it.cause.toString().show(BaseApplication.get())
+ it.printStackTrace()
+ })
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt
new file mode 100644
index 0000000..665b3be
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt
@@ -0,0 +1,32 @@
+package com.casic.xz.meterage.vm
+
+import com.google.gson.Gson
+import com.pengxh.kt.lite.vm.BaseViewModel
+
+/**
+ * 业务统计 VM
+ * */
+class StatisticsViewModel : BaseViewModel() {
+
+ private val gson by lazy { Gson() }
+// val capabilityDetail = MutableLiveData()
+//
+// fun getCapabilityDetail(id: String) = launch({
+// loadState.value = LoadState.Loading
+// val response = RetrofitServiceManager.getCapabilityDetail(id)
+// val responseCode = response.separateResponseCode()
+// if (responseCode == 200) {
+// loadState.value = LoadState.Success
+// capabilityDetail.value = gson.fromJson(
+// response, object : TypeToken() {}.type
+// )
+// } else {
+// loadState.value = LoadState.Fail
+// response.toErrorMessage().show(BaseApplication.get())
+// }
+// }, {
+// loadState.value = LoadState.Fail
+// it.cause.toString().show(BaseApplication.get())
+// it.printStackTrace()
+// })
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_business_statistics.xml b/app/src/main/res/layout/activity_business_statistics.xml
new file mode 100644
index 0000000..ba61145
--- /dev/null
+++ b/app/src/main/res/layout/activity_business_statistics.xml
@@ -0,0 +1,197 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_entrust_bs_rv_l.xml b/app/src/main/res/layout/item_entrust_bs_rv_l.xml
new file mode 100644
index 0000000..59c6aef
--- /dev/null
+++ b/app/src/main/res/layout/item_entrust_bs_rv_l.xml
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxxhdpi/dept_data.jpg b/app/src/main/res/mipmap-xxxhdpi/dept_data.jpg
new file mode 100644
index 0000000..19fd955
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/dept_data.jpg
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/device_overtime.jpg b/app/src/main/res/mipmap-xxxhdpi/device_overtime.jpg
new file mode 100644
index 0000000..682ddea
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/device_overtime.jpg
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f3b368d..95f17d4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -74,6 +74,7 @@
+
diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
index 60f8761..66b419a 100644
--- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
@@ -171,7 +171,7 @@
"能力列表" -> requireContext().navigatePageTo()
"计量培训" -> requireContext().navigatePageTo()
"合同发票" -> requireContext().navigatePageTo()
-// "业务统计" -> requireContext().navigatePageTo()
+ "业务统计" -> requireContext().navigatePageTo()
"客户列表" -> requireContext().navigatePageTo()
"外场检测" -> requireContext().navigatePageTo()
}
diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
index 1b66d02..a8d54f5 100644
--- a/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
+++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
@@ -54,14 +54,18 @@
public static class RowsModel {
private String createTime;
+ private String customerAddress;
+ private String customerId;
private String customerName;
private String customerNo;
private String customerPhone;
private String deliverer;
+ private String delivererTel;
private String id;
private String isUrgent;
private String orderCode;
private String orderTime;
+ private String planDeliverTime;
private String remark;
private String requireOverTime;
private String sampleCount;
@@ -76,6 +80,22 @@
this.createTime = createTime;
}
+ public String getCustomerAddress() {
+ return customerAddress;
+ }
+
+ public void setCustomerAddress(String customerAddress) {
+ this.customerAddress = customerAddress;
+ }
+
+ public String getCustomerId() {
+ return customerId;
+ }
+
+ public void setCustomerId(String customerId) {
+ this.customerId = customerId;
+ }
+
public String getCustomerName() {
return customerName;
}
@@ -108,6 +128,14 @@
this.deliverer = deliverer;
}
+ public String getDelivererTel() {
+ return delivererTel;
+ }
+
+ public void setDelivererTel(String delivererTel) {
+ this.delivererTel = delivererTel;
+ }
+
public String getId() {
return id;
}
@@ -140,6 +168,14 @@
this.orderTime = orderTime;
}
+ public String getPlanDeliverTime() {
+ return planDeliverTime;
+ }
+
+ public void setPlanDeliverTime(String planDeliverTime) {
+ this.planDeliverTime = planDeliverTime;
+ }
+
public String getRemark() {
return remark;
}
diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
index 3b9791a..c4eb16d 100644
--- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
@@ -276,6 +276,18 @@
): String
/**
+ * 获取到期设备数
+ */
+ @GET("/meter/assets/remindQuantity")
+ suspend fun getRemindEquipmentCount(@Header("token") token: String): String
+
+ /**
+ * 获取到期仪器数
+ */
+ @GET("/meter/standard/remindQuantity")
+ suspend fun getRemindDeviceCount(@Header("token") token: String): String
+
+ /**
* 获取检定规程列表
*/
@POST("/meter/standard/regulation/listPage")
diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
index 996d452..8b385fa 100644
--- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
@@ -599,6 +599,20 @@
}
/**
+ * 获取到期设备数
+ */
+ suspend fun getRemindEquipmentCount(): String {
+ return api.getRemindEquipmentCount(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取到期仪器数
+ */
+ suspend fun getRemindDeviceCount(): String {
+ return api.getRemindDeviceCount(AuthenticationHelper.token!!)
+ }
+
+ /**
* 获取检定规程列表
*/
suspend fun getVerifyProcedureList(id: String): String {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt
new file mode 100644
index 0000000..9fa4040
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt
@@ -0,0 +1,257 @@
+package com.casic.xz.meterage.view.home
+
+import android.content.Context
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.base.ApplicationBaseActivity
+import com.casic.xz.meterage.callback.DateSelectedCallback
+import com.casic.xz.meterage.extensions.*
+import com.casic.xz.meterage.model.EntrustListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.vm.EntrustViewModel
+import com.casic.xz.meterage.vm.EquipmentViewModel
+import com.github.gzuliyujiang.wheelpicker.entity.DateEntity
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_business_statistics.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
+
+class BusinessStatisticsActivity : ApplicationBaseActivity() {
+
+ private val context: Context = this@BusinessStatisticsActivity
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var equipmentViewModel: EquipmentViewModel
+ private lateinit var entrustViewModel: EntrustViewModel
+ private lateinit var entrustAdapter: NormalRecyclerAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initLayoutView(): Int = R.layout.activity_business_statistics
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "业务统计"
+ }
+
+ override fun initData() {
+ equipmentViewModel = ViewModelProvider(this)[EquipmentViewModel::class.java]
+ equipmentViewModel.remindEquipmentCount.observe(this) {
+ equipOvertimeCountView.text = it.toString()
+ }
+ equipmentViewModel.remindDeviceCount.observe(this) {
+ deviceOvertimeCountView.text = it.toString()
+ }
+
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java]
+ entrustViewModel.entrustList.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ entrustLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ entrustLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023041401)
+ }
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ equipmentViewModel.getRemindEquipmentCount()
+ equipmentViewModel.getRemindDeviceCount()
+
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ private fun getEntrustListByPage() {
+ val startDate = if (startDateView.text.toString() == "开始日期") {
+ ""
+ } else {
+ "${startDateView.text} 00:00:00"
+ }
+
+ val endDate = if (endDateView.text.toString() == "结束日期") {
+ ""
+ } else {
+ "${endDateView.text} 00:00:00"
+ }
+
+ entrustViewModel.getEntrustList(
+ "",
+ "",
+ "",
+ "",
+ startDate,
+ endDate,
+ "",
+ "",
+ arrayOf(),
+ pageIndex
+ )
+ }
+
+ override fun observeRequestState() {
+ entrustViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ equipOvertimeLayout.setOnClickListener {
+
+ }
+
+ deviceOvertimeLayout.setOnClickListener {
+
+ }
+
+ workTimeLayout.setOnClickListener {
+
+ }
+
+ deptDataLayout.setOnClickListener {
+
+ }
+
+ startDateView.setOnClickListener {
+ showDatePicker(DateEntity.target(1949, 10, 1), object : DateSelectedCallback {
+ override fun onDateSelected(date: String) {
+ startDateView.text = date
+ }
+ })
+ }
+
+ endDateView.setOnClickListener {
+ showDatePicker(DateEntity.target(1949, 10, 1), object : DateSelectedCallback {
+ override fun onDateSelected(date: String) {
+ endDateView.text = date
+ }
+ })
+ }
+
+ searchButton.setOnClickListener {
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ entrustLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ entrustLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getEntrustListByPage()
+ }
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023041401 -> {
+ if (isRefresh || isLoadMore) {
+ entrustAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无委托任务数据") {
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+ } else {
+ emptyView!!.hide()
+ entrustAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_entrust_bs_rv_l, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder,
+ position: Int,
+ item: EntrustListModel.DataModel.RowsModel
+ ) {
+ //未接收:1;已接收:2;已取消:3;检测完成:4
+ val color = when (item.status) {
+ "1" -> R.color.red.convertColor(context)
+ "2" -> R.color.blue.convertColor(context)
+ "3" -> R.color.gray.convertColor(context)
+ else -> R.color.green.convertColor(context)
+ }
+ viewHolder.setBackgroundColor(R.id.entrustStateView, color)
+
+ if (item.requireOverTime.isEarlierThenCurrent()) {
+ viewHolder.setTextColor(
+ R.id.requireOverTimeView, R.color.red.convertColor(context)
+ )
+ } else {
+ viewHolder.setTextColor(
+ R.id.requireOverTimeView,
+ R.color.gray.convertColor(context)
+ )
+ }
+
+ viewHolder.setText(R.id.customerNameView, item.customerName)
+ .setText(R.id.entrustStateView, item.statusName)
+ .setText(R.id.entrustCodeView, "委托书编号:${item.orderCode}")
+ .setText(
+ R.id.createTimeView,
+ "委托创建时间:${item.createTime.formatToYearMonthDay()}"
+ ).setText(
+ R.id.planDeliverTimeView,
+ "预计送达时间:${item.planDeliverTime.formatToYearMonthDay()}"
+ )
+ .setText(
+ R.id.requireOverTimeView,
+ "要求检完时间:${item.requireOverTime.formatToYearMonthDay()}"
+ )
+ }
+ }
+ entrustRecyclerView.adapter = entrustAdapter
+ entrustAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: EntrustListModel.DataModel.RowsModel
+ ) {
+ navigatePageTo(t.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt
index c7a2e22..076ac4c 100644
--- a/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt
+++ b/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt
@@ -12,6 +12,7 @@
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.vm.BaseViewModel
import com.pengxh.kt.lite.vm.LoadState
+import org.json.JSONObject
/**
* 装备、装置相关 VM
@@ -26,6 +27,8 @@
val supportEquipmentList = MutableLiveData()
val stateChangeResult = MutableLiveData()
val usageRecordResult = MutableLiveData()
+ val remindEquipmentCount = MutableLiveData()
+ val remindDeviceCount = MutableLiveData()
fun getEquipmentList(
equipmentNo: String,
@@ -211,4 +214,34 @@
it.cause.toString().show(BaseApplication.get())
it.printStackTrace()
})
+
+ fun getRemindEquipmentCount() = launch({
+ val response = RetrofitServiceManager.getRemindEquipmentCount()
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ remindEquipmentCount.value = JSONObject(response)
+ .getJSONObject("data")
+ .getInt("remindQuantity")
+ } else {
+ response.toErrorMessage().show(BaseApplication.get())
+ }
+ }, {
+ it.cause.toString().show(BaseApplication.get())
+ it.printStackTrace()
+ })
+
+ fun getRemindDeviceCount() = launch({
+ val response = RetrofitServiceManager.getRemindDeviceCount()
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ remindDeviceCount.value = JSONObject(response)
+ .getJSONObject("data")
+ .getInt("remindQuantity")
+ } else {
+ response.toErrorMessage().show(BaseApplication.get())
+ }
+ }, {
+ it.cause.toString().show(BaseApplication.get())
+ it.printStackTrace()
+ })
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt
new file mode 100644
index 0000000..665b3be
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt
@@ -0,0 +1,32 @@
+package com.casic.xz.meterage.vm
+
+import com.google.gson.Gson
+import com.pengxh.kt.lite.vm.BaseViewModel
+
+/**
+ * 业务统计 VM
+ * */
+class StatisticsViewModel : BaseViewModel() {
+
+ private val gson by lazy { Gson() }
+// val capabilityDetail = MutableLiveData()
+//
+// fun getCapabilityDetail(id: String) = launch({
+// loadState.value = LoadState.Loading
+// val response = RetrofitServiceManager.getCapabilityDetail(id)
+// val responseCode = response.separateResponseCode()
+// if (responseCode == 200) {
+// loadState.value = LoadState.Success
+// capabilityDetail.value = gson.fromJson(
+// response, object : TypeToken() {}.type
+// )
+// } else {
+// loadState.value = LoadState.Fail
+// response.toErrorMessage().show(BaseApplication.get())
+// }
+// }, {
+// loadState.value = LoadState.Fail
+// it.cause.toString().show(BaseApplication.get())
+// it.printStackTrace()
+// })
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_business_statistics.xml b/app/src/main/res/layout/activity_business_statistics.xml
new file mode 100644
index 0000000..ba61145
--- /dev/null
+++ b/app/src/main/res/layout/activity_business_statistics.xml
@@ -0,0 +1,197 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_entrust_bs_rv_l.xml b/app/src/main/res/layout/item_entrust_bs_rv_l.xml
new file mode 100644
index 0000000..59c6aef
--- /dev/null
+++ b/app/src/main/res/layout/item_entrust_bs_rv_l.xml
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxxhdpi/dept_data.jpg b/app/src/main/res/mipmap-xxxhdpi/dept_data.jpg
new file mode 100644
index 0000000..19fd955
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/dept_data.jpg
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/device_overtime.jpg b/app/src/main/res/mipmap-xxxhdpi/device_overtime.jpg
new file mode 100644
index 0000000..682ddea
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/device_overtime.jpg
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/equip_overtime.jpg b/app/src/main/res/mipmap-xxxhdpi/equip_overtime.jpg
new file mode 100644
index 0000000..694974f
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/equip_overtime.jpg
Binary files differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f3b368d..95f17d4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -74,6 +74,7 @@
+
diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
index 60f8761..66b419a 100644
--- a/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
+++ b/app/src/main/java/com/casic/xz/meterage/fragment/HomePageFragment.kt
@@ -171,7 +171,7 @@
"能力列表" -> requireContext().navigatePageTo()
"计量培训" -> requireContext().navigatePageTo()
"合同发票" -> requireContext().navigatePageTo()
-// "业务统计" -> requireContext().navigatePageTo()
+ "业务统计" -> requireContext().navigatePageTo()
"客户列表" -> requireContext().navigatePageTo()
"外场检测" -> requireContext().navigatePageTo()
}
diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
index 1b66d02..a8d54f5 100644
--- a/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
+++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustListModel.java
@@ -54,14 +54,18 @@
public static class RowsModel {
private String createTime;
+ private String customerAddress;
+ private String customerId;
private String customerName;
private String customerNo;
private String customerPhone;
private String deliverer;
+ private String delivererTel;
private String id;
private String isUrgent;
private String orderCode;
private String orderTime;
+ private String planDeliverTime;
private String remark;
private String requireOverTime;
private String sampleCount;
@@ -76,6 +80,22 @@
this.createTime = createTime;
}
+ public String getCustomerAddress() {
+ return customerAddress;
+ }
+
+ public void setCustomerAddress(String customerAddress) {
+ this.customerAddress = customerAddress;
+ }
+
+ public String getCustomerId() {
+ return customerId;
+ }
+
+ public void setCustomerId(String customerId) {
+ this.customerId = customerId;
+ }
+
public String getCustomerName() {
return customerName;
}
@@ -108,6 +128,14 @@
this.deliverer = deliverer;
}
+ public String getDelivererTel() {
+ return delivererTel;
+ }
+
+ public void setDelivererTel(String delivererTel) {
+ this.delivererTel = delivererTel;
+ }
+
public String getId() {
return id;
}
@@ -140,6 +168,14 @@
this.orderTime = orderTime;
}
+ public String getPlanDeliverTime() {
+ return planDeliverTime;
+ }
+
+ public void setPlanDeliverTime(String planDeliverTime) {
+ this.planDeliverTime = planDeliverTime;
+ }
+
public String getRemark() {
return remark;
}
diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
index 3b9791a..c4eb16d 100644
--- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt
@@ -276,6 +276,18 @@
): String
/**
+ * 获取到期设备数
+ */
+ @GET("/meter/assets/remindQuantity")
+ suspend fun getRemindEquipmentCount(@Header("token") token: String): String
+
+ /**
+ * 获取到期仪器数
+ */
+ @GET("/meter/standard/remindQuantity")
+ suspend fun getRemindDeviceCount(@Header("token") token: String): String
+
+ /**
* 获取检定规程列表
*/
@POST("/meter/standard/regulation/listPage")
diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
index 996d452..8b385fa 100644
--- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt
@@ -599,6 +599,20 @@
}
/**
+ * 获取到期设备数
+ */
+ suspend fun getRemindEquipmentCount(): String {
+ return api.getRemindEquipmentCount(AuthenticationHelper.token!!)
+ }
+
+ /**
+ * 获取到期仪器数
+ */
+ suspend fun getRemindDeviceCount(): String {
+ return api.getRemindDeviceCount(AuthenticationHelper.token!!)
+ }
+
+ /**
* 获取检定规程列表
*/
suspend fun getVerifyProcedureList(id: String): String {
diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt
new file mode 100644
index 0000000..9fa4040
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/view/home/BusinessStatisticsActivity.kt
@@ -0,0 +1,257 @@
+package com.casic.xz.meterage.view.home
+
+import android.content.Context
+import android.os.Handler
+import androidx.lifecycle.ViewModelProvider
+import com.casic.xz.meterage.R
+import com.casic.xz.meterage.base.ApplicationBaseActivity
+import com.casic.xz.meterage.callback.DateSelectedCallback
+import com.casic.xz.meterage.extensions.*
+import com.casic.xz.meterage.model.EntrustListModel
+import com.casic.xz.meterage.utils.LoadingDialogHub
+import com.casic.xz.meterage.vm.EntrustViewModel
+import com.casic.xz.meterage.vm.EquipmentViewModel
+import com.github.gzuliyujiang.wheelpicker.entity.DateEntity
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter
+import com.pengxh.kt.lite.adapter.ViewHolder
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.extensions.navigatePageTo
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.utils.WeakReferenceHandler
+import com.pengxh.kt.lite.vm.LoadState
+import kotlinx.android.synthetic.main.activity_business_statistics.*
+import kotlinx.android.synthetic.main.include_empty_view.*
+import kotlinx.android.synthetic.main.include_search_title.*
+
+class BusinessStatisticsActivity : ApplicationBaseActivity() {
+
+ private val context: Context = this@BusinessStatisticsActivity
+ private lateinit var weakReferenceHandler: WeakReferenceHandler
+ private lateinit var equipmentViewModel: EquipmentViewModel
+ private lateinit var entrustViewModel: EntrustViewModel
+ private lateinit var entrustAdapter: NormalRecyclerAdapter
+ private var dataBeans: MutableList = ArrayList()
+ private var pageIndex = 1
+ private var isRefresh = false
+ private var isLoadMore = false
+
+ override fun initLayoutView(): Int = R.layout.activity_business_statistics
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.text = "业务统计"
+ }
+
+ override fun initData() {
+ equipmentViewModel = ViewModelProvider(this)[EquipmentViewModel::class.java]
+ equipmentViewModel.remindEquipmentCount.observe(this) {
+ equipOvertimeCountView.text = it.toString()
+ }
+ equipmentViewModel.remindDeviceCount.observe(this) {
+ deviceOvertimeCountView.text = it.toString()
+ }
+
+ weakReferenceHandler = WeakReferenceHandler(callback)
+ entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java]
+ entrustViewModel.entrustList.observe(this) {
+ if (it.code == 200) {
+ val dataRows = it.data?.rows!!
+ when {
+ isRefresh -> {
+ dataBeans.clear()
+ dataBeans = dataRows
+ entrustLayout.finishRefresh()
+ isRefresh = false
+ }
+ isLoadMore -> {
+ if (dataRows.size == 0) {
+ "到底了,别拉了".show(this)
+ }
+ dataBeans.addAll(dataRows)
+ entrustLayout.finishLoadMore()
+ isLoadMore = false
+ }
+ else -> {
+ dataBeans = dataRows
+ }
+ }
+ weakReferenceHandler.sendEmptyMessage(2023041401)
+ }
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ equipmentViewModel.getRemindEquipmentCount()
+ equipmentViewModel.getRemindDeviceCount()
+
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ private fun getEntrustListByPage() {
+ val startDate = if (startDateView.text.toString() == "开始日期") {
+ ""
+ } else {
+ "${startDateView.text} 00:00:00"
+ }
+
+ val endDate = if (endDateView.text.toString() == "结束日期") {
+ ""
+ } else {
+ "${endDateView.text} 00:00:00"
+ }
+
+ entrustViewModel.getEntrustList(
+ "",
+ "",
+ "",
+ "",
+ startDate,
+ endDate,
+ "",
+ "",
+ arrayOf(),
+ pageIndex
+ )
+ }
+
+ override fun observeRequestState() {
+ entrustViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ equipOvertimeLayout.setOnClickListener {
+
+ }
+
+ deviceOvertimeLayout.setOnClickListener {
+
+ }
+
+ workTimeLayout.setOnClickListener {
+
+ }
+
+ deptDataLayout.setOnClickListener {
+
+ }
+
+ startDateView.setOnClickListener {
+ showDatePicker(DateEntity.target(1949, 10, 1), object : DateSelectedCallback {
+ override fun onDateSelected(date: String) {
+ startDateView.text = date
+ }
+ })
+ }
+
+ endDateView.setOnClickListener {
+ showDatePicker(DateEntity.target(1949, 10, 1), object : DateSelectedCallback {
+ override fun onDateSelected(date: String) {
+ endDateView.text = date
+ }
+ })
+ }
+
+ searchButton.setOnClickListener {
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ entrustLayout.setOnRefreshListener {
+ isRefresh = true
+ //刷新之后页码重置
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+
+ entrustLayout.setOnLoadMoreListener {
+ isLoadMore = true
+ pageIndex++
+ getEntrustListByPage()
+ }
+ }
+
+ private val callback = Handler.Callback {
+ when (it.what) {
+ 2023041401 -> {
+ if (isRefresh || isLoadMore) {
+ entrustAdapter.notifyDataSetChanged()
+ } else {
+ if (dataBeans.size == 0) {
+ emptyView!!.showEmptyPage("无委托任务数据") {
+ pageIndex = 1
+ getEntrustListByPage()
+ }
+ } else {
+ emptyView!!.hide()
+ entrustAdapter = object :
+ NormalRecyclerAdapter(
+ R.layout.item_entrust_bs_rv_l, dataBeans
+ ) {
+ override fun convertView(
+ viewHolder: ViewHolder,
+ position: Int,
+ item: EntrustListModel.DataModel.RowsModel
+ ) {
+ //未接收:1;已接收:2;已取消:3;检测完成:4
+ val color = when (item.status) {
+ "1" -> R.color.red.convertColor(context)
+ "2" -> R.color.blue.convertColor(context)
+ "3" -> R.color.gray.convertColor(context)
+ else -> R.color.green.convertColor(context)
+ }
+ viewHolder.setBackgroundColor(R.id.entrustStateView, color)
+
+ if (item.requireOverTime.isEarlierThenCurrent()) {
+ viewHolder.setTextColor(
+ R.id.requireOverTimeView, R.color.red.convertColor(context)
+ )
+ } else {
+ viewHolder.setTextColor(
+ R.id.requireOverTimeView,
+ R.color.gray.convertColor(context)
+ )
+ }
+
+ viewHolder.setText(R.id.customerNameView, item.customerName)
+ .setText(R.id.entrustStateView, item.statusName)
+ .setText(R.id.entrustCodeView, "委托书编号:${item.orderCode}")
+ .setText(
+ R.id.createTimeView,
+ "委托创建时间:${item.createTime.formatToYearMonthDay()}"
+ ).setText(
+ R.id.planDeliverTimeView,
+ "预计送达时间:${item.planDeliverTime.formatToYearMonthDay()}"
+ )
+ .setText(
+ R.id.requireOverTimeView,
+ "要求检完时间:${item.requireOverTime.formatToYearMonthDay()}"
+ )
+ }
+ }
+ entrustRecyclerView.adapter = entrustAdapter
+ entrustAdapter.setOnItemClickedListener(object :
+ NormalRecyclerAdapter.OnItemClickedListener {
+ override fun onItemClicked(
+ position: Int, t: EntrustListModel.DataModel.RowsModel
+ ) {
+ navigatePageTo(t.id)
+ }
+ })
+ }
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt
index c7a2e22..076ac4c 100644
--- a/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt
+++ b/app/src/main/java/com/casic/xz/meterage/vm/EquipmentViewModel.kt
@@ -12,6 +12,7 @@
import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.vm.BaseViewModel
import com.pengxh.kt.lite.vm.LoadState
+import org.json.JSONObject
/**
* 装备、装置相关 VM
@@ -26,6 +27,8 @@
val supportEquipmentList = MutableLiveData()
val stateChangeResult = MutableLiveData()
val usageRecordResult = MutableLiveData()
+ val remindEquipmentCount = MutableLiveData()
+ val remindDeviceCount = MutableLiveData()
fun getEquipmentList(
equipmentNo: String,
@@ -211,4 +214,34 @@
it.cause.toString().show(BaseApplication.get())
it.printStackTrace()
})
+
+ fun getRemindEquipmentCount() = launch({
+ val response = RetrofitServiceManager.getRemindEquipmentCount()
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ remindEquipmentCount.value = JSONObject(response)
+ .getJSONObject("data")
+ .getInt("remindQuantity")
+ } else {
+ response.toErrorMessage().show(BaseApplication.get())
+ }
+ }, {
+ it.cause.toString().show(BaseApplication.get())
+ it.printStackTrace()
+ })
+
+ fun getRemindDeviceCount() = launch({
+ val response = RetrofitServiceManager.getRemindDeviceCount()
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ remindDeviceCount.value = JSONObject(response)
+ .getJSONObject("data")
+ .getInt("remindQuantity")
+ } else {
+ response.toErrorMessage().show(BaseApplication.get())
+ }
+ }, {
+ it.cause.toString().show(BaseApplication.get())
+ it.printStackTrace()
+ })
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt
new file mode 100644
index 0000000..665b3be
--- /dev/null
+++ b/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt
@@ -0,0 +1,32 @@
+package com.casic.xz.meterage.vm
+
+import com.google.gson.Gson
+import com.pengxh.kt.lite.vm.BaseViewModel
+
+/**
+ * 业务统计 VM
+ * */
+class StatisticsViewModel : BaseViewModel() {
+
+ private val gson by lazy { Gson() }
+// val capabilityDetail = MutableLiveData()
+//
+// fun getCapabilityDetail(id: String) = launch({
+// loadState.value = LoadState.Loading
+// val response = RetrofitServiceManager.getCapabilityDetail(id)
+// val responseCode = response.separateResponseCode()
+// if (responseCode == 200) {
+// loadState.value = LoadState.Success
+// capabilityDetail.value = gson.fromJson(
+// response, object : TypeToken() {}.type
+// )
+// } else {
+// loadState.value = LoadState.Fail
+// response.toErrorMessage().show(BaseApplication.get())
+// }
+// }, {
+// loadState.value = LoadState.Fail
+// it.cause.toString().show(BaseApplication.get())
+// it.printStackTrace()
+// })
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_business_statistics.xml b/app/src/main/res/layout/activity_business_statistics.xml
new file mode 100644
index 0000000..ba61145
--- /dev/null
+++ b/app/src/main/res/layout/activity_business_statistics.xml
@@ -0,0 +1,197 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_entrust_bs_rv_l.xml b/app/src/main/res/layout/item_entrust_bs_rv_l.xml
new file mode 100644
index 0000000..59c6aef
--- /dev/null
+++ b/app/src/main/res/layout/item_entrust_bs_rv_l.xml
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxxhdpi/dept_data.jpg b/app/src/main/res/mipmap-xxxhdpi/dept_data.jpg
new file mode 100644
index 0000000..19fd955
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/dept_data.jpg
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/device_overtime.jpg b/app/src/main/res/mipmap-xxxhdpi/device_overtime.jpg
new file mode 100644
index 0000000..682ddea
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/device_overtime.jpg
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/equip_overtime.jpg b/app/src/main/res/mipmap-xxxhdpi/equip_overtime.jpg
new file mode 100644
index 0000000..694974f
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/equip_overtime.jpg
Binary files differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/work_time.jpg b/app/src/main/res/mipmap-xxxhdpi/work_time.jpg
new file mode 100644
index 0000000..a0cabe6
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/work_time.jpg
Binary files differ