desc:数据导出故障:

1.传感器气体数据导出故障
     2.视频数据导出故障
     3.视频存储数据丢失
main
xiaowusky 1 year ago
parent cf6a23bdcb
commit 63df01f799

@ -1,5 +1,6 @@
package com.yinuo.safetywatcher.watcher package com.yinuo.safetywatcher.watcher
import android.util.Log
import com.common.commonlib.CommonApplication import com.common.commonlib.CommonApplication
import com.common.commonlib.db.DBUtils import com.common.commonlib.db.DBUtils
import com.common.commonlib.db.entity.Warning import com.common.commonlib.db.entity.Warning
@ -47,18 +48,19 @@ class App : CommonApplication() {
} }
} }
// 修复视频数据 /*// 修复视频数据
val videoAsync = async(Dispatchers.IO) { val videoAsync = async(Dispatchers.IO) {
val videoDao = DBUtils.videoDao() val videoDao = DBUtils.videoDao()
val videoList = videoDao.getAll() val videoList = videoDao.getAll()
videoList.onEach { video -> videoList.onEach { video ->
if (!File(video.path).exists()) { if (!File(video.path).exists()) {
Log.d("cyy", "删除视频: ${video.path}")
videoDao.delete(video) videoDao.delete(video)
} }
} }
} }*/
warningAsync.await() warningAsync.await()
videoAsync.await() // videoAsync.await()
} }
} }

