diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d1c273b..544ae3b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d1c273b..544ae3b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java new file mode 100644 index 0000000..bb21b14 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java @@ -0,0 +1,163 @@ +package com.casic.br.app.model; + +import java.util.List; + +public class CheckHistoryDetailModel { + + private int code; + private List data; + private String message; + private boolean success; + + 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 boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String alarmMenuId; + private String basis; + private String content; + private String id; + private String imageList; + private String inspectionId; + private String mainClass; + private String mainClassName; + private String name; + private String scene; + private String sceneName; + private String subClass; + private String subClassName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getBasis() { + return basis; + } + + public void setBasis(String basis) { + this.basis = basis; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageList() { + return imageList; + } + + public void setImageList(String imageList) { + this.imageList = imageList; + } + + public String getInspectionId() { + return inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getMainClass() { + return mainClass; + } + + public void setMainClass(String mainClass) { + this.mainClass = mainClass; + } + + public String getMainClassName() { + return mainClassName; + } + + public void setMainClassName(String mainClassName) { + this.mainClassName = mainClassName; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getScene() { + return scene; + } + + public void setScene(String scene) { + this.scene = scene; + } + + public String getSceneName() { + return sceneName; + } + + public void setSceneName(String sceneName) { + this.sceneName = sceneName; + } + + public String getSubClass() { + return subClass; + } + + public void setSubClass(String subClass) { + this.subClass = subClass; + } + + public String getSubClassName() { + return subClassName; + } + + public void setSubClassName(String subClassName) { + this.subClassName = subClassName; + } + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d1c273b..544ae3b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java new file mode 100644 index 0000000..bb21b14 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java @@ -0,0 +1,163 @@ +package com.casic.br.app.model; + +import java.util.List; + +public class CheckHistoryDetailModel { + + private int code; + private List data; + private String message; + private boolean success; + + 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 boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String alarmMenuId; + private String basis; + private String content; + private String id; + private String imageList; + private String inspectionId; + private String mainClass; + private String mainClassName; + private String name; + private String scene; + private String sceneName; + private String subClass; + private String subClassName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getBasis() { + return basis; + } + + public void setBasis(String basis) { + this.basis = basis; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageList() { + return imageList; + } + + public void setImageList(String imageList) { + this.imageList = imageList; + } + + public String getInspectionId() { + return inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getMainClass() { + return mainClass; + } + + public void setMainClass(String mainClass) { + this.mainClass = mainClass; + } + + public String getMainClassName() { + return mainClassName; + } + + public void setMainClassName(String mainClassName) { + this.mainClassName = mainClassName; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getScene() { + return scene; + } + + public void setScene(String scene) { + this.scene = scene; + } + + public String getSceneName() { + return sceneName; + } + + public void setSceneName(String sceneName) { + this.sceneName = sceneName; + } + + public String getSubClass() { + return subClass; + } + + public void setSubClass(String subClass) { + this.subClass = subClass; + } + + public String getSubClassName() { + return subClassName; + } + + public void setSubClassName(String subClassName) { + this.subClassName = subClassName; + } + } +} diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java index da1e09d..a18fe7c 100644 --- a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java @@ -1,4 +1,130 @@ package com.casic.br.app.model; +import java.util.List; + public class CheckHistoryModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alarmCount; + private String endTime; + private String id; + private String inspectionAddress; + private String inspectionDate; + private String inspectionUser; + private String startTime; + + public String getAlarmCount() { + return alarmCount; + } + + public void setAlarmCount(String alarmCount) { + this.alarmCount = alarmCount; + } + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getInspectionAddress() { + return inspectionAddress; + } + + public void setInspectionAddress(String inspectionAddress) { + this.inspectionAddress = inspectionAddress; + } + + public String getInspectionDate() { + return inspectionDate; + } + + public void setInspectionDate(String inspectionDate) { + this.inspectionDate = inspectionDate; + } + + public String getInspectionUser() { + return inspectionUser; + } + + public void setInspectionUser(String inspectionUser) { + this.inspectionUser = inspectionUser; + } + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + } + } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d1c273b..544ae3b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java new file mode 100644 index 0000000..bb21b14 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java @@ -0,0 +1,163 @@ +package com.casic.br.app.model; + +import java.util.List; + +public class CheckHistoryDetailModel { + + private int code; + private List data; + private String message; + private boolean success; + + 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 boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String alarmMenuId; + private String basis; + private String content; + private String id; + private String imageList; + private String inspectionId; + private String mainClass; + private String mainClassName; + private String name; + private String scene; + private String sceneName; + private String subClass; + private String subClassName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getBasis() { + return basis; + } + + public void setBasis(String basis) { + this.basis = basis; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageList() { + return imageList; + } + + public void setImageList(String imageList) { + this.imageList = imageList; + } + + public String getInspectionId() { + return inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getMainClass() { + return mainClass; + } + + public void setMainClass(String mainClass) { + this.mainClass = mainClass; + } + + public String getMainClassName() { + return mainClassName; + } + + public void setMainClassName(String mainClassName) { + this.mainClassName = mainClassName; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getScene() { + return scene; + } + + public void setScene(String scene) { + this.scene = scene; + } + + public String getSceneName() { + return sceneName; + } + + public void setSceneName(String sceneName) { + this.sceneName = sceneName; + } + + public String getSubClass() { + return subClass; + } + + public void setSubClass(String subClass) { + this.subClass = subClass; + } + + public String getSubClassName() { + return subClassName; + } + + public void setSubClassName(String subClassName) { + this.subClassName = subClassName; + } + } +} diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java index da1e09d..a18fe7c 100644 --- a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java @@ -1,4 +1,130 @@ package com.casic.br.app.model; +import java.util.List; + public class CheckHistoryModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alarmCount; + private String endTime; + private String id; + private String inspectionAddress; + private String inspectionDate; + private String inspectionUser; + private String startTime; + + public String getAlarmCount() { + return alarmCount; + } + + public void setAlarmCount(String alarmCount) { + this.alarmCount = alarmCount; + } + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getInspectionAddress() { + return inspectionAddress; + } + + public void setInspectionAddress(String inspectionAddress) { + this.inspectionAddress = inspectionAddress; + } + + public String getInspectionDate() { + return inspectionDate; + } + + public void setInspectionDate(String inspectionDate) { + this.inspectionDate = inspectionDate; + } + + public String getInspectionUser() { + return inspectionUser; + } + + public void setInspectionUser(String inspectionUser) { + this.inspectionUser = inspectionUser; + } + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 0b768f5..ab76720 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -7,6 +7,7 @@ import retrofit2.http.Multipart import retrofit2.http.POST import retrofit2.http.PartMap +import retrofit2.http.Query import retrofit2.http.QueryMap interface RetrofitService { @@ -32,12 +33,20 @@ /** * 获取巡查记录 */ - @POST("/meter/file/listPage") + @GET("/inspection-record/listPage") suspend fun getCheckHistoryByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("offset") offset: Int, + @Query("limit") limit: Int + ): String + + /** + * 根据巡查ID获取此次记录的详情 + */ + @GET("/inspection-record/listAlarmByInspection") + suspend fun getCheckHistoryDetailById( + @Header("token") token: String, + @Query("inspectionId") inspectionId: String ): String /** diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d1c273b..544ae3b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java new file mode 100644 index 0000000..bb21b14 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java @@ -0,0 +1,163 @@ +package com.casic.br.app.model; + +import java.util.List; + +public class CheckHistoryDetailModel { + + private int code; + private List data; + private String message; + private boolean success; + + 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 boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String alarmMenuId; + private String basis; + private String content; + private String id; + private String imageList; + private String inspectionId; + private String mainClass; + private String mainClassName; + private String name; + private String scene; + private String sceneName; + private String subClass; + private String subClassName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getBasis() { + return basis; + } + + public void setBasis(String basis) { + this.basis = basis; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageList() { + return imageList; + } + + public void setImageList(String imageList) { + this.imageList = imageList; + } + + public String getInspectionId() { + return inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getMainClass() { + return mainClass; + } + + public void setMainClass(String mainClass) { + this.mainClass = mainClass; + } + + public String getMainClassName() { + return mainClassName; + } + + public void setMainClassName(String mainClassName) { + this.mainClassName = mainClassName; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getScene() { + return scene; + } + + public void setScene(String scene) { + this.scene = scene; + } + + public String getSceneName() { + return sceneName; + } + + public void setSceneName(String sceneName) { + this.sceneName = sceneName; + } + + public String getSubClass() { + return subClass; + } + + public void setSubClass(String subClass) { + this.subClass = subClass; + } + + public String getSubClassName() { + return subClassName; + } + + public void setSubClassName(String subClassName) { + this.subClassName = subClassName; + } + } +} diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java index da1e09d..a18fe7c 100644 --- a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java @@ -1,4 +1,130 @@ package com.casic.br.app.model; +import java.util.List; + public class CheckHistoryModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alarmCount; + private String endTime; + private String id; + private String inspectionAddress; + private String inspectionDate; + private String inspectionUser; + private String startTime; + + public String getAlarmCount() { + return alarmCount; + } + + public void setAlarmCount(String alarmCount) { + this.alarmCount = alarmCount; + } + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getInspectionAddress() { + return inspectionAddress; + } + + public void setInspectionAddress(String inspectionAddress) { + this.inspectionAddress = inspectionAddress; + } + + public String getInspectionDate() { + return inspectionDate; + } + + public void setInspectionDate(String inspectionDate) { + this.inspectionDate = inspectionDate; + } + + public String getInspectionUser() { + return inspectionUser; + } + + public void setInspectionUser(String inspectionUser) { + this.inspectionUser = inspectionUser; + } + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 0b768f5..ab76720 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -7,6 +7,7 @@ import retrofit2.http.Multipart import retrofit2.http.POST import retrofit2.http.PartMap +import retrofit2.http.Query import retrofit2.http.QueryMap interface RetrofitService { @@ -32,12 +33,20 @@ /** * 获取巡查记录 */ - @POST("/meter/file/listPage") + @GET("/inspection-record/listPage") suspend fun getCheckHistoryByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("offset") offset: Int, + @Query("limit") limit: Int + ): String + + /** + * 根据巡查ID获取此次记录的详情 + */ + @GET("/inspection-record/listAlarmByInspection") + suspend fun getCheckHistoryDetailById( + @Header("token") token: String, + @Query("inspectionId") inspectionId: String ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index e1a3ed9..3cae5b6 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -57,24 +57,20 @@ /** * 获取巡查记录 */ - suspend fun getCheckHistoryByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getCheckHistoryByPage(offset: Int): String { return api.getCheckHistoryByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, offset, LocaleConstant.PAGE_LIMIT ) } /** + * 根据巡查ID获取此次记录的详情 + */ + suspend fun getCheckHistoryDetailById(inspectionId: String): String { + return api.getCheckHistoryDetailById(AuthenticationHelper.token, inspectionId) + } + + /** * 获取标准规范文件列表 */ suspend fun getStandardFileByPage(keywords: String, offset: Int): String { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d1c273b..544ae3b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java new file mode 100644 index 0000000..bb21b14 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java @@ -0,0 +1,163 @@ +package com.casic.br.app.model; + +import java.util.List; + +public class CheckHistoryDetailModel { + + private int code; + private List data; + private String message; + private boolean success; + + 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 boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String alarmMenuId; + private String basis; + private String content; + private String id; + private String imageList; + private String inspectionId; + private String mainClass; + private String mainClassName; + private String name; + private String scene; + private String sceneName; + private String subClass; + private String subClassName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getBasis() { + return basis; + } + + public void setBasis(String basis) { + this.basis = basis; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageList() { + return imageList; + } + + public void setImageList(String imageList) { + this.imageList = imageList; + } + + public String getInspectionId() { + return inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getMainClass() { + return mainClass; + } + + public void setMainClass(String mainClass) { + this.mainClass = mainClass; + } + + public String getMainClassName() { + return mainClassName; + } + + public void setMainClassName(String mainClassName) { + this.mainClassName = mainClassName; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getScene() { + return scene; + } + + public void setScene(String scene) { + this.scene = scene; + } + + public String getSceneName() { + return sceneName; + } + + public void setSceneName(String sceneName) { + this.sceneName = sceneName; + } + + public String getSubClass() { + return subClass; + } + + public void setSubClass(String subClass) { + this.subClass = subClass; + } + + public String getSubClassName() { + return subClassName; + } + + public void setSubClassName(String subClassName) { + this.subClassName = subClassName; + } + } +} diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java index da1e09d..a18fe7c 100644 --- a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java @@ -1,4 +1,130 @@ package com.casic.br.app.model; +import java.util.List; + public class CheckHistoryModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alarmCount; + private String endTime; + private String id; + private String inspectionAddress; + private String inspectionDate; + private String inspectionUser; + private String startTime; + + public String getAlarmCount() { + return alarmCount; + } + + public void setAlarmCount(String alarmCount) { + this.alarmCount = alarmCount; + } + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getInspectionAddress() { + return inspectionAddress; + } + + public void setInspectionAddress(String inspectionAddress) { + this.inspectionAddress = inspectionAddress; + } + + public String getInspectionDate() { + return inspectionDate; + } + + public void setInspectionDate(String inspectionDate) { + this.inspectionDate = inspectionDate; + } + + public String getInspectionUser() { + return inspectionUser; + } + + public void setInspectionUser(String inspectionUser) { + this.inspectionUser = inspectionUser; + } + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 0b768f5..ab76720 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -7,6 +7,7 @@ import retrofit2.http.Multipart import retrofit2.http.POST import retrofit2.http.PartMap +import retrofit2.http.Query import retrofit2.http.QueryMap interface RetrofitService { @@ -32,12 +33,20 @@ /** * 获取巡查记录 */ - @POST("/meter/file/listPage") + @GET("/inspection-record/listPage") suspend fun getCheckHistoryByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("offset") offset: Int, + @Query("limit") limit: Int + ): String + + /** + * 根据巡查ID获取此次记录的详情 + */ + @GET("/inspection-record/listAlarmByInspection") + suspend fun getCheckHistoryDetailById( + @Header("token") token: String, + @Query("inspectionId") inspectionId: String ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index e1a3ed9..3cae5b6 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -57,24 +57,20 @@ /** * 获取巡查记录 */ - suspend fun getCheckHistoryByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getCheckHistoryByPage(offset: Int): String { return api.getCheckHistoryByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, offset, LocaleConstant.PAGE_LIMIT ) } /** + * 根据巡查ID获取此次记录的详情 + */ + suspend fun getCheckHistoryDetailById(inspectionId: String): String { + return api.getCheckHistoryDetailById(AuthenticationHelper.token, inspectionId) + } + + /** * 获取标准规范文件列表 */ suspend fun getStandardFileByPage(keywords: String, offset: Int): String { diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt index a22f0a9..f75e755 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt @@ -1,6 +1,5 @@ package com.casic.br.app.view -import android.graphics.Color import android.os.Bundle import android.os.Handler import android.os.Message @@ -13,8 +12,11 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.divider.RecyclerViewItemDivider +import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -22,11 +24,12 @@ class CheckHistoryActivity : KotlinBaseActivity(), Handler.Callback { + private val kTag = "CheckHistoryActivity" + private val marginOffset by lazy { 10.dp2px(this) } private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var checkHistoryViewModel: CheckHistoryViewModel - private lateinit var checkHistoryAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var keywords = "" + private lateinit var checkHistoryAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -48,60 +51,63 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) checkHistoryViewModel = ViewModelProvider(this)[CheckHistoryViewModel::class.java] + getCheckHistoryByPage() checkHistoryViewModel.historyResult.observe(this) { -// if (it.code == 200) { -// val dataRows = it.data?.rows!! -// when { -// isRefresh -> { -// checkHistoryAdapter.setRefreshData(dataRows) -// binding.refreshLayout.finishRefresh() -// isRefresh = false -// } -// -// isLoadMore -> { -// if (dataRows.size == 0) { -// "到底了,别拉了".show(this) -// } -// checkHistoryAdapter.setLoadMoreData(dataRows) -// binding.refreshLayout.finishLoadMore() -// isLoadMore = false -// } -// -// else -> { -// dataBeans = dataRows -// weakReferenceHandler.sendEmptyMessage(2024030503) -// } -// } -// } + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + checkHistoryAdapter.setRefreshData(dataRows) + binding.refreshLayout.finishRefresh() + isRefresh = false + } + + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(this) + } + checkHistoryAdapter.setLoadMoreData(dataRows) + binding.refreshLayout.finishLoadMore() + isLoadMore = false + } + + else -> { + dataBeans = dataRows + weakReferenceHandler.sendEmptyMessage(2024030503) + } + } + } } } private fun getCheckHistoryByPage() { - checkHistoryViewModel.getCheckHistoryByPage(this, keywords, page) + checkHistoryViewModel.getCheckHistoryByPage(this, page) } override fun handleMessage(msg: Message): Boolean { when (msg.what) { 2024030503 -> { checkHistoryAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_check_history, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: CheckHistoryModel + item: CheckHistoryModel.DataModel.RowsModel ) { - + //TODO 数据未绑定 } } binding.recyclerView.adapter = checkHistoryAdapter - binding.recyclerView.addItemDecoration(RecyclerViewItemDivider(1, Color.WHITE)) + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, marginOffset, marginOffset, marginOffset) + ) checkHistoryAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: CheckHistoryModel + position: Int, t: CheckHistoryModel.DataModel.RowsModel ) { - //TODO 查看巡查记录详情 + navigatePageTo(t.toJson()) } }) } @@ -115,6 +121,9 @@ override fun observeRequestState() { checkHistoryViewModel.loadState.observe(this) { + if (isRefresh || isLoadMore) { + return@observe + } when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") LoadState.Success -> { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d1c273b..544ae3b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java new file mode 100644 index 0000000..bb21b14 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java @@ -0,0 +1,163 @@ +package com.casic.br.app.model; + +import java.util.List; + +public class CheckHistoryDetailModel { + + private int code; + private List data; + private String message; + private boolean success; + + 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 boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String alarmMenuId; + private String basis; + private String content; + private String id; + private String imageList; + private String inspectionId; + private String mainClass; + private String mainClassName; + private String name; + private String scene; + private String sceneName; + private String subClass; + private String subClassName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getBasis() { + return basis; + } + + public void setBasis(String basis) { + this.basis = basis; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageList() { + return imageList; + } + + public void setImageList(String imageList) { + this.imageList = imageList; + } + + public String getInspectionId() { + return inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getMainClass() { + return mainClass; + } + + public void setMainClass(String mainClass) { + this.mainClass = mainClass; + } + + public String getMainClassName() { + return mainClassName; + } + + public void setMainClassName(String mainClassName) { + this.mainClassName = mainClassName; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getScene() { + return scene; + } + + public void setScene(String scene) { + this.scene = scene; + } + + public String getSceneName() { + return sceneName; + } + + public void setSceneName(String sceneName) { + this.sceneName = sceneName; + } + + public String getSubClass() { + return subClass; + } + + public void setSubClass(String subClass) { + this.subClass = subClass; + } + + public String getSubClassName() { + return subClassName; + } + + public void setSubClassName(String subClassName) { + this.subClassName = subClassName; + } + } +} diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java index da1e09d..a18fe7c 100644 --- a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java @@ -1,4 +1,130 @@ package com.casic.br.app.model; +import java.util.List; + public class CheckHistoryModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alarmCount; + private String endTime; + private String id; + private String inspectionAddress; + private String inspectionDate; + private String inspectionUser; + private String startTime; + + public String getAlarmCount() { + return alarmCount; + } + + public void setAlarmCount(String alarmCount) { + this.alarmCount = alarmCount; + } + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getInspectionAddress() { + return inspectionAddress; + } + + public void setInspectionAddress(String inspectionAddress) { + this.inspectionAddress = inspectionAddress; + } + + public String getInspectionDate() { + return inspectionDate; + } + + public void setInspectionDate(String inspectionDate) { + this.inspectionDate = inspectionDate; + } + + public String getInspectionUser() { + return inspectionUser; + } + + public void setInspectionUser(String inspectionUser) { + this.inspectionUser = inspectionUser; + } + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 0b768f5..ab76720 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -7,6 +7,7 @@ import retrofit2.http.Multipart import retrofit2.http.POST import retrofit2.http.PartMap +import retrofit2.http.Query import retrofit2.http.QueryMap interface RetrofitService { @@ -32,12 +33,20 @@ /** * 获取巡查记录 */ - @POST("/meter/file/listPage") + @GET("/inspection-record/listPage") suspend fun getCheckHistoryByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("offset") offset: Int, + @Query("limit") limit: Int + ): String + + /** + * 根据巡查ID获取此次记录的详情 + */ + @GET("/inspection-record/listAlarmByInspection") + suspend fun getCheckHistoryDetailById( + @Header("token") token: String, + @Query("inspectionId") inspectionId: String ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index e1a3ed9..3cae5b6 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -57,24 +57,20 @@ /** * 获取巡查记录 */ - suspend fun getCheckHistoryByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getCheckHistoryByPage(offset: Int): String { return api.getCheckHistoryByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, offset, LocaleConstant.PAGE_LIMIT ) } /** + * 根据巡查ID获取此次记录的详情 + */ + suspend fun getCheckHistoryDetailById(inspectionId: String): String { + return api.getCheckHistoryDetailById(AuthenticationHelper.token, inspectionId) + } + + /** * 获取标准规范文件列表 */ suspend fun getStandardFileByPage(keywords: String, offset: Int): String { diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt index a22f0a9..f75e755 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt @@ -1,6 +1,5 @@ package com.casic.br.app.view -import android.graphics.Color import android.os.Bundle import android.os.Handler import android.os.Message @@ -13,8 +12,11 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.divider.RecyclerViewItemDivider +import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -22,11 +24,12 @@ class CheckHistoryActivity : KotlinBaseActivity(), Handler.Callback { + private val kTag = "CheckHistoryActivity" + private val marginOffset by lazy { 10.dp2px(this) } private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var checkHistoryViewModel: CheckHistoryViewModel - private lateinit var checkHistoryAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var keywords = "" + private lateinit var checkHistoryAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -48,60 +51,63 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) checkHistoryViewModel = ViewModelProvider(this)[CheckHistoryViewModel::class.java] + getCheckHistoryByPage() checkHistoryViewModel.historyResult.observe(this) { -// if (it.code == 200) { -// val dataRows = it.data?.rows!! -// when { -// isRefresh -> { -// checkHistoryAdapter.setRefreshData(dataRows) -// binding.refreshLayout.finishRefresh() -// isRefresh = false -// } -// -// isLoadMore -> { -// if (dataRows.size == 0) { -// "到底了,别拉了".show(this) -// } -// checkHistoryAdapter.setLoadMoreData(dataRows) -// binding.refreshLayout.finishLoadMore() -// isLoadMore = false -// } -// -// else -> { -// dataBeans = dataRows -// weakReferenceHandler.sendEmptyMessage(2024030503) -// } -// } -// } + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + checkHistoryAdapter.setRefreshData(dataRows) + binding.refreshLayout.finishRefresh() + isRefresh = false + } + + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(this) + } + checkHistoryAdapter.setLoadMoreData(dataRows) + binding.refreshLayout.finishLoadMore() + isLoadMore = false + } + + else -> { + dataBeans = dataRows + weakReferenceHandler.sendEmptyMessage(2024030503) + } + } + } } } private fun getCheckHistoryByPage() { - checkHistoryViewModel.getCheckHistoryByPage(this, keywords, page) + checkHistoryViewModel.getCheckHistoryByPage(this, page) } override fun handleMessage(msg: Message): Boolean { when (msg.what) { 2024030503 -> { checkHistoryAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_check_history, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: CheckHistoryModel + item: CheckHistoryModel.DataModel.RowsModel ) { - + //TODO 数据未绑定 } } binding.recyclerView.adapter = checkHistoryAdapter - binding.recyclerView.addItemDecoration(RecyclerViewItemDivider(1, Color.WHITE)) + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, marginOffset, marginOffset, marginOffset) + ) checkHistoryAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: CheckHistoryModel + position: Int, t: CheckHistoryModel.DataModel.RowsModel ) { - //TODO 查看巡查记录详情 + navigatePageTo(t.toJson()) } }) } @@ -115,6 +121,9 @@ override fun observeRequestState() { checkHistoryViewModel.loadState.observe(this) { + if (isRefresh || isLoadMore) { + return@observe + } when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") LoadState.Success -> { diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt new file mode 100644 index 0000000..f1704d0 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt @@ -0,0 +1,114 @@ +package com.casic.br.app.view + +import android.os.Bundle +import androidx.lifecycle.ViewModelProvider +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityCheckHistoryDetailBinding +import com.casic.br.app.extensions.initImmersionBar +import com.casic.br.app.model.CheckHistoryDetailModel +import com.casic.br.app.model.CheckHistoryModel +import com.casic.br.app.vm.CheckHistoryViewModel +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant +import com.pengxh.kt.lite.utils.LoadState +import com.pengxh.kt.lite.utils.LoadingDialogHub +import com.pengxh.kt.lite.widget.TitleBarView + +class CheckHistoryDetailActivity : KotlinBaseActivity() { + + private val context = this + private val gson by lazy { Gson() } + private val marginOffset by lazy { 10.dp2px(this) } + private lateinit var checkHistoryViewModel: CheckHistoryViewModel + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + val extra = intent.getStringExtra(Constant.INTENT_PARAM) + val rowsModel = gson.fromJson( + extra, object : TypeToken() {}.type + ) + binding.checkTimeView.text = + "${rowsModel.inspectionDate} ${rowsModel.startTime}-${rowsModel.endTime}" + binding.checkSiteView.text = rowsModel.inspectionAddress + binding.troubleCountView.text = rowsModel.alarmCount + binding.checkPersonView.text = rowsModel.inspectionUser + + //列表上部统计 + binding.countView.text = rowsModel.inspectionUser + + checkHistoryViewModel = ViewModelProvider(this)[CheckHistoryViewModel::class.java] + checkHistoryViewModel.getCheckHistoryDetailById(this, rowsModel.id) + checkHistoryViewModel.detailResult.observe(this) { + if (it.code == 200) { + val detailAdapter = object : + NormalRecyclerAdapter( + R.layout.item_check_history_detail, it.data + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: CheckHistoryDetailModel.DataModel + ) { + viewHolder.setText( + R.id.troubleTypeView, "${item.mainClassName}-${item.subClassName}" + ).setText(R.id.troubleNameView, item.name) + .setText(R.id.troubleContentView, item.content) +// val gridView = viewHolder.getView(R.id.troubleImageView) +// val imageAdapter = ReadOnlyImageAdapter(context, item.imageList) +// gridView.adapter = imageAdapter +// gridView.onItemClickListener = +// AdapterView.OnItemClickListener { adapterView, view, position, l -> +// +// } + } + } + binding.recyclerView.adapter = detailAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, marginOffset, marginOffset, marginOffset) + ) + } + } + } + + override fun initViewBinding(): ActivityCheckHistoryDetailBinding { + return ActivityCheckHistoryDetailBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + checkHistoryViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") + LoadState.Success -> { + LoadingDialogHub.dismiss() + } + + LoadState.Fail -> { + LoadingDialogHub.dismiss() + "数据加载失败,请重试".show(this) + } + } + } + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.themeColor) + binding.titleView.setOnClickListener(object : TitleBarView.OnClickListener { + override fun onLeftClick() { + finish() + } + + override fun onRightClick() { + + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d1c273b..544ae3b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java new file mode 100644 index 0000000..bb21b14 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java @@ -0,0 +1,163 @@ +package com.casic.br.app.model; + +import java.util.List; + +public class CheckHistoryDetailModel { + + private int code; + private List data; + private String message; + private boolean success; + + 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 boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String alarmMenuId; + private String basis; + private String content; + private String id; + private String imageList; + private String inspectionId; + private String mainClass; + private String mainClassName; + private String name; + private String scene; + private String sceneName; + private String subClass; + private String subClassName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getBasis() { + return basis; + } + + public void setBasis(String basis) { + this.basis = basis; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageList() { + return imageList; + } + + public void setImageList(String imageList) { + this.imageList = imageList; + } + + public String getInspectionId() { + return inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getMainClass() { + return mainClass; + } + + public void setMainClass(String mainClass) { + this.mainClass = mainClass; + } + + public String getMainClassName() { + return mainClassName; + } + + public void setMainClassName(String mainClassName) { + this.mainClassName = mainClassName; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getScene() { + return scene; + } + + public void setScene(String scene) { + this.scene = scene; + } + + public String getSceneName() { + return sceneName; + } + + public void setSceneName(String sceneName) { + this.sceneName = sceneName; + } + + public String getSubClass() { + return subClass; + } + + public void setSubClass(String subClass) { + this.subClass = subClass; + } + + public String getSubClassName() { + return subClassName; + } + + public void setSubClassName(String subClassName) { + this.subClassName = subClassName; + } + } +} diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java index da1e09d..a18fe7c 100644 --- a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java @@ -1,4 +1,130 @@ package com.casic.br.app.model; +import java.util.List; + public class CheckHistoryModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alarmCount; + private String endTime; + private String id; + private String inspectionAddress; + private String inspectionDate; + private String inspectionUser; + private String startTime; + + public String getAlarmCount() { + return alarmCount; + } + + public void setAlarmCount(String alarmCount) { + this.alarmCount = alarmCount; + } + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getInspectionAddress() { + return inspectionAddress; + } + + public void setInspectionAddress(String inspectionAddress) { + this.inspectionAddress = inspectionAddress; + } + + public String getInspectionDate() { + return inspectionDate; + } + + public void setInspectionDate(String inspectionDate) { + this.inspectionDate = inspectionDate; + } + + public String getInspectionUser() { + return inspectionUser; + } + + public void setInspectionUser(String inspectionUser) { + this.inspectionUser = inspectionUser; + } + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 0b768f5..ab76720 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -7,6 +7,7 @@ import retrofit2.http.Multipart import retrofit2.http.POST import retrofit2.http.PartMap +import retrofit2.http.Query import retrofit2.http.QueryMap interface RetrofitService { @@ -32,12 +33,20 @@ /** * 获取巡查记录 */ - @POST("/meter/file/listPage") + @GET("/inspection-record/listPage") suspend fun getCheckHistoryByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("offset") offset: Int, + @Query("limit") limit: Int + ): String + + /** + * 根据巡查ID获取此次记录的详情 + */ + @GET("/inspection-record/listAlarmByInspection") + suspend fun getCheckHistoryDetailById( + @Header("token") token: String, + @Query("inspectionId") inspectionId: String ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index e1a3ed9..3cae5b6 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -57,24 +57,20 @@ /** * 获取巡查记录 */ - suspend fun getCheckHistoryByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getCheckHistoryByPage(offset: Int): String { return api.getCheckHistoryByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, offset, LocaleConstant.PAGE_LIMIT ) } /** + * 根据巡查ID获取此次记录的详情 + */ + suspend fun getCheckHistoryDetailById(inspectionId: String): String { + return api.getCheckHistoryDetailById(AuthenticationHelper.token, inspectionId) + } + + /** * 获取标准规范文件列表 */ suspend fun getStandardFileByPage(keywords: String, offset: Int): String { diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt index a22f0a9..f75e755 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt @@ -1,6 +1,5 @@ package com.casic.br.app.view -import android.graphics.Color import android.os.Bundle import android.os.Handler import android.os.Message @@ -13,8 +12,11 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.divider.RecyclerViewItemDivider +import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -22,11 +24,12 @@ class CheckHistoryActivity : KotlinBaseActivity(), Handler.Callback { + private val kTag = "CheckHistoryActivity" + private val marginOffset by lazy { 10.dp2px(this) } private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var checkHistoryViewModel: CheckHistoryViewModel - private lateinit var checkHistoryAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var keywords = "" + private lateinit var checkHistoryAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -48,60 +51,63 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) checkHistoryViewModel = ViewModelProvider(this)[CheckHistoryViewModel::class.java] + getCheckHistoryByPage() checkHistoryViewModel.historyResult.observe(this) { -// if (it.code == 200) { -// val dataRows = it.data?.rows!! -// when { -// isRefresh -> { -// checkHistoryAdapter.setRefreshData(dataRows) -// binding.refreshLayout.finishRefresh() -// isRefresh = false -// } -// -// isLoadMore -> { -// if (dataRows.size == 0) { -// "到底了,别拉了".show(this) -// } -// checkHistoryAdapter.setLoadMoreData(dataRows) -// binding.refreshLayout.finishLoadMore() -// isLoadMore = false -// } -// -// else -> { -// dataBeans = dataRows -// weakReferenceHandler.sendEmptyMessage(2024030503) -// } -// } -// } + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + checkHistoryAdapter.setRefreshData(dataRows) + binding.refreshLayout.finishRefresh() + isRefresh = false + } + + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(this) + } + checkHistoryAdapter.setLoadMoreData(dataRows) + binding.refreshLayout.finishLoadMore() + isLoadMore = false + } + + else -> { + dataBeans = dataRows + weakReferenceHandler.sendEmptyMessage(2024030503) + } + } + } } } private fun getCheckHistoryByPage() { - checkHistoryViewModel.getCheckHistoryByPage(this, keywords, page) + checkHistoryViewModel.getCheckHistoryByPage(this, page) } override fun handleMessage(msg: Message): Boolean { when (msg.what) { 2024030503 -> { checkHistoryAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_check_history, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: CheckHistoryModel + item: CheckHistoryModel.DataModel.RowsModel ) { - + //TODO 数据未绑定 } } binding.recyclerView.adapter = checkHistoryAdapter - binding.recyclerView.addItemDecoration(RecyclerViewItemDivider(1, Color.WHITE)) + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, marginOffset, marginOffset, marginOffset) + ) checkHistoryAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: CheckHistoryModel + position: Int, t: CheckHistoryModel.DataModel.RowsModel ) { - //TODO 查看巡查记录详情 + navigatePageTo(t.toJson()) } }) } @@ -115,6 +121,9 @@ override fun observeRequestState() { checkHistoryViewModel.loadState.observe(this) { + if (isRefresh || isLoadMore) { + return@observe + } when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") LoadState.Success -> { diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt new file mode 100644 index 0000000..f1704d0 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt @@ -0,0 +1,114 @@ +package com.casic.br.app.view + +import android.os.Bundle +import androidx.lifecycle.ViewModelProvider +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityCheckHistoryDetailBinding +import com.casic.br.app.extensions.initImmersionBar +import com.casic.br.app.model.CheckHistoryDetailModel +import com.casic.br.app.model.CheckHistoryModel +import com.casic.br.app.vm.CheckHistoryViewModel +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant +import com.pengxh.kt.lite.utils.LoadState +import com.pengxh.kt.lite.utils.LoadingDialogHub +import com.pengxh.kt.lite.widget.TitleBarView + +class CheckHistoryDetailActivity : KotlinBaseActivity() { + + private val context = this + private val gson by lazy { Gson() } + private val marginOffset by lazy { 10.dp2px(this) } + private lateinit var checkHistoryViewModel: CheckHistoryViewModel + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + val extra = intent.getStringExtra(Constant.INTENT_PARAM) + val rowsModel = gson.fromJson( + extra, object : TypeToken() {}.type + ) + binding.checkTimeView.text = + "${rowsModel.inspectionDate} ${rowsModel.startTime}-${rowsModel.endTime}" + binding.checkSiteView.text = rowsModel.inspectionAddress + binding.troubleCountView.text = rowsModel.alarmCount + binding.checkPersonView.text = rowsModel.inspectionUser + + //列表上部统计 + binding.countView.text = rowsModel.inspectionUser + + checkHistoryViewModel = ViewModelProvider(this)[CheckHistoryViewModel::class.java] + checkHistoryViewModel.getCheckHistoryDetailById(this, rowsModel.id) + checkHistoryViewModel.detailResult.observe(this) { + if (it.code == 200) { + val detailAdapter = object : + NormalRecyclerAdapter( + R.layout.item_check_history_detail, it.data + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: CheckHistoryDetailModel.DataModel + ) { + viewHolder.setText( + R.id.troubleTypeView, "${item.mainClassName}-${item.subClassName}" + ).setText(R.id.troubleNameView, item.name) + .setText(R.id.troubleContentView, item.content) +// val gridView = viewHolder.getView(R.id.troubleImageView) +// val imageAdapter = ReadOnlyImageAdapter(context, item.imageList) +// gridView.adapter = imageAdapter +// gridView.onItemClickListener = +// AdapterView.OnItemClickListener { adapterView, view, position, l -> +// +// } + } + } + binding.recyclerView.adapter = detailAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, marginOffset, marginOffset, marginOffset) + ) + } + } + } + + override fun initViewBinding(): ActivityCheckHistoryDetailBinding { + return ActivityCheckHistoryDetailBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + checkHistoryViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") + LoadState.Success -> { + LoadingDialogHub.dismiss() + } + + LoadState.Fail -> { + LoadingDialogHub.dismiss() + "数据加载失败,请重试".show(this) + } + } + } + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.themeColor) + binding.titleView.setOnClickListener(object : TitleBarView.OnClickListener { + override fun onLeftClick() { + finish() + } + + override fun onRightClick() { + + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt b/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt index f0bfec2..05226a9 100644 --- a/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt +++ b/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt @@ -4,6 +4,7 @@ import androidx.lifecycle.MutableLiveData import com.casic.br.app.extensions.getResponseCode import com.casic.br.app.extensions.getResponseMessage +import com.casic.br.app.model.CheckHistoryDetailModel import com.casic.br.app.model.CheckHistoryModel import com.casic.br.app.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -17,10 +18,11 @@ private val gson by lazy { Gson() } val historyResult = MutableLiveData() + val detailResult = MutableLiveData() - fun getCheckHistoryByPage(context: Context, keywords: String, offset: Int) = launch({ + fun getCheckHistoryByPage(context: Context, offset: Int) = launch({ loadState.value = LoadState.Loading - val response = RetrofitServiceManager.getCheckHistoryByPage(keywords, offset) + val response = RetrofitServiceManager.getCheckHistoryByPage(offset) when (response.getResponseCode()) { 200 -> { loadState.value = LoadState.Success @@ -38,4 +40,25 @@ loadState.value = LoadState.Fail it.localizedMessage?.show(context) }) + + fun getCheckHistoryDetailById(context: Context, inspectionId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getCheckHistoryDetailById(inspectionId) + when (response.getResponseCode()) { + 200 -> { + loadState.value = LoadState.Success + detailResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } + + else -> { + loadState.value = LoadState.Fail + response.getResponseMessage().show(context) + } + } + }, { + loadState.value = LoadState.Fail + it.localizedMessage?.show(context) + }) } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d1c273b..544ae3b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java new file mode 100644 index 0000000..bb21b14 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java @@ -0,0 +1,163 @@ +package com.casic.br.app.model; + +import java.util.List; + +public class CheckHistoryDetailModel { + + private int code; + private List data; + private String message; + private boolean success; + + 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 boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String alarmMenuId; + private String basis; + private String content; + private String id; + private String imageList; + private String inspectionId; + private String mainClass; + private String mainClassName; + private String name; + private String scene; + private String sceneName; + private String subClass; + private String subClassName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getBasis() { + return basis; + } + + public void setBasis(String basis) { + this.basis = basis; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageList() { + return imageList; + } + + public void setImageList(String imageList) { + this.imageList = imageList; + } + + public String getInspectionId() { + return inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getMainClass() { + return mainClass; + } + + public void setMainClass(String mainClass) { + this.mainClass = mainClass; + } + + public String getMainClassName() { + return mainClassName; + } + + public void setMainClassName(String mainClassName) { + this.mainClassName = mainClassName; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getScene() { + return scene; + } + + public void setScene(String scene) { + this.scene = scene; + } + + public String getSceneName() { + return sceneName; + } + + public void setSceneName(String sceneName) { + this.sceneName = sceneName; + } + + public String getSubClass() { + return subClass; + } + + public void setSubClass(String subClass) { + this.subClass = subClass; + } + + public String getSubClassName() { + return subClassName; + } + + public void setSubClassName(String subClassName) { + this.subClassName = subClassName; + } + } +} diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java index da1e09d..a18fe7c 100644 --- a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java @@ -1,4 +1,130 @@ package com.casic.br.app.model; +import java.util.List; + public class CheckHistoryModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alarmCount; + private String endTime; + private String id; + private String inspectionAddress; + private String inspectionDate; + private String inspectionUser; + private String startTime; + + public String getAlarmCount() { + return alarmCount; + } + + public void setAlarmCount(String alarmCount) { + this.alarmCount = alarmCount; + } + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getInspectionAddress() { + return inspectionAddress; + } + + public void setInspectionAddress(String inspectionAddress) { + this.inspectionAddress = inspectionAddress; + } + + public String getInspectionDate() { + return inspectionDate; + } + + public void setInspectionDate(String inspectionDate) { + this.inspectionDate = inspectionDate; + } + + public String getInspectionUser() { + return inspectionUser; + } + + public void setInspectionUser(String inspectionUser) { + this.inspectionUser = inspectionUser; + } + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 0b768f5..ab76720 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -7,6 +7,7 @@ import retrofit2.http.Multipart import retrofit2.http.POST import retrofit2.http.PartMap +import retrofit2.http.Query import retrofit2.http.QueryMap interface RetrofitService { @@ -32,12 +33,20 @@ /** * 获取巡查记录 */ - @POST("/meter/file/listPage") + @GET("/inspection-record/listPage") suspend fun getCheckHistoryByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("offset") offset: Int, + @Query("limit") limit: Int + ): String + + /** + * 根据巡查ID获取此次记录的详情 + */ + @GET("/inspection-record/listAlarmByInspection") + suspend fun getCheckHistoryDetailById( + @Header("token") token: String, + @Query("inspectionId") inspectionId: String ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index e1a3ed9..3cae5b6 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -57,24 +57,20 @@ /** * 获取巡查记录 */ - suspend fun getCheckHistoryByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getCheckHistoryByPage(offset: Int): String { return api.getCheckHistoryByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, offset, LocaleConstant.PAGE_LIMIT ) } /** + * 根据巡查ID获取此次记录的详情 + */ + suspend fun getCheckHistoryDetailById(inspectionId: String): String { + return api.getCheckHistoryDetailById(AuthenticationHelper.token, inspectionId) + } + + /** * 获取标准规范文件列表 */ suspend fun getStandardFileByPage(keywords: String, offset: Int): String { diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt index a22f0a9..f75e755 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt @@ -1,6 +1,5 @@ package com.casic.br.app.view -import android.graphics.Color import android.os.Bundle import android.os.Handler import android.os.Message @@ -13,8 +12,11 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.divider.RecyclerViewItemDivider +import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -22,11 +24,12 @@ class CheckHistoryActivity : KotlinBaseActivity(), Handler.Callback { + private val kTag = "CheckHistoryActivity" + private val marginOffset by lazy { 10.dp2px(this) } private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var checkHistoryViewModel: CheckHistoryViewModel - private lateinit var checkHistoryAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var keywords = "" + private lateinit var checkHistoryAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -48,60 +51,63 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) checkHistoryViewModel = ViewModelProvider(this)[CheckHistoryViewModel::class.java] + getCheckHistoryByPage() checkHistoryViewModel.historyResult.observe(this) { -// if (it.code == 200) { -// val dataRows = it.data?.rows!! -// when { -// isRefresh -> { -// checkHistoryAdapter.setRefreshData(dataRows) -// binding.refreshLayout.finishRefresh() -// isRefresh = false -// } -// -// isLoadMore -> { -// if (dataRows.size == 0) { -// "到底了,别拉了".show(this) -// } -// checkHistoryAdapter.setLoadMoreData(dataRows) -// binding.refreshLayout.finishLoadMore() -// isLoadMore = false -// } -// -// else -> { -// dataBeans = dataRows -// weakReferenceHandler.sendEmptyMessage(2024030503) -// } -// } -// } + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + checkHistoryAdapter.setRefreshData(dataRows) + binding.refreshLayout.finishRefresh() + isRefresh = false + } + + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(this) + } + checkHistoryAdapter.setLoadMoreData(dataRows) + binding.refreshLayout.finishLoadMore() + isLoadMore = false + } + + else -> { + dataBeans = dataRows + weakReferenceHandler.sendEmptyMessage(2024030503) + } + } + } } } private fun getCheckHistoryByPage() { - checkHistoryViewModel.getCheckHistoryByPage(this, keywords, page) + checkHistoryViewModel.getCheckHistoryByPage(this, page) } override fun handleMessage(msg: Message): Boolean { when (msg.what) { 2024030503 -> { checkHistoryAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_check_history, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: CheckHistoryModel + item: CheckHistoryModel.DataModel.RowsModel ) { - + //TODO 数据未绑定 } } binding.recyclerView.adapter = checkHistoryAdapter - binding.recyclerView.addItemDecoration(RecyclerViewItemDivider(1, Color.WHITE)) + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, marginOffset, marginOffset, marginOffset) + ) checkHistoryAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: CheckHistoryModel + position: Int, t: CheckHistoryModel.DataModel.RowsModel ) { - //TODO 查看巡查记录详情 + navigatePageTo(t.toJson()) } }) } @@ -115,6 +121,9 @@ override fun observeRequestState() { checkHistoryViewModel.loadState.observe(this) { + if (isRefresh || isLoadMore) { + return@observe + } when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") LoadState.Success -> { diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt new file mode 100644 index 0000000..f1704d0 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt @@ -0,0 +1,114 @@ +package com.casic.br.app.view + +import android.os.Bundle +import androidx.lifecycle.ViewModelProvider +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityCheckHistoryDetailBinding +import com.casic.br.app.extensions.initImmersionBar +import com.casic.br.app.model.CheckHistoryDetailModel +import com.casic.br.app.model.CheckHistoryModel +import com.casic.br.app.vm.CheckHistoryViewModel +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant +import com.pengxh.kt.lite.utils.LoadState +import com.pengxh.kt.lite.utils.LoadingDialogHub +import com.pengxh.kt.lite.widget.TitleBarView + +class CheckHistoryDetailActivity : KotlinBaseActivity() { + + private val context = this + private val gson by lazy { Gson() } + private val marginOffset by lazy { 10.dp2px(this) } + private lateinit var checkHistoryViewModel: CheckHistoryViewModel + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + val extra = intent.getStringExtra(Constant.INTENT_PARAM) + val rowsModel = gson.fromJson( + extra, object : TypeToken() {}.type + ) + binding.checkTimeView.text = + "${rowsModel.inspectionDate} ${rowsModel.startTime}-${rowsModel.endTime}" + binding.checkSiteView.text = rowsModel.inspectionAddress + binding.troubleCountView.text = rowsModel.alarmCount + binding.checkPersonView.text = rowsModel.inspectionUser + + //列表上部统计 + binding.countView.text = rowsModel.inspectionUser + + checkHistoryViewModel = ViewModelProvider(this)[CheckHistoryViewModel::class.java] + checkHistoryViewModel.getCheckHistoryDetailById(this, rowsModel.id) + checkHistoryViewModel.detailResult.observe(this) { + if (it.code == 200) { + val detailAdapter = object : + NormalRecyclerAdapter( + R.layout.item_check_history_detail, it.data + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: CheckHistoryDetailModel.DataModel + ) { + viewHolder.setText( + R.id.troubleTypeView, "${item.mainClassName}-${item.subClassName}" + ).setText(R.id.troubleNameView, item.name) + .setText(R.id.troubleContentView, item.content) +// val gridView = viewHolder.getView(R.id.troubleImageView) +// val imageAdapter = ReadOnlyImageAdapter(context, item.imageList) +// gridView.adapter = imageAdapter +// gridView.onItemClickListener = +// AdapterView.OnItemClickListener { adapterView, view, position, l -> +// +// } + } + } + binding.recyclerView.adapter = detailAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, marginOffset, marginOffset, marginOffset) + ) + } + } + } + + override fun initViewBinding(): ActivityCheckHistoryDetailBinding { + return ActivityCheckHistoryDetailBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + checkHistoryViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") + LoadState.Success -> { + LoadingDialogHub.dismiss() + } + + LoadState.Fail -> { + LoadingDialogHub.dismiss() + "数据加载失败,请重试".show(this) + } + } + } + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.themeColor) + binding.titleView.setOnClickListener(object : TitleBarView.OnClickListener { + override fun onLeftClick() { + finish() + } + + override fun onRightClick() { + + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt b/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt index f0bfec2..05226a9 100644 --- a/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt +++ b/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt @@ -4,6 +4,7 @@ import androidx.lifecycle.MutableLiveData import com.casic.br.app.extensions.getResponseCode import com.casic.br.app.extensions.getResponseMessage +import com.casic.br.app.model.CheckHistoryDetailModel import com.casic.br.app.model.CheckHistoryModel import com.casic.br.app.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -17,10 +18,11 @@ private val gson by lazy { Gson() } val historyResult = MutableLiveData() + val detailResult = MutableLiveData() - fun getCheckHistoryByPage(context: Context, keywords: String, offset: Int) = launch({ + fun getCheckHistoryByPage(context: Context, offset: Int) = launch({ loadState.value = LoadState.Loading - val response = RetrofitServiceManager.getCheckHistoryByPage(keywords, offset) + val response = RetrofitServiceManager.getCheckHistoryByPage(offset) when (response.getResponseCode()) { 200 -> { loadState.value = LoadState.Success @@ -38,4 +40,25 @@ loadState.value = LoadState.Fail it.localizedMessage?.show(context) }) + + fun getCheckHistoryDetailById(context: Context, inspectionId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getCheckHistoryDetailById(inspectionId) + when (response.getResponseCode()) { + 200 -> { + loadState.value = LoadState.Success + detailResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } + + else -> { + loadState.value = LoadState.Fail + response.getResponseMessage().show(context) + } + } + }, { + loadState.value = LoadState.Fail + it.localizedMessage?.show(context) + }) } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_check_history_detail.xml b/app/src/main/res/layout/activity_check_history_detail.xml new file mode 100644 index 0000000..66c14c7 --- /dev/null +++ b/app/src/main/res/layout/activity_check_history_detail.xml @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d1c273b..544ae3b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java new file mode 100644 index 0000000..bb21b14 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java @@ -0,0 +1,163 @@ +package com.casic.br.app.model; + +import java.util.List; + +public class CheckHistoryDetailModel { + + private int code; + private List data; + private String message; + private boolean success; + + 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 boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String alarmMenuId; + private String basis; + private String content; + private String id; + private String imageList; + private String inspectionId; + private String mainClass; + private String mainClassName; + private String name; + private String scene; + private String sceneName; + private String subClass; + private String subClassName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getBasis() { + return basis; + } + + public void setBasis(String basis) { + this.basis = basis; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageList() { + return imageList; + } + + public void setImageList(String imageList) { + this.imageList = imageList; + } + + public String getInspectionId() { + return inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getMainClass() { + return mainClass; + } + + public void setMainClass(String mainClass) { + this.mainClass = mainClass; + } + + public String getMainClassName() { + return mainClassName; + } + + public void setMainClassName(String mainClassName) { + this.mainClassName = mainClassName; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getScene() { + return scene; + } + + public void setScene(String scene) { + this.scene = scene; + } + + public String getSceneName() { + return sceneName; + } + + public void setSceneName(String sceneName) { + this.sceneName = sceneName; + } + + public String getSubClass() { + return subClass; + } + + public void setSubClass(String subClass) { + this.subClass = subClass; + } + + public String getSubClassName() { + return subClassName; + } + + public void setSubClassName(String subClassName) { + this.subClassName = subClassName; + } + } +} diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java index da1e09d..a18fe7c 100644 --- a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java @@ -1,4 +1,130 @@ package com.casic.br.app.model; +import java.util.List; + public class CheckHistoryModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alarmCount; + private String endTime; + private String id; + private String inspectionAddress; + private String inspectionDate; + private String inspectionUser; + private String startTime; + + public String getAlarmCount() { + return alarmCount; + } + + public void setAlarmCount(String alarmCount) { + this.alarmCount = alarmCount; + } + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getInspectionAddress() { + return inspectionAddress; + } + + public void setInspectionAddress(String inspectionAddress) { + this.inspectionAddress = inspectionAddress; + } + + public String getInspectionDate() { + return inspectionDate; + } + + public void setInspectionDate(String inspectionDate) { + this.inspectionDate = inspectionDate; + } + + public String getInspectionUser() { + return inspectionUser; + } + + public void setInspectionUser(String inspectionUser) { + this.inspectionUser = inspectionUser; + } + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 0b768f5..ab76720 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -7,6 +7,7 @@ import retrofit2.http.Multipart import retrofit2.http.POST import retrofit2.http.PartMap +import retrofit2.http.Query import retrofit2.http.QueryMap interface RetrofitService { @@ -32,12 +33,20 @@ /** * 获取巡查记录 */ - @POST("/meter/file/listPage") + @GET("/inspection-record/listPage") suspend fun getCheckHistoryByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("offset") offset: Int, + @Query("limit") limit: Int + ): String + + /** + * 根据巡查ID获取此次记录的详情 + */ + @GET("/inspection-record/listAlarmByInspection") + suspend fun getCheckHistoryDetailById( + @Header("token") token: String, + @Query("inspectionId") inspectionId: String ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index e1a3ed9..3cae5b6 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -57,24 +57,20 @@ /** * 获取巡查记录 */ - suspend fun getCheckHistoryByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getCheckHistoryByPage(offset: Int): String { return api.getCheckHistoryByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, offset, LocaleConstant.PAGE_LIMIT ) } /** + * 根据巡查ID获取此次记录的详情 + */ + suspend fun getCheckHistoryDetailById(inspectionId: String): String { + return api.getCheckHistoryDetailById(AuthenticationHelper.token, inspectionId) + } + + /** * 获取标准规范文件列表 */ suspend fun getStandardFileByPage(keywords: String, offset: Int): String { diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt index a22f0a9..f75e755 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt @@ -1,6 +1,5 @@ package com.casic.br.app.view -import android.graphics.Color import android.os.Bundle import android.os.Handler import android.os.Message @@ -13,8 +12,11 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.divider.RecyclerViewItemDivider +import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -22,11 +24,12 @@ class CheckHistoryActivity : KotlinBaseActivity(), Handler.Callback { + private val kTag = "CheckHistoryActivity" + private val marginOffset by lazy { 10.dp2px(this) } private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var checkHistoryViewModel: CheckHistoryViewModel - private lateinit var checkHistoryAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var keywords = "" + private lateinit var checkHistoryAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -48,60 +51,63 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) checkHistoryViewModel = ViewModelProvider(this)[CheckHistoryViewModel::class.java] + getCheckHistoryByPage() checkHistoryViewModel.historyResult.observe(this) { -// if (it.code == 200) { -// val dataRows = it.data?.rows!! -// when { -// isRefresh -> { -// checkHistoryAdapter.setRefreshData(dataRows) -// binding.refreshLayout.finishRefresh() -// isRefresh = false -// } -// -// isLoadMore -> { -// if (dataRows.size == 0) { -// "到底了,别拉了".show(this) -// } -// checkHistoryAdapter.setLoadMoreData(dataRows) -// binding.refreshLayout.finishLoadMore() -// isLoadMore = false -// } -// -// else -> { -// dataBeans = dataRows -// weakReferenceHandler.sendEmptyMessage(2024030503) -// } -// } -// } + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + checkHistoryAdapter.setRefreshData(dataRows) + binding.refreshLayout.finishRefresh() + isRefresh = false + } + + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(this) + } + checkHistoryAdapter.setLoadMoreData(dataRows) + binding.refreshLayout.finishLoadMore() + isLoadMore = false + } + + else -> { + dataBeans = dataRows + weakReferenceHandler.sendEmptyMessage(2024030503) + } + } + } } } private fun getCheckHistoryByPage() { - checkHistoryViewModel.getCheckHistoryByPage(this, keywords, page) + checkHistoryViewModel.getCheckHistoryByPage(this, page) } override fun handleMessage(msg: Message): Boolean { when (msg.what) { 2024030503 -> { checkHistoryAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_check_history, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: CheckHistoryModel + item: CheckHistoryModel.DataModel.RowsModel ) { - + //TODO 数据未绑定 } } binding.recyclerView.adapter = checkHistoryAdapter - binding.recyclerView.addItemDecoration(RecyclerViewItemDivider(1, Color.WHITE)) + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, marginOffset, marginOffset, marginOffset) + ) checkHistoryAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: CheckHistoryModel + position: Int, t: CheckHistoryModel.DataModel.RowsModel ) { - //TODO 查看巡查记录详情 + navigatePageTo(t.toJson()) } }) } @@ -115,6 +121,9 @@ override fun observeRequestState() { checkHistoryViewModel.loadState.observe(this) { + if (isRefresh || isLoadMore) { + return@observe + } when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") LoadState.Success -> { diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt new file mode 100644 index 0000000..f1704d0 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt @@ -0,0 +1,114 @@ +package com.casic.br.app.view + +import android.os.Bundle +import androidx.lifecycle.ViewModelProvider +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityCheckHistoryDetailBinding +import com.casic.br.app.extensions.initImmersionBar +import com.casic.br.app.model.CheckHistoryDetailModel +import com.casic.br.app.model.CheckHistoryModel +import com.casic.br.app.vm.CheckHistoryViewModel +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant +import com.pengxh.kt.lite.utils.LoadState +import com.pengxh.kt.lite.utils.LoadingDialogHub +import com.pengxh.kt.lite.widget.TitleBarView + +class CheckHistoryDetailActivity : KotlinBaseActivity() { + + private val context = this + private val gson by lazy { Gson() } + private val marginOffset by lazy { 10.dp2px(this) } + private lateinit var checkHistoryViewModel: CheckHistoryViewModel + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + val extra = intent.getStringExtra(Constant.INTENT_PARAM) + val rowsModel = gson.fromJson( + extra, object : TypeToken() {}.type + ) + binding.checkTimeView.text = + "${rowsModel.inspectionDate} ${rowsModel.startTime}-${rowsModel.endTime}" + binding.checkSiteView.text = rowsModel.inspectionAddress + binding.troubleCountView.text = rowsModel.alarmCount + binding.checkPersonView.text = rowsModel.inspectionUser + + //列表上部统计 + binding.countView.text = rowsModel.inspectionUser + + checkHistoryViewModel = ViewModelProvider(this)[CheckHistoryViewModel::class.java] + checkHistoryViewModel.getCheckHistoryDetailById(this, rowsModel.id) + checkHistoryViewModel.detailResult.observe(this) { + if (it.code == 200) { + val detailAdapter = object : + NormalRecyclerAdapter( + R.layout.item_check_history_detail, it.data + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: CheckHistoryDetailModel.DataModel + ) { + viewHolder.setText( + R.id.troubleTypeView, "${item.mainClassName}-${item.subClassName}" + ).setText(R.id.troubleNameView, item.name) + .setText(R.id.troubleContentView, item.content) +// val gridView = viewHolder.getView(R.id.troubleImageView) +// val imageAdapter = ReadOnlyImageAdapter(context, item.imageList) +// gridView.adapter = imageAdapter +// gridView.onItemClickListener = +// AdapterView.OnItemClickListener { adapterView, view, position, l -> +// +// } + } + } + binding.recyclerView.adapter = detailAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, marginOffset, marginOffset, marginOffset) + ) + } + } + } + + override fun initViewBinding(): ActivityCheckHistoryDetailBinding { + return ActivityCheckHistoryDetailBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + checkHistoryViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") + LoadState.Success -> { + LoadingDialogHub.dismiss() + } + + LoadState.Fail -> { + LoadingDialogHub.dismiss() + "数据加载失败,请重试".show(this) + } + } + } + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.themeColor) + binding.titleView.setOnClickListener(object : TitleBarView.OnClickListener { + override fun onLeftClick() { + finish() + } + + override fun onRightClick() { + + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt b/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt index f0bfec2..05226a9 100644 --- a/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt +++ b/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt @@ -4,6 +4,7 @@ import androidx.lifecycle.MutableLiveData import com.casic.br.app.extensions.getResponseCode import com.casic.br.app.extensions.getResponseMessage +import com.casic.br.app.model.CheckHistoryDetailModel import com.casic.br.app.model.CheckHistoryModel import com.casic.br.app.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -17,10 +18,11 @@ private val gson by lazy { Gson() } val historyResult = MutableLiveData() + val detailResult = MutableLiveData() - fun getCheckHistoryByPage(context: Context, keywords: String, offset: Int) = launch({ + fun getCheckHistoryByPage(context: Context, offset: Int) = launch({ loadState.value = LoadState.Loading - val response = RetrofitServiceManager.getCheckHistoryByPage(keywords, offset) + val response = RetrofitServiceManager.getCheckHistoryByPage(offset) when (response.getResponseCode()) { 200 -> { loadState.value = LoadState.Success @@ -38,4 +40,25 @@ loadState.value = LoadState.Fail it.localizedMessage?.show(context) }) + + fun getCheckHistoryDetailById(context: Context, inspectionId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getCheckHistoryDetailById(inspectionId) + when (response.getResponseCode()) { + 200 -> { + loadState.value = LoadState.Success + detailResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } + + else -> { + loadState.value = LoadState.Fail + response.getResponseMessage().show(context) + } + } + }, { + loadState.value = LoadState.Fail + it.localizedMessage?.show(context) + }) } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_check_history_detail.xml b/app/src/main/res/layout/activity_check_history_detail.xml new file mode 100644 index 0000000..66c14c7 --- /dev/null +++ b/app/src/main/res/layout/activity_check_history_detail.xml @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_check_history.xml b/app/src/main/res/layout/item_check_history.xml index 9c372d3..4b42aa4 100644 --- a/app/src/main/res/layout/item_check_history.xml +++ b/app/src/main/res/layout/item_check_history.xml @@ -5,7 +5,7 @@ android:background="#466FB8" android:gravity="center" android:orientation="vertical" - android:padding="@dimen/dp_5"> + android:padding="@dimen/dp_7"> + android:textSize="@dimen/sp_14" /> + android:textSize="@dimen/sp_14" /> + android:textSize="@dimen/sp_14" /> + android:textSize="@dimen/sp_14" /> + android:textSize="@dimen/sp_14" /> + android:textSize="@dimen/sp_14" /> + android:textSize="@dimen/sp_14" /> + 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 d1c273b..544ae3b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java new file mode 100644 index 0000000..bb21b14 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryDetailModel.java @@ -0,0 +1,163 @@ +package com.casic.br.app.model; + +import java.util.List; + +public class CheckHistoryDetailModel { + + private int code; + private List data; + private String message; + private boolean success; + + 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 boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String alarmMenuId; + private String basis; + private String content; + private String id; + private String imageList; + private String inspectionId; + private String mainClass; + private String mainClassName; + private String name; + private String scene; + private String sceneName; + private String subClass; + private String subClassName; + + public String getAlarmMenuId() { + return alarmMenuId; + } + + public void setAlarmMenuId(String alarmMenuId) { + this.alarmMenuId = alarmMenuId; + } + + public String getBasis() { + return basis; + } + + public void setBasis(String basis) { + this.basis = basis; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageList() { + return imageList; + } + + public void setImageList(String imageList) { + this.imageList = imageList; + } + + public String getInspectionId() { + return inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getMainClass() { + return mainClass; + } + + public void setMainClass(String mainClass) { + this.mainClass = mainClass; + } + + public String getMainClassName() { + return mainClassName; + } + + public void setMainClassName(String mainClassName) { + this.mainClassName = mainClassName; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getScene() { + return scene; + } + + public void setScene(String scene) { + this.scene = scene; + } + + public String getSceneName() { + return sceneName; + } + + public void setSceneName(String sceneName) { + this.sceneName = sceneName; + } + + public String getSubClass() { + return subClass; + } + + public void setSubClass(String subClass) { + this.subClass = subClass; + } + + public String getSubClassName() { + return subClassName; + } + + public void setSubClassName(String subClassName) { + this.subClassName = subClassName; + } + } +} diff --git a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java index da1e09d..a18fe7c 100644 --- a/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java +++ b/app/src/main/java/com/casic/br/app/model/CheckHistoryModel.java @@ -1,4 +1,130 @@ package com.casic.br.app.model; +import java.util.List; + public class CheckHistoryModel { + + private int code; + private DataModel data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsModel { + private String alarmCount; + private String endTime; + private String id; + private String inspectionAddress; + private String inspectionDate; + private String inspectionUser; + private String startTime; + + public String getAlarmCount() { + return alarmCount; + } + + public void setAlarmCount(String alarmCount) { + this.alarmCount = alarmCount; + } + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getInspectionAddress() { + return inspectionAddress; + } + + public void setInspectionAddress(String inspectionAddress) { + this.inspectionAddress = inspectionAddress; + } + + public String getInspectionDate() { + return inspectionDate; + } + + public void setInspectionDate(String inspectionDate) { + this.inspectionDate = inspectionDate; + } + + public String getInspectionUser() { + return inspectionUser; + } + + public void setInspectionUser(String inspectionUser) { + this.inspectionUser = inspectionUser; + } + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + } + } } diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt index 0b768f5..ab76720 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitService.kt @@ -7,6 +7,7 @@ import retrofit2.http.Multipart import retrofit2.http.POST import retrofit2.http.PartMap +import retrofit2.http.Query import retrofit2.http.QueryMap interface RetrofitService { @@ -32,12 +33,20 @@ /** * 获取巡查记录 */ - @POST("/meter/file/listPage") + @GET("/inspection-record/listPage") suspend fun getCheckHistoryByPage( @Header("token") token: String, - @Body requestBody: RequestBody, - @QueryMap limit: Map, - @QueryMap offset: Map + @Query("offset") offset: Int, + @Query("limit") limit: Int + ): String + + /** + * 根据巡查ID获取此次记录的详情 + */ + @GET("/inspection-record/listAlarmByInspection") + suspend fun getCheckHistoryDetailById( + @Header("token") token: String, + @Query("inspectionId") inspectionId: String ): String /** diff --git a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt index e1a3ed9..3cae5b6 100644 --- a/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/app/retrofit/RetrofitServiceManager.kt @@ -57,24 +57,20 @@ /** * 获取巡查记录 */ - suspend fun getCheckHistoryByPage(keywords: String, offset: Int): String { - val param = JsonObject() - param.addProperty("keywords", keywords) - val requestBody = param.toString().toRequestBody( - "application/json;charset=UTF-8".toMediaType() - ) - - val limitMap = HashMap() - limitMap["limit"] = LocaleConstant.PAGE_LIMIT - - val offsetMap = HashMap() - offsetMap["offset"] = offset + suspend fun getCheckHistoryByPage(offset: Int): String { return api.getCheckHistoryByPage( - AuthenticationHelper.token, requestBody, limitMap, offsetMap + AuthenticationHelper.token, offset, LocaleConstant.PAGE_LIMIT ) } /** + * 根据巡查ID获取此次记录的详情 + */ + suspend fun getCheckHistoryDetailById(inspectionId: String): String { + return api.getCheckHistoryDetailById(AuthenticationHelper.token, inspectionId) + } + + /** * 获取标准规范文件列表 */ suspend fun getStandardFileByPage(keywords: String, offset: Int): String { diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt index a22f0a9..f75e755 100644 --- a/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryActivity.kt @@ -1,6 +1,5 @@ package com.casic.br.app.view -import android.graphics.Color import android.os.Bundle import android.os.Handler import android.os.Message @@ -13,8 +12,11 @@ import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.divider.RecyclerViewItemDivider +import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialogHub import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -22,11 +24,12 @@ class CheckHistoryActivity : KotlinBaseActivity(), Handler.Callback { + private val kTag = "CheckHistoryActivity" + private val marginOffset by lazy { 10.dp2px(this) } private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var checkHistoryViewModel: CheckHistoryViewModel - private lateinit var checkHistoryAdapter: NormalRecyclerAdapter - private var dataBeans: MutableList = ArrayList() - private var keywords = "" + private lateinit var checkHistoryAdapter: NormalRecyclerAdapter + private var dataBeans: MutableList = ArrayList() private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -48,60 +51,63 @@ override fun initOnCreate(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) checkHistoryViewModel = ViewModelProvider(this)[CheckHistoryViewModel::class.java] + getCheckHistoryByPage() checkHistoryViewModel.historyResult.observe(this) { -// if (it.code == 200) { -// val dataRows = it.data?.rows!! -// when { -// isRefresh -> { -// checkHistoryAdapter.setRefreshData(dataRows) -// binding.refreshLayout.finishRefresh() -// isRefresh = false -// } -// -// isLoadMore -> { -// if (dataRows.size == 0) { -// "到底了,别拉了".show(this) -// } -// checkHistoryAdapter.setLoadMoreData(dataRows) -// binding.refreshLayout.finishLoadMore() -// isLoadMore = false -// } -// -// else -> { -// dataBeans = dataRows -// weakReferenceHandler.sendEmptyMessage(2024030503) -// } -// } -// } + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + checkHistoryAdapter.setRefreshData(dataRows) + binding.refreshLayout.finishRefresh() + isRefresh = false + } + + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(this) + } + checkHistoryAdapter.setLoadMoreData(dataRows) + binding.refreshLayout.finishLoadMore() + isLoadMore = false + } + + else -> { + dataBeans = dataRows + weakReferenceHandler.sendEmptyMessage(2024030503) + } + } + } } } private fun getCheckHistoryByPage() { - checkHistoryViewModel.getCheckHistoryByPage(this, keywords, page) + checkHistoryViewModel.getCheckHistoryByPage(this, page) } override fun handleMessage(msg: Message): Boolean { when (msg.what) { 2024030503 -> { checkHistoryAdapter = object : - NormalRecyclerAdapter( + NormalRecyclerAdapter( R.layout.item_check_history, dataBeans ) { override fun convertView( viewHolder: ViewHolder, position: Int, - item: CheckHistoryModel + item: CheckHistoryModel.DataModel.RowsModel ) { - + //TODO 数据未绑定 } } binding.recyclerView.adapter = checkHistoryAdapter - binding.recyclerView.addItemDecoration(RecyclerViewItemDivider(1, Color.WHITE)) + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, marginOffset, marginOffset, marginOffset) + ) checkHistoryAdapter.setOnItemClickedListener(object : - NormalRecyclerAdapter.OnItemClickedListener { + NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( - position: Int, t: CheckHistoryModel + position: Int, t: CheckHistoryModel.DataModel.RowsModel ) { - //TODO 查看巡查记录详情 + navigatePageTo(t.toJson()) } }) } @@ -115,6 +121,9 @@ override fun observeRequestState() { checkHistoryViewModel.loadState.observe(this) { + if (isRefresh || isLoadMore) { + return@observe + } when (it) { LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") LoadState.Success -> { diff --git a/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt new file mode 100644 index 0000000..f1704d0 --- /dev/null +++ b/app/src/main/java/com/casic/br/app/view/CheckHistoryDetailActivity.kt @@ -0,0 +1,114 @@ +package com.casic.br.app.view + +import android.os.Bundle +import androidx.lifecycle.ViewModelProvider +import com.casic.br.app.R +import com.casic.br.app.databinding.ActivityCheckHistoryDetailBinding +import com.casic.br.app.extensions.initImmersionBar +import com.casic.br.app.model.CheckHistoryDetailModel +import com.casic.br.app.model.CheckHistoryModel +import com.casic.br.app.vm.CheckHistoryViewModel +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter +import com.pengxh.kt.lite.adapter.ViewHolder +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.divider.RecyclerViewItemOffsets +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.Constant +import com.pengxh.kt.lite.utils.LoadState +import com.pengxh.kt.lite.utils.LoadingDialogHub +import com.pengxh.kt.lite.widget.TitleBarView + +class CheckHistoryDetailActivity : KotlinBaseActivity() { + + private val context = this + private val gson by lazy { Gson() } + private val marginOffset by lazy { 10.dp2px(this) } + private lateinit var checkHistoryViewModel: CheckHistoryViewModel + + override fun initEvent() { + + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + val extra = intent.getStringExtra(Constant.INTENT_PARAM) + val rowsModel = gson.fromJson( + extra, object : TypeToken() {}.type + ) + binding.checkTimeView.text = + "${rowsModel.inspectionDate} ${rowsModel.startTime}-${rowsModel.endTime}" + binding.checkSiteView.text = rowsModel.inspectionAddress + binding.troubleCountView.text = rowsModel.alarmCount + binding.checkPersonView.text = rowsModel.inspectionUser + + //列表上部统计 + binding.countView.text = rowsModel.inspectionUser + + checkHistoryViewModel = ViewModelProvider(this)[CheckHistoryViewModel::class.java] + checkHistoryViewModel.getCheckHistoryDetailById(this, rowsModel.id) + checkHistoryViewModel.detailResult.observe(this) { + if (it.code == 200) { + val detailAdapter = object : + NormalRecyclerAdapter( + R.layout.item_check_history_detail, it.data + ) { + override fun convertView( + viewHolder: ViewHolder, position: Int, + item: CheckHistoryDetailModel.DataModel + ) { + viewHolder.setText( + R.id.troubleTypeView, "${item.mainClassName}-${item.subClassName}" + ).setText(R.id.troubleNameView, item.name) + .setText(R.id.troubleContentView, item.content) +// val gridView = viewHolder.getView(R.id.troubleImageView) +// val imageAdapter = ReadOnlyImageAdapter(context, item.imageList) +// gridView.adapter = imageAdapter +// gridView.onItemClickListener = +// AdapterView.OnItemClickListener { adapterView, view, position, l -> +// +// } + } + } + binding.recyclerView.adapter = detailAdapter + binding.recyclerView.addItemDecoration( + RecyclerViewItemOffsets(marginOffset, marginOffset, marginOffset, marginOffset) + ) + } + } + } + + override fun initViewBinding(): ActivityCheckHistoryDetailBinding { + return ActivityCheckHistoryDetailBinding.inflate(layoutInflater) + } + + override fun observeRequestState() { + checkHistoryViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后...") + LoadState.Success -> { + LoadingDialogHub.dismiss() + } + + LoadState.Fail -> { + LoadingDialogHub.dismiss() + "数据加载失败,请重试".show(this) + } + } + } + } + + override fun setupTopBarLayout() { + binding.rootView.initImmersionBar(this, false, R.color.themeColor) + binding.titleView.setOnClickListener(object : TitleBarView.OnClickListener { + override fun onLeftClick() { + finish() + } + + override fun onRightClick() { + + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt b/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt index f0bfec2..05226a9 100644 --- a/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt +++ b/app/src/main/java/com/casic/br/app/vm/CheckHistoryViewModel.kt @@ -4,6 +4,7 @@ import androidx.lifecycle.MutableLiveData import com.casic.br.app.extensions.getResponseCode import com.casic.br.app.extensions.getResponseMessage +import com.casic.br.app.model.CheckHistoryDetailModel import com.casic.br.app.model.CheckHistoryModel import com.casic.br.app.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -17,10 +18,11 @@ private val gson by lazy { Gson() } val historyResult = MutableLiveData() + val detailResult = MutableLiveData() - fun getCheckHistoryByPage(context: Context, keywords: String, offset: Int) = launch({ + fun getCheckHistoryByPage(context: Context, offset: Int) = launch({ loadState.value = LoadState.Loading - val response = RetrofitServiceManager.getCheckHistoryByPage(keywords, offset) + val response = RetrofitServiceManager.getCheckHistoryByPage(offset) when (response.getResponseCode()) { 200 -> { loadState.value = LoadState.Success @@ -38,4 +40,25 @@ loadState.value = LoadState.Fail it.localizedMessage?.show(context) }) + + fun getCheckHistoryDetailById(context: Context, inspectionId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getCheckHistoryDetailById(inspectionId) + when (response.getResponseCode()) { + 200 -> { + loadState.value = LoadState.Success + detailResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } + + else -> { + loadState.value = LoadState.Fail + response.getResponseMessage().show(context) + } + } + }, { + loadState.value = LoadState.Fail + it.localizedMessage?.show(context) + }) } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_check_history_detail.xml b/app/src/main/res/layout/activity_check_history_detail.xml new file mode 100644 index 0000000..66c14c7 --- /dev/null +++ b/app/src/main/res/layout/activity_check_history_detail.xml @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_check_history.xml b/app/src/main/res/layout/item_check_history.xml index 9c372d3..4b42aa4 100644 --- a/app/src/main/res/layout/item_check_history.xml +++ b/app/src/main/res/layout/item_check_history.xml @@ -5,7 +5,7 @@ android:background="#466FB8" android:gravity="center" android:orientation="vertical" - android:padding="@dimen/dp_5"> + android:padding="@dimen/dp_7"> + android:textSize="@dimen/sp_14" /> + android:textSize="@dimen/sp_14" /> + android:textSize="@dimen/sp_14" /> + android:textSize="@dimen/sp_14" /> + android:textSize="@dimen/sp_14" /> + android:textSize="@dimen/sp_14" /> + android:textSize="@dimen/sp_14" /> + android:textSize="@dimen/sp_14" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_check_history_detail.xml b/app/src/main/res/layout/item_check_history_detail.xml new file mode 100644 index 0000000..2e8deeb --- /dev/null +++ b/app/src/main/res/layout/item_check_history_detail.xml @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file