diff --git a/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt b/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt index 353b916..26afb6e 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt @@ -1,13 +1,22 @@ package com.yinuo.safetywatcher +import android.app.Activity import android.content.Context import android.content.Intent import android.net.Uri import android.os.Build import android.provider.Settings +import com.common.commonlib.net.bean.BaseResponse +import com.common.commonlib.net.callback.RequestResultCallBack import com.yinuo.safetywatcher.watcher.db.DBUtils import com.yinuo.safetywatcher.watcher.db.entity.Gas import com.yinuo.safetywatcher.watcher.db.entity.GasType +import com.yinuo.safetywatcher.watcher.net.api.UploadFileApi +import com.yinuo.safetywatcher.watcher.ui.view.CommonDialog +import com.yinuo.safetywatcher.watcher.utils.DateUtils +import com.yinuo.safetywatcher.xls.SimpleCellValue +import com.yinuo.safetywatcher.xls.utils.ExcelUtils +import com.yinuo.safetywatcher.xls.utils.PathUtils import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch @@ -58,8 +67,37 @@ object TestUtils { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { // 经过测试,只有在 Android 10 及以上加包名才有效果 // 如果在 Android 10 以下加包名会导致无法跳转 - intent.data = Uri.parse("package:" + context.getPackageName()) + intent.data = Uri.parse("package:" + context.packageName) } context.startActivity(intent) } + + fun testUploadFile(uploadApi: UploadFileApi, path: String, commonDialog: CommonDialog) { + val path = PathUtils.getExternalStorageDirectory() + "/test2.mp4" + uploadApi.singleUpload(path, System.currentTimeMillis(), object : + RequestResultCallBack() { + override fun onResult(result: BaseResponse) { + commonDialog.dismiss() + } + + override fun onError(error: String?) { + commonDialog.dismiss() + } + }) + } + + fun testExportExcel(context: Context, datas: MutableList, commonDialog: CommonDialog) { + val allData = mutableListOf>() + datas.forEach { + val row = mutableListOf() + row.add(SimpleCellValue(DateUtils.formatHistoryTime(it.time) ?: "")) + row.add(SimpleCellValue(it.gasName)) + row.add(SimpleCellValue(it.gasValue.toString())) + row.add(SimpleCellValue(it.unit)) + allData.add(row) + } + ExcelUtils.writeStringListToExcel(allData, context); + + commonDialog.dialogBinding?.root?.postDelayed({ commonDialog.dismiss() }, 1000) + } } \ No newline at end of file diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/base/BaseRvAdapter.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/base/BaseRvAdapter.kt index 27f592b..75c2203 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/base/BaseRvAdapter.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/base/BaseRvAdapter.kt @@ -10,6 +10,7 @@ abstract class BaseRvAdapter() { private val mDatas = mutableListOf() + val _data = mDatas; fun setData(values: List) { mDatas.clear() diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/constant/Constants.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/constant/Constants.kt index 833cd11..39e814e 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/constant/Constants.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/constant/Constants.kt @@ -7,4 +7,4 @@ const val ONE_DAY_MS = 24 * ONE_HOUR_MS const val MAX_QUERY_TIME_INTERVAL = ONE_DAY_MS // 默认查询时间间隔 -const val DEFAULT_QUERY_TIME_INTERVAL = ONE_HOUR_MS \ No newline at end of file +const val DEFAULT_QUERY_TIME_INTERVAL = ONE_HOUR_MS * 6 \ No newline at end of file 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 a935dd9..2faae1d 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,15 +1,13 @@ package com.yinuo.safetywatcher.watcher.ui import android.view.View -import com.common.commonlib.net.bean.BaseResponse -import com.common.commonlib.net.callback.RequestResultCallBack import com.yinuo.safetywatcher.R +import com.yinuo.safetywatcher.TestUtils import com.yinuo.safetywatcher.databinding.ActivityCloudBinding import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity import com.yinuo.safetywatcher.watcher.db.DBUtils import com.yinuo.safetywatcher.watcher.net.api.UploadFileApi -import com.yinuo.safetywatcher.watcher.ui.view.SyncDialog -import com.yinuo.safetywatcher.xls.utils.PathUtils +import com.yinuo.safetywatcher.watcher.ui.view.CommonDialog import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch @@ -24,7 +22,7 @@ class CloudActivity : NoOptionsActivity() { } private val syncDialog by lazy { - SyncDialog() + CommonDialog() } override fun getTopBarTitle(): String? { @@ -91,16 +89,6 @@ class CloudActivity : NoOptionsActivity() { } private fun uploadFile(path: String) { - val path = PathUtils.getExternalStorageDirectory() + "/test2.mp4" - uploadApi.singleUpload(path, System.currentTimeMillis(), object : - RequestResultCallBack() { - override fun onResult(result: BaseResponse) { - syncDialog.dismiss() - } - - override fun onError(error: String?) { - syncDialog.dismiss() - } - }) + TestUtils.testUploadFile(uploadApi, path, syncDialog) } } \ No newline at end of file diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/QueryDataActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/QueryDataActivity.kt index 7fd26ed..e098ce1 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/QueryDataActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/QueryDataActivity.kt @@ -6,6 +6,7 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager import com.yinuo.safetywatcher.R +import com.yinuo.safetywatcher.TestUtils import com.yinuo.safetywatcher.databinding.ActivityQueryDataBinding import com.yinuo.safetywatcher.watcher.ui.adapter.HistoryDataAdapter import com.yinuo.safetywatcher.watcher.base.BaseActivity @@ -15,6 +16,7 @@ import com.yinuo.safetywatcher.watcher.db.DBUtils import com.yinuo.safetywatcher.watcher.db.entity.Gas import com.yinuo.safetywatcher.watcher.utils.DateUtils import com.yinuo.safetywatcher.watcher.ui.view.CommonTopBar +import com.yinuo.safetywatcher.watcher.ui.view.CommonDialog import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -24,11 +26,15 @@ class QueryDataActivity : BaseActivity() { ActivityQueryDataBinding.inflate(layoutInflater) } + private val exportDialog by lazy { + CommonDialog(R.string.export_data_tip) + } + override fun onOptionClick(type: Int, target: View) { if (0 == type) { - + queryData() } else if (1 == type) { - + doExportData() } } @@ -154,13 +160,6 @@ class QueryDataActivity : BaseActivity() { var gasValue = 0.0 var startGas: Gas? = null list.forEachIndexed { index, gas -> - // 不能整除的时候,最后一个特殊处理 - if (list.size - 1 == index) { - if (gasValue != 0.0) { - startGas!!.gasValue = gasValue / (list.size % step) - newMapList?.add(startGas!!) - } - } if (index % step == 0) { if (gasValue != 0.0) { startGas!!.gasValue = gasValue / step @@ -171,6 +170,15 @@ class QueryDataActivity : BaseActivity() { } else { gasValue += gas.gasValue } + // 最后一个特殊处理 + if (list.size - 1 == index) { + // 不能整除的时候 + val dev = if (list.size % step == 0) step else list.size % step + if (gasValue != 0.0) { + startGas!!.gasValue = gasValue / dev + newMapList?.add(startGas!!) + } + } } } @@ -187,4 +195,9 @@ class QueryDataActivity : BaseActivity() { } } } + + private fun doExportData() { + exportDialog.showNow(supportFragmentManager, "export") + TestUtils.testExportExcel(this, mAdapter._data, exportDialog) + } } \ No newline at end of file diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/view/SyncDialog.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/view/CommonDialog.kt similarity index 76% rename from app/src/main/java/com/yinuo/safetywatcher/watcher/ui/view/SyncDialog.kt rename to app/src/main/java/com/yinuo/safetywatcher/watcher/ui/view/CommonDialog.kt index ca35ad3..436ce37 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/view/SyncDialog.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/view/CommonDialog.kt @@ -8,17 +8,21 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.DialogFragment +import com.yinuo.safetywatcher.R import com.yinuo.safetywatcher.databinding.LayoutSyncDialogBinding -class SyncDialog : DialogFragment() { +class CommonDialog(private val tipResID:Int = R.string.sync_data_tip) : DialogFragment() { + + var dialogBinding: LayoutSyncDialogBinding? = null override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { - val dialogBinding = LayoutSyncDialogBinding.inflate(inflater, container, false) - return dialogBinding.root + dialogBinding = LayoutSyncDialogBinding.inflate(inflater, container, false) + dialogBinding!!.tip.text = getString(tipResID) + return dialogBinding!!.root } @Deprecated("Deprecated in Java") diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml index d2fe440..7e8c15c 100644 --- a/app/src/main/res/layout/activity_home.xml +++ b/app/src/main/res/layout/activity_home.xml @@ -141,6 +141,7 @@ android:layout_marginTop="@dimen/_100dp" android:layout_centerHorizontal="true" android:textSize="@dimen/_30dp" + android:visibility="gone" android:textColor="@color/white" android:background="@drawable/sensor_init_btn_bg"/> \ No newline at end of file diff --git a/app/src/main/res/layout/layout_sync_dialog.xml b/app/src/main/res/layout/layout_sync_dialog.xml index 214e880..9310871 100644 --- a/app/src/main/res/layout/layout_sync_dialog.xml +++ b/app/src/main/res/layout/layout_sync_dialog.xml @@ -12,6 +12,7 @@ android:src="@mipmap/ic_sync" /> 开始时间必须小于结束时间!请调整 请先插入U盘! 数据同步中 + 数据导出中