diff --git a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt index c6e8354..bf20e0e 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt @@ -151,6 +151,9 @@ super.onResume() userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + val value = SaveKeyValues.getValue(LocaleConstant.CAR_NUMBER, "") as String + bv.carNumberView.text = value + //计算本地缓存,TODO 后期需要考虑视频本地缓存清除 bv.clearCacheView.text = rootDir.calculateSize().formatFileSize() } diff --git a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt index c6e8354..bf20e0e 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt @@ -151,6 +151,9 @@ super.onResume() userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + val value = SaveKeyValues.getValue(LocaleConstant.CAR_NUMBER, "") as String + bv.carNumberView.text = value + //计算本地缓存,TODO 后期需要考虑视频本地缓存清除 bv.clearCacheView.text = rootDir.calculateSize().formatFileSize() } diff --git a/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt b/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt new file mode 100644 index 0000000..5587611 --- /dev/null +++ b/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt @@ -0,0 +1,17 @@ +package com.casic.br.ktd.model + +/** + * 任务上传的参数 + * + * status 任务状态(1:启用,0:停用) + * + * valid 数据有效(0:有效,1:删除) + * */ +data class TaskParam( + val taskTitle: String, + val carId: String, + val beginDate: String, + val state: String, + val valid: String, + val endDate: String +) diff --git a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt index c6e8354..bf20e0e 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt @@ -151,6 +151,9 @@ super.onResume() userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + val value = SaveKeyValues.getValue(LocaleConstant.CAR_NUMBER, "") as String + bv.carNumberView.text = value + //计算本地缓存,TODO 后期需要考虑视频本地缓存清除 bv.clearCacheView.text = rootDir.calculateSize().formatFileSize() } diff --git a/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt b/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt new file mode 100644 index 0000000..5587611 --- /dev/null +++ b/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt @@ -0,0 +1,17 @@ +package com.casic.br.ktd.model + +/** + * 任务上传的参数 + * + * status 任务状态(1:启用,0:停用) + * + * valid 数据有效(0:有效,1:删除) + * */ +data class TaskParam( + val taskTitle: String, + val carId: String, + val beginDate: String, + val state: String, + val valid: String, + val endDate: String +) diff --git a/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java b/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java new file mode 100644 index 0000000..4db9a25 --- /dev/null +++ b/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java @@ -0,0 +1,148 @@ +package com.casic.br.ktd.model; + +import java.util.List; + +public class VehicleListModel { + + private int code; + private DataModel data; + private String message; + + 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 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 carName; + private String carPlate; + private String deptId; + private String description; + private String id; + private String latitude; + private String longitude; + private String status; + private String ts; + private String valid; + + public String getCarName() { + return carName; + } + + public void setCarName(String carName) { + this.carName = carName; + } + + public String getCarPlate() { + return carPlate; + } + + public void setCarPlate(String carPlate) { + this.carPlate = carPlate; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getTs() { + return ts; + } + + public void setTs(String ts) { + this.ts = ts; + } + + public String getValid() { + return valid; + } + + public void setValid(String valid) { + this.valid = valid; + } + } + } +} diff --git a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt index c6e8354..bf20e0e 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt @@ -151,6 +151,9 @@ super.onResume() userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + val value = SaveKeyValues.getValue(LocaleConstant.CAR_NUMBER, "") as String + bv.carNumberView.text = value + //计算本地缓存,TODO 后期需要考虑视频本地缓存清除 bv.clearCacheView.text = rootDir.calculateSize().formatFileSize() } diff --git a/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt b/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt new file mode 100644 index 0000000..5587611 --- /dev/null +++ b/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt @@ -0,0 +1,17 @@ +package com.casic.br.ktd.model + +/** + * 任务上传的参数 + * + * status 任务状态(1:启用,0:停用) + * + * valid 数据有效(0:有效,1:删除) + * */ +data class TaskParam( + val taskTitle: String, + val carId: String, + val beginDate: String, + val state: String, + val valid: String, + val endDate: String +) diff --git a/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java b/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java new file mode 100644 index 0000000..4db9a25 --- /dev/null +++ b/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java @@ -0,0 +1,148 @@ +package com.casic.br.ktd.model; + +import java.util.List; + +public class VehicleListModel { + + private int code; + private DataModel data; + private String message; + + 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 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 carName; + private String carPlate; + private String deptId; + private String description; + private String id; + private String latitude; + private String longitude; + private String status; + private String ts; + private String valid; + + public String getCarName() { + return carName; + } + + public void setCarName(String carName) { + this.carName = carName; + } + + public String getCarPlate() { + return carPlate; + } + + public void setCarPlate(String carPlate) { + this.carPlate = carPlate; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getTs() { + return ts; + } + + public void setTs(String ts) { + this.ts = ts; + } + + public String getValid() { + return valid; + } + + public void setValid(String valid) { + this.valid = valid; + } + } + } +} diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt index c6aa6d8..e375c35 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt @@ -50,4 +50,23 @@ @QueryMap limit: Map, @QueryMap offset: Map, ): String + + /** + * 新增任务 + */ + @POST("/system/busPatrolTask/add") + suspend fun addTask( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** + * 获取巡检任务列表 + */ + @POST("/system/busPatrolCar/listPage") + suspend fun getVehiclesByPage( + @Header("token") token: String, + @QueryMap limit: Map, + @QueryMap offset: Map, + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt index c6e8354..bf20e0e 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt @@ -151,6 +151,9 @@ super.onResume() userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + val value = SaveKeyValues.getValue(LocaleConstant.CAR_NUMBER, "") as String + bv.carNumberView.text = value + //计算本地缓存,TODO 后期需要考虑视频本地缓存清除 bv.clearCacheView.text = rootDir.calculateSize().formatFileSize() } diff --git a/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt b/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt new file mode 100644 index 0000000..5587611 --- /dev/null +++ b/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt @@ -0,0 +1,17 @@ +package com.casic.br.ktd.model + +/** + * 任务上传的参数 + * + * status 任务状态(1:启用,0:停用) + * + * valid 数据有效(0:有效,1:删除) + * */ +data class TaskParam( + val taskTitle: String, + val carId: String, + val beginDate: String, + val state: String, + val valid: String, + val endDate: String +) diff --git a/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java b/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java new file mode 100644 index 0000000..4db9a25 --- /dev/null +++ b/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java @@ -0,0 +1,148 @@ +package com.casic.br.ktd.model; + +import java.util.List; + +public class VehicleListModel { + + private int code; + private DataModel data; + private String message; + + 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 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 carName; + private String carPlate; + private String deptId; + private String description; + private String id; + private String latitude; + private String longitude; + private String status; + private String ts; + private String valid; + + public String getCarName() { + return carName; + } + + public void setCarName(String carName) { + this.carName = carName; + } + + public String getCarPlate() { + return carPlate; + } + + public void setCarPlate(String carPlate) { + this.carPlate = carPlate; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getTs() { + return ts; + } + + public void setTs(String ts) { + this.ts = ts; + } + + public String getValid() { + return valid; + } + + public void setValid(String valid) { + this.valid = valid; + } + } + } +} diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt index c6aa6d8..e375c35 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt @@ -50,4 +50,23 @@ @QueryMap limit: Map, @QueryMap offset: Map, ): String + + /** + * 新增任务 + */ + @POST("/system/busPatrolTask/add") + suspend fun addTask( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** + * 获取巡检任务列表 + */ + @POST("/system/busPatrolCar/listPage") + suspend fun getVehiclesByPage( + @Header("token") token: String, + @QueryMap limit: Map, + @QueryMap offset: Map, + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt index 163c7d2..2cc5a36 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt @@ -1,5 +1,6 @@ package com.casic.br.ktd.retrofit +import com.casic.br.ktd.model.TaskParam import com.casic.br.ktd.utils.AuthenticationHelper import com.casic.br.ktd.utils.LocaleConstant import com.google.gson.JsonObject @@ -90,4 +91,34 @@ AuthenticationHelper.token, requestBody, limitMap, offsetMap ) } + + /** + * 新增任务 + */ + suspend fun addTask(taskParam: TaskParam): String { + val param = JsonObject() + param.addProperty("endDate", taskParam.endDate) + param.addProperty("description", "") + param.addProperty("carId", taskParam.carId) + param.addProperty("valid", taskParam.valid) + param.addProperty("beginDate", taskParam.beginDate) + param.addProperty("taskName", taskParam.taskTitle) + param.addProperty("status", taskParam.state) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.addTask(AuthenticationHelper.token, requestBody) + } + + /** + * 获取巡检车列表 + */ + suspend fun getVehiclesByPage(offset: Int): String { + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getVehiclesByPage(AuthenticationHelper.token, limitMap, offsetMap) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt index c6e8354..bf20e0e 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt @@ -151,6 +151,9 @@ super.onResume() userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + val value = SaveKeyValues.getValue(LocaleConstant.CAR_NUMBER, "") as String + bv.carNumberView.text = value + //计算本地缓存,TODO 后期需要考虑视频本地缓存清除 bv.clearCacheView.text = rootDir.calculateSize().formatFileSize() } diff --git a/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt b/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt new file mode 100644 index 0000000..5587611 --- /dev/null +++ b/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt @@ -0,0 +1,17 @@ +package com.casic.br.ktd.model + +/** + * 任务上传的参数 + * + * status 任务状态(1:启用,0:停用) + * + * valid 数据有效(0:有效,1:删除) + * */ +data class TaskParam( + val taskTitle: String, + val carId: String, + val beginDate: String, + val state: String, + val valid: String, + val endDate: String +) diff --git a/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java b/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java new file mode 100644 index 0000000..4db9a25 --- /dev/null +++ b/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java @@ -0,0 +1,148 @@ +package com.casic.br.ktd.model; + +import java.util.List; + +public class VehicleListModel { + + private int code; + private DataModel data; + private String message; + + 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 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 carName; + private String carPlate; + private String deptId; + private String description; + private String id; + private String latitude; + private String longitude; + private String status; + private String ts; + private String valid; + + public String getCarName() { + return carName; + } + + public void setCarName(String carName) { + this.carName = carName; + } + + public String getCarPlate() { + return carPlate; + } + + public void setCarPlate(String carPlate) { + this.carPlate = carPlate; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getTs() { + return ts; + } + + public void setTs(String ts) { + this.ts = ts; + } + + public String getValid() { + return valid; + } + + public void setValid(String valid) { + this.valid = valid; + } + } + } +} diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt index c6aa6d8..e375c35 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt @@ -50,4 +50,23 @@ @QueryMap limit: Map, @QueryMap offset: Map, ): String + + /** + * 新增任务 + */ + @POST("/system/busPatrolTask/add") + suspend fun addTask( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** + * 获取巡检任务列表 + */ + @POST("/system/busPatrolCar/listPage") + suspend fun getVehiclesByPage( + @Header("token") token: String, + @QueryMap limit: Map, + @QueryMap offset: Map, + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt index 163c7d2..2cc5a36 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt @@ -1,5 +1,6 @@ package com.casic.br.ktd.retrofit +import com.casic.br.ktd.model.TaskParam import com.casic.br.ktd.utils.AuthenticationHelper import com.casic.br.ktd.utils.LocaleConstant import com.google.gson.JsonObject @@ -90,4 +91,34 @@ AuthenticationHelper.token, requestBody, limitMap, offsetMap ) } + + /** + * 新增任务 + */ + suspend fun addTask(taskParam: TaskParam): String { + val param = JsonObject() + param.addProperty("endDate", taskParam.endDate) + param.addProperty("description", "") + param.addProperty("carId", taskParam.carId) + param.addProperty("valid", taskParam.valid) + param.addProperty("beginDate", taskParam.beginDate) + param.addProperty("taskName", taskParam.taskTitle) + param.addProperty("status", taskParam.state) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.addTask(AuthenticationHelper.token, requestBody) + } + + /** + * 获取巡检车列表 + */ + suspend fun getVehiclesByPage(offset: Int): String { + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getVehiclesByPage(AuthenticationHelper.token, limitMap, offsetMap) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt index 6784987..8028354 100644 --- a/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt @@ -42,6 +42,8 @@ const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val SERVER_BASE_URL = "http://111.198.10.15:11646" + const val CAR_NUMBER = "carNumber" + const val CAR_ID = "carId" //海康摄像头参数 const val HK_NET_IP = "192.168.1.64" diff --git a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt index c6e8354..bf20e0e 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt @@ -151,6 +151,9 @@ super.onResume() userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + val value = SaveKeyValues.getValue(LocaleConstant.CAR_NUMBER, "") as String + bv.carNumberView.text = value + //计算本地缓存,TODO 后期需要考虑视频本地缓存清除 bv.clearCacheView.text = rootDir.calculateSize().formatFileSize() } diff --git a/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt b/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt new file mode 100644 index 0000000..5587611 --- /dev/null +++ b/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt @@ -0,0 +1,17 @@ +package com.casic.br.ktd.model + +/** + * 任务上传的参数 + * + * status 任务状态(1:启用,0:停用) + * + * valid 数据有效(0:有效,1:删除) + * */ +data class TaskParam( + val taskTitle: String, + val carId: String, + val beginDate: String, + val state: String, + val valid: String, + val endDate: String +) diff --git a/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java b/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java new file mode 100644 index 0000000..4db9a25 --- /dev/null +++ b/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java @@ -0,0 +1,148 @@ +package com.casic.br.ktd.model; + +import java.util.List; + +public class VehicleListModel { + + private int code; + private DataModel data; + private String message; + + 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 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 carName; + private String carPlate; + private String deptId; + private String description; + private String id; + private String latitude; + private String longitude; + private String status; + private String ts; + private String valid; + + public String getCarName() { + return carName; + } + + public void setCarName(String carName) { + this.carName = carName; + } + + public String getCarPlate() { + return carPlate; + } + + public void setCarPlate(String carPlate) { + this.carPlate = carPlate; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getTs() { + return ts; + } + + public void setTs(String ts) { + this.ts = ts; + } + + public String getValid() { + return valid; + } + + public void setValid(String valid) { + this.valid = valid; + } + } + } +} diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt index c6aa6d8..e375c35 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt @@ -50,4 +50,23 @@ @QueryMap limit: Map, @QueryMap offset: Map, ): String + + /** + * 新增任务 + */ + @POST("/system/busPatrolTask/add") + suspend fun addTask( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** + * 获取巡检任务列表 + */ + @POST("/system/busPatrolCar/listPage") + suspend fun getVehiclesByPage( + @Header("token") token: String, + @QueryMap limit: Map, + @QueryMap offset: Map, + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt index 163c7d2..2cc5a36 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt @@ -1,5 +1,6 @@ package com.casic.br.ktd.retrofit +import com.casic.br.ktd.model.TaskParam import com.casic.br.ktd.utils.AuthenticationHelper import com.casic.br.ktd.utils.LocaleConstant import com.google.gson.JsonObject @@ -90,4 +91,34 @@ AuthenticationHelper.token, requestBody, limitMap, offsetMap ) } + + /** + * 新增任务 + */ + suspend fun addTask(taskParam: TaskParam): String { + val param = JsonObject() + param.addProperty("endDate", taskParam.endDate) + param.addProperty("description", "") + param.addProperty("carId", taskParam.carId) + param.addProperty("valid", taskParam.valid) + param.addProperty("beginDate", taskParam.beginDate) + param.addProperty("taskName", taskParam.taskTitle) + param.addProperty("status", taskParam.state) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.addTask(AuthenticationHelper.token, requestBody) + } + + /** + * 获取巡检车列表 + */ + suspend fun getVehiclesByPage(offset: Int): String { + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getVehiclesByPage(AuthenticationHelper.token, limitMap, offsetMap) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt index 6784987..8028354 100644 --- a/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt @@ -42,6 +42,8 @@ const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val SERVER_BASE_URL = "http://111.198.10.15:11646" + const val CAR_NUMBER = "carNumber" + const val CAR_ID = "carId" //海康摄像头参数 const val HK_NET_IP = "192.168.1.64" diff --git a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt index ecff7c8..bfe09d8 100644 --- a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt @@ -15,6 +15,7 @@ import android.view.SurfaceHolder import android.view.View import android.widget.AdapterView +import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.CameraUpdateFactory @@ -28,10 +29,13 @@ import com.casic.br.ktd.model.ChartPointModel import com.casic.br.ktd.model.RouteModel import com.casic.br.ktd.model.SensorDataModel +import com.casic.br.ktd.model.TaskParam import com.casic.br.ktd.netty.tcp.SocketManager import com.casic.br.ktd.netty.udp.UdpClient +import com.casic.br.ktd.utils.LoadingDialogHub import com.casic.br.ktd.utils.LocaleConstant import com.casic.br.ktd.utils.LocationHelper +import com.casic.br.ktd.vm.TaskViewModel import com.casic.br.ktd.widgets.AlertControlDialog import com.casic.br.ktd.widgets.LineChartMarkerView import com.casic.br.ktd.widgets.SteeringWheelView @@ -48,6 +52,7 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.* +import com.pengxh.kt.lite.vm.LoadState import hcnetsdk.sdkhub.MessageCodeHub import hcnetsdk.sdkhub.SDKGuider import kotlinx.android.synthetic.main.activity_inspection.* @@ -108,7 +113,11 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var aMap: AMap private lateinit var uiSettings: UiSettings + private lateinit var taskViewModel: TaskViewModel + private lateinit var taskParam: TaskParam + private var carId = "" private var taskTitle = "" + private var beginDate = "" /** * 协程配置云台设备,缓解新进页面较卡的问题 @@ -142,8 +151,10 @@ override fun initData(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) weakReferenceHandler = WeakReferenceHandler(this) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] taskTitle = intent.getStringExtra(Constant.INTENT_PARAM).toString() + carId = SaveKeyValues.getValue(LocaleConstant.CAR_ID, "") as String /** * 配置云台设备 @@ -493,7 +504,36 @@ override fun initLayoutView(): Int = R.layout.activity_inspection override fun observeRequestState() { + taskViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "任务提交中,请稍后...") + LoadState.Success -> { + LoadingDialogHub.dismiss() + "任务提交成功".show(this) + finish() + } + else -> { + LoadingDialogHub.dismiss() + //提交失败,弹窗重新提交 + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("任务提交失败,是否重新提交?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + } + + override fun onConfirmClick() { + taskViewModel.addTask(taskParam) + } + }).build().show() + } + } + } } override fun setupTopBarLayout() { @@ -562,6 +602,9 @@ LocaleConstant.OPEN_SENSOR_COMMAND, LocaleConstant.OPEN_SENSOR_COMMAND.size ) + + //记录任务开始时间 + beginDate = System.currentTimeMillis().timestampToCompleteDate() } catch (e: IndexOutOfBoundsException) { e.printStackTrace() "设备未正常连接,无法开启预览".show(this) @@ -668,6 +711,15 @@ isLoginSuccess = false initSuccess = false //结束巡检,保存数据 + val taskParam = TaskParam( + taskTitle, + carId, + beginDate, + "1", + "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + taskViewModel.addTask(taskParam) } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt index c6e8354..bf20e0e 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt @@ -151,6 +151,9 @@ super.onResume() userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + val value = SaveKeyValues.getValue(LocaleConstant.CAR_NUMBER, "") as String + bv.carNumberView.text = value + //计算本地缓存,TODO 后期需要考虑视频本地缓存清除 bv.clearCacheView.text = rootDir.calculateSize().formatFileSize() } diff --git a/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt b/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt new file mode 100644 index 0000000..5587611 --- /dev/null +++ b/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt @@ -0,0 +1,17 @@ +package com.casic.br.ktd.model + +/** + * 任务上传的参数 + * + * status 任务状态(1:启用,0:停用) + * + * valid 数据有效(0:有效,1:删除) + * */ +data class TaskParam( + val taskTitle: String, + val carId: String, + val beginDate: String, + val state: String, + val valid: String, + val endDate: String +) diff --git a/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java b/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java new file mode 100644 index 0000000..4db9a25 --- /dev/null +++ b/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java @@ -0,0 +1,148 @@ +package com.casic.br.ktd.model; + +import java.util.List; + +public class VehicleListModel { + + private int code; + private DataModel data; + private String message; + + 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 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 carName; + private String carPlate; + private String deptId; + private String description; + private String id; + private String latitude; + private String longitude; + private String status; + private String ts; + private String valid; + + public String getCarName() { + return carName; + } + + public void setCarName(String carName) { + this.carName = carName; + } + + public String getCarPlate() { + return carPlate; + } + + public void setCarPlate(String carPlate) { + this.carPlate = carPlate; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getTs() { + return ts; + } + + public void setTs(String ts) { + this.ts = ts; + } + + public String getValid() { + return valid; + } + + public void setValid(String valid) { + this.valid = valid; + } + } + } +} diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt index c6aa6d8..e375c35 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt @@ -50,4 +50,23 @@ @QueryMap limit: Map, @QueryMap offset: Map, ): String + + /** + * 新增任务 + */ + @POST("/system/busPatrolTask/add") + suspend fun addTask( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** + * 获取巡检任务列表 + */ + @POST("/system/busPatrolCar/listPage") + suspend fun getVehiclesByPage( + @Header("token") token: String, + @QueryMap limit: Map, + @QueryMap offset: Map, + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt index 163c7d2..2cc5a36 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt @@ -1,5 +1,6 @@ package com.casic.br.ktd.retrofit +import com.casic.br.ktd.model.TaskParam import com.casic.br.ktd.utils.AuthenticationHelper import com.casic.br.ktd.utils.LocaleConstant import com.google.gson.JsonObject @@ -90,4 +91,34 @@ AuthenticationHelper.token, requestBody, limitMap, offsetMap ) } + + /** + * 新增任务 + */ + suspend fun addTask(taskParam: TaskParam): String { + val param = JsonObject() + param.addProperty("endDate", taskParam.endDate) + param.addProperty("description", "") + param.addProperty("carId", taskParam.carId) + param.addProperty("valid", taskParam.valid) + param.addProperty("beginDate", taskParam.beginDate) + param.addProperty("taskName", taskParam.taskTitle) + param.addProperty("status", taskParam.state) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.addTask(AuthenticationHelper.token, requestBody) + } + + /** + * 获取巡检车列表 + */ + suspend fun getVehiclesByPage(offset: Int): String { + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getVehiclesByPage(AuthenticationHelper.token, limitMap, offsetMap) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt index 6784987..8028354 100644 --- a/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt @@ -42,6 +42,8 @@ const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val SERVER_BASE_URL = "http://111.198.10.15:11646" + const val CAR_NUMBER = "carNumber" + const val CAR_ID = "carId" //海康摄像头参数 const val HK_NET_IP = "192.168.1.64" diff --git a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt index ecff7c8..bfe09d8 100644 --- a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt @@ -15,6 +15,7 @@ import android.view.SurfaceHolder import android.view.View import android.widget.AdapterView +import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.CameraUpdateFactory @@ -28,10 +29,13 @@ import com.casic.br.ktd.model.ChartPointModel import com.casic.br.ktd.model.RouteModel import com.casic.br.ktd.model.SensorDataModel +import com.casic.br.ktd.model.TaskParam import com.casic.br.ktd.netty.tcp.SocketManager import com.casic.br.ktd.netty.udp.UdpClient +import com.casic.br.ktd.utils.LoadingDialogHub import com.casic.br.ktd.utils.LocaleConstant import com.casic.br.ktd.utils.LocationHelper +import com.casic.br.ktd.vm.TaskViewModel import com.casic.br.ktd.widgets.AlertControlDialog import com.casic.br.ktd.widgets.LineChartMarkerView import com.casic.br.ktd.widgets.SteeringWheelView @@ -48,6 +52,7 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.* +import com.pengxh.kt.lite.vm.LoadState import hcnetsdk.sdkhub.MessageCodeHub import hcnetsdk.sdkhub.SDKGuider import kotlinx.android.synthetic.main.activity_inspection.* @@ -108,7 +113,11 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var aMap: AMap private lateinit var uiSettings: UiSettings + private lateinit var taskViewModel: TaskViewModel + private lateinit var taskParam: TaskParam + private var carId = "" private var taskTitle = "" + private var beginDate = "" /** * 协程配置云台设备,缓解新进页面较卡的问题 @@ -142,8 +151,10 @@ override fun initData(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) weakReferenceHandler = WeakReferenceHandler(this) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] taskTitle = intent.getStringExtra(Constant.INTENT_PARAM).toString() + carId = SaveKeyValues.getValue(LocaleConstant.CAR_ID, "") as String /** * 配置云台设备 @@ -493,7 +504,36 @@ override fun initLayoutView(): Int = R.layout.activity_inspection override fun observeRequestState() { + taskViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "任务提交中,请稍后...") + LoadState.Success -> { + LoadingDialogHub.dismiss() + "任务提交成功".show(this) + finish() + } + else -> { + LoadingDialogHub.dismiss() + //提交失败,弹窗重新提交 + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("任务提交失败,是否重新提交?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + } + + override fun onConfirmClick() { + taskViewModel.addTask(taskParam) + } + }).build().show() + } + } + } } override fun setupTopBarLayout() { @@ -562,6 +602,9 @@ LocaleConstant.OPEN_SENSOR_COMMAND, LocaleConstant.OPEN_SENSOR_COMMAND.size ) + + //记录任务开始时间 + beginDate = System.currentTimeMillis().timestampToCompleteDate() } catch (e: IndexOutOfBoundsException) { e.printStackTrace() "设备未正常连接,无法开启预览".show(this) @@ -668,6 +711,15 @@ isLoginSuccess = false initSuccess = false //结束巡检,保存数据 + val taskParam = TaskParam( + taskTitle, + carId, + beginDate, + "1", + "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + taskViewModel.addTask(taskParam) } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt b/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt index 0540655..a8ce2cb 100644 --- a/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.os.Bundle +import android.util.Log import android.view.KeyEvent import android.view.LayoutInflater import android.view.View @@ -11,24 +12,30 @@ import android.widget.LinearLayout import android.widget.TextView import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.br.ktd.R import com.casic.br.ktd.fragment.AlarmPageFragment import com.casic.br.ktd.fragment.HomePageFragment import com.casic.br.ktd.fragment.MinePageFragment import com.casic.br.ktd.fragment.TaskPageFragment +import com.casic.br.ktd.utils.LocaleConstant +import com.casic.br.ktd.vm.VehicleViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.SaveKeyValues import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + private val kTag = "MainActivity" private val slideUnSelectedItems = ArrayList() private val slideSelectedItems = ArrayList() private val fragmentPages = ArrayList() private val slideAdapter by lazy { SlideAdapter(this) } private var clickTime: Long = 0 + private lateinit var vehicleViewModel: VehicleViewModel init { slideUnSelectedItems.add(SlideItem(R.mipmap.home_unselected, "首页")) @@ -57,6 +64,20 @@ //显示首页 switchPage(fragmentPages[0]) + + vehicleViewModel = ViewModelProvider(this)[VehicleViewModel::class.java] + vehicleViewModel.getVehiclesByPage(1) + vehicleViewModel.vehicleList.observe(this) { + if (it.code == 200) { + if (it.data.rows.isNotEmpty()) { + val model = it.data.rows[0] + SaveKeyValues.putValue(LocaleConstant.CAR_NUMBER, model.carPlate) + SaveKeyValues.putValue(LocaleConstant.CAR_ID, model.id) + } else { + Log.d(kTag, "initData => 无可用巡检车") + } + } + } } override fun initEvent() { diff --git a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt index c6e8354..bf20e0e 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt @@ -151,6 +151,9 @@ super.onResume() userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + val value = SaveKeyValues.getValue(LocaleConstant.CAR_NUMBER, "") as String + bv.carNumberView.text = value + //计算本地缓存,TODO 后期需要考虑视频本地缓存清除 bv.clearCacheView.text = rootDir.calculateSize().formatFileSize() } diff --git a/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt b/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt new file mode 100644 index 0000000..5587611 --- /dev/null +++ b/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt @@ -0,0 +1,17 @@ +package com.casic.br.ktd.model + +/** + * 任务上传的参数 + * + * status 任务状态(1:启用,0:停用) + * + * valid 数据有效(0:有效,1:删除) + * */ +data class TaskParam( + val taskTitle: String, + val carId: String, + val beginDate: String, + val state: String, + val valid: String, + val endDate: String +) diff --git a/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java b/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java new file mode 100644 index 0000000..4db9a25 --- /dev/null +++ b/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java @@ -0,0 +1,148 @@ +package com.casic.br.ktd.model; + +import java.util.List; + +public class VehicleListModel { + + private int code; + private DataModel data; + private String message; + + 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 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 carName; + private String carPlate; + private String deptId; + private String description; + private String id; + private String latitude; + private String longitude; + private String status; + private String ts; + private String valid; + + public String getCarName() { + return carName; + } + + public void setCarName(String carName) { + this.carName = carName; + } + + public String getCarPlate() { + return carPlate; + } + + public void setCarPlate(String carPlate) { + this.carPlate = carPlate; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getTs() { + return ts; + } + + public void setTs(String ts) { + this.ts = ts; + } + + public String getValid() { + return valid; + } + + public void setValid(String valid) { + this.valid = valid; + } + } + } +} diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt index c6aa6d8..e375c35 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt @@ -50,4 +50,23 @@ @QueryMap limit: Map, @QueryMap offset: Map, ): String + + /** + * 新增任务 + */ + @POST("/system/busPatrolTask/add") + suspend fun addTask( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** + * 获取巡检任务列表 + */ + @POST("/system/busPatrolCar/listPage") + suspend fun getVehiclesByPage( + @Header("token") token: String, + @QueryMap limit: Map, + @QueryMap offset: Map, + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt index 163c7d2..2cc5a36 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt @@ -1,5 +1,6 @@ package com.casic.br.ktd.retrofit +import com.casic.br.ktd.model.TaskParam import com.casic.br.ktd.utils.AuthenticationHelper import com.casic.br.ktd.utils.LocaleConstant import com.google.gson.JsonObject @@ -90,4 +91,34 @@ AuthenticationHelper.token, requestBody, limitMap, offsetMap ) } + + /** + * 新增任务 + */ + suspend fun addTask(taskParam: TaskParam): String { + val param = JsonObject() + param.addProperty("endDate", taskParam.endDate) + param.addProperty("description", "") + param.addProperty("carId", taskParam.carId) + param.addProperty("valid", taskParam.valid) + param.addProperty("beginDate", taskParam.beginDate) + param.addProperty("taskName", taskParam.taskTitle) + param.addProperty("status", taskParam.state) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.addTask(AuthenticationHelper.token, requestBody) + } + + /** + * 获取巡检车列表 + */ + suspend fun getVehiclesByPage(offset: Int): String { + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getVehiclesByPage(AuthenticationHelper.token, limitMap, offsetMap) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt index 6784987..8028354 100644 --- a/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt @@ -42,6 +42,8 @@ const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val SERVER_BASE_URL = "http://111.198.10.15:11646" + const val CAR_NUMBER = "carNumber" + const val CAR_ID = "carId" //海康摄像头参数 const val HK_NET_IP = "192.168.1.64" diff --git a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt index ecff7c8..bfe09d8 100644 --- a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt @@ -15,6 +15,7 @@ import android.view.SurfaceHolder import android.view.View import android.widget.AdapterView +import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.CameraUpdateFactory @@ -28,10 +29,13 @@ import com.casic.br.ktd.model.ChartPointModel import com.casic.br.ktd.model.RouteModel import com.casic.br.ktd.model.SensorDataModel +import com.casic.br.ktd.model.TaskParam import com.casic.br.ktd.netty.tcp.SocketManager import com.casic.br.ktd.netty.udp.UdpClient +import com.casic.br.ktd.utils.LoadingDialogHub import com.casic.br.ktd.utils.LocaleConstant import com.casic.br.ktd.utils.LocationHelper +import com.casic.br.ktd.vm.TaskViewModel import com.casic.br.ktd.widgets.AlertControlDialog import com.casic.br.ktd.widgets.LineChartMarkerView import com.casic.br.ktd.widgets.SteeringWheelView @@ -48,6 +52,7 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.* +import com.pengxh.kt.lite.vm.LoadState import hcnetsdk.sdkhub.MessageCodeHub import hcnetsdk.sdkhub.SDKGuider import kotlinx.android.synthetic.main.activity_inspection.* @@ -108,7 +113,11 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var aMap: AMap private lateinit var uiSettings: UiSettings + private lateinit var taskViewModel: TaskViewModel + private lateinit var taskParam: TaskParam + private var carId = "" private var taskTitle = "" + private var beginDate = "" /** * 协程配置云台设备,缓解新进页面较卡的问题 @@ -142,8 +151,10 @@ override fun initData(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) weakReferenceHandler = WeakReferenceHandler(this) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] taskTitle = intent.getStringExtra(Constant.INTENT_PARAM).toString() + carId = SaveKeyValues.getValue(LocaleConstant.CAR_ID, "") as String /** * 配置云台设备 @@ -493,7 +504,36 @@ override fun initLayoutView(): Int = R.layout.activity_inspection override fun observeRequestState() { + taskViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "任务提交中,请稍后...") + LoadState.Success -> { + LoadingDialogHub.dismiss() + "任务提交成功".show(this) + finish() + } + else -> { + LoadingDialogHub.dismiss() + //提交失败,弹窗重新提交 + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("任务提交失败,是否重新提交?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + } + + override fun onConfirmClick() { + taskViewModel.addTask(taskParam) + } + }).build().show() + } + } + } } override fun setupTopBarLayout() { @@ -562,6 +602,9 @@ LocaleConstant.OPEN_SENSOR_COMMAND, LocaleConstant.OPEN_SENSOR_COMMAND.size ) + + //记录任务开始时间 + beginDate = System.currentTimeMillis().timestampToCompleteDate() } catch (e: IndexOutOfBoundsException) { e.printStackTrace() "设备未正常连接,无法开启预览".show(this) @@ -668,6 +711,15 @@ isLoginSuccess = false initSuccess = false //结束巡检,保存数据 + val taskParam = TaskParam( + taskTitle, + carId, + beginDate, + "1", + "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + taskViewModel.addTask(taskParam) } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt b/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt index 0540655..a8ce2cb 100644 --- a/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.os.Bundle +import android.util.Log import android.view.KeyEvent import android.view.LayoutInflater import android.view.View @@ -11,24 +12,30 @@ import android.widget.LinearLayout import android.widget.TextView import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.br.ktd.R import com.casic.br.ktd.fragment.AlarmPageFragment import com.casic.br.ktd.fragment.HomePageFragment import com.casic.br.ktd.fragment.MinePageFragment import com.casic.br.ktd.fragment.TaskPageFragment +import com.casic.br.ktd.utils.LocaleConstant +import com.casic.br.ktd.vm.VehicleViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.SaveKeyValues import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + private val kTag = "MainActivity" private val slideUnSelectedItems = ArrayList() private val slideSelectedItems = ArrayList() private val fragmentPages = ArrayList() private val slideAdapter by lazy { SlideAdapter(this) } private var clickTime: Long = 0 + private lateinit var vehicleViewModel: VehicleViewModel init { slideUnSelectedItems.add(SlideItem(R.mipmap.home_unselected, "首页")) @@ -57,6 +64,20 @@ //显示首页 switchPage(fragmentPages[0]) + + vehicleViewModel = ViewModelProvider(this)[VehicleViewModel::class.java] + vehicleViewModel.getVehiclesByPage(1) + vehicleViewModel.vehicleList.observe(this) { + if (it.code == 200) { + if (it.data.rows.isNotEmpty()) { + val model = it.data.rows[0] + SaveKeyValues.putValue(LocaleConstant.CAR_NUMBER, model.carPlate) + SaveKeyValues.putValue(LocaleConstant.CAR_ID, model.id) + } else { + Log.d(kTag, "initData => 无可用巡检车") + } + } + } } override fun initEvent() { diff --git a/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt b/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt index 0c29f0f..51d97f2 100644 --- a/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt +++ b/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt @@ -5,6 +5,7 @@ import com.casic.br.ktd.extensions.separateResponseCode import com.casic.br.ktd.extensions.toErrorMessage import com.casic.br.ktd.model.TaskListModel +import com.casic.br.ktd.model.TaskParam import com.casic.br.ktd.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,6 +14,9 @@ import com.pengxh.kt.lite.vm.BaseViewModel import com.pengxh.kt.lite.vm.LoadState +/** + * Task相关 VM + * */ class TaskViewModel : BaseViewModel() { private val gson by lazy { Gson() } @@ -38,4 +42,18 @@ }, { loadState.value = LoadState.Fail }) + + fun addTask(taskParam: TaskParam) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.addTask(taskParam) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt index c6e8354..bf20e0e 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt @@ -151,6 +151,9 @@ super.onResume() userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + val value = SaveKeyValues.getValue(LocaleConstant.CAR_NUMBER, "") as String + bv.carNumberView.text = value + //计算本地缓存,TODO 后期需要考虑视频本地缓存清除 bv.clearCacheView.text = rootDir.calculateSize().formatFileSize() } diff --git a/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt b/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt new file mode 100644 index 0000000..5587611 --- /dev/null +++ b/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt @@ -0,0 +1,17 @@ +package com.casic.br.ktd.model + +/** + * 任务上传的参数 + * + * status 任务状态(1:启用,0:停用) + * + * valid 数据有效(0:有效,1:删除) + * */ +data class TaskParam( + val taskTitle: String, + val carId: String, + val beginDate: String, + val state: String, + val valid: String, + val endDate: String +) diff --git a/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java b/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java new file mode 100644 index 0000000..4db9a25 --- /dev/null +++ b/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java @@ -0,0 +1,148 @@ +package com.casic.br.ktd.model; + +import java.util.List; + +public class VehicleListModel { + + private int code; + private DataModel data; + private String message; + + 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 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 carName; + private String carPlate; + private String deptId; + private String description; + private String id; + private String latitude; + private String longitude; + private String status; + private String ts; + private String valid; + + public String getCarName() { + return carName; + } + + public void setCarName(String carName) { + this.carName = carName; + } + + public String getCarPlate() { + return carPlate; + } + + public void setCarPlate(String carPlate) { + this.carPlate = carPlate; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getTs() { + return ts; + } + + public void setTs(String ts) { + this.ts = ts; + } + + public String getValid() { + return valid; + } + + public void setValid(String valid) { + this.valid = valid; + } + } + } +} diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt index c6aa6d8..e375c35 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt @@ -50,4 +50,23 @@ @QueryMap limit: Map, @QueryMap offset: Map, ): String + + /** + * 新增任务 + */ + @POST("/system/busPatrolTask/add") + suspend fun addTask( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** + * 获取巡检任务列表 + */ + @POST("/system/busPatrolCar/listPage") + suspend fun getVehiclesByPage( + @Header("token") token: String, + @QueryMap limit: Map, + @QueryMap offset: Map, + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt index 163c7d2..2cc5a36 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt @@ -1,5 +1,6 @@ package com.casic.br.ktd.retrofit +import com.casic.br.ktd.model.TaskParam import com.casic.br.ktd.utils.AuthenticationHelper import com.casic.br.ktd.utils.LocaleConstant import com.google.gson.JsonObject @@ -90,4 +91,34 @@ AuthenticationHelper.token, requestBody, limitMap, offsetMap ) } + + /** + * 新增任务 + */ + suspend fun addTask(taskParam: TaskParam): String { + val param = JsonObject() + param.addProperty("endDate", taskParam.endDate) + param.addProperty("description", "") + param.addProperty("carId", taskParam.carId) + param.addProperty("valid", taskParam.valid) + param.addProperty("beginDate", taskParam.beginDate) + param.addProperty("taskName", taskParam.taskTitle) + param.addProperty("status", taskParam.state) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.addTask(AuthenticationHelper.token, requestBody) + } + + /** + * 获取巡检车列表 + */ + suspend fun getVehiclesByPage(offset: Int): String { + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getVehiclesByPage(AuthenticationHelper.token, limitMap, offsetMap) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt index 6784987..8028354 100644 --- a/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt @@ -42,6 +42,8 @@ const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val SERVER_BASE_URL = "http://111.198.10.15:11646" + const val CAR_NUMBER = "carNumber" + const val CAR_ID = "carId" //海康摄像头参数 const val HK_NET_IP = "192.168.1.64" diff --git a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt index ecff7c8..bfe09d8 100644 --- a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt @@ -15,6 +15,7 @@ import android.view.SurfaceHolder import android.view.View import android.widget.AdapterView +import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.CameraUpdateFactory @@ -28,10 +29,13 @@ import com.casic.br.ktd.model.ChartPointModel import com.casic.br.ktd.model.RouteModel import com.casic.br.ktd.model.SensorDataModel +import com.casic.br.ktd.model.TaskParam import com.casic.br.ktd.netty.tcp.SocketManager import com.casic.br.ktd.netty.udp.UdpClient +import com.casic.br.ktd.utils.LoadingDialogHub import com.casic.br.ktd.utils.LocaleConstant import com.casic.br.ktd.utils.LocationHelper +import com.casic.br.ktd.vm.TaskViewModel import com.casic.br.ktd.widgets.AlertControlDialog import com.casic.br.ktd.widgets.LineChartMarkerView import com.casic.br.ktd.widgets.SteeringWheelView @@ -48,6 +52,7 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.* +import com.pengxh.kt.lite.vm.LoadState import hcnetsdk.sdkhub.MessageCodeHub import hcnetsdk.sdkhub.SDKGuider import kotlinx.android.synthetic.main.activity_inspection.* @@ -108,7 +113,11 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var aMap: AMap private lateinit var uiSettings: UiSettings + private lateinit var taskViewModel: TaskViewModel + private lateinit var taskParam: TaskParam + private var carId = "" private var taskTitle = "" + private var beginDate = "" /** * 协程配置云台设备,缓解新进页面较卡的问题 @@ -142,8 +151,10 @@ override fun initData(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) weakReferenceHandler = WeakReferenceHandler(this) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] taskTitle = intent.getStringExtra(Constant.INTENT_PARAM).toString() + carId = SaveKeyValues.getValue(LocaleConstant.CAR_ID, "") as String /** * 配置云台设备 @@ -493,7 +504,36 @@ override fun initLayoutView(): Int = R.layout.activity_inspection override fun observeRequestState() { + taskViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "任务提交中,请稍后...") + LoadState.Success -> { + LoadingDialogHub.dismiss() + "任务提交成功".show(this) + finish() + } + else -> { + LoadingDialogHub.dismiss() + //提交失败,弹窗重新提交 + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("任务提交失败,是否重新提交?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + } + + override fun onConfirmClick() { + taskViewModel.addTask(taskParam) + } + }).build().show() + } + } + } } override fun setupTopBarLayout() { @@ -562,6 +602,9 @@ LocaleConstant.OPEN_SENSOR_COMMAND, LocaleConstant.OPEN_SENSOR_COMMAND.size ) + + //记录任务开始时间 + beginDate = System.currentTimeMillis().timestampToCompleteDate() } catch (e: IndexOutOfBoundsException) { e.printStackTrace() "设备未正常连接,无法开启预览".show(this) @@ -668,6 +711,15 @@ isLoginSuccess = false initSuccess = false //结束巡检,保存数据 + val taskParam = TaskParam( + taskTitle, + carId, + beginDate, + "1", + "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + taskViewModel.addTask(taskParam) } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt b/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt index 0540655..a8ce2cb 100644 --- a/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.os.Bundle +import android.util.Log import android.view.KeyEvent import android.view.LayoutInflater import android.view.View @@ -11,24 +12,30 @@ import android.widget.LinearLayout import android.widget.TextView import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.br.ktd.R import com.casic.br.ktd.fragment.AlarmPageFragment import com.casic.br.ktd.fragment.HomePageFragment import com.casic.br.ktd.fragment.MinePageFragment import com.casic.br.ktd.fragment.TaskPageFragment +import com.casic.br.ktd.utils.LocaleConstant +import com.casic.br.ktd.vm.VehicleViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.SaveKeyValues import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + private val kTag = "MainActivity" private val slideUnSelectedItems = ArrayList() private val slideSelectedItems = ArrayList() private val fragmentPages = ArrayList() private val slideAdapter by lazy { SlideAdapter(this) } private var clickTime: Long = 0 + private lateinit var vehicleViewModel: VehicleViewModel init { slideUnSelectedItems.add(SlideItem(R.mipmap.home_unselected, "首页")) @@ -57,6 +64,20 @@ //显示首页 switchPage(fragmentPages[0]) + + vehicleViewModel = ViewModelProvider(this)[VehicleViewModel::class.java] + vehicleViewModel.getVehiclesByPage(1) + vehicleViewModel.vehicleList.observe(this) { + if (it.code == 200) { + if (it.data.rows.isNotEmpty()) { + val model = it.data.rows[0] + SaveKeyValues.putValue(LocaleConstant.CAR_NUMBER, model.carPlate) + SaveKeyValues.putValue(LocaleConstant.CAR_ID, model.id) + } else { + Log.d(kTag, "initData => 无可用巡检车") + } + } + } } override fun initEvent() { diff --git a/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt b/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt index 0c29f0f..51d97f2 100644 --- a/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt +++ b/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt @@ -5,6 +5,7 @@ import com.casic.br.ktd.extensions.separateResponseCode import com.casic.br.ktd.extensions.toErrorMessage import com.casic.br.ktd.model.TaskListModel +import com.casic.br.ktd.model.TaskParam import com.casic.br.ktd.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,6 +14,9 @@ import com.pengxh.kt.lite.vm.BaseViewModel import com.pengxh.kt.lite.vm.LoadState +/** + * Task相关 VM + * */ class TaskViewModel : BaseViewModel() { private val gson by lazy { Gson() } @@ -38,4 +42,18 @@ }, { loadState.value = LoadState.Fail }) + + fun addTask(taskParam: TaskParam) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.addTask(taskParam) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/vm/VehicleViewModel.kt b/app/src/main/java/com/casic/br/ktd/vm/VehicleViewModel.kt new file mode 100644 index 0000000..0fabb74 --- /dev/null +++ b/app/src/main/java/com/casic/br/ktd/vm/VehicleViewModel.kt @@ -0,0 +1,36 @@ +package com.casic.br.ktd.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.br.ktd.base.BaseApplication +import com.casic.br.ktd.extensions.separateResponseCode +import com.casic.br.ktd.extensions.toErrorMessage +import com.casic.br.ktd.model.VehicleListModel +import com.casic.br.ktd.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel + +/** + * Vehicle(巡检车)相关 VM + * */ +class VehicleViewModel : BaseViewModel() { + private val gson by lazy { Gson() } + + val vehicleList = MutableLiveData() + + fun getVehiclesByPage(offset: Int) = launch({ + val response = RetrofitServiceManager.getVehiclesByPage(offset) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + vehicleList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + it.printStackTrace() + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt index c6e8354..bf20e0e 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt @@ -151,6 +151,9 @@ super.onResume() userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + val value = SaveKeyValues.getValue(LocaleConstant.CAR_NUMBER, "") as String + bv.carNumberView.text = value + //计算本地缓存,TODO 后期需要考虑视频本地缓存清除 bv.clearCacheView.text = rootDir.calculateSize().formatFileSize() } diff --git a/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt b/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt new file mode 100644 index 0000000..5587611 --- /dev/null +++ b/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt @@ -0,0 +1,17 @@ +package com.casic.br.ktd.model + +/** + * 任务上传的参数 + * + * status 任务状态(1:启用,0:停用) + * + * valid 数据有效(0:有效,1:删除) + * */ +data class TaskParam( + val taskTitle: String, + val carId: String, + val beginDate: String, + val state: String, + val valid: String, + val endDate: String +) diff --git a/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java b/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java new file mode 100644 index 0000000..4db9a25 --- /dev/null +++ b/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java @@ -0,0 +1,148 @@ +package com.casic.br.ktd.model; + +import java.util.List; + +public class VehicleListModel { + + private int code; + private DataModel data; + private String message; + + 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 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 carName; + private String carPlate; + private String deptId; + private String description; + private String id; + private String latitude; + private String longitude; + private String status; + private String ts; + private String valid; + + public String getCarName() { + return carName; + } + + public void setCarName(String carName) { + this.carName = carName; + } + + public String getCarPlate() { + return carPlate; + } + + public void setCarPlate(String carPlate) { + this.carPlate = carPlate; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getTs() { + return ts; + } + + public void setTs(String ts) { + this.ts = ts; + } + + public String getValid() { + return valid; + } + + public void setValid(String valid) { + this.valid = valid; + } + } + } +} diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt index c6aa6d8..e375c35 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt @@ -50,4 +50,23 @@ @QueryMap limit: Map, @QueryMap offset: Map, ): String + + /** + * 新增任务 + */ + @POST("/system/busPatrolTask/add") + suspend fun addTask( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** + * 获取巡检任务列表 + */ + @POST("/system/busPatrolCar/listPage") + suspend fun getVehiclesByPage( + @Header("token") token: String, + @QueryMap limit: Map, + @QueryMap offset: Map, + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt index 163c7d2..2cc5a36 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt @@ -1,5 +1,6 @@ package com.casic.br.ktd.retrofit +import com.casic.br.ktd.model.TaskParam import com.casic.br.ktd.utils.AuthenticationHelper import com.casic.br.ktd.utils.LocaleConstant import com.google.gson.JsonObject @@ -90,4 +91,34 @@ AuthenticationHelper.token, requestBody, limitMap, offsetMap ) } + + /** + * 新增任务 + */ + suspend fun addTask(taskParam: TaskParam): String { + val param = JsonObject() + param.addProperty("endDate", taskParam.endDate) + param.addProperty("description", "") + param.addProperty("carId", taskParam.carId) + param.addProperty("valid", taskParam.valid) + param.addProperty("beginDate", taskParam.beginDate) + param.addProperty("taskName", taskParam.taskTitle) + param.addProperty("status", taskParam.state) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.addTask(AuthenticationHelper.token, requestBody) + } + + /** + * 获取巡检车列表 + */ + suspend fun getVehiclesByPage(offset: Int): String { + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getVehiclesByPage(AuthenticationHelper.token, limitMap, offsetMap) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt index 6784987..8028354 100644 --- a/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt @@ -42,6 +42,8 @@ const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val SERVER_BASE_URL = "http://111.198.10.15:11646" + const val CAR_NUMBER = "carNumber" + const val CAR_ID = "carId" //海康摄像头参数 const val HK_NET_IP = "192.168.1.64" diff --git a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt index ecff7c8..bfe09d8 100644 --- a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt @@ -15,6 +15,7 @@ import android.view.SurfaceHolder import android.view.View import android.widget.AdapterView +import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.CameraUpdateFactory @@ -28,10 +29,13 @@ import com.casic.br.ktd.model.ChartPointModel import com.casic.br.ktd.model.RouteModel import com.casic.br.ktd.model.SensorDataModel +import com.casic.br.ktd.model.TaskParam import com.casic.br.ktd.netty.tcp.SocketManager import com.casic.br.ktd.netty.udp.UdpClient +import com.casic.br.ktd.utils.LoadingDialogHub import com.casic.br.ktd.utils.LocaleConstant import com.casic.br.ktd.utils.LocationHelper +import com.casic.br.ktd.vm.TaskViewModel import com.casic.br.ktd.widgets.AlertControlDialog import com.casic.br.ktd.widgets.LineChartMarkerView import com.casic.br.ktd.widgets.SteeringWheelView @@ -48,6 +52,7 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.* +import com.pengxh.kt.lite.vm.LoadState import hcnetsdk.sdkhub.MessageCodeHub import hcnetsdk.sdkhub.SDKGuider import kotlinx.android.synthetic.main.activity_inspection.* @@ -108,7 +113,11 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var aMap: AMap private lateinit var uiSettings: UiSettings + private lateinit var taskViewModel: TaskViewModel + private lateinit var taskParam: TaskParam + private var carId = "" private var taskTitle = "" + private var beginDate = "" /** * 协程配置云台设备,缓解新进页面较卡的问题 @@ -142,8 +151,10 @@ override fun initData(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) weakReferenceHandler = WeakReferenceHandler(this) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] taskTitle = intent.getStringExtra(Constant.INTENT_PARAM).toString() + carId = SaveKeyValues.getValue(LocaleConstant.CAR_ID, "") as String /** * 配置云台设备 @@ -493,7 +504,36 @@ override fun initLayoutView(): Int = R.layout.activity_inspection override fun observeRequestState() { + taskViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "任务提交中,请稍后...") + LoadState.Success -> { + LoadingDialogHub.dismiss() + "任务提交成功".show(this) + finish() + } + else -> { + LoadingDialogHub.dismiss() + //提交失败,弹窗重新提交 + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("任务提交失败,是否重新提交?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + } + + override fun onConfirmClick() { + taskViewModel.addTask(taskParam) + } + }).build().show() + } + } + } } override fun setupTopBarLayout() { @@ -562,6 +602,9 @@ LocaleConstant.OPEN_SENSOR_COMMAND, LocaleConstant.OPEN_SENSOR_COMMAND.size ) + + //记录任务开始时间 + beginDate = System.currentTimeMillis().timestampToCompleteDate() } catch (e: IndexOutOfBoundsException) { e.printStackTrace() "设备未正常连接,无法开启预览".show(this) @@ -668,6 +711,15 @@ isLoginSuccess = false initSuccess = false //结束巡检,保存数据 + val taskParam = TaskParam( + taskTitle, + carId, + beginDate, + "1", + "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + taskViewModel.addTask(taskParam) } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt b/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt index 0540655..a8ce2cb 100644 --- a/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.os.Bundle +import android.util.Log import android.view.KeyEvent import android.view.LayoutInflater import android.view.View @@ -11,24 +12,30 @@ import android.widget.LinearLayout import android.widget.TextView import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.br.ktd.R import com.casic.br.ktd.fragment.AlarmPageFragment import com.casic.br.ktd.fragment.HomePageFragment import com.casic.br.ktd.fragment.MinePageFragment import com.casic.br.ktd.fragment.TaskPageFragment +import com.casic.br.ktd.utils.LocaleConstant +import com.casic.br.ktd.vm.VehicleViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.SaveKeyValues import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + private val kTag = "MainActivity" private val slideUnSelectedItems = ArrayList() private val slideSelectedItems = ArrayList() private val fragmentPages = ArrayList() private val slideAdapter by lazy { SlideAdapter(this) } private var clickTime: Long = 0 + private lateinit var vehicleViewModel: VehicleViewModel init { slideUnSelectedItems.add(SlideItem(R.mipmap.home_unselected, "首页")) @@ -57,6 +64,20 @@ //显示首页 switchPage(fragmentPages[0]) + + vehicleViewModel = ViewModelProvider(this)[VehicleViewModel::class.java] + vehicleViewModel.getVehiclesByPage(1) + vehicleViewModel.vehicleList.observe(this) { + if (it.code == 200) { + if (it.data.rows.isNotEmpty()) { + val model = it.data.rows[0] + SaveKeyValues.putValue(LocaleConstant.CAR_NUMBER, model.carPlate) + SaveKeyValues.putValue(LocaleConstant.CAR_ID, model.id) + } else { + Log.d(kTag, "initData => 无可用巡检车") + } + } + } } override fun initEvent() { diff --git a/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt b/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt index 0c29f0f..51d97f2 100644 --- a/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt +++ b/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt @@ -5,6 +5,7 @@ import com.casic.br.ktd.extensions.separateResponseCode import com.casic.br.ktd.extensions.toErrorMessage import com.casic.br.ktd.model.TaskListModel +import com.casic.br.ktd.model.TaskParam import com.casic.br.ktd.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,6 +14,9 @@ import com.pengxh.kt.lite.vm.BaseViewModel import com.pengxh.kt.lite.vm.LoadState +/** + * Task相关 VM + * */ class TaskViewModel : BaseViewModel() { private val gson by lazy { Gson() } @@ -38,4 +42,18 @@ }, { loadState.value = LoadState.Fail }) + + fun addTask(taskParam: TaskParam) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.addTask(taskParam) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/vm/VehicleViewModel.kt b/app/src/main/java/com/casic/br/ktd/vm/VehicleViewModel.kt new file mode 100644 index 0000000..0fabb74 --- /dev/null +++ b/app/src/main/java/com/casic/br/ktd/vm/VehicleViewModel.kt @@ -0,0 +1,36 @@ +package com.casic.br.ktd.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.br.ktd.base.BaseApplication +import com.casic.br.ktd.extensions.separateResponseCode +import com.casic.br.ktd.extensions.toErrorMessage +import com.casic.br.ktd.model.VehicleListModel +import com.casic.br.ktd.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel + +/** + * Vehicle(巡检车)相关 VM + * */ +class VehicleViewModel : BaseViewModel() { + private val gson by lazy { Gson() } + + val vehicleList = MutableLiveData() + + fun getVehiclesByPage(offset: Int) = launch({ + val response = RetrofitServiceManager.getVehiclesByPage(offset) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + vehicleList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + it.printStackTrace() + }) +} \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_mine.xml b/app/src/main/res/layout/fragment_mine.xml index 6b1ac15..ac2a394 100644 --- a/app/src/main/res/layout/fragment_mine.xml +++ b/app/src/main/res/layout/fragment_mine.xml @@ -154,13 +154,13 @@ android:textSize="@dimen/sp_16" /> diff --git a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt index c6e8354..bf20e0e 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/MinePageFragment.kt @@ -151,6 +151,9 @@ super.onResume() userViewModel.getUserInfo(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) + val value = SaveKeyValues.getValue(LocaleConstant.CAR_NUMBER, "") as String + bv.carNumberView.text = value + //计算本地缓存,TODO 后期需要考虑视频本地缓存清除 bv.clearCacheView.text = rootDir.calculateSize().formatFileSize() } diff --git a/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt b/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt new file mode 100644 index 0000000..5587611 --- /dev/null +++ b/app/src/main/java/com/casic/br/ktd/model/TaskParam.kt @@ -0,0 +1,17 @@ +package com.casic.br.ktd.model + +/** + * 任务上传的参数 + * + * status 任务状态(1:启用,0:停用) + * + * valid 数据有效(0:有效,1:删除) + * */ +data class TaskParam( + val taskTitle: String, + val carId: String, + val beginDate: String, + val state: String, + val valid: String, + val endDate: String +) diff --git a/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java b/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java new file mode 100644 index 0000000..4db9a25 --- /dev/null +++ b/app/src/main/java/com/casic/br/ktd/model/VehicleListModel.java @@ -0,0 +1,148 @@ +package com.casic.br.ktd.model; + +import java.util.List; + +public class VehicleListModel { + + private int code; + private DataModel data; + private String message; + + 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 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 carName; + private String carPlate; + private String deptId; + private String description; + private String id; + private String latitude; + private String longitude; + private String status; + private String ts; + private String valid; + + public String getCarName() { + return carName; + } + + public void setCarName(String carName) { + this.carName = carName; + } + + public String getCarPlate() { + return carPlate; + } + + public void setCarPlate(String carPlate) { + this.carPlate = carPlate; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getTs() { + return ts; + } + + public void setTs(String ts) { + this.ts = ts; + } + + public String getValid() { + return valid; + } + + public void setValid(String valid) { + this.valid = valid; + } + } + } +} diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt index c6aa6d8..e375c35 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt @@ -50,4 +50,23 @@ @QueryMap limit: Map, @QueryMap offset: Map, ): String + + /** + * 新增任务 + */ + @POST("/system/busPatrolTask/add") + suspend fun addTask( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String + + /** + * 获取巡检任务列表 + */ + @POST("/system/busPatrolCar/listPage") + suspend fun getVehiclesByPage( + @Header("token") token: String, + @QueryMap limit: Map, + @QueryMap offset: Map, + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt index 163c7d2..2cc5a36 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt @@ -1,5 +1,6 @@ package com.casic.br.ktd.retrofit +import com.casic.br.ktd.model.TaskParam import com.casic.br.ktd.utils.AuthenticationHelper import com.casic.br.ktd.utils.LocaleConstant import com.google.gson.JsonObject @@ -90,4 +91,34 @@ AuthenticationHelper.token, requestBody, limitMap, offsetMap ) } + + /** + * 新增任务 + */ + suspend fun addTask(taskParam: TaskParam): String { + val param = JsonObject() + param.addProperty("endDate", taskParam.endDate) + param.addProperty("description", "") + param.addProperty("carId", taskParam.carId) + param.addProperty("valid", taskParam.valid) + param.addProperty("beginDate", taskParam.beginDate) + param.addProperty("taskName", taskParam.taskTitle) + param.addProperty("status", taskParam.state) + val requestBody = param.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.addTask(AuthenticationHelper.token, requestBody) + } + + /** + * 获取巡检车列表 + */ + suspend fun getVehiclesByPage(offset: Int): String { + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getVehiclesByPage(AuthenticationHelper.token, limitMap, offsetMap) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt index 6784987..8028354 100644 --- a/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/ktd/utils/LocaleConstant.kt @@ -42,6 +42,8 @@ const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val SERVER_BASE_URL = "http://111.198.10.15:11646" + const val CAR_NUMBER = "carNumber" + const val CAR_ID = "carId" //海康摄像头参数 const val HK_NET_IP = "192.168.1.64" diff --git a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt index ecff7c8..bfe09d8 100644 --- a/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/InspectionActivity.kt @@ -15,6 +15,7 @@ import android.view.SurfaceHolder import android.view.View import android.widget.AdapterView +import androidx.lifecycle.ViewModelProvider import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.CameraUpdateFactory @@ -28,10 +29,13 @@ import com.casic.br.ktd.model.ChartPointModel import com.casic.br.ktd.model.RouteModel import com.casic.br.ktd.model.SensorDataModel +import com.casic.br.ktd.model.TaskParam import com.casic.br.ktd.netty.tcp.SocketManager import com.casic.br.ktd.netty.udp.UdpClient +import com.casic.br.ktd.utils.LoadingDialogHub import com.casic.br.ktd.utils.LocaleConstant import com.casic.br.ktd.utils.LocationHelper +import com.casic.br.ktd.vm.TaskViewModel import com.casic.br.ktd.widgets.AlertControlDialog import com.casic.br.ktd.widgets.LineChartMarkerView import com.casic.br.ktd.widgets.SteeringWheelView @@ -48,6 +52,7 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToCompleteDate import com.pengxh.kt.lite.utils.* +import com.pengxh.kt.lite.vm.LoadState import hcnetsdk.sdkhub.MessageCodeHub import hcnetsdk.sdkhub.SDKGuider import kotlinx.android.synthetic.main.activity_inspection.* @@ -108,7 +113,11 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var aMap: AMap private lateinit var uiSettings: UiSettings + private lateinit var taskViewModel: TaskViewModel + private lateinit var taskParam: TaskParam + private var carId = "" private var taskTitle = "" + private var beginDate = "" /** * 协程配置云台设备,缓解新进页面较卡的问题 @@ -142,8 +151,10 @@ override fun initData(savedInstanceState: Bundle?) { PageNavigationManager.addActivity(this) weakReferenceHandler = WeakReferenceHandler(this) + taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] taskTitle = intent.getStringExtra(Constant.INTENT_PARAM).toString() + carId = SaveKeyValues.getValue(LocaleConstant.CAR_ID, "") as String /** * 配置云台设备 @@ -493,7 +504,36 @@ override fun initLayoutView(): Int = R.layout.activity_inspection override fun observeRequestState() { + taskViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "任务提交中,请稍后...") + LoadState.Success -> { + LoadingDialogHub.dismiss() + "任务提交成功".show(this) + finish() + } + else -> { + LoadingDialogHub.dismiss() + //提交失败,弹窗重新提交 + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("任务提交失败,是否重新提交?") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onCancelClick() { + } + + override fun onConfirmClick() { + taskViewModel.addTask(taskParam) + } + }).build().show() + } + } + } } override fun setupTopBarLayout() { @@ -562,6 +602,9 @@ LocaleConstant.OPEN_SENSOR_COMMAND, LocaleConstant.OPEN_SENSOR_COMMAND.size ) + + //记录任务开始时间 + beginDate = System.currentTimeMillis().timestampToCompleteDate() } catch (e: IndexOutOfBoundsException) { e.printStackTrace() "设备未正常连接,无法开启预览".show(this) @@ -668,6 +711,15 @@ isLoginSuccess = false initSuccess = false //结束巡检,保存数据 + val taskParam = TaskParam( + taskTitle, + carId, + beginDate, + "1", + "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + taskViewModel.addTask(taskParam) } override fun onDestroy() { diff --git a/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt b/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt index 0540655..a8ce2cb 100644 --- a/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/MainActivity.kt @@ -2,6 +2,7 @@ import android.content.Context import android.os.Bundle +import android.util.Log import android.view.KeyEvent import android.view.LayoutInflater import android.view.View @@ -11,24 +12,30 @@ import android.widget.LinearLayout import android.widget.TextView import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import com.casic.br.ktd.R import com.casic.br.ktd.fragment.AlarmPageFragment import com.casic.br.ktd.fragment.HomePageFragment import com.casic.br.ktd.fragment.MinePageFragment import com.casic.br.ktd.fragment.TaskPageFragment +import com.casic.br.ktd.utils.LocaleConstant +import com.casic.br.ktd.vm.VehicleViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.PageNavigationManager +import com.pengxh.kt.lite.utils.SaveKeyValues import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + private val kTag = "MainActivity" private val slideUnSelectedItems = ArrayList() private val slideSelectedItems = ArrayList() private val fragmentPages = ArrayList() private val slideAdapter by lazy { SlideAdapter(this) } private var clickTime: Long = 0 + private lateinit var vehicleViewModel: VehicleViewModel init { slideUnSelectedItems.add(SlideItem(R.mipmap.home_unselected, "首页")) @@ -57,6 +64,20 @@ //显示首页 switchPage(fragmentPages[0]) + + vehicleViewModel = ViewModelProvider(this)[VehicleViewModel::class.java] + vehicleViewModel.getVehiclesByPage(1) + vehicleViewModel.vehicleList.observe(this) { + if (it.code == 200) { + if (it.data.rows.isNotEmpty()) { + val model = it.data.rows[0] + SaveKeyValues.putValue(LocaleConstant.CAR_NUMBER, model.carPlate) + SaveKeyValues.putValue(LocaleConstant.CAR_ID, model.id) + } else { + Log.d(kTag, "initData => 无可用巡检车") + } + } + } } override fun initEvent() { diff --git a/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt b/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt index 0c29f0f..51d97f2 100644 --- a/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt +++ b/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt @@ -5,6 +5,7 @@ import com.casic.br.ktd.extensions.separateResponseCode import com.casic.br.ktd.extensions.toErrorMessage import com.casic.br.ktd.model.TaskListModel +import com.casic.br.ktd.model.TaskParam import com.casic.br.ktd.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -13,6 +14,9 @@ import com.pengxh.kt.lite.vm.BaseViewModel import com.pengxh.kt.lite.vm.LoadState +/** + * Task相关 VM + * */ class TaskViewModel : BaseViewModel() { private val gson by lazy { Gson() } @@ -38,4 +42,18 @@ }, { loadState.value = LoadState.Fail }) + + fun addTask(taskParam: TaskParam) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.addTask(taskParam) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/vm/VehicleViewModel.kt b/app/src/main/java/com/casic/br/ktd/vm/VehicleViewModel.kt new file mode 100644 index 0000000..0fabb74 --- /dev/null +++ b/app/src/main/java/com/casic/br/ktd/vm/VehicleViewModel.kt @@ -0,0 +1,36 @@ +package com.casic.br.ktd.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.br.ktd.base.BaseApplication +import com.casic.br.ktd.extensions.separateResponseCode +import com.casic.br.ktd.extensions.toErrorMessage +import com.casic.br.ktd.model.VehicleListModel +import com.casic.br.ktd.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel + +/** + * Vehicle(巡检车)相关 VM + * */ +class VehicleViewModel : BaseViewModel() { + private val gson by lazy { Gson() } + + val vehicleList = MutableLiveData() + + fun getVehiclesByPage(offset: Int) = launch({ + val response = RetrofitServiceManager.getVehiclesByPage(offset) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + vehicleList.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + it.printStackTrace() + }) +} \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_mine.xml b/app/src/main/res/layout/fragment_mine.xml index 6b1ac15..ac2a394 100644 --- a/app/src/main/res/layout/fragment_mine.xml +++ b/app/src/main/res/layout/fragment_mine.xml @@ -154,13 +154,13 @@ android:textSize="@dimen/sp_16" /> diff --git a/app/src/main/res/layout/item_task_rv_l.xml b/app/src/main/res/layout/item_task_rv_l.xml index 64626a2..e06ba5a 100644 --- a/app/src/main/res/layout/item_task_rv_l.xml +++ b/app/src/main/res/layout/item_task_rv_l.xml @@ -18,8 +18,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="2" - android:text="202304120001" - android:textSize="@dimen/sp_18" /> + android:text="202304120001" /> + android:text="永定路日常巡检任务" /> + android:text="2023-07-05 09:40:10" /> + android:text="2023-07-05 11:40:10" /> + android:gravity="center_horizontal" + android:text="10" /> + app:qmui_radius="@dimen/dp_5" /> \ No newline at end of file