diff --git a/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java deleted file mode 100644 index 791f9eb..0000000 --- a/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.casic.br.operationsite.model; - -public class DetailModel { -} diff --git a/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java deleted file mode 100644 index 791f9eb..0000000 --- a/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.casic.br.operationsite.model; - -public class DetailModel { -} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java index 0255754..034a92f 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java @@ -1,158 +1,217 @@ package com.casic.br.operationsite.model; +import java.util.List; + public class WorkerModel { - private String createTime; - private String deptId; - private String deptName; - private String enterReason; - private String gender; - private String genderName; - private String id; - private String idCardNumber; - private String isRegister; - private String ownerShip; - private String phoneNumber; - private String registerTime; - private String status; - private String statusName; - private String workerAvatar; - private String workerName; - private String workerType; + private int code; + private List data; + private String message; + private boolean success; - public String getCreateTime() { - return createTime; + public int getCode() { + return code; } - public void setCreateTime(String createTime) { - this.createTime = createTime; + public void setCode(int code) { + this.code = code; } - public String getDeptId() { - return deptId; + public List getData() { + return data; } - public void setDeptId(String deptId) { - this.deptId = deptId; + public void setData(List data) { + this.data = data; } - public String getDeptName() { - return deptName; + public String getMessage() { + return message; } - public void setDeptName(String deptName) { - this.deptName = deptName; + public void setMessage(String message) { + this.message = message; } - public String getEnterReason() { - return enterReason; + public boolean getSuccess() { + return success; } - public void setEnterReason(String enterReason) { - this.enterReason = enterReason; + public void setSuccess(boolean success) { + this.success = success; } - public String getGender() { - return gender; - } + public static class DataModel { + private boolean alarmFlag; + private String bloodOxygen; + private String braceletCode; + private String cell; + private String co; + private String gas; + private String h2s; + private String hatCode; + private String hatId; + private String heartRate; + private String lat; + private String lng; + private String location; + private String o2; + private String signal; + private String time; + private String vastCode; + private String workerId; + private String workerName; - public void setGender(String gender) { - this.gender = gender; - } + public boolean getAlarmFlag() { + return alarmFlag; + } - public String getGenderName() { - return genderName; - } + public void setAlarmFlag(boolean alarmFlag) { + this.alarmFlag = alarmFlag; + } - public void setGenderName(String genderName) { - this.genderName = genderName; - } + public String getBloodOxygen() { + return bloodOxygen; + } - public String getId() { - return id; - } + public void setBloodOxygen(String bloodOxygen) { + this.bloodOxygen = bloodOxygen; + } - public void setId(String id) { - this.id = id; - } + public String getBraceletCode() { + return braceletCode; + } - public String getIdCardNumber() { - return idCardNumber; - } + public void setBraceletCode(String braceletCode) { + this.braceletCode = braceletCode; + } - public void setIdCardNumber(String idCardNumber) { - this.idCardNumber = idCardNumber; - } + public String getCell() { + return cell; + } - public String getIsRegister() { - return isRegister; - } + public void setCell(String cell) { + this.cell = cell; + } - public void setIsRegister(String isRegister) { - this.isRegister = isRegister; - } + public String getCo() { + return co; + } - public String getOwnerShip() { - return ownerShip; - } + public void setCo(String co) { + this.co = co; + } - public void setOwnerShip(String ownerShip) { - this.ownerShip = ownerShip; - } + public String getGas() { + return gas; + } - public String getPhoneNumber() { - return phoneNumber; - } + public void setGas(String gas) { + this.gas = gas; + } - public void setPhoneNumber(String phoneNumber) { - this.phoneNumber = phoneNumber; - } + public String getH2s() { + return h2s; + } - public String getRegisterTime() { - return registerTime; - } + public void setH2s(String h2s) { + this.h2s = h2s; + } - public void setRegisterTime(String registerTime) { - this.registerTime = registerTime; - } + public String getHatCode() { + return hatCode; + } - public String getStatus() { - return status; - } + public void setHatCode(String hatCode) { + this.hatCode = hatCode; + } - public void setStatus(String status) { - this.status = status; - } + public String getHatId() { + return hatId; + } - public String getStatusName() { - return statusName; - } + public void setHatId(String hatId) { + this.hatId = hatId; + } - public void setStatusName(String statusName) { - this.statusName = statusName; - } + public String getHeartRate() { + return heartRate; + } - public String getWorkerAvatar() { - return workerAvatar; - } + public void setHeartRate(String heartRate) { + this.heartRate = heartRate; + } - public void setWorkerAvatar(String workerAvatar) { - this.workerAvatar = workerAvatar; - } + public String getLat() { + return lat; + } - public String getWorkerName() { - return workerName; - } + public void setLat(String lat) { + this.lat = lat; + } - public void setWorkerName(String workerName) { - this.workerName = workerName; - } + public String getLng() { + return lng; + } - public String getWorkerType() { - return workerType; - } + public void setLng(String lng) { + this.lng = lng; + } - public void setWorkerType(String workerType) { - this.workerType = workerType; + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getO2() { + return o2; + } + + public void setO2(String o2) { + this.o2 = o2; + } + + public String getSignal() { + return signal; + } + + public void setSignal(String signal) { + this.signal = signal; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + + public String getVastCode() { + return vastCode; + } + + public void setVastCode(String vastCode) { + this.vastCode = vastCode; + } + + public String getWorkerId() { + return workerId; + } + + public void setWorkerId(String workerId) { + this.workerId = workerId; + } + + public String getWorkerName() { + return workerName; + } + + public void setWorkerName(String workerName) { + this.workerName = workerName; + } } } diff --git a/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java deleted file mode 100644 index 791f9eb..0000000 --- a/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.casic.br.operationsite.model; - -public class DetailModel { -} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java index 0255754..034a92f 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java @@ -1,158 +1,217 @@ package com.casic.br.operationsite.model; +import java.util.List; + public class WorkerModel { - private String createTime; - private String deptId; - private String deptName; - private String enterReason; - private String gender; - private String genderName; - private String id; - private String idCardNumber; - private String isRegister; - private String ownerShip; - private String phoneNumber; - private String registerTime; - private String status; - private String statusName; - private String workerAvatar; - private String workerName; - private String workerType; + private int code; + private List data; + private String message; + private boolean success; - public String getCreateTime() { - return createTime; + public int getCode() { + return code; } - public void setCreateTime(String createTime) { - this.createTime = createTime; + public void setCode(int code) { + this.code = code; } - public String getDeptId() { - return deptId; + public List getData() { + return data; } - public void setDeptId(String deptId) { - this.deptId = deptId; + public void setData(List data) { + this.data = data; } - public String getDeptName() { - return deptName; + public String getMessage() { + return message; } - public void setDeptName(String deptName) { - this.deptName = deptName; + public void setMessage(String message) { + this.message = message; } - public String getEnterReason() { - return enterReason; + public boolean getSuccess() { + return success; } - public void setEnterReason(String enterReason) { - this.enterReason = enterReason; + public void setSuccess(boolean success) { + this.success = success; } - public String getGender() { - return gender; - } + public static class DataModel { + private boolean alarmFlag; + private String bloodOxygen; + private String braceletCode; + private String cell; + private String co; + private String gas; + private String h2s; + private String hatCode; + private String hatId; + private String heartRate; + private String lat; + private String lng; + private String location; + private String o2; + private String signal; + private String time; + private String vastCode; + private String workerId; + private String workerName; - public void setGender(String gender) { - this.gender = gender; - } + public boolean getAlarmFlag() { + return alarmFlag; + } - public String getGenderName() { - return genderName; - } + public void setAlarmFlag(boolean alarmFlag) { + this.alarmFlag = alarmFlag; + } - public void setGenderName(String genderName) { - this.genderName = genderName; - } + public String getBloodOxygen() { + return bloodOxygen; + } - public String getId() { - return id; - } + public void setBloodOxygen(String bloodOxygen) { + this.bloodOxygen = bloodOxygen; + } - public void setId(String id) { - this.id = id; - } + public String getBraceletCode() { + return braceletCode; + } - public String getIdCardNumber() { - return idCardNumber; - } + public void setBraceletCode(String braceletCode) { + this.braceletCode = braceletCode; + } - public void setIdCardNumber(String idCardNumber) { - this.idCardNumber = idCardNumber; - } + public String getCell() { + return cell; + } - public String getIsRegister() { - return isRegister; - } + public void setCell(String cell) { + this.cell = cell; + } - public void setIsRegister(String isRegister) { - this.isRegister = isRegister; - } + public String getCo() { + return co; + } - public String getOwnerShip() { - return ownerShip; - } + public void setCo(String co) { + this.co = co; + } - public void setOwnerShip(String ownerShip) { - this.ownerShip = ownerShip; - } + public String getGas() { + return gas; + } - public String getPhoneNumber() { - return phoneNumber; - } + public void setGas(String gas) { + this.gas = gas; + } - public void setPhoneNumber(String phoneNumber) { - this.phoneNumber = phoneNumber; - } + public String getH2s() { + return h2s; + } - public String getRegisterTime() { - return registerTime; - } + public void setH2s(String h2s) { + this.h2s = h2s; + } - public void setRegisterTime(String registerTime) { - this.registerTime = registerTime; - } + public String getHatCode() { + return hatCode; + } - public String getStatus() { - return status; - } + public void setHatCode(String hatCode) { + this.hatCode = hatCode; + } - public void setStatus(String status) { - this.status = status; - } + public String getHatId() { + return hatId; + } - public String getStatusName() { - return statusName; - } + public void setHatId(String hatId) { + this.hatId = hatId; + } - public void setStatusName(String statusName) { - this.statusName = statusName; - } + public String getHeartRate() { + return heartRate; + } - public String getWorkerAvatar() { - return workerAvatar; - } + public void setHeartRate(String heartRate) { + this.heartRate = heartRate; + } - public void setWorkerAvatar(String workerAvatar) { - this.workerAvatar = workerAvatar; - } + public String getLat() { + return lat; + } - public String getWorkerName() { - return workerName; - } + public void setLat(String lat) { + this.lat = lat; + } - public void setWorkerName(String workerName) { - this.workerName = workerName; - } + public String getLng() { + return lng; + } - public String getWorkerType() { - return workerType; - } + public void setLng(String lng) { + this.lng = lng; + } - public void setWorkerType(String workerType) { - this.workerType = workerType; + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getO2() { + return o2; + } + + public void setO2(String o2) { + this.o2 = o2; + } + + public String getSignal() { + return signal; + } + + public void setSignal(String signal) { + this.signal = signal; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + + public String getVastCode() { + return vastCode; + } + + public void setVastCode(String vastCode) { + this.vastCode = vastCode; + } + + public String getWorkerId() { + return workerId; + } + + public void setWorkerId(String workerId) { + this.workerId = workerId; + } + + public String getWorkerName() { + return workerName; + } + + public void setWorkerName(String workerName) { + this.workerName = workerName; + } } } diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index a067771..e11181c 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -63,6 +63,15 @@ ): String /** + * 获取工作区域作业人员 + */ + @GET("/overview/workerList") + suspend fun getWorkers( + @Header("token") token: String, + @Query("projectId") projectId: String + ): String + + /** * 设备分页列表 */ @GET("/device/listPage") diff --git a/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java deleted file mode 100644 index 791f9eb..0000000 --- a/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.casic.br.operationsite.model; - -public class DetailModel { -} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java index 0255754..034a92f 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java @@ -1,158 +1,217 @@ package com.casic.br.operationsite.model; +import java.util.List; + public class WorkerModel { - private String createTime; - private String deptId; - private String deptName; - private String enterReason; - private String gender; - private String genderName; - private String id; - private String idCardNumber; - private String isRegister; - private String ownerShip; - private String phoneNumber; - private String registerTime; - private String status; - private String statusName; - private String workerAvatar; - private String workerName; - private String workerType; + private int code; + private List data; + private String message; + private boolean success; - public String getCreateTime() { - return createTime; + public int getCode() { + return code; } - public void setCreateTime(String createTime) { - this.createTime = createTime; + public void setCode(int code) { + this.code = code; } - public String getDeptId() { - return deptId; + public List getData() { + return data; } - public void setDeptId(String deptId) { - this.deptId = deptId; + public void setData(List data) { + this.data = data; } - public String getDeptName() { - return deptName; + public String getMessage() { + return message; } - public void setDeptName(String deptName) { - this.deptName = deptName; + public void setMessage(String message) { + this.message = message; } - public String getEnterReason() { - return enterReason; + public boolean getSuccess() { + return success; } - public void setEnterReason(String enterReason) { - this.enterReason = enterReason; + public void setSuccess(boolean success) { + this.success = success; } - public String getGender() { - return gender; - } + public static class DataModel { + private boolean alarmFlag; + private String bloodOxygen; + private String braceletCode; + private String cell; + private String co; + private String gas; + private String h2s; + private String hatCode; + private String hatId; + private String heartRate; + private String lat; + private String lng; + private String location; + private String o2; + private String signal; + private String time; + private String vastCode; + private String workerId; + private String workerName; - public void setGender(String gender) { - this.gender = gender; - } + public boolean getAlarmFlag() { + return alarmFlag; + } - public String getGenderName() { - return genderName; - } + public void setAlarmFlag(boolean alarmFlag) { + this.alarmFlag = alarmFlag; + } - public void setGenderName(String genderName) { - this.genderName = genderName; - } + public String getBloodOxygen() { + return bloodOxygen; + } - public String getId() { - return id; - } + public void setBloodOxygen(String bloodOxygen) { + this.bloodOxygen = bloodOxygen; + } - public void setId(String id) { - this.id = id; - } + public String getBraceletCode() { + return braceletCode; + } - public String getIdCardNumber() { - return idCardNumber; - } + public void setBraceletCode(String braceletCode) { + this.braceletCode = braceletCode; + } - public void setIdCardNumber(String idCardNumber) { - this.idCardNumber = idCardNumber; - } + public String getCell() { + return cell; + } - public String getIsRegister() { - return isRegister; - } + public void setCell(String cell) { + this.cell = cell; + } - public void setIsRegister(String isRegister) { - this.isRegister = isRegister; - } + public String getCo() { + return co; + } - public String getOwnerShip() { - return ownerShip; - } + public void setCo(String co) { + this.co = co; + } - public void setOwnerShip(String ownerShip) { - this.ownerShip = ownerShip; - } + public String getGas() { + return gas; + } - public String getPhoneNumber() { - return phoneNumber; - } + public void setGas(String gas) { + this.gas = gas; + } - public void setPhoneNumber(String phoneNumber) { - this.phoneNumber = phoneNumber; - } + public String getH2s() { + return h2s; + } - public String getRegisterTime() { - return registerTime; - } + public void setH2s(String h2s) { + this.h2s = h2s; + } - public void setRegisterTime(String registerTime) { - this.registerTime = registerTime; - } + public String getHatCode() { + return hatCode; + } - public String getStatus() { - return status; - } + public void setHatCode(String hatCode) { + this.hatCode = hatCode; + } - public void setStatus(String status) { - this.status = status; - } + public String getHatId() { + return hatId; + } - public String getStatusName() { - return statusName; - } + public void setHatId(String hatId) { + this.hatId = hatId; + } - public void setStatusName(String statusName) { - this.statusName = statusName; - } + public String getHeartRate() { + return heartRate; + } - public String getWorkerAvatar() { - return workerAvatar; - } + public void setHeartRate(String heartRate) { + this.heartRate = heartRate; + } - public void setWorkerAvatar(String workerAvatar) { - this.workerAvatar = workerAvatar; - } + public String getLat() { + return lat; + } - public String getWorkerName() { - return workerName; - } + public void setLat(String lat) { + this.lat = lat; + } - public void setWorkerName(String workerName) { - this.workerName = workerName; - } + public String getLng() { + return lng; + } - public String getWorkerType() { - return workerType; - } + public void setLng(String lng) { + this.lng = lng; + } - public void setWorkerType(String workerType) { - this.workerType = workerType; + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getO2() { + return o2; + } + + public void setO2(String o2) { + this.o2 = o2; + } + + public String getSignal() { + return signal; + } + + public void setSignal(String signal) { + this.signal = signal; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + + public String getVastCode() { + return vastCode; + } + + public void setVastCode(String vastCode) { + this.vastCode = vastCode; + } + + public String getWorkerId() { + return workerId; + } + + public void setWorkerId(String workerId) { + this.workerId = workerId; + } + + public String getWorkerName() { + return workerName; + } + + public void setWorkerName(String workerName) { + this.workerName = workerName; + } } } diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index a067771..e11181c 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -63,6 +63,15 @@ ): String /** + * 获取工作区域作业人员 + */ + @GET("/overview/workerList") + suspend fun getWorkers( + @Header("token") token: String, + @Query("projectId") projectId: String + ): String + + /** * 设备分页列表 */ @GET("/device/listPage") diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 64942bc..9e12431 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -76,6 +76,13 @@ } /** + * 获取工作区域作业人员 + */ + suspend fun getWorkers(projectId: String): String { + return api.getWorkers(AuthenticationHelper.token!!, projectId) + } + + /** * 设备分页列表 */ suspend fun getDeviceList( diff --git a/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java deleted file mode 100644 index 791f9eb..0000000 --- a/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.casic.br.operationsite.model; - -public class DetailModel { -} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java index 0255754..034a92f 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java @@ -1,158 +1,217 @@ package com.casic.br.operationsite.model; +import java.util.List; + public class WorkerModel { - private String createTime; - private String deptId; - private String deptName; - private String enterReason; - private String gender; - private String genderName; - private String id; - private String idCardNumber; - private String isRegister; - private String ownerShip; - private String phoneNumber; - private String registerTime; - private String status; - private String statusName; - private String workerAvatar; - private String workerName; - private String workerType; + private int code; + private List data; + private String message; + private boolean success; - public String getCreateTime() { - return createTime; + public int getCode() { + return code; } - public void setCreateTime(String createTime) { - this.createTime = createTime; + public void setCode(int code) { + this.code = code; } - public String getDeptId() { - return deptId; + public List getData() { + return data; } - public void setDeptId(String deptId) { - this.deptId = deptId; + public void setData(List data) { + this.data = data; } - public String getDeptName() { - return deptName; + public String getMessage() { + return message; } - public void setDeptName(String deptName) { - this.deptName = deptName; + public void setMessage(String message) { + this.message = message; } - public String getEnterReason() { - return enterReason; + public boolean getSuccess() { + return success; } - public void setEnterReason(String enterReason) { - this.enterReason = enterReason; + public void setSuccess(boolean success) { + this.success = success; } - public String getGender() { - return gender; - } + public static class DataModel { + private boolean alarmFlag; + private String bloodOxygen; + private String braceletCode; + private String cell; + private String co; + private String gas; + private String h2s; + private String hatCode; + private String hatId; + private String heartRate; + private String lat; + private String lng; + private String location; + private String o2; + private String signal; + private String time; + private String vastCode; + private String workerId; + private String workerName; - public void setGender(String gender) { - this.gender = gender; - } + public boolean getAlarmFlag() { + return alarmFlag; + } - public String getGenderName() { - return genderName; - } + public void setAlarmFlag(boolean alarmFlag) { + this.alarmFlag = alarmFlag; + } - public void setGenderName(String genderName) { - this.genderName = genderName; - } + public String getBloodOxygen() { + return bloodOxygen; + } - public String getId() { - return id; - } + public void setBloodOxygen(String bloodOxygen) { + this.bloodOxygen = bloodOxygen; + } - public void setId(String id) { - this.id = id; - } + public String getBraceletCode() { + return braceletCode; + } - public String getIdCardNumber() { - return idCardNumber; - } + public void setBraceletCode(String braceletCode) { + this.braceletCode = braceletCode; + } - public void setIdCardNumber(String idCardNumber) { - this.idCardNumber = idCardNumber; - } + public String getCell() { + return cell; + } - public String getIsRegister() { - return isRegister; - } + public void setCell(String cell) { + this.cell = cell; + } - public void setIsRegister(String isRegister) { - this.isRegister = isRegister; - } + public String getCo() { + return co; + } - public String getOwnerShip() { - return ownerShip; - } + public void setCo(String co) { + this.co = co; + } - public void setOwnerShip(String ownerShip) { - this.ownerShip = ownerShip; - } + public String getGas() { + return gas; + } - public String getPhoneNumber() { - return phoneNumber; - } + public void setGas(String gas) { + this.gas = gas; + } - public void setPhoneNumber(String phoneNumber) { - this.phoneNumber = phoneNumber; - } + public String getH2s() { + return h2s; + } - public String getRegisterTime() { - return registerTime; - } + public void setH2s(String h2s) { + this.h2s = h2s; + } - public void setRegisterTime(String registerTime) { - this.registerTime = registerTime; - } + public String getHatCode() { + return hatCode; + } - public String getStatus() { - return status; - } + public void setHatCode(String hatCode) { + this.hatCode = hatCode; + } - public void setStatus(String status) { - this.status = status; - } + public String getHatId() { + return hatId; + } - public String getStatusName() { - return statusName; - } + public void setHatId(String hatId) { + this.hatId = hatId; + } - public void setStatusName(String statusName) { - this.statusName = statusName; - } + public String getHeartRate() { + return heartRate; + } - public String getWorkerAvatar() { - return workerAvatar; - } + public void setHeartRate(String heartRate) { + this.heartRate = heartRate; + } - public void setWorkerAvatar(String workerAvatar) { - this.workerAvatar = workerAvatar; - } + public String getLat() { + return lat; + } - public String getWorkerName() { - return workerName; - } + public void setLat(String lat) { + this.lat = lat; + } - public void setWorkerName(String workerName) { - this.workerName = workerName; - } + public String getLng() { + return lng; + } - public String getWorkerType() { - return workerType; - } + public void setLng(String lng) { + this.lng = lng; + } - public void setWorkerType(String workerType) { - this.workerType = workerType; + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getO2() { + return o2; + } + + public void setO2(String o2) { + this.o2 = o2; + } + + public String getSignal() { + return signal; + } + + public void setSignal(String signal) { + this.signal = signal; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + + public String getVastCode() { + return vastCode; + } + + public void setVastCode(String vastCode) { + this.vastCode = vastCode; + } + + public String getWorkerId() { + return workerId; + } + + public void setWorkerId(String workerId) { + this.workerId = workerId; + } + + public String getWorkerName() { + return workerName; + } + + public void setWorkerName(String workerName) { + this.workerName = workerName; + } } } diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index a067771..e11181c 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -63,6 +63,15 @@ ): String /** + * 获取工作区域作业人员 + */ + @GET("/overview/workerList") + suspend fun getWorkers( + @Header("token") token: String, + @Query("projectId") projectId: String + ): String + + /** * 设备分页列表 */ @GET("/device/listPage") diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 64942bc..9e12431 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -76,6 +76,13 @@ } /** + * 获取工作区域作业人员 + */ + suspend fun getWorkers(projectId: String): String { + return api.getWorkers(AuthenticationHelper.token!!, projectId) + } + + /** * 设备分页列表 */ suspend fun getDeviceList( diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 8b3a4aa..a772c94 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -2,16 +2,18 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.CameraPosition -import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.PolygonOptions +import com.amap.api.maps.model.* import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.model.DeviceConfigModel +import com.casic.br.operationsite.model.WorkerModel import com.casic.br.operationsite.utils.DeviceType import com.casic.br.operationsite.utils.LoadingDialogHub import com.casic.br.operationsite.utils.RuntimeCache @@ -28,14 +30,22 @@ import kotlinx.android.synthetic.main.include_base_title.* -class WorkSiteTabActivity : KotlinBaseActivity() { +class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMarkerClickListener, + AMap.InfoWindowAdapter { + private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var deviceViewModel: DeviceViewModel private lateinit var projectId: String private val polygonOptions by lazy { PolygonOptions() } private val latlngs: MutableList = ArrayList() + private val workers: MutableList = ArrayList() + + /** + * 自定义Marker弹出框 + * */ + private var infoWindow: View? = null override fun initLayoutView(): Int = R.layout.activity_site_tab @@ -61,6 +71,10 @@ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 uiSettings.isRotateGesturesEnabled = false//不允许地图旋转 + // marker 点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) /** * 数据初始化 @@ -109,8 +123,8 @@ } } - deviceViewModel.getWorkSiteArea(projectId) - deviceViewModel.workSiteAreaResult.observe(this) { + workSiteViewModel.getWorkSiteArea(projectId) + workSiteViewModel.workSiteAreaResult.observe(this) { if (it.code == 200) { val latitudeList: MutableList = ArrayList() val longitudeList: MutableList = ArrayList() @@ -134,8 +148,63 @@ ) } } + + workSiteViewModel.getWorkers(projectId) + workSiteViewModel.workerResult.observe(this) { + if (it.code == 200) { + it.data.forEach { worker -> + workers.add(worker) + aMap.addMarker( + MarkerOptions() + .position(LatLng(worker.lat.toDouble(), worker.lng.toDouble())) + .title(worker.workerId) + .icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap + ) + ) + ) + } + } + } } + override fun onMarkerClick(marker: Marker?): Boolean { + //显示闸井信息 + marker?.showInfoWindow() + return true + } + + override fun getInfoWindow(marker: Marker?): View? { + if (infoWindow == null) { + infoWindow = LayoutInflater.from(this).inflate(R.layout.popu_worker_info, null) + } + val v = infoWindow!! + //反射得到popup里面的控件对象 + val workerNameView = v.findViewById(R.id.workerNameView) + val workerIdView = v.findViewById(R.id.workerIdView) + val heartRateView = v.findViewById(R.id.heartRateView) + val bloodOxygenView = v.findViewById(R.id.bloodOxygenView) + val timeView = v.findViewById(R.id.timeView) + + val workerId = marker?.options?.title + workers.forEach { + if (it.workerId == workerId) { + workerNameView.text = "名称:${it.workerName}" + workerIdView.text = "ID:${it.workerId}" + heartRateView.text = "心率:${it.heartRate}次/min" + bloodOxygenView.text = "血氧浓度:${it.bloodOxygen}%" + timeView.text = "时间:${it.time}" + } + } + return infoWindow + } + + /** + * 此方法不能修改整个 InfoWindow 的背景和边框,无论自定义的样式是什么样,SDK 都会在最外层添加一个默认的边框 + * */ + override fun getInfoContents(p0: Marker?): View? = null + override fun observeRequestState() { workSiteViewModel.loadState.observe(this) { when (it) { diff --git a/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java deleted file mode 100644 index 791f9eb..0000000 --- a/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.casic.br.operationsite.model; - -public class DetailModel { -} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java index 0255754..034a92f 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java @@ -1,158 +1,217 @@ package com.casic.br.operationsite.model; +import java.util.List; + public class WorkerModel { - private String createTime; - private String deptId; - private String deptName; - private String enterReason; - private String gender; - private String genderName; - private String id; - private String idCardNumber; - private String isRegister; - private String ownerShip; - private String phoneNumber; - private String registerTime; - private String status; - private String statusName; - private String workerAvatar; - private String workerName; - private String workerType; + private int code; + private List data; + private String message; + private boolean success; - public String getCreateTime() { - return createTime; + public int getCode() { + return code; } - public void setCreateTime(String createTime) { - this.createTime = createTime; + public void setCode(int code) { + this.code = code; } - public String getDeptId() { - return deptId; + public List getData() { + return data; } - public void setDeptId(String deptId) { - this.deptId = deptId; + public void setData(List data) { + this.data = data; } - public String getDeptName() { - return deptName; + public String getMessage() { + return message; } - public void setDeptName(String deptName) { - this.deptName = deptName; + public void setMessage(String message) { + this.message = message; } - public String getEnterReason() { - return enterReason; + public boolean getSuccess() { + return success; } - public void setEnterReason(String enterReason) { - this.enterReason = enterReason; + public void setSuccess(boolean success) { + this.success = success; } - public String getGender() { - return gender; - } + public static class DataModel { + private boolean alarmFlag; + private String bloodOxygen; + private String braceletCode; + private String cell; + private String co; + private String gas; + private String h2s; + private String hatCode; + private String hatId; + private String heartRate; + private String lat; + private String lng; + private String location; + private String o2; + private String signal; + private String time; + private String vastCode; + private String workerId; + private String workerName; - public void setGender(String gender) { - this.gender = gender; - } + public boolean getAlarmFlag() { + return alarmFlag; + } - public String getGenderName() { - return genderName; - } + public void setAlarmFlag(boolean alarmFlag) { + this.alarmFlag = alarmFlag; + } - public void setGenderName(String genderName) { - this.genderName = genderName; - } + public String getBloodOxygen() { + return bloodOxygen; + } - public String getId() { - return id; - } + public void setBloodOxygen(String bloodOxygen) { + this.bloodOxygen = bloodOxygen; + } - public void setId(String id) { - this.id = id; - } + public String getBraceletCode() { + return braceletCode; + } - public String getIdCardNumber() { - return idCardNumber; - } + public void setBraceletCode(String braceletCode) { + this.braceletCode = braceletCode; + } - public void setIdCardNumber(String idCardNumber) { - this.idCardNumber = idCardNumber; - } + public String getCell() { + return cell; + } - public String getIsRegister() { - return isRegister; - } + public void setCell(String cell) { + this.cell = cell; + } - public void setIsRegister(String isRegister) { - this.isRegister = isRegister; - } + public String getCo() { + return co; + } - public String getOwnerShip() { - return ownerShip; - } + public void setCo(String co) { + this.co = co; + } - public void setOwnerShip(String ownerShip) { - this.ownerShip = ownerShip; - } + public String getGas() { + return gas; + } - public String getPhoneNumber() { - return phoneNumber; - } + public void setGas(String gas) { + this.gas = gas; + } - public void setPhoneNumber(String phoneNumber) { - this.phoneNumber = phoneNumber; - } + public String getH2s() { + return h2s; + } - public String getRegisterTime() { - return registerTime; - } + public void setH2s(String h2s) { + this.h2s = h2s; + } - public void setRegisterTime(String registerTime) { - this.registerTime = registerTime; - } + public String getHatCode() { + return hatCode; + } - public String getStatus() { - return status; - } + public void setHatCode(String hatCode) { + this.hatCode = hatCode; + } - public void setStatus(String status) { - this.status = status; - } + public String getHatId() { + return hatId; + } - public String getStatusName() { - return statusName; - } + public void setHatId(String hatId) { + this.hatId = hatId; + } - public void setStatusName(String statusName) { - this.statusName = statusName; - } + public String getHeartRate() { + return heartRate; + } - public String getWorkerAvatar() { - return workerAvatar; - } + public void setHeartRate(String heartRate) { + this.heartRate = heartRate; + } - public void setWorkerAvatar(String workerAvatar) { - this.workerAvatar = workerAvatar; - } + public String getLat() { + return lat; + } - public String getWorkerName() { - return workerName; - } + public void setLat(String lat) { + this.lat = lat; + } - public void setWorkerName(String workerName) { - this.workerName = workerName; - } + public String getLng() { + return lng; + } - public String getWorkerType() { - return workerType; - } + public void setLng(String lng) { + this.lng = lng; + } - public void setWorkerType(String workerType) { - this.workerType = workerType; + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getO2() { + return o2; + } + + public void setO2(String o2) { + this.o2 = o2; + } + + public String getSignal() { + return signal; + } + + public void setSignal(String signal) { + this.signal = signal; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + + public String getVastCode() { + return vastCode; + } + + public void setVastCode(String vastCode) { + this.vastCode = vastCode; + } + + public String getWorkerId() { + return workerId; + } + + public void setWorkerId(String workerId) { + this.workerId = workerId; + } + + public String getWorkerName() { + return workerName; + } + + public void setWorkerName(String workerName) { + this.workerName = workerName; + } } } diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index a067771..e11181c 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -63,6 +63,15 @@ ): String /** + * 获取工作区域作业人员 + */ + @GET("/overview/workerList") + suspend fun getWorkers( + @Header("token") token: String, + @Query("projectId") projectId: String + ): String + + /** * 设备分页列表 */ @GET("/device/listPage") diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 64942bc..9e12431 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -76,6 +76,13 @@ } /** + * 获取工作区域作业人员 + */ + suspend fun getWorkers(projectId: String): String { + return api.getWorkers(AuthenticationHelper.token!!, projectId) + } + + /** * 设备分页列表 */ suspend fun getDeviceList( diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 8b3a4aa..a772c94 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -2,16 +2,18 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.CameraPosition -import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.PolygonOptions +import com.amap.api.maps.model.* import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.model.DeviceConfigModel +import com.casic.br.operationsite.model.WorkerModel import com.casic.br.operationsite.utils.DeviceType import com.casic.br.operationsite.utils.LoadingDialogHub import com.casic.br.operationsite.utils.RuntimeCache @@ -28,14 +30,22 @@ import kotlinx.android.synthetic.main.include_base_title.* -class WorkSiteTabActivity : KotlinBaseActivity() { +class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMarkerClickListener, + AMap.InfoWindowAdapter { + private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var deviceViewModel: DeviceViewModel private lateinit var projectId: String private val polygonOptions by lazy { PolygonOptions() } private val latlngs: MutableList = ArrayList() + private val workers: MutableList = ArrayList() + + /** + * 自定义Marker弹出框 + * */ + private var infoWindow: View? = null override fun initLayoutView(): Int = R.layout.activity_site_tab @@ -61,6 +71,10 @@ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 uiSettings.isRotateGesturesEnabled = false//不允许地图旋转 + // marker 点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) /** * 数据初始化 @@ -109,8 +123,8 @@ } } - deviceViewModel.getWorkSiteArea(projectId) - deviceViewModel.workSiteAreaResult.observe(this) { + workSiteViewModel.getWorkSiteArea(projectId) + workSiteViewModel.workSiteAreaResult.observe(this) { if (it.code == 200) { val latitudeList: MutableList = ArrayList() val longitudeList: MutableList = ArrayList() @@ -134,8 +148,63 @@ ) } } + + workSiteViewModel.getWorkers(projectId) + workSiteViewModel.workerResult.observe(this) { + if (it.code == 200) { + it.data.forEach { worker -> + workers.add(worker) + aMap.addMarker( + MarkerOptions() + .position(LatLng(worker.lat.toDouble(), worker.lng.toDouble())) + .title(worker.workerId) + .icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap + ) + ) + ) + } + } + } } + override fun onMarkerClick(marker: Marker?): Boolean { + //显示闸井信息 + marker?.showInfoWindow() + return true + } + + override fun getInfoWindow(marker: Marker?): View? { + if (infoWindow == null) { + infoWindow = LayoutInflater.from(this).inflate(R.layout.popu_worker_info, null) + } + val v = infoWindow!! + //反射得到popup里面的控件对象 + val workerNameView = v.findViewById(R.id.workerNameView) + val workerIdView = v.findViewById(R.id.workerIdView) + val heartRateView = v.findViewById(R.id.heartRateView) + val bloodOxygenView = v.findViewById(R.id.bloodOxygenView) + val timeView = v.findViewById(R.id.timeView) + + val workerId = marker?.options?.title + workers.forEach { + if (it.workerId == workerId) { + workerNameView.text = "名称:${it.workerName}" + workerIdView.text = "ID:${it.workerId}" + heartRateView.text = "心率:${it.heartRate}次/min" + bloodOxygenView.text = "血氧浓度:${it.bloodOxygen}%" + timeView.text = "时间:${it.time}" + } + } + return infoWindow + } + + /** + * 此方法不能修改整个 InfoWindow 的背景和边框,无论自定义的样式是什么样,SDK 都会在最外层添加一个默认的边框 + * */ + override fun getInfoContents(p0: Marker?): View? = null + override fun observeRequestState() { workSiteViewModel.loadState.observe(this) { when (it) { diff --git a/app/src/main/java/com/casic/br/operationsite/vm/DetailViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/DetailViewModel.kt deleted file mode 100644 index 56aa8d9..0000000 --- a/app/src/main/java/com/casic/br/operationsite/vm/DetailViewModel.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.casic.br.operationsite.vm - -import androidx.lifecycle.MutableLiveData -import com.casic.br.operationsite.model.DetailModel -import com.google.gson.Gson -import com.pengxh.kt.lite.vm.BaseViewModel - -class DetailViewModel : BaseViewModel() { - - private val gson = Gson() - val detailModel = MutableLiveData() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java deleted file mode 100644 index 791f9eb..0000000 --- a/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.casic.br.operationsite.model; - -public class DetailModel { -} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java index 0255754..034a92f 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java @@ -1,158 +1,217 @@ package com.casic.br.operationsite.model; +import java.util.List; + public class WorkerModel { - private String createTime; - private String deptId; - private String deptName; - private String enterReason; - private String gender; - private String genderName; - private String id; - private String idCardNumber; - private String isRegister; - private String ownerShip; - private String phoneNumber; - private String registerTime; - private String status; - private String statusName; - private String workerAvatar; - private String workerName; - private String workerType; + private int code; + private List data; + private String message; + private boolean success; - public String getCreateTime() { - return createTime; + public int getCode() { + return code; } - public void setCreateTime(String createTime) { - this.createTime = createTime; + public void setCode(int code) { + this.code = code; } - public String getDeptId() { - return deptId; + public List getData() { + return data; } - public void setDeptId(String deptId) { - this.deptId = deptId; + public void setData(List data) { + this.data = data; } - public String getDeptName() { - return deptName; + public String getMessage() { + return message; } - public void setDeptName(String deptName) { - this.deptName = deptName; + public void setMessage(String message) { + this.message = message; } - public String getEnterReason() { - return enterReason; + public boolean getSuccess() { + return success; } - public void setEnterReason(String enterReason) { - this.enterReason = enterReason; + public void setSuccess(boolean success) { + this.success = success; } - public String getGender() { - return gender; - } + public static class DataModel { + private boolean alarmFlag; + private String bloodOxygen; + private String braceletCode; + private String cell; + private String co; + private String gas; + private String h2s; + private String hatCode; + private String hatId; + private String heartRate; + private String lat; + private String lng; + private String location; + private String o2; + private String signal; + private String time; + private String vastCode; + private String workerId; + private String workerName; - public void setGender(String gender) { - this.gender = gender; - } + public boolean getAlarmFlag() { + return alarmFlag; + } - public String getGenderName() { - return genderName; - } + public void setAlarmFlag(boolean alarmFlag) { + this.alarmFlag = alarmFlag; + } - public void setGenderName(String genderName) { - this.genderName = genderName; - } + public String getBloodOxygen() { + return bloodOxygen; + } - public String getId() { - return id; - } + public void setBloodOxygen(String bloodOxygen) { + this.bloodOxygen = bloodOxygen; + } - public void setId(String id) { - this.id = id; - } + public String getBraceletCode() { + return braceletCode; + } - public String getIdCardNumber() { - return idCardNumber; - } + public void setBraceletCode(String braceletCode) { + this.braceletCode = braceletCode; + } - public void setIdCardNumber(String idCardNumber) { - this.idCardNumber = idCardNumber; - } + public String getCell() { + return cell; + } - public String getIsRegister() { - return isRegister; - } + public void setCell(String cell) { + this.cell = cell; + } - public void setIsRegister(String isRegister) { - this.isRegister = isRegister; - } + public String getCo() { + return co; + } - public String getOwnerShip() { - return ownerShip; - } + public void setCo(String co) { + this.co = co; + } - public void setOwnerShip(String ownerShip) { - this.ownerShip = ownerShip; - } + public String getGas() { + return gas; + } - public String getPhoneNumber() { - return phoneNumber; - } + public void setGas(String gas) { + this.gas = gas; + } - public void setPhoneNumber(String phoneNumber) { - this.phoneNumber = phoneNumber; - } + public String getH2s() { + return h2s; + } - public String getRegisterTime() { - return registerTime; - } + public void setH2s(String h2s) { + this.h2s = h2s; + } - public void setRegisterTime(String registerTime) { - this.registerTime = registerTime; - } + public String getHatCode() { + return hatCode; + } - public String getStatus() { - return status; - } + public void setHatCode(String hatCode) { + this.hatCode = hatCode; + } - public void setStatus(String status) { - this.status = status; - } + public String getHatId() { + return hatId; + } - public String getStatusName() { - return statusName; - } + public void setHatId(String hatId) { + this.hatId = hatId; + } - public void setStatusName(String statusName) { - this.statusName = statusName; - } + public String getHeartRate() { + return heartRate; + } - public String getWorkerAvatar() { - return workerAvatar; - } + public void setHeartRate(String heartRate) { + this.heartRate = heartRate; + } - public void setWorkerAvatar(String workerAvatar) { - this.workerAvatar = workerAvatar; - } + public String getLat() { + return lat; + } - public String getWorkerName() { - return workerName; - } + public void setLat(String lat) { + this.lat = lat; + } - public void setWorkerName(String workerName) { - this.workerName = workerName; - } + public String getLng() { + return lng; + } - public String getWorkerType() { - return workerType; - } + public void setLng(String lng) { + this.lng = lng; + } - public void setWorkerType(String workerType) { - this.workerType = workerType; + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getO2() { + return o2; + } + + public void setO2(String o2) { + this.o2 = o2; + } + + public String getSignal() { + return signal; + } + + public void setSignal(String signal) { + this.signal = signal; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + + public String getVastCode() { + return vastCode; + } + + public void setVastCode(String vastCode) { + this.vastCode = vastCode; + } + + public String getWorkerId() { + return workerId; + } + + public void setWorkerId(String workerId) { + this.workerId = workerId; + } + + public String getWorkerName() { + return workerName; + } + + public void setWorkerName(String workerName) { + this.workerName = workerName; + } } } diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index a067771..e11181c 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -63,6 +63,15 @@ ): String /** + * 获取工作区域作业人员 + */ + @GET("/overview/workerList") + suspend fun getWorkers( + @Header("token") token: String, + @Query("projectId") projectId: String + ): String + + /** * 设备分页列表 */ @GET("/device/listPage") diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 64942bc..9e12431 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -76,6 +76,13 @@ } /** + * 获取工作区域作业人员 + */ + suspend fun getWorkers(projectId: String): String { + return api.getWorkers(AuthenticationHelper.token!!, projectId) + } + + /** * 设备分页列表 */ suspend fun getDeviceList( diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 8b3a4aa..a772c94 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -2,16 +2,18 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.CameraPosition -import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.PolygonOptions +import com.amap.api.maps.model.* import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.model.DeviceConfigModel +import com.casic.br.operationsite.model.WorkerModel import com.casic.br.operationsite.utils.DeviceType import com.casic.br.operationsite.utils.LoadingDialogHub import com.casic.br.operationsite.utils.RuntimeCache @@ -28,14 +30,22 @@ import kotlinx.android.synthetic.main.include_base_title.* -class WorkSiteTabActivity : KotlinBaseActivity() { +class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMarkerClickListener, + AMap.InfoWindowAdapter { + private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var deviceViewModel: DeviceViewModel private lateinit var projectId: String private val polygonOptions by lazy { PolygonOptions() } private val latlngs: MutableList = ArrayList() + private val workers: MutableList = ArrayList() + + /** + * 自定义Marker弹出框 + * */ + private var infoWindow: View? = null override fun initLayoutView(): Int = R.layout.activity_site_tab @@ -61,6 +71,10 @@ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 uiSettings.isRotateGesturesEnabled = false//不允许地图旋转 + // marker 点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) /** * 数据初始化 @@ -109,8 +123,8 @@ } } - deviceViewModel.getWorkSiteArea(projectId) - deviceViewModel.workSiteAreaResult.observe(this) { + workSiteViewModel.getWorkSiteArea(projectId) + workSiteViewModel.workSiteAreaResult.observe(this) { if (it.code == 200) { val latitudeList: MutableList = ArrayList() val longitudeList: MutableList = ArrayList() @@ -134,8 +148,63 @@ ) } } + + workSiteViewModel.getWorkers(projectId) + workSiteViewModel.workerResult.observe(this) { + if (it.code == 200) { + it.data.forEach { worker -> + workers.add(worker) + aMap.addMarker( + MarkerOptions() + .position(LatLng(worker.lat.toDouble(), worker.lng.toDouble())) + .title(worker.workerId) + .icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap + ) + ) + ) + } + } + } } + override fun onMarkerClick(marker: Marker?): Boolean { + //显示闸井信息 + marker?.showInfoWindow() + return true + } + + override fun getInfoWindow(marker: Marker?): View? { + if (infoWindow == null) { + infoWindow = LayoutInflater.from(this).inflate(R.layout.popu_worker_info, null) + } + val v = infoWindow!! + //反射得到popup里面的控件对象 + val workerNameView = v.findViewById(R.id.workerNameView) + val workerIdView = v.findViewById(R.id.workerIdView) + val heartRateView = v.findViewById(R.id.heartRateView) + val bloodOxygenView = v.findViewById(R.id.bloodOxygenView) + val timeView = v.findViewById(R.id.timeView) + + val workerId = marker?.options?.title + workers.forEach { + if (it.workerId == workerId) { + workerNameView.text = "名称:${it.workerName}" + workerIdView.text = "ID:${it.workerId}" + heartRateView.text = "心率:${it.heartRate}次/min" + bloodOxygenView.text = "血氧浓度:${it.bloodOxygen}%" + timeView.text = "时间:${it.time}" + } + } + return infoWindow + } + + /** + * 此方法不能修改整个 InfoWindow 的背景和边框,无论自定义的样式是什么样,SDK 都会在最外层添加一个默认的边框 + * */ + override fun getInfoContents(p0: Marker?): View? = null + override fun observeRequestState() { workSiteViewModel.loadState.observe(this) { when (it) { diff --git a/app/src/main/java/com/casic/br/operationsite/vm/DetailViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/DetailViewModel.kt deleted file mode 100644 index 56aa8d9..0000000 --- a/app/src/main/java/com/casic/br/operationsite/vm/DetailViewModel.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.casic.br.operationsite.vm - -import androidx.lifecycle.MutableLiveData -import com.casic.br.operationsite.model.DetailModel -import com.google.gson.Gson -import com.pengxh.kt.lite.vm.BaseViewModel - -class DetailViewModel : BaseViewModel() { - - private val gson = Gson() - val detailModel = MutableLiveData() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt index a05134b..cc73dd7 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt @@ -7,7 +7,6 @@ import com.casic.br.operationsite.model.CommonResultModel import com.casic.br.operationsite.model.DeviceListModel import com.casic.br.operationsite.model.MethaneThresholdModel -import com.casic.br.operationsite.model.WorkSiteAreaModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -22,7 +21,6 @@ val deviceModels = MutableLiveData() val setThresholdResult = MutableLiveData() val thresholdResult = MutableLiveData() - val workSiteAreaResult = MutableLiveData() fun getDeviceList( deviceCode: String, deviceType: String, projectId: String, status: String, page: Int @@ -84,23 +82,4 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) - - fun getWorkSiteArea(projectId: String) = launch({ - loadState.value = LoadState.Loading - val response = RetrofitServiceManager.getWorkSiteArea(projectId) - val responseCode = response.separateResponseCode() - if (responseCode == 200) { - workSiteAreaResult.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - loadState.value = LoadState.Success - } else { - loadState.value = LoadState.Fail - response.toErrorMessage().show(BaseApplication.get()) - } - }, { - loadState.value = LoadState.Fail - it.cause.toString().show(BaseApplication.get()) - it.printStackTrace() - }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java deleted file mode 100644 index 791f9eb..0000000 --- a/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.casic.br.operationsite.model; - -public class DetailModel { -} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java index 0255754..034a92f 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java @@ -1,158 +1,217 @@ package com.casic.br.operationsite.model; +import java.util.List; + public class WorkerModel { - private String createTime; - private String deptId; - private String deptName; - private String enterReason; - private String gender; - private String genderName; - private String id; - private String idCardNumber; - private String isRegister; - private String ownerShip; - private String phoneNumber; - private String registerTime; - private String status; - private String statusName; - private String workerAvatar; - private String workerName; - private String workerType; + private int code; + private List data; + private String message; + private boolean success; - public String getCreateTime() { - return createTime; + public int getCode() { + return code; } - public void setCreateTime(String createTime) { - this.createTime = createTime; + public void setCode(int code) { + this.code = code; } - public String getDeptId() { - return deptId; + public List getData() { + return data; } - public void setDeptId(String deptId) { - this.deptId = deptId; + public void setData(List data) { + this.data = data; } - public String getDeptName() { - return deptName; + public String getMessage() { + return message; } - public void setDeptName(String deptName) { - this.deptName = deptName; + public void setMessage(String message) { + this.message = message; } - public String getEnterReason() { - return enterReason; + public boolean getSuccess() { + return success; } - public void setEnterReason(String enterReason) { - this.enterReason = enterReason; + public void setSuccess(boolean success) { + this.success = success; } - public String getGender() { - return gender; - } + public static class DataModel { + private boolean alarmFlag; + private String bloodOxygen; + private String braceletCode; + private String cell; + private String co; + private String gas; + private String h2s; + private String hatCode; + private String hatId; + private String heartRate; + private String lat; + private String lng; + private String location; + private String o2; + private String signal; + private String time; + private String vastCode; + private String workerId; + private String workerName; - public void setGender(String gender) { - this.gender = gender; - } + public boolean getAlarmFlag() { + return alarmFlag; + } - public String getGenderName() { - return genderName; - } + public void setAlarmFlag(boolean alarmFlag) { + this.alarmFlag = alarmFlag; + } - public void setGenderName(String genderName) { - this.genderName = genderName; - } + public String getBloodOxygen() { + return bloodOxygen; + } - public String getId() { - return id; - } + public void setBloodOxygen(String bloodOxygen) { + this.bloodOxygen = bloodOxygen; + } - public void setId(String id) { - this.id = id; - } + public String getBraceletCode() { + return braceletCode; + } - public String getIdCardNumber() { - return idCardNumber; - } + public void setBraceletCode(String braceletCode) { + this.braceletCode = braceletCode; + } - public void setIdCardNumber(String idCardNumber) { - this.idCardNumber = idCardNumber; - } + public String getCell() { + return cell; + } - public String getIsRegister() { - return isRegister; - } + public void setCell(String cell) { + this.cell = cell; + } - public void setIsRegister(String isRegister) { - this.isRegister = isRegister; - } + public String getCo() { + return co; + } - public String getOwnerShip() { - return ownerShip; - } + public void setCo(String co) { + this.co = co; + } - public void setOwnerShip(String ownerShip) { - this.ownerShip = ownerShip; - } + public String getGas() { + return gas; + } - public String getPhoneNumber() { - return phoneNumber; - } + public void setGas(String gas) { + this.gas = gas; + } - public void setPhoneNumber(String phoneNumber) { - this.phoneNumber = phoneNumber; - } + public String getH2s() { + return h2s; + } - public String getRegisterTime() { - return registerTime; - } + public void setH2s(String h2s) { + this.h2s = h2s; + } - public void setRegisterTime(String registerTime) { - this.registerTime = registerTime; - } + public String getHatCode() { + return hatCode; + } - public String getStatus() { - return status; - } + public void setHatCode(String hatCode) { + this.hatCode = hatCode; + } - public void setStatus(String status) { - this.status = status; - } + public String getHatId() { + return hatId; + } - public String getStatusName() { - return statusName; - } + public void setHatId(String hatId) { + this.hatId = hatId; + } - public void setStatusName(String statusName) { - this.statusName = statusName; - } + public String getHeartRate() { + return heartRate; + } - public String getWorkerAvatar() { - return workerAvatar; - } + public void setHeartRate(String heartRate) { + this.heartRate = heartRate; + } - public void setWorkerAvatar(String workerAvatar) { - this.workerAvatar = workerAvatar; - } + public String getLat() { + return lat; + } - public String getWorkerName() { - return workerName; - } + public void setLat(String lat) { + this.lat = lat; + } - public void setWorkerName(String workerName) { - this.workerName = workerName; - } + public String getLng() { + return lng; + } - public String getWorkerType() { - return workerType; - } + public void setLng(String lng) { + this.lng = lng; + } - public void setWorkerType(String workerType) { - this.workerType = workerType; + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getO2() { + return o2; + } + + public void setO2(String o2) { + this.o2 = o2; + } + + public String getSignal() { + return signal; + } + + public void setSignal(String signal) { + this.signal = signal; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + + public String getVastCode() { + return vastCode; + } + + public void setVastCode(String vastCode) { + this.vastCode = vastCode; + } + + public String getWorkerId() { + return workerId; + } + + public void setWorkerId(String workerId) { + this.workerId = workerId; + } + + public String getWorkerName() { + return workerName; + } + + public void setWorkerName(String workerName) { + this.workerName = workerName; + } } } diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index a067771..e11181c 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -63,6 +63,15 @@ ): String /** + * 获取工作区域作业人员 + */ + @GET("/overview/workerList") + suspend fun getWorkers( + @Header("token") token: String, + @Query("projectId") projectId: String + ): String + + /** * 设备分页列表 */ @GET("/device/listPage") diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 64942bc..9e12431 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -76,6 +76,13 @@ } /** + * 获取工作区域作业人员 + */ + suspend fun getWorkers(projectId: String): String { + return api.getWorkers(AuthenticationHelper.token!!, projectId) + } + + /** * 设备分页列表 */ suspend fun getDeviceList( diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 8b3a4aa..a772c94 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -2,16 +2,18 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.CameraPosition -import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.PolygonOptions +import com.amap.api.maps.model.* import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.model.DeviceConfigModel +import com.casic.br.operationsite.model.WorkerModel import com.casic.br.operationsite.utils.DeviceType import com.casic.br.operationsite.utils.LoadingDialogHub import com.casic.br.operationsite.utils.RuntimeCache @@ -28,14 +30,22 @@ import kotlinx.android.synthetic.main.include_base_title.* -class WorkSiteTabActivity : KotlinBaseActivity() { +class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMarkerClickListener, + AMap.InfoWindowAdapter { + private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var deviceViewModel: DeviceViewModel private lateinit var projectId: String private val polygonOptions by lazy { PolygonOptions() } private val latlngs: MutableList = ArrayList() + private val workers: MutableList = ArrayList() + + /** + * 自定义Marker弹出框 + * */ + private var infoWindow: View? = null override fun initLayoutView(): Int = R.layout.activity_site_tab @@ -61,6 +71,10 @@ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 uiSettings.isRotateGesturesEnabled = false//不允许地图旋转 + // marker 点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) /** * 数据初始化 @@ -109,8 +123,8 @@ } } - deviceViewModel.getWorkSiteArea(projectId) - deviceViewModel.workSiteAreaResult.observe(this) { + workSiteViewModel.getWorkSiteArea(projectId) + workSiteViewModel.workSiteAreaResult.observe(this) { if (it.code == 200) { val latitudeList: MutableList = ArrayList() val longitudeList: MutableList = ArrayList() @@ -134,8 +148,63 @@ ) } } + + workSiteViewModel.getWorkers(projectId) + workSiteViewModel.workerResult.observe(this) { + if (it.code == 200) { + it.data.forEach { worker -> + workers.add(worker) + aMap.addMarker( + MarkerOptions() + .position(LatLng(worker.lat.toDouble(), worker.lng.toDouble())) + .title(worker.workerId) + .icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap + ) + ) + ) + } + } + } } + override fun onMarkerClick(marker: Marker?): Boolean { + //显示闸井信息 + marker?.showInfoWindow() + return true + } + + override fun getInfoWindow(marker: Marker?): View? { + if (infoWindow == null) { + infoWindow = LayoutInflater.from(this).inflate(R.layout.popu_worker_info, null) + } + val v = infoWindow!! + //反射得到popup里面的控件对象 + val workerNameView = v.findViewById(R.id.workerNameView) + val workerIdView = v.findViewById(R.id.workerIdView) + val heartRateView = v.findViewById(R.id.heartRateView) + val bloodOxygenView = v.findViewById(R.id.bloodOxygenView) + val timeView = v.findViewById(R.id.timeView) + + val workerId = marker?.options?.title + workers.forEach { + if (it.workerId == workerId) { + workerNameView.text = "名称:${it.workerName}" + workerIdView.text = "ID:${it.workerId}" + heartRateView.text = "心率:${it.heartRate}次/min" + bloodOxygenView.text = "血氧浓度:${it.bloodOxygen}%" + timeView.text = "时间:${it.time}" + } + } + return infoWindow + } + + /** + * 此方法不能修改整个 InfoWindow 的背景和边框,无论自定义的样式是什么样,SDK 都会在最外层添加一个默认的边框 + * */ + override fun getInfoContents(p0: Marker?): View? = null + override fun observeRequestState() { workSiteViewModel.loadState.observe(this) { when (it) { diff --git a/app/src/main/java/com/casic/br/operationsite/vm/DetailViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/DetailViewModel.kt deleted file mode 100644 index 56aa8d9..0000000 --- a/app/src/main/java/com/casic/br/operationsite/vm/DetailViewModel.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.casic.br.operationsite.vm - -import androidx.lifecycle.MutableLiveData -import com.casic.br.operationsite.model.DetailModel -import com.google.gson.Gson -import com.pengxh.kt.lite.vm.BaseViewModel - -class DetailViewModel : BaseViewModel() { - - private val gson = Gson() - val detailModel = MutableLiveData() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt index a05134b..cc73dd7 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt @@ -7,7 +7,6 @@ import com.casic.br.operationsite.model.CommonResultModel import com.casic.br.operationsite.model.DeviceListModel import com.casic.br.operationsite.model.MethaneThresholdModel -import com.casic.br.operationsite.model.WorkSiteAreaModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -22,7 +21,6 @@ val deviceModels = MutableLiveData() val setThresholdResult = MutableLiveData() val thresholdResult = MutableLiveData() - val workSiteAreaResult = MutableLiveData() fun getDeviceList( deviceCode: String, deviceType: String, projectId: String, status: String, page: Int @@ -84,23 +82,4 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) - - fun getWorkSiteArea(projectId: String) = launch({ - loadState.value = LoadState.Loading - val response = RetrofitServiceManager.getWorkSiteArea(projectId) - val responseCode = response.separateResponseCode() - if (responseCode == 200) { - workSiteAreaResult.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - loadState.value = LoadState.Success - } else { - loadState.value = LoadState.Fail - response.toErrorMessage().show(BaseApplication.get()) - } - }, { - loadState.value = LoadState.Fail - it.cause.toString().show(BaseApplication.get()) - it.printStackTrace() - }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt index 4d574e4..b24817d 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt @@ -4,8 +4,10 @@ import com.casic.br.operationsite.base.BaseApplication import com.casic.br.operationsite.extensions.separateResponseCode import com.casic.br.operationsite.extensions.toErrorMessage +import com.casic.br.operationsite.model.WorkSiteAreaModel import com.casic.br.operationsite.model.WorkSiteDetailModel import com.casic.br.operationsite.model.WorkSiteListModel +import com.casic.br.operationsite.model.WorkerModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -22,6 +24,8 @@ private val gson = Gson() val worksiteModel = MutableLiveData() val detailModel = MutableLiveData() + val workSiteAreaResult = MutableLiveData() + val workerResult = MutableLiveData() fun obtainProjectListByPage(keywords: String, state: String, page: Int) = launch({ val response = RetrofitServiceManager.obtainProjectListByPage(keywords, state, page) @@ -57,4 +61,42 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getWorkSiteArea(projectId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getWorkSiteArea(projectId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + workSiteAreaResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getWorkers(projectId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getWorkers(projectId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + workerResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java deleted file mode 100644 index 791f9eb..0000000 --- a/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.casic.br.operationsite.model; - -public class DetailModel { -} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java index 0255754..034a92f 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java @@ -1,158 +1,217 @@ package com.casic.br.operationsite.model; +import java.util.List; + public class WorkerModel { - private String createTime; - private String deptId; - private String deptName; - private String enterReason; - private String gender; - private String genderName; - private String id; - private String idCardNumber; - private String isRegister; - private String ownerShip; - private String phoneNumber; - private String registerTime; - private String status; - private String statusName; - private String workerAvatar; - private String workerName; - private String workerType; + private int code; + private List data; + private String message; + private boolean success; - public String getCreateTime() { - return createTime; + public int getCode() { + return code; } - public void setCreateTime(String createTime) { - this.createTime = createTime; + public void setCode(int code) { + this.code = code; } - public String getDeptId() { - return deptId; + public List getData() { + return data; } - public void setDeptId(String deptId) { - this.deptId = deptId; + public void setData(List data) { + this.data = data; } - public String getDeptName() { - return deptName; + public String getMessage() { + return message; } - public void setDeptName(String deptName) { - this.deptName = deptName; + public void setMessage(String message) { + this.message = message; } - public String getEnterReason() { - return enterReason; + public boolean getSuccess() { + return success; } - public void setEnterReason(String enterReason) { - this.enterReason = enterReason; + public void setSuccess(boolean success) { + this.success = success; } - public String getGender() { - return gender; - } + public static class DataModel { + private boolean alarmFlag; + private String bloodOxygen; + private String braceletCode; + private String cell; + private String co; + private String gas; + private String h2s; + private String hatCode; + private String hatId; + private String heartRate; + private String lat; + private String lng; + private String location; + private String o2; + private String signal; + private String time; + private String vastCode; + private String workerId; + private String workerName; - public void setGender(String gender) { - this.gender = gender; - } + public boolean getAlarmFlag() { + return alarmFlag; + } - public String getGenderName() { - return genderName; - } + public void setAlarmFlag(boolean alarmFlag) { + this.alarmFlag = alarmFlag; + } - public void setGenderName(String genderName) { - this.genderName = genderName; - } + public String getBloodOxygen() { + return bloodOxygen; + } - public String getId() { - return id; - } + public void setBloodOxygen(String bloodOxygen) { + this.bloodOxygen = bloodOxygen; + } - public void setId(String id) { - this.id = id; - } + public String getBraceletCode() { + return braceletCode; + } - public String getIdCardNumber() { - return idCardNumber; - } + public void setBraceletCode(String braceletCode) { + this.braceletCode = braceletCode; + } - public void setIdCardNumber(String idCardNumber) { - this.idCardNumber = idCardNumber; - } + public String getCell() { + return cell; + } - public String getIsRegister() { - return isRegister; - } + public void setCell(String cell) { + this.cell = cell; + } - public void setIsRegister(String isRegister) { - this.isRegister = isRegister; - } + public String getCo() { + return co; + } - public String getOwnerShip() { - return ownerShip; - } + public void setCo(String co) { + this.co = co; + } - public void setOwnerShip(String ownerShip) { - this.ownerShip = ownerShip; - } + public String getGas() { + return gas; + } - public String getPhoneNumber() { - return phoneNumber; - } + public void setGas(String gas) { + this.gas = gas; + } - public void setPhoneNumber(String phoneNumber) { - this.phoneNumber = phoneNumber; - } + public String getH2s() { + return h2s; + } - public String getRegisterTime() { - return registerTime; - } + public void setH2s(String h2s) { + this.h2s = h2s; + } - public void setRegisterTime(String registerTime) { - this.registerTime = registerTime; - } + public String getHatCode() { + return hatCode; + } - public String getStatus() { - return status; - } + public void setHatCode(String hatCode) { + this.hatCode = hatCode; + } - public void setStatus(String status) { - this.status = status; - } + public String getHatId() { + return hatId; + } - public String getStatusName() { - return statusName; - } + public void setHatId(String hatId) { + this.hatId = hatId; + } - public void setStatusName(String statusName) { - this.statusName = statusName; - } + public String getHeartRate() { + return heartRate; + } - public String getWorkerAvatar() { - return workerAvatar; - } + public void setHeartRate(String heartRate) { + this.heartRate = heartRate; + } - public void setWorkerAvatar(String workerAvatar) { - this.workerAvatar = workerAvatar; - } + public String getLat() { + return lat; + } - public String getWorkerName() { - return workerName; - } + public void setLat(String lat) { + this.lat = lat; + } - public void setWorkerName(String workerName) { - this.workerName = workerName; - } + public String getLng() { + return lng; + } - public String getWorkerType() { - return workerType; - } + public void setLng(String lng) { + this.lng = lng; + } - public void setWorkerType(String workerType) { - this.workerType = workerType; + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getO2() { + return o2; + } + + public void setO2(String o2) { + this.o2 = o2; + } + + public String getSignal() { + return signal; + } + + public void setSignal(String signal) { + this.signal = signal; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + + public String getVastCode() { + return vastCode; + } + + public void setVastCode(String vastCode) { + this.vastCode = vastCode; + } + + public String getWorkerId() { + return workerId; + } + + public void setWorkerId(String workerId) { + this.workerId = workerId; + } + + public String getWorkerName() { + return workerName; + } + + public void setWorkerName(String workerName) { + this.workerName = workerName; + } } } diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index a067771..e11181c 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -63,6 +63,15 @@ ): String /** + * 获取工作区域作业人员 + */ + @GET("/overview/workerList") + suspend fun getWorkers( + @Header("token") token: String, + @Query("projectId") projectId: String + ): String + + /** * 设备分页列表 */ @GET("/device/listPage") diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 64942bc..9e12431 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -76,6 +76,13 @@ } /** + * 获取工作区域作业人员 + */ + suspend fun getWorkers(projectId: String): String { + return api.getWorkers(AuthenticationHelper.token!!, projectId) + } + + /** * 设备分页列表 */ suspend fun getDeviceList( diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 8b3a4aa..a772c94 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -2,16 +2,18 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.CameraPosition -import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.PolygonOptions +import com.amap.api.maps.model.* import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.model.DeviceConfigModel +import com.casic.br.operationsite.model.WorkerModel import com.casic.br.operationsite.utils.DeviceType import com.casic.br.operationsite.utils.LoadingDialogHub import com.casic.br.operationsite.utils.RuntimeCache @@ -28,14 +30,22 @@ import kotlinx.android.synthetic.main.include_base_title.* -class WorkSiteTabActivity : KotlinBaseActivity() { +class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMarkerClickListener, + AMap.InfoWindowAdapter { + private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var deviceViewModel: DeviceViewModel private lateinit var projectId: String private val polygonOptions by lazy { PolygonOptions() } private val latlngs: MutableList = ArrayList() + private val workers: MutableList = ArrayList() + + /** + * 自定义Marker弹出框 + * */ + private var infoWindow: View? = null override fun initLayoutView(): Int = R.layout.activity_site_tab @@ -61,6 +71,10 @@ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 uiSettings.isRotateGesturesEnabled = false//不允许地图旋转 + // marker 点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) /** * 数据初始化 @@ -109,8 +123,8 @@ } } - deviceViewModel.getWorkSiteArea(projectId) - deviceViewModel.workSiteAreaResult.observe(this) { + workSiteViewModel.getWorkSiteArea(projectId) + workSiteViewModel.workSiteAreaResult.observe(this) { if (it.code == 200) { val latitudeList: MutableList = ArrayList() val longitudeList: MutableList = ArrayList() @@ -134,8 +148,63 @@ ) } } + + workSiteViewModel.getWorkers(projectId) + workSiteViewModel.workerResult.observe(this) { + if (it.code == 200) { + it.data.forEach { worker -> + workers.add(worker) + aMap.addMarker( + MarkerOptions() + .position(LatLng(worker.lat.toDouble(), worker.lng.toDouble())) + .title(worker.workerId) + .icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap + ) + ) + ) + } + } + } } + override fun onMarkerClick(marker: Marker?): Boolean { + //显示闸井信息 + marker?.showInfoWindow() + return true + } + + override fun getInfoWindow(marker: Marker?): View? { + if (infoWindow == null) { + infoWindow = LayoutInflater.from(this).inflate(R.layout.popu_worker_info, null) + } + val v = infoWindow!! + //反射得到popup里面的控件对象 + val workerNameView = v.findViewById(R.id.workerNameView) + val workerIdView = v.findViewById(R.id.workerIdView) + val heartRateView = v.findViewById(R.id.heartRateView) + val bloodOxygenView = v.findViewById(R.id.bloodOxygenView) + val timeView = v.findViewById(R.id.timeView) + + val workerId = marker?.options?.title + workers.forEach { + if (it.workerId == workerId) { + workerNameView.text = "名称:${it.workerName}" + workerIdView.text = "ID:${it.workerId}" + heartRateView.text = "心率:${it.heartRate}次/min" + bloodOxygenView.text = "血氧浓度:${it.bloodOxygen}%" + timeView.text = "时间:${it.time}" + } + } + return infoWindow + } + + /** + * 此方法不能修改整个 InfoWindow 的背景和边框,无论自定义的样式是什么样,SDK 都会在最外层添加一个默认的边框 + * */ + override fun getInfoContents(p0: Marker?): View? = null + override fun observeRequestState() { workSiteViewModel.loadState.observe(this) { when (it) { diff --git a/app/src/main/java/com/casic/br/operationsite/vm/DetailViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/DetailViewModel.kt deleted file mode 100644 index 56aa8d9..0000000 --- a/app/src/main/java/com/casic/br/operationsite/vm/DetailViewModel.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.casic.br.operationsite.vm - -import androidx.lifecycle.MutableLiveData -import com.casic.br.operationsite.model.DetailModel -import com.google.gson.Gson -import com.pengxh.kt.lite.vm.BaseViewModel - -class DetailViewModel : BaseViewModel() { - - private val gson = Gson() - val detailModel = MutableLiveData() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt index a05134b..cc73dd7 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt @@ -7,7 +7,6 @@ import com.casic.br.operationsite.model.CommonResultModel import com.casic.br.operationsite.model.DeviceListModel import com.casic.br.operationsite.model.MethaneThresholdModel -import com.casic.br.operationsite.model.WorkSiteAreaModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -22,7 +21,6 @@ val deviceModels = MutableLiveData() val setThresholdResult = MutableLiveData() val thresholdResult = MutableLiveData() - val workSiteAreaResult = MutableLiveData() fun getDeviceList( deviceCode: String, deviceType: String, projectId: String, status: String, page: Int @@ -84,23 +82,4 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) - - fun getWorkSiteArea(projectId: String) = launch({ - loadState.value = LoadState.Loading - val response = RetrofitServiceManager.getWorkSiteArea(projectId) - val responseCode = response.separateResponseCode() - if (responseCode == 200) { - workSiteAreaResult.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - loadState.value = LoadState.Success - } else { - loadState.value = LoadState.Fail - response.toErrorMessage().show(BaseApplication.get()) - } - }, { - loadState.value = LoadState.Fail - it.cause.toString().show(BaseApplication.get()) - it.printStackTrace() - }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt index 4d574e4..b24817d 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt @@ -4,8 +4,10 @@ import com.casic.br.operationsite.base.BaseApplication import com.casic.br.operationsite.extensions.separateResponseCode import com.casic.br.operationsite.extensions.toErrorMessage +import com.casic.br.operationsite.model.WorkSiteAreaModel import com.casic.br.operationsite.model.WorkSiteDetailModel import com.casic.br.operationsite.model.WorkSiteListModel +import com.casic.br.operationsite.model.WorkerModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -22,6 +24,8 @@ private val gson = Gson() val worksiteModel = MutableLiveData() val detailModel = MutableLiveData() + val workSiteAreaResult = MutableLiveData() + val workerResult = MutableLiveData() fun obtainProjectListByPage(keywords: String, state: String, page: Int) = launch({ val response = RetrofitServiceManager.obtainProjectListByPage(keywords, state, page) @@ -57,4 +61,42 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getWorkSiteArea(projectId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getWorkSiteArea(projectId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + workSiteAreaResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getWorkers(projectId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getWorkers(projectId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + workerResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_transparent_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_transparent_radius_7.xml new file mode 100644 index 0000000..8b940d2 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_transparent_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java deleted file mode 100644 index 791f9eb..0000000 --- a/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.casic.br.operationsite.model; - -public class DetailModel { -} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java index 0255754..034a92f 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java @@ -1,158 +1,217 @@ package com.casic.br.operationsite.model; +import java.util.List; + public class WorkerModel { - private String createTime; - private String deptId; - private String deptName; - private String enterReason; - private String gender; - private String genderName; - private String id; - private String idCardNumber; - private String isRegister; - private String ownerShip; - private String phoneNumber; - private String registerTime; - private String status; - private String statusName; - private String workerAvatar; - private String workerName; - private String workerType; + private int code; + private List data; + private String message; + private boolean success; - public String getCreateTime() { - return createTime; + public int getCode() { + return code; } - public void setCreateTime(String createTime) { - this.createTime = createTime; + public void setCode(int code) { + this.code = code; } - public String getDeptId() { - return deptId; + public List getData() { + return data; } - public void setDeptId(String deptId) { - this.deptId = deptId; + public void setData(List data) { + this.data = data; } - public String getDeptName() { - return deptName; + public String getMessage() { + return message; } - public void setDeptName(String deptName) { - this.deptName = deptName; + public void setMessage(String message) { + this.message = message; } - public String getEnterReason() { - return enterReason; + public boolean getSuccess() { + return success; } - public void setEnterReason(String enterReason) { - this.enterReason = enterReason; + public void setSuccess(boolean success) { + this.success = success; } - public String getGender() { - return gender; - } + public static class DataModel { + private boolean alarmFlag; + private String bloodOxygen; + private String braceletCode; + private String cell; + private String co; + private String gas; + private String h2s; + private String hatCode; + private String hatId; + private String heartRate; + private String lat; + private String lng; + private String location; + private String o2; + private String signal; + private String time; + private String vastCode; + private String workerId; + private String workerName; - public void setGender(String gender) { - this.gender = gender; - } + public boolean getAlarmFlag() { + return alarmFlag; + } - public String getGenderName() { - return genderName; - } + public void setAlarmFlag(boolean alarmFlag) { + this.alarmFlag = alarmFlag; + } - public void setGenderName(String genderName) { - this.genderName = genderName; - } + public String getBloodOxygen() { + return bloodOxygen; + } - public String getId() { - return id; - } + public void setBloodOxygen(String bloodOxygen) { + this.bloodOxygen = bloodOxygen; + } - public void setId(String id) { - this.id = id; - } + public String getBraceletCode() { + return braceletCode; + } - public String getIdCardNumber() { - return idCardNumber; - } + public void setBraceletCode(String braceletCode) { + this.braceletCode = braceletCode; + } - public void setIdCardNumber(String idCardNumber) { - this.idCardNumber = idCardNumber; - } + public String getCell() { + return cell; + } - public String getIsRegister() { - return isRegister; - } + public void setCell(String cell) { + this.cell = cell; + } - public void setIsRegister(String isRegister) { - this.isRegister = isRegister; - } + public String getCo() { + return co; + } - public String getOwnerShip() { - return ownerShip; - } + public void setCo(String co) { + this.co = co; + } - public void setOwnerShip(String ownerShip) { - this.ownerShip = ownerShip; - } + public String getGas() { + return gas; + } - public String getPhoneNumber() { - return phoneNumber; - } + public void setGas(String gas) { + this.gas = gas; + } - public void setPhoneNumber(String phoneNumber) { - this.phoneNumber = phoneNumber; - } + public String getH2s() { + return h2s; + } - public String getRegisterTime() { - return registerTime; - } + public void setH2s(String h2s) { + this.h2s = h2s; + } - public void setRegisterTime(String registerTime) { - this.registerTime = registerTime; - } + public String getHatCode() { + return hatCode; + } - public String getStatus() { - return status; - } + public void setHatCode(String hatCode) { + this.hatCode = hatCode; + } - public void setStatus(String status) { - this.status = status; - } + public String getHatId() { + return hatId; + } - public String getStatusName() { - return statusName; - } + public void setHatId(String hatId) { + this.hatId = hatId; + } - public void setStatusName(String statusName) { - this.statusName = statusName; - } + public String getHeartRate() { + return heartRate; + } - public String getWorkerAvatar() { - return workerAvatar; - } + public void setHeartRate(String heartRate) { + this.heartRate = heartRate; + } - public void setWorkerAvatar(String workerAvatar) { - this.workerAvatar = workerAvatar; - } + public String getLat() { + return lat; + } - public String getWorkerName() { - return workerName; - } + public void setLat(String lat) { + this.lat = lat; + } - public void setWorkerName(String workerName) { - this.workerName = workerName; - } + public String getLng() { + return lng; + } - public String getWorkerType() { - return workerType; - } + public void setLng(String lng) { + this.lng = lng; + } - public void setWorkerType(String workerType) { - this.workerType = workerType; + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getO2() { + return o2; + } + + public void setO2(String o2) { + this.o2 = o2; + } + + public String getSignal() { + return signal; + } + + public void setSignal(String signal) { + this.signal = signal; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + + public String getVastCode() { + return vastCode; + } + + public void setVastCode(String vastCode) { + this.vastCode = vastCode; + } + + public String getWorkerId() { + return workerId; + } + + public void setWorkerId(String workerId) { + this.workerId = workerId; + } + + public String getWorkerName() { + return workerName; + } + + public void setWorkerName(String workerName) { + this.workerName = workerName; + } } } diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index a067771..e11181c 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -63,6 +63,15 @@ ): String /** + * 获取工作区域作业人员 + */ + @GET("/overview/workerList") + suspend fun getWorkers( + @Header("token") token: String, + @Query("projectId") projectId: String + ): String + + /** * 设备分页列表 */ @GET("/device/listPage") diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 64942bc..9e12431 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -76,6 +76,13 @@ } /** + * 获取工作区域作业人员 + */ + suspend fun getWorkers(projectId: String): String { + return api.getWorkers(AuthenticationHelper.token!!, projectId) + } + + /** * 设备分页列表 */ suspend fun getDeviceList( diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 8b3a4aa..a772c94 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -2,16 +2,18 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.CameraPosition -import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.PolygonOptions +import com.amap.api.maps.model.* import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.model.DeviceConfigModel +import com.casic.br.operationsite.model.WorkerModel import com.casic.br.operationsite.utils.DeviceType import com.casic.br.operationsite.utils.LoadingDialogHub import com.casic.br.operationsite.utils.RuntimeCache @@ -28,14 +30,22 @@ import kotlinx.android.synthetic.main.include_base_title.* -class WorkSiteTabActivity : KotlinBaseActivity() { +class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMarkerClickListener, + AMap.InfoWindowAdapter { + private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var deviceViewModel: DeviceViewModel private lateinit var projectId: String private val polygonOptions by lazy { PolygonOptions() } private val latlngs: MutableList = ArrayList() + private val workers: MutableList = ArrayList() + + /** + * 自定义Marker弹出框 + * */ + private var infoWindow: View? = null override fun initLayoutView(): Int = R.layout.activity_site_tab @@ -61,6 +71,10 @@ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 uiSettings.isRotateGesturesEnabled = false//不允许地图旋转 + // marker 点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) /** * 数据初始化 @@ -109,8 +123,8 @@ } } - deviceViewModel.getWorkSiteArea(projectId) - deviceViewModel.workSiteAreaResult.observe(this) { + workSiteViewModel.getWorkSiteArea(projectId) + workSiteViewModel.workSiteAreaResult.observe(this) { if (it.code == 200) { val latitudeList: MutableList = ArrayList() val longitudeList: MutableList = ArrayList() @@ -134,8 +148,63 @@ ) } } + + workSiteViewModel.getWorkers(projectId) + workSiteViewModel.workerResult.observe(this) { + if (it.code == 200) { + it.data.forEach { worker -> + workers.add(worker) + aMap.addMarker( + MarkerOptions() + .position(LatLng(worker.lat.toDouble(), worker.lng.toDouble())) + .title(worker.workerId) + .icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap + ) + ) + ) + } + } + } } + override fun onMarkerClick(marker: Marker?): Boolean { + //显示闸井信息 + marker?.showInfoWindow() + return true + } + + override fun getInfoWindow(marker: Marker?): View? { + if (infoWindow == null) { + infoWindow = LayoutInflater.from(this).inflate(R.layout.popu_worker_info, null) + } + val v = infoWindow!! + //反射得到popup里面的控件对象 + val workerNameView = v.findViewById(R.id.workerNameView) + val workerIdView = v.findViewById(R.id.workerIdView) + val heartRateView = v.findViewById(R.id.heartRateView) + val bloodOxygenView = v.findViewById(R.id.bloodOxygenView) + val timeView = v.findViewById(R.id.timeView) + + val workerId = marker?.options?.title + workers.forEach { + if (it.workerId == workerId) { + workerNameView.text = "名称:${it.workerName}" + workerIdView.text = "ID:${it.workerId}" + heartRateView.text = "心率:${it.heartRate}次/min" + bloodOxygenView.text = "血氧浓度:${it.bloodOxygen}%" + timeView.text = "时间:${it.time}" + } + } + return infoWindow + } + + /** + * 此方法不能修改整个 InfoWindow 的背景和边框,无论自定义的样式是什么样,SDK 都会在最外层添加一个默认的边框 + * */ + override fun getInfoContents(p0: Marker?): View? = null + override fun observeRequestState() { workSiteViewModel.loadState.observe(this) { when (it) { diff --git a/app/src/main/java/com/casic/br/operationsite/vm/DetailViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/DetailViewModel.kt deleted file mode 100644 index 56aa8d9..0000000 --- a/app/src/main/java/com/casic/br/operationsite/vm/DetailViewModel.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.casic.br.operationsite.vm - -import androidx.lifecycle.MutableLiveData -import com.casic.br.operationsite.model.DetailModel -import com.google.gson.Gson -import com.pengxh.kt.lite.vm.BaseViewModel - -class DetailViewModel : BaseViewModel() { - - private val gson = Gson() - val detailModel = MutableLiveData() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt index a05134b..cc73dd7 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt @@ -7,7 +7,6 @@ import com.casic.br.operationsite.model.CommonResultModel import com.casic.br.operationsite.model.DeviceListModel import com.casic.br.operationsite.model.MethaneThresholdModel -import com.casic.br.operationsite.model.WorkSiteAreaModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -22,7 +21,6 @@ val deviceModels = MutableLiveData() val setThresholdResult = MutableLiveData() val thresholdResult = MutableLiveData() - val workSiteAreaResult = MutableLiveData() fun getDeviceList( deviceCode: String, deviceType: String, projectId: String, status: String, page: Int @@ -84,23 +82,4 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) - - fun getWorkSiteArea(projectId: String) = launch({ - loadState.value = LoadState.Loading - val response = RetrofitServiceManager.getWorkSiteArea(projectId) - val responseCode = response.separateResponseCode() - if (responseCode == 200) { - workSiteAreaResult.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - loadState.value = LoadState.Success - } else { - loadState.value = LoadState.Fail - response.toErrorMessage().show(BaseApplication.get()) - } - }, { - loadState.value = LoadState.Fail - it.cause.toString().show(BaseApplication.get()) - it.printStackTrace() - }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt index 4d574e4..b24817d 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt @@ -4,8 +4,10 @@ import com.casic.br.operationsite.base.BaseApplication import com.casic.br.operationsite.extensions.separateResponseCode import com.casic.br.operationsite.extensions.toErrorMessage +import com.casic.br.operationsite.model.WorkSiteAreaModel import com.casic.br.operationsite.model.WorkSiteDetailModel import com.casic.br.operationsite.model.WorkSiteListModel +import com.casic.br.operationsite.model.WorkerModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -22,6 +24,8 @@ private val gson = Gson() val worksiteModel = MutableLiveData() val detailModel = MutableLiveData() + val workSiteAreaResult = MutableLiveData() + val workerResult = MutableLiveData() fun obtainProjectListByPage(keywords: String, state: String, page: Int) = launch({ val response = RetrofitServiceManager.obtainProjectListByPage(keywords, state, page) @@ -57,4 +61,42 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getWorkSiteArea(projectId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getWorkSiteArea(projectId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + workSiteAreaResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getWorkers(projectId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getWorkers(projectId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + workerResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_transparent_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_transparent_radius_7.xml new file mode 100644 index 0000000..8b940d2 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_transparent_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/popu_worker_info.xml b/app/src/main/res/layout/popu_worker_info.xml new file mode 100644 index 0000000..bf898b9 --- /dev/null +++ b/app/src/main/res/layout/popu_worker_info.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java deleted file mode 100644 index 791f9eb..0000000 --- a/app/src/main/java/com/casic/br/operationsite/model/DetailModel.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.casic.br.operationsite.model; - -public class DetailModel { -} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java index 0255754..034a92f 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkerModel.java @@ -1,158 +1,217 @@ package com.casic.br.operationsite.model; +import java.util.List; + public class WorkerModel { - private String createTime; - private String deptId; - private String deptName; - private String enterReason; - private String gender; - private String genderName; - private String id; - private String idCardNumber; - private String isRegister; - private String ownerShip; - private String phoneNumber; - private String registerTime; - private String status; - private String statusName; - private String workerAvatar; - private String workerName; - private String workerType; + private int code; + private List data; + private String message; + private boolean success; - public String getCreateTime() { - return createTime; + public int getCode() { + return code; } - public void setCreateTime(String createTime) { - this.createTime = createTime; + public void setCode(int code) { + this.code = code; } - public String getDeptId() { - return deptId; + public List getData() { + return data; } - public void setDeptId(String deptId) { - this.deptId = deptId; + public void setData(List data) { + this.data = data; } - public String getDeptName() { - return deptName; + public String getMessage() { + return message; } - public void setDeptName(String deptName) { - this.deptName = deptName; + public void setMessage(String message) { + this.message = message; } - public String getEnterReason() { - return enterReason; + public boolean getSuccess() { + return success; } - public void setEnterReason(String enterReason) { - this.enterReason = enterReason; + public void setSuccess(boolean success) { + this.success = success; } - public String getGender() { - return gender; - } + public static class DataModel { + private boolean alarmFlag; + private String bloodOxygen; + private String braceletCode; + private String cell; + private String co; + private String gas; + private String h2s; + private String hatCode; + private String hatId; + private String heartRate; + private String lat; + private String lng; + private String location; + private String o2; + private String signal; + private String time; + private String vastCode; + private String workerId; + private String workerName; - public void setGender(String gender) { - this.gender = gender; - } + public boolean getAlarmFlag() { + return alarmFlag; + } - public String getGenderName() { - return genderName; - } + public void setAlarmFlag(boolean alarmFlag) { + this.alarmFlag = alarmFlag; + } - public void setGenderName(String genderName) { - this.genderName = genderName; - } + public String getBloodOxygen() { + return bloodOxygen; + } - public String getId() { - return id; - } + public void setBloodOxygen(String bloodOxygen) { + this.bloodOxygen = bloodOxygen; + } - public void setId(String id) { - this.id = id; - } + public String getBraceletCode() { + return braceletCode; + } - public String getIdCardNumber() { - return idCardNumber; - } + public void setBraceletCode(String braceletCode) { + this.braceletCode = braceletCode; + } - public void setIdCardNumber(String idCardNumber) { - this.idCardNumber = idCardNumber; - } + public String getCell() { + return cell; + } - public String getIsRegister() { - return isRegister; - } + public void setCell(String cell) { + this.cell = cell; + } - public void setIsRegister(String isRegister) { - this.isRegister = isRegister; - } + public String getCo() { + return co; + } - public String getOwnerShip() { - return ownerShip; - } + public void setCo(String co) { + this.co = co; + } - public void setOwnerShip(String ownerShip) { - this.ownerShip = ownerShip; - } + public String getGas() { + return gas; + } - public String getPhoneNumber() { - return phoneNumber; - } + public void setGas(String gas) { + this.gas = gas; + } - public void setPhoneNumber(String phoneNumber) { - this.phoneNumber = phoneNumber; - } + public String getH2s() { + return h2s; + } - public String getRegisterTime() { - return registerTime; - } + public void setH2s(String h2s) { + this.h2s = h2s; + } - public void setRegisterTime(String registerTime) { - this.registerTime = registerTime; - } + public String getHatCode() { + return hatCode; + } - public String getStatus() { - return status; - } + public void setHatCode(String hatCode) { + this.hatCode = hatCode; + } - public void setStatus(String status) { - this.status = status; - } + public String getHatId() { + return hatId; + } - public String getStatusName() { - return statusName; - } + public void setHatId(String hatId) { + this.hatId = hatId; + } - public void setStatusName(String statusName) { - this.statusName = statusName; - } + public String getHeartRate() { + return heartRate; + } - public String getWorkerAvatar() { - return workerAvatar; - } + public void setHeartRate(String heartRate) { + this.heartRate = heartRate; + } - public void setWorkerAvatar(String workerAvatar) { - this.workerAvatar = workerAvatar; - } + public String getLat() { + return lat; + } - public String getWorkerName() { - return workerName; - } + public void setLat(String lat) { + this.lat = lat; + } - public void setWorkerName(String workerName) { - this.workerName = workerName; - } + public String getLng() { + return lng; + } - public String getWorkerType() { - return workerType; - } + public void setLng(String lng) { + this.lng = lng; + } - public void setWorkerType(String workerType) { - this.workerType = workerType; + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getO2() { + return o2; + } + + public void setO2(String o2) { + this.o2 = o2; + } + + public String getSignal() { + return signal; + } + + public void setSignal(String signal) { + this.signal = signal; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + + public String getVastCode() { + return vastCode; + } + + public void setVastCode(String vastCode) { + this.vastCode = vastCode; + } + + public String getWorkerId() { + return workerId; + } + + public void setWorkerId(String workerId) { + this.workerId = workerId; + } + + public String getWorkerName() { + return workerName; + } + + public void setWorkerName(String workerName) { + this.workerName = workerName; + } } } diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index a067771..e11181c 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -63,6 +63,15 @@ ): String /** + * 获取工作区域作业人员 + */ + @GET("/overview/workerList") + suspend fun getWorkers( + @Header("token") token: String, + @Query("projectId") projectId: String + ): String + + /** * 设备分页列表 */ @GET("/device/listPage") diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 64942bc..9e12431 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -76,6 +76,13 @@ } /** + * 获取工作区域作业人员 + */ + suspend fun getWorkers(projectId: String): String { + return api.getWorkers(AuthenticationHelper.token!!, projectId) + } + + /** * 设备分页列表 */ suspend fun getDeviceList( diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 8b3a4aa..a772c94 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -2,16 +2,18 @@ import android.graphics.Color import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.widget.TextView import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.CameraPosition -import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.PolygonOptions +import com.amap.api.maps.model.* import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.initLayoutImmersionBar import com.casic.br.operationsite.model.DeviceConfigModel +import com.casic.br.operationsite.model.WorkerModel import com.casic.br.operationsite.utils.DeviceType import com.casic.br.operationsite.utils.LoadingDialogHub import com.casic.br.operationsite.utils.RuntimeCache @@ -28,14 +30,22 @@ import kotlinx.android.synthetic.main.include_base_title.* -class WorkSiteTabActivity : KotlinBaseActivity() { +class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMarkerClickListener, + AMap.InfoWindowAdapter { + private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var deviceViewModel: DeviceViewModel private lateinit var projectId: String private val polygonOptions by lazy { PolygonOptions() } private val latlngs: MutableList = ArrayList() + private val workers: MutableList = ArrayList() + + /** + * 自定义Marker弹出框 + * */ + private var infoWindow: View? = null override fun initLayoutView(): Int = R.layout.activity_site_tab @@ -61,6 +71,10 @@ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 uiSettings.isRotateGesturesEnabled = false//不允许地图旋转 + // marker 点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) /** * 数据初始化 @@ -109,8 +123,8 @@ } } - deviceViewModel.getWorkSiteArea(projectId) - deviceViewModel.workSiteAreaResult.observe(this) { + workSiteViewModel.getWorkSiteArea(projectId) + workSiteViewModel.workSiteAreaResult.observe(this) { if (it.code == 200) { val latitudeList: MutableList = ArrayList() val longitudeList: MutableList = ArrayList() @@ -134,8 +148,63 @@ ) } } + + workSiteViewModel.getWorkers(projectId) + workSiteViewModel.workerResult.observe(this) { + if (it.code == 200) { + it.data.forEach { worker -> + workers.add(worker) + aMap.addMarker( + MarkerOptions() + .position(LatLng(worker.lat.toDouble(), worker.lng.toDouble())) + .title(worker.workerId) + .icon( + BitmapDescriptorFactory.fromBitmap( + BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap + ) + ) + ) + } + } + } } + override fun onMarkerClick(marker: Marker?): Boolean { + //显示闸井信息 + marker?.showInfoWindow() + return true + } + + override fun getInfoWindow(marker: Marker?): View? { + if (infoWindow == null) { + infoWindow = LayoutInflater.from(this).inflate(R.layout.popu_worker_info, null) + } + val v = infoWindow!! + //反射得到popup里面的控件对象 + val workerNameView = v.findViewById(R.id.workerNameView) + val workerIdView = v.findViewById(R.id.workerIdView) + val heartRateView = v.findViewById(R.id.heartRateView) + val bloodOxygenView = v.findViewById(R.id.bloodOxygenView) + val timeView = v.findViewById(R.id.timeView) + + val workerId = marker?.options?.title + workers.forEach { + if (it.workerId == workerId) { + workerNameView.text = "名称:${it.workerName}" + workerIdView.text = "ID:${it.workerId}" + heartRateView.text = "心率:${it.heartRate}次/min" + bloodOxygenView.text = "血氧浓度:${it.bloodOxygen}%" + timeView.text = "时间:${it.time}" + } + } + return infoWindow + } + + /** + * 此方法不能修改整个 InfoWindow 的背景和边框,无论自定义的样式是什么样,SDK 都会在最外层添加一个默认的边框 + * */ + override fun getInfoContents(p0: Marker?): View? = null + override fun observeRequestState() { workSiteViewModel.loadState.observe(this) { when (it) { diff --git a/app/src/main/java/com/casic/br/operationsite/vm/DetailViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/DetailViewModel.kt deleted file mode 100644 index 56aa8d9..0000000 --- a/app/src/main/java/com/casic/br/operationsite/vm/DetailViewModel.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.casic.br.operationsite.vm - -import androidx.lifecycle.MutableLiveData -import com.casic.br.operationsite.model.DetailModel -import com.google.gson.Gson -import com.pengxh.kt.lite.vm.BaseViewModel - -class DetailViewModel : BaseViewModel() { - - private val gson = Gson() - val detailModel = MutableLiveData() -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt index a05134b..cc73dd7 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt @@ -7,7 +7,6 @@ import com.casic.br.operationsite.model.CommonResultModel import com.casic.br.operationsite.model.DeviceListModel import com.casic.br.operationsite.model.MethaneThresholdModel -import com.casic.br.operationsite.model.WorkSiteAreaModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -22,7 +21,6 @@ val deviceModels = MutableLiveData() val setThresholdResult = MutableLiveData() val thresholdResult = MutableLiveData() - val workSiteAreaResult = MutableLiveData() fun getDeviceList( deviceCode: String, deviceType: String, projectId: String, status: String, page: Int @@ -84,23 +82,4 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) - - fun getWorkSiteArea(projectId: String) = launch({ - loadState.value = LoadState.Loading - val response = RetrofitServiceManager.getWorkSiteArea(projectId) - val responseCode = response.separateResponseCode() - if (responseCode == 200) { - workSiteAreaResult.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - loadState.value = LoadState.Success - } else { - loadState.value = LoadState.Fail - response.toErrorMessage().show(BaseApplication.get()) - } - }, { - loadState.value = LoadState.Fail - it.cause.toString().show(BaseApplication.get()) - it.printStackTrace() - }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt index 4d574e4..b24817d 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt @@ -4,8 +4,10 @@ import com.casic.br.operationsite.base.BaseApplication import com.casic.br.operationsite.extensions.separateResponseCode import com.casic.br.operationsite.extensions.toErrorMessage +import com.casic.br.operationsite.model.WorkSiteAreaModel import com.casic.br.operationsite.model.WorkSiteDetailModel import com.casic.br.operationsite.model.WorkSiteListModel +import com.casic.br.operationsite.model.WorkerModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -22,6 +24,8 @@ private val gson = Gson() val worksiteModel = MutableLiveData() val detailModel = MutableLiveData() + val workSiteAreaResult = MutableLiveData() + val workerResult = MutableLiveData() fun obtainProjectListByPage(keywords: String, state: String, page: Int) = launch({ val response = RetrofitServiceManager.obtainProjectListByPage(keywords, state, page) @@ -57,4 +61,42 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getWorkSiteArea(projectId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getWorkSiteArea(projectId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + workSiteAreaResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun getWorkers(projectId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getWorkers(projectId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + workerResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_layout_transparent_radius_7.xml b/app/src/main/res/drawable/bg_solid_layout_transparent_radius_7.xml new file mode 100644 index 0000000..8b940d2 --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_layout_transparent_radius_7.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/popu_worker_info.xml b/app/src/main/res/layout/popu_worker_info.xml new file mode 100644 index 0000000..bf898b9 --- /dev/null +++ b/app/src/main/res/layout/popu_worker_info.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index ecdfe92..338552f 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -112,6 +112,15 @@ @dimen/dp_5 + +