|
@@ -0,0 +1,95 @@
|
|
|
+package com.hzliuzhi.applet.device.pulse
|
|
|
+
|
|
|
+import com.google.gson.Gson
|
|
|
+import com.google.gson.annotations.SerializedName
|
|
|
+import com.google.gson.stream.JsonReader
|
|
|
+import java.io.StringReader
|
|
|
+
|
|
|
+
|
|
|
+data class PulseResult(
|
|
|
+ @SerializedName("summary_desc")
|
|
|
+ val summaryLabel: SummaryLabel? = null,
|
|
|
+ @SerializedName("summary")
|
|
|
+ val summaryValue: SummaryValue? = null,
|
|
|
+ val time: String? = null,
|
|
|
+
|
|
|
+ val appId: String? = null,
|
|
|
+ val userId: String? = null,
|
|
|
+ val measureId: String? = null,
|
|
|
+ val url: String? = null,
|
|
|
+ val report: String = "",
|
|
|
+) {
|
|
|
+ data class SummaryLabel(
|
|
|
+ @SerializedName("summary")
|
|
|
+ val hands: List<String>? = emptyList(),
|
|
|
+ val left: Detail? = null,
|
|
|
+ val right: Detail? = null,
|
|
|
+ ) {
|
|
|
+ data class Detail(
|
|
|
+ val summary: List<String>? = emptyList(),
|
|
|
+ val guan: String? = null,
|
|
|
+ val chi: String? = null,
|
|
|
+ val cun: String? = null,
|
|
|
+ )
|
|
|
+ }
|
|
|
+
|
|
|
+ data class SummaryValue(
|
|
|
+ /* 弦 */
|
|
|
+ val xian: List<Float>? = emptyList(),
|
|
|
+ /* 软 */
|
|
|
+ val ruan: List<Float>? = emptyList(),
|
|
|
+
|
|
|
+ /* 浮 */
|
|
|
+ val fu: List<Float>? = emptyList(),
|
|
|
+ /* 沉 */
|
|
|
+ val chen: List<Float>? = emptyList(),
|
|
|
+
|
|
|
+ /* 滑 */
|
|
|
+ val hua: List<Float>? = emptyList(),
|
|
|
+ /* 细 */
|
|
|
+ val xi: List<Float>? = emptyList(),
|
|
|
+
|
|
|
+ /* 数 */
|
|
|
+ val shu: List<Float>? = emptyList(),
|
|
|
+ /* 迟 */
|
|
|
+ val chi: List<Float>? = emptyList(),
|
|
|
+
|
|
|
+ val kong: List<Float>? = emptyList(),
|
|
|
+ val shi: List<Float>? = emptyList(),
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
+ companion object {
|
|
|
+ fun fromJson(json: String) = fromJson(JsonReader(StringReader(json)))
|
|
|
+
|
|
|
+ private fun fromJson(reader: JsonReader) = try {
|
|
|
+ Gson().fromJson<PulseResult>(reader, PulseResult::class.java)
|
|
|
+ } catch (_: Throwable) {
|
|
|
+ null
|
|
|
+ }
|
|
|
+
|
|
|
+ fun toJson(result: PulseResult): String = try {
|
|
|
+ toMap(result).let { Gson().toJson(it) }
|
|
|
+ } catch (_: Throwable) {
|
|
|
+ ""
|
|
|
+ }
|
|
|
+
|
|
|
+ fun toMap(result: PulseResult): Map<String, Any?> {
|
|
|
+ val map = mutableMapOf<String, Any?>()
|
|
|
+ map["summaryLabel"] = result.summaryLabel
|
|
|
+ map["summaryValue"] = result.summaryValue
|
|
|
+
|
|
|
+ map["time"] = result.time
|
|
|
+
|
|
|
+ map["appId"] = result.appId
|
|
|
+ map["userId"] = result.userId
|
|
|
+ map["measureId"] = result.measureId
|
|
|
+ map["url"] = result.url
|
|
|
+ map["report"] = result.report
|
|
|
+ return map
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ fun toMap() = toMap(this)
|
|
|
+ override fun toString(): String = toJson(this)
|
|
|
+}
|