@ -3,6 +3,7 @@ package com.yinuo.safetywatcher.watcher.ui
import android.content.Intent import android.content.Intent
import android.view.View import android.view.View
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.view.postDelayed
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.common.commonlib.db.DBUtils import com.common.commonlib.db.DBUtils
@ -135,16 +136,21 @@ class HistoryVideoActivity : BaseActivity() {
showLoadingDialog(R.string.export_data_tip) showLoadingDialog(R.string.export_data_tip)
GlobalScope.launch(Dispatchers.IO) { GlobalScope.launch(Dispatchers.IO) {
ExportUtils.testCopyVideo( ExportUtils.testCopyVideo(
this@HistoryVideoActivity,
usbPath, usbPath,
mAdapter._data, mAdapter._data,
loadingDialog
) )
launch(Dispatchers.Main) { launch(Dispatchers.Main) {
var delayTime = mAdapter._data.size * 3000
if (delayTime > 30) {
delayTime = 30
}
mBinding.root.postDelayed(delayTime.toLong()) {
closeLoadingDialog()
showToast(getString(R.string.export_success)) showToast(getString(R.string.export_success))
} }
} }
} }
}
fun gotoPlayVideo(path: String) { fun gotoPlayVideo(path: String) {
val intent = Intent(this@HistoryVideoActivity, ProVideoActivity::class.java) val intent = Intent(this@HistoryVideoActivity, ProVideoActivity::class.java)

@ -26,6 +26,7 @@ import com.yinuo.safetywatcher.watcher.utils.DateUtils
import com.yinuo.safetywatcher.watcher.utils.ExportUtils import com.yinuo.safetywatcher.watcher.utils.ExportUtils
import com.yinuo.safetywatcher.watcher.utils.showToast import com.yinuo.safetywatcher.watcher.utils.showToast
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
class QueryDataActivity : BaseActivity() { class QueryDataActivity : BaseActivity() {
@ -242,8 +243,10 @@ class QueryDataActivity : BaseActivity() {
this@QueryDataActivity, this@QueryDataActivity,
usbPath, usbPath,
mAdapter._data, mAdapter._data,
loadingDialog
) )
val delayTime: Int = (mAdapter._data.size / 10) * 35
delay(delayTime.toLong())
closeLoadingDialog()
launch(Dispatchers.Main) { launch(Dispatchers.Main) {
val showTxt = val showTxt =
if (TextUtils.isEmpty(exportGasExcelPath)) "气体数据导出失败!" else getString(R.string.export_success) if (TextUtils.isEmpty(exportGasExcelPath)) "气体数据导出失败!" else getString(R.string.export_success)

@ -18,6 +18,7 @@ import com.yinuo.safetywatcher.watcher.utils.DateUtils
import com.yinuo.safetywatcher.watcher.utils.ExportUtils import com.yinuo.safetywatcher.watcher.utils.ExportUtils
import com.yinuo.safetywatcher.watcher.utils.showToast import com.yinuo.safetywatcher.watcher.utils.showToast
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
class WarnDataActivity : BaseActivity() { class WarnDataActivity : BaseActivity() {
@ -134,8 +135,10 @@ class WarnDataActivity : BaseActivity() {
this@WarnDataActivity, this@WarnDataActivity,
usbPath, usbPath,
mAdapter._data, mAdapter._data,
loadingDialog
) )
val delayTime: Int = (mAdapter._data.size / 10) * 35
delay(delayTime.toLong())
closeLoadingDialog()
launch(Dispatchers.Main) { launch(Dispatchers.Main) {
val showTxt = val showTxt =
if (TextUtils.isEmpty(exportWarnExcelPath)) "告警数据导出失败!" else getString(R.string.export_success) if (TextUtils.isEmpty(exportWarnExcelPath)) "告警数据导出失败!" else getString(R.string.export_success)

@ -18,7 +18,6 @@ object ExportUtils {
context: Context, context: Context,
usbPath: String, usbPath: String,
datas: MutableList<Gas>, datas: MutableList<Gas>,
commonDialog: CommonDialog?
): String? { ): String? {
val allData = mutableListOf<List<SimpleCellValue>>() val allData = mutableListOf<List<SimpleCellValue>>()
datas.forEach { datas.forEach {
@ -31,7 +30,6 @@ object ExportUtils {
} }
LogUtils.w("testExportExcel ori data size = ${datas.size}, cell data size = ${allData.size}") LogUtils.w("testExportExcel ori data size = ${datas.size}, cell data size = ${allData.size}")
val excelPath = ExcelUtils.writeStringListToExcel(allData, usbPath, context) val excelPath = ExcelUtils.writeStringListToExcel(allData, usbPath, context)
commonDialog?.dismiss()
return excelPath return excelPath
} }
@ -40,7 +38,6 @@ object ExportUtils {
context: Context, context: Context,
usbPath: String, usbPath: String,
datas: MutableList<Warning>, datas: MutableList<Warning>,
loadingDialog: CommonDialog?
): String? { ): String? {
val allData = mutableListOf<List<SimpleCellValue>>() val allData = mutableListOf<List<SimpleCellValue>>()
datas.forEach { datas.forEach {
@ -53,15 +50,12 @@ object ExportUtils {
} }
LogUtils.w("testExportWarnExcel ori data size = ${datas.size}, cell data size = ${allData.size}") LogUtils.w("testExportWarnExcel ori data size = ${datas.size}, cell data size = ${allData.size}")
val excelPath = ExcelUtils.writeStringListToExcel(allData, usbPath, context, true) val excelPath = ExcelUtils.writeStringListToExcel(allData, usbPath, context, true)
loadingDialog?.dismiss()
return excelPath return excelPath
} }
fun testCopyVideo( fun testCopyVideo(
context: Context,
usbPath: String, usbPath: String,
datas: MutableList<Video>, datas: MutableList<Video>,
loadingDialog: CommonDialog?
) { ) {
val usbVideoPath = usbPath + File.separator + "Video" val usbVideoPath = usbPath + File.separator + "Video"
val dFile = File(usbVideoPath); val dFile = File(usbVideoPath);
@ -69,11 +63,20 @@ object ExportUtils {
dFile.mkdir() dFile.mkdir()
} }
datas.forEach { datas.forEach {
FileUtils.copy( copyFile(it.path, usbVideoPath + "/${it.name}")
File(it.path).inputStream(), }
File(usbVideoPath + "/${it.name}").outputStream() }
)
private fun copyFile(srcPath: String, dstPath: String) {
File(srcPath).runCatching {
takeIf { it.exists() }?.inputStream()?.use { inputStream ->
File(dstPath).outputStream().use { outputStream ->
inputStream.copyTo(outputStream)
} }
loadingDialog?.dismiss()
} }
}.onFailure { // print or throw }
LogUtils.w("copyFile error, $srcPath")
}
}
} }
Loading…
Cancel
Save