From b880de09285b99e9ea4c56d5596b2cc0b98cf2b6 Mon Sep 17 00:00:00 2001 From: xiaowusky Date: Tue, 27 Jun 2023 11:44:42 +0800 Subject: [PATCH] =?UTF-8?q?desc:=E4=BA=91=E7=AB=AF=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yinuo/safetywatcher/TestUtils.kt | 2 +- .../safetywatcher/watcher/bean/GasReqBean.kt | 14 ++- .../watcher/{net => bean}/GasRequest.kt | 3 +- .../{net => bean}/GetRtspUrlResponse.kt | 2 +- .../safetywatcher/watcher/bean/HistoryData.kt | 3 - .../watcher/bean/LastTimeResponse.kt | 5 ++ .../safetywatcher/watcher/bean/WarnData.kt | 3 - .../watcher/net/{api => }/DevicesApi.kt | 23 ++++- .../watcher/net/{api => }/UploadFileApi.kt | 2 +- .../watcher/services/HeartbeatService.kt | 4 +- .../safetywatcher/watcher/ui/CloudActivity.kt | 90 ++++++++++++++----- .../safetywatcher/watcher/ui/HomeActivity.kt | 3 + .../safetywatcher/watcher/utils/LztekUtil.kt | 2 +- app/src/main/res/layout/activity_home.xml | 1 + .../common/commonlib/net/bean/BaseResponse.kt | 12 +-- 15 files changed, 123 insertions(+), 46 deletions(-) rename app/src/main/java/com/yinuo/safetywatcher/watcher/{net => bean}/GasRequest.kt (64%) rename app/src/main/java/com/yinuo/safetywatcher/watcher/{net => bean}/GetRtspUrlResponse.kt (73%) delete mode 100644 app/src/main/java/com/yinuo/safetywatcher/watcher/bean/HistoryData.kt create mode 100644 app/src/main/java/com/yinuo/safetywatcher/watcher/bean/LastTimeResponse.kt delete mode 100644 app/src/main/java/com/yinuo/safetywatcher/watcher/bean/WarnData.kt rename app/src/main/java/com/yinuo/safetywatcher/watcher/net/{api => }/DevicesApi.kt (67%) rename app/src/main/java/com/yinuo/safetywatcher/watcher/net/{api => }/UploadFileApi.kt (97%) diff --git a/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt b/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt index 60c86de..ce19af4 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt @@ -13,7 +13,7 @@ import com.common.commonlib.net.bean.BaseResponse import com.common.commonlib.net.callback.RequestResultCallBack import com.yinuo.library.vlc.PushHelper import com.yinuo.library.vlc.TxtOverlay -import com.yinuo.safetywatcher.watcher.net.api.UploadFileApi +import com.yinuo.safetywatcher.watcher.net.UploadFileApi import com.yinuo.safetywatcher.watcher.ui.view.CommonDialog import com.yinuo.safetywatcher.watcher.utils.DateUtils import com.yinuo.safetywatcher.xls.SimpleCellValue diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/GasReqBean.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/GasReqBean.kt index 62b1cb7..1e81942 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/GasReqBean.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/GasReqBean.kt @@ -1,5 +1,7 @@ package com.yinuo.safetywatcher.watcher.bean +import com.common.commonlib.db.entity.Gas + data class GasReqBean( val gasName: String = "", val gasValue: String = "", @@ -8,4 +10,14 @@ data class GasReqBean( val sensorName: String = "", val status: String = "", val alarmName: String = "" -) +) { + constructor(gas: Gas) : this( + gasName = gas.gasName, + gasValue = gas.gasValue.toString(), + gasUnit = gas.unit, + reportTime = gas.time.toString(), + sensorName = "", + status = "", + alarmName = "" + ) +} diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/net/GasRequest.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/GasRequest.kt similarity index 64% rename from app/src/main/java/com/yinuo/safetywatcher/watcher/net/GasRequest.kt rename to app/src/main/java/com/yinuo/safetywatcher/watcher/bean/GasRequest.kt index 9223a90..439857a 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/net/GasRequest.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/GasRequest.kt @@ -1,6 +1,5 @@ -package com.yinuo.safetywatcher.watcher.net +package com.yinuo.safetywatcher.watcher.bean -import com.yinuo.safetywatcher.watcher.bean.GasReqBean import com.yinuo.safetywatcher.watcher.utils.LztekUtil data class GasRequest( diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/net/GetRtspUrlResponse.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/GetRtspUrlResponse.kt similarity index 73% rename from app/src/main/java/com/yinuo/safetywatcher/watcher/net/GetRtspUrlResponse.kt rename to app/src/main/java/com/yinuo/safetywatcher/watcher/bean/GetRtspUrlResponse.kt index 52f7ab5..ce6012c 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/net/GetRtspUrlResponse.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/GetRtspUrlResponse.kt @@ -1,4 +1,4 @@ -package com.yinuo.safetywatcher.watcher.net +package com.yinuo.safetywatcher.watcher.bean import com.common.commonlib.net.bean.BaseResponse diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/HistoryData.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/HistoryData.kt deleted file mode 100644 index fad3a46..0000000 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/HistoryData.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.yinuo.safetywatcher.watcher.bean - -data class HistoryData(val time:Long, val sensor:String) diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/LastTimeResponse.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/LastTimeResponse.kt new file mode 100644 index 0000000..1ff8377 --- /dev/null +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/LastTimeResponse.kt @@ -0,0 +1,5 @@ +package com.yinuo.safetywatcher.watcher.bean + +import com.common.commonlib.net.bean.BaseResponse + +data class LastTimeResponse(val data: Long) : BaseResponse() diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/WarnData.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/WarnData.kt deleted file mode 100644 index 559c49b..0000000 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/bean/WarnData.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.yinuo.safetywatcher.watcher.bean - -data class WarnData(val time:Long, val error:String) diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/net/api/DevicesApi.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/net/DevicesApi.kt similarity index 67% rename from app/src/main/java/com/yinuo/safetywatcher/watcher/net/api/DevicesApi.kt rename to app/src/main/java/com/yinuo/safetywatcher/watcher/net/DevicesApi.kt index 128cef8..5d96609 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/net/api/DevicesApi.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/net/DevicesApi.kt @@ -1,4 +1,4 @@ -package com.yinuo.safetywatcher.watcher.net.api +package com.yinuo.safetywatcher.watcher.net import com.common.commonlib.net.BaseObserve import com.common.commonlib.net.bean.BaseResponse @@ -6,8 +6,10 @@ import com.common.commonlib.net.callback.RequestNoResultCallBack import com.common.commonlib.net.callback.RequestResultCallBack import com.yinuo.safetywatcher.watcher.bean.GasReqBean import com.yinuo.safetywatcher.watcher.bean.TrafficReqInfo -import com.yinuo.safetywatcher.watcher.net.GasRequest -import com.yinuo.safetywatcher.watcher.net.GetRtspUrlResponse +import com.yinuo.safetywatcher.watcher.bean.GasRequest +import com.yinuo.safetywatcher.watcher.bean.GetRtspUrlResponse +import com.yinuo.safetywatcher.watcher.bean.LastTimeResponse +import com.yinuo.safetywatcher.watcher.utils.LztekUtil import io.reactivex.rxjava3.core.Observable import retrofit2.http.Body import retrofit2.http.GET @@ -44,6 +46,13 @@ class DevicesApi : BaseObserve(Api::class.java) { observe(api.uploadGasData(gasReq), null) } + fun getDetectionLastTime(callBack: RequestResultCallBack) { + observe(api.getDetectionLastTime(LztekUtil.getSn()), callBack) + } + + fun getVideoLastTime(callBack: RequestResultCallBack) { + observe(api.getVideoLastTime(LztekUtil.getSn()), callBack) + } interface Api { @Headers("baseurl:host") @@ -62,5 +71,13 @@ class DevicesApi : BaseObserve(Api::class.java) { @Headers("baseurl:host") @POST("/api/device/addDetection") fun uploadGasData(@Body body: GasRequest): Observable + + @Headers("baseurl:host") + @GET("/api/device/getDetectionLastTime") + fun getDetectionLastTime(@Query("deviceSn") sn: String): Observable + + @Headers("baseurl:host") + @GET("/api/device/getVideoLastTime") + fun getVideoLastTime(@Query("deviceSn") sn: String): Observable } } \ No newline at end of file diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/net/api/UploadFileApi.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/net/UploadFileApi.kt similarity index 97% rename from app/src/main/java/com/yinuo/safetywatcher/watcher/net/api/UploadFileApi.kt rename to app/src/main/java/com/yinuo/safetywatcher/watcher/net/UploadFileApi.kt index f11f600..878ebb3 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/net/api/UploadFileApi.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/net/UploadFileApi.kt @@ -1,4 +1,4 @@ -package com.yinuo.safetywatcher.watcher.net.api +package com.yinuo.safetywatcher.watcher.net import com.common.commonlib.net.BaseObserve import com.common.commonlib.net.bean.BaseResponse diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/services/HeartbeatService.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/services/HeartbeatService.kt index b160f11..1e6ad6d 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/services/HeartbeatService.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/services/HeartbeatService.kt @@ -5,8 +5,8 @@ import android.app.IntentService import android.content.Context import android.content.Intent import com.common.commonlib.net.callback.RequestResultCallBack -import com.yinuo.safetywatcher.watcher.net.GetRtspUrlResponse -import com.yinuo.safetywatcher.watcher.net.api.DevicesApi +import com.yinuo.safetywatcher.watcher.bean.GetRtspUrlResponse +import com.yinuo.safetywatcher.watcher.net.DevicesApi import com.yinuo.safetywatcher.watcher.utils.LztekUtil diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/CloudActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/CloudActivity.kt index cfe2213..582c375 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/CloudActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/CloudActivity.kt @@ -1,3 +1,5 @@ +@file:OptIn(DelicateCoroutinesApi::class) + package com.yinuo.safetywatcher.watcher.ui import android.view.View @@ -6,8 +8,12 @@ import com.yinuo.safetywatcher.TestUtils import com.yinuo.safetywatcher.databinding.ActivityCloudBinding import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity import com.common.commonlib.db.DBUtils -import com.yinuo.safetywatcher.watcher.net.api.UploadFileApi -import com.yinuo.safetywatcher.watcher.ui.view.CommonDialog +import com.common.commonlib.net.callback.RequestResultCallBack +import com.yinuo.library.vlc.utils.LogUtils +import com.yinuo.safetywatcher.watcher.bean.GasReqBean +import com.yinuo.safetywatcher.watcher.bean.LastTimeResponse +import com.yinuo.safetywatcher.watcher.net.DevicesApi +import com.yinuo.safetywatcher.watcher.net.UploadFileApi import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch @@ -21,6 +27,10 @@ class CloudActivity : NoOptionsActivity() { UploadFileApi() } + private val devicesApi by lazy { + DevicesApi() + } + override fun getTopBarTitle(): String? { return getString(R.string.cloud) } @@ -52,32 +62,72 @@ class CloudActivity : NoOptionsActivity() { } private fun uploadVideo() { - //TODO 1.拿到云端最新数据时间 - val cloudTime = 0L - // 2. 拿到待上传文件列表 - val fileList = getFileList(cloudTime) - // 上传 - fileList?.forEach { - uploadFile(it) - } - // TODO 删除 - uploadFile("") + // 1.拿到云端最新数据时间 + devicesApi.getVideoLastTime(object : RequestResultCallBack() { + override fun onResult(result: LastTimeResponse) { + if (result.isOk()) { + val cloudTime = result.data + // 2. 拿到待上传文件列表 上传 + getFileListAndUpload(cloudTime) + } else { + LogUtils.e("getVideoLastTime error code = ${result.code}") + } + } + + override fun onError(error: String?) { + LogUtils.e(error) + } + }) } - @OptIn(DelicateCoroutinesApi::class) private fun uploadSensorData() { + // 1.拿到云端最新数据时间 + devicesApi.getVideoLastTime(object : RequestResultCallBack() { + override fun onResult(result: LastTimeResponse) { + if (result.isOk()) { + val cloudTime = result.data + // 2. 查询本地数据库中该时间之后的数据 + // 3. 上传数据给服务器 + getSensorDataUpload(cloudTime) + } else { + LogUtils.e("getVideoLastTime error code = ${result.code}") + } + } + + override fun onError(error: String?) { + LogUtils.e(error) + } + }) + } + + private fun getSensorDataUpload(cloudTime: Long) { GlobalScope.launch { - //TODO 1.拿到云端最新数据时间 - val cloudTime = 0L - // 2. 查询本地数据库中该时间之后的数据 val gasList = DBUtils.gasDao().getAllBySyncFlagOrTime(false, cloudTime) - // 3. 上传数据给服务器 - + val tempList = arrayListOf() + gasList.forEach { + tempList.add(GasReqBean(it)) + if (tempList.size == 10) { + val upLoadList = arrayListOf() + upLoadList.addAll(tempList) + tempList.clear() + devicesApi.uploadGasData(upLoadList) + } + } + if (tempList.isNotEmpty()) { + devicesApi.uploadGasData(tempList) + } } } - private fun getFileList(cloudTime: Long): List? { - return null + private fun getFileListAndUpload(cloudTime: Long) { + GlobalScope.launch { + val videoDao = DBUtils.videoDao() + val videoList = videoDao.getAllByTime(cloudTime, System.currentTimeMillis()) + // 上传 + videoList?.forEach { + uploadFile(it.path) + } + } } private fun uploadFile(path: String) { diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/HomeActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/HomeActivity.kt index 9fa7fca..8f9e857 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/HomeActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/HomeActivity.kt @@ -56,6 +56,9 @@ class HomeActivity : NoOptionsActivity() { itemRecovery.setOnClickListener { mBinding.tvWarn.visibility = View.GONE } + itemCamera.setOnClickListener { + cameraSwitch.performClick() + } cameraSwitch.setOnCheckedChangeListener { buttonView, isChecked -> if (isChecked) mRender?.startRecording() else mRender?.stopRecording() } diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/LztekUtil.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/LztekUtil.kt index fc96667..04b190b 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/LztekUtil.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/LztekUtil.kt @@ -50,6 +50,6 @@ object LztekUtil { fun setRtspUrl(str: String?) { this.rtspUrl = str -// rtspUrl?.let { PushHelper.setPushUrl(it) } + rtspUrl?.let { PushHelper.setPushUrl(it) } } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml index e5c39b4..1dc6023 100644 --- a/app/src/main/res/layout/activity_home.xml +++ b/app/src/main/res/layout/activity_home.xml @@ -115,6 +115,7 @@