desc:数据导出故障:

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

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

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

@ -26,6 +26,7 @@ import com.yinuo.safetywatcher.watcher.utils.DateUtils
import com.yinuo.safetywatcher.watcher.utils.ExportUtils
import com.yinuo.safetywatcher.watcher.utils.showToast
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
class QueryDataActivity : BaseActivity() {
@ -72,7 +73,7 @@ class QueryDataActivity : BaseActivity() {
private var startTime = -1L
private var endTime = -1L
private var timeStep = TimeStep.SECOND_30
private val mAdapter = HistoryDataAdapter{
private val mAdapter = HistoryDataAdapter {
tryFocusBackArea()
}
@ -242,8 +243,10 @@ class QueryDataActivity : BaseActivity() {
this@QueryDataActivity,
usbPath,
mAdapter._data,
loadingDialog
)
val delayTime: Int = (mAdapter._data.size / 10) * 35
delay(delayTime.toLong())
closeLoadingDialog()
launch(Dispatchers.Main) {
val showTxt =
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.showToast
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
class WarnDataActivity : BaseActivity() {
@ -134,8 +135,10 @@ class WarnDataActivity : BaseActivity() {
this@WarnDataActivity,
usbPath,
mAdapter._data,
loadingDialog
)
val delayTime: Int = (mAdapter._data.size / 10) * 35
delay(delayTime.toLong())
closeLoadingDialog()
launch(Dispatchers.Main) {
val showTxt =
if (TextUtils.isEmpty(exportWarnExcelPath)) "告警数据导出失败!" else getString(R.string.export_success)

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