diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7f9b4a0..e58acea 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,7 +40,6 @@ - @@ -52,12 +51,14 @@ + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7f9b4a0..e58acea 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,7 +40,6 @@ - @@ -52,12 +51,14 @@ + + diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f80b012..fa0ebf6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -5,10 +5,7 @@ import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.greendao.InspectionLocalBeanDao import com.casic.birmm.inspect.greendao.TaskEventLocalBeanDao -import com.casic.birmm.inspect.model.InspectDetailModel -import com.casic.birmm.inspect.model.InspectListModel -import com.casic.birmm.inspect.model.NewInspectionModel -import com.casic.birmm.inspect.model.NewTaskEventModel +import com.casic.birmm.inspect.model.* class DataBaseManager private constructor() { @@ -71,8 +68,9 @@ * 查询所有巡检数据 */ fun queryAllInspection(offset: Int): MutableList { - return addQueryResult( + return addInspectionQueryResult( inspectionDao.queryBuilder() + .orderDesc(InspectionLocalBeanDao.Properties.StartTime) .offset(offset * Constant.PAGE_LIMIT) .limit(Constant.PAGE_LIMIT) .list() @@ -96,7 +94,7 @@ InspectionLocalBeanDao.Properties.Date.between(startDate, endDate), InspectionLocalBeanDao.Properties.Name.like(name) ) - return addQueryResult( + return addInspectionQueryResult( queryBuilder.where(condition) .orderDesc(InspectionLocalBeanDao.Properties.StartTime)//按时间顺序最新顺序排序 .offset(offset * Constant.PAGE_LIMIT) @@ -105,15 +103,16 @@ ) } else if (startDate == "" && endDate == "" && name == "") { //都为"",查询全部 - return addQueryResult( + return addInspectionQueryResult( inspectionDao.queryBuilder() + .orderDesc(InspectionLocalBeanDao.Properties.StartTime) .offset(offset * Constant.PAGE_LIMIT) .limit(Constant.PAGE_LIMIT) .list() ) } else { //其他只查询巡检名 - return addQueryResult( + return addInspectionQueryResult( inspectionDao.queryBuilder() .where(InspectionLocalBeanDao.Properties.Name.like(name)) .orderDesc(InspectionLocalBeanDao.Properties.StartTime)//按时间顺序最新顺序排序 @@ -124,7 +123,7 @@ } } - private fun addQueryResult(list: List?): MutableList { + private fun addInspectionQueryResult(list: List?): MutableList { val resultList = ArrayList() list?.forEach { val rowsBean = InspectListModel.DataBean.RowsBean() @@ -213,58 +212,113 @@ /** * 根据巡检Id查询事件数据 */ - fun queryTaskByInspection(inspectionId: String): MutableList? { - val resultList = ArrayList() + fun queryTaskByInspection(inspectionId: String): MutableList { + val resultList = ArrayList() taskEventDao.queryBuilder() .where(TaskEventLocalBeanDao.Properties.InspectionId.eq(inspectionId)) .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 .list()?.forEach { - resultList.add( - NewTaskEventModel( - taskId = it.taskId, - inspectionId = it.inspectionId, - name = it.name, - createTime = it.createTime, - type = it.type, - lng = it.lng, - lat = it.lat, - data = it.data, - images = it.images, - description = it.description, - user = it.user - ) - ) + val listBean = TaskRecordModel.DataBean.ListBean() + + listBean.id = it.taskId + listBean.inspectionId = it.inspectionId + listBean.name = it.name + listBean.createTime = it.createTime + listBean.type = it.type + listBean.lng = it.lng + listBean.lat = it.lat + listBean.data = it.data.toInt() + listBean.images = it.images + listBean.description = it.description + listBean.user = it.user + + resultList.add(listBean) } return resultList } /** - * 查询所有数据 + * 查询所有事件数据 */ - fun queryAllTask(): MutableList? { - val list = taskEventDao.queryBuilder().build().list() - val resultList = ArrayList() + fun queryAllTaskEvent(offset: Int): MutableList { + return addTaskTaskEventQueryResult( + taskEventDao.queryBuilder() + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime) + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } + + private fun addTaskTaskEventQueryResult(list: List?): MutableList { + val resultList = ArrayList() list?.forEach { - resultList.add( - NewTaskEventModel( - taskId = it.taskId, - inspectionId = it.inspectionId, - name = it.name, - createTime = it.createTime, - type = it.type, - lng = it.lng, - lat = it.lat, - data = it.data, - images = it.images, - description = it.description, - user = it.user - ) - ) + val rowsBean = EventListModel.DataBean.RowsBean() + + rowsBean.id = it.taskId + rowsBean.inspectionId = it.inspectionId + rowsBean.name = it.name + rowsBean.createTime = it.createTime + rowsBean.type = it.type + rowsBean.data = it.data.toInt() + rowsBean.description = it.description + rowsBean.lat = it.lat + rowsBean.lng = it.lng + rowsBean.images = it.images + rowsBean.user = it.user + + resultList.add(rowsBean) } return resultList } /** + * 条件查询事件数据 + */ + fun queryEventByCondition( + startDate: String, + endDate: String, + name: String, + offset: Int + ): MutableList { + //条件都不为"",精确查询 + if (startDate != "" && endDate != "" && name != "") { + val queryBuilder = taskEventDao.queryBuilder() + //查询条件 + val condition = queryBuilder.and( + TaskEventLocalBeanDao.Properties.CreateTime.between(startDate, endDate), + TaskEventLocalBeanDao.Properties.Name.like(name) + ) + return addTaskTaskEventQueryResult( + queryBuilder.where(condition) + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } else if (startDate == "" && endDate == "" && name == "") { + //都为"",查询全部 + return addTaskTaskEventQueryResult( + taskEventDao.queryBuilder() + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime) + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } else { + //其他只查询巡检名 + return addTaskTaskEventQueryResult( + taskEventDao.queryBuilder() + .where(TaskEventLocalBeanDao.Properties.Name.like(name)) + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } + } + + /** * 判断是否插入数据成功 */ fun isInsertSuccess(id: String, isInspection: Boolean): Boolean { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7f9b4a0..e58acea 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,7 +40,6 @@ - @@ -52,12 +51,14 @@ + + diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f80b012..fa0ebf6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -5,10 +5,7 @@ import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.greendao.InspectionLocalBeanDao import com.casic.birmm.inspect.greendao.TaskEventLocalBeanDao -import com.casic.birmm.inspect.model.InspectDetailModel -import com.casic.birmm.inspect.model.InspectListModel -import com.casic.birmm.inspect.model.NewInspectionModel -import com.casic.birmm.inspect.model.NewTaskEventModel +import com.casic.birmm.inspect.model.* class DataBaseManager private constructor() { @@ -71,8 +68,9 @@ * 查询所有巡检数据 */ fun queryAllInspection(offset: Int): MutableList { - return addQueryResult( + return addInspectionQueryResult( inspectionDao.queryBuilder() + .orderDesc(InspectionLocalBeanDao.Properties.StartTime) .offset(offset * Constant.PAGE_LIMIT) .limit(Constant.PAGE_LIMIT) .list() @@ -96,7 +94,7 @@ InspectionLocalBeanDao.Properties.Date.between(startDate, endDate), InspectionLocalBeanDao.Properties.Name.like(name) ) - return addQueryResult( + return addInspectionQueryResult( queryBuilder.where(condition) .orderDesc(InspectionLocalBeanDao.Properties.StartTime)//按时间顺序最新顺序排序 .offset(offset * Constant.PAGE_LIMIT) @@ -105,15 +103,16 @@ ) } else if (startDate == "" && endDate == "" && name == "") { //都为"",查询全部 - return addQueryResult( + return addInspectionQueryResult( inspectionDao.queryBuilder() + .orderDesc(InspectionLocalBeanDao.Properties.StartTime) .offset(offset * Constant.PAGE_LIMIT) .limit(Constant.PAGE_LIMIT) .list() ) } else { //其他只查询巡检名 - return addQueryResult( + return addInspectionQueryResult( inspectionDao.queryBuilder() .where(InspectionLocalBeanDao.Properties.Name.like(name)) .orderDesc(InspectionLocalBeanDao.Properties.StartTime)//按时间顺序最新顺序排序 @@ -124,7 +123,7 @@ } } - private fun addQueryResult(list: List?): MutableList { + private fun addInspectionQueryResult(list: List?): MutableList { val resultList = ArrayList() list?.forEach { val rowsBean = InspectListModel.DataBean.RowsBean() @@ -213,58 +212,113 @@ /** * 根据巡检Id查询事件数据 */ - fun queryTaskByInspection(inspectionId: String): MutableList? { - val resultList = ArrayList() + fun queryTaskByInspection(inspectionId: String): MutableList { + val resultList = ArrayList() taskEventDao.queryBuilder() .where(TaskEventLocalBeanDao.Properties.InspectionId.eq(inspectionId)) .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 .list()?.forEach { - resultList.add( - NewTaskEventModel( - taskId = it.taskId, - inspectionId = it.inspectionId, - name = it.name, - createTime = it.createTime, - type = it.type, - lng = it.lng, - lat = it.lat, - data = it.data, - images = it.images, - description = it.description, - user = it.user - ) - ) + val listBean = TaskRecordModel.DataBean.ListBean() + + listBean.id = it.taskId + listBean.inspectionId = it.inspectionId + listBean.name = it.name + listBean.createTime = it.createTime + listBean.type = it.type + listBean.lng = it.lng + listBean.lat = it.lat + listBean.data = it.data.toInt() + listBean.images = it.images + listBean.description = it.description + listBean.user = it.user + + resultList.add(listBean) } return resultList } /** - * 查询所有数据 + * 查询所有事件数据 */ - fun queryAllTask(): MutableList? { - val list = taskEventDao.queryBuilder().build().list() - val resultList = ArrayList() + fun queryAllTaskEvent(offset: Int): MutableList { + return addTaskTaskEventQueryResult( + taskEventDao.queryBuilder() + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime) + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } + + private fun addTaskTaskEventQueryResult(list: List?): MutableList { + val resultList = ArrayList() list?.forEach { - resultList.add( - NewTaskEventModel( - taskId = it.taskId, - inspectionId = it.inspectionId, - name = it.name, - createTime = it.createTime, - type = it.type, - lng = it.lng, - lat = it.lat, - data = it.data, - images = it.images, - description = it.description, - user = it.user - ) - ) + val rowsBean = EventListModel.DataBean.RowsBean() + + rowsBean.id = it.taskId + rowsBean.inspectionId = it.inspectionId + rowsBean.name = it.name + rowsBean.createTime = it.createTime + rowsBean.type = it.type + rowsBean.data = it.data.toInt() + rowsBean.description = it.description + rowsBean.lat = it.lat + rowsBean.lng = it.lng + rowsBean.images = it.images + rowsBean.user = it.user + + resultList.add(rowsBean) } return resultList } /** + * 条件查询事件数据 + */ + fun queryEventByCondition( + startDate: String, + endDate: String, + name: String, + offset: Int + ): MutableList { + //条件都不为"",精确查询 + if (startDate != "" && endDate != "" && name != "") { + val queryBuilder = taskEventDao.queryBuilder() + //查询条件 + val condition = queryBuilder.and( + TaskEventLocalBeanDao.Properties.CreateTime.between(startDate, endDate), + TaskEventLocalBeanDao.Properties.Name.like(name) + ) + return addTaskTaskEventQueryResult( + queryBuilder.where(condition) + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } else if (startDate == "" && endDate == "" && name == "") { + //都为"",查询全部 + return addTaskTaskEventQueryResult( + taskEventDao.queryBuilder() + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime) + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } else { + //其他只查询巡检名 + return addTaskTaskEventQueryResult( + taskEventDao.queryBuilder() + .where(TaskEventLocalBeanDao.Properties.Name.like(name)) + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } + } + + /** * 判断是否插入数据成功 */ fun isInsertSuccess(id: String, isInspection: Boolean): Boolean { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventDetailActivity.kt new file mode 100644 index 0000000..75230a2 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventDetailActivity.kt @@ -0,0 +1,79 @@ +package com.casic.birmm.inspect.view + +import android.annotation.SuppressLint +import android.os.Bundle +import android.view.View +import androidx.core.content.ContextCompat +import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.adapter.ImageGridViewAdapter +import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.extensions.show +import com.casic.birmm.inspect.utils.OtherUtils +import com.casic.birmm.inspect.utils.PageNavigationManager +import com.casic.birmm.inspect.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import kotlinx.android.synthetic.main.activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + + +class SingleModeEventDetailActivity : BaseSingleModeActivity() { + override fun initLayoutView(): Int = R.layout.activity_event_detail + + override fun setupTopBarLayout() { + PageNavigationManager.addActivity(this) + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "事件详情" + } + + @SuppressLint("SetTextI18n") + override fun initData(savedInstanceState: Bundle?) { + createTimeView.text = intent.getStringExtra("createTime") + descriptionView.text = intent.getStringExtra("description") + val data = intent.getIntExtra("data", -1) + if (data == -1) { + dataView.text = "0.0" + } else { + dataView.text = "$data.0" + } + val images = intent.getStringExtra("images") + + /** + * images: /storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_167066503.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_49917670.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_1069640.jpeg + * */ + val urls: ArrayList = ArrayList() + if (images == null) { + urls.add("") + } else { + if (images.isEmpty()) { + urls.add("") + } else { + val imageArray = images.split(",") + imageArray.forEach { + urls.add(it) + } + } + } + if (urls.size == 0) { + imageLayout.visibility = View.GONE + } else { + imageLayout.visibility = View.VISIBLE + //绑定图片 + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(imageUrls = urls) + imageAdapter.isDeleteVisible(false) + imageGridView.adapter = imageAdapter + imageGridView.setOnItemClickListener { _, _, position, _ -> + if (urls[position].isEmpty()) { + "图片加载失败,无法查看大图".show(this@SingleModeEventDetailActivity) + } else { + OtherUtils.showBigImage(this@SingleModeEventDetailActivity, position, urls) + } + } + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7f9b4a0..e58acea 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,7 +40,6 @@ - @@ -52,12 +51,14 @@ + + diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f80b012..fa0ebf6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -5,10 +5,7 @@ import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.greendao.InspectionLocalBeanDao import com.casic.birmm.inspect.greendao.TaskEventLocalBeanDao -import com.casic.birmm.inspect.model.InspectDetailModel -import com.casic.birmm.inspect.model.InspectListModel -import com.casic.birmm.inspect.model.NewInspectionModel -import com.casic.birmm.inspect.model.NewTaskEventModel +import com.casic.birmm.inspect.model.* class DataBaseManager private constructor() { @@ -71,8 +68,9 @@ * 查询所有巡检数据 */ fun queryAllInspection(offset: Int): MutableList { - return addQueryResult( + return addInspectionQueryResult( inspectionDao.queryBuilder() + .orderDesc(InspectionLocalBeanDao.Properties.StartTime) .offset(offset * Constant.PAGE_LIMIT) .limit(Constant.PAGE_LIMIT) .list() @@ -96,7 +94,7 @@ InspectionLocalBeanDao.Properties.Date.between(startDate, endDate), InspectionLocalBeanDao.Properties.Name.like(name) ) - return addQueryResult( + return addInspectionQueryResult( queryBuilder.where(condition) .orderDesc(InspectionLocalBeanDao.Properties.StartTime)//按时间顺序最新顺序排序 .offset(offset * Constant.PAGE_LIMIT) @@ -105,15 +103,16 @@ ) } else if (startDate == "" && endDate == "" && name == "") { //都为"",查询全部 - return addQueryResult( + return addInspectionQueryResult( inspectionDao.queryBuilder() + .orderDesc(InspectionLocalBeanDao.Properties.StartTime) .offset(offset * Constant.PAGE_LIMIT) .limit(Constant.PAGE_LIMIT) .list() ) } else { //其他只查询巡检名 - return addQueryResult( + return addInspectionQueryResult( inspectionDao.queryBuilder() .where(InspectionLocalBeanDao.Properties.Name.like(name)) .orderDesc(InspectionLocalBeanDao.Properties.StartTime)//按时间顺序最新顺序排序 @@ -124,7 +123,7 @@ } } - private fun addQueryResult(list: List?): MutableList { + private fun addInspectionQueryResult(list: List?): MutableList { val resultList = ArrayList() list?.forEach { val rowsBean = InspectListModel.DataBean.RowsBean() @@ -213,58 +212,113 @@ /** * 根据巡检Id查询事件数据 */ - fun queryTaskByInspection(inspectionId: String): MutableList? { - val resultList = ArrayList() + fun queryTaskByInspection(inspectionId: String): MutableList { + val resultList = ArrayList() taskEventDao.queryBuilder() .where(TaskEventLocalBeanDao.Properties.InspectionId.eq(inspectionId)) .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 .list()?.forEach { - resultList.add( - NewTaskEventModel( - taskId = it.taskId, - inspectionId = it.inspectionId, - name = it.name, - createTime = it.createTime, - type = it.type, - lng = it.lng, - lat = it.lat, - data = it.data, - images = it.images, - description = it.description, - user = it.user - ) - ) + val listBean = TaskRecordModel.DataBean.ListBean() + + listBean.id = it.taskId + listBean.inspectionId = it.inspectionId + listBean.name = it.name + listBean.createTime = it.createTime + listBean.type = it.type + listBean.lng = it.lng + listBean.lat = it.lat + listBean.data = it.data.toInt() + listBean.images = it.images + listBean.description = it.description + listBean.user = it.user + + resultList.add(listBean) } return resultList } /** - * 查询所有数据 + * 查询所有事件数据 */ - fun queryAllTask(): MutableList? { - val list = taskEventDao.queryBuilder().build().list() - val resultList = ArrayList() + fun queryAllTaskEvent(offset: Int): MutableList { + return addTaskTaskEventQueryResult( + taskEventDao.queryBuilder() + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime) + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } + + private fun addTaskTaskEventQueryResult(list: List?): MutableList { + val resultList = ArrayList() list?.forEach { - resultList.add( - NewTaskEventModel( - taskId = it.taskId, - inspectionId = it.inspectionId, - name = it.name, - createTime = it.createTime, - type = it.type, - lng = it.lng, - lat = it.lat, - data = it.data, - images = it.images, - description = it.description, - user = it.user - ) - ) + val rowsBean = EventListModel.DataBean.RowsBean() + + rowsBean.id = it.taskId + rowsBean.inspectionId = it.inspectionId + rowsBean.name = it.name + rowsBean.createTime = it.createTime + rowsBean.type = it.type + rowsBean.data = it.data.toInt() + rowsBean.description = it.description + rowsBean.lat = it.lat + rowsBean.lng = it.lng + rowsBean.images = it.images + rowsBean.user = it.user + + resultList.add(rowsBean) } return resultList } /** + * 条件查询事件数据 + */ + fun queryEventByCondition( + startDate: String, + endDate: String, + name: String, + offset: Int + ): MutableList { + //条件都不为"",精确查询 + if (startDate != "" && endDate != "" && name != "") { + val queryBuilder = taskEventDao.queryBuilder() + //查询条件 + val condition = queryBuilder.and( + TaskEventLocalBeanDao.Properties.CreateTime.between(startDate, endDate), + TaskEventLocalBeanDao.Properties.Name.like(name) + ) + return addTaskTaskEventQueryResult( + queryBuilder.where(condition) + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } else if (startDate == "" && endDate == "" && name == "") { + //都为"",查询全部 + return addTaskTaskEventQueryResult( + taskEventDao.queryBuilder() + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime) + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } else { + //其他只查询巡检名 + return addTaskTaskEventQueryResult( + taskEventDao.queryBuilder() + .where(TaskEventLocalBeanDao.Properties.Name.like(name)) + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } + } + + /** * 判断是否插入数据成功 */ fun isInsertSuccess(id: String, isInspection: Boolean): Boolean { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventDetailActivity.kt new file mode 100644 index 0000000..75230a2 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventDetailActivity.kt @@ -0,0 +1,79 @@ +package com.casic.birmm.inspect.view + +import android.annotation.SuppressLint +import android.os.Bundle +import android.view.View +import androidx.core.content.ContextCompat +import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.adapter.ImageGridViewAdapter +import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.extensions.show +import com.casic.birmm.inspect.utils.OtherUtils +import com.casic.birmm.inspect.utils.PageNavigationManager +import com.casic.birmm.inspect.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import kotlinx.android.synthetic.main.activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + + +class SingleModeEventDetailActivity : BaseSingleModeActivity() { + override fun initLayoutView(): Int = R.layout.activity_event_detail + + override fun setupTopBarLayout() { + PageNavigationManager.addActivity(this) + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "事件详情" + } + + @SuppressLint("SetTextI18n") + override fun initData(savedInstanceState: Bundle?) { + createTimeView.text = intent.getStringExtra("createTime") + descriptionView.text = intent.getStringExtra("description") + val data = intent.getIntExtra("data", -1) + if (data == -1) { + dataView.text = "0.0" + } else { + dataView.text = "$data.0" + } + val images = intent.getStringExtra("images") + + /** + * images: /storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_167066503.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_49917670.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_1069640.jpeg + * */ + val urls: ArrayList = ArrayList() + if (images == null) { + urls.add("") + } else { + if (images.isEmpty()) { + urls.add("") + } else { + val imageArray = images.split(",") + imageArray.forEach { + urls.add(it) + } + } + } + if (urls.size == 0) { + imageLayout.visibility = View.GONE + } else { + imageLayout.visibility = View.VISIBLE + //绑定图片 + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(imageUrls = urls) + imageAdapter.isDeleteVisible(false) + imageGridView.adapter = imageAdapter + imageGridView.setOnItemClickListener { _, _, position, _ -> + if (urls[position].isEmpty()) { + "图片加载失败,无法查看大图".show(this@SingleModeEventDetailActivity) + } else { + OtherUtils.showBigImage(this@SingleModeEventDetailActivity, position, urls) + } + } + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventListActivity.kt new file mode 100644 index 0000000..be7d506 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventListActivity.kt @@ -0,0 +1,64 @@ +package com.casic.birmm.inspect.view + +import android.content.Intent +import android.os.Bundle +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.extensions.filterString +import com.casic.birmm.inspect.extensions.show +import com.casic.birmm.inspect.utils.DataBaseManager +import com.casic.birmm.inspect.utils.PageNavigationManager +import com.casic.birmm.inspect.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import kotlinx.android.synthetic.main.activity_event_list.* +import kotlinx.android.synthetic.main.include_base_title.* + +class SingleModeEventListActivity : BaseSingleModeActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_list + + override fun setupTopBarLayout() { + PageNavigationManager.addActivity(this) + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "事件清单" + } + + override fun initData(savedInstanceState: Bundle?) { + val id = intent.getStringExtra("id")!! + val dataRows = DataBaseManager.instance.queryTaskByInspection(id) + if (dataRows.isEmpty()) { + "抱歉,无法查询到相关记录".show(this) + } else { + val eventAdapter = EventListAdapter(this, dataRows) + eventRecyclerView!!.layoutManager = LinearLayoutManager(this) + eventRecyclerView.adapter = eventAdapter + eventAdapter.setOnItemClickListener(object : + EventListAdapter.OnItemClickListener { + override fun onClick(position: Int) { + val intent = + Intent( + this@SingleModeEventListActivity, + SingleModeEventDetailActivity::class.java + ) + val listBean = dataRows[position] + intent.putExtra("createTime", listBean.createTime) + intent.putExtra( + "description", + listBean.description!!.filterString() + ) + intent.putExtra("data", listBean.data) + intent.putExtra("images", listBean.images) + startActivity(intent) + } + }) + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7f9b4a0..e58acea 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,7 +40,6 @@ - @@ -52,12 +51,14 @@ + + diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f80b012..fa0ebf6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -5,10 +5,7 @@ import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.greendao.InspectionLocalBeanDao import com.casic.birmm.inspect.greendao.TaskEventLocalBeanDao -import com.casic.birmm.inspect.model.InspectDetailModel -import com.casic.birmm.inspect.model.InspectListModel -import com.casic.birmm.inspect.model.NewInspectionModel -import com.casic.birmm.inspect.model.NewTaskEventModel +import com.casic.birmm.inspect.model.* class DataBaseManager private constructor() { @@ -71,8 +68,9 @@ * 查询所有巡检数据 */ fun queryAllInspection(offset: Int): MutableList { - return addQueryResult( + return addInspectionQueryResult( inspectionDao.queryBuilder() + .orderDesc(InspectionLocalBeanDao.Properties.StartTime) .offset(offset * Constant.PAGE_LIMIT) .limit(Constant.PAGE_LIMIT) .list() @@ -96,7 +94,7 @@ InspectionLocalBeanDao.Properties.Date.between(startDate, endDate), InspectionLocalBeanDao.Properties.Name.like(name) ) - return addQueryResult( + return addInspectionQueryResult( queryBuilder.where(condition) .orderDesc(InspectionLocalBeanDao.Properties.StartTime)//按时间顺序最新顺序排序 .offset(offset * Constant.PAGE_LIMIT) @@ -105,15 +103,16 @@ ) } else if (startDate == "" && endDate == "" && name == "") { //都为"",查询全部 - return addQueryResult( + return addInspectionQueryResult( inspectionDao.queryBuilder() + .orderDesc(InspectionLocalBeanDao.Properties.StartTime) .offset(offset * Constant.PAGE_LIMIT) .limit(Constant.PAGE_LIMIT) .list() ) } else { //其他只查询巡检名 - return addQueryResult( + return addInspectionQueryResult( inspectionDao.queryBuilder() .where(InspectionLocalBeanDao.Properties.Name.like(name)) .orderDesc(InspectionLocalBeanDao.Properties.StartTime)//按时间顺序最新顺序排序 @@ -124,7 +123,7 @@ } } - private fun addQueryResult(list: List?): MutableList { + private fun addInspectionQueryResult(list: List?): MutableList { val resultList = ArrayList() list?.forEach { val rowsBean = InspectListModel.DataBean.RowsBean() @@ -213,58 +212,113 @@ /** * 根据巡检Id查询事件数据 */ - fun queryTaskByInspection(inspectionId: String): MutableList? { - val resultList = ArrayList() + fun queryTaskByInspection(inspectionId: String): MutableList { + val resultList = ArrayList() taskEventDao.queryBuilder() .where(TaskEventLocalBeanDao.Properties.InspectionId.eq(inspectionId)) .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 .list()?.forEach { - resultList.add( - NewTaskEventModel( - taskId = it.taskId, - inspectionId = it.inspectionId, - name = it.name, - createTime = it.createTime, - type = it.type, - lng = it.lng, - lat = it.lat, - data = it.data, - images = it.images, - description = it.description, - user = it.user - ) - ) + val listBean = TaskRecordModel.DataBean.ListBean() + + listBean.id = it.taskId + listBean.inspectionId = it.inspectionId + listBean.name = it.name + listBean.createTime = it.createTime + listBean.type = it.type + listBean.lng = it.lng + listBean.lat = it.lat + listBean.data = it.data.toInt() + listBean.images = it.images + listBean.description = it.description + listBean.user = it.user + + resultList.add(listBean) } return resultList } /** - * 查询所有数据 + * 查询所有事件数据 */ - fun queryAllTask(): MutableList? { - val list = taskEventDao.queryBuilder().build().list() - val resultList = ArrayList() + fun queryAllTaskEvent(offset: Int): MutableList { + return addTaskTaskEventQueryResult( + taskEventDao.queryBuilder() + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime) + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } + + private fun addTaskTaskEventQueryResult(list: List?): MutableList { + val resultList = ArrayList() list?.forEach { - resultList.add( - NewTaskEventModel( - taskId = it.taskId, - inspectionId = it.inspectionId, - name = it.name, - createTime = it.createTime, - type = it.type, - lng = it.lng, - lat = it.lat, - data = it.data, - images = it.images, - description = it.description, - user = it.user - ) - ) + val rowsBean = EventListModel.DataBean.RowsBean() + + rowsBean.id = it.taskId + rowsBean.inspectionId = it.inspectionId + rowsBean.name = it.name + rowsBean.createTime = it.createTime + rowsBean.type = it.type + rowsBean.data = it.data.toInt() + rowsBean.description = it.description + rowsBean.lat = it.lat + rowsBean.lng = it.lng + rowsBean.images = it.images + rowsBean.user = it.user + + resultList.add(rowsBean) } return resultList } /** + * 条件查询事件数据 + */ + fun queryEventByCondition( + startDate: String, + endDate: String, + name: String, + offset: Int + ): MutableList { + //条件都不为"",精确查询 + if (startDate != "" && endDate != "" && name != "") { + val queryBuilder = taskEventDao.queryBuilder() + //查询条件 + val condition = queryBuilder.and( + TaskEventLocalBeanDao.Properties.CreateTime.between(startDate, endDate), + TaskEventLocalBeanDao.Properties.Name.like(name) + ) + return addTaskTaskEventQueryResult( + queryBuilder.where(condition) + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } else if (startDate == "" && endDate == "" && name == "") { + //都为"",查询全部 + return addTaskTaskEventQueryResult( + taskEventDao.queryBuilder() + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime) + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } else { + //其他只查询巡检名 + return addTaskTaskEventQueryResult( + taskEventDao.queryBuilder() + .where(TaskEventLocalBeanDao.Properties.Name.like(name)) + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } + } + + /** * 判断是否插入数据成功 */ fun isInsertSuccess(id: String, isInspection: Boolean): Boolean { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventDetailActivity.kt new file mode 100644 index 0000000..75230a2 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventDetailActivity.kt @@ -0,0 +1,79 @@ +package com.casic.birmm.inspect.view + +import android.annotation.SuppressLint +import android.os.Bundle +import android.view.View +import androidx.core.content.ContextCompat +import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.adapter.ImageGridViewAdapter +import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.extensions.show +import com.casic.birmm.inspect.utils.OtherUtils +import com.casic.birmm.inspect.utils.PageNavigationManager +import com.casic.birmm.inspect.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import kotlinx.android.synthetic.main.activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + + +class SingleModeEventDetailActivity : BaseSingleModeActivity() { + override fun initLayoutView(): Int = R.layout.activity_event_detail + + override fun setupTopBarLayout() { + PageNavigationManager.addActivity(this) + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "事件详情" + } + + @SuppressLint("SetTextI18n") + override fun initData(savedInstanceState: Bundle?) { + createTimeView.text = intent.getStringExtra("createTime") + descriptionView.text = intent.getStringExtra("description") + val data = intent.getIntExtra("data", -1) + if (data == -1) { + dataView.text = "0.0" + } else { + dataView.text = "$data.0" + } + val images = intent.getStringExtra("images") + + /** + * images: /storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_167066503.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_49917670.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_1069640.jpeg + * */ + val urls: ArrayList = ArrayList() + if (images == null) { + urls.add("") + } else { + if (images.isEmpty()) { + urls.add("") + } else { + val imageArray = images.split(",") + imageArray.forEach { + urls.add(it) + } + } + } + if (urls.size == 0) { + imageLayout.visibility = View.GONE + } else { + imageLayout.visibility = View.VISIBLE + //绑定图片 + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(imageUrls = urls) + imageAdapter.isDeleteVisible(false) + imageGridView.adapter = imageAdapter + imageGridView.setOnItemClickListener { _, _, position, _ -> + if (urls[position].isEmpty()) { + "图片加载失败,无法查看大图".show(this@SingleModeEventDetailActivity) + } else { + OtherUtils.showBigImage(this@SingleModeEventDetailActivity, position, urls) + } + } + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventListActivity.kt new file mode 100644 index 0000000..be7d506 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventListActivity.kt @@ -0,0 +1,64 @@ +package com.casic.birmm.inspect.view + +import android.content.Intent +import android.os.Bundle +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.extensions.filterString +import com.casic.birmm.inspect.extensions.show +import com.casic.birmm.inspect.utils.DataBaseManager +import com.casic.birmm.inspect.utils.PageNavigationManager +import com.casic.birmm.inspect.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import kotlinx.android.synthetic.main.activity_event_list.* +import kotlinx.android.synthetic.main.include_base_title.* + +class SingleModeEventListActivity : BaseSingleModeActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_list + + override fun setupTopBarLayout() { + PageNavigationManager.addActivity(this) + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "事件清单" + } + + override fun initData(savedInstanceState: Bundle?) { + val id = intent.getStringExtra("id")!! + val dataRows = DataBaseManager.instance.queryTaskByInspection(id) + if (dataRows.isEmpty()) { + "抱歉,无法查询到相关记录".show(this) + } else { + val eventAdapter = EventListAdapter(this, dataRows) + eventRecyclerView!!.layoutManager = LinearLayoutManager(this) + eventRecyclerView.adapter = eventAdapter + eventAdapter.setOnItemClickListener(object : + EventListAdapter.OnItemClickListener { + override fun onClick(position: Int) { + val intent = + Intent( + this@SingleModeEventListActivity, + SingleModeEventDetailActivity::class.java + ) + val listBean = dataRows[position] + intent.putExtra("createTime", listBean.createTime) + intent.putExtra( + "description", + listBean.description!!.filterString() + ) + intent.putExtra("data", listBean.data) + intent.putExtra("images", listBean.images) + startActivity(intent) + } + }) + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventQueryActivity.kt index 65455f7..0c257fa 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventQueryActivity.kt @@ -1,22 +1,19 @@ package com.casic.birmm.inspect.view import android.content.Intent +import android.os.Bundle +import android.os.CountDownTimer import android.os.Handler import android.os.Message import androidx.core.content.ContextCompat -import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.EventSearchListAdapter -import com.casic.birmm.inspect.base.BaseViewModelActivity +import com.casic.birmm.inspect.base.BaseSingleModeActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.model.EventListModel -import com.casic.birmm.inspect.utils.Constant -import com.casic.birmm.inspect.utils.PageNavigationManager -import com.casic.birmm.inspect.utils.StatusBarColorUtil -import com.casic.birmm.inspect.utils.TimeOrDateUtil -import com.casic.birmm.inspect.vm.EventQueryViewModel +import com.casic.birmm.inspect.utils.* import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type @@ -30,21 +27,20 @@ import kotlinx.android.synthetic.main.include_base_title.* import java.lang.ref.WeakReference -class SingleModeEventQueryActivity : BaseViewModelActivity() { +class SingleModeEventQueryActivity : BaseSingleModeActivity() { private var keywords = "" private var startTime = "" private var endTime = "" - private var pageIndex = 1 + + //本地数据库页码从0开始 + private var pageIndex = 0 private var isRefresh = false private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var adapter: EventSearchListAdapter - override fun createViewModelByClass(): Class? = - EventQueryViewModel::class.java - override fun initLayoutView(): Int = R.layout.activity_query_event override fun setupTopBarLayout() { @@ -54,14 +50,10 @@ titleView.text = "事件查询(单机模式)" } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - viewModel.queryEvent( - keywords = keywords, - startTime = startTime, - endTime = endTime, - pageIndex = pageIndex - ) + dataBeans = DataBaseManager.instance.queryAllTaskEvent(pageIndex) + weakReferenceHandler.sendEmptyMessage(20210820) } override fun initEvent() { @@ -102,65 +94,65 @@ searchView.setOnClickListener { keywords = inputTipsView.text.toString() //查询都从第一页开始查 - pageIndex = 1 - viewModel.queryEvent( - keywords = keywords, - startTime = startTime, - endTime = endTime, - pageIndex = pageIndex - ) + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryEventByCondition( + startTime, + endTime, + keywords, + pageIndex + ) + weakReferenceHandler.sendEmptyMessage(20210820) } refreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 - pageIndex = 1 - viewModel.queryEvent( - keywords = keywords, - startTime = startTime, - endTime = endTime, - pageIndex = pageIndex - ) + pageIndex = 0 + object : CountDownTimer(1500, 500) { + override fun onTick(millisUntilFinished: Long) { + + } + + override fun onFinish() { + dataBeans.clear() + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, + endTime, + keywords, + pageIndex + ) + refreshLayout.finishRefresh() + isRefresh = false + weakReferenceHandler.sendEmptyMessage(20210819) + } + }.start() } refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - viewModel.queryEvent( - keywords = keywords, - startTime = startTime, - endTime = endTime, - pageIndex = pageIndex - ) - } + object : CountDownTimer(1500, 500) { + override fun onTick(millisUntilFinished: Long) { - viewModel.resultModel.observe(this, Observer { - if (it.code == 200) { - val dataRows = it.data?.rows - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows!! - refreshLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows?.size == 0) { - "到底了,别拉了".show(this) - } - dataBeans.addAll(dataRows!!) - refreshLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows!! - } } - weakReferenceHandler.sendEmptyMessage(20210712) - } - }) - viewModel.loadState.observe(this, Observer { - "抱歉,无法查询到相关记录".show(this) - }) + + override fun onFinish() { + val dataRows = DataBaseManager.instance.queryEventByCondition( + startTime, + endTime, + keywords, + pageIndex + ) + if (dataRows.size == 0) { + "到底了,别拉了".show(this@SingleModeEventQueryActivity) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + weakReferenceHandler.sendEmptyMessage(20210820) + } + }.start() + } } private class WeakReferenceHandler(activity: SingleModeEventQueryActivity) : Handler() { @@ -168,7 +160,7 @@ override fun handleMessage(msg: Message) { super.handleMessage(msg) val resultActivity = reference.get() - if (msg.what == 20210712) { + if (msg.what == 20210820) { if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { resultActivity.adapter.notifyDataSetChanged() } else { //首次加载数据 @@ -184,7 +176,10 @@ resultActivity.adapter.setOnItemClickListener(object : EventSearchListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent(resultActivity, EventDetailActivity::class.java) + val intent = Intent( + resultActivity, + SingleModeEventDetailActivity::class.java + ) val rowsBean = resultActivity.dataBeans[position] intent.putExtra("createTime", rowsBean.createTime) intent.putExtra( diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7f9b4a0..e58acea 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,7 +40,6 @@ - @@ -52,12 +51,14 @@ + + diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f80b012..fa0ebf6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -5,10 +5,7 @@ import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.greendao.InspectionLocalBeanDao import com.casic.birmm.inspect.greendao.TaskEventLocalBeanDao -import com.casic.birmm.inspect.model.InspectDetailModel -import com.casic.birmm.inspect.model.InspectListModel -import com.casic.birmm.inspect.model.NewInspectionModel -import com.casic.birmm.inspect.model.NewTaskEventModel +import com.casic.birmm.inspect.model.* class DataBaseManager private constructor() { @@ -71,8 +68,9 @@ * 查询所有巡检数据 */ fun queryAllInspection(offset: Int): MutableList { - return addQueryResult( + return addInspectionQueryResult( inspectionDao.queryBuilder() + .orderDesc(InspectionLocalBeanDao.Properties.StartTime) .offset(offset * Constant.PAGE_LIMIT) .limit(Constant.PAGE_LIMIT) .list() @@ -96,7 +94,7 @@ InspectionLocalBeanDao.Properties.Date.between(startDate, endDate), InspectionLocalBeanDao.Properties.Name.like(name) ) - return addQueryResult( + return addInspectionQueryResult( queryBuilder.where(condition) .orderDesc(InspectionLocalBeanDao.Properties.StartTime)//按时间顺序最新顺序排序 .offset(offset * Constant.PAGE_LIMIT) @@ -105,15 +103,16 @@ ) } else if (startDate == "" && endDate == "" && name == "") { //都为"",查询全部 - return addQueryResult( + return addInspectionQueryResult( inspectionDao.queryBuilder() + .orderDesc(InspectionLocalBeanDao.Properties.StartTime) .offset(offset * Constant.PAGE_LIMIT) .limit(Constant.PAGE_LIMIT) .list() ) } else { //其他只查询巡检名 - return addQueryResult( + return addInspectionQueryResult( inspectionDao.queryBuilder() .where(InspectionLocalBeanDao.Properties.Name.like(name)) .orderDesc(InspectionLocalBeanDao.Properties.StartTime)//按时间顺序最新顺序排序 @@ -124,7 +123,7 @@ } } - private fun addQueryResult(list: List?): MutableList { + private fun addInspectionQueryResult(list: List?): MutableList { val resultList = ArrayList() list?.forEach { val rowsBean = InspectListModel.DataBean.RowsBean() @@ -213,58 +212,113 @@ /** * 根据巡检Id查询事件数据 */ - fun queryTaskByInspection(inspectionId: String): MutableList? { - val resultList = ArrayList() + fun queryTaskByInspection(inspectionId: String): MutableList { + val resultList = ArrayList() taskEventDao.queryBuilder() .where(TaskEventLocalBeanDao.Properties.InspectionId.eq(inspectionId)) .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 .list()?.forEach { - resultList.add( - NewTaskEventModel( - taskId = it.taskId, - inspectionId = it.inspectionId, - name = it.name, - createTime = it.createTime, - type = it.type, - lng = it.lng, - lat = it.lat, - data = it.data, - images = it.images, - description = it.description, - user = it.user - ) - ) + val listBean = TaskRecordModel.DataBean.ListBean() + + listBean.id = it.taskId + listBean.inspectionId = it.inspectionId + listBean.name = it.name + listBean.createTime = it.createTime + listBean.type = it.type + listBean.lng = it.lng + listBean.lat = it.lat + listBean.data = it.data.toInt() + listBean.images = it.images + listBean.description = it.description + listBean.user = it.user + + resultList.add(listBean) } return resultList } /** - * 查询所有数据 + * 查询所有事件数据 */ - fun queryAllTask(): MutableList? { - val list = taskEventDao.queryBuilder().build().list() - val resultList = ArrayList() + fun queryAllTaskEvent(offset: Int): MutableList { + return addTaskTaskEventQueryResult( + taskEventDao.queryBuilder() + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime) + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } + + private fun addTaskTaskEventQueryResult(list: List?): MutableList { + val resultList = ArrayList() list?.forEach { - resultList.add( - NewTaskEventModel( - taskId = it.taskId, - inspectionId = it.inspectionId, - name = it.name, - createTime = it.createTime, - type = it.type, - lng = it.lng, - lat = it.lat, - data = it.data, - images = it.images, - description = it.description, - user = it.user - ) - ) + val rowsBean = EventListModel.DataBean.RowsBean() + + rowsBean.id = it.taskId + rowsBean.inspectionId = it.inspectionId + rowsBean.name = it.name + rowsBean.createTime = it.createTime + rowsBean.type = it.type + rowsBean.data = it.data.toInt() + rowsBean.description = it.description + rowsBean.lat = it.lat + rowsBean.lng = it.lng + rowsBean.images = it.images + rowsBean.user = it.user + + resultList.add(rowsBean) } return resultList } /** + * 条件查询事件数据 + */ + fun queryEventByCondition( + startDate: String, + endDate: String, + name: String, + offset: Int + ): MutableList { + //条件都不为"",精确查询 + if (startDate != "" && endDate != "" && name != "") { + val queryBuilder = taskEventDao.queryBuilder() + //查询条件 + val condition = queryBuilder.and( + TaskEventLocalBeanDao.Properties.CreateTime.between(startDate, endDate), + TaskEventLocalBeanDao.Properties.Name.like(name) + ) + return addTaskTaskEventQueryResult( + queryBuilder.where(condition) + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } else if (startDate == "" && endDate == "" && name == "") { + //都为"",查询全部 + return addTaskTaskEventQueryResult( + taskEventDao.queryBuilder() + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime) + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } else { + //其他只查询巡检名 + return addTaskTaskEventQueryResult( + taskEventDao.queryBuilder() + .where(TaskEventLocalBeanDao.Properties.Name.like(name)) + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } + } + + /** * 判断是否插入数据成功 */ fun isInsertSuccess(id: String, isInspection: Boolean): Boolean { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventDetailActivity.kt new file mode 100644 index 0000000..75230a2 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventDetailActivity.kt @@ -0,0 +1,79 @@ +package com.casic.birmm.inspect.view + +import android.annotation.SuppressLint +import android.os.Bundle +import android.view.View +import androidx.core.content.ContextCompat +import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.adapter.ImageGridViewAdapter +import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.extensions.show +import com.casic.birmm.inspect.utils.OtherUtils +import com.casic.birmm.inspect.utils.PageNavigationManager +import com.casic.birmm.inspect.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import kotlinx.android.synthetic.main.activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + + +class SingleModeEventDetailActivity : BaseSingleModeActivity() { + override fun initLayoutView(): Int = R.layout.activity_event_detail + + override fun setupTopBarLayout() { + PageNavigationManager.addActivity(this) + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "事件详情" + } + + @SuppressLint("SetTextI18n") + override fun initData(savedInstanceState: Bundle?) { + createTimeView.text = intent.getStringExtra("createTime") + descriptionView.text = intent.getStringExtra("description") + val data = intent.getIntExtra("data", -1) + if (data == -1) { + dataView.text = "0.0" + } else { + dataView.text = "$data.0" + } + val images = intent.getStringExtra("images") + + /** + * images: /storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_167066503.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_49917670.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_1069640.jpeg + * */ + val urls: ArrayList = ArrayList() + if (images == null) { + urls.add("") + } else { + if (images.isEmpty()) { + urls.add("") + } else { + val imageArray = images.split(",") + imageArray.forEach { + urls.add(it) + } + } + } + if (urls.size == 0) { + imageLayout.visibility = View.GONE + } else { + imageLayout.visibility = View.VISIBLE + //绑定图片 + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(imageUrls = urls) + imageAdapter.isDeleteVisible(false) + imageGridView.adapter = imageAdapter + imageGridView.setOnItemClickListener { _, _, position, _ -> + if (urls[position].isEmpty()) { + "图片加载失败,无法查看大图".show(this@SingleModeEventDetailActivity) + } else { + OtherUtils.showBigImage(this@SingleModeEventDetailActivity, position, urls) + } + } + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventListActivity.kt new file mode 100644 index 0000000..be7d506 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventListActivity.kt @@ -0,0 +1,64 @@ +package com.casic.birmm.inspect.view + +import android.content.Intent +import android.os.Bundle +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.extensions.filterString +import com.casic.birmm.inspect.extensions.show +import com.casic.birmm.inspect.utils.DataBaseManager +import com.casic.birmm.inspect.utils.PageNavigationManager +import com.casic.birmm.inspect.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import kotlinx.android.synthetic.main.activity_event_list.* +import kotlinx.android.synthetic.main.include_base_title.* + +class SingleModeEventListActivity : BaseSingleModeActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_list + + override fun setupTopBarLayout() { + PageNavigationManager.addActivity(this) + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "事件清单" + } + + override fun initData(savedInstanceState: Bundle?) { + val id = intent.getStringExtra("id")!! + val dataRows = DataBaseManager.instance.queryTaskByInspection(id) + if (dataRows.isEmpty()) { + "抱歉,无法查询到相关记录".show(this) + } else { + val eventAdapter = EventListAdapter(this, dataRows) + eventRecyclerView!!.layoutManager = LinearLayoutManager(this) + eventRecyclerView.adapter = eventAdapter + eventAdapter.setOnItemClickListener(object : + EventListAdapter.OnItemClickListener { + override fun onClick(position: Int) { + val intent = + Intent( + this@SingleModeEventListActivity, + SingleModeEventDetailActivity::class.java + ) + val listBean = dataRows[position] + intent.putExtra("createTime", listBean.createTime) + intent.putExtra( + "description", + listBean.description!!.filterString() + ) + intent.putExtra("data", listBean.data) + intent.putExtra("images", listBean.images) + startActivity(intent) + } + }) + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventQueryActivity.kt index 65455f7..0c257fa 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventQueryActivity.kt @@ -1,22 +1,19 @@ package com.casic.birmm.inspect.view import android.content.Intent +import android.os.Bundle +import android.os.CountDownTimer import android.os.Handler import android.os.Message import androidx.core.content.ContextCompat -import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.EventSearchListAdapter -import com.casic.birmm.inspect.base.BaseViewModelActivity +import com.casic.birmm.inspect.base.BaseSingleModeActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.model.EventListModel -import com.casic.birmm.inspect.utils.Constant -import com.casic.birmm.inspect.utils.PageNavigationManager -import com.casic.birmm.inspect.utils.StatusBarColorUtil -import com.casic.birmm.inspect.utils.TimeOrDateUtil -import com.casic.birmm.inspect.vm.EventQueryViewModel +import com.casic.birmm.inspect.utils.* import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type @@ -30,21 +27,20 @@ import kotlinx.android.synthetic.main.include_base_title.* import java.lang.ref.WeakReference -class SingleModeEventQueryActivity : BaseViewModelActivity() { +class SingleModeEventQueryActivity : BaseSingleModeActivity() { private var keywords = "" private var startTime = "" private var endTime = "" - private var pageIndex = 1 + + //本地数据库页码从0开始 + private var pageIndex = 0 private var isRefresh = false private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var adapter: EventSearchListAdapter - override fun createViewModelByClass(): Class? = - EventQueryViewModel::class.java - override fun initLayoutView(): Int = R.layout.activity_query_event override fun setupTopBarLayout() { @@ -54,14 +50,10 @@ titleView.text = "事件查询(单机模式)" } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - viewModel.queryEvent( - keywords = keywords, - startTime = startTime, - endTime = endTime, - pageIndex = pageIndex - ) + dataBeans = DataBaseManager.instance.queryAllTaskEvent(pageIndex) + weakReferenceHandler.sendEmptyMessage(20210820) } override fun initEvent() { @@ -102,65 +94,65 @@ searchView.setOnClickListener { keywords = inputTipsView.text.toString() //查询都从第一页开始查 - pageIndex = 1 - viewModel.queryEvent( - keywords = keywords, - startTime = startTime, - endTime = endTime, - pageIndex = pageIndex - ) + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryEventByCondition( + startTime, + endTime, + keywords, + pageIndex + ) + weakReferenceHandler.sendEmptyMessage(20210820) } refreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 - pageIndex = 1 - viewModel.queryEvent( - keywords = keywords, - startTime = startTime, - endTime = endTime, - pageIndex = pageIndex - ) + pageIndex = 0 + object : CountDownTimer(1500, 500) { + override fun onTick(millisUntilFinished: Long) { + + } + + override fun onFinish() { + dataBeans.clear() + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, + endTime, + keywords, + pageIndex + ) + refreshLayout.finishRefresh() + isRefresh = false + weakReferenceHandler.sendEmptyMessage(20210819) + } + }.start() } refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - viewModel.queryEvent( - keywords = keywords, - startTime = startTime, - endTime = endTime, - pageIndex = pageIndex - ) - } + object : CountDownTimer(1500, 500) { + override fun onTick(millisUntilFinished: Long) { - viewModel.resultModel.observe(this, Observer { - if (it.code == 200) { - val dataRows = it.data?.rows - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows!! - refreshLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows?.size == 0) { - "到底了,别拉了".show(this) - } - dataBeans.addAll(dataRows!!) - refreshLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows!! - } } - weakReferenceHandler.sendEmptyMessage(20210712) - } - }) - viewModel.loadState.observe(this, Observer { - "抱歉,无法查询到相关记录".show(this) - }) + + override fun onFinish() { + val dataRows = DataBaseManager.instance.queryEventByCondition( + startTime, + endTime, + keywords, + pageIndex + ) + if (dataRows.size == 0) { + "到底了,别拉了".show(this@SingleModeEventQueryActivity) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + weakReferenceHandler.sendEmptyMessage(20210820) + } + }.start() + } } private class WeakReferenceHandler(activity: SingleModeEventQueryActivity) : Handler() { @@ -168,7 +160,7 @@ override fun handleMessage(msg: Message) { super.handleMessage(msg) val resultActivity = reference.get() - if (msg.what == 20210712) { + if (msg.what == 20210820) { if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { resultActivity.adapter.notifyDataSetChanged() } else { //首次加载数据 @@ -184,7 +176,10 @@ resultActivity.adapter.setOnItemClickListener(object : EventSearchListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent(resultActivity, EventDetailActivity::class.java) + val intent = Intent( + resultActivity, + SingleModeEventDetailActivity::class.java + ) val rowsBean = resultActivity.dataBeans[position] intent.putExtra("createTime", rowsBean.createTime) intent.putExtra( diff --git a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeInspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeInspectRouteActivity.kt index ff846e1..9412e31 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeInspectRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeInspectRouteActivity.kt @@ -96,7 +96,7 @@ leftBackView.setOnClickListener { this.finish() } eventButton.setChangeAlphaWhenPress(true) eventButton.setOnClickListener { - val intent = Intent(this, EventListActivity::class.java) + val intent = Intent(this, SingleModeEventListActivity::class.java) intent.putExtra("id", id) startActivity(intent) } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7f9b4a0..e58acea 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,7 +40,6 @@ - @@ -52,12 +51,14 @@ + + diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f80b012..fa0ebf6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -5,10 +5,7 @@ import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.greendao.InspectionLocalBeanDao import com.casic.birmm.inspect.greendao.TaskEventLocalBeanDao -import com.casic.birmm.inspect.model.InspectDetailModel -import com.casic.birmm.inspect.model.InspectListModel -import com.casic.birmm.inspect.model.NewInspectionModel -import com.casic.birmm.inspect.model.NewTaskEventModel +import com.casic.birmm.inspect.model.* class DataBaseManager private constructor() { @@ -71,8 +68,9 @@ * 查询所有巡检数据 */ fun queryAllInspection(offset: Int): MutableList { - return addQueryResult( + return addInspectionQueryResult( inspectionDao.queryBuilder() + .orderDesc(InspectionLocalBeanDao.Properties.StartTime) .offset(offset * Constant.PAGE_LIMIT) .limit(Constant.PAGE_LIMIT) .list() @@ -96,7 +94,7 @@ InspectionLocalBeanDao.Properties.Date.between(startDate, endDate), InspectionLocalBeanDao.Properties.Name.like(name) ) - return addQueryResult( + return addInspectionQueryResult( queryBuilder.where(condition) .orderDesc(InspectionLocalBeanDao.Properties.StartTime)//按时间顺序最新顺序排序 .offset(offset * Constant.PAGE_LIMIT) @@ -105,15 +103,16 @@ ) } else if (startDate == "" && endDate == "" && name == "") { //都为"",查询全部 - return addQueryResult( + return addInspectionQueryResult( inspectionDao.queryBuilder() + .orderDesc(InspectionLocalBeanDao.Properties.StartTime) .offset(offset * Constant.PAGE_LIMIT) .limit(Constant.PAGE_LIMIT) .list() ) } else { //其他只查询巡检名 - return addQueryResult( + return addInspectionQueryResult( inspectionDao.queryBuilder() .where(InspectionLocalBeanDao.Properties.Name.like(name)) .orderDesc(InspectionLocalBeanDao.Properties.StartTime)//按时间顺序最新顺序排序 @@ -124,7 +123,7 @@ } } - private fun addQueryResult(list: List?): MutableList { + private fun addInspectionQueryResult(list: List?): MutableList { val resultList = ArrayList() list?.forEach { val rowsBean = InspectListModel.DataBean.RowsBean() @@ -213,58 +212,113 @@ /** * 根据巡检Id查询事件数据 */ - fun queryTaskByInspection(inspectionId: String): MutableList? { - val resultList = ArrayList() + fun queryTaskByInspection(inspectionId: String): MutableList { + val resultList = ArrayList() taskEventDao.queryBuilder() .where(TaskEventLocalBeanDao.Properties.InspectionId.eq(inspectionId)) .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 .list()?.forEach { - resultList.add( - NewTaskEventModel( - taskId = it.taskId, - inspectionId = it.inspectionId, - name = it.name, - createTime = it.createTime, - type = it.type, - lng = it.lng, - lat = it.lat, - data = it.data, - images = it.images, - description = it.description, - user = it.user - ) - ) + val listBean = TaskRecordModel.DataBean.ListBean() + + listBean.id = it.taskId + listBean.inspectionId = it.inspectionId + listBean.name = it.name + listBean.createTime = it.createTime + listBean.type = it.type + listBean.lng = it.lng + listBean.lat = it.lat + listBean.data = it.data.toInt() + listBean.images = it.images + listBean.description = it.description + listBean.user = it.user + + resultList.add(listBean) } return resultList } /** - * 查询所有数据 + * 查询所有事件数据 */ - fun queryAllTask(): MutableList? { - val list = taskEventDao.queryBuilder().build().list() - val resultList = ArrayList() + fun queryAllTaskEvent(offset: Int): MutableList { + return addTaskTaskEventQueryResult( + taskEventDao.queryBuilder() + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime) + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } + + private fun addTaskTaskEventQueryResult(list: List?): MutableList { + val resultList = ArrayList() list?.forEach { - resultList.add( - NewTaskEventModel( - taskId = it.taskId, - inspectionId = it.inspectionId, - name = it.name, - createTime = it.createTime, - type = it.type, - lng = it.lng, - lat = it.lat, - data = it.data, - images = it.images, - description = it.description, - user = it.user - ) - ) + val rowsBean = EventListModel.DataBean.RowsBean() + + rowsBean.id = it.taskId + rowsBean.inspectionId = it.inspectionId + rowsBean.name = it.name + rowsBean.createTime = it.createTime + rowsBean.type = it.type + rowsBean.data = it.data.toInt() + rowsBean.description = it.description + rowsBean.lat = it.lat + rowsBean.lng = it.lng + rowsBean.images = it.images + rowsBean.user = it.user + + resultList.add(rowsBean) } return resultList } /** + * 条件查询事件数据 + */ + fun queryEventByCondition( + startDate: String, + endDate: String, + name: String, + offset: Int + ): MutableList { + //条件都不为"",精确查询 + if (startDate != "" && endDate != "" && name != "") { + val queryBuilder = taskEventDao.queryBuilder() + //查询条件 + val condition = queryBuilder.and( + TaskEventLocalBeanDao.Properties.CreateTime.between(startDate, endDate), + TaskEventLocalBeanDao.Properties.Name.like(name) + ) + return addTaskTaskEventQueryResult( + queryBuilder.where(condition) + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } else if (startDate == "" && endDate == "" && name == "") { + //都为"",查询全部 + return addTaskTaskEventQueryResult( + taskEventDao.queryBuilder() + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime) + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } else { + //其他只查询巡检名 + return addTaskTaskEventQueryResult( + taskEventDao.queryBuilder() + .where(TaskEventLocalBeanDao.Properties.Name.like(name)) + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } + } + + /** * 判断是否插入数据成功 */ fun isInsertSuccess(id: String, isInspection: Boolean): Boolean { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventDetailActivity.kt new file mode 100644 index 0000000..75230a2 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventDetailActivity.kt @@ -0,0 +1,79 @@ +package com.casic.birmm.inspect.view + +import android.annotation.SuppressLint +import android.os.Bundle +import android.view.View +import androidx.core.content.ContextCompat +import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.adapter.ImageGridViewAdapter +import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.extensions.show +import com.casic.birmm.inspect.utils.OtherUtils +import com.casic.birmm.inspect.utils.PageNavigationManager +import com.casic.birmm.inspect.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import kotlinx.android.synthetic.main.activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + + +class SingleModeEventDetailActivity : BaseSingleModeActivity() { + override fun initLayoutView(): Int = R.layout.activity_event_detail + + override fun setupTopBarLayout() { + PageNavigationManager.addActivity(this) + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "事件详情" + } + + @SuppressLint("SetTextI18n") + override fun initData(savedInstanceState: Bundle?) { + createTimeView.text = intent.getStringExtra("createTime") + descriptionView.text = intent.getStringExtra("description") + val data = intent.getIntExtra("data", -1) + if (data == -1) { + dataView.text = "0.0" + } else { + dataView.text = "$data.0" + } + val images = intent.getStringExtra("images") + + /** + * images: /storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_167066503.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_49917670.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_1069640.jpeg + * */ + val urls: ArrayList = ArrayList() + if (images == null) { + urls.add("") + } else { + if (images.isEmpty()) { + urls.add("") + } else { + val imageArray = images.split(",") + imageArray.forEach { + urls.add(it) + } + } + } + if (urls.size == 0) { + imageLayout.visibility = View.GONE + } else { + imageLayout.visibility = View.VISIBLE + //绑定图片 + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(imageUrls = urls) + imageAdapter.isDeleteVisible(false) + imageGridView.adapter = imageAdapter + imageGridView.setOnItemClickListener { _, _, position, _ -> + if (urls[position].isEmpty()) { + "图片加载失败,无法查看大图".show(this@SingleModeEventDetailActivity) + } else { + OtherUtils.showBigImage(this@SingleModeEventDetailActivity, position, urls) + } + } + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventListActivity.kt new file mode 100644 index 0000000..be7d506 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventListActivity.kt @@ -0,0 +1,64 @@ +package com.casic.birmm.inspect.view + +import android.content.Intent +import android.os.Bundle +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.extensions.filterString +import com.casic.birmm.inspect.extensions.show +import com.casic.birmm.inspect.utils.DataBaseManager +import com.casic.birmm.inspect.utils.PageNavigationManager +import com.casic.birmm.inspect.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import kotlinx.android.synthetic.main.activity_event_list.* +import kotlinx.android.synthetic.main.include_base_title.* + +class SingleModeEventListActivity : BaseSingleModeActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_list + + override fun setupTopBarLayout() { + PageNavigationManager.addActivity(this) + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "事件清单" + } + + override fun initData(savedInstanceState: Bundle?) { + val id = intent.getStringExtra("id")!! + val dataRows = DataBaseManager.instance.queryTaskByInspection(id) + if (dataRows.isEmpty()) { + "抱歉,无法查询到相关记录".show(this) + } else { + val eventAdapter = EventListAdapter(this, dataRows) + eventRecyclerView!!.layoutManager = LinearLayoutManager(this) + eventRecyclerView.adapter = eventAdapter + eventAdapter.setOnItemClickListener(object : + EventListAdapter.OnItemClickListener { + override fun onClick(position: Int) { + val intent = + Intent( + this@SingleModeEventListActivity, + SingleModeEventDetailActivity::class.java + ) + val listBean = dataRows[position] + intent.putExtra("createTime", listBean.createTime) + intent.putExtra( + "description", + listBean.description!!.filterString() + ) + intent.putExtra("data", listBean.data) + intent.putExtra("images", listBean.images) + startActivity(intent) + } + }) + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventQueryActivity.kt index 65455f7..0c257fa 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventQueryActivity.kt @@ -1,22 +1,19 @@ package com.casic.birmm.inspect.view import android.content.Intent +import android.os.Bundle +import android.os.CountDownTimer import android.os.Handler import android.os.Message import androidx.core.content.ContextCompat -import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.EventSearchListAdapter -import com.casic.birmm.inspect.base.BaseViewModelActivity +import com.casic.birmm.inspect.base.BaseSingleModeActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.model.EventListModel -import com.casic.birmm.inspect.utils.Constant -import com.casic.birmm.inspect.utils.PageNavigationManager -import com.casic.birmm.inspect.utils.StatusBarColorUtil -import com.casic.birmm.inspect.utils.TimeOrDateUtil -import com.casic.birmm.inspect.vm.EventQueryViewModel +import com.casic.birmm.inspect.utils.* import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type @@ -30,21 +27,20 @@ import kotlinx.android.synthetic.main.include_base_title.* import java.lang.ref.WeakReference -class SingleModeEventQueryActivity : BaseViewModelActivity() { +class SingleModeEventQueryActivity : BaseSingleModeActivity() { private var keywords = "" private var startTime = "" private var endTime = "" - private var pageIndex = 1 + + //本地数据库页码从0开始 + private var pageIndex = 0 private var isRefresh = false private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var adapter: EventSearchListAdapter - override fun createViewModelByClass(): Class? = - EventQueryViewModel::class.java - override fun initLayoutView(): Int = R.layout.activity_query_event override fun setupTopBarLayout() { @@ -54,14 +50,10 @@ titleView.text = "事件查询(单机模式)" } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - viewModel.queryEvent( - keywords = keywords, - startTime = startTime, - endTime = endTime, - pageIndex = pageIndex - ) + dataBeans = DataBaseManager.instance.queryAllTaskEvent(pageIndex) + weakReferenceHandler.sendEmptyMessage(20210820) } override fun initEvent() { @@ -102,65 +94,65 @@ searchView.setOnClickListener { keywords = inputTipsView.text.toString() //查询都从第一页开始查 - pageIndex = 1 - viewModel.queryEvent( - keywords = keywords, - startTime = startTime, - endTime = endTime, - pageIndex = pageIndex - ) + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryEventByCondition( + startTime, + endTime, + keywords, + pageIndex + ) + weakReferenceHandler.sendEmptyMessage(20210820) } refreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 - pageIndex = 1 - viewModel.queryEvent( - keywords = keywords, - startTime = startTime, - endTime = endTime, - pageIndex = pageIndex - ) + pageIndex = 0 + object : CountDownTimer(1500, 500) { + override fun onTick(millisUntilFinished: Long) { + + } + + override fun onFinish() { + dataBeans.clear() + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, + endTime, + keywords, + pageIndex + ) + refreshLayout.finishRefresh() + isRefresh = false + weakReferenceHandler.sendEmptyMessage(20210819) + } + }.start() } refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - viewModel.queryEvent( - keywords = keywords, - startTime = startTime, - endTime = endTime, - pageIndex = pageIndex - ) - } + object : CountDownTimer(1500, 500) { + override fun onTick(millisUntilFinished: Long) { - viewModel.resultModel.observe(this, Observer { - if (it.code == 200) { - val dataRows = it.data?.rows - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows!! - refreshLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows?.size == 0) { - "到底了,别拉了".show(this) - } - dataBeans.addAll(dataRows!!) - refreshLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows!! - } } - weakReferenceHandler.sendEmptyMessage(20210712) - } - }) - viewModel.loadState.observe(this, Observer { - "抱歉,无法查询到相关记录".show(this) - }) + + override fun onFinish() { + val dataRows = DataBaseManager.instance.queryEventByCondition( + startTime, + endTime, + keywords, + pageIndex + ) + if (dataRows.size == 0) { + "到底了,别拉了".show(this@SingleModeEventQueryActivity) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + weakReferenceHandler.sendEmptyMessage(20210820) + } + }.start() + } } private class WeakReferenceHandler(activity: SingleModeEventQueryActivity) : Handler() { @@ -168,7 +160,7 @@ override fun handleMessage(msg: Message) { super.handleMessage(msg) val resultActivity = reference.get() - if (msg.what == 20210712) { + if (msg.what == 20210820) { if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { resultActivity.adapter.notifyDataSetChanged() } else { //首次加载数据 @@ -184,7 +176,10 @@ resultActivity.adapter.setOnItemClickListener(object : EventSearchListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent(resultActivity, EventDetailActivity::class.java) + val intent = Intent( + resultActivity, + SingleModeEventDetailActivity::class.java + ) val rowsBean = resultActivity.dataBeans[position] intent.putExtra("createTime", rowsBean.createTime) intent.putExtra( diff --git a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeInspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeInspectRouteActivity.kt index ff846e1..9412e31 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeInspectRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeInspectRouteActivity.kt @@ -96,7 +96,7 @@ leftBackView.setOnClickListener { this.finish() } eventButton.setChangeAlphaWhenPress(true) eventButton.setOnClickListener { - val intent = Intent(this, EventListActivity::class.java) + val intent = Intent(this, SingleModeEventListActivity::class.java) intent.putExtra("id", id) startActivity(intent) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/TestActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/TestActivity.kt deleted file mode 100644 index abb6e23..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/view/TestActivity.kt +++ /dev/null @@ -1,54 +0,0 @@ -package com.casic.birmm.inspect.view - -import android.util.Log -import androidx.core.content.ContextCompat -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.ImageGridViewAdapter -import com.casic.birmm.inspect.base.BaseActivity -import com.casic.birmm.inspect.utils.PageNavigationManager -import com.casic.birmm.inspect.utils.StatusBarColorUtil -import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_test.* -import kotlinx.android.synthetic.main.include_base_title.* - -class TestActivity : BaseActivity() { - - companion object { - private const val Tag = "TestActivity" - } - - private val urls = arrayListOf( - "http://111.198.10.15:12204/static/2021-07/b2c3f2f2e5ba4686bfece696bf5f8510.jpeg", - "http://111.198.10.15:12204/static/2021-07/b2c3f2f2e5ba4686bfece696bf5f8510.jpeg", - "http://111.198.10.15:12204/static/2021-07/b2c3f2f2e5ba4686bfece696bf5f8510.jpeg", - "http://111.198.10.15:12204/static/2021-07/b2c3f2f2e5ba4686bfece696bf5f8510.jpeg" - ) - - override fun initLayoutView(): Int = R.layout.activity_test - - override fun setupTopBarLayout() { - PageNavigationManager.addActivity(this) - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() - titleView.text = "测试功能页面" - } - - override fun initData() { - val imageAdapter = ImageGridViewAdapter(this) - imageGridView.adapter = imageAdapter - imageAdapter.setImageList(imageUrls = urls) - imageGridView.setOnItemClickListener { _, _, position, _ -> - Log.d(Tag, "点击path: ${urls[position]}") - } - imageAdapter.setOnDeleteClickListener(object : - ImageGridViewAdapter.OnDeleteItemClickListener { - override fun onDeleteItemClick(position: Int) { - Log.d(Tag, "删除path: ${urls[position]}") - } - }) - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7f9b4a0..e58acea 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,7 +40,6 @@ - @@ -52,12 +51,14 @@ + + diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f80b012..fa0ebf6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -5,10 +5,7 @@ import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.greendao.InspectionLocalBeanDao import com.casic.birmm.inspect.greendao.TaskEventLocalBeanDao -import com.casic.birmm.inspect.model.InspectDetailModel -import com.casic.birmm.inspect.model.InspectListModel -import com.casic.birmm.inspect.model.NewInspectionModel -import com.casic.birmm.inspect.model.NewTaskEventModel +import com.casic.birmm.inspect.model.* class DataBaseManager private constructor() { @@ -71,8 +68,9 @@ * 查询所有巡检数据 */ fun queryAllInspection(offset: Int): MutableList { - return addQueryResult( + return addInspectionQueryResult( inspectionDao.queryBuilder() + .orderDesc(InspectionLocalBeanDao.Properties.StartTime) .offset(offset * Constant.PAGE_LIMIT) .limit(Constant.PAGE_LIMIT) .list() @@ -96,7 +94,7 @@ InspectionLocalBeanDao.Properties.Date.between(startDate, endDate), InspectionLocalBeanDao.Properties.Name.like(name) ) - return addQueryResult( + return addInspectionQueryResult( queryBuilder.where(condition) .orderDesc(InspectionLocalBeanDao.Properties.StartTime)//按时间顺序最新顺序排序 .offset(offset * Constant.PAGE_LIMIT) @@ -105,15 +103,16 @@ ) } else if (startDate == "" && endDate == "" && name == "") { //都为"",查询全部 - return addQueryResult( + return addInspectionQueryResult( inspectionDao.queryBuilder() + .orderDesc(InspectionLocalBeanDao.Properties.StartTime) .offset(offset * Constant.PAGE_LIMIT) .limit(Constant.PAGE_LIMIT) .list() ) } else { //其他只查询巡检名 - return addQueryResult( + return addInspectionQueryResult( inspectionDao.queryBuilder() .where(InspectionLocalBeanDao.Properties.Name.like(name)) .orderDesc(InspectionLocalBeanDao.Properties.StartTime)//按时间顺序最新顺序排序 @@ -124,7 +123,7 @@ } } - private fun addQueryResult(list: List?): MutableList { + private fun addInspectionQueryResult(list: List?): MutableList { val resultList = ArrayList() list?.forEach { val rowsBean = InspectListModel.DataBean.RowsBean() @@ -213,58 +212,113 @@ /** * 根据巡检Id查询事件数据 */ - fun queryTaskByInspection(inspectionId: String): MutableList? { - val resultList = ArrayList() + fun queryTaskByInspection(inspectionId: String): MutableList { + val resultList = ArrayList() taskEventDao.queryBuilder() .where(TaskEventLocalBeanDao.Properties.InspectionId.eq(inspectionId)) .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 .list()?.forEach { - resultList.add( - NewTaskEventModel( - taskId = it.taskId, - inspectionId = it.inspectionId, - name = it.name, - createTime = it.createTime, - type = it.type, - lng = it.lng, - lat = it.lat, - data = it.data, - images = it.images, - description = it.description, - user = it.user - ) - ) + val listBean = TaskRecordModel.DataBean.ListBean() + + listBean.id = it.taskId + listBean.inspectionId = it.inspectionId + listBean.name = it.name + listBean.createTime = it.createTime + listBean.type = it.type + listBean.lng = it.lng + listBean.lat = it.lat + listBean.data = it.data.toInt() + listBean.images = it.images + listBean.description = it.description + listBean.user = it.user + + resultList.add(listBean) } return resultList } /** - * 查询所有数据 + * 查询所有事件数据 */ - fun queryAllTask(): MutableList? { - val list = taskEventDao.queryBuilder().build().list() - val resultList = ArrayList() + fun queryAllTaskEvent(offset: Int): MutableList { + return addTaskTaskEventQueryResult( + taskEventDao.queryBuilder() + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime) + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } + + private fun addTaskTaskEventQueryResult(list: List?): MutableList { + val resultList = ArrayList() list?.forEach { - resultList.add( - NewTaskEventModel( - taskId = it.taskId, - inspectionId = it.inspectionId, - name = it.name, - createTime = it.createTime, - type = it.type, - lng = it.lng, - lat = it.lat, - data = it.data, - images = it.images, - description = it.description, - user = it.user - ) - ) + val rowsBean = EventListModel.DataBean.RowsBean() + + rowsBean.id = it.taskId + rowsBean.inspectionId = it.inspectionId + rowsBean.name = it.name + rowsBean.createTime = it.createTime + rowsBean.type = it.type + rowsBean.data = it.data.toInt() + rowsBean.description = it.description + rowsBean.lat = it.lat + rowsBean.lng = it.lng + rowsBean.images = it.images + rowsBean.user = it.user + + resultList.add(rowsBean) } return resultList } /** + * 条件查询事件数据 + */ + fun queryEventByCondition( + startDate: String, + endDate: String, + name: String, + offset: Int + ): MutableList { + //条件都不为"",精确查询 + if (startDate != "" && endDate != "" && name != "") { + val queryBuilder = taskEventDao.queryBuilder() + //查询条件 + val condition = queryBuilder.and( + TaskEventLocalBeanDao.Properties.CreateTime.between(startDate, endDate), + TaskEventLocalBeanDao.Properties.Name.like(name) + ) + return addTaskTaskEventQueryResult( + queryBuilder.where(condition) + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } else if (startDate == "" && endDate == "" && name == "") { + //都为"",查询全部 + return addTaskTaskEventQueryResult( + taskEventDao.queryBuilder() + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime) + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } else { + //其他只查询巡检名 + return addTaskTaskEventQueryResult( + taskEventDao.queryBuilder() + .where(TaskEventLocalBeanDao.Properties.Name.like(name)) + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } + } + + /** * 判断是否插入数据成功 */ fun isInsertSuccess(id: String, isInspection: Boolean): Boolean { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventDetailActivity.kt new file mode 100644 index 0000000..75230a2 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventDetailActivity.kt @@ -0,0 +1,79 @@ +package com.casic.birmm.inspect.view + +import android.annotation.SuppressLint +import android.os.Bundle +import android.view.View +import androidx.core.content.ContextCompat +import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.adapter.ImageGridViewAdapter +import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.extensions.show +import com.casic.birmm.inspect.utils.OtherUtils +import com.casic.birmm.inspect.utils.PageNavigationManager +import com.casic.birmm.inspect.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import kotlinx.android.synthetic.main.activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + + +class SingleModeEventDetailActivity : BaseSingleModeActivity() { + override fun initLayoutView(): Int = R.layout.activity_event_detail + + override fun setupTopBarLayout() { + PageNavigationManager.addActivity(this) + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "事件详情" + } + + @SuppressLint("SetTextI18n") + override fun initData(savedInstanceState: Bundle?) { + createTimeView.text = intent.getStringExtra("createTime") + descriptionView.text = intent.getStringExtra("description") + val data = intent.getIntExtra("data", -1) + if (data == -1) { + dataView.text = "0.0" + } else { + dataView.text = "$data.0" + } + val images = intent.getStringExtra("images") + + /** + * images: /storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_167066503.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_49917670.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_1069640.jpeg + * */ + val urls: ArrayList = ArrayList() + if (images == null) { + urls.add("") + } else { + if (images.isEmpty()) { + urls.add("") + } else { + val imageArray = images.split(",") + imageArray.forEach { + urls.add(it) + } + } + } + if (urls.size == 0) { + imageLayout.visibility = View.GONE + } else { + imageLayout.visibility = View.VISIBLE + //绑定图片 + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(imageUrls = urls) + imageAdapter.isDeleteVisible(false) + imageGridView.adapter = imageAdapter + imageGridView.setOnItemClickListener { _, _, position, _ -> + if (urls[position].isEmpty()) { + "图片加载失败,无法查看大图".show(this@SingleModeEventDetailActivity) + } else { + OtherUtils.showBigImage(this@SingleModeEventDetailActivity, position, urls) + } + } + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventListActivity.kt new file mode 100644 index 0000000..be7d506 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventListActivity.kt @@ -0,0 +1,64 @@ +package com.casic.birmm.inspect.view + +import android.content.Intent +import android.os.Bundle +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.extensions.filterString +import com.casic.birmm.inspect.extensions.show +import com.casic.birmm.inspect.utils.DataBaseManager +import com.casic.birmm.inspect.utils.PageNavigationManager +import com.casic.birmm.inspect.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import kotlinx.android.synthetic.main.activity_event_list.* +import kotlinx.android.synthetic.main.include_base_title.* + +class SingleModeEventListActivity : BaseSingleModeActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_list + + override fun setupTopBarLayout() { + PageNavigationManager.addActivity(this) + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "事件清单" + } + + override fun initData(savedInstanceState: Bundle?) { + val id = intent.getStringExtra("id")!! + val dataRows = DataBaseManager.instance.queryTaskByInspection(id) + if (dataRows.isEmpty()) { + "抱歉,无法查询到相关记录".show(this) + } else { + val eventAdapter = EventListAdapter(this, dataRows) + eventRecyclerView!!.layoutManager = LinearLayoutManager(this) + eventRecyclerView.adapter = eventAdapter + eventAdapter.setOnItemClickListener(object : + EventListAdapter.OnItemClickListener { + override fun onClick(position: Int) { + val intent = + Intent( + this@SingleModeEventListActivity, + SingleModeEventDetailActivity::class.java + ) + val listBean = dataRows[position] + intent.putExtra("createTime", listBean.createTime) + intent.putExtra( + "description", + listBean.description!!.filterString() + ) + intent.putExtra("data", listBean.data) + intent.putExtra("images", listBean.images) + startActivity(intent) + } + }) + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventQueryActivity.kt index 65455f7..0c257fa 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventQueryActivity.kt @@ -1,22 +1,19 @@ package com.casic.birmm.inspect.view import android.content.Intent +import android.os.Bundle +import android.os.CountDownTimer import android.os.Handler import android.os.Message import androidx.core.content.ContextCompat -import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.EventSearchListAdapter -import com.casic.birmm.inspect.base.BaseViewModelActivity +import com.casic.birmm.inspect.base.BaseSingleModeActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.model.EventListModel -import com.casic.birmm.inspect.utils.Constant -import com.casic.birmm.inspect.utils.PageNavigationManager -import com.casic.birmm.inspect.utils.StatusBarColorUtil -import com.casic.birmm.inspect.utils.TimeOrDateUtil -import com.casic.birmm.inspect.vm.EventQueryViewModel +import com.casic.birmm.inspect.utils.* import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type @@ -30,21 +27,20 @@ import kotlinx.android.synthetic.main.include_base_title.* import java.lang.ref.WeakReference -class SingleModeEventQueryActivity : BaseViewModelActivity() { +class SingleModeEventQueryActivity : BaseSingleModeActivity() { private var keywords = "" private var startTime = "" private var endTime = "" - private var pageIndex = 1 + + //本地数据库页码从0开始 + private var pageIndex = 0 private var isRefresh = false private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var adapter: EventSearchListAdapter - override fun createViewModelByClass(): Class? = - EventQueryViewModel::class.java - override fun initLayoutView(): Int = R.layout.activity_query_event override fun setupTopBarLayout() { @@ -54,14 +50,10 @@ titleView.text = "事件查询(单机模式)" } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - viewModel.queryEvent( - keywords = keywords, - startTime = startTime, - endTime = endTime, - pageIndex = pageIndex - ) + dataBeans = DataBaseManager.instance.queryAllTaskEvent(pageIndex) + weakReferenceHandler.sendEmptyMessage(20210820) } override fun initEvent() { @@ -102,65 +94,65 @@ searchView.setOnClickListener { keywords = inputTipsView.text.toString() //查询都从第一页开始查 - pageIndex = 1 - viewModel.queryEvent( - keywords = keywords, - startTime = startTime, - endTime = endTime, - pageIndex = pageIndex - ) + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryEventByCondition( + startTime, + endTime, + keywords, + pageIndex + ) + weakReferenceHandler.sendEmptyMessage(20210820) } refreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 - pageIndex = 1 - viewModel.queryEvent( - keywords = keywords, - startTime = startTime, - endTime = endTime, - pageIndex = pageIndex - ) + pageIndex = 0 + object : CountDownTimer(1500, 500) { + override fun onTick(millisUntilFinished: Long) { + + } + + override fun onFinish() { + dataBeans.clear() + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, + endTime, + keywords, + pageIndex + ) + refreshLayout.finishRefresh() + isRefresh = false + weakReferenceHandler.sendEmptyMessage(20210819) + } + }.start() } refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - viewModel.queryEvent( - keywords = keywords, - startTime = startTime, - endTime = endTime, - pageIndex = pageIndex - ) - } + object : CountDownTimer(1500, 500) { + override fun onTick(millisUntilFinished: Long) { - viewModel.resultModel.observe(this, Observer { - if (it.code == 200) { - val dataRows = it.data?.rows - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows!! - refreshLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows?.size == 0) { - "到底了,别拉了".show(this) - } - dataBeans.addAll(dataRows!!) - refreshLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows!! - } } - weakReferenceHandler.sendEmptyMessage(20210712) - } - }) - viewModel.loadState.observe(this, Observer { - "抱歉,无法查询到相关记录".show(this) - }) + + override fun onFinish() { + val dataRows = DataBaseManager.instance.queryEventByCondition( + startTime, + endTime, + keywords, + pageIndex + ) + if (dataRows.size == 0) { + "到底了,别拉了".show(this@SingleModeEventQueryActivity) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + weakReferenceHandler.sendEmptyMessage(20210820) + } + }.start() + } } private class WeakReferenceHandler(activity: SingleModeEventQueryActivity) : Handler() { @@ -168,7 +160,7 @@ override fun handleMessage(msg: Message) { super.handleMessage(msg) val resultActivity = reference.get() - if (msg.what == 20210712) { + if (msg.what == 20210820) { if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { resultActivity.adapter.notifyDataSetChanged() } else { //首次加载数据 @@ -184,7 +176,10 @@ resultActivity.adapter.setOnItemClickListener(object : EventSearchListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent(resultActivity, EventDetailActivity::class.java) + val intent = Intent( + resultActivity, + SingleModeEventDetailActivity::class.java + ) val rowsBean = resultActivity.dataBeans[position] intent.putExtra("createTime", rowsBean.createTime) intent.putExtra( diff --git a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeInspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeInspectRouteActivity.kt index ff846e1..9412e31 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeInspectRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeInspectRouteActivity.kt @@ -96,7 +96,7 @@ leftBackView.setOnClickListener { this.finish() } eventButton.setChangeAlphaWhenPress(true) eventButton.setOnClickListener { - val intent = Intent(this, EventListActivity::class.java) + val intent = Intent(this, SingleModeEventListActivity::class.java) intent.putExtra("id", id) startActivity(intent) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/TestActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/TestActivity.kt deleted file mode 100644 index abb6e23..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/view/TestActivity.kt +++ /dev/null @@ -1,54 +0,0 @@ -package com.casic.birmm.inspect.view - -import android.util.Log -import androidx.core.content.ContextCompat -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.ImageGridViewAdapter -import com.casic.birmm.inspect.base.BaseActivity -import com.casic.birmm.inspect.utils.PageNavigationManager -import com.casic.birmm.inspect.utils.StatusBarColorUtil -import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_test.* -import kotlinx.android.synthetic.main.include_base_title.* - -class TestActivity : BaseActivity() { - - companion object { - private const val Tag = "TestActivity" - } - - private val urls = arrayListOf( - "http://111.198.10.15:12204/static/2021-07/b2c3f2f2e5ba4686bfece696bf5f8510.jpeg", - "http://111.198.10.15:12204/static/2021-07/b2c3f2f2e5ba4686bfece696bf5f8510.jpeg", - "http://111.198.10.15:12204/static/2021-07/b2c3f2f2e5ba4686bfece696bf5f8510.jpeg", - "http://111.198.10.15:12204/static/2021-07/b2c3f2f2e5ba4686bfece696bf5f8510.jpeg" - ) - - override fun initLayoutView(): Int = R.layout.activity_test - - override fun setupTopBarLayout() { - PageNavigationManager.addActivity(this) - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() - titleView.text = "测试功能页面" - } - - override fun initData() { - val imageAdapter = ImageGridViewAdapter(this) - imageGridView.adapter = imageAdapter - imageAdapter.setImageList(imageUrls = urls) - imageGridView.setOnItemClickListener { _, _, position, _ -> - Log.d(Tag, "点击path: ${urls[position]}") - } - imageAdapter.setOnDeleteClickListener(object : - ImageGridViewAdapter.OnDeleteItemClickListener { - override fun onDeleteItemClick(position: Int) { - Log.d(Tag, "删除path: ${urls[position]}") - } - }) - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_query_event.xml b/app/src/main/res/layout/activity_query_event.xml index 109737c..b2051b4 100644 --- a/app/src/main/res/layout/activity_query_event.xml +++ b/app/src/main/res/layout/activity_query_event.xml @@ -89,7 +89,7 @@ @@ -105,6 +105,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@null" + android:hint="请输入想要查询的事件标签" android:paddingHorizontal="5dp" android:paddingVertical="7dp" android:textColor="@color/black" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7f9b4a0..e58acea 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,7 +40,6 @@ - @@ -52,12 +51,14 @@ + + diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index f80b012..fa0ebf6 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -5,10 +5,7 @@ import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.greendao.InspectionLocalBeanDao import com.casic.birmm.inspect.greendao.TaskEventLocalBeanDao -import com.casic.birmm.inspect.model.InspectDetailModel -import com.casic.birmm.inspect.model.InspectListModel -import com.casic.birmm.inspect.model.NewInspectionModel -import com.casic.birmm.inspect.model.NewTaskEventModel +import com.casic.birmm.inspect.model.* class DataBaseManager private constructor() { @@ -71,8 +68,9 @@ * 查询所有巡检数据 */ fun queryAllInspection(offset: Int): MutableList { - return addQueryResult( + return addInspectionQueryResult( inspectionDao.queryBuilder() + .orderDesc(InspectionLocalBeanDao.Properties.StartTime) .offset(offset * Constant.PAGE_LIMIT) .limit(Constant.PAGE_LIMIT) .list() @@ -96,7 +94,7 @@ InspectionLocalBeanDao.Properties.Date.between(startDate, endDate), InspectionLocalBeanDao.Properties.Name.like(name) ) - return addQueryResult( + return addInspectionQueryResult( queryBuilder.where(condition) .orderDesc(InspectionLocalBeanDao.Properties.StartTime)//按时间顺序最新顺序排序 .offset(offset * Constant.PAGE_LIMIT) @@ -105,15 +103,16 @@ ) } else if (startDate == "" && endDate == "" && name == "") { //都为"",查询全部 - return addQueryResult( + return addInspectionQueryResult( inspectionDao.queryBuilder() + .orderDesc(InspectionLocalBeanDao.Properties.StartTime) .offset(offset * Constant.PAGE_LIMIT) .limit(Constant.PAGE_LIMIT) .list() ) } else { //其他只查询巡检名 - return addQueryResult( + return addInspectionQueryResult( inspectionDao.queryBuilder() .where(InspectionLocalBeanDao.Properties.Name.like(name)) .orderDesc(InspectionLocalBeanDao.Properties.StartTime)//按时间顺序最新顺序排序 @@ -124,7 +123,7 @@ } } - private fun addQueryResult(list: List?): MutableList { + private fun addInspectionQueryResult(list: List?): MutableList { val resultList = ArrayList() list?.forEach { val rowsBean = InspectListModel.DataBean.RowsBean() @@ -213,58 +212,113 @@ /** * 根据巡检Id查询事件数据 */ - fun queryTaskByInspection(inspectionId: String): MutableList? { - val resultList = ArrayList() + fun queryTaskByInspection(inspectionId: String): MutableList { + val resultList = ArrayList() taskEventDao.queryBuilder() .where(TaskEventLocalBeanDao.Properties.InspectionId.eq(inspectionId)) .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 .list()?.forEach { - resultList.add( - NewTaskEventModel( - taskId = it.taskId, - inspectionId = it.inspectionId, - name = it.name, - createTime = it.createTime, - type = it.type, - lng = it.lng, - lat = it.lat, - data = it.data, - images = it.images, - description = it.description, - user = it.user - ) - ) + val listBean = TaskRecordModel.DataBean.ListBean() + + listBean.id = it.taskId + listBean.inspectionId = it.inspectionId + listBean.name = it.name + listBean.createTime = it.createTime + listBean.type = it.type + listBean.lng = it.lng + listBean.lat = it.lat + listBean.data = it.data.toInt() + listBean.images = it.images + listBean.description = it.description + listBean.user = it.user + + resultList.add(listBean) } return resultList } /** - * 查询所有数据 + * 查询所有事件数据 */ - fun queryAllTask(): MutableList? { - val list = taskEventDao.queryBuilder().build().list() - val resultList = ArrayList() + fun queryAllTaskEvent(offset: Int): MutableList { + return addTaskTaskEventQueryResult( + taskEventDao.queryBuilder() + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime) + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } + + private fun addTaskTaskEventQueryResult(list: List?): MutableList { + val resultList = ArrayList() list?.forEach { - resultList.add( - NewTaskEventModel( - taskId = it.taskId, - inspectionId = it.inspectionId, - name = it.name, - createTime = it.createTime, - type = it.type, - lng = it.lng, - lat = it.lat, - data = it.data, - images = it.images, - description = it.description, - user = it.user - ) - ) + val rowsBean = EventListModel.DataBean.RowsBean() + + rowsBean.id = it.taskId + rowsBean.inspectionId = it.inspectionId + rowsBean.name = it.name + rowsBean.createTime = it.createTime + rowsBean.type = it.type + rowsBean.data = it.data.toInt() + rowsBean.description = it.description + rowsBean.lat = it.lat + rowsBean.lng = it.lng + rowsBean.images = it.images + rowsBean.user = it.user + + resultList.add(rowsBean) } return resultList } /** + * 条件查询事件数据 + */ + fun queryEventByCondition( + startDate: String, + endDate: String, + name: String, + offset: Int + ): MutableList { + //条件都不为"",精确查询 + if (startDate != "" && endDate != "" && name != "") { + val queryBuilder = taskEventDao.queryBuilder() + //查询条件 + val condition = queryBuilder.and( + TaskEventLocalBeanDao.Properties.CreateTime.between(startDate, endDate), + TaskEventLocalBeanDao.Properties.Name.like(name) + ) + return addTaskTaskEventQueryResult( + queryBuilder.where(condition) + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } else if (startDate == "" && endDate == "" && name == "") { + //都为"",查询全部 + return addTaskTaskEventQueryResult( + taskEventDao.queryBuilder() + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime) + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } else { + //其他只查询巡检名 + return addTaskTaskEventQueryResult( + taskEventDao.queryBuilder() + .where(TaskEventLocalBeanDao.Properties.Name.like(name)) + .orderDesc(TaskEventLocalBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + .offset(offset * Constant.PAGE_LIMIT) + .limit(Constant.PAGE_LIMIT) + .list() + ) + } + } + + /** * 判断是否插入数据成功 */ fun isInsertSuccess(id: String, isInspection: Boolean): Boolean { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventDetailActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventDetailActivity.kt new file mode 100644 index 0000000..75230a2 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventDetailActivity.kt @@ -0,0 +1,79 @@ +package com.casic.birmm.inspect.view + +import android.annotation.SuppressLint +import android.os.Bundle +import android.view.View +import androidx.core.content.ContextCompat +import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.adapter.ImageGridViewAdapter +import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.extensions.show +import com.casic.birmm.inspect.utils.OtherUtils +import com.casic.birmm.inspect.utils.PageNavigationManager +import com.casic.birmm.inspect.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import kotlinx.android.synthetic.main.activity_event_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + + +class SingleModeEventDetailActivity : BaseSingleModeActivity() { + override fun initLayoutView(): Int = R.layout.activity_event_detail + + override fun setupTopBarLayout() { + PageNavigationManager.addActivity(this) + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "事件详情" + } + + @SuppressLint("SetTextI18n") + override fun initData(savedInstanceState: Bundle?) { + createTimeView.text = intent.getStringExtra("createTime") + descriptionView.text = intent.getStringExtra("description") + val data = intent.getIntExtra("data", -1) + if (data == -1) { + dataView.text = "0.0" + } else { + dataView.text = "$data.0" + } + val images = intent.getStringExtra("images") + + /** + * images: /storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_167066503.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_49917670.jpeg,/storage/emulated/0/Android/data/com.casic.birmm.inspect/files/Pictures/IMG_CMP_1069640.jpeg + * */ + val urls: ArrayList = ArrayList() + if (images == null) { + urls.add("") + } else { + if (images.isEmpty()) { + urls.add("") + } else { + val imageArray = images.split(",") + imageArray.forEach { + urls.add(it) + } + } + } + if (urls.size == 0) { + imageLayout.visibility = View.GONE + } else { + imageLayout.visibility = View.VISIBLE + //绑定图片 + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(imageUrls = urls) + imageAdapter.isDeleteVisible(false) + imageGridView.adapter = imageAdapter + imageGridView.setOnItemClickListener { _, _, position, _ -> + if (urls[position].isEmpty()) { + "图片加载失败,无法查看大图".show(this@SingleModeEventDetailActivity) + } else { + OtherUtils.showBigImage(this@SingleModeEventDetailActivity, position, urls) + } + } + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventListActivity.kt new file mode 100644 index 0000000..be7d506 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventListActivity.kt @@ -0,0 +1,64 @@ +package com.casic.birmm.inspect.view + +import android.content.Intent +import android.os.Bundle +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.adapter.EventListAdapter +import com.casic.birmm.inspect.base.BaseSingleModeActivity +import com.casic.birmm.inspect.extensions.filterString +import com.casic.birmm.inspect.extensions.show +import com.casic.birmm.inspect.utils.DataBaseManager +import com.casic.birmm.inspect.utils.PageNavigationManager +import com.casic.birmm.inspect.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import kotlinx.android.synthetic.main.activity_event_list.* +import kotlinx.android.synthetic.main.include_base_title.* + +class SingleModeEventListActivity : BaseSingleModeActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_list + + override fun setupTopBarLayout() { + PageNavigationManager.addActivity(this) + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + titleView.text = "事件清单" + } + + override fun initData(savedInstanceState: Bundle?) { + val id = intent.getStringExtra("id")!! + val dataRows = DataBaseManager.instance.queryTaskByInspection(id) + if (dataRows.isEmpty()) { + "抱歉,无法查询到相关记录".show(this) + } else { + val eventAdapter = EventListAdapter(this, dataRows) + eventRecyclerView!!.layoutManager = LinearLayoutManager(this) + eventRecyclerView.adapter = eventAdapter + eventAdapter.setOnItemClickListener(object : + EventListAdapter.OnItemClickListener { + override fun onClick(position: Int) { + val intent = + Intent( + this@SingleModeEventListActivity, + SingleModeEventDetailActivity::class.java + ) + val listBean = dataRows[position] + intent.putExtra("createTime", listBean.createTime) + intent.putExtra( + "description", + listBean.description!!.filterString() + ) + intent.putExtra("data", listBean.data) + intent.putExtra("images", listBean.images) + startActivity(intent) + } + }) + } + } + + override fun initEvent() { + leftBackView.setOnClickListener { this.finish() } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventQueryActivity.kt index 65455f7..0c257fa 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeEventQueryActivity.kt @@ -1,22 +1,19 @@ package com.casic.birmm.inspect.view import android.content.Intent +import android.os.Bundle +import android.os.CountDownTimer import android.os.Handler import android.os.Message import androidx.core.content.ContextCompat -import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.EventSearchListAdapter -import com.casic.birmm.inspect.base.BaseViewModelActivity +import com.casic.birmm.inspect.base.BaseSingleModeActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show import com.casic.birmm.inspect.model.EventListModel -import com.casic.birmm.inspect.utils.Constant -import com.casic.birmm.inspect.utils.PageNavigationManager -import com.casic.birmm.inspect.utils.StatusBarColorUtil -import com.casic.birmm.inspect.utils.TimeOrDateUtil -import com.casic.birmm.inspect.vm.EventQueryViewModel +import com.casic.birmm.inspect.utils.* import com.gyf.immersionbar.ImmersionBar import com.jzxiang.pickerview.TimePickerDialog import com.jzxiang.pickerview.data.Type @@ -30,21 +27,20 @@ import kotlinx.android.synthetic.main.include_base_title.* import java.lang.ref.WeakReference -class SingleModeEventQueryActivity : BaseViewModelActivity() { +class SingleModeEventQueryActivity : BaseSingleModeActivity() { private var keywords = "" private var startTime = "" private var endTime = "" - private var pageIndex = 1 + + //本地数据库页码从0开始 + private var pageIndex = 0 private var isRefresh = false private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var adapter: EventSearchListAdapter - override fun createViewModelByClass(): Class? = - EventQueryViewModel::class.java - override fun initLayoutView(): Int = R.layout.activity_query_event override fun setupTopBarLayout() { @@ -54,14 +50,10 @@ titleView.text = "事件查询(单机模式)" } - override fun initData() { + override fun initData(savedInstanceState: Bundle?) { weakReferenceHandler = WeakReferenceHandler(this) - viewModel.queryEvent( - keywords = keywords, - startTime = startTime, - endTime = endTime, - pageIndex = pageIndex - ) + dataBeans = DataBaseManager.instance.queryAllTaskEvent(pageIndex) + weakReferenceHandler.sendEmptyMessage(20210820) } override fun initEvent() { @@ -102,65 +94,65 @@ searchView.setOnClickListener { keywords = inputTipsView.text.toString() //查询都从第一页开始查 - pageIndex = 1 - viewModel.queryEvent( - keywords = keywords, - startTime = startTime, - endTime = endTime, - pageIndex = pageIndex - ) + pageIndex = 0 + dataBeans = + DataBaseManager.instance.queryEventByCondition( + startTime, + endTime, + keywords, + pageIndex + ) + weakReferenceHandler.sendEmptyMessage(20210820) } refreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 - pageIndex = 1 - viewModel.queryEvent( - keywords = keywords, - startTime = startTime, - endTime = endTime, - pageIndex = pageIndex - ) + pageIndex = 0 + object : CountDownTimer(1500, 500) { + override fun onTick(millisUntilFinished: Long) { + + } + + override fun onFinish() { + dataBeans.clear() + dataBeans = DataBaseManager.instance.queryEventByCondition( + startTime, + endTime, + keywords, + pageIndex + ) + refreshLayout.finishRefresh() + isRefresh = false + weakReferenceHandler.sendEmptyMessage(20210819) + } + }.start() } refreshLayout.setOnLoadMoreListener { isLoadMore = true pageIndex++ - viewModel.queryEvent( - keywords = keywords, - startTime = startTime, - endTime = endTime, - pageIndex = pageIndex - ) - } + object : CountDownTimer(1500, 500) { + override fun onTick(millisUntilFinished: Long) { - viewModel.resultModel.observe(this, Observer { - if (it.code == 200) { - val dataRows = it.data?.rows - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows!! - refreshLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows?.size == 0) { - "到底了,别拉了".show(this) - } - dataBeans.addAll(dataRows!!) - refreshLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows!! - } } - weakReferenceHandler.sendEmptyMessage(20210712) - } - }) - viewModel.loadState.observe(this, Observer { - "抱歉,无法查询到相关记录".show(this) - }) + + override fun onFinish() { + val dataRows = DataBaseManager.instance.queryEventByCondition( + startTime, + endTime, + keywords, + pageIndex + ) + if (dataRows.size == 0) { + "到底了,别拉了".show(this@SingleModeEventQueryActivity) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + weakReferenceHandler.sendEmptyMessage(20210820) + } + }.start() + } } private class WeakReferenceHandler(activity: SingleModeEventQueryActivity) : Handler() { @@ -168,7 +160,7 @@ override fun handleMessage(msg: Message) { super.handleMessage(msg) val resultActivity = reference.get() - if (msg.what == 20210712) { + if (msg.what == 20210820) { if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { resultActivity.adapter.notifyDataSetChanged() } else { //首次加载数据 @@ -184,7 +176,10 @@ resultActivity.adapter.setOnItemClickListener(object : EventSearchListAdapter.OnItemClickListener { override fun onClick(position: Int) { - val intent = Intent(resultActivity, EventDetailActivity::class.java) + val intent = Intent( + resultActivity, + SingleModeEventDetailActivity::class.java + ) val rowsBean = resultActivity.dataBeans[position] intent.putExtra("createTime", rowsBean.createTime) intent.putExtra( diff --git a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeInspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeInspectRouteActivity.kt index ff846e1..9412e31 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/SingleModeInspectRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/SingleModeInspectRouteActivity.kt @@ -96,7 +96,7 @@ leftBackView.setOnClickListener { this.finish() } eventButton.setChangeAlphaWhenPress(true) eventButton.setOnClickListener { - val intent = Intent(this, EventListActivity::class.java) + val intent = Intent(this, SingleModeEventListActivity::class.java) intent.putExtra("id", id) startActivity(intent) } diff --git a/app/src/main/java/com/casic/birmm/inspect/view/TestActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/TestActivity.kt deleted file mode 100644 index abb6e23..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/view/TestActivity.kt +++ /dev/null @@ -1,54 +0,0 @@ -package com.casic.birmm.inspect.view - -import android.util.Log -import androidx.core.content.ContextCompat -import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.adapter.ImageGridViewAdapter -import com.casic.birmm.inspect.base.BaseActivity -import com.casic.birmm.inspect.utils.PageNavigationManager -import com.casic.birmm.inspect.utils.StatusBarColorUtil -import com.gyf.immersionbar.ImmersionBar -import kotlinx.android.synthetic.main.activity_test.* -import kotlinx.android.synthetic.main.include_base_title.* - -class TestActivity : BaseActivity() { - - companion object { - private const val Tag = "TestActivity" - } - - private val urls = arrayListOf( - "http://111.198.10.15:12204/static/2021-07/b2c3f2f2e5ba4686bfece696bf5f8510.jpeg", - "http://111.198.10.15:12204/static/2021-07/b2c3f2f2e5ba4686bfece696bf5f8510.jpeg", - "http://111.198.10.15:12204/static/2021-07/b2c3f2f2e5ba4686bfece696bf5f8510.jpeg", - "http://111.198.10.15:12204/static/2021-07/b2c3f2f2e5ba4686bfece696bf5f8510.jpeg" - ) - - override fun initLayoutView(): Int = R.layout.activity_test - - override fun setupTopBarLayout() { - PageNavigationManager.addActivity(this) - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)) - ImmersionBar.with(this).statusBarDarkFont(false).init() - titleView.text = "测试功能页面" - } - - override fun initData() { - val imageAdapter = ImageGridViewAdapter(this) - imageGridView.adapter = imageAdapter - imageAdapter.setImageList(imageUrls = urls) - imageGridView.setOnItemClickListener { _, _, position, _ -> - Log.d(Tag, "点击path: ${urls[position]}") - } - imageAdapter.setOnDeleteClickListener(object : - ImageGridViewAdapter.OnDeleteItemClickListener { - override fun onDeleteItemClick(position: Int) { - Log.d(Tag, "删除path: ${urls[position]}") - } - }) - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_query_event.xml b/app/src/main/res/layout/activity_query_event.xml index 109737c..b2051b4 100644 --- a/app/src/main/res/layout/activity_query_event.xml +++ b/app/src/main/res/layout/activity_query_event.xml @@ -89,7 +89,7 @@ @@ -105,6 +105,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@null" + android:hint="请输入想要查询的事件标签" android:paddingHorizontal="5dp" android:paddingVertical="7dp" android:textColor="@color/black" diff --git a/app/src/main/res/layout/activity_test.xml b/app/src/main/res/layout/activity_test.xml deleted file mode 100644 index 066d6dd..0000000 --- a/app/src/main/res/layout/activity_test.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - \ No newline at end of file