diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 968c535..5ea6bd7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -77,6 +77,8 @@ + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 968c535..5ea6bd7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -77,6 +77,8 @@ + + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index b12a0bf..77c77d4 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -68,7 +68,7 @@ } userViewModel.updateResult.observe(this) { if (it.code == 200) { - "头像更新成功,下次登录生效".show(requireContext()) + "头像更新成功".show(requireContext()) } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 968c535..5ea6bd7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -77,6 +77,8 @@ + + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index b12a0bf..77c77d4 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -68,7 +68,7 @@ } userViewModel.updateResult.observe(this) { if (it.code == 200) { - "头像更新成功,下次登录生效".show(requireContext()) + "头像更新成功".show(requireContext()) } } diff --git a/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java b/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java new file mode 100644 index 0000000..f37fda0 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java @@ -0,0 +1,127 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class RealTimeWorkModel { + + private int code; + private List data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certificatesToday; + private String deptId; + private String expireRate; + private String expireSamplesToday; + private String expireSamplesYear; + private String inMeasureExpireSamplesYear; + private String organizeName; + private String organizeNo; + private String samplesCompletedToday; + private String samplesYear; + + public String getCertificatesToday() { + return certificatesToday; + } + + public void setCertificatesToday(String certificatesToday) { + this.certificatesToday = certificatesToday; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getExpireRate() { + return expireRate; + } + + public void setExpireRate(String expireRate) { + this.expireRate = expireRate; + } + + public String getExpireSamplesToday() { + return expireSamplesToday; + } + + public void setExpireSamplesToday(String expireSamplesToday) { + this.expireSamplesToday = expireSamplesToday; + } + + public String getExpireSamplesYear() { + return expireSamplesYear; + } + + public void setExpireSamplesYear(String expireSamplesYear) { + this.expireSamplesYear = expireSamplesYear; + } + + public String getInMeasureExpireSamplesYear() { + return inMeasureExpireSamplesYear; + } + + public void setInMeasureExpireSamplesYear(String inMeasureExpireSamplesYear) { + this.inMeasureExpireSamplesYear = inMeasureExpireSamplesYear; + } + + public String getOrganizeName() { + return organizeName; + } + + public void setOrganizeName(String organizeName) { + this.organizeName = organizeName; + } + + public String getOrganizeNo() { + return organizeNo; + } + + public void setOrganizeNo(String organizeNo) { + this.organizeNo = organizeNo; + } + + public String getSamplesCompletedToday() { + return samplesCompletedToday; + } + + public void setSamplesCompletedToday(String samplesCompletedToday) { + this.samplesCompletedToday = samplesCompletedToday; + } + + public String getSamplesYear() { + return samplesYear; + } + + public void setSamplesYear(String samplesYear) { + this.samplesYear = samplesYear; + } + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 968c535..5ea6bd7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -77,6 +77,8 @@ + + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index b12a0bf..77c77d4 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -68,7 +68,7 @@ } userViewModel.updateResult.observe(this) { if (it.code == 200) { - "头像更新成功,下次登录生效".show(requireContext()) + "头像更新成功".show(requireContext()) } } diff --git a/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java b/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java new file mode 100644 index 0000000..f37fda0 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java @@ -0,0 +1,127 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class RealTimeWorkModel { + + private int code; + private List data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certificatesToday; + private String deptId; + private String expireRate; + private String expireSamplesToday; + private String expireSamplesYear; + private String inMeasureExpireSamplesYear; + private String organizeName; + private String organizeNo; + private String samplesCompletedToday; + private String samplesYear; + + public String getCertificatesToday() { + return certificatesToday; + } + + public void setCertificatesToday(String certificatesToday) { + this.certificatesToday = certificatesToday; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getExpireRate() { + return expireRate; + } + + public void setExpireRate(String expireRate) { + this.expireRate = expireRate; + } + + public String getExpireSamplesToday() { + return expireSamplesToday; + } + + public void setExpireSamplesToday(String expireSamplesToday) { + this.expireSamplesToday = expireSamplesToday; + } + + public String getExpireSamplesYear() { + return expireSamplesYear; + } + + public void setExpireSamplesYear(String expireSamplesYear) { + this.expireSamplesYear = expireSamplesYear; + } + + public String getInMeasureExpireSamplesYear() { + return inMeasureExpireSamplesYear; + } + + public void setInMeasureExpireSamplesYear(String inMeasureExpireSamplesYear) { + this.inMeasureExpireSamplesYear = inMeasureExpireSamplesYear; + } + + public String getOrganizeName() { + return organizeName; + } + + public void setOrganizeName(String organizeName) { + this.organizeName = organizeName; + } + + public String getOrganizeNo() { + return organizeNo; + } + + public void setOrganizeNo(String organizeNo) { + this.organizeNo = organizeNo; + } + + public String getSamplesCompletedToday() { + return samplesCompletedToday; + } + + public void setSamplesCompletedToday(String samplesCompletedToday) { + this.samplesCompletedToday = samplesCompletedToday; + } + + public String getSamplesYear() { + return samplesYear; + } + + public void setSamplesYear(String samplesYear) { + this.samplesYear = samplesYear; + } + } +} 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 01627ed..1b05568 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 @@ -538,4 +538,19 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 获取实时工作统计 + */ + @GET("/business/board/workStatistics") + suspend fun getRealTimeWork(@Header("token") token: String): String + + /** + * 获取部门综合分析 + */ + @POST("/business/board/deptComprehensive") + suspend fun getDeptComprehensive( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 968c535..5ea6bd7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -77,6 +77,8 @@ + + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index b12a0bf..77c77d4 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -68,7 +68,7 @@ } userViewModel.updateResult.observe(this) { if (it.code == 200) { - "头像更新成功,下次登录生效".show(requireContext()) + "头像更新成功".show(requireContext()) } } diff --git a/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java b/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java new file mode 100644 index 0000000..f37fda0 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java @@ -0,0 +1,127 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class RealTimeWorkModel { + + private int code; + private List data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certificatesToday; + private String deptId; + private String expireRate; + private String expireSamplesToday; + private String expireSamplesYear; + private String inMeasureExpireSamplesYear; + private String organizeName; + private String organizeNo; + private String samplesCompletedToday; + private String samplesYear; + + public String getCertificatesToday() { + return certificatesToday; + } + + public void setCertificatesToday(String certificatesToday) { + this.certificatesToday = certificatesToday; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getExpireRate() { + return expireRate; + } + + public void setExpireRate(String expireRate) { + this.expireRate = expireRate; + } + + public String getExpireSamplesToday() { + return expireSamplesToday; + } + + public void setExpireSamplesToday(String expireSamplesToday) { + this.expireSamplesToday = expireSamplesToday; + } + + public String getExpireSamplesYear() { + return expireSamplesYear; + } + + public void setExpireSamplesYear(String expireSamplesYear) { + this.expireSamplesYear = expireSamplesYear; + } + + public String getInMeasureExpireSamplesYear() { + return inMeasureExpireSamplesYear; + } + + public void setInMeasureExpireSamplesYear(String inMeasureExpireSamplesYear) { + this.inMeasureExpireSamplesYear = inMeasureExpireSamplesYear; + } + + public String getOrganizeName() { + return organizeName; + } + + public void setOrganizeName(String organizeName) { + this.organizeName = organizeName; + } + + public String getOrganizeNo() { + return organizeNo; + } + + public void setOrganizeNo(String organizeNo) { + this.organizeNo = organizeNo; + } + + public String getSamplesCompletedToday() { + return samplesCompletedToday; + } + + public void setSamplesCompletedToday(String samplesCompletedToday) { + this.samplesCompletedToday = samplesCompletedToday; + } + + public String getSamplesYear() { + return samplesYear; + } + + public void setSamplesYear(String samplesYear) { + this.samplesYear = samplesYear; + } + } +} 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 01627ed..1b05568 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 @@ -538,4 +538,19 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 获取实时工作统计 + */ + @GET("/business/board/workStatistics") + suspend fun getRealTimeWork(@Header("token") token: String): String + + /** + * 获取部门综合分析 + */ + @POST("/business/board/deptComprehensive") + suspend fun getDeptComprehensive( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file 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 aabd4fe..b2fd2cb 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 @@ -1253,4 +1253,26 @@ ) return api.getOutfieldDetectionDetail(AuthenticationHelper.token!!, requestBody) } + + /** + * 获取实时工作统计 + */ + suspend fun getRealTimeWork(): String { + return api.getRealTimeWork(AuthenticationHelper.token!!) + } + + /** + * 获取现场检测详情 + */ + suspend fun getDeptComprehensive(deptId: String, startTime: String, endTime: String): String { + val param = JsonObject() + param.addProperty("deptId", deptId) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 968c535..5ea6bd7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -77,6 +77,8 @@ + + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index b12a0bf..77c77d4 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -68,7 +68,7 @@ } userViewModel.updateResult.observe(this) { if (it.code == 200) { - "头像更新成功,下次登录生效".show(requireContext()) + "头像更新成功".show(requireContext()) } } diff --git a/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java b/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java new file mode 100644 index 0000000..f37fda0 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java @@ -0,0 +1,127 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class RealTimeWorkModel { + + private int code; + private List data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certificatesToday; + private String deptId; + private String expireRate; + private String expireSamplesToday; + private String expireSamplesYear; + private String inMeasureExpireSamplesYear; + private String organizeName; + private String organizeNo; + private String samplesCompletedToday; + private String samplesYear; + + public String getCertificatesToday() { + return certificatesToday; + } + + public void setCertificatesToday(String certificatesToday) { + this.certificatesToday = certificatesToday; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getExpireRate() { + return expireRate; + } + + public void setExpireRate(String expireRate) { + this.expireRate = expireRate; + } + + public String getExpireSamplesToday() { + return expireSamplesToday; + } + + public void setExpireSamplesToday(String expireSamplesToday) { + this.expireSamplesToday = expireSamplesToday; + } + + public String getExpireSamplesYear() { + return expireSamplesYear; + } + + public void setExpireSamplesYear(String expireSamplesYear) { + this.expireSamplesYear = expireSamplesYear; + } + + public String getInMeasureExpireSamplesYear() { + return inMeasureExpireSamplesYear; + } + + public void setInMeasureExpireSamplesYear(String inMeasureExpireSamplesYear) { + this.inMeasureExpireSamplesYear = inMeasureExpireSamplesYear; + } + + public String getOrganizeName() { + return organizeName; + } + + public void setOrganizeName(String organizeName) { + this.organizeName = organizeName; + } + + public String getOrganizeNo() { + return organizeNo; + } + + public void setOrganizeNo(String organizeNo) { + this.organizeNo = organizeNo; + } + + public String getSamplesCompletedToday() { + return samplesCompletedToday; + } + + public void setSamplesCompletedToday(String samplesCompletedToday) { + this.samplesCompletedToday = samplesCompletedToday; + } + + public String getSamplesYear() { + return samplesYear; + } + + public void setSamplesYear(String samplesYear) { + this.samplesYear = samplesYear; + } + } +} 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 01627ed..1b05568 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 @@ -538,4 +538,19 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 获取实时工作统计 + */ + @GET("/business/board/workStatistics") + suspend fun getRealTimeWork(@Header("token") token: String): String + + /** + * 获取部门综合分析 + */ + @POST("/business/board/deptComprehensive") + suspend fun getDeptComprehensive( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file 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 aabd4fe..b2fd2cb 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 @@ -1253,4 +1253,26 @@ ) return api.getOutfieldDetectionDetail(AuthenticationHelper.token!!, requestBody) } + + /** + * 获取实时工作统计 + */ + suspend fun getRealTimeWork(): String { + return api.getRealTimeWork(AuthenticationHelper.token!!) + } + + /** + * 获取现场检测详情 + */ + suspend fun getDeptComprehensive(deptId: String, startTime: String, endTime: String): String { + val param = JsonObject() + param.addProperty("deptId", deptId) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt index b4f8a8b..56b1769 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt @@ -66,7 +66,7 @@ } userViewModel.updateResult.observe(this) { if (it.code == 200) { - "头像更新成功,下次登录生效".show(this) + "头像更新成功".show(this) } } userViewModel.outResult.observe(this) { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 968c535..5ea6bd7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -77,6 +77,8 @@ + + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index b12a0bf..77c77d4 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -68,7 +68,7 @@ } userViewModel.updateResult.observe(this) { if (it.code == 200) { - "头像更新成功,下次登录生效".show(requireContext()) + "头像更新成功".show(requireContext()) } } diff --git a/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java b/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java new file mode 100644 index 0000000..f37fda0 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java @@ -0,0 +1,127 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class RealTimeWorkModel { + + private int code; + private List data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certificatesToday; + private String deptId; + private String expireRate; + private String expireSamplesToday; + private String expireSamplesYear; + private String inMeasureExpireSamplesYear; + private String organizeName; + private String organizeNo; + private String samplesCompletedToday; + private String samplesYear; + + public String getCertificatesToday() { + return certificatesToday; + } + + public void setCertificatesToday(String certificatesToday) { + this.certificatesToday = certificatesToday; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getExpireRate() { + return expireRate; + } + + public void setExpireRate(String expireRate) { + this.expireRate = expireRate; + } + + public String getExpireSamplesToday() { + return expireSamplesToday; + } + + public void setExpireSamplesToday(String expireSamplesToday) { + this.expireSamplesToday = expireSamplesToday; + } + + public String getExpireSamplesYear() { + return expireSamplesYear; + } + + public void setExpireSamplesYear(String expireSamplesYear) { + this.expireSamplesYear = expireSamplesYear; + } + + public String getInMeasureExpireSamplesYear() { + return inMeasureExpireSamplesYear; + } + + public void setInMeasureExpireSamplesYear(String inMeasureExpireSamplesYear) { + this.inMeasureExpireSamplesYear = inMeasureExpireSamplesYear; + } + + public String getOrganizeName() { + return organizeName; + } + + public void setOrganizeName(String organizeName) { + this.organizeName = organizeName; + } + + public String getOrganizeNo() { + return organizeNo; + } + + public void setOrganizeNo(String organizeNo) { + this.organizeNo = organizeNo; + } + + public String getSamplesCompletedToday() { + return samplesCompletedToday; + } + + public void setSamplesCompletedToday(String samplesCompletedToday) { + this.samplesCompletedToday = samplesCompletedToday; + } + + public String getSamplesYear() { + return samplesYear; + } + + public void setSamplesYear(String samplesYear) { + this.samplesYear = samplesYear; + } + } +} 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 01627ed..1b05568 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 @@ -538,4 +538,19 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 获取实时工作统计 + */ + @GET("/business/board/workStatistics") + suspend fun getRealTimeWork(@Header("token") token: String): String + + /** + * 获取部门综合分析 + */ + @POST("/business/board/deptComprehensive") + suspend fun getDeptComprehensive( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file 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 aabd4fe..b2fd2cb 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 @@ -1253,4 +1253,26 @@ ) return api.getOutfieldDetectionDetail(AuthenticationHelper.token!!, requestBody) } + + /** + * 获取实时工作统计 + */ + suspend fun getRealTimeWork(): String { + return api.getRealTimeWork(AuthenticationHelper.token!!) + } + + /** + * 获取现场检测详情 + */ + suspend fun getDeptComprehensive(deptId: String, startTime: String, endTime: String): String { + val param = JsonObject() + param.addProperty("deptId", deptId) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt index b4f8a8b..56b1769 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt @@ -66,7 +66,7 @@ } userViewModel.updateResult.observe(this) { if (it.code == 200) { - "头像更新成功,下次登录生效".show(this) + "头像更新成功".show(this) } } userViewModel.outResult.observe(this) { 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 index 2d0126a..f8733bd 100644 --- 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 @@ -6,7 +6,9 @@ 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.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.extensions.showDatePicker +import com.casic.xz.meterage.extensions.showEmptyPage import com.casic.xz.meterage.model.EntrustListModel import com.casic.xz.meterage.utils.LoadingDialogHub import com.casic.xz.meterage.vm.EntrustViewModel @@ -140,12 +142,14 @@ navigatePageTo() } + //实时工作 workTimeLayout.setOnClickListener { - + navigatePageTo() } + //部门综合分析 deptDataLayout.setOnClickListener { - + navigatePageTo() } startDateView.setOnClickListener { @@ -214,31 +218,9 @@ } 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 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 968c535..5ea6bd7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -77,6 +77,8 @@ + + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index b12a0bf..77c77d4 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -68,7 +68,7 @@ } userViewModel.updateResult.observe(this) { if (it.code == 200) { - "头像更新成功,下次登录生效".show(requireContext()) + "头像更新成功".show(requireContext()) } } diff --git a/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java b/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java new file mode 100644 index 0000000..f37fda0 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java @@ -0,0 +1,127 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class RealTimeWorkModel { + + private int code; + private List data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certificatesToday; + private String deptId; + private String expireRate; + private String expireSamplesToday; + private String expireSamplesYear; + private String inMeasureExpireSamplesYear; + private String organizeName; + private String organizeNo; + private String samplesCompletedToday; + private String samplesYear; + + public String getCertificatesToday() { + return certificatesToday; + } + + public void setCertificatesToday(String certificatesToday) { + this.certificatesToday = certificatesToday; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getExpireRate() { + return expireRate; + } + + public void setExpireRate(String expireRate) { + this.expireRate = expireRate; + } + + public String getExpireSamplesToday() { + return expireSamplesToday; + } + + public void setExpireSamplesToday(String expireSamplesToday) { + this.expireSamplesToday = expireSamplesToday; + } + + public String getExpireSamplesYear() { + return expireSamplesYear; + } + + public void setExpireSamplesYear(String expireSamplesYear) { + this.expireSamplesYear = expireSamplesYear; + } + + public String getInMeasureExpireSamplesYear() { + return inMeasureExpireSamplesYear; + } + + public void setInMeasureExpireSamplesYear(String inMeasureExpireSamplesYear) { + this.inMeasureExpireSamplesYear = inMeasureExpireSamplesYear; + } + + public String getOrganizeName() { + return organizeName; + } + + public void setOrganizeName(String organizeName) { + this.organizeName = organizeName; + } + + public String getOrganizeNo() { + return organizeNo; + } + + public void setOrganizeNo(String organizeNo) { + this.organizeNo = organizeNo; + } + + public String getSamplesCompletedToday() { + return samplesCompletedToday; + } + + public void setSamplesCompletedToday(String samplesCompletedToday) { + this.samplesCompletedToday = samplesCompletedToday; + } + + public String getSamplesYear() { + return samplesYear; + } + + public void setSamplesYear(String samplesYear) { + this.samplesYear = samplesYear; + } + } +} 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 01627ed..1b05568 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 @@ -538,4 +538,19 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 获取实时工作统计 + */ + @GET("/business/board/workStatistics") + suspend fun getRealTimeWork(@Header("token") token: String): String + + /** + * 获取部门综合分析 + */ + @POST("/business/board/deptComprehensive") + suspend fun getDeptComprehensive( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file 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 aabd4fe..b2fd2cb 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 @@ -1253,4 +1253,26 @@ ) return api.getOutfieldDetectionDetail(AuthenticationHelper.token!!, requestBody) } + + /** + * 获取实时工作统计 + */ + suspend fun getRealTimeWork(): String { + return api.getRealTimeWork(AuthenticationHelper.token!!) + } + + /** + * 获取现场检测详情 + */ + suspend fun getDeptComprehensive(deptId: String, startTime: String, endTime: String): String { + val param = JsonObject() + param.addProperty("deptId", deptId) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt index b4f8a8b..56b1769 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt @@ -66,7 +66,7 @@ } userViewModel.updateResult.observe(this) { if (it.code == 200) { - "头像更新成功,下次登录生效".show(this) + "头像更新成功".show(this) } } userViewModel.outResult.observe(this) { 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 index 2d0126a..f8733bd 100644 --- 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 @@ -6,7 +6,9 @@ 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.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.extensions.showDatePicker +import com.casic.xz.meterage.extensions.showEmptyPage import com.casic.xz.meterage.model.EntrustListModel import com.casic.xz.meterage.utils.LoadingDialogHub import com.casic.xz.meterage.vm.EntrustViewModel @@ -140,12 +142,14 @@ navigatePageTo() } + //实时工作 workTimeLayout.setOnClickListener { - + navigatePageTo() } + //部门综合分析 deptDataLayout.setOnClickListener { - + navigatePageTo() } startDateView.setOnClickListener { @@ -214,31 +218,9 @@ } 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 diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/RealTimeWorkActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/RealTimeWorkActivity.kt new file mode 100644 index 0000000..2c0d106 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/RealTimeWorkActivity.kt @@ -0,0 +1,73 @@ +package com.casic.xz.meterage.view.home + +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.model.RealTimeWorkModel +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.StatisticsViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.activity_realtime_work.* +import kotlinx.android.synthetic.main.include_search_title.* + +class RealTimeWorkActivity : ApplicationBaseActivity() { + + private lateinit var statisticsViewModel: StatisticsViewModel + + override fun initLayoutView(): Int = R.layout.activity_realtime_work + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "实时工作" + } + + override fun initData() { + statisticsViewModel = ViewModelProvider(this)[StatisticsViewModel::class.java] + statisticsViewModel.realTimeWorkResult.observe(this) { + if (it.code == 200) { + val workAdapter = object : NormalRecyclerAdapter( + R.layout.item_realtime_work_rv_l, it.data + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: RealTimeWorkModel.DataModel + ) { + viewHolder.setText(R.id.libNameView, item.organizeName) + .setText(R.id.samplesCompletedTodayView, item.samplesCompletedToday) + .setText(R.id.certificatesTodayView, item.certificatesToday) + .setText(R.id.expireSamplesTodayView, item.expireSamplesToday) + .setText(R.id.samplesYearView, item.samplesYear) + .setText(R.id.expireSamplesYearView, item.expireSamplesYear) + .setText(R.id.expireRateView, item.expireRate) + .setText( + R.id.inMeasureExpireSamplesYearView, item.inMeasureExpireSamplesYear + ) + } + } + workRecyclerView.adapter = workAdapter + } + } + } + + override fun observeRequestState() { + statisticsViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun onResume() { + super.onResume() + statisticsViewModel.getRealTimeWork() + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 968c535..5ea6bd7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -77,6 +77,8 @@ + + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index b12a0bf..77c77d4 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -68,7 +68,7 @@ } userViewModel.updateResult.observe(this) { if (it.code == 200) { - "头像更新成功,下次登录生效".show(requireContext()) + "头像更新成功".show(requireContext()) } } diff --git a/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java b/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java new file mode 100644 index 0000000..f37fda0 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java @@ -0,0 +1,127 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class RealTimeWorkModel { + + private int code; + private List data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certificatesToday; + private String deptId; + private String expireRate; + private String expireSamplesToday; + private String expireSamplesYear; + private String inMeasureExpireSamplesYear; + private String organizeName; + private String organizeNo; + private String samplesCompletedToday; + private String samplesYear; + + public String getCertificatesToday() { + return certificatesToday; + } + + public void setCertificatesToday(String certificatesToday) { + this.certificatesToday = certificatesToday; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getExpireRate() { + return expireRate; + } + + public void setExpireRate(String expireRate) { + this.expireRate = expireRate; + } + + public String getExpireSamplesToday() { + return expireSamplesToday; + } + + public void setExpireSamplesToday(String expireSamplesToday) { + this.expireSamplesToday = expireSamplesToday; + } + + public String getExpireSamplesYear() { + return expireSamplesYear; + } + + public void setExpireSamplesYear(String expireSamplesYear) { + this.expireSamplesYear = expireSamplesYear; + } + + public String getInMeasureExpireSamplesYear() { + return inMeasureExpireSamplesYear; + } + + public void setInMeasureExpireSamplesYear(String inMeasureExpireSamplesYear) { + this.inMeasureExpireSamplesYear = inMeasureExpireSamplesYear; + } + + public String getOrganizeName() { + return organizeName; + } + + public void setOrganizeName(String organizeName) { + this.organizeName = organizeName; + } + + public String getOrganizeNo() { + return organizeNo; + } + + public void setOrganizeNo(String organizeNo) { + this.organizeNo = organizeNo; + } + + public String getSamplesCompletedToday() { + return samplesCompletedToday; + } + + public void setSamplesCompletedToday(String samplesCompletedToday) { + this.samplesCompletedToday = samplesCompletedToday; + } + + public String getSamplesYear() { + return samplesYear; + } + + public void setSamplesYear(String samplesYear) { + this.samplesYear = samplesYear; + } + } +} 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 01627ed..1b05568 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 @@ -538,4 +538,19 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 获取实时工作统计 + */ + @GET("/business/board/workStatistics") + suspend fun getRealTimeWork(@Header("token") token: String): String + + /** + * 获取部门综合分析 + */ + @POST("/business/board/deptComprehensive") + suspend fun getDeptComprehensive( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file 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 aabd4fe..b2fd2cb 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 @@ -1253,4 +1253,26 @@ ) return api.getOutfieldDetectionDetail(AuthenticationHelper.token!!, requestBody) } + + /** + * 获取实时工作统计 + */ + suspend fun getRealTimeWork(): String { + return api.getRealTimeWork(AuthenticationHelper.token!!) + } + + /** + * 获取现场检测详情 + */ + suspend fun getDeptComprehensive(deptId: String, startTime: String, endTime: String): String { + val param = JsonObject() + param.addProperty("deptId", deptId) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt index b4f8a8b..56b1769 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt @@ -66,7 +66,7 @@ } userViewModel.updateResult.observe(this) { if (it.code == 200) { - "头像更新成功,下次登录生效".show(this) + "头像更新成功".show(this) } } userViewModel.outResult.observe(this) { 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 index 2d0126a..f8733bd 100644 --- 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 @@ -6,7 +6,9 @@ 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.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.extensions.showDatePicker +import com.casic.xz.meterage.extensions.showEmptyPage import com.casic.xz.meterage.model.EntrustListModel import com.casic.xz.meterage.utils.LoadingDialogHub import com.casic.xz.meterage.vm.EntrustViewModel @@ -140,12 +142,14 @@ navigatePageTo() } + //实时工作 workTimeLayout.setOnClickListener { - + navigatePageTo() } + //部门综合分析 deptDataLayout.setOnClickListener { - + navigatePageTo() } startDateView.setOnClickListener { @@ -214,31 +218,9 @@ } 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 diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/RealTimeWorkActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/RealTimeWorkActivity.kt new file mode 100644 index 0000000..2c0d106 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/RealTimeWorkActivity.kt @@ -0,0 +1,73 @@ +package com.casic.xz.meterage.view.home + +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.model.RealTimeWorkModel +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.StatisticsViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.activity_realtime_work.* +import kotlinx.android.synthetic.main.include_search_title.* + +class RealTimeWorkActivity : ApplicationBaseActivity() { + + private lateinit var statisticsViewModel: StatisticsViewModel + + override fun initLayoutView(): Int = R.layout.activity_realtime_work + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "实时工作" + } + + override fun initData() { + statisticsViewModel = ViewModelProvider(this)[StatisticsViewModel::class.java] + statisticsViewModel.realTimeWorkResult.observe(this) { + if (it.code == 200) { + val workAdapter = object : NormalRecyclerAdapter( + R.layout.item_realtime_work_rv_l, it.data + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: RealTimeWorkModel.DataModel + ) { + viewHolder.setText(R.id.libNameView, item.organizeName) + .setText(R.id.samplesCompletedTodayView, item.samplesCompletedToday) + .setText(R.id.certificatesTodayView, item.certificatesToday) + .setText(R.id.expireSamplesTodayView, item.expireSamplesToday) + .setText(R.id.samplesYearView, item.samplesYear) + .setText(R.id.expireSamplesYearView, item.expireSamplesYear) + .setText(R.id.expireRateView, item.expireRate) + .setText( + R.id.inMeasureExpireSamplesYearView, item.inMeasureExpireSamplesYear + ) + } + } + workRecyclerView.adapter = workAdapter + } + } + } + + override fun observeRequestState() { + statisticsViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun onResume() { + super.onResume() + statisticsViewModel.getRealTimeWork() + } +} \ 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 index 665b3be..36c9f2d 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt @@ -1,7 +1,18 @@ package com.casic.xz.meterage.vm +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.DeptComprehensiveModel +import com.casic.xz.meterage.model.RealTimeWorkModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState /** * 业务统计 VM @@ -9,24 +20,44 @@ 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() -// }) + val realTimeWorkResult = MutableLiveData() + val deptComprehensiveResult = MutableLiveData() + + fun getRealTimeWork() = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getRealTimeWork() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + realTimeWorkResult.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() + }) + + fun getDeptComprehensive(deptId: String, startTime: String, endTime: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getDeptComprehensive(deptId, startTime, endTime) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + deptComprehensiveResult.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 968c535..5ea6bd7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -77,6 +77,8 @@ + + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index b12a0bf..77c77d4 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -68,7 +68,7 @@ } userViewModel.updateResult.observe(this) { if (it.code == 200) { - "头像更新成功,下次登录生效".show(requireContext()) + "头像更新成功".show(requireContext()) } } diff --git a/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java b/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java new file mode 100644 index 0000000..f37fda0 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java @@ -0,0 +1,127 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class RealTimeWorkModel { + + private int code; + private List data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certificatesToday; + private String deptId; + private String expireRate; + private String expireSamplesToday; + private String expireSamplesYear; + private String inMeasureExpireSamplesYear; + private String organizeName; + private String organizeNo; + private String samplesCompletedToday; + private String samplesYear; + + public String getCertificatesToday() { + return certificatesToday; + } + + public void setCertificatesToday(String certificatesToday) { + this.certificatesToday = certificatesToday; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getExpireRate() { + return expireRate; + } + + public void setExpireRate(String expireRate) { + this.expireRate = expireRate; + } + + public String getExpireSamplesToday() { + return expireSamplesToday; + } + + public void setExpireSamplesToday(String expireSamplesToday) { + this.expireSamplesToday = expireSamplesToday; + } + + public String getExpireSamplesYear() { + return expireSamplesYear; + } + + public void setExpireSamplesYear(String expireSamplesYear) { + this.expireSamplesYear = expireSamplesYear; + } + + public String getInMeasureExpireSamplesYear() { + return inMeasureExpireSamplesYear; + } + + public void setInMeasureExpireSamplesYear(String inMeasureExpireSamplesYear) { + this.inMeasureExpireSamplesYear = inMeasureExpireSamplesYear; + } + + public String getOrganizeName() { + return organizeName; + } + + public void setOrganizeName(String organizeName) { + this.organizeName = organizeName; + } + + public String getOrganizeNo() { + return organizeNo; + } + + public void setOrganizeNo(String organizeNo) { + this.organizeNo = organizeNo; + } + + public String getSamplesCompletedToday() { + return samplesCompletedToday; + } + + public void setSamplesCompletedToday(String samplesCompletedToday) { + this.samplesCompletedToday = samplesCompletedToday; + } + + public String getSamplesYear() { + return samplesYear; + } + + public void setSamplesYear(String samplesYear) { + this.samplesYear = samplesYear; + } + } +} 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 01627ed..1b05568 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 @@ -538,4 +538,19 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 获取实时工作统计 + */ + @GET("/business/board/workStatistics") + suspend fun getRealTimeWork(@Header("token") token: String): String + + /** + * 获取部门综合分析 + */ + @POST("/business/board/deptComprehensive") + suspend fun getDeptComprehensive( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file 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 aabd4fe..b2fd2cb 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 @@ -1253,4 +1253,26 @@ ) return api.getOutfieldDetectionDetail(AuthenticationHelper.token!!, requestBody) } + + /** + * 获取实时工作统计 + */ + suspend fun getRealTimeWork(): String { + return api.getRealTimeWork(AuthenticationHelper.token!!) + } + + /** + * 获取现场检测详情 + */ + suspend fun getDeptComprehensive(deptId: String, startTime: String, endTime: String): String { + val param = JsonObject() + param.addProperty("deptId", deptId) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt index b4f8a8b..56b1769 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt @@ -66,7 +66,7 @@ } userViewModel.updateResult.observe(this) { if (it.code == 200) { - "头像更新成功,下次登录生效".show(this) + "头像更新成功".show(this) } } userViewModel.outResult.observe(this) { 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 index 2d0126a..f8733bd 100644 --- 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 @@ -6,7 +6,9 @@ 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.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.extensions.showDatePicker +import com.casic.xz.meterage.extensions.showEmptyPage import com.casic.xz.meterage.model.EntrustListModel import com.casic.xz.meterage.utils.LoadingDialogHub import com.casic.xz.meterage.vm.EntrustViewModel @@ -140,12 +142,14 @@ navigatePageTo() } + //实时工作 workTimeLayout.setOnClickListener { - + navigatePageTo() } + //部门综合分析 deptDataLayout.setOnClickListener { - + navigatePageTo() } startDateView.setOnClickListener { @@ -214,31 +218,9 @@ } 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 diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/RealTimeWorkActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/RealTimeWorkActivity.kt new file mode 100644 index 0000000..2c0d106 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/RealTimeWorkActivity.kt @@ -0,0 +1,73 @@ +package com.casic.xz.meterage.view.home + +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.model.RealTimeWorkModel +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.StatisticsViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.activity_realtime_work.* +import kotlinx.android.synthetic.main.include_search_title.* + +class RealTimeWorkActivity : ApplicationBaseActivity() { + + private lateinit var statisticsViewModel: StatisticsViewModel + + override fun initLayoutView(): Int = R.layout.activity_realtime_work + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "实时工作" + } + + override fun initData() { + statisticsViewModel = ViewModelProvider(this)[StatisticsViewModel::class.java] + statisticsViewModel.realTimeWorkResult.observe(this) { + if (it.code == 200) { + val workAdapter = object : NormalRecyclerAdapter( + R.layout.item_realtime_work_rv_l, it.data + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: RealTimeWorkModel.DataModel + ) { + viewHolder.setText(R.id.libNameView, item.organizeName) + .setText(R.id.samplesCompletedTodayView, item.samplesCompletedToday) + .setText(R.id.certificatesTodayView, item.certificatesToday) + .setText(R.id.expireSamplesTodayView, item.expireSamplesToday) + .setText(R.id.samplesYearView, item.samplesYear) + .setText(R.id.expireSamplesYearView, item.expireSamplesYear) + .setText(R.id.expireRateView, item.expireRate) + .setText( + R.id.inMeasureExpireSamplesYearView, item.inMeasureExpireSamplesYear + ) + } + } + workRecyclerView.adapter = workAdapter + } + } + } + + override fun observeRequestState() { + statisticsViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun onResume() { + super.onResume() + statisticsViewModel.getRealTimeWork() + } +} \ 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 index 665b3be..36c9f2d 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt @@ -1,7 +1,18 @@ package com.casic.xz.meterage.vm +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.DeptComprehensiveModel +import com.casic.xz.meterage.model.RealTimeWorkModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState /** * 业务统计 VM @@ -9,24 +20,44 @@ 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() -// }) + val realTimeWorkResult = MutableLiveData() + val deptComprehensiveResult = MutableLiveData() + + fun getRealTimeWork() = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getRealTimeWork() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + realTimeWorkResult.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() + }) + + fun getDeptComprehensive(deptId: String, startTime: String, endTime: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getDeptComprehensive(deptId, startTime, endTime) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + deptComprehensiveResult.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_realtime_work.xml b/app/src/main/res/layout/activity_realtime_work.xml new file mode 100644 index 0000000..c8af0ad --- /dev/null +++ b/app/src/main/res/layout/activity_realtime_work.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 968c535..5ea6bd7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -77,6 +77,8 @@ + + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index b12a0bf..77c77d4 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -68,7 +68,7 @@ } userViewModel.updateResult.observe(this) { if (it.code == 200) { - "头像更新成功,下次登录生效".show(requireContext()) + "头像更新成功".show(requireContext()) } } diff --git a/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java b/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java new file mode 100644 index 0000000..f37fda0 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java @@ -0,0 +1,127 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class RealTimeWorkModel { + + private int code; + private List data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certificatesToday; + private String deptId; + private String expireRate; + private String expireSamplesToday; + private String expireSamplesYear; + private String inMeasureExpireSamplesYear; + private String organizeName; + private String organizeNo; + private String samplesCompletedToday; + private String samplesYear; + + public String getCertificatesToday() { + return certificatesToday; + } + + public void setCertificatesToday(String certificatesToday) { + this.certificatesToday = certificatesToday; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getExpireRate() { + return expireRate; + } + + public void setExpireRate(String expireRate) { + this.expireRate = expireRate; + } + + public String getExpireSamplesToday() { + return expireSamplesToday; + } + + public void setExpireSamplesToday(String expireSamplesToday) { + this.expireSamplesToday = expireSamplesToday; + } + + public String getExpireSamplesYear() { + return expireSamplesYear; + } + + public void setExpireSamplesYear(String expireSamplesYear) { + this.expireSamplesYear = expireSamplesYear; + } + + public String getInMeasureExpireSamplesYear() { + return inMeasureExpireSamplesYear; + } + + public void setInMeasureExpireSamplesYear(String inMeasureExpireSamplesYear) { + this.inMeasureExpireSamplesYear = inMeasureExpireSamplesYear; + } + + public String getOrganizeName() { + return organizeName; + } + + public void setOrganizeName(String organizeName) { + this.organizeName = organizeName; + } + + public String getOrganizeNo() { + return organizeNo; + } + + public void setOrganizeNo(String organizeNo) { + this.organizeNo = organizeNo; + } + + public String getSamplesCompletedToday() { + return samplesCompletedToday; + } + + public void setSamplesCompletedToday(String samplesCompletedToday) { + this.samplesCompletedToday = samplesCompletedToday; + } + + public String getSamplesYear() { + return samplesYear; + } + + public void setSamplesYear(String samplesYear) { + this.samplesYear = samplesYear; + } + } +} 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 01627ed..1b05568 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 @@ -538,4 +538,19 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 获取实时工作统计 + */ + @GET("/business/board/workStatistics") + suspend fun getRealTimeWork(@Header("token") token: String): String + + /** + * 获取部门综合分析 + */ + @POST("/business/board/deptComprehensive") + suspend fun getDeptComprehensive( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file 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 aabd4fe..b2fd2cb 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 @@ -1253,4 +1253,26 @@ ) return api.getOutfieldDetectionDetail(AuthenticationHelper.token!!, requestBody) } + + /** + * 获取实时工作统计 + */ + suspend fun getRealTimeWork(): String { + return api.getRealTimeWork(AuthenticationHelper.token!!) + } + + /** + * 获取现场检测详情 + */ + suspend fun getDeptComprehensive(deptId: String, startTime: String, endTime: String): String { + val param = JsonObject() + param.addProperty("deptId", deptId) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt index b4f8a8b..56b1769 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt @@ -66,7 +66,7 @@ } userViewModel.updateResult.observe(this) { if (it.code == 200) { - "头像更新成功,下次登录生效".show(this) + "头像更新成功".show(this) } } userViewModel.outResult.observe(this) { 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 index 2d0126a..f8733bd 100644 --- 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 @@ -6,7 +6,9 @@ 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.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.extensions.showDatePicker +import com.casic.xz.meterage.extensions.showEmptyPage import com.casic.xz.meterage.model.EntrustListModel import com.casic.xz.meterage.utils.LoadingDialogHub import com.casic.xz.meterage.vm.EntrustViewModel @@ -140,12 +142,14 @@ navigatePageTo() } + //实时工作 workTimeLayout.setOnClickListener { - + navigatePageTo() } + //部门综合分析 deptDataLayout.setOnClickListener { - + navigatePageTo() } startDateView.setOnClickListener { @@ -214,31 +218,9 @@ } 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 diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/RealTimeWorkActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/RealTimeWorkActivity.kt new file mode 100644 index 0000000..2c0d106 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/RealTimeWorkActivity.kt @@ -0,0 +1,73 @@ +package com.casic.xz.meterage.view.home + +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.model.RealTimeWorkModel +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.StatisticsViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.activity_realtime_work.* +import kotlinx.android.synthetic.main.include_search_title.* + +class RealTimeWorkActivity : ApplicationBaseActivity() { + + private lateinit var statisticsViewModel: StatisticsViewModel + + override fun initLayoutView(): Int = R.layout.activity_realtime_work + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "实时工作" + } + + override fun initData() { + statisticsViewModel = ViewModelProvider(this)[StatisticsViewModel::class.java] + statisticsViewModel.realTimeWorkResult.observe(this) { + if (it.code == 200) { + val workAdapter = object : NormalRecyclerAdapter( + R.layout.item_realtime_work_rv_l, it.data + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: RealTimeWorkModel.DataModel + ) { + viewHolder.setText(R.id.libNameView, item.organizeName) + .setText(R.id.samplesCompletedTodayView, item.samplesCompletedToday) + .setText(R.id.certificatesTodayView, item.certificatesToday) + .setText(R.id.expireSamplesTodayView, item.expireSamplesToday) + .setText(R.id.samplesYearView, item.samplesYear) + .setText(R.id.expireSamplesYearView, item.expireSamplesYear) + .setText(R.id.expireRateView, item.expireRate) + .setText( + R.id.inMeasureExpireSamplesYearView, item.inMeasureExpireSamplesYear + ) + } + } + workRecyclerView.adapter = workAdapter + } + } + } + + override fun observeRequestState() { + statisticsViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun onResume() { + super.onResume() + statisticsViewModel.getRealTimeWork() + } +} \ 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 index 665b3be..36c9f2d 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt @@ -1,7 +1,18 @@ package com.casic.xz.meterage.vm +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.DeptComprehensiveModel +import com.casic.xz.meterage.model.RealTimeWorkModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState /** * 业务统计 VM @@ -9,24 +20,44 @@ 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() -// }) + val realTimeWorkResult = MutableLiveData() + val deptComprehensiveResult = MutableLiveData() + + fun getRealTimeWork() = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getRealTimeWork() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + realTimeWorkResult.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() + }) + + fun getDeptComprehensive(deptId: String, startTime: String, endTime: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getDeptComprehensive(deptId, startTime, endTime) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + deptComprehensiveResult.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_realtime_work.xml b/app/src/main/res/layout/activity_realtime_work.xml new file mode 100644 index 0000000..c8af0ad --- /dev/null +++ b/app/src/main/res/layout/activity_realtime_work.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + \ 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 index 59c6aef..e956521 100644 --- a/app/src/main/res/layout/item_entrust_bs_rv_l.xml +++ b/app/src/main/res/layout/item_entrust_bs_rv_l.xml @@ -10,68 +10,36 @@ android:paddingTop="@dimen/dp_10" android:paddingBottom="@dimen/dp_5"> - + + + android:text="委托书编号:wt1231232455454553223" + android:textColor="@color/gray" + android:textSize="@dimen/sp_14" /> - - - - - - - - - + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 968c535..5ea6bd7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -77,6 +77,8 @@ + + diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index b12a0bf..77c77d4 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -68,7 +68,7 @@ } userViewModel.updateResult.observe(this) { if (it.code == 200) { - "头像更新成功,下次登录生效".show(requireContext()) + "头像更新成功".show(requireContext()) } } diff --git a/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java b/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java new file mode 100644 index 0000000..f37fda0 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/RealTimeWorkModel.java @@ -0,0 +1,127 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class RealTimeWorkModel { + + private int code; + private List data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certificatesToday; + private String deptId; + private String expireRate; + private String expireSamplesToday; + private String expireSamplesYear; + private String inMeasureExpireSamplesYear; + private String organizeName; + private String organizeNo; + private String samplesCompletedToday; + private String samplesYear; + + public String getCertificatesToday() { + return certificatesToday; + } + + public void setCertificatesToday(String certificatesToday) { + this.certificatesToday = certificatesToday; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getExpireRate() { + return expireRate; + } + + public void setExpireRate(String expireRate) { + this.expireRate = expireRate; + } + + public String getExpireSamplesToday() { + return expireSamplesToday; + } + + public void setExpireSamplesToday(String expireSamplesToday) { + this.expireSamplesToday = expireSamplesToday; + } + + public String getExpireSamplesYear() { + return expireSamplesYear; + } + + public void setExpireSamplesYear(String expireSamplesYear) { + this.expireSamplesYear = expireSamplesYear; + } + + public String getInMeasureExpireSamplesYear() { + return inMeasureExpireSamplesYear; + } + + public void setInMeasureExpireSamplesYear(String inMeasureExpireSamplesYear) { + this.inMeasureExpireSamplesYear = inMeasureExpireSamplesYear; + } + + public String getOrganizeName() { + return organizeName; + } + + public void setOrganizeName(String organizeName) { + this.organizeName = organizeName; + } + + public String getOrganizeNo() { + return organizeNo; + } + + public void setOrganizeNo(String organizeNo) { + this.organizeNo = organizeNo; + } + + public String getSamplesCompletedToday() { + return samplesCompletedToday; + } + + public void setSamplesCompletedToday(String samplesCompletedToday) { + this.samplesCompletedToday = samplesCompletedToday; + } + + public String getSamplesYear() { + return samplesYear; + } + + public void setSamplesYear(String samplesYear) { + this.samplesYear = samplesYear; + } + } +} 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 01627ed..1b05568 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 @@ -538,4 +538,19 @@ @Header("token") token: String, @Body requestBody: RequestBody ): String + + /** + * 获取实时工作统计 + */ + @GET("/business/board/workStatistics") + suspend fun getRealTimeWork(@Header("token") token: String): String + + /** + * 获取部门综合分析 + */ + @POST("/business/board/deptComprehensive") + suspend fun getDeptComprehensive( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file 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 aabd4fe..b2fd2cb 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 @@ -1253,4 +1253,26 @@ ) return api.getOutfieldDetectionDetail(AuthenticationHelper.token!!, requestBody) } + + /** + * 获取实时工作统计 + */ + suspend fun getRealTimeWork(): String { + return api.getRealTimeWork(AuthenticationHelper.token!!) + } + + /** + * 获取现场检测详情 + */ + suspend fun getDeptComprehensive(deptId: String, startTime: String, endTime: String): String { + val param = JsonObject() + param.addProperty("deptId", deptId) + param.addProperty("startTime", startTime) + param.addProperty("endTime", endTime) + + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getDeptComprehensive(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt index b4f8a8b..56b1769 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/UserInfoActivity.kt @@ -66,7 +66,7 @@ } userViewModel.updateResult.observe(this) { if (it.code == 200) { - "头像更新成功,下次登录生效".show(this) + "头像更新成功".show(this) } } userViewModel.outResult.observe(this) { 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 index 2d0126a..f8733bd 100644 --- 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 @@ -6,7 +6,9 @@ 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.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.extensions.showDatePicker +import com.casic.xz.meterage.extensions.showEmptyPage import com.casic.xz.meterage.model.EntrustListModel import com.casic.xz.meterage.utils.LoadingDialogHub import com.casic.xz.meterage.vm.EntrustViewModel @@ -140,12 +142,14 @@ navigatePageTo() } + //实时工作 workTimeLayout.setOnClickListener { - + navigatePageTo() } + //部门综合分析 deptDataLayout.setOnClickListener { - + navigatePageTo() } startDateView.setOnClickListener { @@ -214,31 +218,9 @@ } 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 diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/RealTimeWorkActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/RealTimeWorkActivity.kt new file mode 100644 index 0000000..2c0d106 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/RealTimeWorkActivity.kt @@ -0,0 +1,73 @@ +package com.casic.xz.meterage.view.home + +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.base.ApplicationBaseActivity +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.model.RealTimeWorkModel +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.StatisticsViewModel +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.activity_realtime_work.* +import kotlinx.android.synthetic.main.include_search_title.* + +class RealTimeWorkActivity : ApplicationBaseActivity() { + + private lateinit var statisticsViewModel: StatisticsViewModel + + override fun initLayoutView(): Int = R.layout.activity_realtime_work + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "实时工作" + } + + override fun initData() { + statisticsViewModel = ViewModelProvider(this)[StatisticsViewModel::class.java] + statisticsViewModel.realTimeWorkResult.observe(this) { + if (it.code == 200) { + val workAdapter = object : NormalRecyclerAdapter( + R.layout.item_realtime_work_rv_l, it.data + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, item: RealTimeWorkModel.DataModel + ) { + viewHolder.setText(R.id.libNameView, item.organizeName) + .setText(R.id.samplesCompletedTodayView, item.samplesCompletedToday) + .setText(R.id.certificatesTodayView, item.certificatesToday) + .setText(R.id.expireSamplesTodayView, item.expireSamplesToday) + .setText(R.id.samplesYearView, item.samplesYear) + .setText(R.id.expireSamplesYearView, item.expireSamplesYear) + .setText(R.id.expireRateView, item.expireRate) + .setText( + R.id.inMeasureExpireSamplesYearView, item.inMeasureExpireSamplesYear + ) + } + } + workRecyclerView.adapter = workAdapter + } + } + } + + override fun observeRequestState() { + statisticsViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun onResume() { + super.onResume() + statisticsViewModel.getRealTimeWork() + } +} \ 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 index 665b3be..36c9f2d 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/StatisticsViewModel.kt @@ -1,7 +1,18 @@ package com.casic.xz.meterage.vm +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.DeptComprehensiveModel +import com.casic.xz.meterage.model.RealTimeWorkModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState /** * 业务统计 VM @@ -9,24 +20,44 @@ 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() -// }) + val realTimeWorkResult = MutableLiveData() + val deptComprehensiveResult = MutableLiveData() + + fun getRealTimeWork() = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getRealTimeWork() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + realTimeWorkResult.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() + }) + + fun getDeptComprehensive(deptId: String, startTime: String, endTime: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getDeptComprehensive(deptId, startTime, endTime) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + deptComprehensiveResult.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_realtime_work.xml b/app/src/main/res/layout/activity_realtime_work.xml new file mode 100644 index 0000000..c8af0ad --- /dev/null +++ b/app/src/main/res/layout/activity_realtime_work.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + \ 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 index 59c6aef..e956521 100644 --- a/app/src/main/res/layout/item_entrust_bs_rv_l.xml +++ b/app/src/main/res/layout/item_entrust_bs_rv_l.xml @@ -10,68 +10,36 @@ android:paddingTop="@dimen/dp_10" android:paddingBottom="@dimen/dp_5"> - + + + android:text="委托书编号:wt1231232455454553223" + android:textColor="@color/gray" + android:textSize="@dimen/sp_14" /> - - - - - - - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/item_realtime_work_rv_l.xml b/app/src/main/res/layout/item_realtime_work_rv_l.xml new file mode 100644 index 0000000..c43a50c --- /dev/null +++ b/app/src/main/res/layout/item_realtime_work_rv_l.xml @@ -0,0 +1,269 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file