diff --git a/app/build.gradle b/app/build.gradle index 989a8ec..da5584a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,9 +48,9 @@ dependencies { //基础依赖库 implementation files('libs/lite-release.aar') - implementation 'androidx.core:core-ktx:1.7.0' + implementation 'androidx.core:core-ktx:1.8.0' implementation 'androidx.appcompat:appcompat:1.4.2' - implementation 'com.google.android.material:material:1.4.0' + implementation 'com.google.android.material:material:1.6.1' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //沉浸式状态栏。基础依赖包,必须要依赖 @@ -62,12 +62,12 @@ implementation 'com.qmuiteam:arch:0.3.1' //MVVM+LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 diff --git a/app/build.gradle b/app/build.gradle index 989a8ec..da5584a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,9 +48,9 @@ dependencies { //基础依赖库 implementation files('libs/lite-release.aar') - implementation 'androidx.core:core-ktx:1.7.0' + implementation 'androidx.core:core-ktx:1.8.0' implementation 'androidx.appcompat:appcompat:1.4.2' - implementation 'com.google.android.material:material:1.4.0' + implementation 'com.google.android.material:material:1.6.1' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //沉浸式状态栏。基础依赖包,必须要依赖 @@ -62,12 +62,12 @@ implementation 'com.qmuiteam:arch:0.3.1' //MVVM+LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3d8ef3b..be29277 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,9 +43,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 989a8ec..da5584a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,9 +48,9 @@ dependencies { //基础依赖库 implementation files('libs/lite-release.aar') - implementation 'androidx.core:core-ktx:1.7.0' + implementation 'androidx.core:core-ktx:1.8.0' implementation 'androidx.appcompat:appcompat:1.4.2' - implementation 'com.google.android.material:material:1.4.0' + implementation 'com.google.android.material:material:1.6.1' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //沉浸式状态栏。基础依赖包,必须要依赖 @@ -62,12 +62,12 @@ implementation 'com.qmuiteam:arch:0.3.1' //MVVM+LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3d8ef3b..be29277 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,9 +43,7 @@ - + diff --git a/app/src/main/java/com/casic/smarttube/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt index a6b2d58..32358e3 100644 --- a/app/src/main/java/com/casic/smarttube/extensions/String.kt +++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt @@ -5,8 +5,11 @@ import com.casic.smarttube.utils.LocaleConstant import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.dateToTimestamp import com.pengxh.kt.lite.utils.SaveKeyValues import org.json.JSONObject +import java.text.SimpleDateFormat +import java.util.* /** * String扩展方法 @@ -62,4 +65,13 @@ e.printStackTrace() } return R.drawable.ic_battery_0 +} + +/** + * 时间转月日 + */ +fun String.dateToMonthDay(): String { + val timestamp = this.dateToTimestamp() + val dateFormat = SimpleDateFormat("MM-dd", Locale.CHINA) + return dateFormat.format(Date(timestamp)) } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 989a8ec..da5584a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,9 +48,9 @@ dependencies { //基础依赖库 implementation files('libs/lite-release.aar') - implementation 'androidx.core:core-ktx:1.7.0' + implementation 'androidx.core:core-ktx:1.8.0' implementation 'androidx.appcompat:appcompat:1.4.2' - implementation 'com.google.android.material:material:1.4.0' + implementation 'com.google.android.material:material:1.6.1' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //沉浸式状态栏。基础依赖包,必须要依赖 @@ -62,12 +62,12 @@ implementation 'com.qmuiteam:arch:0.3.1' //MVVM+LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3d8ef3b..be29277 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,9 +43,7 @@ - + diff --git a/app/src/main/java/com/casic/smarttube/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt index a6b2d58..32358e3 100644 --- a/app/src/main/java/com/casic/smarttube/extensions/String.kt +++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt @@ -5,8 +5,11 @@ import com.casic.smarttube.utils.LocaleConstant import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.dateToTimestamp import com.pengxh.kt.lite.utils.SaveKeyValues import org.json.JSONObject +import java.text.SimpleDateFormat +import java.util.* /** * String扩展方法 @@ -62,4 +65,13 @@ e.printStackTrace() } return R.drawable.ic_battery_0 +} + +/** + * 时间转月日 + */ +fun String.dateToMonthDay(): String { + val timestamp = this.dateToTimestamp() + val dateFormat = SimpleDateFormat("MM-dd", Locale.CHINA) + return dateFormat.format(Date(timestamp)) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java b/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java index f4096ea..f0463fc 100644 --- a/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java +++ b/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java @@ -5,9 +5,9 @@ public class DeviceHistoryDataModel { private int code; - private DataBean data; + private List data; private String message; - private boolean success; + private String success; public int getCode() { return code; @@ -17,11 +17,11 @@ this.code = code; } - public DataBean getData() { + public List getData() { return data; } - public void setData(DataBean data) { + public void setData(List data) { this.data = data; } @@ -33,134 +33,95 @@ this.message = message; } - public boolean isSuccess() { + public String getSuccess() { return success; } - public void setSuccess(boolean success) { + public void setSuccess(String success) { this.success = success; } public static class DataBean { - private List rows; - private int total; + private String devcode; + private String wellCode; + private String snr; + private String pci; + private String rsrp; + private String id; + private String cell; + private String stregnth; + private String uptime; - public List getRows() { - return rows; + public String getDevcode() { + return devcode; } - public void setRows(List rows) { - this.rows = rows; + public void setDevcode(String devcode) { + this.devcode = devcode; } - public int getTotal() { - return total; + public String getWellCode() { + return wellCode; } - public void setTotal(int total) { - this.total = total; + public void setWellCode(String wellCode) { + this.wellCode = wellCode; } - public static class RowsBean { - private String deviceType; - private String deptName; - private String devcode; - private String strength; - private String wellCode; - private String deptid; - private String deviceTypeName; - private String cell; - private String descn; - private String logtime; - private String uptime; + public String getSnr() { + return snr; + } - public String getDeviceType() { - return deviceType; - } + public void setSnr(String snr) { + this.snr = snr; + } - public void setDeviceType(String deviceType) { - this.deviceType = deviceType; - } + public String getPci() { + return pci; + } - public String getDeptName() { - return deptName; - } + public void setPci(String pci) { + this.pci = pci; + } - public void setDeptName(String deptName) { - this.deptName = deptName; - } + public String getRsrp() { + return rsrp; + } - public String getDevcode() { - return devcode; - } + public void setRsrp(String rsrp) { + this.rsrp = rsrp; + } - public void setDevcode(String devcode) { - this.devcode = devcode; - } + public String getId() { + return id; + } - public String getStrength() { - return strength; - } + public void setId(String id) { + this.id = id; + } - public void setStrength(String strength) { - this.strength = strength; - } + public String getCell() { + return cell; + } - public String getWellCode() { - return wellCode; - } + public void setCell(String cell) { + this.cell = cell; + } - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } + public String getStregnth() { + return stregnth; + } - public String getDeptid() { - return deptid; - } + public void setStregnth(String stregnth) { + this.stregnth = stregnth; + } - public void setDeptid(String deptid) { - this.deptid = deptid; - } + public String getUptime() { + return uptime; + } - public String getDeviceTypeName() { - return deviceTypeName; - } - - public void setDeviceTypeName(String deviceTypeName) { - this.deviceTypeName = deviceTypeName; - } - - public String getCell() { - return cell; - } - - public void setCell(String cell) { - this.cell = cell; - } - - public String getDescn() { - return descn; - } - - public void setDescn(String descn) { - this.descn = descn; - } - - public String getLogtime() { - return logtime; - } - - public void setLogtime(String logtime) { - this.logtime = logtime; - } - - public String getUptime() { - return uptime; - } - - public void setUptime(String uptime) { - this.uptime = uptime; - } + public void setUptime(String uptime) { + this.uptime = uptime; } } } diff --git a/app/build.gradle b/app/build.gradle index 989a8ec..da5584a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,9 +48,9 @@ dependencies { //基础依赖库 implementation files('libs/lite-release.aar') - implementation 'androidx.core:core-ktx:1.7.0' + implementation 'androidx.core:core-ktx:1.8.0' implementation 'androidx.appcompat:appcompat:1.4.2' - implementation 'com.google.android.material:material:1.4.0' + implementation 'com.google.android.material:material:1.6.1' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //沉浸式状态栏。基础依赖包,必须要依赖 @@ -62,12 +62,12 @@ implementation 'com.qmuiteam:arch:0.3.1' //MVVM+LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3d8ef3b..be29277 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,9 +43,7 @@ - + diff --git a/app/src/main/java/com/casic/smarttube/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt index a6b2d58..32358e3 100644 --- a/app/src/main/java/com/casic/smarttube/extensions/String.kt +++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt @@ -5,8 +5,11 @@ import com.casic.smarttube.utils.LocaleConstant import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.dateToTimestamp import com.pengxh.kt.lite.utils.SaveKeyValues import org.json.JSONObject +import java.text.SimpleDateFormat +import java.util.* /** * String扩展方法 @@ -62,4 +65,13 @@ e.printStackTrace() } return R.drawable.ic_battery_0 +} + +/** + * 时间转月日 + */ +fun String.dateToMonthDay(): String { + val timestamp = this.dateToTimestamp() + val dateFormat = SimpleDateFormat("MM-dd", Locale.CHINA) + return dateFormat.format(Date(timestamp)) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java b/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java index f4096ea..f0463fc 100644 --- a/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java +++ b/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java @@ -5,9 +5,9 @@ public class DeviceHistoryDataModel { private int code; - private DataBean data; + private List data; private String message; - private boolean success; + private String success; public int getCode() { return code; @@ -17,11 +17,11 @@ this.code = code; } - public DataBean getData() { + public List getData() { return data; } - public void setData(DataBean data) { + public void setData(List data) { this.data = data; } @@ -33,134 +33,95 @@ this.message = message; } - public boolean isSuccess() { + public String getSuccess() { return success; } - public void setSuccess(boolean success) { + public void setSuccess(String success) { this.success = success; } public static class DataBean { - private List rows; - private int total; + private String devcode; + private String wellCode; + private String snr; + private String pci; + private String rsrp; + private String id; + private String cell; + private String stregnth; + private String uptime; - public List getRows() { - return rows; + public String getDevcode() { + return devcode; } - public void setRows(List rows) { - this.rows = rows; + public void setDevcode(String devcode) { + this.devcode = devcode; } - public int getTotal() { - return total; + public String getWellCode() { + return wellCode; } - public void setTotal(int total) { - this.total = total; + public void setWellCode(String wellCode) { + this.wellCode = wellCode; } - public static class RowsBean { - private String deviceType; - private String deptName; - private String devcode; - private String strength; - private String wellCode; - private String deptid; - private String deviceTypeName; - private String cell; - private String descn; - private String logtime; - private String uptime; + public String getSnr() { + return snr; + } - public String getDeviceType() { - return deviceType; - } + public void setSnr(String snr) { + this.snr = snr; + } - public void setDeviceType(String deviceType) { - this.deviceType = deviceType; - } + public String getPci() { + return pci; + } - public String getDeptName() { - return deptName; - } + public void setPci(String pci) { + this.pci = pci; + } - public void setDeptName(String deptName) { - this.deptName = deptName; - } + public String getRsrp() { + return rsrp; + } - public String getDevcode() { - return devcode; - } + public void setRsrp(String rsrp) { + this.rsrp = rsrp; + } - public void setDevcode(String devcode) { - this.devcode = devcode; - } + public String getId() { + return id; + } - public String getStrength() { - return strength; - } + public void setId(String id) { + this.id = id; + } - public void setStrength(String strength) { - this.strength = strength; - } + public String getCell() { + return cell; + } - public String getWellCode() { - return wellCode; - } + public void setCell(String cell) { + this.cell = cell; + } - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } + public String getStregnth() { + return stregnth; + } - public String getDeptid() { - return deptid; - } + public void setStregnth(String stregnth) { + this.stregnth = stregnth; + } - public void setDeptid(String deptid) { - this.deptid = deptid; - } + public String getUptime() { + return uptime; + } - public String getDeviceTypeName() { - return deviceTypeName; - } - - public void setDeviceTypeName(String deviceTypeName) { - this.deviceTypeName = deviceTypeName; - } - - public String getCell() { - return cell; - } - - public void setCell(String cell) { - this.cell = cell; - } - - public String getDescn() { - return descn; - } - - public void setDescn(String descn) { - this.descn = descn; - } - - public String getLogtime() { - return logtime; - } - - public void setLogtime(String logtime) { - this.logtime = logtime; - } - - public String getUptime() { - return uptime; - } - - public void setUptime(String uptime) { - this.uptime = uptime; - } + public void setUptime(String uptime) { + this.uptime = uptime; } } } diff --git a/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java b/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java index 5fe5c55..bef5a6c 100644 --- a/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java +++ b/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java @@ -6,23 +6,23 @@ public class LineChartEntryModel { //折线数据 - private List entryList; + private List entries; //折线颜色 - private List lineColors; + private Integer lineColor; - public List getEntryList() { - return entryList; + public List getEntries() { + return entries; } - public void setEntryList(List entryList) { - this.entryList = entryList; + public void setEntries(List entries) { + this.entries = entries; } - public List getLineColors() { - return lineColors; + public Integer getLineColor() { + return lineColor; } - public void setLineColors(List lineColors) { - this.lineColors = lineColors; + public void setLineColor(Integer lineColor) { + this.lineColor = lineColor; } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 989a8ec..da5584a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,9 +48,9 @@ dependencies { //基础依赖库 implementation files('libs/lite-release.aar') - implementation 'androidx.core:core-ktx:1.7.0' + implementation 'androidx.core:core-ktx:1.8.0' implementation 'androidx.appcompat:appcompat:1.4.2' - implementation 'com.google.android.material:material:1.4.0' + implementation 'com.google.android.material:material:1.6.1' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //沉浸式状态栏。基础依赖包,必须要依赖 @@ -62,12 +62,12 @@ implementation 'com.qmuiteam:arch:0.3.1' //MVVM+LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3d8ef3b..be29277 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,9 +43,7 @@ - + diff --git a/app/src/main/java/com/casic/smarttube/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt index a6b2d58..32358e3 100644 --- a/app/src/main/java/com/casic/smarttube/extensions/String.kt +++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt @@ -5,8 +5,11 @@ import com.casic.smarttube.utils.LocaleConstant import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.dateToTimestamp import com.pengxh.kt.lite.utils.SaveKeyValues import org.json.JSONObject +import java.text.SimpleDateFormat +import java.util.* /** * String扩展方法 @@ -62,4 +65,13 @@ e.printStackTrace() } return R.drawable.ic_battery_0 +} + +/** + * 时间转月日 + */ +fun String.dateToMonthDay(): String { + val timestamp = this.dateToTimestamp() + val dateFormat = SimpleDateFormat("MM-dd", Locale.CHINA) + return dateFormat.format(Date(timestamp)) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java b/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java index f4096ea..f0463fc 100644 --- a/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java +++ b/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java @@ -5,9 +5,9 @@ public class DeviceHistoryDataModel { private int code; - private DataBean data; + private List data; private String message; - private boolean success; + private String success; public int getCode() { return code; @@ -17,11 +17,11 @@ this.code = code; } - public DataBean getData() { + public List getData() { return data; } - public void setData(DataBean data) { + public void setData(List data) { this.data = data; } @@ -33,134 +33,95 @@ this.message = message; } - public boolean isSuccess() { + public String getSuccess() { return success; } - public void setSuccess(boolean success) { + public void setSuccess(String success) { this.success = success; } public static class DataBean { - private List rows; - private int total; + private String devcode; + private String wellCode; + private String snr; + private String pci; + private String rsrp; + private String id; + private String cell; + private String stregnth; + private String uptime; - public List getRows() { - return rows; + public String getDevcode() { + return devcode; } - public void setRows(List rows) { - this.rows = rows; + public void setDevcode(String devcode) { + this.devcode = devcode; } - public int getTotal() { - return total; + public String getWellCode() { + return wellCode; } - public void setTotal(int total) { - this.total = total; + public void setWellCode(String wellCode) { + this.wellCode = wellCode; } - public static class RowsBean { - private String deviceType; - private String deptName; - private String devcode; - private String strength; - private String wellCode; - private String deptid; - private String deviceTypeName; - private String cell; - private String descn; - private String logtime; - private String uptime; + public String getSnr() { + return snr; + } - public String getDeviceType() { - return deviceType; - } + public void setSnr(String snr) { + this.snr = snr; + } - public void setDeviceType(String deviceType) { - this.deviceType = deviceType; - } + public String getPci() { + return pci; + } - public String getDeptName() { - return deptName; - } + public void setPci(String pci) { + this.pci = pci; + } - public void setDeptName(String deptName) { - this.deptName = deptName; - } + public String getRsrp() { + return rsrp; + } - public String getDevcode() { - return devcode; - } + public void setRsrp(String rsrp) { + this.rsrp = rsrp; + } - public void setDevcode(String devcode) { - this.devcode = devcode; - } + public String getId() { + return id; + } - public String getStrength() { - return strength; - } + public void setId(String id) { + this.id = id; + } - public void setStrength(String strength) { - this.strength = strength; - } + public String getCell() { + return cell; + } - public String getWellCode() { - return wellCode; - } + public void setCell(String cell) { + this.cell = cell; + } - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } + public String getStregnth() { + return stregnth; + } - public String getDeptid() { - return deptid; - } + public void setStregnth(String stregnth) { + this.stregnth = stregnth; + } - public void setDeptid(String deptid) { - this.deptid = deptid; - } + public String getUptime() { + return uptime; + } - public String getDeviceTypeName() { - return deviceTypeName; - } - - public void setDeviceTypeName(String deviceTypeName) { - this.deviceTypeName = deviceTypeName; - } - - public String getCell() { - return cell; - } - - public void setCell(String cell) { - this.cell = cell; - } - - public String getDescn() { - return descn; - } - - public void setDescn(String descn) { - this.descn = descn; - } - - public String getLogtime() { - return logtime; - } - - public void setLogtime(String logtime) { - this.logtime = logtime; - } - - public String getUptime() { - return uptime; - } - - public void setUptime(String uptime) { - this.uptime = uptime; - } + public void setUptime(String uptime) { + this.uptime = uptime; } } } diff --git a/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java b/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java index 5fe5c55..bef5a6c 100644 --- a/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java +++ b/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java @@ -6,23 +6,23 @@ public class LineChartEntryModel { //折线数据 - private List entryList; + private List entries; //折线颜色 - private List lineColors; + private Integer lineColor; - public List getEntryList() { - return entryList; + public List getEntries() { + return entries; } - public void setEntryList(List entryList) { - this.entryList = entryList; + public void setEntries(List entries) { + this.entries = entries; } - public List getLineColors() { - return lineColors; + public Integer getLineColor() { + return lineColor; } - public void setLineColors(List lineColors) { - this.lineColors = lineColors; + public void setLineColor(Integer lineColor) { + this.lineColor = lineColor; } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt index 2b32974..acde78f 100644 --- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt @@ -22,35 +22,28 @@ * 折线图 * */ fun setLineChartData( - chart: LineChart, xAxisDate: MutableList, entryModels: List + chart: LineChart, xAxisDate: MutableList, entryModel: LineChartEntryModel ) { //每次加载数据都初始化折线图 chart.init(BaseApplication.obtainInstance()) - //[{"entryList":[],"lineColor":-13118290}] - if (entryModels[0].entryList?.isEmpty() == true) { + if (entryModel.entries.isEmpty()) { chart.clearValues() return } //绑定数据 val lineDataSets: MutableList = ArrayList() - val entrySize = entryModels[0].entryList!!.size - entryModels.forEachIndexed { index, it -> - //设置数据 - val dataSet = if (entrySize == 1) { - LineDataSet(it.entryList, it.entryList?.get(0)?.data.toString()) - } else { - LineDataSet(it.entryList, it.entryList?.get(index)?.data.toString()) - } - dataSet.setDrawCircles(true) - //线条颜色 - dataSet.color = it.lineColors[index] - //圆点颜色 - dataSet.setCircleColor(it.lineColors[index]) - dataSet.setDrawFilled(true) - dataSet.fillColor = it.lineColors[index] - dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER - lineDataSets.add(dataSet) - } + //设置数据 + val dataSet = LineDataSet(entryModel.entries, entryModel.entries[0].data.toString()) + dataSet.setDrawCircles(true) + //线条颜色 + dataSet.color = entryModel.lineColor + //圆点颜色 + dataSet.setCircleColor(entryModel.lineColor) + dataSet.setDrawFilled(true) + dataSet.fillColor = entryModel.lineColor + dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER + lineDataSets.add(dataSet) + val lineData = LineData(lineDataSets) lineData.setDrawValues(false) //添加自定义Marker @@ -60,17 +53,10 @@ chart.marker = markerView //设置X轴坐标 val xAxis = chart.xAxis - xAxis.valueFormatter = if (entrySize == 1) { - object : ValueFormatter() { - override fun getFormattedValue(value: Float): String { - return xAxisDate[0] - } - } - } else { - object : ValueFormatter() { - override fun getFormattedValue(value: Float): String { - return xAxisDate[value.toInt()] - } + xAxis.labelRotationAngle = -45f + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return xAxisDate[value.toInt()] } } chart.data = lineData diff --git a/app/build.gradle b/app/build.gradle index 989a8ec..da5584a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,9 +48,9 @@ dependencies { //基础依赖库 implementation files('libs/lite-release.aar') - implementation 'androidx.core:core-ktx:1.7.0' + implementation 'androidx.core:core-ktx:1.8.0' implementation 'androidx.appcompat:appcompat:1.4.2' - implementation 'com.google.android.material:material:1.4.0' + implementation 'com.google.android.material:material:1.6.1' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //沉浸式状态栏。基础依赖包,必须要依赖 @@ -62,12 +62,12 @@ implementation 'com.qmuiteam:arch:0.3.1' //MVVM+LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3d8ef3b..be29277 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,9 +43,7 @@ - + diff --git a/app/src/main/java/com/casic/smarttube/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt index a6b2d58..32358e3 100644 --- a/app/src/main/java/com/casic/smarttube/extensions/String.kt +++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt @@ -5,8 +5,11 @@ import com.casic.smarttube.utils.LocaleConstant import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.dateToTimestamp import com.pengxh.kt.lite.utils.SaveKeyValues import org.json.JSONObject +import java.text.SimpleDateFormat +import java.util.* /** * String扩展方法 @@ -62,4 +65,13 @@ e.printStackTrace() } return R.drawable.ic_battery_0 +} + +/** + * 时间转月日 + */ +fun String.dateToMonthDay(): String { + val timestamp = this.dateToTimestamp() + val dateFormat = SimpleDateFormat("MM-dd", Locale.CHINA) + return dateFormat.format(Date(timestamp)) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java b/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java index f4096ea..f0463fc 100644 --- a/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java +++ b/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java @@ -5,9 +5,9 @@ public class DeviceHistoryDataModel { private int code; - private DataBean data; + private List data; private String message; - private boolean success; + private String success; public int getCode() { return code; @@ -17,11 +17,11 @@ this.code = code; } - public DataBean getData() { + public List getData() { return data; } - public void setData(DataBean data) { + public void setData(List data) { this.data = data; } @@ -33,134 +33,95 @@ this.message = message; } - public boolean isSuccess() { + public String getSuccess() { return success; } - public void setSuccess(boolean success) { + public void setSuccess(String success) { this.success = success; } public static class DataBean { - private List rows; - private int total; + private String devcode; + private String wellCode; + private String snr; + private String pci; + private String rsrp; + private String id; + private String cell; + private String stregnth; + private String uptime; - public List getRows() { - return rows; + public String getDevcode() { + return devcode; } - public void setRows(List rows) { - this.rows = rows; + public void setDevcode(String devcode) { + this.devcode = devcode; } - public int getTotal() { - return total; + public String getWellCode() { + return wellCode; } - public void setTotal(int total) { - this.total = total; + public void setWellCode(String wellCode) { + this.wellCode = wellCode; } - public static class RowsBean { - private String deviceType; - private String deptName; - private String devcode; - private String strength; - private String wellCode; - private String deptid; - private String deviceTypeName; - private String cell; - private String descn; - private String logtime; - private String uptime; + public String getSnr() { + return snr; + } - public String getDeviceType() { - return deviceType; - } + public void setSnr(String snr) { + this.snr = snr; + } - public void setDeviceType(String deviceType) { - this.deviceType = deviceType; - } + public String getPci() { + return pci; + } - public String getDeptName() { - return deptName; - } + public void setPci(String pci) { + this.pci = pci; + } - public void setDeptName(String deptName) { - this.deptName = deptName; - } + public String getRsrp() { + return rsrp; + } - public String getDevcode() { - return devcode; - } + public void setRsrp(String rsrp) { + this.rsrp = rsrp; + } - public void setDevcode(String devcode) { - this.devcode = devcode; - } + public String getId() { + return id; + } - public String getStrength() { - return strength; - } + public void setId(String id) { + this.id = id; + } - public void setStrength(String strength) { - this.strength = strength; - } + public String getCell() { + return cell; + } - public String getWellCode() { - return wellCode; - } + public void setCell(String cell) { + this.cell = cell; + } - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } + public String getStregnth() { + return stregnth; + } - public String getDeptid() { - return deptid; - } + public void setStregnth(String stregnth) { + this.stregnth = stregnth; + } - public void setDeptid(String deptid) { - this.deptid = deptid; - } + public String getUptime() { + return uptime; + } - public String getDeviceTypeName() { - return deviceTypeName; - } - - public void setDeviceTypeName(String deviceTypeName) { - this.deviceTypeName = deviceTypeName; - } - - public String getCell() { - return cell; - } - - public void setCell(String cell) { - this.cell = cell; - } - - public String getDescn() { - return descn; - } - - public void setDescn(String descn) { - this.descn = descn; - } - - public String getLogtime() { - return logtime; - } - - public void setLogtime(String logtime) { - this.logtime = logtime; - } - - public String getUptime() { - return uptime; - } - - public void setUptime(String uptime) { - this.uptime = uptime; - } + public void setUptime(String uptime) { + this.uptime = uptime; } } } diff --git a/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java b/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java index 5fe5c55..bef5a6c 100644 --- a/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java +++ b/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java @@ -6,23 +6,23 @@ public class LineChartEntryModel { //折线数据 - private List entryList; + private List entries; //折线颜色 - private List lineColors; + private Integer lineColor; - public List getEntryList() { - return entryList; + public List getEntries() { + return entries; } - public void setEntryList(List entryList) { - this.entryList = entryList; + public void setEntries(List entries) { + this.entries = entries; } - public List getLineColors() { - return lineColors; + public Integer getLineColor() { + return lineColor; } - public void setLineColors(List lineColors) { - this.lineColors = lineColors; + public void setLineColor(Integer lineColor) { + this.lineColor = lineColor; } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt index 2b32974..acde78f 100644 --- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt @@ -22,35 +22,28 @@ * 折线图 * */ fun setLineChartData( - chart: LineChart, xAxisDate: MutableList, entryModels: List + chart: LineChart, xAxisDate: MutableList, entryModel: LineChartEntryModel ) { //每次加载数据都初始化折线图 chart.init(BaseApplication.obtainInstance()) - //[{"entryList":[],"lineColor":-13118290}] - if (entryModels[0].entryList?.isEmpty() == true) { + if (entryModel.entries.isEmpty()) { chart.clearValues() return } //绑定数据 val lineDataSets: MutableList = ArrayList() - val entrySize = entryModels[0].entryList!!.size - entryModels.forEachIndexed { index, it -> - //设置数据 - val dataSet = if (entrySize == 1) { - LineDataSet(it.entryList, it.entryList?.get(0)?.data.toString()) - } else { - LineDataSet(it.entryList, it.entryList?.get(index)?.data.toString()) - } - dataSet.setDrawCircles(true) - //线条颜色 - dataSet.color = it.lineColors[index] - //圆点颜色 - dataSet.setCircleColor(it.lineColors[index]) - dataSet.setDrawFilled(true) - dataSet.fillColor = it.lineColors[index] - dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER - lineDataSets.add(dataSet) - } + //设置数据 + val dataSet = LineDataSet(entryModel.entries, entryModel.entries[0].data.toString()) + dataSet.setDrawCircles(true) + //线条颜色 + dataSet.color = entryModel.lineColor + //圆点颜色 + dataSet.setCircleColor(entryModel.lineColor) + dataSet.setDrawFilled(true) + dataSet.fillColor = entryModel.lineColor + dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER + lineDataSets.add(dataSet) + val lineData = LineData(lineDataSets) lineData.setDrawValues(false) //添加自定义Marker @@ -60,17 +53,10 @@ chart.marker = markerView //设置X轴坐标 val xAxis = chart.xAxis - xAxis.valueFormatter = if (entrySize == 1) { - object : ValueFormatter() { - override fun getFormattedValue(value: Float): String { - return xAxisDate[0] - } - } - } else { - object : ValueFormatter() { - override fun getFormattedValue(value: Float): String { - return xAxisDate[value.toInt()] - } + xAxis.labelRotationAngle = -45f + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return xAxisDate[value.toInt()] } } chart.data = lineData 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/build.gradle b/app/build.gradle index 989a8ec..da5584a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,9 +48,9 @@ dependencies { //基础依赖库 implementation files('libs/lite-release.aar') - implementation 'androidx.core:core-ktx:1.7.0' + implementation 'androidx.core:core-ktx:1.8.0' implementation 'androidx.appcompat:appcompat:1.4.2' - implementation 'com.google.android.material:material:1.4.0' + implementation 'com.google.android.material:material:1.6.1' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //沉浸式状态栏。基础依赖包,必须要依赖 @@ -62,12 +62,12 @@ implementation 'com.qmuiteam:arch:0.3.1' //MVVM+LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3d8ef3b..be29277 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,9 +43,7 @@ - + diff --git a/app/src/main/java/com/casic/smarttube/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt index a6b2d58..32358e3 100644 --- a/app/src/main/java/com/casic/smarttube/extensions/String.kt +++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt @@ -5,8 +5,11 @@ import com.casic.smarttube.utils.LocaleConstant import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.dateToTimestamp import com.pengxh.kt.lite.utils.SaveKeyValues import org.json.JSONObject +import java.text.SimpleDateFormat +import java.util.* /** * String扩展方法 @@ -62,4 +65,13 @@ e.printStackTrace() } return R.drawable.ic_battery_0 +} + +/** + * 时间转月日 + */ +fun String.dateToMonthDay(): String { + val timestamp = this.dateToTimestamp() + val dateFormat = SimpleDateFormat("MM-dd", Locale.CHINA) + return dateFormat.format(Date(timestamp)) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java b/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java index f4096ea..f0463fc 100644 --- a/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java +++ b/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java @@ -5,9 +5,9 @@ public class DeviceHistoryDataModel { private int code; - private DataBean data; + private List data; private String message; - private boolean success; + private String success; public int getCode() { return code; @@ -17,11 +17,11 @@ this.code = code; } - public DataBean getData() { + public List getData() { return data; } - public void setData(DataBean data) { + public void setData(List data) { this.data = data; } @@ -33,134 +33,95 @@ this.message = message; } - public boolean isSuccess() { + public String getSuccess() { return success; } - public void setSuccess(boolean success) { + public void setSuccess(String success) { this.success = success; } public static class DataBean { - private List rows; - private int total; + private String devcode; + private String wellCode; + private String snr; + private String pci; + private String rsrp; + private String id; + private String cell; + private String stregnth; + private String uptime; - public List getRows() { - return rows; + public String getDevcode() { + return devcode; } - public void setRows(List rows) { - this.rows = rows; + public void setDevcode(String devcode) { + this.devcode = devcode; } - public int getTotal() { - return total; + public String getWellCode() { + return wellCode; } - public void setTotal(int total) { - this.total = total; + public void setWellCode(String wellCode) { + this.wellCode = wellCode; } - public static class RowsBean { - private String deviceType; - private String deptName; - private String devcode; - private String strength; - private String wellCode; - private String deptid; - private String deviceTypeName; - private String cell; - private String descn; - private String logtime; - private String uptime; + public String getSnr() { + return snr; + } - public String getDeviceType() { - return deviceType; - } + public void setSnr(String snr) { + this.snr = snr; + } - public void setDeviceType(String deviceType) { - this.deviceType = deviceType; - } + public String getPci() { + return pci; + } - public String getDeptName() { - return deptName; - } + public void setPci(String pci) { + this.pci = pci; + } - public void setDeptName(String deptName) { - this.deptName = deptName; - } + public String getRsrp() { + return rsrp; + } - public String getDevcode() { - return devcode; - } + public void setRsrp(String rsrp) { + this.rsrp = rsrp; + } - public void setDevcode(String devcode) { - this.devcode = devcode; - } + public String getId() { + return id; + } - public String getStrength() { - return strength; - } + public void setId(String id) { + this.id = id; + } - public void setStrength(String strength) { - this.strength = strength; - } + public String getCell() { + return cell; + } - public String getWellCode() { - return wellCode; - } + public void setCell(String cell) { + this.cell = cell; + } - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } + public String getStregnth() { + return stregnth; + } - public String getDeptid() { - return deptid; - } + public void setStregnth(String stregnth) { + this.stregnth = stregnth; + } - public void setDeptid(String deptid) { - this.deptid = deptid; - } + public String getUptime() { + return uptime; + } - public String getDeviceTypeName() { - return deviceTypeName; - } - - public void setDeviceTypeName(String deviceTypeName) { - this.deviceTypeName = deviceTypeName; - } - - public String getCell() { - return cell; - } - - public void setCell(String cell) { - this.cell = cell; - } - - public String getDescn() { - return descn; - } - - public void setDescn(String descn) { - this.descn = descn; - } - - public String getLogtime() { - return logtime; - } - - public void setLogtime(String logtime) { - this.logtime = logtime; - } - - public String getUptime() { - return uptime; - } - - public void setUptime(String uptime) { - this.uptime = uptime; - } + public void setUptime(String uptime) { + this.uptime = uptime; } } } diff --git a/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java b/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java index 5fe5c55..bef5a6c 100644 --- a/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java +++ b/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java @@ -6,23 +6,23 @@ public class LineChartEntryModel { //折线数据 - private List entryList; + private List entries; //折线颜色 - private List lineColors; + private Integer lineColor; - public List getEntryList() { - return entryList; + public List getEntries() { + return entries; } - public void setEntryList(List entryList) { - this.entryList = entryList; + public void setEntries(List entries) { + this.entries = entries; } - public List getLineColors() { - return lineColors; + public Integer getLineColor() { + return lineColor; } - public void setLineColors(List lineColors) { - this.lineColors = lineColors; + public void setLineColor(Integer lineColor) { + this.lineColor = lineColor; } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt index 2b32974..acde78f 100644 --- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt @@ -22,35 +22,28 @@ * 折线图 * */ fun setLineChartData( - chart: LineChart, xAxisDate: MutableList, entryModels: List + chart: LineChart, xAxisDate: MutableList, entryModel: LineChartEntryModel ) { //每次加载数据都初始化折线图 chart.init(BaseApplication.obtainInstance()) - //[{"entryList":[],"lineColor":-13118290}] - if (entryModels[0].entryList?.isEmpty() == true) { + if (entryModel.entries.isEmpty()) { chart.clearValues() return } //绑定数据 val lineDataSets: MutableList = ArrayList() - val entrySize = entryModels[0].entryList!!.size - entryModels.forEachIndexed { index, it -> - //设置数据 - val dataSet = if (entrySize == 1) { - LineDataSet(it.entryList, it.entryList?.get(0)?.data.toString()) - } else { - LineDataSet(it.entryList, it.entryList?.get(index)?.data.toString()) - } - dataSet.setDrawCircles(true) - //线条颜色 - dataSet.color = it.lineColors[index] - //圆点颜色 - dataSet.setCircleColor(it.lineColors[index]) - dataSet.setDrawFilled(true) - dataSet.fillColor = it.lineColors[index] - dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER - lineDataSets.add(dataSet) - } + //设置数据 + val dataSet = LineDataSet(entryModel.entries, entryModel.entries[0].data.toString()) + dataSet.setDrawCircles(true) + //线条颜色 + dataSet.color = entryModel.lineColor + //圆点颜色 + dataSet.setCircleColor(entryModel.lineColor) + dataSet.setDrawFilled(true) + dataSet.fillColor = entryModel.lineColor + dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER + lineDataSets.add(dataSet) + val lineData = LineData(lineDataSets) lineData.setDrawValues(false) //添加自定义Marker @@ -60,17 +53,10 @@ chart.marker = markerView //设置X轴坐标 val xAxis = chart.xAxis - xAxis.valueFormatter = if (entrySize == 1) { - object : ValueFormatter() { - override fun getFormattedValue(value: Float): String { - return xAxisDate[0] - } - } - } else { - object : ValueFormatter() { - override fun getFormattedValue(value: Float): String { - return xAxisDate[value.toInt()] - } + xAxis.labelRotationAngle = -45f + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return xAxisDate[value.toInt()] } } chart.data = lineData 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 bd223b1..c1205c8 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 @@ -159,19 +159,14 @@ ): String /** - * 获取管盯分页列表 + * 获取管盯历史数据 * */ - @GET("/tubedata/list") + @GET("/tube/groupdevice/history") suspend fun obtainDeviceHistoryData( @Header("token") token: String, - @Query("deptid") deptid: String?, - @Query("keywords") keywords: String?, + @Query("devcode") devcode: String?, @Query("beginTime") beginTime: String?, - @Query("endTime") endTime: String?, - @Query("sort") sort: String?, - @Query("order") order: String?, - @Query("offset") offset: Int, - @Query("limit") limit: Int + @Query("endTime") endTime: String? ): String /** diff --git a/app/build.gradle b/app/build.gradle index 989a8ec..da5584a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,9 +48,9 @@ dependencies { //基础依赖库 implementation files('libs/lite-release.aar') - implementation 'androidx.core:core-ktx:1.7.0' + implementation 'androidx.core:core-ktx:1.8.0' implementation 'androidx.appcompat:appcompat:1.4.2' - implementation 'com.google.android.material:material:1.4.0' + implementation 'com.google.android.material:material:1.6.1' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //沉浸式状态栏。基础依赖包,必须要依赖 @@ -62,12 +62,12 @@ implementation 'com.qmuiteam:arch:0.3.1' //MVVM+LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3d8ef3b..be29277 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,9 +43,7 @@ - + diff --git a/app/src/main/java/com/casic/smarttube/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt index a6b2d58..32358e3 100644 --- a/app/src/main/java/com/casic/smarttube/extensions/String.kt +++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt @@ -5,8 +5,11 @@ import com.casic.smarttube.utils.LocaleConstant import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.dateToTimestamp import com.pengxh.kt.lite.utils.SaveKeyValues import org.json.JSONObject +import java.text.SimpleDateFormat +import java.util.* /** * String扩展方法 @@ -62,4 +65,13 @@ e.printStackTrace() } return R.drawable.ic_battery_0 +} + +/** + * 时间转月日 + */ +fun String.dateToMonthDay(): String { + val timestamp = this.dateToTimestamp() + val dateFormat = SimpleDateFormat("MM-dd", Locale.CHINA) + return dateFormat.format(Date(timestamp)) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java b/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java index f4096ea..f0463fc 100644 --- a/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java +++ b/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java @@ -5,9 +5,9 @@ public class DeviceHistoryDataModel { private int code; - private DataBean data; + private List data; private String message; - private boolean success; + private String success; public int getCode() { return code; @@ -17,11 +17,11 @@ this.code = code; } - public DataBean getData() { + public List getData() { return data; } - public void setData(DataBean data) { + public void setData(List data) { this.data = data; } @@ -33,134 +33,95 @@ this.message = message; } - public boolean isSuccess() { + public String getSuccess() { return success; } - public void setSuccess(boolean success) { + public void setSuccess(String success) { this.success = success; } public static class DataBean { - private List rows; - private int total; + private String devcode; + private String wellCode; + private String snr; + private String pci; + private String rsrp; + private String id; + private String cell; + private String stregnth; + private String uptime; - public List getRows() { - return rows; + public String getDevcode() { + return devcode; } - public void setRows(List rows) { - this.rows = rows; + public void setDevcode(String devcode) { + this.devcode = devcode; } - public int getTotal() { - return total; + public String getWellCode() { + return wellCode; } - public void setTotal(int total) { - this.total = total; + public void setWellCode(String wellCode) { + this.wellCode = wellCode; } - public static class RowsBean { - private String deviceType; - private String deptName; - private String devcode; - private String strength; - private String wellCode; - private String deptid; - private String deviceTypeName; - private String cell; - private String descn; - private String logtime; - private String uptime; + public String getSnr() { + return snr; + } - public String getDeviceType() { - return deviceType; - } + public void setSnr(String snr) { + this.snr = snr; + } - public void setDeviceType(String deviceType) { - this.deviceType = deviceType; - } + public String getPci() { + return pci; + } - public String getDeptName() { - return deptName; - } + public void setPci(String pci) { + this.pci = pci; + } - public void setDeptName(String deptName) { - this.deptName = deptName; - } + public String getRsrp() { + return rsrp; + } - public String getDevcode() { - return devcode; - } + public void setRsrp(String rsrp) { + this.rsrp = rsrp; + } - public void setDevcode(String devcode) { - this.devcode = devcode; - } + public String getId() { + return id; + } - public String getStrength() { - return strength; - } + public void setId(String id) { + this.id = id; + } - public void setStrength(String strength) { - this.strength = strength; - } + public String getCell() { + return cell; + } - public String getWellCode() { - return wellCode; - } + public void setCell(String cell) { + this.cell = cell; + } - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } + public String getStregnth() { + return stregnth; + } - public String getDeptid() { - return deptid; - } + public void setStregnth(String stregnth) { + this.stregnth = stregnth; + } - public void setDeptid(String deptid) { - this.deptid = deptid; - } + public String getUptime() { + return uptime; + } - public String getDeviceTypeName() { - return deviceTypeName; - } - - public void setDeviceTypeName(String deviceTypeName) { - this.deviceTypeName = deviceTypeName; - } - - public String getCell() { - return cell; - } - - public void setCell(String cell) { - this.cell = cell; - } - - public String getDescn() { - return descn; - } - - public void setDescn(String descn) { - this.descn = descn; - } - - public String getLogtime() { - return logtime; - } - - public void setLogtime(String logtime) { - this.logtime = logtime; - } - - public String getUptime() { - return uptime; - } - - public void setUptime(String uptime) { - this.uptime = uptime; - } + public void setUptime(String uptime) { + this.uptime = uptime; } } } diff --git a/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java b/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java index 5fe5c55..bef5a6c 100644 --- a/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java +++ b/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java @@ -6,23 +6,23 @@ public class LineChartEntryModel { //折线数据 - private List entryList; + private List entries; //折线颜色 - private List lineColors; + private Integer lineColor; - public List getEntryList() { - return entryList; + public List getEntries() { + return entries; } - public void setEntryList(List entryList) { - this.entryList = entryList; + public void setEntries(List entries) { + this.entries = entries; } - public List getLineColors() { - return lineColors; + public Integer getLineColor() { + return lineColor; } - public void setLineColors(List lineColors) { - this.lineColors = lineColors; + public void setLineColor(Integer lineColor) { + this.lineColor = lineColor; } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt index 2b32974..acde78f 100644 --- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt @@ -22,35 +22,28 @@ * 折线图 * */ fun setLineChartData( - chart: LineChart, xAxisDate: MutableList, entryModels: List + chart: LineChart, xAxisDate: MutableList, entryModel: LineChartEntryModel ) { //每次加载数据都初始化折线图 chart.init(BaseApplication.obtainInstance()) - //[{"entryList":[],"lineColor":-13118290}] - if (entryModels[0].entryList?.isEmpty() == true) { + if (entryModel.entries.isEmpty()) { chart.clearValues() return } //绑定数据 val lineDataSets: MutableList = ArrayList() - val entrySize = entryModels[0].entryList!!.size - entryModels.forEachIndexed { index, it -> - //设置数据 - val dataSet = if (entrySize == 1) { - LineDataSet(it.entryList, it.entryList?.get(0)?.data.toString()) - } else { - LineDataSet(it.entryList, it.entryList?.get(index)?.data.toString()) - } - dataSet.setDrawCircles(true) - //线条颜色 - dataSet.color = it.lineColors[index] - //圆点颜色 - dataSet.setCircleColor(it.lineColors[index]) - dataSet.setDrawFilled(true) - dataSet.fillColor = it.lineColors[index] - dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER - lineDataSets.add(dataSet) - } + //设置数据 + val dataSet = LineDataSet(entryModel.entries, entryModel.entries[0].data.toString()) + dataSet.setDrawCircles(true) + //线条颜色 + dataSet.color = entryModel.lineColor + //圆点颜色 + dataSet.setCircleColor(entryModel.lineColor) + dataSet.setDrawFilled(true) + dataSet.fillColor = entryModel.lineColor + dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER + lineDataSets.add(dataSet) + val lineData = LineData(lineDataSets) lineData.setDrawValues(false) //添加自定义Marker @@ -60,17 +53,10 @@ chart.marker = markerView //设置X轴坐标 val xAxis = chart.xAxis - xAxis.valueFormatter = if (entrySize == 1) { - object : ValueFormatter() { - override fun getFormattedValue(value: Float): String { - return xAxisDate[0] - } - } - } else { - object : ValueFormatter() { - override fun getFormattedValue(value: Float): String { - return xAxisDate[value.toInt()] - } + xAxis.labelRotationAngle = -45f + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return xAxisDate[value.toInt()] } } chart.data = lineData 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 bd223b1..c1205c8 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 @@ -159,19 +159,14 @@ ): String /** - * 获取管盯分页列表 + * 获取管盯历史数据 * */ - @GET("/tubedata/list") + @GET("/tube/groupdevice/history") suspend fun obtainDeviceHistoryData( @Header("token") token: String, - @Query("deptid") deptid: String?, - @Query("keywords") keywords: String?, + @Query("devcode") devcode: String?, @Query("beginTime") beginTime: String?, - @Query("endTime") endTime: String?, - @Query("sort") sort: String?, - @Query("order") order: String?, - @Query("offset") offset: Int, - @Query("limit") limit: Int + @Query("endTime") endTime: String? ): String /** 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 8bc44d8..a18a820 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 @@ -130,11 +130,10 @@ * 根据设备编号获取历史数据 */ suspend fun obtainDeviceHistoryData( - deptid: String, keywords: String, beginTime: String?, endTime: String? + devcode: String, beginTime: String?, endTime: String? ): String { return api.obtainDeviceHistoryData( - AuthenticationHelper.token!!, deptid, keywords, beginTime, endTime, - "", "", 1, 1000 + AuthenticationHelper.token!!, devcode, beginTime, endTime ) } diff --git a/app/build.gradle b/app/build.gradle index 989a8ec..da5584a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,9 +48,9 @@ dependencies { //基础依赖库 implementation files('libs/lite-release.aar') - implementation 'androidx.core:core-ktx:1.7.0' + implementation 'androidx.core:core-ktx:1.8.0' implementation 'androidx.appcompat:appcompat:1.4.2' - implementation 'com.google.android.material:material:1.4.0' + implementation 'com.google.android.material:material:1.6.1' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //沉浸式状态栏。基础依赖包,必须要依赖 @@ -62,12 +62,12 @@ implementation 'com.qmuiteam:arch:0.3.1' //MVVM+LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3d8ef3b..be29277 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,9 +43,7 @@ - + diff --git a/app/src/main/java/com/casic/smarttube/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt index a6b2d58..32358e3 100644 --- a/app/src/main/java/com/casic/smarttube/extensions/String.kt +++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt @@ -5,8 +5,11 @@ import com.casic.smarttube.utils.LocaleConstant import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.dateToTimestamp import com.pengxh.kt.lite.utils.SaveKeyValues import org.json.JSONObject +import java.text.SimpleDateFormat +import java.util.* /** * String扩展方法 @@ -62,4 +65,13 @@ e.printStackTrace() } return R.drawable.ic_battery_0 +} + +/** + * 时间转月日 + */ +fun String.dateToMonthDay(): String { + val timestamp = this.dateToTimestamp() + val dateFormat = SimpleDateFormat("MM-dd", Locale.CHINA) + return dateFormat.format(Date(timestamp)) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java b/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java index f4096ea..f0463fc 100644 --- a/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java +++ b/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java @@ -5,9 +5,9 @@ public class DeviceHistoryDataModel { private int code; - private DataBean data; + private List data; private String message; - private boolean success; + private String success; public int getCode() { return code; @@ -17,11 +17,11 @@ this.code = code; } - public DataBean getData() { + public List getData() { return data; } - public void setData(DataBean data) { + public void setData(List data) { this.data = data; } @@ -33,134 +33,95 @@ this.message = message; } - public boolean isSuccess() { + public String getSuccess() { return success; } - public void setSuccess(boolean success) { + public void setSuccess(String success) { this.success = success; } public static class DataBean { - private List rows; - private int total; + private String devcode; + private String wellCode; + private String snr; + private String pci; + private String rsrp; + private String id; + private String cell; + private String stregnth; + private String uptime; - public List getRows() { - return rows; + public String getDevcode() { + return devcode; } - public void setRows(List rows) { - this.rows = rows; + public void setDevcode(String devcode) { + this.devcode = devcode; } - public int getTotal() { - return total; + public String getWellCode() { + return wellCode; } - public void setTotal(int total) { - this.total = total; + public void setWellCode(String wellCode) { + this.wellCode = wellCode; } - public static class RowsBean { - private String deviceType; - private String deptName; - private String devcode; - private String strength; - private String wellCode; - private String deptid; - private String deviceTypeName; - private String cell; - private String descn; - private String logtime; - private String uptime; + public String getSnr() { + return snr; + } - public String getDeviceType() { - return deviceType; - } + public void setSnr(String snr) { + this.snr = snr; + } - public void setDeviceType(String deviceType) { - this.deviceType = deviceType; - } + public String getPci() { + return pci; + } - public String getDeptName() { - return deptName; - } + public void setPci(String pci) { + this.pci = pci; + } - public void setDeptName(String deptName) { - this.deptName = deptName; - } + public String getRsrp() { + return rsrp; + } - public String getDevcode() { - return devcode; - } + public void setRsrp(String rsrp) { + this.rsrp = rsrp; + } - public void setDevcode(String devcode) { - this.devcode = devcode; - } + public String getId() { + return id; + } - public String getStrength() { - return strength; - } + public void setId(String id) { + this.id = id; + } - public void setStrength(String strength) { - this.strength = strength; - } + public String getCell() { + return cell; + } - public String getWellCode() { - return wellCode; - } + public void setCell(String cell) { + this.cell = cell; + } - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } + public String getStregnth() { + return stregnth; + } - public String getDeptid() { - return deptid; - } + public void setStregnth(String stregnth) { + this.stregnth = stregnth; + } - public void setDeptid(String deptid) { - this.deptid = deptid; - } + public String getUptime() { + return uptime; + } - public String getDeviceTypeName() { - return deviceTypeName; - } - - public void setDeviceTypeName(String deviceTypeName) { - this.deviceTypeName = deviceTypeName; - } - - public String getCell() { - return cell; - } - - public void setCell(String cell) { - this.cell = cell; - } - - public String getDescn() { - return descn; - } - - public void setDescn(String descn) { - this.descn = descn; - } - - public String getLogtime() { - return logtime; - } - - public void setLogtime(String logtime) { - this.logtime = logtime; - } - - public String getUptime() { - return uptime; - } - - public void setUptime(String uptime) { - this.uptime = uptime; - } + public void setUptime(String uptime) { + this.uptime = uptime; } } } diff --git a/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java b/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java index 5fe5c55..bef5a6c 100644 --- a/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java +++ b/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java @@ -6,23 +6,23 @@ public class LineChartEntryModel { //折线数据 - private List entryList; + private List entries; //折线颜色 - private List lineColors; + private Integer lineColor; - public List getEntryList() { - return entryList; + public List getEntries() { + return entries; } - public void setEntryList(List entryList) { - this.entryList = entryList; + public void setEntries(List entries) { + this.entries = entries; } - public List getLineColors() { - return lineColors; + public Integer getLineColor() { + return lineColor; } - public void setLineColors(List lineColors) { - this.lineColors = lineColors; + public void setLineColor(Integer lineColor) { + this.lineColor = lineColor; } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt index 2b32974..acde78f 100644 --- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt @@ -22,35 +22,28 @@ * 折线图 * */ fun setLineChartData( - chart: LineChart, xAxisDate: MutableList, entryModels: List + chart: LineChart, xAxisDate: MutableList, entryModel: LineChartEntryModel ) { //每次加载数据都初始化折线图 chart.init(BaseApplication.obtainInstance()) - //[{"entryList":[],"lineColor":-13118290}] - if (entryModels[0].entryList?.isEmpty() == true) { + if (entryModel.entries.isEmpty()) { chart.clearValues() return } //绑定数据 val lineDataSets: MutableList = ArrayList() - val entrySize = entryModels[0].entryList!!.size - entryModels.forEachIndexed { index, it -> - //设置数据 - val dataSet = if (entrySize == 1) { - LineDataSet(it.entryList, it.entryList?.get(0)?.data.toString()) - } else { - LineDataSet(it.entryList, it.entryList?.get(index)?.data.toString()) - } - dataSet.setDrawCircles(true) - //线条颜色 - dataSet.color = it.lineColors[index] - //圆点颜色 - dataSet.setCircleColor(it.lineColors[index]) - dataSet.setDrawFilled(true) - dataSet.fillColor = it.lineColors[index] - dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER - lineDataSets.add(dataSet) - } + //设置数据 + val dataSet = LineDataSet(entryModel.entries, entryModel.entries[0].data.toString()) + dataSet.setDrawCircles(true) + //线条颜色 + dataSet.color = entryModel.lineColor + //圆点颜色 + dataSet.setCircleColor(entryModel.lineColor) + dataSet.setDrawFilled(true) + dataSet.fillColor = entryModel.lineColor + dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER + lineDataSets.add(dataSet) + val lineData = LineData(lineDataSets) lineData.setDrawValues(false) //添加自定义Marker @@ -60,17 +53,10 @@ chart.marker = markerView //设置X轴坐标 val xAxis = chart.xAxis - xAxis.valueFormatter = if (entrySize == 1) { - object : ValueFormatter() { - override fun getFormattedValue(value: Float): String { - return xAxisDate[0] - } - } - } else { - object : ValueFormatter() { - override fun getFormattedValue(value: Float): String { - return xAxisDate[value.toInt()] - } + xAxis.labelRotationAngle = -45f + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return xAxisDate[value.toInt()] } } chart.data = lineData 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 bd223b1..c1205c8 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 @@ -159,19 +159,14 @@ ): String /** - * 获取管盯分页列表 + * 获取管盯历史数据 * */ - @GET("/tubedata/list") + @GET("/tube/groupdevice/history") suspend fun obtainDeviceHistoryData( @Header("token") token: String, - @Query("deptid") deptid: String?, - @Query("keywords") keywords: String?, + @Query("devcode") devcode: String?, @Query("beginTime") beginTime: String?, - @Query("endTime") endTime: String?, - @Query("sort") sort: String?, - @Query("order") order: String?, - @Query("offset") offset: Int, - @Query("limit") limit: Int + @Query("endTime") endTime: String? ): String /** 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 8bc44d8..a18a820 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 @@ -130,11 +130,10 @@ * 根据设备编号获取历史数据 */ suspend fun obtainDeviceHistoryData( - deptid: String, keywords: String, beginTime: String?, endTime: String? + devcode: String, beginTime: String?, endTime: String? ): String { return api.obtainDeviceHistoryData( - AuthenticationHelper.token!!, deptid, keywords, beginTime, endTime, - "", "", 1, 1000 + AuthenticationHelper.token!!, devcode, beginTime, endTime ) } diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index 83458ab..8a287d4 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -130,10 +130,18 @@ deviceAdapter.setOnItemClickListener(object : DeviceListAdapter.OnItemClickListener { override fun onClicked(position: Int) { + if (dataBeans[position].devcode.isNullOrBlank()) { + "设备编号为空,无法查看历设备详情".show(this@GroupDeviceActivity) + return + } navigatePageTo(dataBeans[position].tubeId) } override fun onHistoryClicked(position: Int) { + if (dataBeans[position].devcode.isNullOrBlank()) { + "设备编号为空,无法查看历史数据".show(this@GroupDeviceActivity) + return + } navigatePageTo(dataBeans[position].devcode) } }) diff --git a/app/build.gradle b/app/build.gradle index 989a8ec..da5584a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,9 +48,9 @@ dependencies { //基础依赖库 implementation files('libs/lite-release.aar') - implementation 'androidx.core:core-ktx:1.7.0' + implementation 'androidx.core:core-ktx:1.8.0' implementation 'androidx.appcompat:appcompat:1.4.2' - implementation 'com.google.android.material:material:1.4.0' + implementation 'com.google.android.material:material:1.6.1' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //沉浸式状态栏。基础依赖包,必须要依赖 @@ -62,12 +62,12 @@ implementation 'com.qmuiteam:arch:0.3.1' //MVVM+LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3d8ef3b..be29277 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,9 +43,7 @@ - + diff --git a/app/src/main/java/com/casic/smarttube/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt index a6b2d58..32358e3 100644 --- a/app/src/main/java/com/casic/smarttube/extensions/String.kt +++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt @@ -5,8 +5,11 @@ import com.casic.smarttube.utils.LocaleConstant import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.dateToTimestamp import com.pengxh.kt.lite.utils.SaveKeyValues import org.json.JSONObject +import java.text.SimpleDateFormat +import java.util.* /** * String扩展方法 @@ -62,4 +65,13 @@ e.printStackTrace() } return R.drawable.ic_battery_0 +} + +/** + * 时间转月日 + */ +fun String.dateToMonthDay(): String { + val timestamp = this.dateToTimestamp() + val dateFormat = SimpleDateFormat("MM-dd", Locale.CHINA) + return dateFormat.format(Date(timestamp)) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java b/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java index f4096ea..f0463fc 100644 --- a/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java +++ b/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java @@ -5,9 +5,9 @@ public class DeviceHistoryDataModel { private int code; - private DataBean data; + private List data; private String message; - private boolean success; + private String success; public int getCode() { return code; @@ -17,11 +17,11 @@ this.code = code; } - public DataBean getData() { + public List getData() { return data; } - public void setData(DataBean data) { + public void setData(List data) { this.data = data; } @@ -33,134 +33,95 @@ this.message = message; } - public boolean isSuccess() { + public String getSuccess() { return success; } - public void setSuccess(boolean success) { + public void setSuccess(String success) { this.success = success; } public static class DataBean { - private List rows; - private int total; + private String devcode; + private String wellCode; + private String snr; + private String pci; + private String rsrp; + private String id; + private String cell; + private String stregnth; + private String uptime; - public List getRows() { - return rows; + public String getDevcode() { + return devcode; } - public void setRows(List rows) { - this.rows = rows; + public void setDevcode(String devcode) { + this.devcode = devcode; } - public int getTotal() { - return total; + public String getWellCode() { + return wellCode; } - public void setTotal(int total) { - this.total = total; + public void setWellCode(String wellCode) { + this.wellCode = wellCode; } - public static class RowsBean { - private String deviceType; - private String deptName; - private String devcode; - private String strength; - private String wellCode; - private String deptid; - private String deviceTypeName; - private String cell; - private String descn; - private String logtime; - private String uptime; + public String getSnr() { + return snr; + } - public String getDeviceType() { - return deviceType; - } + public void setSnr(String snr) { + this.snr = snr; + } - public void setDeviceType(String deviceType) { - this.deviceType = deviceType; - } + public String getPci() { + return pci; + } - public String getDeptName() { - return deptName; - } + public void setPci(String pci) { + this.pci = pci; + } - public void setDeptName(String deptName) { - this.deptName = deptName; - } + public String getRsrp() { + return rsrp; + } - public String getDevcode() { - return devcode; - } + public void setRsrp(String rsrp) { + this.rsrp = rsrp; + } - public void setDevcode(String devcode) { - this.devcode = devcode; - } + public String getId() { + return id; + } - public String getStrength() { - return strength; - } + public void setId(String id) { + this.id = id; + } - public void setStrength(String strength) { - this.strength = strength; - } + public String getCell() { + return cell; + } - public String getWellCode() { - return wellCode; - } + public void setCell(String cell) { + this.cell = cell; + } - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } + public String getStregnth() { + return stregnth; + } - public String getDeptid() { - return deptid; - } + public void setStregnth(String stregnth) { + this.stregnth = stregnth; + } - public void setDeptid(String deptid) { - this.deptid = deptid; - } + public String getUptime() { + return uptime; + } - public String getDeviceTypeName() { - return deviceTypeName; - } - - public void setDeviceTypeName(String deviceTypeName) { - this.deviceTypeName = deviceTypeName; - } - - public String getCell() { - return cell; - } - - public void setCell(String cell) { - this.cell = cell; - } - - public String getDescn() { - return descn; - } - - public void setDescn(String descn) { - this.descn = descn; - } - - public String getLogtime() { - return logtime; - } - - public void setLogtime(String logtime) { - this.logtime = logtime; - } - - public String getUptime() { - return uptime; - } - - public void setUptime(String uptime) { - this.uptime = uptime; - } + public void setUptime(String uptime) { + this.uptime = uptime; } } } diff --git a/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java b/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java index 5fe5c55..bef5a6c 100644 --- a/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java +++ b/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java @@ -6,23 +6,23 @@ public class LineChartEntryModel { //折线数据 - private List entryList; + private List entries; //折线颜色 - private List lineColors; + private Integer lineColor; - public List getEntryList() { - return entryList; + public List getEntries() { + return entries; } - public void setEntryList(List entryList) { - this.entryList = entryList; + public void setEntries(List entries) { + this.entries = entries; } - public List getLineColors() { - return lineColors; + public Integer getLineColor() { + return lineColor; } - public void setLineColors(List lineColors) { - this.lineColors = lineColors; + public void setLineColor(Integer lineColor) { + this.lineColor = lineColor; } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt index 2b32974..acde78f 100644 --- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt @@ -22,35 +22,28 @@ * 折线图 * */ fun setLineChartData( - chart: LineChart, xAxisDate: MutableList, entryModels: List + chart: LineChart, xAxisDate: MutableList, entryModel: LineChartEntryModel ) { //每次加载数据都初始化折线图 chart.init(BaseApplication.obtainInstance()) - //[{"entryList":[],"lineColor":-13118290}] - if (entryModels[0].entryList?.isEmpty() == true) { + if (entryModel.entries.isEmpty()) { chart.clearValues() return } //绑定数据 val lineDataSets: MutableList = ArrayList() - val entrySize = entryModels[0].entryList!!.size - entryModels.forEachIndexed { index, it -> - //设置数据 - val dataSet = if (entrySize == 1) { - LineDataSet(it.entryList, it.entryList?.get(0)?.data.toString()) - } else { - LineDataSet(it.entryList, it.entryList?.get(index)?.data.toString()) - } - dataSet.setDrawCircles(true) - //线条颜色 - dataSet.color = it.lineColors[index] - //圆点颜色 - dataSet.setCircleColor(it.lineColors[index]) - dataSet.setDrawFilled(true) - dataSet.fillColor = it.lineColors[index] - dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER - lineDataSets.add(dataSet) - } + //设置数据 + val dataSet = LineDataSet(entryModel.entries, entryModel.entries[0].data.toString()) + dataSet.setDrawCircles(true) + //线条颜色 + dataSet.color = entryModel.lineColor + //圆点颜色 + dataSet.setCircleColor(entryModel.lineColor) + dataSet.setDrawFilled(true) + dataSet.fillColor = entryModel.lineColor + dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER + lineDataSets.add(dataSet) + val lineData = LineData(lineDataSets) lineData.setDrawValues(false) //添加自定义Marker @@ -60,17 +53,10 @@ chart.marker = markerView //设置X轴坐标 val xAxis = chart.xAxis - xAxis.valueFormatter = if (entrySize == 1) { - object : ValueFormatter() { - override fun getFormattedValue(value: Float): String { - return xAxisDate[0] - } - } - } else { - object : ValueFormatter() { - override fun getFormattedValue(value: Float): String { - return xAxisDate[value.toInt()] - } + xAxis.labelRotationAngle = -45f + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return xAxisDate[value.toInt()] } } chart.data = lineData 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 bd223b1..c1205c8 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 @@ -159,19 +159,14 @@ ): String /** - * 获取管盯分页列表 + * 获取管盯历史数据 * */ - @GET("/tubedata/list") + @GET("/tube/groupdevice/history") suspend fun obtainDeviceHistoryData( @Header("token") token: String, - @Query("deptid") deptid: String?, - @Query("keywords") keywords: String?, + @Query("devcode") devcode: String?, @Query("beginTime") beginTime: String?, - @Query("endTime") endTime: String?, - @Query("sort") sort: String?, - @Query("order") order: String?, - @Query("offset") offset: Int, - @Query("limit") limit: Int + @Query("endTime") endTime: String? ): String /** 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 8bc44d8..a18a820 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 @@ -130,11 +130,10 @@ * 根据设备编号获取历史数据 */ suspend fun obtainDeviceHistoryData( - deptid: String, keywords: String, beginTime: String?, endTime: String? + devcode: String, beginTime: String?, endTime: String? ): String { return api.obtainDeviceHistoryData( - AuthenticationHelper.token!!, deptid, keywords, beginTime, endTime, - "", "", 1, 1000 + AuthenticationHelper.token!!, devcode, beginTime, endTime ) } diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index 83458ab..8a287d4 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -130,10 +130,18 @@ deviceAdapter.setOnItemClickListener(object : DeviceListAdapter.OnItemClickListener { override fun onClicked(position: Int) { + if (dataBeans[position].devcode.isNullOrBlank()) { + "设备编号为空,无法查看历设备详情".show(this@GroupDeviceActivity) + return + } navigatePageTo(dataBeans[position].tubeId) } override fun onHistoryClicked(position: Int) { + if (dataBeans[position].devcode.isNullOrBlank()) { + "设备编号为空,无法查看历史数据".show(this@GroupDeviceActivity) + return + } navigatePageTo(dataBeans[position].devcode) } }) diff --git a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt index 694aff6..292f041 100644 --- a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt @@ -4,6 +4,7 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.smarttube.R +import com.casic.smarttube.extensions.dateToMonthDay import com.casic.smarttube.extensions.getQuarterOfYear import com.casic.smarttube.model.LineChartEntryModel import com.casic.smarttube.utils.ChartViewHelper @@ -13,17 +14,16 @@ import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.timestampToDate -import com.pengxh.kt.lite.extensions.timestampToLastMonthDate -import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_history_data.* +import kotlinx.android.synthetic.main.include_base_title.* import java.util.* class HistoryDataActivity : KotlinBaseActivity() { + private val kTag = "HistoryDataActivity" private lateinit var deviceViewModel: DeviceViewModel private lateinit var devCode: String @@ -32,6 +32,7 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "历史数据" leftBackView.setOnClickListener { finish() } } @@ -55,7 +56,7 @@ 0 -> { //本年度 deviceViewModel.obtainDeviceHistoryData( - "", devCode, "$year-01-01", time.timestampToDate() + devCode, "$year-01-01", time.timestampToDate() ) } 1 -> { @@ -68,25 +69,25 @@ else -> "" } deviceViewModel.obtainDeviceHistoryData( - "", devCode, startDate, time.timestampToDate() + devCode, startDate, time.timestampToDate() ) } 2 -> { //近30日 deviceViewModel.obtainDeviceHistoryData( - "", devCode, time.timestampToLastMonthDate(), time.timestampToDate() + devCode, time.timestampToLastMonthDate(), time.timestampToDate() ) } 3 -> { //近7日 deviceViewModel.obtainDeviceHistoryData( - "", devCode, time.timestampToLastWeekDate(), time.timestampToDate() + devCode, time.timestampToLastWeekDate(), time.timestampToDate() ) } 4 -> { //今日 deviceViewModel.obtainDeviceHistoryData( - "", devCode, time.timestampToDate(), time.timestampToDate() + devCode, time.timestampToDate(), time.timestampToDate() ) } 5 -> { @@ -99,7 +100,7 @@ DateSelectDialog.OnDialogButtonClickListener { override fun onConfirmClick(startDate: String, endDate: String) { deviceViewModel.obtainDeviceHistoryData( - "", devCode, startDate, endDate + devCode, startDate, endDate ) } @@ -122,50 +123,35 @@ deviceViewModel.historyDataModel.observe(this, { if (it.code == 200) { //两条线,电量和浓度线 - val xAxisLabel: MutableList = ArrayList() - val entryModels: MutableList = ArrayList() + val xAxisLabels: MutableList = ArrayList() - val entryModel = LineChartEntryModel() + val strengthEntryModel = LineChartEntryModel() + val cellEntryModel = LineChartEntryModel() //每个entries都是一条折线 - val entries: ArrayList = ArrayList() - val colors: ArrayList = ArrayList() - it.data!!.rows.forEachIndexed { i, rowsBean -> -// { -// "deviceType":"12", -// "deptName":"燃气集团总公司", -// "devcode":"342021000001", -// "strength":"0.00", -// "wellCode":"test001", -// "deptid":"24", -// "deviceTypeName":"管盯", -// "cell":"100", -// "descn":"", -// "logtime":"2022-06-25 10:39:47", -// "uptime":"2022-06-25 10:27:00" -// } - + val strengthEntries: ArrayList = ArrayList() + val cellEntries: ArrayList = ArrayList() + it.data!!.forEachIndexed { i, rowsBean -> // x 轴坐标 - val split = rowsBean.uptime.toString().split(" ") - xAxisLabel.add(split[1]) - - //电量线 - colors.add(R.color.greenColor.convertColor(this)) - entries.add( - Entry(i.toFloat(), rowsBean.cell!!.toFloat(), "电量") - ) - + // 2022-07-06 16:41:00 需要改为 07-06 + xAxisLabels.add(rowsBean.uptime.dateToMonthDay()) //浓度线 - colors.add(R.color.redTextColor.convertColor(this)) - entries.add( - Entry(i.toFloat(), rowsBean.strength!!.toFloat(), "浓度") + strengthEntries.add( + Entry(i.toFloat(), rowsBean.stregnth!!.toFloat(), "浓度") + ) + + //电量线 + cellEntries.add( + Entry(i.toFloat(), rowsBean.cell!!.toFloat(), "设备电量") ) } - entryModel.lineColors = colors - entryModel.entryList = entries - entryModels.add(entryModel) + strengthEntryModel.lineColor = R.color.redTextColor.convertColor(this) + strengthEntryModel.entries = strengthEntries + ChartViewHelper.setLineChartData(dataLineChart, xAxisLabels, strengthEntryModel) - ChartViewHelper.setLineChartData(dataLineChart, xAxisLabel, entryModels) + cellEntryModel.lineColor = R.color.greenColor.convertColor(this) + cellEntryModel.entries = cellEntries + ChartViewHelper.setLineChartData(batteryDataChart, xAxisLabels, cellEntryModel) } }) } diff --git a/app/build.gradle b/app/build.gradle index 989a8ec..da5584a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,9 +48,9 @@ dependencies { //基础依赖库 implementation files('libs/lite-release.aar') - implementation 'androidx.core:core-ktx:1.7.0' + implementation 'androidx.core:core-ktx:1.8.0' implementation 'androidx.appcompat:appcompat:1.4.2' - implementation 'com.google.android.material:material:1.4.0' + implementation 'com.google.android.material:material:1.6.1' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //沉浸式状态栏。基础依赖包,必须要依赖 @@ -62,12 +62,12 @@ implementation 'com.qmuiteam:arch:0.3.1' //MVVM+LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3d8ef3b..be29277 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,9 +43,7 @@ - + diff --git a/app/src/main/java/com/casic/smarttube/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt index a6b2d58..32358e3 100644 --- a/app/src/main/java/com/casic/smarttube/extensions/String.kt +++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt @@ -5,8 +5,11 @@ import com.casic.smarttube.utils.LocaleConstant import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.dateToTimestamp import com.pengxh.kt.lite.utils.SaveKeyValues import org.json.JSONObject +import java.text.SimpleDateFormat +import java.util.* /** * String扩展方法 @@ -62,4 +65,13 @@ e.printStackTrace() } return R.drawable.ic_battery_0 +} + +/** + * 时间转月日 + */ +fun String.dateToMonthDay(): String { + val timestamp = this.dateToTimestamp() + val dateFormat = SimpleDateFormat("MM-dd", Locale.CHINA) + return dateFormat.format(Date(timestamp)) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java b/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java index f4096ea..f0463fc 100644 --- a/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java +++ b/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java @@ -5,9 +5,9 @@ public class DeviceHistoryDataModel { private int code; - private DataBean data; + private List data; private String message; - private boolean success; + private String success; public int getCode() { return code; @@ -17,11 +17,11 @@ this.code = code; } - public DataBean getData() { + public List getData() { return data; } - public void setData(DataBean data) { + public void setData(List data) { this.data = data; } @@ -33,134 +33,95 @@ this.message = message; } - public boolean isSuccess() { + public String getSuccess() { return success; } - public void setSuccess(boolean success) { + public void setSuccess(String success) { this.success = success; } public static class DataBean { - private List rows; - private int total; + private String devcode; + private String wellCode; + private String snr; + private String pci; + private String rsrp; + private String id; + private String cell; + private String stregnth; + private String uptime; - public List getRows() { - return rows; + public String getDevcode() { + return devcode; } - public void setRows(List rows) { - this.rows = rows; + public void setDevcode(String devcode) { + this.devcode = devcode; } - public int getTotal() { - return total; + public String getWellCode() { + return wellCode; } - public void setTotal(int total) { - this.total = total; + public void setWellCode(String wellCode) { + this.wellCode = wellCode; } - public static class RowsBean { - private String deviceType; - private String deptName; - private String devcode; - private String strength; - private String wellCode; - private String deptid; - private String deviceTypeName; - private String cell; - private String descn; - private String logtime; - private String uptime; + public String getSnr() { + return snr; + } - public String getDeviceType() { - return deviceType; - } + public void setSnr(String snr) { + this.snr = snr; + } - public void setDeviceType(String deviceType) { - this.deviceType = deviceType; - } + public String getPci() { + return pci; + } - public String getDeptName() { - return deptName; - } + public void setPci(String pci) { + this.pci = pci; + } - public void setDeptName(String deptName) { - this.deptName = deptName; - } + public String getRsrp() { + return rsrp; + } - public String getDevcode() { - return devcode; - } + public void setRsrp(String rsrp) { + this.rsrp = rsrp; + } - public void setDevcode(String devcode) { - this.devcode = devcode; - } + public String getId() { + return id; + } - public String getStrength() { - return strength; - } + public void setId(String id) { + this.id = id; + } - public void setStrength(String strength) { - this.strength = strength; - } + public String getCell() { + return cell; + } - public String getWellCode() { - return wellCode; - } + public void setCell(String cell) { + this.cell = cell; + } - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } + public String getStregnth() { + return stregnth; + } - public String getDeptid() { - return deptid; - } + public void setStregnth(String stregnth) { + this.stregnth = stregnth; + } - public void setDeptid(String deptid) { - this.deptid = deptid; - } + public String getUptime() { + return uptime; + } - public String getDeviceTypeName() { - return deviceTypeName; - } - - public void setDeviceTypeName(String deviceTypeName) { - this.deviceTypeName = deviceTypeName; - } - - public String getCell() { - return cell; - } - - public void setCell(String cell) { - this.cell = cell; - } - - public String getDescn() { - return descn; - } - - public void setDescn(String descn) { - this.descn = descn; - } - - public String getLogtime() { - return logtime; - } - - public void setLogtime(String logtime) { - this.logtime = logtime; - } - - public String getUptime() { - return uptime; - } - - public void setUptime(String uptime) { - this.uptime = uptime; - } + public void setUptime(String uptime) { + this.uptime = uptime; } } } diff --git a/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java b/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java index 5fe5c55..bef5a6c 100644 --- a/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java +++ b/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java @@ -6,23 +6,23 @@ public class LineChartEntryModel { //折线数据 - private List entryList; + private List entries; //折线颜色 - private List lineColors; + private Integer lineColor; - public List getEntryList() { - return entryList; + public List getEntries() { + return entries; } - public void setEntryList(List entryList) { - this.entryList = entryList; + public void setEntries(List entries) { + this.entries = entries; } - public List getLineColors() { - return lineColors; + public Integer getLineColor() { + return lineColor; } - public void setLineColors(List lineColors) { - this.lineColors = lineColors; + public void setLineColor(Integer lineColor) { + this.lineColor = lineColor; } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt index 2b32974..acde78f 100644 --- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt @@ -22,35 +22,28 @@ * 折线图 * */ fun setLineChartData( - chart: LineChart, xAxisDate: MutableList, entryModels: List + chart: LineChart, xAxisDate: MutableList, entryModel: LineChartEntryModel ) { //每次加载数据都初始化折线图 chart.init(BaseApplication.obtainInstance()) - //[{"entryList":[],"lineColor":-13118290}] - if (entryModels[0].entryList?.isEmpty() == true) { + if (entryModel.entries.isEmpty()) { chart.clearValues() return } //绑定数据 val lineDataSets: MutableList = ArrayList() - val entrySize = entryModels[0].entryList!!.size - entryModels.forEachIndexed { index, it -> - //设置数据 - val dataSet = if (entrySize == 1) { - LineDataSet(it.entryList, it.entryList?.get(0)?.data.toString()) - } else { - LineDataSet(it.entryList, it.entryList?.get(index)?.data.toString()) - } - dataSet.setDrawCircles(true) - //线条颜色 - dataSet.color = it.lineColors[index] - //圆点颜色 - dataSet.setCircleColor(it.lineColors[index]) - dataSet.setDrawFilled(true) - dataSet.fillColor = it.lineColors[index] - dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER - lineDataSets.add(dataSet) - } + //设置数据 + val dataSet = LineDataSet(entryModel.entries, entryModel.entries[0].data.toString()) + dataSet.setDrawCircles(true) + //线条颜色 + dataSet.color = entryModel.lineColor + //圆点颜色 + dataSet.setCircleColor(entryModel.lineColor) + dataSet.setDrawFilled(true) + dataSet.fillColor = entryModel.lineColor + dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER + lineDataSets.add(dataSet) + val lineData = LineData(lineDataSets) lineData.setDrawValues(false) //添加自定义Marker @@ -60,17 +53,10 @@ chart.marker = markerView //设置X轴坐标 val xAxis = chart.xAxis - xAxis.valueFormatter = if (entrySize == 1) { - object : ValueFormatter() { - override fun getFormattedValue(value: Float): String { - return xAxisDate[0] - } - } - } else { - object : ValueFormatter() { - override fun getFormattedValue(value: Float): String { - return xAxisDate[value.toInt()] - } + xAxis.labelRotationAngle = -45f + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return xAxisDate[value.toInt()] } } chart.data = lineData 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 bd223b1..c1205c8 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 @@ -159,19 +159,14 @@ ): String /** - * 获取管盯分页列表 + * 获取管盯历史数据 * */ - @GET("/tubedata/list") + @GET("/tube/groupdevice/history") suspend fun obtainDeviceHistoryData( @Header("token") token: String, - @Query("deptid") deptid: String?, - @Query("keywords") keywords: String?, + @Query("devcode") devcode: String?, @Query("beginTime") beginTime: String?, - @Query("endTime") endTime: String?, - @Query("sort") sort: String?, - @Query("order") order: String?, - @Query("offset") offset: Int, - @Query("limit") limit: Int + @Query("endTime") endTime: String? ): String /** 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 8bc44d8..a18a820 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 @@ -130,11 +130,10 @@ * 根据设备编号获取历史数据 */ suspend fun obtainDeviceHistoryData( - deptid: String, keywords: String, beginTime: String?, endTime: String? + devcode: String, beginTime: String?, endTime: String? ): String { return api.obtainDeviceHistoryData( - AuthenticationHelper.token!!, deptid, keywords, beginTime, endTime, - "", "", 1, 1000 + AuthenticationHelper.token!!, devcode, beginTime, endTime ) } diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index 83458ab..8a287d4 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -130,10 +130,18 @@ deviceAdapter.setOnItemClickListener(object : DeviceListAdapter.OnItemClickListener { override fun onClicked(position: Int) { + if (dataBeans[position].devcode.isNullOrBlank()) { + "设备编号为空,无法查看历设备详情".show(this@GroupDeviceActivity) + return + } navigatePageTo(dataBeans[position].tubeId) } override fun onHistoryClicked(position: Int) { + if (dataBeans[position].devcode.isNullOrBlank()) { + "设备编号为空,无法查看历史数据".show(this@GroupDeviceActivity) + return + } navigatePageTo(dataBeans[position].devcode) } }) diff --git a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt index 694aff6..292f041 100644 --- a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt @@ -4,6 +4,7 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.smarttube.R +import com.casic.smarttube.extensions.dateToMonthDay import com.casic.smarttube.extensions.getQuarterOfYear import com.casic.smarttube.model.LineChartEntryModel import com.casic.smarttube.utils.ChartViewHelper @@ -13,17 +14,16 @@ import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.timestampToDate -import com.pengxh.kt.lite.extensions.timestampToLastMonthDate -import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_history_data.* +import kotlinx.android.synthetic.main.include_base_title.* import java.util.* class HistoryDataActivity : KotlinBaseActivity() { + private val kTag = "HistoryDataActivity" private lateinit var deviceViewModel: DeviceViewModel private lateinit var devCode: String @@ -32,6 +32,7 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "历史数据" leftBackView.setOnClickListener { finish() } } @@ -55,7 +56,7 @@ 0 -> { //本年度 deviceViewModel.obtainDeviceHistoryData( - "", devCode, "$year-01-01", time.timestampToDate() + devCode, "$year-01-01", time.timestampToDate() ) } 1 -> { @@ -68,25 +69,25 @@ else -> "" } deviceViewModel.obtainDeviceHistoryData( - "", devCode, startDate, time.timestampToDate() + devCode, startDate, time.timestampToDate() ) } 2 -> { //近30日 deviceViewModel.obtainDeviceHistoryData( - "", devCode, time.timestampToLastMonthDate(), time.timestampToDate() + devCode, time.timestampToLastMonthDate(), time.timestampToDate() ) } 3 -> { //近7日 deviceViewModel.obtainDeviceHistoryData( - "", devCode, time.timestampToLastWeekDate(), time.timestampToDate() + devCode, time.timestampToLastWeekDate(), time.timestampToDate() ) } 4 -> { //今日 deviceViewModel.obtainDeviceHistoryData( - "", devCode, time.timestampToDate(), time.timestampToDate() + devCode, time.timestampToDate(), time.timestampToDate() ) } 5 -> { @@ -99,7 +100,7 @@ DateSelectDialog.OnDialogButtonClickListener { override fun onConfirmClick(startDate: String, endDate: String) { deviceViewModel.obtainDeviceHistoryData( - "", devCode, startDate, endDate + devCode, startDate, endDate ) } @@ -122,50 +123,35 @@ deviceViewModel.historyDataModel.observe(this, { if (it.code == 200) { //两条线,电量和浓度线 - val xAxisLabel: MutableList = ArrayList() - val entryModels: MutableList = ArrayList() + val xAxisLabels: MutableList = ArrayList() - val entryModel = LineChartEntryModel() + val strengthEntryModel = LineChartEntryModel() + val cellEntryModel = LineChartEntryModel() //每个entries都是一条折线 - val entries: ArrayList = ArrayList() - val colors: ArrayList = ArrayList() - it.data!!.rows.forEachIndexed { i, rowsBean -> -// { -// "deviceType":"12", -// "deptName":"燃气集团总公司", -// "devcode":"342021000001", -// "strength":"0.00", -// "wellCode":"test001", -// "deptid":"24", -// "deviceTypeName":"管盯", -// "cell":"100", -// "descn":"", -// "logtime":"2022-06-25 10:39:47", -// "uptime":"2022-06-25 10:27:00" -// } - + val strengthEntries: ArrayList = ArrayList() + val cellEntries: ArrayList = ArrayList() + it.data!!.forEachIndexed { i, rowsBean -> // x 轴坐标 - val split = rowsBean.uptime.toString().split(" ") - xAxisLabel.add(split[1]) - - //电量线 - colors.add(R.color.greenColor.convertColor(this)) - entries.add( - Entry(i.toFloat(), rowsBean.cell!!.toFloat(), "电量") - ) - + // 2022-07-06 16:41:00 需要改为 07-06 + xAxisLabels.add(rowsBean.uptime.dateToMonthDay()) //浓度线 - colors.add(R.color.redTextColor.convertColor(this)) - entries.add( - Entry(i.toFloat(), rowsBean.strength!!.toFloat(), "浓度") + strengthEntries.add( + Entry(i.toFloat(), rowsBean.stregnth!!.toFloat(), "浓度") + ) + + //电量线 + cellEntries.add( + Entry(i.toFloat(), rowsBean.cell!!.toFloat(), "设备电量") ) } - entryModel.lineColors = colors - entryModel.entryList = entries - entryModels.add(entryModel) + strengthEntryModel.lineColor = R.color.redTextColor.convertColor(this) + strengthEntryModel.entries = strengthEntries + ChartViewHelper.setLineChartData(dataLineChart, xAxisLabels, strengthEntryModel) - ChartViewHelper.setLineChartData(dataLineChart, xAxisLabel, entryModels) + cellEntryModel.lineColor = R.color.greenColor.convertColor(this) + cellEntryModel.entries = cellEntries + ChartViewHelper.setLineChartData(batteryDataChart, xAxisLabels, cellEntryModel) } }) } diff --git a/app/src/main/java/com/casic/smarttube/vm/DeviceViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/DeviceViewModel.kt index 1541eb4..84e8885 100644 --- a/app/src/main/java/com/casic/smarttube/vm/DeviceViewModel.kt +++ b/app/src/main/java/com/casic/smarttube/vm/DeviceViewModel.kt @@ -6,7 +6,6 @@ import com.casic.smarttube.extensions.toErrorMessage import com.casic.smarttube.model.DeviceDetailModel import com.casic.smarttube.model.DeviceHistoryDataModel -import com.casic.smarttube.model.DeviceListModel import com.casic.smarttube.model.MapDeviceModel import com.casic.smarttube.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -54,16 +53,12 @@ it.printStackTrace() }) - fun obtainDeviceHistoryData( - deptid: String, keywords: String, beginTime: String?, endTime: String? - ) = launch({ - val response = RetrofitServiceManager.obtainDeviceHistoryData( - deptid, keywords, beginTime, endTime - ) + fun obtainDeviceHistoryData(devcode: String, beginTime: String?, endTime: String?) = launch({ + val response = RetrofitServiceManager.obtainDeviceHistoryData(devcode, beginTime, endTime) val responseCode = response.separateResponseCode() if (responseCode == 200) { historyDataModel.value = gson.fromJson( - response, object : TypeToken() {}.type + response, object : TypeToken() {}.type ) } else { response.toErrorMessage().show(BaseApplication.obtainInstance()) diff --git a/app/build.gradle b/app/build.gradle index 989a8ec..da5584a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,9 +48,9 @@ dependencies { //基础依赖库 implementation files('libs/lite-release.aar') - implementation 'androidx.core:core-ktx:1.7.0' + implementation 'androidx.core:core-ktx:1.8.0' implementation 'androidx.appcompat:appcompat:1.4.2' - implementation 'com.google.android.material:material:1.4.0' + implementation 'com.google.android.material:material:1.6.1' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //沉浸式状态栏。基础依赖包,必须要依赖 @@ -62,12 +62,12 @@ implementation 'com.qmuiteam:arch:0.3.1' //MVVM+LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3d8ef3b..be29277 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,9 +43,7 @@ - + diff --git a/app/src/main/java/com/casic/smarttube/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt index a6b2d58..32358e3 100644 --- a/app/src/main/java/com/casic/smarttube/extensions/String.kt +++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt @@ -5,8 +5,11 @@ import com.casic.smarttube.utils.LocaleConstant import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.dateToTimestamp import com.pengxh.kt.lite.utils.SaveKeyValues import org.json.JSONObject +import java.text.SimpleDateFormat +import java.util.* /** * String扩展方法 @@ -62,4 +65,13 @@ e.printStackTrace() } return R.drawable.ic_battery_0 +} + +/** + * 时间转月日 + */ +fun String.dateToMonthDay(): String { + val timestamp = this.dateToTimestamp() + val dateFormat = SimpleDateFormat("MM-dd", Locale.CHINA) + return dateFormat.format(Date(timestamp)) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java b/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java index f4096ea..f0463fc 100644 --- a/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java +++ b/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java @@ -5,9 +5,9 @@ public class DeviceHistoryDataModel { private int code; - private DataBean data; + private List data; private String message; - private boolean success; + private String success; public int getCode() { return code; @@ -17,11 +17,11 @@ this.code = code; } - public DataBean getData() { + public List getData() { return data; } - public void setData(DataBean data) { + public void setData(List data) { this.data = data; } @@ -33,134 +33,95 @@ this.message = message; } - public boolean isSuccess() { + public String getSuccess() { return success; } - public void setSuccess(boolean success) { + public void setSuccess(String success) { this.success = success; } public static class DataBean { - private List rows; - private int total; + private String devcode; + private String wellCode; + private String snr; + private String pci; + private String rsrp; + private String id; + private String cell; + private String stregnth; + private String uptime; - public List getRows() { - return rows; + public String getDevcode() { + return devcode; } - public void setRows(List rows) { - this.rows = rows; + public void setDevcode(String devcode) { + this.devcode = devcode; } - public int getTotal() { - return total; + public String getWellCode() { + return wellCode; } - public void setTotal(int total) { - this.total = total; + public void setWellCode(String wellCode) { + this.wellCode = wellCode; } - public static class RowsBean { - private String deviceType; - private String deptName; - private String devcode; - private String strength; - private String wellCode; - private String deptid; - private String deviceTypeName; - private String cell; - private String descn; - private String logtime; - private String uptime; + public String getSnr() { + return snr; + } - public String getDeviceType() { - return deviceType; - } + public void setSnr(String snr) { + this.snr = snr; + } - public void setDeviceType(String deviceType) { - this.deviceType = deviceType; - } + public String getPci() { + return pci; + } - public String getDeptName() { - return deptName; - } + public void setPci(String pci) { + this.pci = pci; + } - public void setDeptName(String deptName) { - this.deptName = deptName; - } + public String getRsrp() { + return rsrp; + } - public String getDevcode() { - return devcode; - } + public void setRsrp(String rsrp) { + this.rsrp = rsrp; + } - public void setDevcode(String devcode) { - this.devcode = devcode; - } + public String getId() { + return id; + } - public String getStrength() { - return strength; - } + public void setId(String id) { + this.id = id; + } - public void setStrength(String strength) { - this.strength = strength; - } + public String getCell() { + return cell; + } - public String getWellCode() { - return wellCode; - } + public void setCell(String cell) { + this.cell = cell; + } - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } + public String getStregnth() { + return stregnth; + } - public String getDeptid() { - return deptid; - } + public void setStregnth(String stregnth) { + this.stregnth = stregnth; + } - public void setDeptid(String deptid) { - this.deptid = deptid; - } + public String getUptime() { + return uptime; + } - public String getDeviceTypeName() { - return deviceTypeName; - } - - public void setDeviceTypeName(String deviceTypeName) { - this.deviceTypeName = deviceTypeName; - } - - public String getCell() { - return cell; - } - - public void setCell(String cell) { - this.cell = cell; - } - - public String getDescn() { - return descn; - } - - public void setDescn(String descn) { - this.descn = descn; - } - - public String getLogtime() { - return logtime; - } - - public void setLogtime(String logtime) { - this.logtime = logtime; - } - - public String getUptime() { - return uptime; - } - - public void setUptime(String uptime) { - this.uptime = uptime; - } + public void setUptime(String uptime) { + this.uptime = uptime; } } } diff --git a/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java b/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java index 5fe5c55..bef5a6c 100644 --- a/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java +++ b/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java @@ -6,23 +6,23 @@ public class LineChartEntryModel { //折线数据 - private List entryList; + private List entries; //折线颜色 - private List lineColors; + private Integer lineColor; - public List getEntryList() { - return entryList; + public List getEntries() { + return entries; } - public void setEntryList(List entryList) { - this.entryList = entryList; + public void setEntries(List entries) { + this.entries = entries; } - public List getLineColors() { - return lineColors; + public Integer getLineColor() { + return lineColor; } - public void setLineColors(List lineColors) { - this.lineColors = lineColors; + public void setLineColor(Integer lineColor) { + this.lineColor = lineColor; } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt index 2b32974..acde78f 100644 --- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt @@ -22,35 +22,28 @@ * 折线图 * */ fun setLineChartData( - chart: LineChart, xAxisDate: MutableList, entryModels: List + chart: LineChart, xAxisDate: MutableList, entryModel: LineChartEntryModel ) { //每次加载数据都初始化折线图 chart.init(BaseApplication.obtainInstance()) - //[{"entryList":[],"lineColor":-13118290}] - if (entryModels[0].entryList?.isEmpty() == true) { + if (entryModel.entries.isEmpty()) { chart.clearValues() return } //绑定数据 val lineDataSets: MutableList = ArrayList() - val entrySize = entryModels[0].entryList!!.size - entryModels.forEachIndexed { index, it -> - //设置数据 - val dataSet = if (entrySize == 1) { - LineDataSet(it.entryList, it.entryList?.get(0)?.data.toString()) - } else { - LineDataSet(it.entryList, it.entryList?.get(index)?.data.toString()) - } - dataSet.setDrawCircles(true) - //线条颜色 - dataSet.color = it.lineColors[index] - //圆点颜色 - dataSet.setCircleColor(it.lineColors[index]) - dataSet.setDrawFilled(true) - dataSet.fillColor = it.lineColors[index] - dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER - lineDataSets.add(dataSet) - } + //设置数据 + val dataSet = LineDataSet(entryModel.entries, entryModel.entries[0].data.toString()) + dataSet.setDrawCircles(true) + //线条颜色 + dataSet.color = entryModel.lineColor + //圆点颜色 + dataSet.setCircleColor(entryModel.lineColor) + dataSet.setDrawFilled(true) + dataSet.fillColor = entryModel.lineColor + dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER + lineDataSets.add(dataSet) + val lineData = LineData(lineDataSets) lineData.setDrawValues(false) //添加自定义Marker @@ -60,17 +53,10 @@ chart.marker = markerView //设置X轴坐标 val xAxis = chart.xAxis - xAxis.valueFormatter = if (entrySize == 1) { - object : ValueFormatter() { - override fun getFormattedValue(value: Float): String { - return xAxisDate[0] - } - } - } else { - object : ValueFormatter() { - override fun getFormattedValue(value: Float): String { - return xAxisDate[value.toInt()] - } + xAxis.labelRotationAngle = -45f + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return xAxisDate[value.toInt()] } } chart.data = lineData 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 bd223b1..c1205c8 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 @@ -159,19 +159,14 @@ ): String /** - * 获取管盯分页列表 + * 获取管盯历史数据 * */ - @GET("/tubedata/list") + @GET("/tube/groupdevice/history") suspend fun obtainDeviceHistoryData( @Header("token") token: String, - @Query("deptid") deptid: String?, - @Query("keywords") keywords: String?, + @Query("devcode") devcode: String?, @Query("beginTime") beginTime: String?, - @Query("endTime") endTime: String?, - @Query("sort") sort: String?, - @Query("order") order: String?, - @Query("offset") offset: Int, - @Query("limit") limit: Int + @Query("endTime") endTime: String? ): String /** 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 8bc44d8..a18a820 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 @@ -130,11 +130,10 @@ * 根据设备编号获取历史数据 */ suspend fun obtainDeviceHistoryData( - deptid: String, keywords: String, beginTime: String?, endTime: String? + devcode: String, beginTime: String?, endTime: String? ): String { return api.obtainDeviceHistoryData( - AuthenticationHelper.token!!, deptid, keywords, beginTime, endTime, - "", "", 1, 1000 + AuthenticationHelper.token!!, devcode, beginTime, endTime ) } diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index 83458ab..8a287d4 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -130,10 +130,18 @@ deviceAdapter.setOnItemClickListener(object : DeviceListAdapter.OnItemClickListener { override fun onClicked(position: Int) { + if (dataBeans[position].devcode.isNullOrBlank()) { + "设备编号为空,无法查看历设备详情".show(this@GroupDeviceActivity) + return + } navigatePageTo(dataBeans[position].tubeId) } override fun onHistoryClicked(position: Int) { + if (dataBeans[position].devcode.isNullOrBlank()) { + "设备编号为空,无法查看历史数据".show(this@GroupDeviceActivity) + return + } navigatePageTo(dataBeans[position].devcode) } }) diff --git a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt index 694aff6..292f041 100644 --- a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt @@ -4,6 +4,7 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.smarttube.R +import com.casic.smarttube.extensions.dateToMonthDay import com.casic.smarttube.extensions.getQuarterOfYear import com.casic.smarttube.model.LineChartEntryModel import com.casic.smarttube.utils.ChartViewHelper @@ -13,17 +14,16 @@ import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.timestampToDate -import com.pengxh.kt.lite.extensions.timestampToLastMonthDate -import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_history_data.* +import kotlinx.android.synthetic.main.include_base_title.* import java.util.* class HistoryDataActivity : KotlinBaseActivity() { + private val kTag = "HistoryDataActivity" private lateinit var deviceViewModel: DeviceViewModel private lateinit var devCode: String @@ -32,6 +32,7 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "历史数据" leftBackView.setOnClickListener { finish() } } @@ -55,7 +56,7 @@ 0 -> { //本年度 deviceViewModel.obtainDeviceHistoryData( - "", devCode, "$year-01-01", time.timestampToDate() + devCode, "$year-01-01", time.timestampToDate() ) } 1 -> { @@ -68,25 +69,25 @@ else -> "" } deviceViewModel.obtainDeviceHistoryData( - "", devCode, startDate, time.timestampToDate() + devCode, startDate, time.timestampToDate() ) } 2 -> { //近30日 deviceViewModel.obtainDeviceHistoryData( - "", devCode, time.timestampToLastMonthDate(), time.timestampToDate() + devCode, time.timestampToLastMonthDate(), time.timestampToDate() ) } 3 -> { //近7日 deviceViewModel.obtainDeviceHistoryData( - "", devCode, time.timestampToLastWeekDate(), time.timestampToDate() + devCode, time.timestampToLastWeekDate(), time.timestampToDate() ) } 4 -> { //今日 deviceViewModel.obtainDeviceHistoryData( - "", devCode, time.timestampToDate(), time.timestampToDate() + devCode, time.timestampToDate(), time.timestampToDate() ) } 5 -> { @@ -99,7 +100,7 @@ DateSelectDialog.OnDialogButtonClickListener { override fun onConfirmClick(startDate: String, endDate: String) { deviceViewModel.obtainDeviceHistoryData( - "", devCode, startDate, endDate + devCode, startDate, endDate ) } @@ -122,50 +123,35 @@ deviceViewModel.historyDataModel.observe(this, { if (it.code == 200) { //两条线,电量和浓度线 - val xAxisLabel: MutableList = ArrayList() - val entryModels: MutableList = ArrayList() + val xAxisLabels: MutableList = ArrayList() - val entryModel = LineChartEntryModel() + val strengthEntryModel = LineChartEntryModel() + val cellEntryModel = LineChartEntryModel() //每个entries都是一条折线 - val entries: ArrayList = ArrayList() - val colors: ArrayList = ArrayList() - it.data!!.rows.forEachIndexed { i, rowsBean -> -// { -// "deviceType":"12", -// "deptName":"燃气集团总公司", -// "devcode":"342021000001", -// "strength":"0.00", -// "wellCode":"test001", -// "deptid":"24", -// "deviceTypeName":"管盯", -// "cell":"100", -// "descn":"", -// "logtime":"2022-06-25 10:39:47", -// "uptime":"2022-06-25 10:27:00" -// } - + val strengthEntries: ArrayList = ArrayList() + val cellEntries: ArrayList = ArrayList() + it.data!!.forEachIndexed { i, rowsBean -> // x 轴坐标 - val split = rowsBean.uptime.toString().split(" ") - xAxisLabel.add(split[1]) - - //电量线 - colors.add(R.color.greenColor.convertColor(this)) - entries.add( - Entry(i.toFloat(), rowsBean.cell!!.toFloat(), "电量") - ) - + // 2022-07-06 16:41:00 需要改为 07-06 + xAxisLabels.add(rowsBean.uptime.dateToMonthDay()) //浓度线 - colors.add(R.color.redTextColor.convertColor(this)) - entries.add( - Entry(i.toFloat(), rowsBean.strength!!.toFloat(), "浓度") + strengthEntries.add( + Entry(i.toFloat(), rowsBean.stregnth!!.toFloat(), "浓度") + ) + + //电量线 + cellEntries.add( + Entry(i.toFloat(), rowsBean.cell!!.toFloat(), "设备电量") ) } - entryModel.lineColors = colors - entryModel.entryList = entries - entryModels.add(entryModel) + strengthEntryModel.lineColor = R.color.redTextColor.convertColor(this) + strengthEntryModel.entries = strengthEntries + ChartViewHelper.setLineChartData(dataLineChart, xAxisLabels, strengthEntryModel) - ChartViewHelper.setLineChartData(dataLineChart, xAxisLabel, entryModels) + cellEntryModel.lineColor = R.color.greenColor.convertColor(this) + cellEntryModel.entries = cellEntries + ChartViewHelper.setLineChartData(batteryDataChart, xAxisLabels, cellEntryModel) } }) } diff --git a/app/src/main/java/com/casic/smarttube/vm/DeviceViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/DeviceViewModel.kt index 1541eb4..84e8885 100644 --- a/app/src/main/java/com/casic/smarttube/vm/DeviceViewModel.kt +++ b/app/src/main/java/com/casic/smarttube/vm/DeviceViewModel.kt @@ -6,7 +6,6 @@ import com.casic.smarttube.extensions.toErrorMessage import com.casic.smarttube.model.DeviceDetailModel import com.casic.smarttube.model.DeviceHistoryDataModel -import com.casic.smarttube.model.DeviceListModel import com.casic.smarttube.model.MapDeviceModel import com.casic.smarttube.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -54,16 +53,12 @@ it.printStackTrace() }) - fun obtainDeviceHistoryData( - deptid: String, keywords: String, beginTime: String?, endTime: String? - ) = launch({ - val response = RetrofitServiceManager.obtainDeviceHistoryData( - deptid, keywords, beginTime, endTime - ) + fun obtainDeviceHistoryData(devcode: String, beginTime: String?, endTime: String?) = launch({ + val response = RetrofitServiceManager.obtainDeviceHistoryData(devcode, beginTime, endTime) val responseCode = response.separateResponseCode() if (responseCode == 200) { historyDataModel.value = gson.fromJson( - response, object : TypeToken() {}.type + response, object : TypeToken() {}.type ) } else { response.toErrorMessage().show(BaseApplication.obtainInstance()) diff --git a/app/src/main/java/com/casic/smarttube/widgets/LineChartMarkerView.kt b/app/src/main/java/com/casic/smarttube/widgets/LineChartMarkerView.kt index c1f0c1d..ca0bddd 100644 --- a/app/src/main/java/com/casic/smarttube/widgets/LineChartMarkerView.kt +++ b/app/src/main/java/com/casic/smarttube/widgets/LineChartMarkerView.kt @@ -13,6 +13,7 @@ class LineChartMarkerView(context: Context?) : MarkerView(context, R.layout.popu_line_chart_marker) { + private val kTag = "LineChartMarkerView" private val decimalFormat = DecimalFormat("##0.0") private val dayView: TextView = findViewById(R.id.dayView) private val dataView: TextView = findViewById(R.id.dataView) @@ -27,10 +28,13 @@ super.refreshContent(e, highlight) val data = e.data as String try { - dataView.text = String.format("数据:${decimalFormat.format(e.y.toString().toDouble())}t") + when (data) { + "浓度" -> dataView.text = "浓度:${e.y}%" + "设备电量" -> dataView.text = String.format("设备电量:${e.y.toInt()}") + } dayView.text = xAxisDate[(e.x).toInt()] - } catch (e1: Exception) { - e1.printStackTrace() + } catch (e: Exception) { + e.printStackTrace() } super.refreshContent(e, highlight) } diff --git a/app/build.gradle b/app/build.gradle index 989a8ec..da5584a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,9 +48,9 @@ dependencies { //基础依赖库 implementation files('libs/lite-release.aar') - implementation 'androidx.core:core-ktx:1.7.0' + implementation 'androidx.core:core-ktx:1.8.0' implementation 'androidx.appcompat:appcompat:1.4.2' - implementation 'com.google.android.material:material:1.4.0' + implementation 'com.google.android.material:material:1.6.1' //Google官方授权框架 implementation 'pub.devrel:easypermissions:3.0.0' //沉浸式状态栏。基础依赖包,必须要依赖 @@ -62,12 +62,12 @@ implementation 'com.qmuiteam:arch:0.3.1' //MVVM+LiveData implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3d8ef3b..be29277 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,9 +43,7 @@ - + diff --git a/app/src/main/java/com/casic/smarttube/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt index a6b2d58..32358e3 100644 --- a/app/src/main/java/com/casic/smarttube/extensions/String.kt +++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt @@ -5,8 +5,11 @@ import com.casic.smarttube.utils.LocaleConstant import com.google.gson.Gson import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.dateToTimestamp import com.pengxh.kt.lite.utils.SaveKeyValues import org.json.JSONObject +import java.text.SimpleDateFormat +import java.util.* /** * String扩展方法 @@ -62,4 +65,13 @@ e.printStackTrace() } return R.drawable.ic_battery_0 +} + +/** + * 时间转月日 + */ +fun String.dateToMonthDay(): String { + val timestamp = this.dateToTimestamp() + val dateFormat = SimpleDateFormat("MM-dd", Locale.CHINA) + return dateFormat.format(Date(timestamp)) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java b/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java index f4096ea..f0463fc 100644 --- a/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java +++ b/app/src/main/java/com/casic/smarttube/model/DeviceHistoryDataModel.java @@ -5,9 +5,9 @@ public class DeviceHistoryDataModel { private int code; - private DataBean data; + private List data; private String message; - private boolean success; + private String success; public int getCode() { return code; @@ -17,11 +17,11 @@ this.code = code; } - public DataBean getData() { + public List getData() { return data; } - public void setData(DataBean data) { + public void setData(List data) { this.data = data; } @@ -33,134 +33,95 @@ this.message = message; } - public boolean isSuccess() { + public String getSuccess() { return success; } - public void setSuccess(boolean success) { + public void setSuccess(String success) { this.success = success; } public static class DataBean { - private List rows; - private int total; + private String devcode; + private String wellCode; + private String snr; + private String pci; + private String rsrp; + private String id; + private String cell; + private String stregnth; + private String uptime; - public List getRows() { - return rows; + public String getDevcode() { + return devcode; } - public void setRows(List rows) { - this.rows = rows; + public void setDevcode(String devcode) { + this.devcode = devcode; } - public int getTotal() { - return total; + public String getWellCode() { + return wellCode; } - public void setTotal(int total) { - this.total = total; + public void setWellCode(String wellCode) { + this.wellCode = wellCode; } - public static class RowsBean { - private String deviceType; - private String deptName; - private String devcode; - private String strength; - private String wellCode; - private String deptid; - private String deviceTypeName; - private String cell; - private String descn; - private String logtime; - private String uptime; + public String getSnr() { + return snr; + } - public String getDeviceType() { - return deviceType; - } + public void setSnr(String snr) { + this.snr = snr; + } - public void setDeviceType(String deviceType) { - this.deviceType = deviceType; - } + public String getPci() { + return pci; + } - public String getDeptName() { - return deptName; - } + public void setPci(String pci) { + this.pci = pci; + } - public void setDeptName(String deptName) { - this.deptName = deptName; - } + public String getRsrp() { + return rsrp; + } - public String getDevcode() { - return devcode; - } + public void setRsrp(String rsrp) { + this.rsrp = rsrp; + } - public void setDevcode(String devcode) { - this.devcode = devcode; - } + public String getId() { + return id; + } - public String getStrength() { - return strength; - } + public void setId(String id) { + this.id = id; + } - public void setStrength(String strength) { - this.strength = strength; - } + public String getCell() { + return cell; + } - public String getWellCode() { - return wellCode; - } + public void setCell(String cell) { + this.cell = cell; + } - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } + public String getStregnth() { + return stregnth; + } - public String getDeptid() { - return deptid; - } + public void setStregnth(String stregnth) { + this.stregnth = stregnth; + } - public void setDeptid(String deptid) { - this.deptid = deptid; - } + public String getUptime() { + return uptime; + } - public String getDeviceTypeName() { - return deviceTypeName; - } - - public void setDeviceTypeName(String deviceTypeName) { - this.deviceTypeName = deviceTypeName; - } - - public String getCell() { - return cell; - } - - public void setCell(String cell) { - this.cell = cell; - } - - public String getDescn() { - return descn; - } - - public void setDescn(String descn) { - this.descn = descn; - } - - public String getLogtime() { - return logtime; - } - - public void setLogtime(String logtime) { - this.logtime = logtime; - } - - public String getUptime() { - return uptime; - } - - public void setUptime(String uptime) { - this.uptime = uptime; - } + public void setUptime(String uptime) { + this.uptime = uptime; } } } diff --git a/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java b/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java index 5fe5c55..bef5a6c 100644 --- a/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java +++ b/app/src/main/java/com/casic/smarttube/model/LineChartEntryModel.java @@ -6,23 +6,23 @@ public class LineChartEntryModel { //折线数据 - private List entryList; + private List entries; //折线颜色 - private List lineColors; + private Integer lineColor; - public List getEntryList() { - return entryList; + public List getEntries() { + return entries; } - public void setEntryList(List entryList) { - this.entryList = entryList; + public void setEntries(List entries) { + this.entries = entries; } - public List getLineColors() { - return lineColors; + public Integer getLineColor() { + return lineColor; } - public void setLineColors(List lineColors) { - this.lineColors = lineColors; + public void setLineColor(Integer lineColor) { + this.lineColor = lineColor; } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt index 2b32974..acde78f 100644 --- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt @@ -22,35 +22,28 @@ * 折线图 * */ fun setLineChartData( - chart: LineChart, xAxisDate: MutableList, entryModels: List + chart: LineChart, xAxisDate: MutableList, entryModel: LineChartEntryModel ) { //每次加载数据都初始化折线图 chart.init(BaseApplication.obtainInstance()) - //[{"entryList":[],"lineColor":-13118290}] - if (entryModels[0].entryList?.isEmpty() == true) { + if (entryModel.entries.isEmpty()) { chart.clearValues() return } //绑定数据 val lineDataSets: MutableList = ArrayList() - val entrySize = entryModels[0].entryList!!.size - entryModels.forEachIndexed { index, it -> - //设置数据 - val dataSet = if (entrySize == 1) { - LineDataSet(it.entryList, it.entryList?.get(0)?.data.toString()) - } else { - LineDataSet(it.entryList, it.entryList?.get(index)?.data.toString()) - } - dataSet.setDrawCircles(true) - //线条颜色 - dataSet.color = it.lineColors[index] - //圆点颜色 - dataSet.setCircleColor(it.lineColors[index]) - dataSet.setDrawFilled(true) - dataSet.fillColor = it.lineColors[index] - dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER - lineDataSets.add(dataSet) - } + //设置数据 + val dataSet = LineDataSet(entryModel.entries, entryModel.entries[0].data.toString()) + dataSet.setDrawCircles(true) + //线条颜色 + dataSet.color = entryModel.lineColor + //圆点颜色 + dataSet.setCircleColor(entryModel.lineColor) + dataSet.setDrawFilled(true) + dataSet.fillColor = entryModel.lineColor + dataSet.mode = LineDataSet.Mode.CUBIC_BEZIER + lineDataSets.add(dataSet) + val lineData = LineData(lineDataSets) lineData.setDrawValues(false) //添加自定义Marker @@ -60,17 +53,10 @@ chart.marker = markerView //设置X轴坐标 val xAxis = chart.xAxis - xAxis.valueFormatter = if (entrySize == 1) { - object : ValueFormatter() { - override fun getFormattedValue(value: Float): String { - return xAxisDate[0] - } - } - } else { - object : ValueFormatter() { - override fun getFormattedValue(value: Float): String { - return xAxisDate[value.toInt()] - } + xAxis.labelRotationAngle = -45f + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return xAxisDate[value.toInt()] } } chart.data = lineData 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 bd223b1..c1205c8 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 @@ -159,19 +159,14 @@ ): String /** - * 获取管盯分页列表 + * 获取管盯历史数据 * */ - @GET("/tubedata/list") + @GET("/tube/groupdevice/history") suspend fun obtainDeviceHistoryData( @Header("token") token: String, - @Query("deptid") deptid: String?, - @Query("keywords") keywords: String?, + @Query("devcode") devcode: String?, @Query("beginTime") beginTime: String?, - @Query("endTime") endTime: String?, - @Query("sort") sort: String?, - @Query("order") order: String?, - @Query("offset") offset: Int, - @Query("limit") limit: Int + @Query("endTime") endTime: String? ): String /** 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 8bc44d8..a18a820 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 @@ -130,11 +130,10 @@ * 根据设备编号获取历史数据 */ suspend fun obtainDeviceHistoryData( - deptid: String, keywords: String, beginTime: String?, endTime: String? + devcode: String, beginTime: String?, endTime: String? ): String { return api.obtainDeviceHistoryData( - AuthenticationHelper.token!!, deptid, keywords, beginTime, endTime, - "", "", 1, 1000 + AuthenticationHelper.token!!, devcode, beginTime, endTime ) } diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index 83458ab..8a287d4 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -130,10 +130,18 @@ deviceAdapter.setOnItemClickListener(object : DeviceListAdapter.OnItemClickListener { override fun onClicked(position: Int) { + if (dataBeans[position].devcode.isNullOrBlank()) { + "设备编号为空,无法查看历设备详情".show(this@GroupDeviceActivity) + return + } navigatePageTo(dataBeans[position].tubeId) } override fun onHistoryClicked(position: Int) { + if (dataBeans[position].devcode.isNullOrBlank()) { + "设备编号为空,无法查看历史数据".show(this@GroupDeviceActivity) + return + } navigatePageTo(dataBeans[position].devcode) } }) diff --git a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt index 694aff6..292f041 100644 --- a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt @@ -4,6 +4,7 @@ import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.smarttube.R +import com.casic.smarttube.extensions.dateToMonthDay import com.casic.smarttube.extensions.getQuarterOfYear import com.casic.smarttube.model.LineChartEntryModel import com.casic.smarttube.utils.ChartViewHelper @@ -13,17 +14,16 @@ import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.data.Type import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.timestampToDate -import com.pengxh.kt.lite.extensions.timestampToLastMonthDate -import com.pengxh.kt.lite.extensions.timestampToLastWeekDate +import com.pengxh.kt.lite.extensions.* import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_history_data.* +import kotlinx.android.synthetic.main.include_base_title.* import java.util.* class HistoryDataActivity : KotlinBaseActivity() { + private val kTag = "HistoryDataActivity" private lateinit var deviceViewModel: DeviceViewModel private lateinit var devCode: String @@ -32,6 +32,7 @@ override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) + titleView.text = "历史数据" leftBackView.setOnClickListener { finish() } } @@ -55,7 +56,7 @@ 0 -> { //本年度 deviceViewModel.obtainDeviceHistoryData( - "", devCode, "$year-01-01", time.timestampToDate() + devCode, "$year-01-01", time.timestampToDate() ) } 1 -> { @@ -68,25 +69,25 @@ else -> "" } deviceViewModel.obtainDeviceHistoryData( - "", devCode, startDate, time.timestampToDate() + devCode, startDate, time.timestampToDate() ) } 2 -> { //近30日 deviceViewModel.obtainDeviceHistoryData( - "", devCode, time.timestampToLastMonthDate(), time.timestampToDate() + devCode, time.timestampToLastMonthDate(), time.timestampToDate() ) } 3 -> { //近7日 deviceViewModel.obtainDeviceHistoryData( - "", devCode, time.timestampToLastWeekDate(), time.timestampToDate() + devCode, time.timestampToLastWeekDate(), time.timestampToDate() ) } 4 -> { //今日 deviceViewModel.obtainDeviceHistoryData( - "", devCode, time.timestampToDate(), time.timestampToDate() + devCode, time.timestampToDate(), time.timestampToDate() ) } 5 -> { @@ -99,7 +100,7 @@ DateSelectDialog.OnDialogButtonClickListener { override fun onConfirmClick(startDate: String, endDate: String) { deviceViewModel.obtainDeviceHistoryData( - "", devCode, startDate, endDate + devCode, startDate, endDate ) } @@ -122,50 +123,35 @@ deviceViewModel.historyDataModel.observe(this, { if (it.code == 200) { //两条线,电量和浓度线 - val xAxisLabel: MutableList = ArrayList() - val entryModels: MutableList = ArrayList() + val xAxisLabels: MutableList = ArrayList() - val entryModel = LineChartEntryModel() + val strengthEntryModel = LineChartEntryModel() + val cellEntryModel = LineChartEntryModel() //每个entries都是一条折线 - val entries: ArrayList = ArrayList() - val colors: ArrayList = ArrayList() - it.data!!.rows.forEachIndexed { i, rowsBean -> -// { -// "deviceType":"12", -// "deptName":"燃气集团总公司", -// "devcode":"342021000001", -// "strength":"0.00", -// "wellCode":"test001", -// "deptid":"24", -// "deviceTypeName":"管盯", -// "cell":"100", -// "descn":"", -// "logtime":"2022-06-25 10:39:47", -// "uptime":"2022-06-25 10:27:00" -// } - + val strengthEntries: ArrayList = ArrayList() + val cellEntries: ArrayList = ArrayList() + it.data!!.forEachIndexed { i, rowsBean -> // x 轴坐标 - val split = rowsBean.uptime.toString().split(" ") - xAxisLabel.add(split[1]) - - //电量线 - colors.add(R.color.greenColor.convertColor(this)) - entries.add( - Entry(i.toFloat(), rowsBean.cell!!.toFloat(), "电量") - ) - + // 2022-07-06 16:41:00 需要改为 07-06 + xAxisLabels.add(rowsBean.uptime.dateToMonthDay()) //浓度线 - colors.add(R.color.redTextColor.convertColor(this)) - entries.add( - Entry(i.toFloat(), rowsBean.strength!!.toFloat(), "浓度") + strengthEntries.add( + Entry(i.toFloat(), rowsBean.stregnth!!.toFloat(), "浓度") + ) + + //电量线 + cellEntries.add( + Entry(i.toFloat(), rowsBean.cell!!.toFloat(), "设备电量") ) } - entryModel.lineColors = colors - entryModel.entryList = entries - entryModels.add(entryModel) + strengthEntryModel.lineColor = R.color.redTextColor.convertColor(this) + strengthEntryModel.entries = strengthEntries + ChartViewHelper.setLineChartData(dataLineChart, xAxisLabels, strengthEntryModel) - ChartViewHelper.setLineChartData(dataLineChart, xAxisLabel, entryModels) + cellEntryModel.lineColor = R.color.greenColor.convertColor(this) + cellEntryModel.entries = cellEntries + ChartViewHelper.setLineChartData(batteryDataChart, xAxisLabels, cellEntryModel) } }) } diff --git a/app/src/main/java/com/casic/smarttube/vm/DeviceViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/DeviceViewModel.kt index 1541eb4..84e8885 100644 --- a/app/src/main/java/com/casic/smarttube/vm/DeviceViewModel.kt +++ b/app/src/main/java/com/casic/smarttube/vm/DeviceViewModel.kt @@ -6,7 +6,6 @@ import com.casic.smarttube.extensions.toErrorMessage import com.casic.smarttube.model.DeviceDetailModel import com.casic.smarttube.model.DeviceHistoryDataModel -import com.casic.smarttube.model.DeviceListModel import com.casic.smarttube.model.MapDeviceModel import com.casic.smarttube.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -54,16 +53,12 @@ it.printStackTrace() }) - fun obtainDeviceHistoryData( - deptid: String, keywords: String, beginTime: String?, endTime: String? - ) = launch({ - val response = RetrofitServiceManager.obtainDeviceHistoryData( - deptid, keywords, beginTime, endTime - ) + fun obtainDeviceHistoryData(devcode: String, beginTime: String?, endTime: String?) = launch({ + val response = RetrofitServiceManager.obtainDeviceHistoryData(devcode, beginTime, endTime) val responseCode = response.separateResponseCode() if (responseCode == 200) { historyDataModel.value = gson.fromJson( - response, object : TypeToken() {}.type + response, object : TypeToken() {}.type ) } else { response.toErrorMessage().show(BaseApplication.obtainInstance()) diff --git a/app/src/main/java/com/casic/smarttube/widgets/LineChartMarkerView.kt b/app/src/main/java/com/casic/smarttube/widgets/LineChartMarkerView.kt index c1f0c1d..ca0bddd 100644 --- a/app/src/main/java/com/casic/smarttube/widgets/LineChartMarkerView.kt +++ b/app/src/main/java/com/casic/smarttube/widgets/LineChartMarkerView.kt @@ -13,6 +13,7 @@ class LineChartMarkerView(context: Context?) : MarkerView(context, R.layout.popu_line_chart_marker) { + private val kTag = "LineChartMarkerView" private val decimalFormat = DecimalFormat("##0.0") private val dayView: TextView = findViewById(R.id.dayView) private val dataView: TextView = findViewById(R.id.dataView) @@ -27,10 +28,13 @@ super.refreshContent(e, highlight) val data = e.data as String try { - dataView.text = String.format("数据:${decimalFormat.format(e.y.toString().toDouble())}t") + when (data) { + "浓度" -> dataView.text = "浓度:${e.y}%" + "设备电量" -> dataView.text = String.format("设备电量:${e.y.toInt()}") + } dayView.text = xAxisDate[(e.x).toInt()] - } catch (e1: Exception) { - e1.printStackTrace() + } catch (e: Exception) { + e.printStackTrace() } super.refreshContent(e, highlight) } diff --git a/app/src/main/res/layout/activity_history_data.xml b/app/src/main/res/layout/activity_history_data.xml index d65443d..28e5366 100644 --- a/app/src/main/res/layout/activity_history_data.xml +++ b/app/src/main/res/layout/activity_history_data.xml @@ -7,43 +7,59 @@ android:orientation="vertical" tools:context=".view.HistoryDataActivity"> + + + android:layout_height="match_parent" + android:orientation="vertical" + android:paddingHorizontal="@dimen/dp_10"> - + + + + + + + + + + + - + + + + - - - - - \ No newline at end of file