diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt index 97e6234..d9c9b86 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt @@ -28,10 +28,7 @@ import com.casic.smarttube.vm.ProjectGroupViewModel import com.casic.smarttube.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.widget.EasyPopupWindow import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_home.view.* @@ -45,7 +42,6 @@ private lateinit var deviceViewModel: DeviceViewModel private lateinit var groupViewModel: ProjectGroupViewModel private lateinit var groupListAdapter: GroupListAdapter - private var dataBeans: MutableList = ArrayList() /** * 所有的marker @@ -92,9 +88,16 @@ //代码设置底部拉升距离 val bottomSheetBehavior = BottomSheetBehavior.from(homeView.bottomBehaviorLayout) homeView.coordinatorLayout.post { +// bottomSheetBehavior.isFitToContents = false +// bottomSheetBehavior.peekHeight = 30f.dp2px(requireContext()) +// bottomSheetBehavior.isHideable = false bottomSheetBehavior.isFitToContents = false - bottomSheetBehavior.peekHeight = 30f.dp2px(requireContext()) + bottomSheetBehavior.halfExpandedRatio = 0.33f bottomSheetBehavior.isHideable = false + bottomSheetBehavior.peekHeight = 30f.dp2px(requireContext()) + bottomSheetBehavior.setExpandedOffset( + (requireContext().obtainScreenHeight() * 0.3).toInt() + ) } //初始化vm @@ -196,7 +199,37 @@ groupListAdapter.setOnItemClickListener(object : GroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 - + groupViewModel.obtainDeviceListByGroup(dataBeans[position].groupId) + } + }) + groupViewModel.groupDeviceModel.observe(this, { + if (it.code == 200) { + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + it.data.forEach { device -> + val lat = device.latGaode.toString() + val lng = device.lngGaode.toString() + if (lat.isNotBlank() && lng.isNotBlank()) { + //返回true代表当前位置在大陆、港澳地区,反之不在 + val latitude = lat.toDouble() + val longitude = lng.toDouble() + if (CoordinateConverter.isAMapDataAvailable(latitude, longitude)) { + //分别缓存经、纬度 + latitudeList.add(latitude) + longitudeList.add(longitude) + } else { + Log.d(kTag, "${device.wellCode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") + } + } else { + Log.d(kTag, "${device.wellCode}闸井经纬度异常,异常经纬度 ===> [${lng},${lat}]") + } + } + //计算所有点的中心点位置 + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, 10f, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate) } }) } diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt index 97e6234..d9c9b86 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt @@ -28,10 +28,7 @@ import com.casic.smarttube.vm.ProjectGroupViewModel import com.casic.smarttube.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.widget.EasyPopupWindow import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_home.view.* @@ -45,7 +42,6 @@ private lateinit var deviceViewModel: DeviceViewModel private lateinit var groupViewModel: ProjectGroupViewModel private lateinit var groupListAdapter: GroupListAdapter - private var dataBeans: MutableList = ArrayList() /** * 所有的marker @@ -92,9 +88,16 @@ //代码设置底部拉升距离 val bottomSheetBehavior = BottomSheetBehavior.from(homeView.bottomBehaviorLayout) homeView.coordinatorLayout.post { +// bottomSheetBehavior.isFitToContents = false +// bottomSheetBehavior.peekHeight = 30f.dp2px(requireContext()) +// bottomSheetBehavior.isHideable = false bottomSheetBehavior.isFitToContents = false - bottomSheetBehavior.peekHeight = 30f.dp2px(requireContext()) + bottomSheetBehavior.halfExpandedRatio = 0.33f bottomSheetBehavior.isHideable = false + bottomSheetBehavior.peekHeight = 30f.dp2px(requireContext()) + bottomSheetBehavior.setExpandedOffset( + (requireContext().obtainScreenHeight() * 0.3).toInt() + ) } //初始化vm @@ -196,7 +199,37 @@ groupListAdapter.setOnItemClickListener(object : GroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 - + groupViewModel.obtainDeviceListByGroup(dataBeans[position].groupId) + } + }) + groupViewModel.groupDeviceModel.observe(this, { + if (it.code == 200) { + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + it.data.forEach { device -> + val lat = device.latGaode.toString() + val lng = device.lngGaode.toString() + if (lat.isNotBlank() && lng.isNotBlank()) { + //返回true代表当前位置在大陆、港澳地区,反之不在 + val latitude = lat.toDouble() + val longitude = lng.toDouble() + if (CoordinateConverter.isAMapDataAvailable(latitude, longitude)) { + //分别缓存经、纬度 + latitudeList.add(latitude) + longitudeList.add(longitude) + } else { + Log.d(kTag, "${device.wellCode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") + } + } else { + Log.d(kTag, "${device.wellCode}闸井经纬度异常,异常经纬度 ===> [${lng},${lat}]") + } + } + //计算所有点的中心点位置 + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, 10f, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate) } }) } diff --git a/app/src/main/java/com/casic/smarttube/model/GroupDeviceModel.java b/app/src/main/java/com/casic/smarttube/model/GroupDeviceModel.java new file mode 100644 index 0000000..6687d43 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/model/GroupDeviceModel.java @@ -0,0 +1,208 @@ +package com.casic.smarttube.model; + +import java.util.List; + +public class GroupDeviceModel { + + private int code; + private List data; + private String message; + private String success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public String getSuccess() { + return success; + } + + public void setSuccess(String success) { + this.success = success; + } + + public static class DataBean { + private String area; + private int deep; + private String responsibleDept; + private String strength; + private String wellCode; + private String groupId; + private String deptid; + private String staff; + private String photos; + private String wellType; + private String valid; + private String bfzt; + private String lngGaode; + private String latGaode; + private String wellName; + private String tel; + private String position; + private String data_tube_id; + + public String getArea() { + return area; + } + + public void setArea(String area) { + this.area = area; + } + + public int getDeep() { + return deep; + } + + public void setDeep(int deep) { + this.deep = deep; + } + + public String getResponsibleDept() { + return responsibleDept; + } + + public void setResponsibleDept(String responsibleDept) { + this.responsibleDept = responsibleDept; + } + + public String getStrength() { + return strength; + } + + public void setStrength(String strength) { + this.strength = strength; + } + + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } + + public String getGroupId() { + return groupId; + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + public String getDeptid() { + return deptid; + } + + public void setDeptid(String deptid) { + this.deptid = deptid; + } + + public String getStaff() { + return staff; + } + + public void setStaff(String staff) { + this.staff = staff; + } + + public String getPhotos() { + return photos; + } + + public void setPhotos(String photos) { + this.photos = photos; + } + + public String getWellType() { + return wellType; + } + + public void setWellType(String wellType) { + this.wellType = wellType; + } + + public String getValid() { + return valid; + } + + public void setValid(String valid) { + this.valid = valid; + } + + public String getBfzt() { + return bfzt; + } + + public void setBfzt(String bfzt) { + this.bfzt = bfzt; + } + + public String getLngGaode() { + return lngGaode; + } + + public void setLngGaode(String lngGaode) { + this.lngGaode = lngGaode; + } + + public String getLatGaode() { + return latGaode; + } + + public void setLatGaode(String latGaode) { + this.latGaode = latGaode; + } + + public String getWellName() { + return wellName; + } + + public void setWellName(String wellName) { + this.wellName = wellName; + } + + public String getTel() { + return tel; + } + + public void setTel(String tel) { + this.tel = tel; + } + + public String getPosition() { + return position; + } + + public void setPosition(String position) { + this.position = position; + } + + public String getData_tube_id() { + return data_tube_id; + } + + public void setData_tube_id(String data_tube_id) { + this.data_tube_id = data_tube_id; + } + } +} diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt index 97e6234..d9c9b86 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt @@ -28,10 +28,7 @@ import com.casic.smarttube.vm.ProjectGroupViewModel import com.casic.smarttube.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.widget.EasyPopupWindow import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_home.view.* @@ -45,7 +42,6 @@ private lateinit var deviceViewModel: DeviceViewModel private lateinit var groupViewModel: ProjectGroupViewModel private lateinit var groupListAdapter: GroupListAdapter - private var dataBeans: MutableList = ArrayList() /** * 所有的marker @@ -92,9 +88,16 @@ //代码设置底部拉升距离 val bottomSheetBehavior = BottomSheetBehavior.from(homeView.bottomBehaviorLayout) homeView.coordinatorLayout.post { +// bottomSheetBehavior.isFitToContents = false +// bottomSheetBehavior.peekHeight = 30f.dp2px(requireContext()) +// bottomSheetBehavior.isHideable = false bottomSheetBehavior.isFitToContents = false - bottomSheetBehavior.peekHeight = 30f.dp2px(requireContext()) + bottomSheetBehavior.halfExpandedRatio = 0.33f bottomSheetBehavior.isHideable = false + bottomSheetBehavior.peekHeight = 30f.dp2px(requireContext()) + bottomSheetBehavior.setExpandedOffset( + (requireContext().obtainScreenHeight() * 0.3).toInt() + ) } //初始化vm @@ -196,7 +199,37 @@ groupListAdapter.setOnItemClickListener(object : GroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 - + groupViewModel.obtainDeviceListByGroup(dataBeans[position].groupId) + } + }) + groupViewModel.groupDeviceModel.observe(this, { + if (it.code == 200) { + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + it.data.forEach { device -> + val lat = device.latGaode.toString() + val lng = device.lngGaode.toString() + if (lat.isNotBlank() && lng.isNotBlank()) { + //返回true代表当前位置在大陆、港澳地区,反之不在 + val latitude = lat.toDouble() + val longitude = lng.toDouble() + if (CoordinateConverter.isAMapDataAvailable(latitude, longitude)) { + //分别缓存经、纬度 + latitudeList.add(latitude) + longitudeList.add(longitude) + } else { + Log.d(kTag, "${device.wellCode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") + } + } else { + Log.d(kTag, "${device.wellCode}闸井经纬度异常,异常经纬度 ===> [${lng},${lat}]") + } + } + //计算所有点的中心点位置 + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, 10f, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate) } }) } diff --git a/app/src/main/java/com/casic/smarttube/model/GroupDeviceModel.java b/app/src/main/java/com/casic/smarttube/model/GroupDeviceModel.java new file mode 100644 index 0000000..6687d43 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/model/GroupDeviceModel.java @@ -0,0 +1,208 @@ +package com.casic.smarttube.model; + +import java.util.List; + +public class GroupDeviceModel { + + private int code; + private List data; + private String message; + private String success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public String getSuccess() { + return success; + } + + public void setSuccess(String success) { + this.success = success; + } + + public static class DataBean { + private String area; + private int deep; + private String responsibleDept; + private String strength; + private String wellCode; + private String groupId; + private String deptid; + private String staff; + private String photos; + private String wellType; + private String valid; + private String bfzt; + private String lngGaode; + private String latGaode; + private String wellName; + private String tel; + private String position; + private String data_tube_id; + + public String getArea() { + return area; + } + + public void setArea(String area) { + this.area = area; + } + + public int getDeep() { + return deep; + } + + public void setDeep(int deep) { + this.deep = deep; + } + + public String getResponsibleDept() { + return responsibleDept; + } + + public void setResponsibleDept(String responsibleDept) { + this.responsibleDept = responsibleDept; + } + + public String getStrength() { + return strength; + } + + public void setStrength(String strength) { + this.strength = strength; + } + + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } + + public String getGroupId() { + return groupId; + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + public String getDeptid() { + return deptid; + } + + public void setDeptid(String deptid) { + this.deptid = deptid; + } + + public String getStaff() { + return staff; + } + + public void setStaff(String staff) { + this.staff = staff; + } + + public String getPhotos() { + return photos; + } + + public void setPhotos(String photos) { + this.photos = photos; + } + + public String getWellType() { + return wellType; + } + + public void setWellType(String wellType) { + this.wellType = wellType; + } + + public String getValid() { + return valid; + } + + public void setValid(String valid) { + this.valid = valid; + } + + public String getBfzt() { + return bfzt; + } + + public void setBfzt(String bfzt) { + this.bfzt = bfzt; + } + + public String getLngGaode() { + return lngGaode; + } + + public void setLngGaode(String lngGaode) { + this.lngGaode = lngGaode; + } + + public String getLatGaode() { + return latGaode; + } + + public void setLatGaode(String latGaode) { + this.latGaode = latGaode; + } + + public String getWellName() { + return wellName; + } + + public void setWellName(String wellName) { + this.wellName = wellName; + } + + public String getTel() { + return tel; + } + + public void setTel(String tel) { + this.tel = tel; + } + + public String getPosition() { + return position; + } + + public void setPosition(String position) { + this.position = position; + } + + public String getData_tube_id() { + return data_tube_id; + } + + public void setData_tube_id(String data_tube_id) { + this.data_tube_id = data_tube_id; + } + } +} diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt index 2affba5..4908afb 100644 --- a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt @@ -41,8 +41,8 @@ * ============================================================================================= * */ const val USER_DETAIL_MODEL = "userDetailModel" - const val SERVER_BASE_URL = "http://192.168.43.19:11643" -// const val SERVER_BASE_URL = "http://111.198.10.15:11304" +// const val SERVER_BASE_URL = "http://192.168.43.19:11643" + const val SERVER_BASE_URL = "http://111.198.10.15:11304" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt index 97e6234..d9c9b86 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt @@ -28,10 +28,7 @@ import com.casic.smarttube.vm.ProjectGroupViewModel import com.casic.smarttube.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.widget.EasyPopupWindow import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_home.view.* @@ -45,7 +42,6 @@ private lateinit var deviceViewModel: DeviceViewModel private lateinit var groupViewModel: ProjectGroupViewModel private lateinit var groupListAdapter: GroupListAdapter - private var dataBeans: MutableList = ArrayList() /** * 所有的marker @@ -92,9 +88,16 @@ //代码设置底部拉升距离 val bottomSheetBehavior = BottomSheetBehavior.from(homeView.bottomBehaviorLayout) homeView.coordinatorLayout.post { +// bottomSheetBehavior.isFitToContents = false +// bottomSheetBehavior.peekHeight = 30f.dp2px(requireContext()) +// bottomSheetBehavior.isHideable = false bottomSheetBehavior.isFitToContents = false - bottomSheetBehavior.peekHeight = 30f.dp2px(requireContext()) + bottomSheetBehavior.halfExpandedRatio = 0.33f bottomSheetBehavior.isHideable = false + bottomSheetBehavior.peekHeight = 30f.dp2px(requireContext()) + bottomSheetBehavior.setExpandedOffset( + (requireContext().obtainScreenHeight() * 0.3).toInt() + ) } //初始化vm @@ -196,7 +199,37 @@ groupListAdapter.setOnItemClickListener(object : GroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 - + groupViewModel.obtainDeviceListByGroup(dataBeans[position].groupId) + } + }) + groupViewModel.groupDeviceModel.observe(this, { + if (it.code == 200) { + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + it.data.forEach { device -> + val lat = device.latGaode.toString() + val lng = device.lngGaode.toString() + if (lat.isNotBlank() && lng.isNotBlank()) { + //返回true代表当前位置在大陆、港澳地区,反之不在 + val latitude = lat.toDouble() + val longitude = lng.toDouble() + if (CoordinateConverter.isAMapDataAvailable(latitude, longitude)) { + //分别缓存经、纬度 + latitudeList.add(latitude) + longitudeList.add(longitude) + } else { + Log.d(kTag, "${device.wellCode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") + } + } else { + Log.d(kTag, "${device.wellCode}闸井经纬度异常,异常经纬度 ===> [${lng},${lat}]") + } + } + //计算所有点的中心点位置 + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, 10f, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate) } }) } diff --git a/app/src/main/java/com/casic/smarttube/model/GroupDeviceModel.java b/app/src/main/java/com/casic/smarttube/model/GroupDeviceModel.java new file mode 100644 index 0000000..6687d43 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/model/GroupDeviceModel.java @@ -0,0 +1,208 @@ +package com.casic.smarttube.model; + +import java.util.List; + +public class GroupDeviceModel { + + private int code; + private List data; + private String message; + private String success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public String getSuccess() { + return success; + } + + public void setSuccess(String success) { + this.success = success; + } + + public static class DataBean { + private String area; + private int deep; + private String responsibleDept; + private String strength; + private String wellCode; + private String groupId; + private String deptid; + private String staff; + private String photos; + private String wellType; + private String valid; + private String bfzt; + private String lngGaode; + private String latGaode; + private String wellName; + private String tel; + private String position; + private String data_tube_id; + + public String getArea() { + return area; + } + + public void setArea(String area) { + this.area = area; + } + + public int getDeep() { + return deep; + } + + public void setDeep(int deep) { + this.deep = deep; + } + + public String getResponsibleDept() { + return responsibleDept; + } + + public void setResponsibleDept(String responsibleDept) { + this.responsibleDept = responsibleDept; + } + + public String getStrength() { + return strength; + } + + public void setStrength(String strength) { + this.strength = strength; + } + + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } + + public String getGroupId() { + return groupId; + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + public String getDeptid() { + return deptid; + } + + public void setDeptid(String deptid) { + this.deptid = deptid; + } + + public String getStaff() { + return staff; + } + + public void setStaff(String staff) { + this.staff = staff; + } + + public String getPhotos() { + return photos; + } + + public void setPhotos(String photos) { + this.photos = photos; + } + + public String getWellType() { + return wellType; + } + + public void setWellType(String wellType) { + this.wellType = wellType; + } + + public String getValid() { + return valid; + } + + public void setValid(String valid) { + this.valid = valid; + } + + public String getBfzt() { + return bfzt; + } + + public void setBfzt(String bfzt) { + this.bfzt = bfzt; + } + + public String getLngGaode() { + return lngGaode; + } + + public void setLngGaode(String lngGaode) { + this.lngGaode = lngGaode; + } + + public String getLatGaode() { + return latGaode; + } + + public void setLatGaode(String latGaode) { + this.latGaode = latGaode; + } + + public String getWellName() { + return wellName; + } + + public void setWellName(String wellName) { + this.wellName = wellName; + } + + public String getTel() { + return tel; + } + + public void setTel(String tel) { + this.tel = tel; + } + + public String getPosition() { + return position; + } + + public void setPosition(String position) { + this.position = position; + } + + public String getData_tube_id() { + return data_tube_id; + } + + public void setData_tube_id(String data_tube_id) { + this.data_tube_id = data_tube_id; + } + } +} diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt index 2affba5..4908afb 100644 --- a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt @@ -41,8 +41,8 @@ * ============================================================================================= * */ const val USER_DETAIL_MODEL = "userDetailModel" - const val SERVER_BASE_URL = "http://192.168.43.19:11643" -// const val SERVER_BASE_URL = "http://111.198.10.15:11304" +// const val SERVER_BASE_URL = "http://192.168.43.19:11643" + const val SERVER_BASE_URL = "http://111.198.10.15:11304" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index 1a2057b..a60b113 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -67,22 +67,31 @@ /** * 更新APK版本 */ - @POST("/app/checkVersion") + @GET("/app/checkVersion") suspend fun obtainVersionResult(@Header("token") token: String): String /** * 地图设备列表 */ - @POST("/tube/well/list") + @GET("/tube/well/list") suspend fun obtainMapDeviceList(@Header("token") token: String): String /** * 项目列表 */ - @POST("/tube/group/list") + @GET("/tube/group/list") suspend fun obtainProGroupList(@Header("token") token: String): String /** + * 根据项目ID查询该项目下的设备列表 + */ + @GET("/tube/group/Info") + suspend fun obtainDeviceListByGroup( + @Header("token") token: String, + @Query("wellGroupId") wellGroupId: String + ): String + + /** * 获取管盯分页列表 * */ @GET("/device/list") diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt index 97e6234..d9c9b86 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt @@ -28,10 +28,7 @@ import com.casic.smarttube.vm.ProjectGroupViewModel import com.casic.smarttube.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.widget.EasyPopupWindow import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_home.view.* @@ -45,7 +42,6 @@ private lateinit var deviceViewModel: DeviceViewModel private lateinit var groupViewModel: ProjectGroupViewModel private lateinit var groupListAdapter: GroupListAdapter - private var dataBeans: MutableList = ArrayList() /** * 所有的marker @@ -92,9 +88,16 @@ //代码设置底部拉升距离 val bottomSheetBehavior = BottomSheetBehavior.from(homeView.bottomBehaviorLayout) homeView.coordinatorLayout.post { +// bottomSheetBehavior.isFitToContents = false +// bottomSheetBehavior.peekHeight = 30f.dp2px(requireContext()) +// bottomSheetBehavior.isHideable = false bottomSheetBehavior.isFitToContents = false - bottomSheetBehavior.peekHeight = 30f.dp2px(requireContext()) + bottomSheetBehavior.halfExpandedRatio = 0.33f bottomSheetBehavior.isHideable = false + bottomSheetBehavior.peekHeight = 30f.dp2px(requireContext()) + bottomSheetBehavior.setExpandedOffset( + (requireContext().obtainScreenHeight() * 0.3).toInt() + ) } //初始化vm @@ -196,7 +199,37 @@ groupListAdapter.setOnItemClickListener(object : GroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 - + groupViewModel.obtainDeviceListByGroup(dataBeans[position].groupId) + } + }) + groupViewModel.groupDeviceModel.observe(this, { + if (it.code == 200) { + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + it.data.forEach { device -> + val lat = device.latGaode.toString() + val lng = device.lngGaode.toString() + if (lat.isNotBlank() && lng.isNotBlank()) { + //返回true代表当前位置在大陆、港澳地区,反之不在 + val latitude = lat.toDouble() + val longitude = lng.toDouble() + if (CoordinateConverter.isAMapDataAvailable(latitude, longitude)) { + //分别缓存经、纬度 + latitudeList.add(latitude) + longitudeList.add(longitude) + } else { + Log.d(kTag, "${device.wellCode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") + } + } else { + Log.d(kTag, "${device.wellCode}闸井经纬度异常,异常经纬度 ===> [${lng},${lat}]") + } + } + //计算所有点的中心点位置 + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, 10f, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate) } }) } diff --git a/app/src/main/java/com/casic/smarttube/model/GroupDeviceModel.java b/app/src/main/java/com/casic/smarttube/model/GroupDeviceModel.java new file mode 100644 index 0000000..6687d43 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/model/GroupDeviceModel.java @@ -0,0 +1,208 @@ +package com.casic.smarttube.model; + +import java.util.List; + +public class GroupDeviceModel { + + private int code; + private List data; + private String message; + private String success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public String getSuccess() { + return success; + } + + public void setSuccess(String success) { + this.success = success; + } + + public static class DataBean { + private String area; + private int deep; + private String responsibleDept; + private String strength; + private String wellCode; + private String groupId; + private String deptid; + private String staff; + private String photos; + private String wellType; + private String valid; + private String bfzt; + private String lngGaode; + private String latGaode; + private String wellName; + private String tel; + private String position; + private String data_tube_id; + + public String getArea() { + return area; + } + + public void setArea(String area) { + this.area = area; + } + + public int getDeep() { + return deep; + } + + public void setDeep(int deep) { + this.deep = deep; + } + + public String getResponsibleDept() { + return responsibleDept; + } + + public void setResponsibleDept(String responsibleDept) { + this.responsibleDept = responsibleDept; + } + + public String getStrength() { + return strength; + } + + public void setStrength(String strength) { + this.strength = strength; + } + + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } + + public String getGroupId() { + return groupId; + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + public String getDeptid() { + return deptid; + } + + public void setDeptid(String deptid) { + this.deptid = deptid; + } + + public String getStaff() { + return staff; + } + + public void setStaff(String staff) { + this.staff = staff; + } + + public String getPhotos() { + return photos; + } + + public void setPhotos(String photos) { + this.photos = photos; + } + + public String getWellType() { + return wellType; + } + + public void setWellType(String wellType) { + this.wellType = wellType; + } + + public String getValid() { + return valid; + } + + public void setValid(String valid) { + this.valid = valid; + } + + public String getBfzt() { + return bfzt; + } + + public void setBfzt(String bfzt) { + this.bfzt = bfzt; + } + + public String getLngGaode() { + return lngGaode; + } + + public void setLngGaode(String lngGaode) { + this.lngGaode = lngGaode; + } + + public String getLatGaode() { + return latGaode; + } + + public void setLatGaode(String latGaode) { + this.latGaode = latGaode; + } + + public String getWellName() { + return wellName; + } + + public void setWellName(String wellName) { + this.wellName = wellName; + } + + public String getTel() { + return tel; + } + + public void setTel(String tel) { + this.tel = tel; + } + + public String getPosition() { + return position; + } + + public void setPosition(String position) { + this.position = position; + } + + public String getData_tube_id() { + return data_tube_id; + } + + public void setData_tube_id(String data_tube_id) { + this.data_tube_id = data_tube_id; + } + } +} diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt index 2affba5..4908afb 100644 --- a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt @@ -41,8 +41,8 @@ * ============================================================================================= * */ const val USER_DETAIL_MODEL = "userDetailModel" - const val SERVER_BASE_URL = "http://192.168.43.19:11643" -// const val SERVER_BASE_URL = "http://111.198.10.15:11304" +// const val SERVER_BASE_URL = "http://192.168.43.19:11643" + const val SERVER_BASE_URL = "http://111.198.10.15:11304" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index 1a2057b..a60b113 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -67,22 +67,31 @@ /** * 更新APK版本 */ - @POST("/app/checkVersion") + @GET("/app/checkVersion") suspend fun obtainVersionResult(@Header("token") token: String): String /** * 地图设备列表 */ - @POST("/tube/well/list") + @GET("/tube/well/list") suspend fun obtainMapDeviceList(@Header("token") token: String): String /** * 项目列表 */ - @POST("/tube/group/list") + @GET("/tube/group/list") suspend fun obtainProGroupList(@Header("token") token: String): String /** + * 根据项目ID查询该项目下的设备列表 + */ + @GET("/tube/group/Info") + suspend fun obtainDeviceListByGroup( + @Header("token") token: String, + @Query("wellGroupId") wellGroupId: String + ): String + + /** * 获取管盯分页列表 * */ @GET("/device/list") diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt index 982cfff..ab52385 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt @@ -76,6 +76,13 @@ } /** + * 根据项目ID查询该项目下的设备列表 + */ + suspend fun obtainDeviceListByGroup(wellGroupId: String): String { + return api.obtainDeviceListByGroup(AuthenticationHelper.token!!, wellGroupId) + } + + /** * 根据设备类型获取设备分页列表 */ suspend fun obtainDeviceListByType( diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt index 97e6234..d9c9b86 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt @@ -28,10 +28,7 @@ import com.casic.smarttube.vm.ProjectGroupViewModel import com.casic.smarttube.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.widget.EasyPopupWindow import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_home.view.* @@ -45,7 +42,6 @@ private lateinit var deviceViewModel: DeviceViewModel private lateinit var groupViewModel: ProjectGroupViewModel private lateinit var groupListAdapter: GroupListAdapter - private var dataBeans: MutableList = ArrayList() /** * 所有的marker @@ -92,9 +88,16 @@ //代码设置底部拉升距离 val bottomSheetBehavior = BottomSheetBehavior.from(homeView.bottomBehaviorLayout) homeView.coordinatorLayout.post { +// bottomSheetBehavior.isFitToContents = false +// bottomSheetBehavior.peekHeight = 30f.dp2px(requireContext()) +// bottomSheetBehavior.isHideable = false bottomSheetBehavior.isFitToContents = false - bottomSheetBehavior.peekHeight = 30f.dp2px(requireContext()) + bottomSheetBehavior.halfExpandedRatio = 0.33f bottomSheetBehavior.isHideable = false + bottomSheetBehavior.peekHeight = 30f.dp2px(requireContext()) + bottomSheetBehavior.setExpandedOffset( + (requireContext().obtainScreenHeight() * 0.3).toInt() + ) } //初始化vm @@ -196,7 +199,37 @@ groupListAdapter.setOnItemClickListener(object : GroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 - + groupViewModel.obtainDeviceListByGroup(dataBeans[position].groupId) + } + }) + groupViewModel.groupDeviceModel.observe(this, { + if (it.code == 200) { + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + it.data.forEach { device -> + val lat = device.latGaode.toString() + val lng = device.lngGaode.toString() + if (lat.isNotBlank() && lng.isNotBlank()) { + //返回true代表当前位置在大陆、港澳地区,反之不在 + val latitude = lat.toDouble() + val longitude = lng.toDouble() + if (CoordinateConverter.isAMapDataAvailable(latitude, longitude)) { + //分别缓存经、纬度 + latitudeList.add(latitude) + longitudeList.add(longitude) + } else { + Log.d(kTag, "${device.wellCode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") + } + } else { + Log.d(kTag, "${device.wellCode}闸井经纬度异常,异常经纬度 ===> [${lng},${lat}]") + } + } + //计算所有点的中心点位置 + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, 10f, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate) } }) } diff --git a/app/src/main/java/com/casic/smarttube/model/GroupDeviceModel.java b/app/src/main/java/com/casic/smarttube/model/GroupDeviceModel.java new file mode 100644 index 0000000..6687d43 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/model/GroupDeviceModel.java @@ -0,0 +1,208 @@ +package com.casic.smarttube.model; + +import java.util.List; + +public class GroupDeviceModel { + + private int code; + private List data; + private String message; + private String success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public String getSuccess() { + return success; + } + + public void setSuccess(String success) { + this.success = success; + } + + public static class DataBean { + private String area; + private int deep; + private String responsibleDept; + private String strength; + private String wellCode; + private String groupId; + private String deptid; + private String staff; + private String photos; + private String wellType; + private String valid; + private String bfzt; + private String lngGaode; + private String latGaode; + private String wellName; + private String tel; + private String position; + private String data_tube_id; + + public String getArea() { + return area; + } + + public void setArea(String area) { + this.area = area; + } + + public int getDeep() { + return deep; + } + + public void setDeep(int deep) { + this.deep = deep; + } + + public String getResponsibleDept() { + return responsibleDept; + } + + public void setResponsibleDept(String responsibleDept) { + this.responsibleDept = responsibleDept; + } + + public String getStrength() { + return strength; + } + + public void setStrength(String strength) { + this.strength = strength; + } + + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } + + public String getGroupId() { + return groupId; + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + public String getDeptid() { + return deptid; + } + + public void setDeptid(String deptid) { + this.deptid = deptid; + } + + public String getStaff() { + return staff; + } + + public void setStaff(String staff) { + this.staff = staff; + } + + public String getPhotos() { + return photos; + } + + public void setPhotos(String photos) { + this.photos = photos; + } + + public String getWellType() { + return wellType; + } + + public void setWellType(String wellType) { + this.wellType = wellType; + } + + public String getValid() { + return valid; + } + + public void setValid(String valid) { + this.valid = valid; + } + + public String getBfzt() { + return bfzt; + } + + public void setBfzt(String bfzt) { + this.bfzt = bfzt; + } + + public String getLngGaode() { + return lngGaode; + } + + public void setLngGaode(String lngGaode) { + this.lngGaode = lngGaode; + } + + public String getLatGaode() { + return latGaode; + } + + public void setLatGaode(String latGaode) { + this.latGaode = latGaode; + } + + public String getWellName() { + return wellName; + } + + public void setWellName(String wellName) { + this.wellName = wellName; + } + + public String getTel() { + return tel; + } + + public void setTel(String tel) { + this.tel = tel; + } + + public String getPosition() { + return position; + } + + public void setPosition(String position) { + this.position = position; + } + + public String getData_tube_id() { + return data_tube_id; + } + + public void setData_tube_id(String data_tube_id) { + this.data_tube_id = data_tube_id; + } + } +} diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt index 2affba5..4908afb 100644 --- a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt @@ -41,8 +41,8 @@ * ============================================================================================= * */ const val USER_DETAIL_MODEL = "userDetailModel" - const val SERVER_BASE_URL = "http://192.168.43.19:11643" -// const val SERVER_BASE_URL = "http://111.198.10.15:11304" +// const val SERVER_BASE_URL = "http://192.168.43.19:11643" + const val SERVER_BASE_URL = "http://111.198.10.15:11304" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index 1a2057b..a60b113 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -67,22 +67,31 @@ /** * 更新APK版本 */ - @POST("/app/checkVersion") + @GET("/app/checkVersion") suspend fun obtainVersionResult(@Header("token") token: String): String /** * 地图设备列表 */ - @POST("/tube/well/list") + @GET("/tube/well/list") suspend fun obtainMapDeviceList(@Header("token") token: String): String /** * 项目列表 */ - @POST("/tube/group/list") + @GET("/tube/group/list") suspend fun obtainProGroupList(@Header("token") token: String): String /** + * 根据项目ID查询该项目下的设备列表 + */ + @GET("/tube/group/Info") + suspend fun obtainDeviceListByGroup( + @Header("token") token: String, + @Query("wellGroupId") wellGroupId: String + ): String + + /** * 获取管盯分页列表 * */ @GET("/device/list") diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt index 982cfff..ab52385 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt @@ -76,6 +76,13 @@ } /** + * 根据项目ID查询该项目下的设备列表 + */ + suspend fun obtainDeviceListByGroup(wellGroupId: String): String { + return api.obtainDeviceListByGroup(AuthenticationHelper.token!!, wellGroupId) + } + + /** * 根据设备类型获取设备分页列表 */ suspend fun obtainDeviceListByType( diff --git a/app/src/main/java/com/casic/smarttube/vm/ProjectGroupViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/ProjectGroupViewModel.kt index f39742f..770a7cd 100644 --- a/app/src/main/java/com/casic/smarttube/vm/ProjectGroupViewModel.kt +++ b/app/src/main/java/com/casic/smarttube/vm/ProjectGroupViewModel.kt @@ -4,6 +4,7 @@ import com.casic.smarttube.base.BaseApplication import com.casic.smarttube.extensions.separateResponseCode import com.casic.smarttube.extensions.toErrorMessage +import com.casic.smarttube.model.GroupDeviceModel import com.casic.smarttube.model.ProjectGroupModel import com.casic.smarttube.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -16,6 +17,7 @@ private val gson = Gson() val groupModel = MutableLiveData() + val groupDeviceModel = MutableLiveData() fun obtainProGroupList() = launch({ val response = RetrofitServiceManager.obtainProGroupList() @@ -30,4 +32,18 @@ }, { it.printStackTrace() }) + + fun obtainDeviceListByGroup(wellGroupId: String) = launch({ + val response = RetrofitServiceManager.obtainDeviceListByGroup(wellGroupId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + groupDeviceModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } + }, { + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt index 97e6234..d9c9b86 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt @@ -28,10 +28,7 @@ import com.casic.smarttube.vm.ProjectGroupViewModel import com.casic.smarttube.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.pengxh.kt.lite.extensions.dp2px -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.widget.EasyPopupWindow import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_home.view.* @@ -45,7 +42,6 @@ private lateinit var deviceViewModel: DeviceViewModel private lateinit var groupViewModel: ProjectGroupViewModel private lateinit var groupListAdapter: GroupListAdapter - private var dataBeans: MutableList = ArrayList() /** * 所有的marker @@ -92,9 +88,16 @@ //代码设置底部拉升距离 val bottomSheetBehavior = BottomSheetBehavior.from(homeView.bottomBehaviorLayout) homeView.coordinatorLayout.post { +// bottomSheetBehavior.isFitToContents = false +// bottomSheetBehavior.peekHeight = 30f.dp2px(requireContext()) +// bottomSheetBehavior.isHideable = false bottomSheetBehavior.isFitToContents = false - bottomSheetBehavior.peekHeight = 30f.dp2px(requireContext()) + bottomSheetBehavior.halfExpandedRatio = 0.33f bottomSheetBehavior.isHideable = false + bottomSheetBehavior.peekHeight = 30f.dp2px(requireContext()) + bottomSheetBehavior.setExpandedOffset( + (requireContext().obtainScreenHeight() * 0.3).toInt() + ) } //初始化vm @@ -196,7 +199,37 @@ groupListAdapter.setOnItemClickListener(object : GroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 - + groupViewModel.obtainDeviceListByGroup(dataBeans[position].groupId) + } + }) + groupViewModel.groupDeviceModel.observe(this, { + if (it.code == 200) { + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + it.data.forEach { device -> + val lat = device.latGaode.toString() + val lng = device.lngGaode.toString() + if (lat.isNotBlank() && lng.isNotBlank()) { + //返回true代表当前位置在大陆、港澳地区,反之不在 + val latitude = lat.toDouble() + val longitude = lng.toDouble() + if (CoordinateConverter.isAMapDataAvailable(latitude, longitude)) { + //分别缓存经、纬度 + latitudeList.add(latitude) + longitudeList.add(longitude) + } else { + Log.d(kTag, "${device.wellCode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") + } + } else { + Log.d(kTag, "${device.wellCode}闸井经纬度异常,异常经纬度 ===> [${lng},${lat}]") + } + } + //计算所有点的中心点位置 + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, 10f, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate) } }) } diff --git a/app/src/main/java/com/casic/smarttube/model/GroupDeviceModel.java b/app/src/main/java/com/casic/smarttube/model/GroupDeviceModel.java new file mode 100644 index 0000000..6687d43 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/model/GroupDeviceModel.java @@ -0,0 +1,208 @@ +package com.casic.smarttube.model; + +import java.util.List; + +public class GroupDeviceModel { + + private int code; + private List data; + private String message; + private String success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public String getSuccess() { + return success; + } + + public void setSuccess(String success) { + this.success = success; + } + + public static class DataBean { + private String area; + private int deep; + private String responsibleDept; + private String strength; + private String wellCode; + private String groupId; + private String deptid; + private String staff; + private String photos; + private String wellType; + private String valid; + private String bfzt; + private String lngGaode; + private String latGaode; + private String wellName; + private String tel; + private String position; + private String data_tube_id; + + public String getArea() { + return area; + } + + public void setArea(String area) { + this.area = area; + } + + public int getDeep() { + return deep; + } + + public void setDeep(int deep) { + this.deep = deep; + } + + public String getResponsibleDept() { + return responsibleDept; + } + + public void setResponsibleDept(String responsibleDept) { + this.responsibleDept = responsibleDept; + } + + public String getStrength() { + return strength; + } + + public void setStrength(String strength) { + this.strength = strength; + } + + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } + + public String getGroupId() { + return groupId; + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + public String getDeptid() { + return deptid; + } + + public void setDeptid(String deptid) { + this.deptid = deptid; + } + + public String getStaff() { + return staff; + } + + public void setStaff(String staff) { + this.staff = staff; + } + + public String getPhotos() { + return photos; + } + + public void setPhotos(String photos) { + this.photos = photos; + } + + public String getWellType() { + return wellType; + } + + public void setWellType(String wellType) { + this.wellType = wellType; + } + + public String getValid() { + return valid; + } + + public void setValid(String valid) { + this.valid = valid; + } + + public String getBfzt() { + return bfzt; + } + + public void setBfzt(String bfzt) { + this.bfzt = bfzt; + } + + public String getLngGaode() { + return lngGaode; + } + + public void setLngGaode(String lngGaode) { + this.lngGaode = lngGaode; + } + + public String getLatGaode() { + return latGaode; + } + + public void setLatGaode(String latGaode) { + this.latGaode = latGaode; + } + + public String getWellName() { + return wellName; + } + + public void setWellName(String wellName) { + this.wellName = wellName; + } + + public String getTel() { + return tel; + } + + public void setTel(String tel) { + this.tel = tel; + } + + public String getPosition() { + return position; + } + + public void setPosition(String position) { + this.position = position; + } + + public String getData_tube_id() { + return data_tube_id; + } + + public void setData_tube_id(String data_tube_id) { + this.data_tube_id = data_tube_id; + } + } +} diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt index 2affba5..4908afb 100644 --- a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt @@ -41,8 +41,8 @@ * ============================================================================================= * */ const val USER_DETAIL_MODEL = "userDetailModel" - const val SERVER_BASE_URL = "http://192.168.43.19:11643" -// const val SERVER_BASE_URL = "http://111.198.10.15:11304" +// const val SERVER_BASE_URL = "http://192.168.43.19:11643" + const val SERVER_BASE_URL = "http://111.198.10.15:11304" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val ACCOUNT = "account" const val PASSWORD = "password" diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index 1a2057b..a60b113 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -67,22 +67,31 @@ /** * 更新APK版本 */ - @POST("/app/checkVersion") + @GET("/app/checkVersion") suspend fun obtainVersionResult(@Header("token") token: String): String /** * 地图设备列表 */ - @POST("/tube/well/list") + @GET("/tube/well/list") suspend fun obtainMapDeviceList(@Header("token") token: String): String /** * 项目列表 */ - @POST("/tube/group/list") + @GET("/tube/group/list") suspend fun obtainProGroupList(@Header("token") token: String): String /** + * 根据项目ID查询该项目下的设备列表 + */ + @GET("/tube/group/Info") + suspend fun obtainDeviceListByGroup( + @Header("token") token: String, + @Query("wellGroupId") wellGroupId: String + ): String + + /** * 获取管盯分页列表 * */ @GET("/device/list") diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt index 982cfff..ab52385 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt @@ -76,6 +76,13 @@ } /** + * 根据项目ID查询该项目下的设备列表 + */ + suspend fun obtainDeviceListByGroup(wellGroupId: String): String { + return api.obtainDeviceListByGroup(AuthenticationHelper.token!!, wellGroupId) + } + + /** * 根据设备类型获取设备分页列表 */ suspend fun obtainDeviceListByType( diff --git a/app/src/main/java/com/casic/smarttube/vm/ProjectGroupViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/ProjectGroupViewModel.kt index f39742f..770a7cd 100644 --- a/app/src/main/java/com/casic/smarttube/vm/ProjectGroupViewModel.kt +++ b/app/src/main/java/com/casic/smarttube/vm/ProjectGroupViewModel.kt @@ -4,6 +4,7 @@ import com.casic.smarttube.base.BaseApplication import com.casic.smarttube.extensions.separateResponseCode import com.casic.smarttube.extensions.toErrorMessage +import com.casic.smarttube.model.GroupDeviceModel import com.casic.smarttube.model.ProjectGroupModel import com.casic.smarttube.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -16,6 +17,7 @@ private val gson = Gson() val groupModel = MutableLiveData() + val groupDeviceModel = MutableLiveData() fun obtainProGroupList() = launch({ val response = RetrofitServiceManager.obtainProGroupList() @@ -30,4 +32,18 @@ }, { it.printStackTrace() }) + + fun obtainDeviceListByGroup(wellGroupId: String) = launch({ + val response = RetrofitServiceManager.obtainDeviceListByGroup(wellGroupId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + groupDeviceModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } + }, { + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/res/layout/marker_gaode.xml b/app/src/main/res/layout/marker_gaode.xml index 15e9368..1f34bfa 100644 --- a/app/src/main/res/layout/marker_gaode.xml +++ b/app/src/main/res/layout/marker_gaode.xml @@ -11,7 +11,7 @@ android:layout_height="wrap_content" android:gravity="center" android:paddingHorizontal="@dimen/dp_10" - android:text="窨井数" + android:text="设备数" android:textColor="@color/white" android:textSize="12sp" />