diff --git a/app/src/main/java/com/casic/electric/detector/utils/DataBaseManager.kt b/app/src/main/java/com/casic/electric/detector/utils/DataBaseManager.kt index 0b9d4de..10bfdfb 100644 --- a/app/src/main/java/com/casic/electric/detector/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/electric/detector/utils/DataBaseManager.kt @@ -3,7 +3,9 @@ import com.casic.electric.detector.base.BaseApplication import com.casic.electric.detector.bean.LabelBean import com.casic.electric.detector.bean.SmallLabelBean +import com.casic.electric.detector.greendao.LabelBeanDao import com.casic.electric.detector.greendao.SmallLabelBeanDao +import org.greenrobot.greendao.Property class DataBaseManager private constructor() { companion object { @@ -30,6 +32,41 @@ return labelBeanDao.loadAll() } + fun loadLabelByCondition(selectedItem: String, value: String?): MutableList { + when (selectedItem) { + LocaleConstant.CONDITION_ARRAY[1] -> { + return queryByProperty(LabelBeanDao.Properties.MarkerNumber, value) + } + LocaleConstant.CONDITION_ARRAY[2] -> { + return queryByProperty(LabelBeanDao.Properties.ObjectName, value) + } + LocaleConstant.CONDITION_ARRAY[3] -> { + return queryByProperty(LabelBeanDao.Properties.Area, value) + } + LocaleConstant.CONDITION_ARRAY[4] -> { + return queryByProperty(LabelBeanDao.Properties.Road, value) + } + LocaleConstant.CONDITION_ARRAY[5] -> { + return queryByProperty(LabelBeanDao.Properties.InspectionUnit, value) + } + LocaleConstant.CONDITION_ARRAY[6] -> { + return queryByProperty(LabelBeanDao.Properties.Owner, value) + } + LocaleConstant.CONDITION_ARRAY[8] -> { + return queryByProperty(LabelBeanDao.Properties.MarkerId, value) + } + } + return ArrayList() + } + + private fun queryByProperty(property: Property, value: String?): MutableList { + return if (value == null) { + labelBeanDao.queryBuilder().where(property.isNotNull).list() + } else { + labelBeanDao.queryBuilder().where(property.eq(value)).list() + } + } + /******************************* Lable *** End **********************************************/ /******************************* Small Lable *** Start **************************************/ diff --git a/app/src/main/java/com/casic/electric/detector/utils/DataBaseManager.kt b/app/src/main/java/com/casic/electric/detector/utils/DataBaseManager.kt index 0b9d4de..10bfdfb 100644 --- a/app/src/main/java/com/casic/electric/detector/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/electric/detector/utils/DataBaseManager.kt @@ -3,7 +3,9 @@ import com.casic.electric.detector.base.BaseApplication import com.casic.electric.detector.bean.LabelBean import com.casic.electric.detector.bean.SmallLabelBean +import com.casic.electric.detector.greendao.LabelBeanDao import com.casic.electric.detector.greendao.SmallLabelBeanDao +import org.greenrobot.greendao.Property class DataBaseManager private constructor() { companion object { @@ -30,6 +32,41 @@ return labelBeanDao.loadAll() } + fun loadLabelByCondition(selectedItem: String, value: String?): MutableList { + when (selectedItem) { + LocaleConstant.CONDITION_ARRAY[1] -> { + return queryByProperty(LabelBeanDao.Properties.MarkerNumber, value) + } + LocaleConstant.CONDITION_ARRAY[2] -> { + return queryByProperty(LabelBeanDao.Properties.ObjectName, value) + } + LocaleConstant.CONDITION_ARRAY[3] -> { + return queryByProperty(LabelBeanDao.Properties.Area, value) + } + LocaleConstant.CONDITION_ARRAY[4] -> { + return queryByProperty(LabelBeanDao.Properties.Road, value) + } + LocaleConstant.CONDITION_ARRAY[5] -> { + return queryByProperty(LabelBeanDao.Properties.InspectionUnit, value) + } + LocaleConstant.CONDITION_ARRAY[6] -> { + return queryByProperty(LabelBeanDao.Properties.Owner, value) + } + LocaleConstant.CONDITION_ARRAY[8] -> { + return queryByProperty(LabelBeanDao.Properties.MarkerId, value) + } + } + return ArrayList() + } + + private fun queryByProperty(property: Property, value: String?): MutableList { + return if (value == null) { + labelBeanDao.queryBuilder().where(property.isNotNull).list() + } else { + labelBeanDao.queryBuilder().where(property.eq(value)).list() + } + } + /******************************* Lable *** End **********************************************/ /******************************* Small Lable *** Start **************************************/ diff --git a/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt b/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt index 38e1fcd..d649221 100644 --- a/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt @@ -29,6 +29,8 @@ const val APP_AUTHORITY = "com.casic.electric.detector.fileprovider" val POPUP_TITLES = arrayOf("更新数据", "下载工单", "关于软件", "事件上报", "标识器补全") + var CONDITION_ARRAY = arrayOf("种类", "编号", "名称", "所属区域", "所属道路", "运检单位", "责任人", "建设时间", "标识器ID") + var CONTENT_ARRAY = arrayOf("电缆井", "电缆通道", "配电房", "开关站", "台区", "杆塔") var POINT_TYPE_ARRAY = arrayOf("管线", "管线附属物", "管线特征管点", "交叉穿越点") var SPINNER_ARRAY = arrayOf("标识器ID", "所属区域", "所属线路", "所属道路", "权属单位", "安装部门", "安装时间", "备注") var PIPE_MATERIAL_ARRAY = arrayOf("铸铁", "塑料") diff --git a/app/src/main/java/com/casic/electric/detector/utils/DataBaseManager.kt b/app/src/main/java/com/casic/electric/detector/utils/DataBaseManager.kt index 0b9d4de..10bfdfb 100644 --- a/app/src/main/java/com/casic/electric/detector/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/electric/detector/utils/DataBaseManager.kt @@ -3,7 +3,9 @@ import com.casic.electric.detector.base.BaseApplication import com.casic.electric.detector.bean.LabelBean import com.casic.electric.detector.bean.SmallLabelBean +import com.casic.electric.detector.greendao.LabelBeanDao import com.casic.electric.detector.greendao.SmallLabelBeanDao +import org.greenrobot.greendao.Property class DataBaseManager private constructor() { companion object { @@ -30,6 +32,41 @@ return labelBeanDao.loadAll() } + fun loadLabelByCondition(selectedItem: String, value: String?): MutableList { + when (selectedItem) { + LocaleConstant.CONDITION_ARRAY[1] -> { + return queryByProperty(LabelBeanDao.Properties.MarkerNumber, value) + } + LocaleConstant.CONDITION_ARRAY[2] -> { + return queryByProperty(LabelBeanDao.Properties.ObjectName, value) + } + LocaleConstant.CONDITION_ARRAY[3] -> { + return queryByProperty(LabelBeanDao.Properties.Area, value) + } + LocaleConstant.CONDITION_ARRAY[4] -> { + return queryByProperty(LabelBeanDao.Properties.Road, value) + } + LocaleConstant.CONDITION_ARRAY[5] -> { + return queryByProperty(LabelBeanDao.Properties.InspectionUnit, value) + } + LocaleConstant.CONDITION_ARRAY[6] -> { + return queryByProperty(LabelBeanDao.Properties.Owner, value) + } + LocaleConstant.CONDITION_ARRAY[8] -> { + return queryByProperty(LabelBeanDao.Properties.MarkerId, value) + } + } + return ArrayList() + } + + private fun queryByProperty(property: Property, value: String?): MutableList { + return if (value == null) { + labelBeanDao.queryBuilder().where(property.isNotNull).list() + } else { + labelBeanDao.queryBuilder().where(property.eq(value)).list() + } + } + /******************************* Lable *** End **********************************************/ /******************************* Small Lable *** Start **************************************/ diff --git a/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt b/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt index 38e1fcd..d649221 100644 --- a/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt @@ -29,6 +29,8 @@ const val APP_AUTHORITY = "com.casic.electric.detector.fileprovider" val POPUP_TITLES = arrayOf("更新数据", "下载工单", "关于软件", "事件上报", "标识器补全") + var CONDITION_ARRAY = arrayOf("种类", "编号", "名称", "所属区域", "所属道路", "运检单位", "责任人", "建设时间", "标识器ID") + var CONTENT_ARRAY = arrayOf("电缆井", "电缆通道", "配电房", "开关站", "台区", "杆塔") var POINT_TYPE_ARRAY = arrayOf("管线", "管线附属物", "管线特征管点", "交叉穿越点") var SPINNER_ARRAY = arrayOf("标识器ID", "所属区域", "所属线路", "所属道路", "权属单位", "安装部门", "安装时间", "备注") var PIPE_MATERIAL_ARRAY = arrayOf("铸铁", "塑料") diff --git a/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt b/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt index 70892a8..55f2213 100644 --- a/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt +++ b/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt @@ -39,6 +39,7 @@ import com.casic.electric.detector.utils.* import com.casic.electric.detector.vm.TaskViewModel import com.casic.electric.detector.vm.VersionViewModel +import com.casic.electric.detector.widgets.QueryMarkerDialog import com.casic.electric.detector.widgets.SamplePopupWindow import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -231,6 +232,104 @@ } } }) + + //安装。上传,然后存入本地库 + installButton.setOnClickListener { +// navigatePageTo() + } + + //查看 + viewButton.setOnClickListener { + QueryMarkerDialog.Builder() + .setContext(context) + .setTitle("查看标识器") + .setConditionArray(LocaleConstant.CONDITION_ARRAY) + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + QueryMarkerDialog.OnDialogButtonClickListener { + override fun onConfirmClick(selectedCondition: String, contentValue: String) { + Log.d(kTag, "selectedCondition => $selectedCondition") + Log.d(kTag, "contentValue => $contentValue") + //查询数据库 +// CoroutineScope(Dispatchers.Main).launch { +// labelBeans = withContext(Dispatchers.IO) { +// DataBaseManager.get.loadLabelByCondition( +// selectedItem, value +// ) as ArrayList +// } +// showLabelsOnMap() +// } + } + + override fun onCancelClick() { + + } + }).build().show() + } + + //巡检 + inspectionButton.setOnClickListener { +// val task = DataBaseManager.get.queryDistinctTask() +// if (task.isNotEmpty()) { +// val arrayList = ArrayList() +// task.forEachIndexed { index, taskBean -> +// arrayList.add("任务${index + 1}:${taskBean.taskId},${taskBean.desc}") +// } +// +// BottomActionSheet.Builder() +// .setContext(this) +// .setItemTextColor(Color.BLUE) +// .setActionItemTitle(arrayList) +// .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { +// override fun onActionItemClick(position: Int) { +// val taskBean = task[position] +// SaveKeyValues.putValue(LocaleConstant.TASK_ID, taskBean.taskId) +// AlertControlDialog.Builder() +// .setContext(context) +// .setTitle("提示") +// .setMessage("请选择操作方式") +// .setPositiveButton("执行工单") +// .setNegativeButton("提交工单") +// .setOnDialogButtonClickListener(object : +// AlertControlDialog.OnDialogButtonClickListener { +// override fun onConfirmClick() { +// detectRedrawGraphic(taskBean.taskId) +// aMap.moveCamera( +// CameraUpdateFactory.newLatLngZoom( +// LatLng( +// taskBean.lat.toDouble(), taskBean.lng.toDouble() +// ), 15f +// ) +// ) +// uploadTask(taskBean.taskId, "1") +// } +// +// override fun onCancelClick() { +// uploadTask(taskBean.taskId, "2") +// } +// }).build().show() +// } +// }).build().show() +// } else { +// AlertMessageDialog.Builder() +// .setContext(this) +// .setTitle("温馨提示") +// .setMessage("现有任务已完成,请点击右上角菜单按钮下载新工单!") +// .setPositiveButton("知道了") +// .setOnDialogButtonClickListener(object : +// AlertMessageDialog.OnDialogButtonClickListener { +// override fun onConfirmClick() { +// +// } +// }).build().show() +// } + } + + //探测 + detectionButton.setOnClickListener { +// navigatePageTo() + } } private fun initMapConfig(savedInstanceState: Bundle?) { diff --git a/app/src/main/java/com/casic/electric/detector/utils/DataBaseManager.kt b/app/src/main/java/com/casic/electric/detector/utils/DataBaseManager.kt index 0b9d4de..10bfdfb 100644 --- a/app/src/main/java/com/casic/electric/detector/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/electric/detector/utils/DataBaseManager.kt @@ -3,7 +3,9 @@ import com.casic.electric.detector.base.BaseApplication import com.casic.electric.detector.bean.LabelBean import com.casic.electric.detector.bean.SmallLabelBean +import com.casic.electric.detector.greendao.LabelBeanDao import com.casic.electric.detector.greendao.SmallLabelBeanDao +import org.greenrobot.greendao.Property class DataBaseManager private constructor() { companion object { @@ -30,6 +32,41 @@ return labelBeanDao.loadAll() } + fun loadLabelByCondition(selectedItem: String, value: String?): MutableList { + when (selectedItem) { + LocaleConstant.CONDITION_ARRAY[1] -> { + return queryByProperty(LabelBeanDao.Properties.MarkerNumber, value) + } + LocaleConstant.CONDITION_ARRAY[2] -> { + return queryByProperty(LabelBeanDao.Properties.ObjectName, value) + } + LocaleConstant.CONDITION_ARRAY[3] -> { + return queryByProperty(LabelBeanDao.Properties.Area, value) + } + LocaleConstant.CONDITION_ARRAY[4] -> { + return queryByProperty(LabelBeanDao.Properties.Road, value) + } + LocaleConstant.CONDITION_ARRAY[5] -> { + return queryByProperty(LabelBeanDao.Properties.InspectionUnit, value) + } + LocaleConstant.CONDITION_ARRAY[6] -> { + return queryByProperty(LabelBeanDao.Properties.Owner, value) + } + LocaleConstant.CONDITION_ARRAY[8] -> { + return queryByProperty(LabelBeanDao.Properties.MarkerId, value) + } + } + return ArrayList() + } + + private fun queryByProperty(property: Property, value: String?): MutableList { + return if (value == null) { + labelBeanDao.queryBuilder().where(property.isNotNull).list() + } else { + labelBeanDao.queryBuilder().where(property.eq(value)).list() + } + } + /******************************* Lable *** End **********************************************/ /******************************* Small Lable *** Start **************************************/ diff --git a/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt b/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt index 38e1fcd..d649221 100644 --- a/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/electric/detector/utils/LocaleConstant.kt @@ -29,6 +29,8 @@ const val APP_AUTHORITY = "com.casic.electric.detector.fileprovider" val POPUP_TITLES = arrayOf("更新数据", "下载工单", "关于软件", "事件上报", "标识器补全") + var CONDITION_ARRAY = arrayOf("种类", "编号", "名称", "所属区域", "所属道路", "运检单位", "责任人", "建设时间", "标识器ID") + var CONTENT_ARRAY = arrayOf("电缆井", "电缆通道", "配电房", "开关站", "台区", "杆塔") var POINT_TYPE_ARRAY = arrayOf("管线", "管线附属物", "管线特征管点", "交叉穿越点") var SPINNER_ARRAY = arrayOf("标识器ID", "所属区域", "所属线路", "所属道路", "权属单位", "安装部门", "安装时间", "备注") var PIPE_MATERIAL_ARRAY = arrayOf("铸铁", "塑料") diff --git a/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt b/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt index 70892a8..55f2213 100644 --- a/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt +++ b/app/src/main/java/com/casic/electric/detector/view/MainActivity.kt @@ -39,6 +39,7 @@ import com.casic.electric.detector.utils.* import com.casic.electric.detector.vm.TaskViewModel import com.casic.electric.detector.vm.VersionViewModel +import com.casic.electric.detector.widgets.QueryMarkerDialog import com.casic.electric.detector.widgets.SamplePopupWindow import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -231,6 +232,104 @@ } } }) + + //安装。上传,然后存入本地库 + installButton.setOnClickListener { +// navigatePageTo() + } + + //查看 + viewButton.setOnClickListener { + QueryMarkerDialog.Builder() + .setContext(context) + .setTitle("查看标识器") + .setConditionArray(LocaleConstant.CONDITION_ARRAY) + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + QueryMarkerDialog.OnDialogButtonClickListener { + override fun onConfirmClick(selectedCondition: String, contentValue: String) { + Log.d(kTag, "selectedCondition => $selectedCondition") + Log.d(kTag, "contentValue => $contentValue") + //查询数据库 +// CoroutineScope(Dispatchers.Main).launch { +// labelBeans = withContext(Dispatchers.IO) { +// DataBaseManager.get.loadLabelByCondition( +// selectedItem, value +// ) as ArrayList +// } +// showLabelsOnMap() +// } + } + + override fun onCancelClick() { + + } + }).build().show() + } + + //巡检 + inspectionButton.setOnClickListener { +// val task = DataBaseManager.get.queryDistinctTask() +// if (task.isNotEmpty()) { +// val arrayList = ArrayList() +// task.forEachIndexed { index, taskBean -> +// arrayList.add("任务${index + 1}:${taskBean.taskId},${taskBean.desc}") +// } +// +// BottomActionSheet.Builder() +// .setContext(this) +// .setItemTextColor(Color.BLUE) +// .setActionItemTitle(arrayList) +// .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { +// override fun onActionItemClick(position: Int) { +// val taskBean = task[position] +// SaveKeyValues.putValue(LocaleConstant.TASK_ID, taskBean.taskId) +// AlertControlDialog.Builder() +// .setContext(context) +// .setTitle("提示") +// .setMessage("请选择操作方式") +// .setPositiveButton("执行工单") +// .setNegativeButton("提交工单") +// .setOnDialogButtonClickListener(object : +// AlertControlDialog.OnDialogButtonClickListener { +// override fun onConfirmClick() { +// detectRedrawGraphic(taskBean.taskId) +// aMap.moveCamera( +// CameraUpdateFactory.newLatLngZoom( +// LatLng( +// taskBean.lat.toDouble(), taskBean.lng.toDouble() +// ), 15f +// ) +// ) +// uploadTask(taskBean.taskId, "1") +// } +// +// override fun onCancelClick() { +// uploadTask(taskBean.taskId, "2") +// } +// }).build().show() +// } +// }).build().show() +// } else { +// AlertMessageDialog.Builder() +// .setContext(this) +// .setTitle("温馨提示") +// .setMessage("现有任务已完成,请点击右上角菜单按钮下载新工单!") +// .setPositiveButton("知道了") +// .setOnDialogButtonClickListener(object : +// AlertMessageDialog.OnDialogButtonClickListener { +// override fun onConfirmClick() { +// +// } +// }).build().show() +// } + } + + //探测 + detectionButton.setOnClickListener { +// navigatePageTo() + } } private fun initMapConfig(savedInstanceState: Bundle?) { diff --git a/app/src/main/java/com/casic/electric/detector/widgets/QueryMarkerDialog.kt b/app/src/main/java/com/casic/electric/detector/widgets/QueryMarkerDialog.kt new file mode 100644 index 0000000..3bc9558 --- /dev/null +++ b/app/src/main/java/com/casic/electric/detector/widgets/QueryMarkerDialog.kt @@ -0,0 +1,232 @@ +package com.casic.electric.detector.widgets + +import android.app.DatePickerDialog +import android.app.Dialog +import android.content.Context +import android.os.Bundle +import android.view.View +import android.widget.* +import androidx.appcompat.widget.AppCompatAutoCompleteTextView +import com.casic.electric.detector.R +import com.casic.electric.detector.extensions.appendZero +import com.casic.electric.detector.utils.DataBaseManager +import com.casic.electric.detector.utils.LocaleConstant +import com.pengxh.kt.lite.extensions.initDialogLayoutParams +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import java.util.* + +class QueryMarkerDialog private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedDialogStyle +) { + private val ctx = builder.context + private val title = builder.title + private val conditionArray = builder.conditionArray + private val positiveBtn = builder.positiveBtn + private val negativeBtn = builder.negativeBtn + private val listener = builder.listener + + class Builder { + lateinit var context: Context + lateinit var title: String + lateinit var conditionArray: Array + lateinit var positiveBtn: String + lateinit var negativeBtn: String + lateinit var listener: OnDialogButtonClickListener + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setTitle(title: String): Builder { + this.title = title + return this + } + + fun setConditionArray(conditionArray: Array): Builder { + this.conditionArray = conditionArray + return this + } + + fun setPositiveButton(name: String): Builder { + positiveBtn = name + return this + } + + fun setNegativeButton(name: String): Builder { + negativeBtn = name + return this + } + + fun setOnDialogButtonClickListener(listener: OnDialogButtonClickListener): Builder { + this.listener = listener + return this + } + + fun build(): QueryMarkerDialog { + return QueryMarkerDialog(this) + } + } + + private val calendar by lazy { Calendar.getInstance() } + private var contentValue = "" + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.initDialogLayoutParams(0.8f) + setContentView(R.layout.dialog_query_marker) + setCanceledOnTouchOutside(false) + initView() + } + + private fun initView() { + val dialogTitleView: TextView = findViewById(R.id.dialogTitleView) + val conditionSpinner: Spinner = findViewById(R.id.conditionSpinner) + val contentLayout: LinearLayout = findViewById(R.id.contentLayout) + val contentSpinner: Spinner = findViewById(R.id.contentSpinner) + val inputView: AppCompatAutoCompleteTextView = findViewById(R.id.inputView) + val dateSelectLayout: LinearLayout = findViewById(R.id.dateSelectLayout) + val selectStartDateView: TextView = findViewById(R.id.selectStartDateView) + val selectEndDateView: TextView = findViewById(R.id.selectEndDateView) + val dialogCancelButton = findViewById