diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java new file mode 100644 index 0000000..b7077a3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java @@ -0,0 +1,237 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.InspectionBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "INSPECTION_BEAN". +*/ +public class InspectionBeanDao extends AbstractDao { + + public static final String TABLENAME = "INSPECTION_BEAN"; + + /** + * Properties of entity InspectionBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property Name = new Property(2, String.class, "name", false, "NAME"); + public final static Property StartTime = new Property(3, String.class, "startTime", false, "START_TIME"); + public final static Property EndTime = new Property(4, String.class, "endTime", false, "END_TIME"); + public final static Property Date = new Property(5, String.class, "date", false, "DATE"); + public final static Property StartLng = new Property(6, double.class, "startLng", false, "START_LNG"); + public final static Property StartLat = new Property(7, double.class, "startLat", false, "START_LAT"); + public final static Property EndLng = new Property(8, double.class, "endLng", false, "END_LNG"); + public final static Property EndLat = new Property(9, double.class, "endLat", false, "END_LAT"); + public final static Property Routes = new Property(10, String.class, "routes", false, "ROUTES"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public InspectionBeanDao(DaoConfig config) { + super(config); + } + + public InspectionBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"INSPECTION_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"NAME\" TEXT," + // 2: name + "\"START_TIME\" TEXT," + // 3: startTime + "\"END_TIME\" TEXT," + // 4: endTime + "\"DATE\" TEXT," + // 5: date + "\"START_LNG\" REAL NOT NULL ," + // 6: startLng + "\"START_LAT\" REAL NOT NULL ," + // 7: startLat + "\"END_LNG\" REAL NOT NULL ," + // 8: endLng + "\"END_LAT\" REAL NOT NULL ," + // 9: endLat + "\"ROUTES\" TEXT," + // 10: routes + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"INSPECTION_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public InspectionBean readEntity(Cursor cursor, int offset) { + InspectionBean entity = new InspectionBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // startTime + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // endTime + cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // date + cursor.getDouble(offset + 6), // startLng + cursor.getDouble(offset + 7), // startLat + cursor.getDouble(offset + 8), // endLng + cursor.getDouble(offset + 9), // endLat + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // routes + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, InspectionBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setStartTime(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setEndTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setDate(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5)); + entity.setStartLng(cursor.getDouble(offset + 6)); + entity.setStartLat(cursor.getDouble(offset + 7)); + entity.setEndLng(cursor.getDouble(offset + 8)); + entity.setEndLat(cursor.getDouble(offset + 9)); + entity.setRoutes(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(InspectionBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(InspectionBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(InspectionBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java new file mode 100644 index 0000000..b7077a3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java @@ -0,0 +1,237 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.InspectionBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "INSPECTION_BEAN". +*/ +public class InspectionBeanDao extends AbstractDao { + + public static final String TABLENAME = "INSPECTION_BEAN"; + + /** + * Properties of entity InspectionBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property Name = new Property(2, String.class, "name", false, "NAME"); + public final static Property StartTime = new Property(3, String.class, "startTime", false, "START_TIME"); + public final static Property EndTime = new Property(4, String.class, "endTime", false, "END_TIME"); + public final static Property Date = new Property(5, String.class, "date", false, "DATE"); + public final static Property StartLng = new Property(6, double.class, "startLng", false, "START_LNG"); + public final static Property StartLat = new Property(7, double.class, "startLat", false, "START_LAT"); + public final static Property EndLng = new Property(8, double.class, "endLng", false, "END_LNG"); + public final static Property EndLat = new Property(9, double.class, "endLat", false, "END_LAT"); + public final static Property Routes = new Property(10, String.class, "routes", false, "ROUTES"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public InspectionBeanDao(DaoConfig config) { + super(config); + } + + public InspectionBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"INSPECTION_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"NAME\" TEXT," + // 2: name + "\"START_TIME\" TEXT," + // 3: startTime + "\"END_TIME\" TEXT," + // 4: endTime + "\"DATE\" TEXT," + // 5: date + "\"START_LNG\" REAL NOT NULL ," + // 6: startLng + "\"START_LAT\" REAL NOT NULL ," + // 7: startLat + "\"END_LNG\" REAL NOT NULL ," + // 8: endLng + "\"END_LAT\" REAL NOT NULL ," + // 9: endLat + "\"ROUTES\" TEXT," + // 10: routes + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"INSPECTION_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public InspectionBean readEntity(Cursor cursor, int offset) { + InspectionBean entity = new InspectionBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // startTime + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // endTime + cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // date + cursor.getDouble(offset + 6), // startLng + cursor.getDouble(offset + 7), // startLat + cursor.getDouble(offset + 8), // endLng + cursor.getDouble(offset + 9), // endLat + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // routes + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, InspectionBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setStartTime(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setEndTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setDate(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5)); + entity.setStartLng(cursor.getDouble(offset + 6)); + entity.setStartLat(cursor.getDouble(offset + 7)); + entity.setEndLng(cursor.getDouble(offset + 8)); + entity.setEndLat(cursor.getDouble(offset + 9)); + entity.setRoutes(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(InspectionBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(InspectionBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(InspectionBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java new file mode 100644 index 0000000..3f040d3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java @@ -0,0 +1,245 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.TaskEventBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "TASK_EVENT_BEAN". +*/ +public class TaskEventBeanDao extends AbstractDao { + + public static final String TABLENAME = "TASK_EVENT_BEAN"; + + /** + * Properties of entity TaskEventBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property InspectionId = new Property(2, String.class, "inspectionId", false, "INSPECTION_ID"); + public final static Property Name = new Property(3, String.class, "name", false, "NAME"); + public final static Property CreateTime = new Property(4, String.class, "createTime", false, "CREATE_TIME"); + public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); + public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); + public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); + public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); + public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public TaskEventBeanDao(DaoConfig config) { + super(config); + } + + public TaskEventBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"TASK_EVENT_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"INSPECTION_ID\" TEXT," + // 2: inspectionId + "\"NAME\" TEXT," + // 3: name + "\"CREATE_TIME\" TEXT," + // 4: createTime + "\"LNG\" REAL NOT NULL ," + // 5: lng + "\"LAT\" REAL NOT NULL ," + // 6: lat + "\"TYPE\" TEXT," + // 7: type + "\"DATA\" REAL NOT NULL ," + // 8: data + "\"IMAGES\" TEXT," + // 9: images + "\"DESCRIPTION\" TEXT," + // 10: description + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"TASK_EVENT_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public TaskEventBean readEntity(Cursor cursor, int offset) { + TaskEventBean entity = new TaskEventBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // name + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getDouble(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, TaskEventBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setInspectionId(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setName(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setCreateTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setLng(cursor.getDouble(offset + 5)); + entity.setLat(cursor.getDouble(offset + 6)); + entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); + entity.setData(cursor.getDouble(offset + 8)); + entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); + entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(TaskEventBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(TaskEventBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(TaskEventBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java new file mode 100644 index 0000000..b7077a3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java @@ -0,0 +1,237 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.InspectionBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "INSPECTION_BEAN". +*/ +public class InspectionBeanDao extends AbstractDao { + + public static final String TABLENAME = "INSPECTION_BEAN"; + + /** + * Properties of entity InspectionBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property Name = new Property(2, String.class, "name", false, "NAME"); + public final static Property StartTime = new Property(3, String.class, "startTime", false, "START_TIME"); + public final static Property EndTime = new Property(4, String.class, "endTime", false, "END_TIME"); + public final static Property Date = new Property(5, String.class, "date", false, "DATE"); + public final static Property StartLng = new Property(6, double.class, "startLng", false, "START_LNG"); + public final static Property StartLat = new Property(7, double.class, "startLat", false, "START_LAT"); + public final static Property EndLng = new Property(8, double.class, "endLng", false, "END_LNG"); + public final static Property EndLat = new Property(9, double.class, "endLat", false, "END_LAT"); + public final static Property Routes = new Property(10, String.class, "routes", false, "ROUTES"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public InspectionBeanDao(DaoConfig config) { + super(config); + } + + public InspectionBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"INSPECTION_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"NAME\" TEXT," + // 2: name + "\"START_TIME\" TEXT," + // 3: startTime + "\"END_TIME\" TEXT," + // 4: endTime + "\"DATE\" TEXT," + // 5: date + "\"START_LNG\" REAL NOT NULL ," + // 6: startLng + "\"START_LAT\" REAL NOT NULL ," + // 7: startLat + "\"END_LNG\" REAL NOT NULL ," + // 8: endLng + "\"END_LAT\" REAL NOT NULL ," + // 9: endLat + "\"ROUTES\" TEXT," + // 10: routes + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"INSPECTION_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public InspectionBean readEntity(Cursor cursor, int offset) { + InspectionBean entity = new InspectionBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // startTime + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // endTime + cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // date + cursor.getDouble(offset + 6), // startLng + cursor.getDouble(offset + 7), // startLat + cursor.getDouble(offset + 8), // endLng + cursor.getDouble(offset + 9), // endLat + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // routes + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, InspectionBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setStartTime(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setEndTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setDate(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5)); + entity.setStartLng(cursor.getDouble(offset + 6)); + entity.setStartLat(cursor.getDouble(offset + 7)); + entity.setEndLng(cursor.getDouble(offset + 8)); + entity.setEndLat(cursor.getDouble(offset + 9)); + entity.setRoutes(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(InspectionBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(InspectionBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(InspectionBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java new file mode 100644 index 0000000..3f040d3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java @@ -0,0 +1,245 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.TaskEventBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "TASK_EVENT_BEAN". +*/ +public class TaskEventBeanDao extends AbstractDao { + + public static final String TABLENAME = "TASK_EVENT_BEAN"; + + /** + * Properties of entity TaskEventBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property InspectionId = new Property(2, String.class, "inspectionId", false, "INSPECTION_ID"); + public final static Property Name = new Property(3, String.class, "name", false, "NAME"); + public final static Property CreateTime = new Property(4, String.class, "createTime", false, "CREATE_TIME"); + public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); + public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); + public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); + public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); + public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public TaskEventBeanDao(DaoConfig config) { + super(config); + } + + public TaskEventBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"TASK_EVENT_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"INSPECTION_ID\" TEXT," + // 2: inspectionId + "\"NAME\" TEXT," + // 3: name + "\"CREATE_TIME\" TEXT," + // 4: createTime + "\"LNG\" REAL NOT NULL ," + // 5: lng + "\"LAT\" REAL NOT NULL ," + // 6: lat + "\"TYPE\" TEXT," + // 7: type + "\"DATA\" REAL NOT NULL ," + // 8: data + "\"IMAGES\" TEXT," + // 9: images + "\"DESCRIPTION\" TEXT," + // 10: description + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"TASK_EVENT_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public TaskEventBean readEntity(Cursor cursor, int offset) { + TaskEventBean entity = new TaskEventBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // name + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getDouble(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, TaskEventBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setInspectionId(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setName(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setCreateTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setLng(cursor.getDouble(offset + 5)); + entity.setLat(cursor.getDouble(offset + 6)); + entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); + entity.setData(cursor.getDouble(offset + 8)); + entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); + entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(TaskEventBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(TaskEventBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(TaskEventBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt new file mode 100644 index 0000000..dc635a4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt @@ -0,0 +1,41 @@ +package com.casic.birmm.inspect.model + +class EventListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var total = 0 + var rows: MutableList? = + null + + class RowsBean { + /** + * createTime : 2020-12-28 14:56:59 + * data : -1 + * description : ggg + * id : t1609138629320112121 + * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg + * inspectionId : 1609138451543200022 + * lat : 39.915956 + * lng : 116.268596 + * name : sss + * type : 自定义事件 + * user : 超超级管理员 + */ + var createTime: String? = null + var data = 0 + var description: String? = null + var id: String? = null + var images: String? = null + var inspectionId: String? = null + var lat = 0.0 + var lng = 0.0 + var name: String? = null + var type: String? = null + var user: String? = null + } + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java new file mode 100644 index 0000000..b7077a3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java @@ -0,0 +1,237 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.InspectionBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "INSPECTION_BEAN". +*/ +public class InspectionBeanDao extends AbstractDao { + + public static final String TABLENAME = "INSPECTION_BEAN"; + + /** + * Properties of entity InspectionBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property Name = new Property(2, String.class, "name", false, "NAME"); + public final static Property StartTime = new Property(3, String.class, "startTime", false, "START_TIME"); + public final static Property EndTime = new Property(4, String.class, "endTime", false, "END_TIME"); + public final static Property Date = new Property(5, String.class, "date", false, "DATE"); + public final static Property StartLng = new Property(6, double.class, "startLng", false, "START_LNG"); + public final static Property StartLat = new Property(7, double.class, "startLat", false, "START_LAT"); + public final static Property EndLng = new Property(8, double.class, "endLng", false, "END_LNG"); + public final static Property EndLat = new Property(9, double.class, "endLat", false, "END_LAT"); + public final static Property Routes = new Property(10, String.class, "routes", false, "ROUTES"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public InspectionBeanDao(DaoConfig config) { + super(config); + } + + public InspectionBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"INSPECTION_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"NAME\" TEXT," + // 2: name + "\"START_TIME\" TEXT," + // 3: startTime + "\"END_TIME\" TEXT," + // 4: endTime + "\"DATE\" TEXT," + // 5: date + "\"START_LNG\" REAL NOT NULL ," + // 6: startLng + "\"START_LAT\" REAL NOT NULL ," + // 7: startLat + "\"END_LNG\" REAL NOT NULL ," + // 8: endLng + "\"END_LAT\" REAL NOT NULL ," + // 9: endLat + "\"ROUTES\" TEXT," + // 10: routes + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"INSPECTION_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public InspectionBean readEntity(Cursor cursor, int offset) { + InspectionBean entity = new InspectionBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // startTime + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // endTime + cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // date + cursor.getDouble(offset + 6), // startLng + cursor.getDouble(offset + 7), // startLat + cursor.getDouble(offset + 8), // endLng + cursor.getDouble(offset + 9), // endLat + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // routes + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, InspectionBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setStartTime(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setEndTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setDate(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5)); + entity.setStartLng(cursor.getDouble(offset + 6)); + entity.setStartLat(cursor.getDouble(offset + 7)); + entity.setEndLng(cursor.getDouble(offset + 8)); + entity.setEndLat(cursor.getDouble(offset + 9)); + entity.setRoutes(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(InspectionBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(InspectionBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(InspectionBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java new file mode 100644 index 0000000..3f040d3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java @@ -0,0 +1,245 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.TaskEventBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "TASK_EVENT_BEAN". +*/ +public class TaskEventBeanDao extends AbstractDao { + + public static final String TABLENAME = "TASK_EVENT_BEAN"; + + /** + * Properties of entity TaskEventBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property InspectionId = new Property(2, String.class, "inspectionId", false, "INSPECTION_ID"); + public final static Property Name = new Property(3, String.class, "name", false, "NAME"); + public final static Property CreateTime = new Property(4, String.class, "createTime", false, "CREATE_TIME"); + public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); + public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); + public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); + public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); + public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public TaskEventBeanDao(DaoConfig config) { + super(config); + } + + public TaskEventBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"TASK_EVENT_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"INSPECTION_ID\" TEXT," + // 2: inspectionId + "\"NAME\" TEXT," + // 3: name + "\"CREATE_TIME\" TEXT," + // 4: createTime + "\"LNG\" REAL NOT NULL ," + // 5: lng + "\"LAT\" REAL NOT NULL ," + // 6: lat + "\"TYPE\" TEXT," + // 7: type + "\"DATA\" REAL NOT NULL ," + // 8: data + "\"IMAGES\" TEXT," + // 9: images + "\"DESCRIPTION\" TEXT," + // 10: description + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"TASK_EVENT_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public TaskEventBean readEntity(Cursor cursor, int offset) { + TaskEventBean entity = new TaskEventBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // name + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getDouble(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, TaskEventBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setInspectionId(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setName(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setCreateTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setLng(cursor.getDouble(offset + 5)); + entity.setLat(cursor.getDouble(offset + 6)); + entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); + entity.setData(cursor.getDouble(offset + 8)); + entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); + entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(TaskEventBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(TaskEventBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(TaskEventBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt new file mode 100644 index 0000000..dc635a4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt @@ -0,0 +1,41 @@ +package com.casic.birmm.inspect.model + +class EventListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var total = 0 + var rows: MutableList? = + null + + class RowsBean { + /** + * createTime : 2020-12-28 14:56:59 + * data : -1 + * description : ggg + * id : t1609138629320112121 + * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg + * inspectionId : 1609138451543200022 + * lat : 39.915956 + * lng : 116.268596 + * name : sss + * type : 自定义事件 + * user : 超超级管理员 + */ + var createTime: String? = null + var data = 0 + var description: String? = null + var id: String? = null + var images: String? = null + var inspectionId: String? = null + var lat = 0.0 + var lng = 0.0 + var name: String? = null + var type: String? = null + var user: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt deleted file mode 100644 index de499aa..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.birmm.inspect.model - -class EventModel { - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var total = 0 - var rows: MutableList? = - null - - class RowsBean { - /** - * createTime : 2020-12-28 14:56:59 - * data : -1 - * description : ggg - * id : t1609138629320112121 - * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg - * inspectionId : 1609138451543200022 - * lat : 39.915956 - * lng : 116.268596 - * name : sss - * type : 自定义事件 - * user : 超超级管理员 - */ - var createTime: String? = null - var data = 0 - var description: String? = null - var id: String? = null - var images: String? = null - var inspectionId: String? = null - var lat = 0.0 - var lng = 0.0 - var name: String? = null - var type: String? = null - var user: String? = null - } - } -} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java new file mode 100644 index 0000000..b7077a3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java @@ -0,0 +1,237 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.InspectionBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "INSPECTION_BEAN". +*/ +public class InspectionBeanDao extends AbstractDao { + + public static final String TABLENAME = "INSPECTION_BEAN"; + + /** + * Properties of entity InspectionBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property Name = new Property(2, String.class, "name", false, "NAME"); + public final static Property StartTime = new Property(3, String.class, "startTime", false, "START_TIME"); + public final static Property EndTime = new Property(4, String.class, "endTime", false, "END_TIME"); + public final static Property Date = new Property(5, String.class, "date", false, "DATE"); + public final static Property StartLng = new Property(6, double.class, "startLng", false, "START_LNG"); + public final static Property StartLat = new Property(7, double.class, "startLat", false, "START_LAT"); + public final static Property EndLng = new Property(8, double.class, "endLng", false, "END_LNG"); + public final static Property EndLat = new Property(9, double.class, "endLat", false, "END_LAT"); + public final static Property Routes = new Property(10, String.class, "routes", false, "ROUTES"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public InspectionBeanDao(DaoConfig config) { + super(config); + } + + public InspectionBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"INSPECTION_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"NAME\" TEXT," + // 2: name + "\"START_TIME\" TEXT," + // 3: startTime + "\"END_TIME\" TEXT," + // 4: endTime + "\"DATE\" TEXT," + // 5: date + "\"START_LNG\" REAL NOT NULL ," + // 6: startLng + "\"START_LAT\" REAL NOT NULL ," + // 7: startLat + "\"END_LNG\" REAL NOT NULL ," + // 8: endLng + "\"END_LAT\" REAL NOT NULL ," + // 9: endLat + "\"ROUTES\" TEXT," + // 10: routes + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"INSPECTION_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public InspectionBean readEntity(Cursor cursor, int offset) { + InspectionBean entity = new InspectionBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // startTime + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // endTime + cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // date + cursor.getDouble(offset + 6), // startLng + cursor.getDouble(offset + 7), // startLat + cursor.getDouble(offset + 8), // endLng + cursor.getDouble(offset + 9), // endLat + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // routes + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, InspectionBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setStartTime(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setEndTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setDate(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5)); + entity.setStartLng(cursor.getDouble(offset + 6)); + entity.setStartLat(cursor.getDouble(offset + 7)); + entity.setEndLng(cursor.getDouble(offset + 8)); + entity.setEndLat(cursor.getDouble(offset + 9)); + entity.setRoutes(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(InspectionBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(InspectionBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(InspectionBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java new file mode 100644 index 0000000..3f040d3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java @@ -0,0 +1,245 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.TaskEventBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "TASK_EVENT_BEAN". +*/ +public class TaskEventBeanDao extends AbstractDao { + + public static final String TABLENAME = "TASK_EVENT_BEAN"; + + /** + * Properties of entity TaskEventBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property InspectionId = new Property(2, String.class, "inspectionId", false, "INSPECTION_ID"); + public final static Property Name = new Property(3, String.class, "name", false, "NAME"); + public final static Property CreateTime = new Property(4, String.class, "createTime", false, "CREATE_TIME"); + public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); + public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); + public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); + public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); + public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public TaskEventBeanDao(DaoConfig config) { + super(config); + } + + public TaskEventBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"TASK_EVENT_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"INSPECTION_ID\" TEXT," + // 2: inspectionId + "\"NAME\" TEXT," + // 3: name + "\"CREATE_TIME\" TEXT," + // 4: createTime + "\"LNG\" REAL NOT NULL ," + // 5: lng + "\"LAT\" REAL NOT NULL ," + // 6: lat + "\"TYPE\" TEXT," + // 7: type + "\"DATA\" REAL NOT NULL ," + // 8: data + "\"IMAGES\" TEXT," + // 9: images + "\"DESCRIPTION\" TEXT," + // 10: description + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"TASK_EVENT_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public TaskEventBean readEntity(Cursor cursor, int offset) { + TaskEventBean entity = new TaskEventBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // name + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getDouble(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, TaskEventBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setInspectionId(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setName(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setCreateTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setLng(cursor.getDouble(offset + 5)); + entity.setLat(cursor.getDouble(offset + 6)); + entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); + entity.setData(cursor.getDouble(offset + 8)); + entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); + entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(TaskEventBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(TaskEventBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(TaskEventBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt new file mode 100644 index 0000000..dc635a4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt @@ -0,0 +1,41 @@ +package com.casic.birmm.inspect.model + +class EventListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var total = 0 + var rows: MutableList? = + null + + class RowsBean { + /** + * createTime : 2020-12-28 14:56:59 + * data : -1 + * description : ggg + * id : t1609138629320112121 + * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg + * inspectionId : 1609138451543200022 + * lat : 39.915956 + * lng : 116.268596 + * name : sss + * type : 自定义事件 + * user : 超超级管理员 + */ + var createTime: String? = null + var data = 0 + var description: String? = null + var id: String? = null + var images: String? = null + var inspectionId: String? = null + var lat = 0.0 + var lng = 0.0 + var name: String? = null + var type: String? = null + var user: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt deleted file mode 100644 index de499aa..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.birmm.inspect.model - -class EventModel { - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var total = 0 - var rows: MutableList? = - null - - class RowsBean { - /** - * createTime : 2020-12-28 14:56:59 - * data : -1 - * description : ggg - * id : t1609138629320112121 - * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg - * inspectionId : 1609138451543200022 - * lat : 39.915956 - * lng : 116.268596 - * name : sss - * type : 自定义事件 - * user : 超超级管理员 - */ - var createTime: String? = null - var data = 0 - var description: String? = null - var id: String? = null - var images: String? = null - var inspectionId: String? = null - var lat = 0.0 - var lng = 0.0 - var name: String? = null - var type: String? = null - var user: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt new file mode 100644 index 0000000..395b6e8 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt @@ -0,0 +1,43 @@ +package com.casic.birmm.inspect.model + +class InspectListModel { + + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + + var total = 0 + var rows: MutableList? = null + + class RowsBean { + /** + * date : 2021年07月08日 + * endLat : 39.915908 + * endLng : 116.26876 + * endTime : 2021-07-08 11:20:20 + * id : 162570318141612121 + * name : 测试 + * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] + * startLat : 39.913365 + * startLng : 116.269462 + * startTime : 2021-07-08 08:13:01 + * user : 王晓颖 + */ + var date: String? = null + var endLat = 0.0 + var endLng = 0.0 + var endTime: String? = null + var id: String? = null + var name: String? = null + var routes: String? = null + var startLat = 0.0 + var startLng = 0.0 + var startTime: String? = null + var user: String? = null + + } + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java new file mode 100644 index 0000000..b7077a3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java @@ -0,0 +1,237 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.InspectionBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "INSPECTION_BEAN". +*/ +public class InspectionBeanDao extends AbstractDao { + + public static final String TABLENAME = "INSPECTION_BEAN"; + + /** + * Properties of entity InspectionBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property Name = new Property(2, String.class, "name", false, "NAME"); + public final static Property StartTime = new Property(3, String.class, "startTime", false, "START_TIME"); + public final static Property EndTime = new Property(4, String.class, "endTime", false, "END_TIME"); + public final static Property Date = new Property(5, String.class, "date", false, "DATE"); + public final static Property StartLng = new Property(6, double.class, "startLng", false, "START_LNG"); + public final static Property StartLat = new Property(7, double.class, "startLat", false, "START_LAT"); + public final static Property EndLng = new Property(8, double.class, "endLng", false, "END_LNG"); + public final static Property EndLat = new Property(9, double.class, "endLat", false, "END_LAT"); + public final static Property Routes = new Property(10, String.class, "routes", false, "ROUTES"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public InspectionBeanDao(DaoConfig config) { + super(config); + } + + public InspectionBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"INSPECTION_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"NAME\" TEXT," + // 2: name + "\"START_TIME\" TEXT," + // 3: startTime + "\"END_TIME\" TEXT," + // 4: endTime + "\"DATE\" TEXT," + // 5: date + "\"START_LNG\" REAL NOT NULL ," + // 6: startLng + "\"START_LAT\" REAL NOT NULL ," + // 7: startLat + "\"END_LNG\" REAL NOT NULL ," + // 8: endLng + "\"END_LAT\" REAL NOT NULL ," + // 9: endLat + "\"ROUTES\" TEXT," + // 10: routes + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"INSPECTION_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public InspectionBean readEntity(Cursor cursor, int offset) { + InspectionBean entity = new InspectionBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // startTime + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // endTime + cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // date + cursor.getDouble(offset + 6), // startLng + cursor.getDouble(offset + 7), // startLat + cursor.getDouble(offset + 8), // endLng + cursor.getDouble(offset + 9), // endLat + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // routes + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, InspectionBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setStartTime(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setEndTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setDate(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5)); + entity.setStartLng(cursor.getDouble(offset + 6)); + entity.setStartLat(cursor.getDouble(offset + 7)); + entity.setEndLng(cursor.getDouble(offset + 8)); + entity.setEndLat(cursor.getDouble(offset + 9)); + entity.setRoutes(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(InspectionBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(InspectionBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(InspectionBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java new file mode 100644 index 0000000..3f040d3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java @@ -0,0 +1,245 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.TaskEventBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "TASK_EVENT_BEAN". +*/ +public class TaskEventBeanDao extends AbstractDao { + + public static final String TABLENAME = "TASK_EVENT_BEAN"; + + /** + * Properties of entity TaskEventBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property InspectionId = new Property(2, String.class, "inspectionId", false, "INSPECTION_ID"); + public final static Property Name = new Property(3, String.class, "name", false, "NAME"); + public final static Property CreateTime = new Property(4, String.class, "createTime", false, "CREATE_TIME"); + public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); + public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); + public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); + public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); + public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public TaskEventBeanDao(DaoConfig config) { + super(config); + } + + public TaskEventBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"TASK_EVENT_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"INSPECTION_ID\" TEXT," + // 2: inspectionId + "\"NAME\" TEXT," + // 3: name + "\"CREATE_TIME\" TEXT," + // 4: createTime + "\"LNG\" REAL NOT NULL ," + // 5: lng + "\"LAT\" REAL NOT NULL ," + // 6: lat + "\"TYPE\" TEXT," + // 7: type + "\"DATA\" REAL NOT NULL ," + // 8: data + "\"IMAGES\" TEXT," + // 9: images + "\"DESCRIPTION\" TEXT," + // 10: description + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"TASK_EVENT_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public TaskEventBean readEntity(Cursor cursor, int offset) { + TaskEventBean entity = new TaskEventBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // name + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getDouble(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, TaskEventBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setInspectionId(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setName(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setCreateTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setLng(cursor.getDouble(offset + 5)); + entity.setLat(cursor.getDouble(offset + 6)); + entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); + entity.setData(cursor.getDouble(offset + 8)); + entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); + entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(TaskEventBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(TaskEventBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(TaskEventBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt new file mode 100644 index 0000000..dc635a4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt @@ -0,0 +1,41 @@ +package com.casic.birmm.inspect.model + +class EventListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var total = 0 + var rows: MutableList? = + null + + class RowsBean { + /** + * createTime : 2020-12-28 14:56:59 + * data : -1 + * description : ggg + * id : t1609138629320112121 + * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg + * inspectionId : 1609138451543200022 + * lat : 39.915956 + * lng : 116.268596 + * name : sss + * type : 自定义事件 + * user : 超超级管理员 + */ + var createTime: String? = null + var data = 0 + var description: String? = null + var id: String? = null + var images: String? = null + var inspectionId: String? = null + var lat = 0.0 + var lng = 0.0 + var name: String? = null + var type: String? = null + var user: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt deleted file mode 100644 index de499aa..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.birmm.inspect.model - -class EventModel { - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var total = 0 - var rows: MutableList? = - null - - class RowsBean { - /** - * createTime : 2020-12-28 14:56:59 - * data : -1 - * description : ggg - * id : t1609138629320112121 - * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg - * inspectionId : 1609138451543200022 - * lat : 39.915956 - * lng : 116.268596 - * name : sss - * type : 自定义事件 - * user : 超超级管理员 - */ - var createTime: String? = null - var data = 0 - var description: String? = null - var id: String? = null - var images: String? = null - var inspectionId: String? = null - var lat = 0.0 - var lng = 0.0 - var name: String? = null - var type: String? = null - var user: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt new file mode 100644 index 0000000..395b6e8 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt @@ -0,0 +1,43 @@ +package com.casic.birmm.inspect.model + +class InspectListModel { + + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + + var total = 0 + var rows: MutableList? = null + + class RowsBean { + /** + * date : 2021年07月08日 + * endLat : 39.915908 + * endLng : 116.26876 + * endTime : 2021-07-08 11:20:20 + * id : 162570318141612121 + * name : 测试 + * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] + * startLat : 39.913365 + * startLng : 116.269462 + * startTime : 2021-07-08 08:13:01 + * user : 王晓颖 + */ + var date: String? = null + var endLat = 0.0 + var endLng = 0.0 + var endTime: String? = null + var id: String? = null + var name: String? = null + var routes: String? = null + var startLat = 0.0 + var startLng = 0.0 + var startTime: String? = null + var user: String? = null + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt deleted file mode 100644 index 558e716..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.casic.birmm.inspect.model - -class InspectModel { - - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - - var total = 0 - var rows: MutableList? = null - - class RowsBean { - /** - * date : 2021年07月08日 - * endLat : 39.915908 - * endLng : 116.26876 - * endTime : 2021-07-08 11:20:20 - * id : 162570318141612121 - * name : 测试 - * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] - * startLat : 39.913365 - * startLng : 116.269462 - * startTime : 2021-07-08 08:13:01 - * user : 王晓颖 - */ - var date: String? = null - var endLat = 0.0 - var endLng = 0.0 - var endTime: String? = null - var id: String? = null - var name: String? = null - var routes: String? = null - var startLat = 0.0 - var startLng = 0.0 - var startTime: String? = null - var user: String? = null - - } - } -} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java new file mode 100644 index 0000000..b7077a3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java @@ -0,0 +1,237 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.InspectionBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "INSPECTION_BEAN". +*/ +public class InspectionBeanDao extends AbstractDao { + + public static final String TABLENAME = "INSPECTION_BEAN"; + + /** + * Properties of entity InspectionBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property Name = new Property(2, String.class, "name", false, "NAME"); + public final static Property StartTime = new Property(3, String.class, "startTime", false, "START_TIME"); + public final static Property EndTime = new Property(4, String.class, "endTime", false, "END_TIME"); + public final static Property Date = new Property(5, String.class, "date", false, "DATE"); + public final static Property StartLng = new Property(6, double.class, "startLng", false, "START_LNG"); + public final static Property StartLat = new Property(7, double.class, "startLat", false, "START_LAT"); + public final static Property EndLng = new Property(8, double.class, "endLng", false, "END_LNG"); + public final static Property EndLat = new Property(9, double.class, "endLat", false, "END_LAT"); + public final static Property Routes = new Property(10, String.class, "routes", false, "ROUTES"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public InspectionBeanDao(DaoConfig config) { + super(config); + } + + public InspectionBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"INSPECTION_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"NAME\" TEXT," + // 2: name + "\"START_TIME\" TEXT," + // 3: startTime + "\"END_TIME\" TEXT," + // 4: endTime + "\"DATE\" TEXT," + // 5: date + "\"START_LNG\" REAL NOT NULL ," + // 6: startLng + "\"START_LAT\" REAL NOT NULL ," + // 7: startLat + "\"END_LNG\" REAL NOT NULL ," + // 8: endLng + "\"END_LAT\" REAL NOT NULL ," + // 9: endLat + "\"ROUTES\" TEXT," + // 10: routes + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"INSPECTION_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public InspectionBean readEntity(Cursor cursor, int offset) { + InspectionBean entity = new InspectionBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // startTime + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // endTime + cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // date + cursor.getDouble(offset + 6), // startLng + cursor.getDouble(offset + 7), // startLat + cursor.getDouble(offset + 8), // endLng + cursor.getDouble(offset + 9), // endLat + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // routes + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, InspectionBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setStartTime(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setEndTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setDate(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5)); + entity.setStartLng(cursor.getDouble(offset + 6)); + entity.setStartLat(cursor.getDouble(offset + 7)); + entity.setEndLng(cursor.getDouble(offset + 8)); + entity.setEndLat(cursor.getDouble(offset + 9)); + entity.setRoutes(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(InspectionBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(InspectionBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(InspectionBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java new file mode 100644 index 0000000..3f040d3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java @@ -0,0 +1,245 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.TaskEventBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "TASK_EVENT_BEAN". +*/ +public class TaskEventBeanDao extends AbstractDao { + + public static final String TABLENAME = "TASK_EVENT_BEAN"; + + /** + * Properties of entity TaskEventBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property InspectionId = new Property(2, String.class, "inspectionId", false, "INSPECTION_ID"); + public final static Property Name = new Property(3, String.class, "name", false, "NAME"); + public final static Property CreateTime = new Property(4, String.class, "createTime", false, "CREATE_TIME"); + public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); + public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); + public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); + public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); + public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public TaskEventBeanDao(DaoConfig config) { + super(config); + } + + public TaskEventBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"TASK_EVENT_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"INSPECTION_ID\" TEXT," + // 2: inspectionId + "\"NAME\" TEXT," + // 3: name + "\"CREATE_TIME\" TEXT," + // 4: createTime + "\"LNG\" REAL NOT NULL ," + // 5: lng + "\"LAT\" REAL NOT NULL ," + // 6: lat + "\"TYPE\" TEXT," + // 7: type + "\"DATA\" REAL NOT NULL ," + // 8: data + "\"IMAGES\" TEXT," + // 9: images + "\"DESCRIPTION\" TEXT," + // 10: description + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"TASK_EVENT_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public TaskEventBean readEntity(Cursor cursor, int offset) { + TaskEventBean entity = new TaskEventBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // name + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getDouble(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, TaskEventBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setInspectionId(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setName(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setCreateTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setLng(cursor.getDouble(offset + 5)); + entity.setLat(cursor.getDouble(offset + 6)); + entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); + entity.setData(cursor.getDouble(offset + 8)); + entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); + entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(TaskEventBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(TaskEventBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(TaskEventBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt new file mode 100644 index 0000000..dc635a4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt @@ -0,0 +1,41 @@ +package com.casic.birmm.inspect.model + +class EventListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var total = 0 + var rows: MutableList? = + null + + class RowsBean { + /** + * createTime : 2020-12-28 14:56:59 + * data : -1 + * description : ggg + * id : t1609138629320112121 + * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg + * inspectionId : 1609138451543200022 + * lat : 39.915956 + * lng : 116.268596 + * name : sss + * type : 自定义事件 + * user : 超超级管理员 + */ + var createTime: String? = null + var data = 0 + var description: String? = null + var id: String? = null + var images: String? = null + var inspectionId: String? = null + var lat = 0.0 + var lng = 0.0 + var name: String? = null + var type: String? = null + var user: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt deleted file mode 100644 index de499aa..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.birmm.inspect.model - -class EventModel { - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var total = 0 - var rows: MutableList? = - null - - class RowsBean { - /** - * createTime : 2020-12-28 14:56:59 - * data : -1 - * description : ggg - * id : t1609138629320112121 - * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg - * inspectionId : 1609138451543200022 - * lat : 39.915956 - * lng : 116.268596 - * name : sss - * type : 自定义事件 - * user : 超超级管理员 - */ - var createTime: String? = null - var data = 0 - var description: String? = null - var id: String? = null - var images: String? = null - var inspectionId: String? = null - var lat = 0.0 - var lng = 0.0 - var name: String? = null - var type: String? = null - var user: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt new file mode 100644 index 0000000..395b6e8 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt @@ -0,0 +1,43 @@ +package com.casic.birmm.inspect.model + +class InspectListModel { + + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + + var total = 0 + var rows: MutableList? = null + + class RowsBean { + /** + * date : 2021年07月08日 + * endLat : 39.915908 + * endLng : 116.26876 + * endTime : 2021-07-08 11:20:20 + * id : 162570318141612121 + * name : 测试 + * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] + * startLat : 39.913365 + * startLng : 116.269462 + * startTime : 2021-07-08 08:13:01 + * user : 王晓颖 + */ + var date: String? = null + var endLat = 0.0 + var endLng = 0.0 + var endTime: String? = null + var id: String? = null + var name: String? = null + var routes: String? = null + var startLat = 0.0 + var startLng = 0.0 + var startTime: String? = null + var user: String? = null + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt deleted file mode 100644 index 558e716..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.casic.birmm.inspect.model - -class InspectModel { - - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - - var total = 0 - var rows: MutableList? = null - - class RowsBean { - /** - * date : 2021年07月08日 - * endLat : 39.915908 - * endLng : 116.26876 - * endTime : 2021-07-08 11:20:20 - * id : 162570318141612121 - * name : 测试 - * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] - * startLat : 39.913365 - * startLng : 116.269462 - * startTime : 2021-07-08 08:13:01 - * user : 王晓颖 - */ - var date: String? = null - var endLat = 0.0 - var endLng = 0.0 - var endTime: String? = null - var id: String? = null - var name: String? = null - var routes: String? = null - var startLat = 0.0 - var startLng = 0.0 - var startTime: String? = null - var user: String? = null - - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt index ee6f1f6..beb469b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.model +//同巡检Id的事件列表数据模型 class TaskRecordModel { var code = 0 @@ -8,7 +9,7 @@ var isSuccess = false class DataBean { - var list: List? = null + var list: MutableList? = null class ListBean { /** diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java new file mode 100644 index 0000000..b7077a3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java @@ -0,0 +1,237 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.InspectionBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "INSPECTION_BEAN". +*/ +public class InspectionBeanDao extends AbstractDao { + + public static final String TABLENAME = "INSPECTION_BEAN"; + + /** + * Properties of entity InspectionBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property Name = new Property(2, String.class, "name", false, "NAME"); + public final static Property StartTime = new Property(3, String.class, "startTime", false, "START_TIME"); + public final static Property EndTime = new Property(4, String.class, "endTime", false, "END_TIME"); + public final static Property Date = new Property(5, String.class, "date", false, "DATE"); + public final static Property StartLng = new Property(6, double.class, "startLng", false, "START_LNG"); + public final static Property StartLat = new Property(7, double.class, "startLat", false, "START_LAT"); + public final static Property EndLng = new Property(8, double.class, "endLng", false, "END_LNG"); + public final static Property EndLat = new Property(9, double.class, "endLat", false, "END_LAT"); + public final static Property Routes = new Property(10, String.class, "routes", false, "ROUTES"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public InspectionBeanDao(DaoConfig config) { + super(config); + } + + public InspectionBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"INSPECTION_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"NAME\" TEXT," + // 2: name + "\"START_TIME\" TEXT," + // 3: startTime + "\"END_TIME\" TEXT," + // 4: endTime + "\"DATE\" TEXT," + // 5: date + "\"START_LNG\" REAL NOT NULL ," + // 6: startLng + "\"START_LAT\" REAL NOT NULL ," + // 7: startLat + "\"END_LNG\" REAL NOT NULL ," + // 8: endLng + "\"END_LAT\" REAL NOT NULL ," + // 9: endLat + "\"ROUTES\" TEXT," + // 10: routes + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"INSPECTION_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public InspectionBean readEntity(Cursor cursor, int offset) { + InspectionBean entity = new InspectionBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // startTime + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // endTime + cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // date + cursor.getDouble(offset + 6), // startLng + cursor.getDouble(offset + 7), // startLat + cursor.getDouble(offset + 8), // endLng + cursor.getDouble(offset + 9), // endLat + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // routes + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, InspectionBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setStartTime(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setEndTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setDate(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5)); + entity.setStartLng(cursor.getDouble(offset + 6)); + entity.setStartLat(cursor.getDouble(offset + 7)); + entity.setEndLng(cursor.getDouble(offset + 8)); + entity.setEndLat(cursor.getDouble(offset + 9)); + entity.setRoutes(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(InspectionBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(InspectionBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(InspectionBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java new file mode 100644 index 0000000..3f040d3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java @@ -0,0 +1,245 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.TaskEventBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "TASK_EVENT_BEAN". +*/ +public class TaskEventBeanDao extends AbstractDao { + + public static final String TABLENAME = "TASK_EVENT_BEAN"; + + /** + * Properties of entity TaskEventBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property InspectionId = new Property(2, String.class, "inspectionId", false, "INSPECTION_ID"); + public final static Property Name = new Property(3, String.class, "name", false, "NAME"); + public final static Property CreateTime = new Property(4, String.class, "createTime", false, "CREATE_TIME"); + public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); + public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); + public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); + public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); + public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public TaskEventBeanDao(DaoConfig config) { + super(config); + } + + public TaskEventBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"TASK_EVENT_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"INSPECTION_ID\" TEXT," + // 2: inspectionId + "\"NAME\" TEXT," + // 3: name + "\"CREATE_TIME\" TEXT," + // 4: createTime + "\"LNG\" REAL NOT NULL ," + // 5: lng + "\"LAT\" REAL NOT NULL ," + // 6: lat + "\"TYPE\" TEXT," + // 7: type + "\"DATA\" REAL NOT NULL ," + // 8: data + "\"IMAGES\" TEXT," + // 9: images + "\"DESCRIPTION\" TEXT," + // 10: description + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"TASK_EVENT_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public TaskEventBean readEntity(Cursor cursor, int offset) { + TaskEventBean entity = new TaskEventBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // name + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getDouble(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, TaskEventBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setInspectionId(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setName(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setCreateTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setLng(cursor.getDouble(offset + 5)); + entity.setLat(cursor.getDouble(offset + 6)); + entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); + entity.setData(cursor.getDouble(offset + 8)); + entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); + entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(TaskEventBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(TaskEventBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(TaskEventBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt new file mode 100644 index 0000000..dc635a4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt @@ -0,0 +1,41 @@ +package com.casic.birmm.inspect.model + +class EventListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var total = 0 + var rows: MutableList? = + null + + class RowsBean { + /** + * createTime : 2020-12-28 14:56:59 + * data : -1 + * description : ggg + * id : t1609138629320112121 + * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg + * inspectionId : 1609138451543200022 + * lat : 39.915956 + * lng : 116.268596 + * name : sss + * type : 自定义事件 + * user : 超超级管理员 + */ + var createTime: String? = null + var data = 0 + var description: String? = null + var id: String? = null + var images: String? = null + var inspectionId: String? = null + var lat = 0.0 + var lng = 0.0 + var name: String? = null + var type: String? = null + var user: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt deleted file mode 100644 index de499aa..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.birmm.inspect.model - -class EventModel { - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var total = 0 - var rows: MutableList? = - null - - class RowsBean { - /** - * createTime : 2020-12-28 14:56:59 - * data : -1 - * description : ggg - * id : t1609138629320112121 - * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg - * inspectionId : 1609138451543200022 - * lat : 39.915956 - * lng : 116.268596 - * name : sss - * type : 自定义事件 - * user : 超超级管理员 - */ - var createTime: String? = null - var data = 0 - var description: String? = null - var id: String? = null - var images: String? = null - var inspectionId: String? = null - var lat = 0.0 - var lng = 0.0 - var name: String? = null - var type: String? = null - var user: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt new file mode 100644 index 0000000..395b6e8 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt @@ -0,0 +1,43 @@ +package com.casic.birmm.inspect.model + +class InspectListModel { + + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + + var total = 0 + var rows: MutableList? = null + + class RowsBean { + /** + * date : 2021年07月08日 + * endLat : 39.915908 + * endLng : 116.26876 + * endTime : 2021-07-08 11:20:20 + * id : 162570318141612121 + * name : 测试 + * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] + * startLat : 39.913365 + * startLng : 116.269462 + * startTime : 2021-07-08 08:13:01 + * user : 王晓颖 + */ + var date: String? = null + var endLat = 0.0 + var endLng = 0.0 + var endTime: String? = null + var id: String? = null + var name: String? = null + var routes: String? = null + var startLat = 0.0 + var startLng = 0.0 + var startTime: String? = null + var user: String? = null + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt deleted file mode 100644 index 558e716..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.casic.birmm.inspect.model - -class InspectModel { - - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - - var total = 0 - var rows: MutableList? = null - - class RowsBean { - /** - * date : 2021年07月08日 - * endLat : 39.915908 - * endLng : 116.26876 - * endTime : 2021-07-08 11:20:20 - * id : 162570318141612121 - * name : 测试 - * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] - * startLat : 39.913365 - * startLng : 116.269462 - * startTime : 2021-07-08 08:13:01 - * user : 王晓颖 - */ - var date: String? = null - var endLat = 0.0 - var endLng = 0.0 - var endTime: String? = null - var id: String? = null - var name: String? = null - var routes: String? = null - var startLat = 0.0 - var startLng = 0.0 - var startTime: String? = null - var user: String? = null - - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt index ee6f1f6..beb469b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.model +//同巡检Id的事件列表数据模型 class TaskRecordModel { var code = 0 @@ -8,7 +9,7 @@ var isSuccess = false class DataBean { - var list: List? = null + var list: MutableList? = null class ListBean { /** diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt new file mode 100644 index 0000000..8201cb4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt @@ -0,0 +1,89 @@ +package com.casic.birmm.inspect.utils + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.util.Log +import com.casic.birmm.inspect.base.BaseApplication + + +class BroadcastManager private constructor() { + + private var mContext: Context = BaseApplication.instance + private var receiverMap: HashMap = HashMap() + + companion object { + private const val Tag = "BroadcastManager" + + val instance: BroadcastManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + BroadcastManager() + } + } + + /** + * 添加单个Action,广播的初始化 + */ + fun addAction(action: String, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + filter.addAction(action) + mContext.registerReceiver(receiver, filter) + receiverMap[action] = receiver + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 添加多个Action,广播的初始化 + */ + fun addAction(actions: Array, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + actions.forEach { + filter.addAction(it) + receiverMap[it] = receiver + } + mContext.registerReceiver(receiver, filter) + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 发送广播 + * + * @param action 唯一码 + * @param msg 参数 + */ + fun sendBroadcast(action: String, msg: String) { + try { + val intent = Intent() + intent.action = action + intent.putExtra("data", msg) + mContext.sendBroadcast(intent) + Log.d(Tag, "发送广播: $msg") + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 销毁广播 + * + * @param actions action集合 + */ + fun destroy(vararg actions: String) { + try { + actions.forEach { + val receiver = receiverMap[it] + if (receiver != null) { + mContext.unregisterReceiver(receiver) + } + } + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java new file mode 100644 index 0000000..b7077a3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java @@ -0,0 +1,237 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.InspectionBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "INSPECTION_BEAN". +*/ +public class InspectionBeanDao extends AbstractDao { + + public static final String TABLENAME = "INSPECTION_BEAN"; + + /** + * Properties of entity InspectionBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property Name = new Property(2, String.class, "name", false, "NAME"); + public final static Property StartTime = new Property(3, String.class, "startTime", false, "START_TIME"); + public final static Property EndTime = new Property(4, String.class, "endTime", false, "END_TIME"); + public final static Property Date = new Property(5, String.class, "date", false, "DATE"); + public final static Property StartLng = new Property(6, double.class, "startLng", false, "START_LNG"); + public final static Property StartLat = new Property(7, double.class, "startLat", false, "START_LAT"); + public final static Property EndLng = new Property(8, double.class, "endLng", false, "END_LNG"); + public final static Property EndLat = new Property(9, double.class, "endLat", false, "END_LAT"); + public final static Property Routes = new Property(10, String.class, "routes", false, "ROUTES"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public InspectionBeanDao(DaoConfig config) { + super(config); + } + + public InspectionBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"INSPECTION_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"NAME\" TEXT," + // 2: name + "\"START_TIME\" TEXT," + // 3: startTime + "\"END_TIME\" TEXT," + // 4: endTime + "\"DATE\" TEXT," + // 5: date + "\"START_LNG\" REAL NOT NULL ," + // 6: startLng + "\"START_LAT\" REAL NOT NULL ," + // 7: startLat + "\"END_LNG\" REAL NOT NULL ," + // 8: endLng + "\"END_LAT\" REAL NOT NULL ," + // 9: endLat + "\"ROUTES\" TEXT," + // 10: routes + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"INSPECTION_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public InspectionBean readEntity(Cursor cursor, int offset) { + InspectionBean entity = new InspectionBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // startTime + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // endTime + cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // date + cursor.getDouble(offset + 6), // startLng + cursor.getDouble(offset + 7), // startLat + cursor.getDouble(offset + 8), // endLng + cursor.getDouble(offset + 9), // endLat + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // routes + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, InspectionBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setStartTime(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setEndTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setDate(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5)); + entity.setStartLng(cursor.getDouble(offset + 6)); + entity.setStartLat(cursor.getDouble(offset + 7)); + entity.setEndLng(cursor.getDouble(offset + 8)); + entity.setEndLat(cursor.getDouble(offset + 9)); + entity.setRoutes(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(InspectionBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(InspectionBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(InspectionBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java new file mode 100644 index 0000000..3f040d3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java @@ -0,0 +1,245 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.TaskEventBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "TASK_EVENT_BEAN". +*/ +public class TaskEventBeanDao extends AbstractDao { + + public static final String TABLENAME = "TASK_EVENT_BEAN"; + + /** + * Properties of entity TaskEventBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property InspectionId = new Property(2, String.class, "inspectionId", false, "INSPECTION_ID"); + public final static Property Name = new Property(3, String.class, "name", false, "NAME"); + public final static Property CreateTime = new Property(4, String.class, "createTime", false, "CREATE_TIME"); + public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); + public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); + public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); + public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); + public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public TaskEventBeanDao(DaoConfig config) { + super(config); + } + + public TaskEventBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"TASK_EVENT_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"INSPECTION_ID\" TEXT," + // 2: inspectionId + "\"NAME\" TEXT," + // 3: name + "\"CREATE_TIME\" TEXT," + // 4: createTime + "\"LNG\" REAL NOT NULL ," + // 5: lng + "\"LAT\" REAL NOT NULL ," + // 6: lat + "\"TYPE\" TEXT," + // 7: type + "\"DATA\" REAL NOT NULL ," + // 8: data + "\"IMAGES\" TEXT," + // 9: images + "\"DESCRIPTION\" TEXT," + // 10: description + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"TASK_EVENT_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public TaskEventBean readEntity(Cursor cursor, int offset) { + TaskEventBean entity = new TaskEventBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // name + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getDouble(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, TaskEventBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setInspectionId(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setName(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setCreateTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setLng(cursor.getDouble(offset + 5)); + entity.setLat(cursor.getDouble(offset + 6)); + entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); + entity.setData(cursor.getDouble(offset + 8)); + entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); + entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(TaskEventBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(TaskEventBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(TaskEventBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt new file mode 100644 index 0000000..dc635a4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt @@ -0,0 +1,41 @@ +package com.casic.birmm.inspect.model + +class EventListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var total = 0 + var rows: MutableList? = + null + + class RowsBean { + /** + * createTime : 2020-12-28 14:56:59 + * data : -1 + * description : ggg + * id : t1609138629320112121 + * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg + * inspectionId : 1609138451543200022 + * lat : 39.915956 + * lng : 116.268596 + * name : sss + * type : 自定义事件 + * user : 超超级管理员 + */ + var createTime: String? = null + var data = 0 + var description: String? = null + var id: String? = null + var images: String? = null + var inspectionId: String? = null + var lat = 0.0 + var lng = 0.0 + var name: String? = null + var type: String? = null + var user: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt deleted file mode 100644 index de499aa..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.birmm.inspect.model - -class EventModel { - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var total = 0 - var rows: MutableList? = - null - - class RowsBean { - /** - * createTime : 2020-12-28 14:56:59 - * data : -1 - * description : ggg - * id : t1609138629320112121 - * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg - * inspectionId : 1609138451543200022 - * lat : 39.915956 - * lng : 116.268596 - * name : sss - * type : 自定义事件 - * user : 超超级管理员 - */ - var createTime: String? = null - var data = 0 - var description: String? = null - var id: String? = null - var images: String? = null - var inspectionId: String? = null - var lat = 0.0 - var lng = 0.0 - var name: String? = null - var type: String? = null - var user: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt new file mode 100644 index 0000000..395b6e8 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt @@ -0,0 +1,43 @@ +package com.casic.birmm.inspect.model + +class InspectListModel { + + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + + var total = 0 + var rows: MutableList? = null + + class RowsBean { + /** + * date : 2021年07月08日 + * endLat : 39.915908 + * endLng : 116.26876 + * endTime : 2021-07-08 11:20:20 + * id : 162570318141612121 + * name : 测试 + * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] + * startLat : 39.913365 + * startLng : 116.269462 + * startTime : 2021-07-08 08:13:01 + * user : 王晓颖 + */ + var date: String? = null + var endLat = 0.0 + var endLng = 0.0 + var endTime: String? = null + var id: String? = null + var name: String? = null + var routes: String? = null + var startLat = 0.0 + var startLng = 0.0 + var startTime: String? = null + var user: String? = null + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt deleted file mode 100644 index 558e716..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.casic.birmm.inspect.model - -class InspectModel { - - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - - var total = 0 - var rows: MutableList? = null - - class RowsBean { - /** - * date : 2021年07月08日 - * endLat : 39.915908 - * endLng : 116.26876 - * endTime : 2021-07-08 11:20:20 - * id : 162570318141612121 - * name : 测试 - * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] - * startLat : 39.913365 - * startLng : 116.269462 - * startTime : 2021-07-08 08:13:01 - * user : 王晓颖 - */ - var date: String? = null - var endLat = 0.0 - var endLng = 0.0 - var endTime: String? = null - var id: String? = null - var name: String? = null - var routes: String? = null - var startLat = 0.0 - var startLng = 0.0 - var startTime: String? = null - var user: String? = null - - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt index ee6f1f6..beb469b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.model +//同巡检Id的事件列表数据模型 class TaskRecordModel { var code = 0 @@ -8,7 +9,7 @@ var isSuccess = false class DataBean { - var list: List? = null + var list: MutableList? = null class ListBean { /** diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt new file mode 100644 index 0000000..8201cb4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt @@ -0,0 +1,89 @@ +package com.casic.birmm.inspect.utils + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.util.Log +import com.casic.birmm.inspect.base.BaseApplication + + +class BroadcastManager private constructor() { + + private var mContext: Context = BaseApplication.instance + private var receiverMap: HashMap = HashMap() + + companion object { + private const val Tag = "BroadcastManager" + + val instance: BroadcastManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + BroadcastManager() + } + } + + /** + * 添加单个Action,广播的初始化 + */ + fun addAction(action: String, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + filter.addAction(action) + mContext.registerReceiver(receiver, filter) + receiverMap[action] = receiver + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 添加多个Action,广播的初始化 + */ + fun addAction(actions: Array, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + actions.forEach { + filter.addAction(it) + receiverMap[it] = receiver + } + mContext.registerReceiver(receiver, filter) + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 发送广播 + * + * @param action 唯一码 + * @param msg 参数 + */ + fun sendBroadcast(action: String, msg: String) { + try { + val intent = Intent() + intent.action = action + intent.putExtra("data", msg) + mContext.sendBroadcast(intent) + Log.d(Tag, "发送广播: $msg") + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 销毁广播 + * + * @param actions action集合 + */ + fun destroy(vararg actions: String) { + try { + actions.forEach { + val receiver = receiverMap[it] + if (receiver != null) { + mContext.unregisterReceiver(receiver) + } + } + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt index 0c9e963..507655b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt @@ -16,13 +16,25 @@ const val BLUETOOTH_ON = 20 const val BLUETOOTH_OFF = 21 const val DEVICE_CONNECTED = 22 - const val DEVICE_DISCONNECTED = 23 + const val DEVICE_CONNECT_FAIL = 23 + const val DEVICE_DISCONNECTED = 24 + const val SEND_SUCCESS = 25 + const val SEND_FAILURE = 26 + const val RECEIVE_SUCCESS = 27 + const val RECEIVE_FAILURE = 28 const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val IMAGE_MINUS_SIZE = 50 * 1024 + const val IMAGE_MINUS_SIZE = 100 * 1024 const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val USER_OBJECT = "userObject" const val OPEN_WARNING = "isOpenWarning" const val AUTO_RECORD = "isRecordLog" + const val INSPECTION_OBJECT = "inspectionObject" + + val ASK_DEV_CODE_COMMAND = byteArrayOf(0x01, 0x0D, 0x0A)// 查询设备编号命令 + val OPEN_TRANSFER_COMMAND = byteArrayOf(0x02, 0x0D, 0x0A) // 开启数据发送命令 + const val SERVICE_UUID = "0003cdd0-0000-1000-8000-00805f9b0131"//连接设备的UUID + const val WRITE_CHARACTERISTIC_UUID = "0003cdd2-0000-1000-8000-00805f9b0131"//写数据特征值UUID + const val READ_CHARACTERISTIC_UUID = "0003cdd1-0000-1000-8000-00805f9b0131"//读数据特征值UUID } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java new file mode 100644 index 0000000..b7077a3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java @@ -0,0 +1,237 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.InspectionBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "INSPECTION_BEAN". +*/ +public class InspectionBeanDao extends AbstractDao { + + public static final String TABLENAME = "INSPECTION_BEAN"; + + /** + * Properties of entity InspectionBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property Name = new Property(2, String.class, "name", false, "NAME"); + public final static Property StartTime = new Property(3, String.class, "startTime", false, "START_TIME"); + public final static Property EndTime = new Property(4, String.class, "endTime", false, "END_TIME"); + public final static Property Date = new Property(5, String.class, "date", false, "DATE"); + public final static Property StartLng = new Property(6, double.class, "startLng", false, "START_LNG"); + public final static Property StartLat = new Property(7, double.class, "startLat", false, "START_LAT"); + public final static Property EndLng = new Property(8, double.class, "endLng", false, "END_LNG"); + public final static Property EndLat = new Property(9, double.class, "endLat", false, "END_LAT"); + public final static Property Routes = new Property(10, String.class, "routes", false, "ROUTES"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public InspectionBeanDao(DaoConfig config) { + super(config); + } + + public InspectionBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"INSPECTION_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"NAME\" TEXT," + // 2: name + "\"START_TIME\" TEXT," + // 3: startTime + "\"END_TIME\" TEXT," + // 4: endTime + "\"DATE\" TEXT," + // 5: date + "\"START_LNG\" REAL NOT NULL ," + // 6: startLng + "\"START_LAT\" REAL NOT NULL ," + // 7: startLat + "\"END_LNG\" REAL NOT NULL ," + // 8: endLng + "\"END_LAT\" REAL NOT NULL ," + // 9: endLat + "\"ROUTES\" TEXT," + // 10: routes + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"INSPECTION_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public InspectionBean readEntity(Cursor cursor, int offset) { + InspectionBean entity = new InspectionBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // startTime + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // endTime + cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // date + cursor.getDouble(offset + 6), // startLng + cursor.getDouble(offset + 7), // startLat + cursor.getDouble(offset + 8), // endLng + cursor.getDouble(offset + 9), // endLat + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // routes + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, InspectionBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setStartTime(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setEndTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setDate(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5)); + entity.setStartLng(cursor.getDouble(offset + 6)); + entity.setStartLat(cursor.getDouble(offset + 7)); + entity.setEndLng(cursor.getDouble(offset + 8)); + entity.setEndLat(cursor.getDouble(offset + 9)); + entity.setRoutes(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(InspectionBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(InspectionBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(InspectionBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java new file mode 100644 index 0000000..3f040d3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java @@ -0,0 +1,245 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.TaskEventBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "TASK_EVENT_BEAN". +*/ +public class TaskEventBeanDao extends AbstractDao { + + public static final String TABLENAME = "TASK_EVENT_BEAN"; + + /** + * Properties of entity TaskEventBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property InspectionId = new Property(2, String.class, "inspectionId", false, "INSPECTION_ID"); + public final static Property Name = new Property(3, String.class, "name", false, "NAME"); + public final static Property CreateTime = new Property(4, String.class, "createTime", false, "CREATE_TIME"); + public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); + public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); + public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); + public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); + public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public TaskEventBeanDao(DaoConfig config) { + super(config); + } + + public TaskEventBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"TASK_EVENT_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"INSPECTION_ID\" TEXT," + // 2: inspectionId + "\"NAME\" TEXT," + // 3: name + "\"CREATE_TIME\" TEXT," + // 4: createTime + "\"LNG\" REAL NOT NULL ," + // 5: lng + "\"LAT\" REAL NOT NULL ," + // 6: lat + "\"TYPE\" TEXT," + // 7: type + "\"DATA\" REAL NOT NULL ," + // 8: data + "\"IMAGES\" TEXT," + // 9: images + "\"DESCRIPTION\" TEXT," + // 10: description + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"TASK_EVENT_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public TaskEventBean readEntity(Cursor cursor, int offset) { + TaskEventBean entity = new TaskEventBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // name + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getDouble(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, TaskEventBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setInspectionId(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setName(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setCreateTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setLng(cursor.getDouble(offset + 5)); + entity.setLat(cursor.getDouble(offset + 6)); + entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); + entity.setData(cursor.getDouble(offset + 8)); + entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); + entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(TaskEventBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(TaskEventBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(TaskEventBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt new file mode 100644 index 0000000..dc635a4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt @@ -0,0 +1,41 @@ +package com.casic.birmm.inspect.model + +class EventListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var total = 0 + var rows: MutableList? = + null + + class RowsBean { + /** + * createTime : 2020-12-28 14:56:59 + * data : -1 + * description : ggg + * id : t1609138629320112121 + * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg + * inspectionId : 1609138451543200022 + * lat : 39.915956 + * lng : 116.268596 + * name : sss + * type : 自定义事件 + * user : 超超级管理员 + */ + var createTime: String? = null + var data = 0 + var description: String? = null + var id: String? = null + var images: String? = null + var inspectionId: String? = null + var lat = 0.0 + var lng = 0.0 + var name: String? = null + var type: String? = null + var user: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt deleted file mode 100644 index de499aa..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.birmm.inspect.model - -class EventModel { - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var total = 0 - var rows: MutableList? = - null - - class RowsBean { - /** - * createTime : 2020-12-28 14:56:59 - * data : -1 - * description : ggg - * id : t1609138629320112121 - * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg - * inspectionId : 1609138451543200022 - * lat : 39.915956 - * lng : 116.268596 - * name : sss - * type : 自定义事件 - * user : 超超级管理员 - */ - var createTime: String? = null - var data = 0 - var description: String? = null - var id: String? = null - var images: String? = null - var inspectionId: String? = null - var lat = 0.0 - var lng = 0.0 - var name: String? = null - var type: String? = null - var user: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt new file mode 100644 index 0000000..395b6e8 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt @@ -0,0 +1,43 @@ +package com.casic.birmm.inspect.model + +class InspectListModel { + + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + + var total = 0 + var rows: MutableList? = null + + class RowsBean { + /** + * date : 2021年07月08日 + * endLat : 39.915908 + * endLng : 116.26876 + * endTime : 2021-07-08 11:20:20 + * id : 162570318141612121 + * name : 测试 + * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] + * startLat : 39.913365 + * startLng : 116.269462 + * startTime : 2021-07-08 08:13:01 + * user : 王晓颖 + */ + var date: String? = null + var endLat = 0.0 + var endLng = 0.0 + var endTime: String? = null + var id: String? = null + var name: String? = null + var routes: String? = null + var startLat = 0.0 + var startLng = 0.0 + var startTime: String? = null + var user: String? = null + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt deleted file mode 100644 index 558e716..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.casic.birmm.inspect.model - -class InspectModel { - - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - - var total = 0 - var rows: MutableList? = null - - class RowsBean { - /** - * date : 2021年07月08日 - * endLat : 39.915908 - * endLng : 116.26876 - * endTime : 2021-07-08 11:20:20 - * id : 162570318141612121 - * name : 测试 - * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] - * startLat : 39.913365 - * startLng : 116.269462 - * startTime : 2021-07-08 08:13:01 - * user : 王晓颖 - */ - var date: String? = null - var endLat = 0.0 - var endLng = 0.0 - var endTime: String? = null - var id: String? = null - var name: String? = null - var routes: String? = null - var startLat = 0.0 - var startLng = 0.0 - var startTime: String? = null - var user: String? = null - - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt index ee6f1f6..beb469b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.model +//同巡检Id的事件列表数据模型 class TaskRecordModel { var code = 0 @@ -8,7 +9,7 @@ var isSuccess = false class DataBean { - var list: List? = null + var list: MutableList? = null class ListBean { /** diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt new file mode 100644 index 0000000..8201cb4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt @@ -0,0 +1,89 @@ +package com.casic.birmm.inspect.utils + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.util.Log +import com.casic.birmm.inspect.base.BaseApplication + + +class BroadcastManager private constructor() { + + private var mContext: Context = BaseApplication.instance + private var receiverMap: HashMap = HashMap() + + companion object { + private const val Tag = "BroadcastManager" + + val instance: BroadcastManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + BroadcastManager() + } + } + + /** + * 添加单个Action,广播的初始化 + */ + fun addAction(action: String, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + filter.addAction(action) + mContext.registerReceiver(receiver, filter) + receiverMap[action] = receiver + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 添加多个Action,广播的初始化 + */ + fun addAction(actions: Array, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + actions.forEach { + filter.addAction(it) + receiverMap[it] = receiver + } + mContext.registerReceiver(receiver, filter) + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 发送广播 + * + * @param action 唯一码 + * @param msg 参数 + */ + fun sendBroadcast(action: String, msg: String) { + try { + val intent = Intent() + intent.action = action + intent.putExtra("data", msg) + mContext.sendBroadcast(intent) + Log.d(Tag, "发送广播: $msg") + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 销毁广播 + * + * @param actions action集合 + */ + fun destroy(vararg actions: String) { + try { + actions.forEach { + val receiver = receiverMap[it] + if (receiver != null) { + mContext.unregisterReceiver(receiver) + } + } + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt index 0c9e963..507655b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt @@ -16,13 +16,25 @@ const val BLUETOOTH_ON = 20 const val BLUETOOTH_OFF = 21 const val DEVICE_CONNECTED = 22 - const val DEVICE_DISCONNECTED = 23 + const val DEVICE_CONNECT_FAIL = 23 + const val DEVICE_DISCONNECTED = 24 + const val SEND_SUCCESS = 25 + const val SEND_FAILURE = 26 + const val RECEIVE_SUCCESS = 27 + const val RECEIVE_FAILURE = 28 const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val IMAGE_MINUS_SIZE = 50 * 1024 + const val IMAGE_MINUS_SIZE = 100 * 1024 const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val USER_OBJECT = "userObject" const val OPEN_WARNING = "isOpenWarning" const val AUTO_RECORD = "isRecordLog" + const val INSPECTION_OBJECT = "inspectionObject" + + val ASK_DEV_CODE_COMMAND = byteArrayOf(0x01, 0x0D, 0x0A)// 查询设备编号命令 + val OPEN_TRANSFER_COMMAND = byteArrayOf(0x02, 0x0D, 0x0A) // 开启数据发送命令 + const val SERVICE_UUID = "0003cdd0-0000-1000-8000-00805f9b0131"//连接设备的UUID + const val WRITE_CHARACTERISTIC_UUID = "0003cdd2-0000-1000-8000-00805f9b0131"//写数据特征值UUID + const val READ_CHARACTERISTIC_UUID = "0003cdd1-0000-1000-8000-00805f9b0131"//读数据特征值UUID } \ No newline at end of file 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 new file mode 100644 index 0000000..c7fba84 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -0,0 +1,123 @@ +package com.casic.birmm.inspect.utils + +import com.casic.birmm.inspect.base.BaseApplication +import com.casic.birmm.inspect.bean.InspectionBean +import com.casic.birmm.inspect.bean.TaskEventBean +import com.casic.birmm.inspect.greendao.TaskEventBeanDao +import com.casic.birmm.inspect.model.TaskRecordModel + +class DataBaseManager private constructor() { + + companion object { + //Kotlin委托模式双重锁单例 + val instance: DataBaseManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + DataBaseManager() + } + } + + /** + * 保存巡检记录到本地 + * */ + fun insertData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.insert(bean) + } + + /** + * 删除本地巡检记录 + * */ + fun deleteData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllInspection() { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.update(bean) + } + + /** + * 查询所有数据 + */ + fun queryAllInspection(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao?.queryBuilder() + ?.build()?.list() + } + + /**********************************************************************************************/ + + /** + * 保存事件记录到本地 + * */ + fun insertData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.insert(bean) + } + + /** + * 删除本地事件记录 + * */ + fun deleteData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllTask() { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.update(bean) + } + + /** + * 根据巡检Id查询事件数据 + */ + fun queryTaskByInspection(inspectionId: String): MutableList? { + val dataBeans: MutableList = ArrayList() + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.where(TaskEventBeanDao.Properties.InspectionId.eq(inspectionId)) + ?.orderDesc(TaskEventBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + ?.build() + ?.list()?.let { + it.forEach { taskBean -> + val listBean = TaskRecordModel.DataBean.ListBean() + listBean.createTime = taskBean.createTime + listBean.data = taskBean.data.toInt() + listBean.description = taskBean.description + listBean.id = taskBean.serverMainId + listBean.images = taskBean.images + listBean.inspectionId = taskBean.inspectionId + listBean.lat = taskBean.lat + listBean.lng = taskBean.lng + listBean.name = taskBean.name + listBean.type = taskBean.type + listBean.user = taskBean.user + dataBeans.add(listBean) + } + } + return dataBeans + } + + /** + * 查询所有数据 + */ + fun queryAllTask(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.build() + ?.list() + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java new file mode 100644 index 0000000..b7077a3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java @@ -0,0 +1,237 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.InspectionBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "INSPECTION_BEAN". +*/ +public class InspectionBeanDao extends AbstractDao { + + public static final String TABLENAME = "INSPECTION_BEAN"; + + /** + * Properties of entity InspectionBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property Name = new Property(2, String.class, "name", false, "NAME"); + public final static Property StartTime = new Property(3, String.class, "startTime", false, "START_TIME"); + public final static Property EndTime = new Property(4, String.class, "endTime", false, "END_TIME"); + public final static Property Date = new Property(5, String.class, "date", false, "DATE"); + public final static Property StartLng = new Property(6, double.class, "startLng", false, "START_LNG"); + public final static Property StartLat = new Property(7, double.class, "startLat", false, "START_LAT"); + public final static Property EndLng = new Property(8, double.class, "endLng", false, "END_LNG"); + public final static Property EndLat = new Property(9, double.class, "endLat", false, "END_LAT"); + public final static Property Routes = new Property(10, String.class, "routes", false, "ROUTES"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public InspectionBeanDao(DaoConfig config) { + super(config); + } + + public InspectionBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"INSPECTION_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"NAME\" TEXT," + // 2: name + "\"START_TIME\" TEXT," + // 3: startTime + "\"END_TIME\" TEXT," + // 4: endTime + "\"DATE\" TEXT," + // 5: date + "\"START_LNG\" REAL NOT NULL ," + // 6: startLng + "\"START_LAT\" REAL NOT NULL ," + // 7: startLat + "\"END_LNG\" REAL NOT NULL ," + // 8: endLng + "\"END_LAT\" REAL NOT NULL ," + // 9: endLat + "\"ROUTES\" TEXT," + // 10: routes + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"INSPECTION_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public InspectionBean readEntity(Cursor cursor, int offset) { + InspectionBean entity = new InspectionBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // startTime + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // endTime + cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // date + cursor.getDouble(offset + 6), // startLng + cursor.getDouble(offset + 7), // startLat + cursor.getDouble(offset + 8), // endLng + cursor.getDouble(offset + 9), // endLat + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // routes + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, InspectionBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setStartTime(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setEndTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setDate(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5)); + entity.setStartLng(cursor.getDouble(offset + 6)); + entity.setStartLat(cursor.getDouble(offset + 7)); + entity.setEndLng(cursor.getDouble(offset + 8)); + entity.setEndLat(cursor.getDouble(offset + 9)); + entity.setRoutes(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(InspectionBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(InspectionBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(InspectionBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java new file mode 100644 index 0000000..3f040d3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java @@ -0,0 +1,245 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.TaskEventBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "TASK_EVENT_BEAN". +*/ +public class TaskEventBeanDao extends AbstractDao { + + public static final String TABLENAME = "TASK_EVENT_BEAN"; + + /** + * Properties of entity TaskEventBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property InspectionId = new Property(2, String.class, "inspectionId", false, "INSPECTION_ID"); + public final static Property Name = new Property(3, String.class, "name", false, "NAME"); + public final static Property CreateTime = new Property(4, String.class, "createTime", false, "CREATE_TIME"); + public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); + public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); + public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); + public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); + public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public TaskEventBeanDao(DaoConfig config) { + super(config); + } + + public TaskEventBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"TASK_EVENT_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"INSPECTION_ID\" TEXT," + // 2: inspectionId + "\"NAME\" TEXT," + // 3: name + "\"CREATE_TIME\" TEXT," + // 4: createTime + "\"LNG\" REAL NOT NULL ," + // 5: lng + "\"LAT\" REAL NOT NULL ," + // 6: lat + "\"TYPE\" TEXT," + // 7: type + "\"DATA\" REAL NOT NULL ," + // 8: data + "\"IMAGES\" TEXT," + // 9: images + "\"DESCRIPTION\" TEXT," + // 10: description + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"TASK_EVENT_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public TaskEventBean readEntity(Cursor cursor, int offset) { + TaskEventBean entity = new TaskEventBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // name + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getDouble(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, TaskEventBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setInspectionId(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setName(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setCreateTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setLng(cursor.getDouble(offset + 5)); + entity.setLat(cursor.getDouble(offset + 6)); + entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); + entity.setData(cursor.getDouble(offset + 8)); + entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); + entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(TaskEventBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(TaskEventBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(TaskEventBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt new file mode 100644 index 0000000..dc635a4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt @@ -0,0 +1,41 @@ +package com.casic.birmm.inspect.model + +class EventListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var total = 0 + var rows: MutableList? = + null + + class RowsBean { + /** + * createTime : 2020-12-28 14:56:59 + * data : -1 + * description : ggg + * id : t1609138629320112121 + * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg + * inspectionId : 1609138451543200022 + * lat : 39.915956 + * lng : 116.268596 + * name : sss + * type : 自定义事件 + * user : 超超级管理员 + */ + var createTime: String? = null + var data = 0 + var description: String? = null + var id: String? = null + var images: String? = null + var inspectionId: String? = null + var lat = 0.0 + var lng = 0.0 + var name: String? = null + var type: String? = null + var user: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt deleted file mode 100644 index de499aa..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.birmm.inspect.model - -class EventModel { - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var total = 0 - var rows: MutableList? = - null - - class RowsBean { - /** - * createTime : 2020-12-28 14:56:59 - * data : -1 - * description : ggg - * id : t1609138629320112121 - * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg - * inspectionId : 1609138451543200022 - * lat : 39.915956 - * lng : 116.268596 - * name : sss - * type : 自定义事件 - * user : 超超级管理员 - */ - var createTime: String? = null - var data = 0 - var description: String? = null - var id: String? = null - var images: String? = null - var inspectionId: String? = null - var lat = 0.0 - var lng = 0.0 - var name: String? = null - var type: String? = null - var user: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt new file mode 100644 index 0000000..395b6e8 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt @@ -0,0 +1,43 @@ +package com.casic.birmm.inspect.model + +class InspectListModel { + + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + + var total = 0 + var rows: MutableList? = null + + class RowsBean { + /** + * date : 2021年07月08日 + * endLat : 39.915908 + * endLng : 116.26876 + * endTime : 2021-07-08 11:20:20 + * id : 162570318141612121 + * name : 测试 + * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] + * startLat : 39.913365 + * startLng : 116.269462 + * startTime : 2021-07-08 08:13:01 + * user : 王晓颖 + */ + var date: String? = null + var endLat = 0.0 + var endLng = 0.0 + var endTime: String? = null + var id: String? = null + var name: String? = null + var routes: String? = null + var startLat = 0.0 + var startLng = 0.0 + var startTime: String? = null + var user: String? = null + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt deleted file mode 100644 index 558e716..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.casic.birmm.inspect.model - -class InspectModel { - - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - - var total = 0 - var rows: MutableList? = null - - class RowsBean { - /** - * date : 2021年07月08日 - * endLat : 39.915908 - * endLng : 116.26876 - * endTime : 2021-07-08 11:20:20 - * id : 162570318141612121 - * name : 测试 - * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] - * startLat : 39.913365 - * startLng : 116.269462 - * startTime : 2021-07-08 08:13:01 - * user : 王晓颖 - */ - var date: String? = null - var endLat = 0.0 - var endLng = 0.0 - var endTime: String? = null - var id: String? = null - var name: String? = null - var routes: String? = null - var startLat = 0.0 - var startLng = 0.0 - var startTime: String? = null - var user: String? = null - - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt index ee6f1f6..beb469b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.model +//同巡检Id的事件列表数据模型 class TaskRecordModel { var code = 0 @@ -8,7 +9,7 @@ var isSuccess = false class DataBean { - var list: List? = null + var list: MutableList? = null class ListBean { /** diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt new file mode 100644 index 0000000..8201cb4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt @@ -0,0 +1,89 @@ +package com.casic.birmm.inspect.utils + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.util.Log +import com.casic.birmm.inspect.base.BaseApplication + + +class BroadcastManager private constructor() { + + private var mContext: Context = BaseApplication.instance + private var receiverMap: HashMap = HashMap() + + companion object { + private const val Tag = "BroadcastManager" + + val instance: BroadcastManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + BroadcastManager() + } + } + + /** + * 添加单个Action,广播的初始化 + */ + fun addAction(action: String, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + filter.addAction(action) + mContext.registerReceiver(receiver, filter) + receiverMap[action] = receiver + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 添加多个Action,广播的初始化 + */ + fun addAction(actions: Array, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + actions.forEach { + filter.addAction(it) + receiverMap[it] = receiver + } + mContext.registerReceiver(receiver, filter) + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 发送广播 + * + * @param action 唯一码 + * @param msg 参数 + */ + fun sendBroadcast(action: String, msg: String) { + try { + val intent = Intent() + intent.action = action + intent.putExtra("data", msg) + mContext.sendBroadcast(intent) + Log.d(Tag, "发送广播: $msg") + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 销毁广播 + * + * @param actions action集合 + */ + fun destroy(vararg actions: String) { + try { + actions.forEach { + val receiver = receiverMap[it] + if (receiver != null) { + mContext.unregisterReceiver(receiver) + } + } + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt index 0c9e963..507655b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt @@ -16,13 +16,25 @@ const val BLUETOOTH_ON = 20 const val BLUETOOTH_OFF = 21 const val DEVICE_CONNECTED = 22 - const val DEVICE_DISCONNECTED = 23 + const val DEVICE_CONNECT_FAIL = 23 + const val DEVICE_DISCONNECTED = 24 + const val SEND_SUCCESS = 25 + const val SEND_FAILURE = 26 + const val RECEIVE_SUCCESS = 27 + const val RECEIVE_FAILURE = 28 const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val IMAGE_MINUS_SIZE = 50 * 1024 + const val IMAGE_MINUS_SIZE = 100 * 1024 const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val USER_OBJECT = "userObject" const val OPEN_WARNING = "isOpenWarning" const val AUTO_RECORD = "isRecordLog" + const val INSPECTION_OBJECT = "inspectionObject" + + val ASK_DEV_CODE_COMMAND = byteArrayOf(0x01, 0x0D, 0x0A)// 查询设备编号命令 + val OPEN_TRANSFER_COMMAND = byteArrayOf(0x02, 0x0D, 0x0A) // 开启数据发送命令 + const val SERVICE_UUID = "0003cdd0-0000-1000-8000-00805f9b0131"//连接设备的UUID + const val WRITE_CHARACTERISTIC_UUID = "0003cdd2-0000-1000-8000-00805f9b0131"//写数据特征值UUID + const val READ_CHARACTERISTIC_UUID = "0003cdd1-0000-1000-8000-00805f9b0131"//读数据特征值UUID } \ No newline at end of file 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 new file mode 100644 index 0000000..c7fba84 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -0,0 +1,123 @@ +package com.casic.birmm.inspect.utils + +import com.casic.birmm.inspect.base.BaseApplication +import com.casic.birmm.inspect.bean.InspectionBean +import com.casic.birmm.inspect.bean.TaskEventBean +import com.casic.birmm.inspect.greendao.TaskEventBeanDao +import com.casic.birmm.inspect.model.TaskRecordModel + +class DataBaseManager private constructor() { + + companion object { + //Kotlin委托模式双重锁单例 + val instance: DataBaseManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + DataBaseManager() + } + } + + /** + * 保存巡检记录到本地 + * */ + fun insertData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.insert(bean) + } + + /** + * 删除本地巡检记录 + * */ + fun deleteData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllInspection() { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.update(bean) + } + + /** + * 查询所有数据 + */ + fun queryAllInspection(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao?.queryBuilder() + ?.build()?.list() + } + + /**********************************************************************************************/ + + /** + * 保存事件记录到本地 + * */ + fun insertData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.insert(bean) + } + + /** + * 删除本地事件记录 + * */ + fun deleteData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllTask() { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.update(bean) + } + + /** + * 根据巡检Id查询事件数据 + */ + fun queryTaskByInspection(inspectionId: String): MutableList? { + val dataBeans: MutableList = ArrayList() + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.where(TaskEventBeanDao.Properties.InspectionId.eq(inspectionId)) + ?.orderDesc(TaskEventBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + ?.build() + ?.list()?.let { + it.forEach { taskBean -> + val listBean = TaskRecordModel.DataBean.ListBean() + listBean.createTime = taskBean.createTime + listBean.data = taskBean.data.toInt() + listBean.description = taskBean.description + listBean.id = taskBean.serverMainId + listBean.images = taskBean.images + listBean.inspectionId = taskBean.inspectionId + listBean.lat = taskBean.lat + listBean.lng = taskBean.lng + listBean.name = taskBean.name + listBean.type = taskBean.type + listBean.user = taskBean.user + dataBeans.add(listBean) + } + } + return dataBeans + } + + /** + * 查询所有数据 + */ + fun queryAllTask(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.build() + ?.list() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt new file mode 100644 index 0000000..fa53beb --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt @@ -0,0 +1,34 @@ +package com.casic.birmm.inspect.utils + +import android.content.Context +import android.util.Log +import com.amap.api.location.AMapLocationClient +import com.amap.api.location.AMapLocationClientOption +import com.casic.birmm.inspect.utils.callback.ILocationListener + +object LocationHelper { + private const val Tag = "LocationHelper" + + fun obtainCurrentLocation(context: Context, listener: ILocationListener) { + val locationClient = AMapLocationClient(context) + val locationOption = AMapLocationClientOption() + locationOption.locationMode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy; + locationOption.isNeedAddress = true//设置是否返回地址信息(默认返回地址信息) + locationOption.isOnceLocation = true//设置是否只定位一次,默认为false + locationOption.isMockEnable = false//设置是否允许模拟位置,默认为false,不允许模拟位置 + locationOption.isLocationCacheEnable = false //可选,设置是否使用缓存定位,默认为true + locationClient.setLocationOption(locationOption) + locationClient.setLocationListener { + if (it != null) { + if (it.errorCode == 0) { + listener.onAMapLocationGet(it) + } else { + Log.e( + Tag, "location Error, ErrCode:" + it.errorCode + ", errInfo:" + it.errorInfo + ) + } + } + } + locationClient.startLocation() + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java new file mode 100644 index 0000000..b7077a3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java @@ -0,0 +1,237 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.InspectionBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "INSPECTION_BEAN". +*/ +public class InspectionBeanDao extends AbstractDao { + + public static final String TABLENAME = "INSPECTION_BEAN"; + + /** + * Properties of entity InspectionBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property Name = new Property(2, String.class, "name", false, "NAME"); + public final static Property StartTime = new Property(3, String.class, "startTime", false, "START_TIME"); + public final static Property EndTime = new Property(4, String.class, "endTime", false, "END_TIME"); + public final static Property Date = new Property(5, String.class, "date", false, "DATE"); + public final static Property StartLng = new Property(6, double.class, "startLng", false, "START_LNG"); + public final static Property StartLat = new Property(7, double.class, "startLat", false, "START_LAT"); + public final static Property EndLng = new Property(8, double.class, "endLng", false, "END_LNG"); + public final static Property EndLat = new Property(9, double.class, "endLat", false, "END_LAT"); + public final static Property Routes = new Property(10, String.class, "routes", false, "ROUTES"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public InspectionBeanDao(DaoConfig config) { + super(config); + } + + public InspectionBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"INSPECTION_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"NAME\" TEXT," + // 2: name + "\"START_TIME\" TEXT," + // 3: startTime + "\"END_TIME\" TEXT," + // 4: endTime + "\"DATE\" TEXT," + // 5: date + "\"START_LNG\" REAL NOT NULL ," + // 6: startLng + "\"START_LAT\" REAL NOT NULL ," + // 7: startLat + "\"END_LNG\" REAL NOT NULL ," + // 8: endLng + "\"END_LAT\" REAL NOT NULL ," + // 9: endLat + "\"ROUTES\" TEXT," + // 10: routes + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"INSPECTION_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public InspectionBean readEntity(Cursor cursor, int offset) { + InspectionBean entity = new InspectionBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // startTime + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // endTime + cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // date + cursor.getDouble(offset + 6), // startLng + cursor.getDouble(offset + 7), // startLat + cursor.getDouble(offset + 8), // endLng + cursor.getDouble(offset + 9), // endLat + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // routes + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, InspectionBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setStartTime(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setEndTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setDate(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5)); + entity.setStartLng(cursor.getDouble(offset + 6)); + entity.setStartLat(cursor.getDouble(offset + 7)); + entity.setEndLng(cursor.getDouble(offset + 8)); + entity.setEndLat(cursor.getDouble(offset + 9)); + entity.setRoutes(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(InspectionBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(InspectionBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(InspectionBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java new file mode 100644 index 0000000..3f040d3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java @@ -0,0 +1,245 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.TaskEventBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "TASK_EVENT_BEAN". +*/ +public class TaskEventBeanDao extends AbstractDao { + + public static final String TABLENAME = "TASK_EVENT_BEAN"; + + /** + * Properties of entity TaskEventBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property InspectionId = new Property(2, String.class, "inspectionId", false, "INSPECTION_ID"); + public final static Property Name = new Property(3, String.class, "name", false, "NAME"); + public final static Property CreateTime = new Property(4, String.class, "createTime", false, "CREATE_TIME"); + public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); + public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); + public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); + public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); + public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public TaskEventBeanDao(DaoConfig config) { + super(config); + } + + public TaskEventBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"TASK_EVENT_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"INSPECTION_ID\" TEXT," + // 2: inspectionId + "\"NAME\" TEXT," + // 3: name + "\"CREATE_TIME\" TEXT," + // 4: createTime + "\"LNG\" REAL NOT NULL ," + // 5: lng + "\"LAT\" REAL NOT NULL ," + // 6: lat + "\"TYPE\" TEXT," + // 7: type + "\"DATA\" REAL NOT NULL ," + // 8: data + "\"IMAGES\" TEXT," + // 9: images + "\"DESCRIPTION\" TEXT," + // 10: description + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"TASK_EVENT_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public TaskEventBean readEntity(Cursor cursor, int offset) { + TaskEventBean entity = new TaskEventBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // name + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getDouble(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, TaskEventBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setInspectionId(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setName(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setCreateTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setLng(cursor.getDouble(offset + 5)); + entity.setLat(cursor.getDouble(offset + 6)); + entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); + entity.setData(cursor.getDouble(offset + 8)); + entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); + entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(TaskEventBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(TaskEventBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(TaskEventBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt new file mode 100644 index 0000000..dc635a4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt @@ -0,0 +1,41 @@ +package com.casic.birmm.inspect.model + +class EventListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var total = 0 + var rows: MutableList? = + null + + class RowsBean { + /** + * createTime : 2020-12-28 14:56:59 + * data : -1 + * description : ggg + * id : t1609138629320112121 + * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg + * inspectionId : 1609138451543200022 + * lat : 39.915956 + * lng : 116.268596 + * name : sss + * type : 自定义事件 + * user : 超超级管理员 + */ + var createTime: String? = null + var data = 0 + var description: String? = null + var id: String? = null + var images: String? = null + var inspectionId: String? = null + var lat = 0.0 + var lng = 0.0 + var name: String? = null + var type: String? = null + var user: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt deleted file mode 100644 index de499aa..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.birmm.inspect.model - -class EventModel { - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var total = 0 - var rows: MutableList? = - null - - class RowsBean { - /** - * createTime : 2020-12-28 14:56:59 - * data : -1 - * description : ggg - * id : t1609138629320112121 - * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg - * inspectionId : 1609138451543200022 - * lat : 39.915956 - * lng : 116.268596 - * name : sss - * type : 自定义事件 - * user : 超超级管理员 - */ - var createTime: String? = null - var data = 0 - var description: String? = null - var id: String? = null - var images: String? = null - var inspectionId: String? = null - var lat = 0.0 - var lng = 0.0 - var name: String? = null - var type: String? = null - var user: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt new file mode 100644 index 0000000..395b6e8 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt @@ -0,0 +1,43 @@ +package com.casic.birmm.inspect.model + +class InspectListModel { + + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + + var total = 0 + var rows: MutableList? = null + + class RowsBean { + /** + * date : 2021年07月08日 + * endLat : 39.915908 + * endLng : 116.26876 + * endTime : 2021-07-08 11:20:20 + * id : 162570318141612121 + * name : 测试 + * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] + * startLat : 39.913365 + * startLng : 116.269462 + * startTime : 2021-07-08 08:13:01 + * user : 王晓颖 + */ + var date: String? = null + var endLat = 0.0 + var endLng = 0.0 + var endTime: String? = null + var id: String? = null + var name: String? = null + var routes: String? = null + var startLat = 0.0 + var startLng = 0.0 + var startTime: String? = null + var user: String? = null + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt deleted file mode 100644 index 558e716..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.casic.birmm.inspect.model - -class InspectModel { - - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - - var total = 0 - var rows: MutableList? = null - - class RowsBean { - /** - * date : 2021年07月08日 - * endLat : 39.915908 - * endLng : 116.26876 - * endTime : 2021-07-08 11:20:20 - * id : 162570318141612121 - * name : 测试 - * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] - * startLat : 39.913365 - * startLng : 116.269462 - * startTime : 2021-07-08 08:13:01 - * user : 王晓颖 - */ - var date: String? = null - var endLat = 0.0 - var endLng = 0.0 - var endTime: String? = null - var id: String? = null - var name: String? = null - var routes: String? = null - var startLat = 0.0 - var startLng = 0.0 - var startTime: String? = null - var user: String? = null - - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt index ee6f1f6..beb469b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.model +//同巡检Id的事件列表数据模型 class TaskRecordModel { var code = 0 @@ -8,7 +9,7 @@ var isSuccess = false class DataBean { - var list: List? = null + var list: MutableList? = null class ListBean { /** diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt new file mode 100644 index 0000000..8201cb4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt @@ -0,0 +1,89 @@ +package com.casic.birmm.inspect.utils + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.util.Log +import com.casic.birmm.inspect.base.BaseApplication + + +class BroadcastManager private constructor() { + + private var mContext: Context = BaseApplication.instance + private var receiverMap: HashMap = HashMap() + + companion object { + private const val Tag = "BroadcastManager" + + val instance: BroadcastManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + BroadcastManager() + } + } + + /** + * 添加单个Action,广播的初始化 + */ + fun addAction(action: String, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + filter.addAction(action) + mContext.registerReceiver(receiver, filter) + receiverMap[action] = receiver + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 添加多个Action,广播的初始化 + */ + fun addAction(actions: Array, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + actions.forEach { + filter.addAction(it) + receiverMap[it] = receiver + } + mContext.registerReceiver(receiver, filter) + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 发送广播 + * + * @param action 唯一码 + * @param msg 参数 + */ + fun sendBroadcast(action: String, msg: String) { + try { + val intent = Intent() + intent.action = action + intent.putExtra("data", msg) + mContext.sendBroadcast(intent) + Log.d(Tag, "发送广播: $msg") + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 销毁广播 + * + * @param actions action集合 + */ + fun destroy(vararg actions: String) { + try { + actions.forEach { + val receiver = receiverMap[it] + if (receiver != null) { + mContext.unregisterReceiver(receiver) + } + } + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt index 0c9e963..507655b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt @@ -16,13 +16,25 @@ const val BLUETOOTH_ON = 20 const val BLUETOOTH_OFF = 21 const val DEVICE_CONNECTED = 22 - const val DEVICE_DISCONNECTED = 23 + const val DEVICE_CONNECT_FAIL = 23 + const val DEVICE_DISCONNECTED = 24 + const val SEND_SUCCESS = 25 + const val SEND_FAILURE = 26 + const val RECEIVE_SUCCESS = 27 + const val RECEIVE_FAILURE = 28 const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val IMAGE_MINUS_SIZE = 50 * 1024 + const val IMAGE_MINUS_SIZE = 100 * 1024 const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val USER_OBJECT = "userObject" const val OPEN_WARNING = "isOpenWarning" const val AUTO_RECORD = "isRecordLog" + const val INSPECTION_OBJECT = "inspectionObject" + + val ASK_DEV_CODE_COMMAND = byteArrayOf(0x01, 0x0D, 0x0A)// 查询设备编号命令 + val OPEN_TRANSFER_COMMAND = byteArrayOf(0x02, 0x0D, 0x0A) // 开启数据发送命令 + const val SERVICE_UUID = "0003cdd0-0000-1000-8000-00805f9b0131"//连接设备的UUID + const val WRITE_CHARACTERISTIC_UUID = "0003cdd2-0000-1000-8000-00805f9b0131"//写数据特征值UUID + const val READ_CHARACTERISTIC_UUID = "0003cdd1-0000-1000-8000-00805f9b0131"//读数据特征值UUID } \ No newline at end of file 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 new file mode 100644 index 0000000..c7fba84 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -0,0 +1,123 @@ +package com.casic.birmm.inspect.utils + +import com.casic.birmm.inspect.base.BaseApplication +import com.casic.birmm.inspect.bean.InspectionBean +import com.casic.birmm.inspect.bean.TaskEventBean +import com.casic.birmm.inspect.greendao.TaskEventBeanDao +import com.casic.birmm.inspect.model.TaskRecordModel + +class DataBaseManager private constructor() { + + companion object { + //Kotlin委托模式双重锁单例 + val instance: DataBaseManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + DataBaseManager() + } + } + + /** + * 保存巡检记录到本地 + * */ + fun insertData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.insert(bean) + } + + /** + * 删除本地巡检记录 + * */ + fun deleteData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllInspection() { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.update(bean) + } + + /** + * 查询所有数据 + */ + fun queryAllInspection(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao?.queryBuilder() + ?.build()?.list() + } + + /**********************************************************************************************/ + + /** + * 保存事件记录到本地 + * */ + fun insertData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.insert(bean) + } + + /** + * 删除本地事件记录 + * */ + fun deleteData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllTask() { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.update(bean) + } + + /** + * 根据巡检Id查询事件数据 + */ + fun queryTaskByInspection(inspectionId: String): MutableList? { + val dataBeans: MutableList = ArrayList() + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.where(TaskEventBeanDao.Properties.InspectionId.eq(inspectionId)) + ?.orderDesc(TaskEventBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + ?.build() + ?.list()?.let { + it.forEach { taskBean -> + val listBean = TaskRecordModel.DataBean.ListBean() + listBean.createTime = taskBean.createTime + listBean.data = taskBean.data.toInt() + listBean.description = taskBean.description + listBean.id = taskBean.serverMainId + listBean.images = taskBean.images + listBean.inspectionId = taskBean.inspectionId + listBean.lat = taskBean.lat + listBean.lng = taskBean.lng + listBean.name = taskBean.name + listBean.type = taskBean.type + listBean.user = taskBean.user + dataBeans.add(listBean) + } + } + return dataBeans + } + + /** + * 查询所有数据 + */ + fun queryAllTask(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.build() + ?.list() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt new file mode 100644 index 0000000..fa53beb --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt @@ -0,0 +1,34 @@ +package com.casic.birmm.inspect.utils + +import android.content.Context +import android.util.Log +import com.amap.api.location.AMapLocationClient +import com.amap.api.location.AMapLocationClientOption +import com.casic.birmm.inspect.utils.callback.ILocationListener + +object LocationHelper { + private const val Tag = "LocationHelper" + + fun obtainCurrentLocation(context: Context, listener: ILocationListener) { + val locationClient = AMapLocationClient(context) + val locationOption = AMapLocationClientOption() + locationOption.locationMode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy; + locationOption.isNeedAddress = true//设置是否返回地址信息(默认返回地址信息) + locationOption.isOnceLocation = true//设置是否只定位一次,默认为false + locationOption.isMockEnable = false//设置是否允许模拟位置,默认为false,不允许模拟位置 + locationOption.isLocationCacheEnable = false //可选,设置是否使用缓存定位,默认为true + locationClient.setLocationOption(locationOption) + locationClient.setLocationListener { + if (it != null) { + if (it.errorCode == 0) { + listener.onAMapLocationGet(it) + } else { + Log.e( + Tag, "location Error, ErrCode:" + it.errorCode + ", errInfo:" + it.errorInfo + ) + } + } + } + locationClient.startLocation() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt new file mode 100644 index 0000000..a4def44 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt @@ -0,0 +1,8 @@ +package com.casic.birmm.inspect.utils.callback + +import com.amap.api.location.AMapLocation + + +interface ILocationListener { + fun onAMapLocationGet(aMapLocation: AMapLocation) //高德定位数据 +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java new file mode 100644 index 0000000..b7077a3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java @@ -0,0 +1,237 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.InspectionBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "INSPECTION_BEAN". +*/ +public class InspectionBeanDao extends AbstractDao { + + public static final String TABLENAME = "INSPECTION_BEAN"; + + /** + * Properties of entity InspectionBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property Name = new Property(2, String.class, "name", false, "NAME"); + public final static Property StartTime = new Property(3, String.class, "startTime", false, "START_TIME"); + public final static Property EndTime = new Property(4, String.class, "endTime", false, "END_TIME"); + public final static Property Date = new Property(5, String.class, "date", false, "DATE"); + public final static Property StartLng = new Property(6, double.class, "startLng", false, "START_LNG"); + public final static Property StartLat = new Property(7, double.class, "startLat", false, "START_LAT"); + public final static Property EndLng = new Property(8, double.class, "endLng", false, "END_LNG"); + public final static Property EndLat = new Property(9, double.class, "endLat", false, "END_LAT"); + public final static Property Routes = new Property(10, String.class, "routes", false, "ROUTES"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public InspectionBeanDao(DaoConfig config) { + super(config); + } + + public InspectionBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"INSPECTION_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"NAME\" TEXT," + // 2: name + "\"START_TIME\" TEXT," + // 3: startTime + "\"END_TIME\" TEXT," + // 4: endTime + "\"DATE\" TEXT," + // 5: date + "\"START_LNG\" REAL NOT NULL ," + // 6: startLng + "\"START_LAT\" REAL NOT NULL ," + // 7: startLat + "\"END_LNG\" REAL NOT NULL ," + // 8: endLng + "\"END_LAT\" REAL NOT NULL ," + // 9: endLat + "\"ROUTES\" TEXT," + // 10: routes + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"INSPECTION_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public InspectionBean readEntity(Cursor cursor, int offset) { + InspectionBean entity = new InspectionBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // startTime + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // endTime + cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // date + cursor.getDouble(offset + 6), // startLng + cursor.getDouble(offset + 7), // startLat + cursor.getDouble(offset + 8), // endLng + cursor.getDouble(offset + 9), // endLat + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // routes + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, InspectionBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setStartTime(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setEndTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setDate(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5)); + entity.setStartLng(cursor.getDouble(offset + 6)); + entity.setStartLat(cursor.getDouble(offset + 7)); + entity.setEndLng(cursor.getDouble(offset + 8)); + entity.setEndLat(cursor.getDouble(offset + 9)); + entity.setRoutes(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(InspectionBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(InspectionBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(InspectionBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java new file mode 100644 index 0000000..3f040d3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java @@ -0,0 +1,245 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.TaskEventBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "TASK_EVENT_BEAN". +*/ +public class TaskEventBeanDao extends AbstractDao { + + public static final String TABLENAME = "TASK_EVENT_BEAN"; + + /** + * Properties of entity TaskEventBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property InspectionId = new Property(2, String.class, "inspectionId", false, "INSPECTION_ID"); + public final static Property Name = new Property(3, String.class, "name", false, "NAME"); + public final static Property CreateTime = new Property(4, String.class, "createTime", false, "CREATE_TIME"); + public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); + public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); + public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); + public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); + public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public TaskEventBeanDao(DaoConfig config) { + super(config); + } + + public TaskEventBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"TASK_EVENT_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"INSPECTION_ID\" TEXT," + // 2: inspectionId + "\"NAME\" TEXT," + // 3: name + "\"CREATE_TIME\" TEXT," + // 4: createTime + "\"LNG\" REAL NOT NULL ," + // 5: lng + "\"LAT\" REAL NOT NULL ," + // 6: lat + "\"TYPE\" TEXT," + // 7: type + "\"DATA\" REAL NOT NULL ," + // 8: data + "\"IMAGES\" TEXT," + // 9: images + "\"DESCRIPTION\" TEXT," + // 10: description + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"TASK_EVENT_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public TaskEventBean readEntity(Cursor cursor, int offset) { + TaskEventBean entity = new TaskEventBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // name + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getDouble(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, TaskEventBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setInspectionId(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setName(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setCreateTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setLng(cursor.getDouble(offset + 5)); + entity.setLat(cursor.getDouble(offset + 6)); + entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); + entity.setData(cursor.getDouble(offset + 8)); + entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); + entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(TaskEventBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(TaskEventBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(TaskEventBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt new file mode 100644 index 0000000..dc635a4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt @@ -0,0 +1,41 @@ +package com.casic.birmm.inspect.model + +class EventListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var total = 0 + var rows: MutableList? = + null + + class RowsBean { + /** + * createTime : 2020-12-28 14:56:59 + * data : -1 + * description : ggg + * id : t1609138629320112121 + * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg + * inspectionId : 1609138451543200022 + * lat : 39.915956 + * lng : 116.268596 + * name : sss + * type : 自定义事件 + * user : 超超级管理员 + */ + var createTime: String? = null + var data = 0 + var description: String? = null + var id: String? = null + var images: String? = null + var inspectionId: String? = null + var lat = 0.0 + var lng = 0.0 + var name: String? = null + var type: String? = null + var user: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt deleted file mode 100644 index de499aa..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.birmm.inspect.model - -class EventModel { - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var total = 0 - var rows: MutableList? = - null - - class RowsBean { - /** - * createTime : 2020-12-28 14:56:59 - * data : -1 - * description : ggg - * id : t1609138629320112121 - * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg - * inspectionId : 1609138451543200022 - * lat : 39.915956 - * lng : 116.268596 - * name : sss - * type : 自定义事件 - * user : 超超级管理员 - */ - var createTime: String? = null - var data = 0 - var description: String? = null - var id: String? = null - var images: String? = null - var inspectionId: String? = null - var lat = 0.0 - var lng = 0.0 - var name: String? = null - var type: String? = null - var user: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt new file mode 100644 index 0000000..395b6e8 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt @@ -0,0 +1,43 @@ +package com.casic.birmm.inspect.model + +class InspectListModel { + + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + + var total = 0 + var rows: MutableList? = null + + class RowsBean { + /** + * date : 2021年07月08日 + * endLat : 39.915908 + * endLng : 116.26876 + * endTime : 2021-07-08 11:20:20 + * id : 162570318141612121 + * name : 测试 + * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] + * startLat : 39.913365 + * startLng : 116.269462 + * startTime : 2021-07-08 08:13:01 + * user : 王晓颖 + */ + var date: String? = null + var endLat = 0.0 + var endLng = 0.0 + var endTime: String? = null + var id: String? = null + var name: String? = null + var routes: String? = null + var startLat = 0.0 + var startLng = 0.0 + var startTime: String? = null + var user: String? = null + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt deleted file mode 100644 index 558e716..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.casic.birmm.inspect.model - -class InspectModel { - - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - - var total = 0 - var rows: MutableList? = null - - class RowsBean { - /** - * date : 2021年07月08日 - * endLat : 39.915908 - * endLng : 116.26876 - * endTime : 2021-07-08 11:20:20 - * id : 162570318141612121 - * name : 测试 - * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] - * startLat : 39.913365 - * startLng : 116.269462 - * startTime : 2021-07-08 08:13:01 - * user : 王晓颖 - */ - var date: String? = null - var endLat = 0.0 - var endLng = 0.0 - var endTime: String? = null - var id: String? = null - var name: String? = null - var routes: String? = null - var startLat = 0.0 - var startLng = 0.0 - var startTime: String? = null - var user: String? = null - - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt index ee6f1f6..beb469b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.model +//同巡检Id的事件列表数据模型 class TaskRecordModel { var code = 0 @@ -8,7 +9,7 @@ var isSuccess = false class DataBean { - var list: List? = null + var list: MutableList? = null class ListBean { /** diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt new file mode 100644 index 0000000..8201cb4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt @@ -0,0 +1,89 @@ +package com.casic.birmm.inspect.utils + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.util.Log +import com.casic.birmm.inspect.base.BaseApplication + + +class BroadcastManager private constructor() { + + private var mContext: Context = BaseApplication.instance + private var receiverMap: HashMap = HashMap() + + companion object { + private const val Tag = "BroadcastManager" + + val instance: BroadcastManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + BroadcastManager() + } + } + + /** + * 添加单个Action,广播的初始化 + */ + fun addAction(action: String, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + filter.addAction(action) + mContext.registerReceiver(receiver, filter) + receiverMap[action] = receiver + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 添加多个Action,广播的初始化 + */ + fun addAction(actions: Array, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + actions.forEach { + filter.addAction(it) + receiverMap[it] = receiver + } + mContext.registerReceiver(receiver, filter) + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 发送广播 + * + * @param action 唯一码 + * @param msg 参数 + */ + fun sendBroadcast(action: String, msg: String) { + try { + val intent = Intent() + intent.action = action + intent.putExtra("data", msg) + mContext.sendBroadcast(intent) + Log.d(Tag, "发送广播: $msg") + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 销毁广播 + * + * @param actions action集合 + */ + fun destroy(vararg actions: String) { + try { + actions.forEach { + val receiver = receiverMap[it] + if (receiver != null) { + mContext.unregisterReceiver(receiver) + } + } + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt index 0c9e963..507655b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt @@ -16,13 +16,25 @@ const val BLUETOOTH_ON = 20 const val BLUETOOTH_OFF = 21 const val DEVICE_CONNECTED = 22 - const val DEVICE_DISCONNECTED = 23 + const val DEVICE_CONNECT_FAIL = 23 + const val DEVICE_DISCONNECTED = 24 + const val SEND_SUCCESS = 25 + const val SEND_FAILURE = 26 + const val RECEIVE_SUCCESS = 27 + const val RECEIVE_FAILURE = 28 const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val IMAGE_MINUS_SIZE = 50 * 1024 + const val IMAGE_MINUS_SIZE = 100 * 1024 const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val USER_OBJECT = "userObject" const val OPEN_WARNING = "isOpenWarning" const val AUTO_RECORD = "isRecordLog" + const val INSPECTION_OBJECT = "inspectionObject" + + val ASK_DEV_CODE_COMMAND = byteArrayOf(0x01, 0x0D, 0x0A)// 查询设备编号命令 + val OPEN_TRANSFER_COMMAND = byteArrayOf(0x02, 0x0D, 0x0A) // 开启数据发送命令 + const val SERVICE_UUID = "0003cdd0-0000-1000-8000-00805f9b0131"//连接设备的UUID + const val WRITE_CHARACTERISTIC_UUID = "0003cdd2-0000-1000-8000-00805f9b0131"//写数据特征值UUID + const val READ_CHARACTERISTIC_UUID = "0003cdd1-0000-1000-8000-00805f9b0131"//读数据特征值UUID } \ No newline at end of file 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 new file mode 100644 index 0000000..c7fba84 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -0,0 +1,123 @@ +package com.casic.birmm.inspect.utils + +import com.casic.birmm.inspect.base.BaseApplication +import com.casic.birmm.inspect.bean.InspectionBean +import com.casic.birmm.inspect.bean.TaskEventBean +import com.casic.birmm.inspect.greendao.TaskEventBeanDao +import com.casic.birmm.inspect.model.TaskRecordModel + +class DataBaseManager private constructor() { + + companion object { + //Kotlin委托模式双重锁单例 + val instance: DataBaseManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + DataBaseManager() + } + } + + /** + * 保存巡检记录到本地 + * */ + fun insertData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.insert(bean) + } + + /** + * 删除本地巡检记录 + * */ + fun deleteData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllInspection() { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.update(bean) + } + + /** + * 查询所有数据 + */ + fun queryAllInspection(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao?.queryBuilder() + ?.build()?.list() + } + + /**********************************************************************************************/ + + /** + * 保存事件记录到本地 + * */ + fun insertData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.insert(bean) + } + + /** + * 删除本地事件记录 + * */ + fun deleteData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllTask() { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.update(bean) + } + + /** + * 根据巡检Id查询事件数据 + */ + fun queryTaskByInspection(inspectionId: String): MutableList? { + val dataBeans: MutableList = ArrayList() + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.where(TaskEventBeanDao.Properties.InspectionId.eq(inspectionId)) + ?.orderDesc(TaskEventBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + ?.build() + ?.list()?.let { + it.forEach { taskBean -> + val listBean = TaskRecordModel.DataBean.ListBean() + listBean.createTime = taskBean.createTime + listBean.data = taskBean.data.toInt() + listBean.description = taskBean.description + listBean.id = taskBean.serverMainId + listBean.images = taskBean.images + listBean.inspectionId = taskBean.inspectionId + listBean.lat = taskBean.lat + listBean.lng = taskBean.lng + listBean.name = taskBean.name + listBean.type = taskBean.type + listBean.user = taskBean.user + dataBeans.add(listBean) + } + } + return dataBeans + } + + /** + * 查询所有数据 + */ + fun queryAllTask(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.build() + ?.list() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt new file mode 100644 index 0000000..fa53beb --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt @@ -0,0 +1,34 @@ +package com.casic.birmm.inspect.utils + +import android.content.Context +import android.util.Log +import com.amap.api.location.AMapLocationClient +import com.amap.api.location.AMapLocationClientOption +import com.casic.birmm.inspect.utils.callback.ILocationListener + +object LocationHelper { + private const val Tag = "LocationHelper" + + fun obtainCurrentLocation(context: Context, listener: ILocationListener) { + val locationClient = AMapLocationClient(context) + val locationOption = AMapLocationClientOption() + locationOption.locationMode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy; + locationOption.isNeedAddress = true//设置是否返回地址信息(默认返回地址信息) + locationOption.isOnceLocation = true//设置是否只定位一次,默认为false + locationOption.isMockEnable = false//设置是否允许模拟位置,默认为false,不允许模拟位置 + locationOption.isLocationCacheEnable = false //可选,设置是否使用缓存定位,默认为true + locationClient.setLocationOption(locationOption) + locationClient.setLocationListener { + if (it != null) { + if (it.errorCode == 0) { + listener.onAMapLocationGet(it) + } else { + Log.e( + Tag, "location Error, ErrCode:" + it.errorCode + ", errInfo:" + it.errorInfo + ) + } + } + } + locationClient.startLocation() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt new file mode 100644 index 0000000..a4def44 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt @@ -0,0 +1,8 @@ +package com.casic.birmm.inspect.utils.callback + +import com.amap.api.location.AMapLocation + + +interface ILocationListener { + fun onAMapLocationGet(aMapLocation: AMapLocation) //高德定位数据 +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index a05027e..c5c9a30 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -49,7 +49,7 @@ @Query("endTime") endTime: String, @Query("limit") limit: Int, @Query("offset") offset: Int - ): InspectModel + ): InspectListModel /** * 巡检记录列表 @@ -62,7 +62,7 @@ @Query("endTime") endTime: String, @Query("limit") limit: Int, @Query("offset") offset: Int - ): EventModel + ): EventListModel /** * 获取巡检详情 @@ -93,4 +93,24 @@ @Header("token") token: String, @Part file: MultipartBody.Part ): ActionResultModel + + /** + * 新增事件 + */ + @FormUrlEncoded + @POST("/task/add") + suspend fun addEventTask( + @Header("token") token: String, + @Field("id") id: String, + @Field("inspectionId") inspectionId: String, + @Field("name") name: String, + @Field("createTime") createTime: String, + @Field("type") type: String, + @Field("Lng") Lng: Double, + @Field("Lat") Lat: Double, + @Field("data") data: Double, + @Field("images") images: String, + @Field("description") description: String, + @Field("user") user: String + ): ActionResultModel } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java new file mode 100644 index 0000000..b7077a3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java @@ -0,0 +1,237 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.InspectionBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "INSPECTION_BEAN". +*/ +public class InspectionBeanDao extends AbstractDao { + + public static final String TABLENAME = "INSPECTION_BEAN"; + + /** + * Properties of entity InspectionBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property Name = new Property(2, String.class, "name", false, "NAME"); + public final static Property StartTime = new Property(3, String.class, "startTime", false, "START_TIME"); + public final static Property EndTime = new Property(4, String.class, "endTime", false, "END_TIME"); + public final static Property Date = new Property(5, String.class, "date", false, "DATE"); + public final static Property StartLng = new Property(6, double.class, "startLng", false, "START_LNG"); + public final static Property StartLat = new Property(7, double.class, "startLat", false, "START_LAT"); + public final static Property EndLng = new Property(8, double.class, "endLng", false, "END_LNG"); + public final static Property EndLat = new Property(9, double.class, "endLat", false, "END_LAT"); + public final static Property Routes = new Property(10, String.class, "routes", false, "ROUTES"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public InspectionBeanDao(DaoConfig config) { + super(config); + } + + public InspectionBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"INSPECTION_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"NAME\" TEXT," + // 2: name + "\"START_TIME\" TEXT," + // 3: startTime + "\"END_TIME\" TEXT," + // 4: endTime + "\"DATE\" TEXT," + // 5: date + "\"START_LNG\" REAL NOT NULL ," + // 6: startLng + "\"START_LAT\" REAL NOT NULL ," + // 7: startLat + "\"END_LNG\" REAL NOT NULL ," + // 8: endLng + "\"END_LAT\" REAL NOT NULL ," + // 9: endLat + "\"ROUTES\" TEXT," + // 10: routes + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"INSPECTION_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public InspectionBean readEntity(Cursor cursor, int offset) { + InspectionBean entity = new InspectionBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // startTime + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // endTime + cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // date + cursor.getDouble(offset + 6), // startLng + cursor.getDouble(offset + 7), // startLat + cursor.getDouble(offset + 8), // endLng + cursor.getDouble(offset + 9), // endLat + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // routes + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, InspectionBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setStartTime(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setEndTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setDate(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5)); + entity.setStartLng(cursor.getDouble(offset + 6)); + entity.setStartLat(cursor.getDouble(offset + 7)); + entity.setEndLng(cursor.getDouble(offset + 8)); + entity.setEndLat(cursor.getDouble(offset + 9)); + entity.setRoutes(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(InspectionBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(InspectionBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(InspectionBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java new file mode 100644 index 0000000..3f040d3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java @@ -0,0 +1,245 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.TaskEventBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "TASK_EVENT_BEAN". +*/ +public class TaskEventBeanDao extends AbstractDao { + + public static final String TABLENAME = "TASK_EVENT_BEAN"; + + /** + * Properties of entity TaskEventBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property InspectionId = new Property(2, String.class, "inspectionId", false, "INSPECTION_ID"); + public final static Property Name = new Property(3, String.class, "name", false, "NAME"); + public final static Property CreateTime = new Property(4, String.class, "createTime", false, "CREATE_TIME"); + public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); + public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); + public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); + public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); + public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public TaskEventBeanDao(DaoConfig config) { + super(config); + } + + public TaskEventBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"TASK_EVENT_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"INSPECTION_ID\" TEXT," + // 2: inspectionId + "\"NAME\" TEXT," + // 3: name + "\"CREATE_TIME\" TEXT," + // 4: createTime + "\"LNG\" REAL NOT NULL ," + // 5: lng + "\"LAT\" REAL NOT NULL ," + // 6: lat + "\"TYPE\" TEXT," + // 7: type + "\"DATA\" REAL NOT NULL ," + // 8: data + "\"IMAGES\" TEXT," + // 9: images + "\"DESCRIPTION\" TEXT," + // 10: description + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"TASK_EVENT_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public TaskEventBean readEntity(Cursor cursor, int offset) { + TaskEventBean entity = new TaskEventBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // name + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getDouble(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, TaskEventBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setInspectionId(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setName(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setCreateTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setLng(cursor.getDouble(offset + 5)); + entity.setLat(cursor.getDouble(offset + 6)); + entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); + entity.setData(cursor.getDouble(offset + 8)); + entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); + entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(TaskEventBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(TaskEventBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(TaskEventBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt new file mode 100644 index 0000000..dc635a4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt @@ -0,0 +1,41 @@ +package com.casic.birmm.inspect.model + +class EventListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var total = 0 + var rows: MutableList? = + null + + class RowsBean { + /** + * createTime : 2020-12-28 14:56:59 + * data : -1 + * description : ggg + * id : t1609138629320112121 + * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg + * inspectionId : 1609138451543200022 + * lat : 39.915956 + * lng : 116.268596 + * name : sss + * type : 自定义事件 + * user : 超超级管理员 + */ + var createTime: String? = null + var data = 0 + var description: String? = null + var id: String? = null + var images: String? = null + var inspectionId: String? = null + var lat = 0.0 + var lng = 0.0 + var name: String? = null + var type: String? = null + var user: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt deleted file mode 100644 index de499aa..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.birmm.inspect.model - -class EventModel { - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var total = 0 - var rows: MutableList? = - null - - class RowsBean { - /** - * createTime : 2020-12-28 14:56:59 - * data : -1 - * description : ggg - * id : t1609138629320112121 - * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg - * inspectionId : 1609138451543200022 - * lat : 39.915956 - * lng : 116.268596 - * name : sss - * type : 自定义事件 - * user : 超超级管理员 - */ - var createTime: String? = null - var data = 0 - var description: String? = null - var id: String? = null - var images: String? = null - var inspectionId: String? = null - var lat = 0.0 - var lng = 0.0 - var name: String? = null - var type: String? = null - var user: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt new file mode 100644 index 0000000..395b6e8 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt @@ -0,0 +1,43 @@ +package com.casic.birmm.inspect.model + +class InspectListModel { + + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + + var total = 0 + var rows: MutableList? = null + + class RowsBean { + /** + * date : 2021年07月08日 + * endLat : 39.915908 + * endLng : 116.26876 + * endTime : 2021-07-08 11:20:20 + * id : 162570318141612121 + * name : 测试 + * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] + * startLat : 39.913365 + * startLng : 116.269462 + * startTime : 2021-07-08 08:13:01 + * user : 王晓颖 + */ + var date: String? = null + var endLat = 0.0 + var endLng = 0.0 + var endTime: String? = null + var id: String? = null + var name: String? = null + var routes: String? = null + var startLat = 0.0 + var startLng = 0.0 + var startTime: String? = null + var user: String? = null + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt deleted file mode 100644 index 558e716..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.casic.birmm.inspect.model - -class InspectModel { - - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - - var total = 0 - var rows: MutableList? = null - - class RowsBean { - /** - * date : 2021年07月08日 - * endLat : 39.915908 - * endLng : 116.26876 - * endTime : 2021-07-08 11:20:20 - * id : 162570318141612121 - * name : 测试 - * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] - * startLat : 39.913365 - * startLng : 116.269462 - * startTime : 2021-07-08 08:13:01 - * user : 王晓颖 - */ - var date: String? = null - var endLat = 0.0 - var endLng = 0.0 - var endTime: String? = null - var id: String? = null - var name: String? = null - var routes: String? = null - var startLat = 0.0 - var startLng = 0.0 - var startTime: String? = null - var user: String? = null - - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt index ee6f1f6..beb469b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.model +//同巡检Id的事件列表数据模型 class TaskRecordModel { var code = 0 @@ -8,7 +9,7 @@ var isSuccess = false class DataBean { - var list: List? = null + var list: MutableList? = null class ListBean { /** diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt new file mode 100644 index 0000000..8201cb4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt @@ -0,0 +1,89 @@ +package com.casic.birmm.inspect.utils + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.util.Log +import com.casic.birmm.inspect.base.BaseApplication + + +class BroadcastManager private constructor() { + + private var mContext: Context = BaseApplication.instance + private var receiverMap: HashMap = HashMap() + + companion object { + private const val Tag = "BroadcastManager" + + val instance: BroadcastManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + BroadcastManager() + } + } + + /** + * 添加单个Action,广播的初始化 + */ + fun addAction(action: String, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + filter.addAction(action) + mContext.registerReceiver(receiver, filter) + receiverMap[action] = receiver + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 添加多个Action,广播的初始化 + */ + fun addAction(actions: Array, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + actions.forEach { + filter.addAction(it) + receiverMap[it] = receiver + } + mContext.registerReceiver(receiver, filter) + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 发送广播 + * + * @param action 唯一码 + * @param msg 参数 + */ + fun sendBroadcast(action: String, msg: String) { + try { + val intent = Intent() + intent.action = action + intent.putExtra("data", msg) + mContext.sendBroadcast(intent) + Log.d(Tag, "发送广播: $msg") + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 销毁广播 + * + * @param actions action集合 + */ + fun destroy(vararg actions: String) { + try { + actions.forEach { + val receiver = receiverMap[it] + if (receiver != null) { + mContext.unregisterReceiver(receiver) + } + } + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt index 0c9e963..507655b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt @@ -16,13 +16,25 @@ const val BLUETOOTH_ON = 20 const val BLUETOOTH_OFF = 21 const val DEVICE_CONNECTED = 22 - const val DEVICE_DISCONNECTED = 23 + const val DEVICE_CONNECT_FAIL = 23 + const val DEVICE_DISCONNECTED = 24 + const val SEND_SUCCESS = 25 + const val SEND_FAILURE = 26 + const val RECEIVE_SUCCESS = 27 + const val RECEIVE_FAILURE = 28 const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val IMAGE_MINUS_SIZE = 50 * 1024 + const val IMAGE_MINUS_SIZE = 100 * 1024 const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val USER_OBJECT = "userObject" const val OPEN_WARNING = "isOpenWarning" const val AUTO_RECORD = "isRecordLog" + const val INSPECTION_OBJECT = "inspectionObject" + + val ASK_DEV_CODE_COMMAND = byteArrayOf(0x01, 0x0D, 0x0A)// 查询设备编号命令 + val OPEN_TRANSFER_COMMAND = byteArrayOf(0x02, 0x0D, 0x0A) // 开启数据发送命令 + const val SERVICE_UUID = "0003cdd0-0000-1000-8000-00805f9b0131"//连接设备的UUID + const val WRITE_CHARACTERISTIC_UUID = "0003cdd2-0000-1000-8000-00805f9b0131"//写数据特征值UUID + const val READ_CHARACTERISTIC_UUID = "0003cdd1-0000-1000-8000-00805f9b0131"//读数据特征值UUID } \ No newline at end of file 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 new file mode 100644 index 0000000..c7fba84 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -0,0 +1,123 @@ +package com.casic.birmm.inspect.utils + +import com.casic.birmm.inspect.base.BaseApplication +import com.casic.birmm.inspect.bean.InspectionBean +import com.casic.birmm.inspect.bean.TaskEventBean +import com.casic.birmm.inspect.greendao.TaskEventBeanDao +import com.casic.birmm.inspect.model.TaskRecordModel + +class DataBaseManager private constructor() { + + companion object { + //Kotlin委托模式双重锁单例 + val instance: DataBaseManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + DataBaseManager() + } + } + + /** + * 保存巡检记录到本地 + * */ + fun insertData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.insert(bean) + } + + /** + * 删除本地巡检记录 + * */ + fun deleteData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllInspection() { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.update(bean) + } + + /** + * 查询所有数据 + */ + fun queryAllInspection(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao?.queryBuilder() + ?.build()?.list() + } + + /**********************************************************************************************/ + + /** + * 保存事件记录到本地 + * */ + fun insertData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.insert(bean) + } + + /** + * 删除本地事件记录 + * */ + fun deleteData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllTask() { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.update(bean) + } + + /** + * 根据巡检Id查询事件数据 + */ + fun queryTaskByInspection(inspectionId: String): MutableList? { + val dataBeans: MutableList = ArrayList() + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.where(TaskEventBeanDao.Properties.InspectionId.eq(inspectionId)) + ?.orderDesc(TaskEventBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + ?.build() + ?.list()?.let { + it.forEach { taskBean -> + val listBean = TaskRecordModel.DataBean.ListBean() + listBean.createTime = taskBean.createTime + listBean.data = taskBean.data.toInt() + listBean.description = taskBean.description + listBean.id = taskBean.serverMainId + listBean.images = taskBean.images + listBean.inspectionId = taskBean.inspectionId + listBean.lat = taskBean.lat + listBean.lng = taskBean.lng + listBean.name = taskBean.name + listBean.type = taskBean.type + listBean.user = taskBean.user + dataBeans.add(listBean) + } + } + return dataBeans + } + + /** + * 查询所有数据 + */ + fun queryAllTask(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.build() + ?.list() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt new file mode 100644 index 0000000..fa53beb --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt @@ -0,0 +1,34 @@ +package com.casic.birmm.inspect.utils + +import android.content.Context +import android.util.Log +import com.amap.api.location.AMapLocationClient +import com.amap.api.location.AMapLocationClientOption +import com.casic.birmm.inspect.utils.callback.ILocationListener + +object LocationHelper { + private const val Tag = "LocationHelper" + + fun obtainCurrentLocation(context: Context, listener: ILocationListener) { + val locationClient = AMapLocationClient(context) + val locationOption = AMapLocationClientOption() + locationOption.locationMode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy; + locationOption.isNeedAddress = true//设置是否返回地址信息(默认返回地址信息) + locationOption.isOnceLocation = true//设置是否只定位一次,默认为false + locationOption.isMockEnable = false//设置是否允许模拟位置,默认为false,不允许模拟位置 + locationOption.isLocationCacheEnable = false //可选,设置是否使用缓存定位,默认为true + locationClient.setLocationOption(locationOption) + locationClient.setLocationListener { + if (it != null) { + if (it.errorCode == 0) { + listener.onAMapLocationGet(it) + } else { + Log.e( + Tag, "location Error, ErrCode:" + it.errorCode + ", errInfo:" + it.errorInfo + ) + } + } + } + locationClient.startLocation() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt new file mode 100644 index 0000000..a4def44 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt @@ -0,0 +1,8 @@ +package com.casic.birmm.inspect.utils.callback + +import com.amap.api.location.AMapLocation + + +interface ILocationListener { + fun onAMapLocationGet(aMapLocation: AMapLocation) //高德定位数据 +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index a05027e..c5c9a30 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -49,7 +49,7 @@ @Query("endTime") endTime: String, @Query("limit") limit: Int, @Query("offset") offset: Int - ): InspectModel + ): InspectListModel /** * 巡检记录列表 @@ -62,7 +62,7 @@ @Query("endTime") endTime: String, @Query("limit") limit: Int, @Query("offset") offset: Int - ): EventModel + ): EventListModel /** * 获取巡检详情 @@ -93,4 +93,24 @@ @Header("token") token: String, @Part file: MultipartBody.Part ): ActionResultModel + + /** + * 新增事件 + */ + @FormUrlEncoded + @POST("/task/add") + suspend fun addEventTask( + @Header("token") token: String, + @Field("id") id: String, + @Field("inspectionId") inspectionId: String, + @Field("name") name: String, + @Field("createTime") createTime: String, + @Field("type") type: String, + @Field("Lng") Lng: Double, + @Field("Lat") Lat: Double, + @Field("data") data: Double, + @Field("images") images: String, + @Field("description") description: String, + @Field("user") user: String + ): ActionResultModel } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index df03b14..d24faff 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -49,7 +49,7 @@ startTime: String, endTime: String, pageIndex: Int - ): InspectModel { + ): InspectListModel { return api.obtainInspectList( AuthenticationHelper.token!!, keywords, @@ -68,7 +68,7 @@ startTime: String, endTime: String, pageIndex: Int - ): EventModel { + ): EventListModel { return api.obtainEventList( AuthenticationHelper.token!!, keywords, @@ -101,4 +101,17 @@ val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody) return api.uploadImage(AuthenticationHelper.token!!, imagePart) } + + /** + * 新增事件 + */ + suspend fun addEventTask( + id: String, inspectionId: String, name: String, createTime: String, type: String, + lng: Double, lat: Double, data: Double, images: String, description: String, user: String + ): ActionResultModel { + return api.addEventTask( + AuthenticationHelper.token!!, id, inspectionId, name, createTime, + type, lng, lat, data, images, description, user + ) + } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java new file mode 100644 index 0000000..b7077a3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java @@ -0,0 +1,237 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.InspectionBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "INSPECTION_BEAN". +*/ +public class InspectionBeanDao extends AbstractDao { + + public static final String TABLENAME = "INSPECTION_BEAN"; + + /** + * Properties of entity InspectionBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property Name = new Property(2, String.class, "name", false, "NAME"); + public final static Property StartTime = new Property(3, String.class, "startTime", false, "START_TIME"); + public final static Property EndTime = new Property(4, String.class, "endTime", false, "END_TIME"); + public final static Property Date = new Property(5, String.class, "date", false, "DATE"); + public final static Property StartLng = new Property(6, double.class, "startLng", false, "START_LNG"); + public final static Property StartLat = new Property(7, double.class, "startLat", false, "START_LAT"); + public final static Property EndLng = new Property(8, double.class, "endLng", false, "END_LNG"); + public final static Property EndLat = new Property(9, double.class, "endLat", false, "END_LAT"); + public final static Property Routes = new Property(10, String.class, "routes", false, "ROUTES"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public InspectionBeanDao(DaoConfig config) { + super(config); + } + + public InspectionBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"INSPECTION_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"NAME\" TEXT," + // 2: name + "\"START_TIME\" TEXT," + // 3: startTime + "\"END_TIME\" TEXT," + // 4: endTime + "\"DATE\" TEXT," + // 5: date + "\"START_LNG\" REAL NOT NULL ," + // 6: startLng + "\"START_LAT\" REAL NOT NULL ," + // 7: startLat + "\"END_LNG\" REAL NOT NULL ," + // 8: endLng + "\"END_LAT\" REAL NOT NULL ," + // 9: endLat + "\"ROUTES\" TEXT," + // 10: routes + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"INSPECTION_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public InspectionBean readEntity(Cursor cursor, int offset) { + InspectionBean entity = new InspectionBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // startTime + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // endTime + cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // date + cursor.getDouble(offset + 6), // startLng + cursor.getDouble(offset + 7), // startLat + cursor.getDouble(offset + 8), // endLng + cursor.getDouble(offset + 9), // endLat + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // routes + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, InspectionBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setStartTime(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setEndTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setDate(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5)); + entity.setStartLng(cursor.getDouble(offset + 6)); + entity.setStartLat(cursor.getDouble(offset + 7)); + entity.setEndLng(cursor.getDouble(offset + 8)); + entity.setEndLat(cursor.getDouble(offset + 9)); + entity.setRoutes(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(InspectionBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(InspectionBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(InspectionBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java new file mode 100644 index 0000000..3f040d3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java @@ -0,0 +1,245 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.TaskEventBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "TASK_EVENT_BEAN". +*/ +public class TaskEventBeanDao extends AbstractDao { + + public static final String TABLENAME = "TASK_EVENT_BEAN"; + + /** + * Properties of entity TaskEventBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property InspectionId = new Property(2, String.class, "inspectionId", false, "INSPECTION_ID"); + public final static Property Name = new Property(3, String.class, "name", false, "NAME"); + public final static Property CreateTime = new Property(4, String.class, "createTime", false, "CREATE_TIME"); + public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); + public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); + public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); + public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); + public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public TaskEventBeanDao(DaoConfig config) { + super(config); + } + + public TaskEventBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"TASK_EVENT_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"INSPECTION_ID\" TEXT," + // 2: inspectionId + "\"NAME\" TEXT," + // 3: name + "\"CREATE_TIME\" TEXT," + // 4: createTime + "\"LNG\" REAL NOT NULL ," + // 5: lng + "\"LAT\" REAL NOT NULL ," + // 6: lat + "\"TYPE\" TEXT," + // 7: type + "\"DATA\" REAL NOT NULL ," + // 8: data + "\"IMAGES\" TEXT," + // 9: images + "\"DESCRIPTION\" TEXT," + // 10: description + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"TASK_EVENT_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public TaskEventBean readEntity(Cursor cursor, int offset) { + TaskEventBean entity = new TaskEventBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // name + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getDouble(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, TaskEventBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setInspectionId(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setName(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setCreateTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setLng(cursor.getDouble(offset + 5)); + entity.setLat(cursor.getDouble(offset + 6)); + entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); + entity.setData(cursor.getDouble(offset + 8)); + entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); + entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(TaskEventBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(TaskEventBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(TaskEventBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt new file mode 100644 index 0000000..dc635a4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt @@ -0,0 +1,41 @@ +package com.casic.birmm.inspect.model + +class EventListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var total = 0 + var rows: MutableList? = + null + + class RowsBean { + /** + * createTime : 2020-12-28 14:56:59 + * data : -1 + * description : ggg + * id : t1609138629320112121 + * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg + * inspectionId : 1609138451543200022 + * lat : 39.915956 + * lng : 116.268596 + * name : sss + * type : 自定义事件 + * user : 超超级管理员 + */ + var createTime: String? = null + var data = 0 + var description: String? = null + var id: String? = null + var images: String? = null + var inspectionId: String? = null + var lat = 0.0 + var lng = 0.0 + var name: String? = null + var type: String? = null + var user: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt deleted file mode 100644 index de499aa..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.birmm.inspect.model - -class EventModel { - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var total = 0 - var rows: MutableList? = - null - - class RowsBean { - /** - * createTime : 2020-12-28 14:56:59 - * data : -1 - * description : ggg - * id : t1609138629320112121 - * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg - * inspectionId : 1609138451543200022 - * lat : 39.915956 - * lng : 116.268596 - * name : sss - * type : 自定义事件 - * user : 超超级管理员 - */ - var createTime: String? = null - var data = 0 - var description: String? = null - var id: String? = null - var images: String? = null - var inspectionId: String? = null - var lat = 0.0 - var lng = 0.0 - var name: String? = null - var type: String? = null - var user: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt new file mode 100644 index 0000000..395b6e8 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt @@ -0,0 +1,43 @@ +package com.casic.birmm.inspect.model + +class InspectListModel { + + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + + var total = 0 + var rows: MutableList? = null + + class RowsBean { + /** + * date : 2021年07月08日 + * endLat : 39.915908 + * endLng : 116.26876 + * endTime : 2021-07-08 11:20:20 + * id : 162570318141612121 + * name : 测试 + * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] + * startLat : 39.913365 + * startLng : 116.269462 + * startTime : 2021-07-08 08:13:01 + * user : 王晓颖 + */ + var date: String? = null + var endLat = 0.0 + var endLng = 0.0 + var endTime: String? = null + var id: String? = null + var name: String? = null + var routes: String? = null + var startLat = 0.0 + var startLng = 0.0 + var startTime: String? = null + var user: String? = null + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt deleted file mode 100644 index 558e716..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.casic.birmm.inspect.model - -class InspectModel { - - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - - var total = 0 - var rows: MutableList? = null - - class RowsBean { - /** - * date : 2021年07月08日 - * endLat : 39.915908 - * endLng : 116.26876 - * endTime : 2021-07-08 11:20:20 - * id : 162570318141612121 - * name : 测试 - * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] - * startLat : 39.913365 - * startLng : 116.269462 - * startTime : 2021-07-08 08:13:01 - * user : 王晓颖 - */ - var date: String? = null - var endLat = 0.0 - var endLng = 0.0 - var endTime: String? = null - var id: String? = null - var name: String? = null - var routes: String? = null - var startLat = 0.0 - var startLng = 0.0 - var startTime: String? = null - var user: String? = null - - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt index ee6f1f6..beb469b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.model +//同巡检Id的事件列表数据模型 class TaskRecordModel { var code = 0 @@ -8,7 +9,7 @@ var isSuccess = false class DataBean { - var list: List? = null + var list: MutableList? = null class ListBean { /** diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt new file mode 100644 index 0000000..8201cb4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt @@ -0,0 +1,89 @@ +package com.casic.birmm.inspect.utils + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.util.Log +import com.casic.birmm.inspect.base.BaseApplication + + +class BroadcastManager private constructor() { + + private var mContext: Context = BaseApplication.instance + private var receiverMap: HashMap = HashMap() + + companion object { + private const val Tag = "BroadcastManager" + + val instance: BroadcastManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + BroadcastManager() + } + } + + /** + * 添加单个Action,广播的初始化 + */ + fun addAction(action: String, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + filter.addAction(action) + mContext.registerReceiver(receiver, filter) + receiverMap[action] = receiver + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 添加多个Action,广播的初始化 + */ + fun addAction(actions: Array, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + actions.forEach { + filter.addAction(it) + receiverMap[it] = receiver + } + mContext.registerReceiver(receiver, filter) + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 发送广播 + * + * @param action 唯一码 + * @param msg 参数 + */ + fun sendBroadcast(action: String, msg: String) { + try { + val intent = Intent() + intent.action = action + intent.putExtra("data", msg) + mContext.sendBroadcast(intent) + Log.d(Tag, "发送广播: $msg") + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 销毁广播 + * + * @param actions action集合 + */ + fun destroy(vararg actions: String) { + try { + actions.forEach { + val receiver = receiverMap[it] + if (receiver != null) { + mContext.unregisterReceiver(receiver) + } + } + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt index 0c9e963..507655b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt @@ -16,13 +16,25 @@ const val BLUETOOTH_ON = 20 const val BLUETOOTH_OFF = 21 const val DEVICE_CONNECTED = 22 - const val DEVICE_DISCONNECTED = 23 + const val DEVICE_CONNECT_FAIL = 23 + const val DEVICE_DISCONNECTED = 24 + const val SEND_SUCCESS = 25 + const val SEND_FAILURE = 26 + const val RECEIVE_SUCCESS = 27 + const val RECEIVE_FAILURE = 28 const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val IMAGE_MINUS_SIZE = 50 * 1024 + const val IMAGE_MINUS_SIZE = 100 * 1024 const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val USER_OBJECT = "userObject" const val OPEN_WARNING = "isOpenWarning" const val AUTO_RECORD = "isRecordLog" + const val INSPECTION_OBJECT = "inspectionObject" + + val ASK_DEV_CODE_COMMAND = byteArrayOf(0x01, 0x0D, 0x0A)// 查询设备编号命令 + val OPEN_TRANSFER_COMMAND = byteArrayOf(0x02, 0x0D, 0x0A) // 开启数据发送命令 + const val SERVICE_UUID = "0003cdd0-0000-1000-8000-00805f9b0131"//连接设备的UUID + const val WRITE_CHARACTERISTIC_UUID = "0003cdd2-0000-1000-8000-00805f9b0131"//写数据特征值UUID + const val READ_CHARACTERISTIC_UUID = "0003cdd1-0000-1000-8000-00805f9b0131"//读数据特征值UUID } \ No newline at end of file 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 new file mode 100644 index 0000000..c7fba84 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -0,0 +1,123 @@ +package com.casic.birmm.inspect.utils + +import com.casic.birmm.inspect.base.BaseApplication +import com.casic.birmm.inspect.bean.InspectionBean +import com.casic.birmm.inspect.bean.TaskEventBean +import com.casic.birmm.inspect.greendao.TaskEventBeanDao +import com.casic.birmm.inspect.model.TaskRecordModel + +class DataBaseManager private constructor() { + + companion object { + //Kotlin委托模式双重锁单例 + val instance: DataBaseManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + DataBaseManager() + } + } + + /** + * 保存巡检记录到本地 + * */ + fun insertData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.insert(bean) + } + + /** + * 删除本地巡检记录 + * */ + fun deleteData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllInspection() { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.update(bean) + } + + /** + * 查询所有数据 + */ + fun queryAllInspection(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao?.queryBuilder() + ?.build()?.list() + } + + /**********************************************************************************************/ + + /** + * 保存事件记录到本地 + * */ + fun insertData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.insert(bean) + } + + /** + * 删除本地事件记录 + * */ + fun deleteData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllTask() { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.update(bean) + } + + /** + * 根据巡检Id查询事件数据 + */ + fun queryTaskByInspection(inspectionId: String): MutableList? { + val dataBeans: MutableList = ArrayList() + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.where(TaskEventBeanDao.Properties.InspectionId.eq(inspectionId)) + ?.orderDesc(TaskEventBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + ?.build() + ?.list()?.let { + it.forEach { taskBean -> + val listBean = TaskRecordModel.DataBean.ListBean() + listBean.createTime = taskBean.createTime + listBean.data = taskBean.data.toInt() + listBean.description = taskBean.description + listBean.id = taskBean.serverMainId + listBean.images = taskBean.images + listBean.inspectionId = taskBean.inspectionId + listBean.lat = taskBean.lat + listBean.lng = taskBean.lng + listBean.name = taskBean.name + listBean.type = taskBean.type + listBean.user = taskBean.user + dataBeans.add(listBean) + } + } + return dataBeans + } + + /** + * 查询所有数据 + */ + fun queryAllTask(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.build() + ?.list() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt new file mode 100644 index 0000000..fa53beb --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt @@ -0,0 +1,34 @@ +package com.casic.birmm.inspect.utils + +import android.content.Context +import android.util.Log +import com.amap.api.location.AMapLocationClient +import com.amap.api.location.AMapLocationClientOption +import com.casic.birmm.inspect.utils.callback.ILocationListener + +object LocationHelper { + private const val Tag = "LocationHelper" + + fun obtainCurrentLocation(context: Context, listener: ILocationListener) { + val locationClient = AMapLocationClient(context) + val locationOption = AMapLocationClientOption() + locationOption.locationMode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy; + locationOption.isNeedAddress = true//设置是否返回地址信息(默认返回地址信息) + locationOption.isOnceLocation = true//设置是否只定位一次,默认为false + locationOption.isMockEnable = false//设置是否允许模拟位置,默认为false,不允许模拟位置 + locationOption.isLocationCacheEnable = false //可选,设置是否使用缓存定位,默认为true + locationClient.setLocationOption(locationOption) + locationClient.setLocationListener { + if (it != null) { + if (it.errorCode == 0) { + listener.onAMapLocationGet(it) + } else { + Log.e( + Tag, "location Error, ErrCode:" + it.errorCode + ", errInfo:" + it.errorInfo + ) + } + } + } + locationClient.startLocation() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt new file mode 100644 index 0000000..a4def44 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt @@ -0,0 +1,8 @@ +package com.casic.birmm.inspect.utils.callback + +import com.amap.api.location.AMapLocation + + +interface ILocationListener { + fun onAMapLocationGet(aMapLocation: AMapLocation) //高德定位数据 +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index a05027e..c5c9a30 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -49,7 +49,7 @@ @Query("endTime") endTime: String, @Query("limit") limit: Int, @Query("offset") offset: Int - ): InspectModel + ): InspectListModel /** * 巡检记录列表 @@ -62,7 +62,7 @@ @Query("endTime") endTime: String, @Query("limit") limit: Int, @Query("offset") offset: Int - ): EventModel + ): EventListModel /** * 获取巡检详情 @@ -93,4 +93,24 @@ @Header("token") token: String, @Part file: MultipartBody.Part ): ActionResultModel + + /** + * 新增事件 + */ + @FormUrlEncoded + @POST("/task/add") + suspend fun addEventTask( + @Header("token") token: String, + @Field("id") id: String, + @Field("inspectionId") inspectionId: String, + @Field("name") name: String, + @Field("createTime") createTime: String, + @Field("type") type: String, + @Field("Lng") Lng: Double, + @Field("Lat") Lat: Double, + @Field("data") data: Double, + @Field("images") images: String, + @Field("description") description: String, + @Field("user") user: String + ): ActionResultModel } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index df03b14..d24faff 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -49,7 +49,7 @@ startTime: String, endTime: String, pageIndex: Int - ): InspectModel { + ): InspectListModel { return api.obtainInspectList( AuthenticationHelper.token!!, keywords, @@ -68,7 +68,7 @@ startTime: String, endTime: String, pageIndex: Int - ): EventModel { + ): EventListModel { return api.obtainEventList( AuthenticationHelper.token!!, keywords, @@ -101,4 +101,17 @@ val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody) return api.uploadImage(AuthenticationHelper.token!!, imagePart) } + + /** + * 新增事件 + */ + suspend fun addEventTask( + id: String, inspectionId: String, name: String, createTime: String, type: String, + lng: Double, lat: Double, data: Double, images: String, description: String, user: String + ): ActionResultModel { + return api.addEventTask( + AuthenticationHelper.token!!, id, inspectionId, name, createTime, + type, lng, lat, data, images, description, user + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 12c7c7e..ff6de36 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -11,7 +11,7 @@ import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.model.EventModel +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 @@ -38,7 +38,7 @@ private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var adapter: EventSearchListAdapter diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java new file mode 100644 index 0000000..b7077a3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java @@ -0,0 +1,237 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.InspectionBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "INSPECTION_BEAN". +*/ +public class InspectionBeanDao extends AbstractDao { + + public static final String TABLENAME = "INSPECTION_BEAN"; + + /** + * Properties of entity InspectionBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property Name = new Property(2, String.class, "name", false, "NAME"); + public final static Property StartTime = new Property(3, String.class, "startTime", false, "START_TIME"); + public final static Property EndTime = new Property(4, String.class, "endTime", false, "END_TIME"); + public final static Property Date = new Property(5, String.class, "date", false, "DATE"); + public final static Property StartLng = new Property(6, double.class, "startLng", false, "START_LNG"); + public final static Property StartLat = new Property(7, double.class, "startLat", false, "START_LAT"); + public final static Property EndLng = new Property(8, double.class, "endLng", false, "END_LNG"); + public final static Property EndLat = new Property(9, double.class, "endLat", false, "END_LAT"); + public final static Property Routes = new Property(10, String.class, "routes", false, "ROUTES"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public InspectionBeanDao(DaoConfig config) { + super(config); + } + + public InspectionBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"INSPECTION_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"NAME\" TEXT," + // 2: name + "\"START_TIME\" TEXT," + // 3: startTime + "\"END_TIME\" TEXT," + // 4: endTime + "\"DATE\" TEXT," + // 5: date + "\"START_LNG\" REAL NOT NULL ," + // 6: startLng + "\"START_LAT\" REAL NOT NULL ," + // 7: startLat + "\"END_LNG\" REAL NOT NULL ," + // 8: endLng + "\"END_LAT\" REAL NOT NULL ," + // 9: endLat + "\"ROUTES\" TEXT," + // 10: routes + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"INSPECTION_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public InspectionBean readEntity(Cursor cursor, int offset) { + InspectionBean entity = new InspectionBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // startTime + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // endTime + cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // date + cursor.getDouble(offset + 6), // startLng + cursor.getDouble(offset + 7), // startLat + cursor.getDouble(offset + 8), // endLng + cursor.getDouble(offset + 9), // endLat + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // routes + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, InspectionBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setStartTime(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setEndTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setDate(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5)); + entity.setStartLng(cursor.getDouble(offset + 6)); + entity.setStartLat(cursor.getDouble(offset + 7)); + entity.setEndLng(cursor.getDouble(offset + 8)); + entity.setEndLat(cursor.getDouble(offset + 9)); + entity.setRoutes(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(InspectionBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(InspectionBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(InspectionBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java new file mode 100644 index 0000000..3f040d3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java @@ -0,0 +1,245 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.TaskEventBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "TASK_EVENT_BEAN". +*/ +public class TaskEventBeanDao extends AbstractDao { + + public static final String TABLENAME = "TASK_EVENT_BEAN"; + + /** + * Properties of entity TaskEventBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property InspectionId = new Property(2, String.class, "inspectionId", false, "INSPECTION_ID"); + public final static Property Name = new Property(3, String.class, "name", false, "NAME"); + public final static Property CreateTime = new Property(4, String.class, "createTime", false, "CREATE_TIME"); + public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); + public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); + public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); + public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); + public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public TaskEventBeanDao(DaoConfig config) { + super(config); + } + + public TaskEventBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"TASK_EVENT_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"INSPECTION_ID\" TEXT," + // 2: inspectionId + "\"NAME\" TEXT," + // 3: name + "\"CREATE_TIME\" TEXT," + // 4: createTime + "\"LNG\" REAL NOT NULL ," + // 5: lng + "\"LAT\" REAL NOT NULL ," + // 6: lat + "\"TYPE\" TEXT," + // 7: type + "\"DATA\" REAL NOT NULL ," + // 8: data + "\"IMAGES\" TEXT," + // 9: images + "\"DESCRIPTION\" TEXT," + // 10: description + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"TASK_EVENT_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public TaskEventBean readEntity(Cursor cursor, int offset) { + TaskEventBean entity = new TaskEventBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // name + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getDouble(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, TaskEventBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setInspectionId(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setName(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setCreateTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setLng(cursor.getDouble(offset + 5)); + entity.setLat(cursor.getDouble(offset + 6)); + entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); + entity.setData(cursor.getDouble(offset + 8)); + entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); + entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(TaskEventBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(TaskEventBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(TaskEventBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt new file mode 100644 index 0000000..dc635a4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt @@ -0,0 +1,41 @@ +package com.casic.birmm.inspect.model + +class EventListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var total = 0 + var rows: MutableList? = + null + + class RowsBean { + /** + * createTime : 2020-12-28 14:56:59 + * data : -1 + * description : ggg + * id : t1609138629320112121 + * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg + * inspectionId : 1609138451543200022 + * lat : 39.915956 + * lng : 116.268596 + * name : sss + * type : 自定义事件 + * user : 超超级管理员 + */ + var createTime: String? = null + var data = 0 + var description: String? = null + var id: String? = null + var images: String? = null + var inspectionId: String? = null + var lat = 0.0 + var lng = 0.0 + var name: String? = null + var type: String? = null + var user: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt deleted file mode 100644 index de499aa..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.birmm.inspect.model - -class EventModel { - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var total = 0 - var rows: MutableList? = - null - - class RowsBean { - /** - * createTime : 2020-12-28 14:56:59 - * data : -1 - * description : ggg - * id : t1609138629320112121 - * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg - * inspectionId : 1609138451543200022 - * lat : 39.915956 - * lng : 116.268596 - * name : sss - * type : 自定义事件 - * user : 超超级管理员 - */ - var createTime: String? = null - var data = 0 - var description: String? = null - var id: String? = null - var images: String? = null - var inspectionId: String? = null - var lat = 0.0 - var lng = 0.0 - var name: String? = null - var type: String? = null - var user: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt new file mode 100644 index 0000000..395b6e8 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt @@ -0,0 +1,43 @@ +package com.casic.birmm.inspect.model + +class InspectListModel { + + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + + var total = 0 + var rows: MutableList? = null + + class RowsBean { + /** + * date : 2021年07月08日 + * endLat : 39.915908 + * endLng : 116.26876 + * endTime : 2021-07-08 11:20:20 + * id : 162570318141612121 + * name : 测试 + * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] + * startLat : 39.913365 + * startLng : 116.269462 + * startTime : 2021-07-08 08:13:01 + * user : 王晓颖 + */ + var date: String? = null + var endLat = 0.0 + var endLng = 0.0 + var endTime: String? = null + var id: String? = null + var name: String? = null + var routes: String? = null + var startLat = 0.0 + var startLng = 0.0 + var startTime: String? = null + var user: String? = null + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt deleted file mode 100644 index 558e716..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.casic.birmm.inspect.model - -class InspectModel { - - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - - var total = 0 - var rows: MutableList? = null - - class RowsBean { - /** - * date : 2021年07月08日 - * endLat : 39.915908 - * endLng : 116.26876 - * endTime : 2021-07-08 11:20:20 - * id : 162570318141612121 - * name : 测试 - * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] - * startLat : 39.913365 - * startLng : 116.269462 - * startTime : 2021-07-08 08:13:01 - * user : 王晓颖 - */ - var date: String? = null - var endLat = 0.0 - var endLng = 0.0 - var endTime: String? = null - var id: String? = null - var name: String? = null - var routes: String? = null - var startLat = 0.0 - var startLng = 0.0 - var startTime: String? = null - var user: String? = null - - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt index ee6f1f6..beb469b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.model +//同巡检Id的事件列表数据模型 class TaskRecordModel { var code = 0 @@ -8,7 +9,7 @@ var isSuccess = false class DataBean { - var list: List? = null + var list: MutableList? = null class ListBean { /** diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt new file mode 100644 index 0000000..8201cb4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt @@ -0,0 +1,89 @@ +package com.casic.birmm.inspect.utils + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.util.Log +import com.casic.birmm.inspect.base.BaseApplication + + +class BroadcastManager private constructor() { + + private var mContext: Context = BaseApplication.instance + private var receiverMap: HashMap = HashMap() + + companion object { + private const val Tag = "BroadcastManager" + + val instance: BroadcastManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + BroadcastManager() + } + } + + /** + * 添加单个Action,广播的初始化 + */ + fun addAction(action: String, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + filter.addAction(action) + mContext.registerReceiver(receiver, filter) + receiverMap[action] = receiver + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 添加多个Action,广播的初始化 + */ + fun addAction(actions: Array, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + actions.forEach { + filter.addAction(it) + receiverMap[it] = receiver + } + mContext.registerReceiver(receiver, filter) + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 发送广播 + * + * @param action 唯一码 + * @param msg 参数 + */ + fun sendBroadcast(action: String, msg: String) { + try { + val intent = Intent() + intent.action = action + intent.putExtra("data", msg) + mContext.sendBroadcast(intent) + Log.d(Tag, "发送广播: $msg") + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 销毁广播 + * + * @param actions action集合 + */ + fun destroy(vararg actions: String) { + try { + actions.forEach { + val receiver = receiverMap[it] + if (receiver != null) { + mContext.unregisterReceiver(receiver) + } + } + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt index 0c9e963..507655b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt @@ -16,13 +16,25 @@ const val BLUETOOTH_ON = 20 const val BLUETOOTH_OFF = 21 const val DEVICE_CONNECTED = 22 - const val DEVICE_DISCONNECTED = 23 + const val DEVICE_CONNECT_FAIL = 23 + const val DEVICE_DISCONNECTED = 24 + const val SEND_SUCCESS = 25 + const val SEND_FAILURE = 26 + const val RECEIVE_SUCCESS = 27 + const val RECEIVE_FAILURE = 28 const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val IMAGE_MINUS_SIZE = 50 * 1024 + const val IMAGE_MINUS_SIZE = 100 * 1024 const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val USER_OBJECT = "userObject" const val OPEN_WARNING = "isOpenWarning" const val AUTO_RECORD = "isRecordLog" + const val INSPECTION_OBJECT = "inspectionObject" + + val ASK_DEV_CODE_COMMAND = byteArrayOf(0x01, 0x0D, 0x0A)// 查询设备编号命令 + val OPEN_TRANSFER_COMMAND = byteArrayOf(0x02, 0x0D, 0x0A) // 开启数据发送命令 + const val SERVICE_UUID = "0003cdd0-0000-1000-8000-00805f9b0131"//连接设备的UUID + const val WRITE_CHARACTERISTIC_UUID = "0003cdd2-0000-1000-8000-00805f9b0131"//写数据特征值UUID + const val READ_CHARACTERISTIC_UUID = "0003cdd1-0000-1000-8000-00805f9b0131"//读数据特征值UUID } \ No newline at end of file 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 new file mode 100644 index 0000000..c7fba84 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -0,0 +1,123 @@ +package com.casic.birmm.inspect.utils + +import com.casic.birmm.inspect.base.BaseApplication +import com.casic.birmm.inspect.bean.InspectionBean +import com.casic.birmm.inspect.bean.TaskEventBean +import com.casic.birmm.inspect.greendao.TaskEventBeanDao +import com.casic.birmm.inspect.model.TaskRecordModel + +class DataBaseManager private constructor() { + + companion object { + //Kotlin委托模式双重锁单例 + val instance: DataBaseManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + DataBaseManager() + } + } + + /** + * 保存巡检记录到本地 + * */ + fun insertData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.insert(bean) + } + + /** + * 删除本地巡检记录 + * */ + fun deleteData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllInspection() { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.update(bean) + } + + /** + * 查询所有数据 + */ + fun queryAllInspection(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao?.queryBuilder() + ?.build()?.list() + } + + /**********************************************************************************************/ + + /** + * 保存事件记录到本地 + * */ + fun insertData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.insert(bean) + } + + /** + * 删除本地事件记录 + * */ + fun deleteData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllTask() { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.update(bean) + } + + /** + * 根据巡检Id查询事件数据 + */ + fun queryTaskByInspection(inspectionId: String): MutableList? { + val dataBeans: MutableList = ArrayList() + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.where(TaskEventBeanDao.Properties.InspectionId.eq(inspectionId)) + ?.orderDesc(TaskEventBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + ?.build() + ?.list()?.let { + it.forEach { taskBean -> + val listBean = TaskRecordModel.DataBean.ListBean() + listBean.createTime = taskBean.createTime + listBean.data = taskBean.data.toInt() + listBean.description = taskBean.description + listBean.id = taskBean.serverMainId + listBean.images = taskBean.images + listBean.inspectionId = taskBean.inspectionId + listBean.lat = taskBean.lat + listBean.lng = taskBean.lng + listBean.name = taskBean.name + listBean.type = taskBean.type + listBean.user = taskBean.user + dataBeans.add(listBean) + } + } + return dataBeans + } + + /** + * 查询所有数据 + */ + fun queryAllTask(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.build() + ?.list() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt new file mode 100644 index 0000000..fa53beb --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt @@ -0,0 +1,34 @@ +package com.casic.birmm.inspect.utils + +import android.content.Context +import android.util.Log +import com.amap.api.location.AMapLocationClient +import com.amap.api.location.AMapLocationClientOption +import com.casic.birmm.inspect.utils.callback.ILocationListener + +object LocationHelper { + private const val Tag = "LocationHelper" + + fun obtainCurrentLocation(context: Context, listener: ILocationListener) { + val locationClient = AMapLocationClient(context) + val locationOption = AMapLocationClientOption() + locationOption.locationMode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy; + locationOption.isNeedAddress = true//设置是否返回地址信息(默认返回地址信息) + locationOption.isOnceLocation = true//设置是否只定位一次,默认为false + locationOption.isMockEnable = false//设置是否允许模拟位置,默认为false,不允许模拟位置 + locationOption.isLocationCacheEnable = false //可选,设置是否使用缓存定位,默认为true + locationClient.setLocationOption(locationOption) + locationClient.setLocationListener { + if (it != null) { + if (it.errorCode == 0) { + listener.onAMapLocationGet(it) + } else { + Log.e( + Tag, "location Error, ErrCode:" + it.errorCode + ", errInfo:" + it.errorInfo + ) + } + } + } + locationClient.startLocation() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt new file mode 100644 index 0000000..a4def44 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt @@ -0,0 +1,8 @@ +package com.casic.birmm.inspect.utils.callback + +import com.amap.api.location.AMapLocation + + +interface ILocationListener { + fun onAMapLocationGet(aMapLocation: AMapLocation) //高德定位数据 +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index a05027e..c5c9a30 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -49,7 +49,7 @@ @Query("endTime") endTime: String, @Query("limit") limit: Int, @Query("offset") offset: Int - ): InspectModel + ): InspectListModel /** * 巡检记录列表 @@ -62,7 +62,7 @@ @Query("endTime") endTime: String, @Query("limit") limit: Int, @Query("offset") offset: Int - ): EventModel + ): EventListModel /** * 获取巡检详情 @@ -93,4 +93,24 @@ @Header("token") token: String, @Part file: MultipartBody.Part ): ActionResultModel + + /** + * 新增事件 + */ + @FormUrlEncoded + @POST("/task/add") + suspend fun addEventTask( + @Header("token") token: String, + @Field("id") id: String, + @Field("inspectionId") inspectionId: String, + @Field("name") name: String, + @Field("createTime") createTime: String, + @Field("type") type: String, + @Field("Lng") Lng: Double, + @Field("Lat") Lat: Double, + @Field("data") data: Double, + @Field("images") images: String, + @Field("description") description: String, + @Field("user") user: String + ): ActionResultModel } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index df03b14..d24faff 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -49,7 +49,7 @@ startTime: String, endTime: String, pageIndex: Int - ): InspectModel { + ): InspectListModel { return api.obtainInspectList( AuthenticationHelper.token!!, keywords, @@ -68,7 +68,7 @@ startTime: String, endTime: String, pageIndex: Int - ): EventModel { + ): EventListModel { return api.obtainEventList( AuthenticationHelper.token!!, keywords, @@ -101,4 +101,17 @@ val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody) return api.uploadImage(AuthenticationHelper.token!!, imagePart) } + + /** + * 新增事件 + */ + suspend fun addEventTask( + id: String, inspectionId: String, name: String, createTime: String, type: String, + lng: Double, lat: Double, data: Double, images: String, description: String, user: String + ): ActionResultModel { + return api.addEventTask( + AuthenticationHelper.token!!, id, inspectionId, name, createTime, + type, lng, lat, data, images, description, user + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 12c7c7e..ff6de36 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -11,7 +11,7 @@ import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.model.EventModel +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 @@ -38,7 +38,7 @@ private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var adapter: EventSearchListAdapter diff --git a/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt index 2e57bec..9cce3ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt @@ -7,6 +7,8 @@ import android.view.ViewGroup.MarginLayoutParams import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider +import com.aihook.alertview.library.AlertView +import com.aihook.alertview.library.OnItemClickListener import com.casic.birmm.inspect.R import com.casic.birmm.inspect.base.BaseActivity import com.casic.birmm.inspect.extensions.show @@ -68,9 +70,35 @@ val userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) userViewModel.getUserInfo() userViewModel.resultModel.observe(this, Observer { - SaveKeyValues.putValue(Constant.USER_OBJECT, Gson().toJson(it))//保存用户对象 - startActivity(Intent(this, MainActivity::class.java)) - finish() + if (it.code == 200) { + SaveKeyValues.putValue(Constant.USER_OBJECT, Gson().toJson(it))//保存用户对象 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } else { + AlertView("温馨提示", + it.message, + "等会再来", + arrayOf("去登录"), + null, + this, + AlertView.Style.Alert, + OnItemClickListener { _, position -> + when (position) { + -1 -> { + this@GuideActivity.finish() + } + 0 -> { + startActivity( + Intent( + this@GuideActivity, + LoginActivity::class.java + ) + ) + finish() + } + } + }).show() + } }) userViewModel.loadState.observe(this, Observer { "获取用户信息失败,请重试".show(this) diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java new file mode 100644 index 0000000..b7077a3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java @@ -0,0 +1,237 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.InspectionBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "INSPECTION_BEAN". +*/ +public class InspectionBeanDao extends AbstractDao { + + public static final String TABLENAME = "INSPECTION_BEAN"; + + /** + * Properties of entity InspectionBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property Name = new Property(2, String.class, "name", false, "NAME"); + public final static Property StartTime = new Property(3, String.class, "startTime", false, "START_TIME"); + public final static Property EndTime = new Property(4, String.class, "endTime", false, "END_TIME"); + public final static Property Date = new Property(5, String.class, "date", false, "DATE"); + public final static Property StartLng = new Property(6, double.class, "startLng", false, "START_LNG"); + public final static Property StartLat = new Property(7, double.class, "startLat", false, "START_LAT"); + public final static Property EndLng = new Property(8, double.class, "endLng", false, "END_LNG"); + public final static Property EndLat = new Property(9, double.class, "endLat", false, "END_LAT"); + public final static Property Routes = new Property(10, String.class, "routes", false, "ROUTES"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public InspectionBeanDao(DaoConfig config) { + super(config); + } + + public InspectionBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"INSPECTION_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"NAME\" TEXT," + // 2: name + "\"START_TIME\" TEXT," + // 3: startTime + "\"END_TIME\" TEXT," + // 4: endTime + "\"DATE\" TEXT," + // 5: date + "\"START_LNG\" REAL NOT NULL ," + // 6: startLng + "\"START_LAT\" REAL NOT NULL ," + // 7: startLat + "\"END_LNG\" REAL NOT NULL ," + // 8: endLng + "\"END_LAT\" REAL NOT NULL ," + // 9: endLat + "\"ROUTES\" TEXT," + // 10: routes + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"INSPECTION_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public InspectionBean readEntity(Cursor cursor, int offset) { + InspectionBean entity = new InspectionBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // startTime + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // endTime + cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // date + cursor.getDouble(offset + 6), // startLng + cursor.getDouble(offset + 7), // startLat + cursor.getDouble(offset + 8), // endLng + cursor.getDouble(offset + 9), // endLat + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // routes + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, InspectionBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setStartTime(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setEndTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setDate(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5)); + entity.setStartLng(cursor.getDouble(offset + 6)); + entity.setStartLat(cursor.getDouble(offset + 7)); + entity.setEndLng(cursor.getDouble(offset + 8)); + entity.setEndLat(cursor.getDouble(offset + 9)); + entity.setRoutes(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(InspectionBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(InspectionBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(InspectionBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java new file mode 100644 index 0000000..3f040d3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java @@ -0,0 +1,245 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.TaskEventBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "TASK_EVENT_BEAN". +*/ +public class TaskEventBeanDao extends AbstractDao { + + public static final String TABLENAME = "TASK_EVENT_BEAN"; + + /** + * Properties of entity TaskEventBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property InspectionId = new Property(2, String.class, "inspectionId", false, "INSPECTION_ID"); + public final static Property Name = new Property(3, String.class, "name", false, "NAME"); + public final static Property CreateTime = new Property(4, String.class, "createTime", false, "CREATE_TIME"); + public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); + public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); + public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); + public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); + public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public TaskEventBeanDao(DaoConfig config) { + super(config); + } + + public TaskEventBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"TASK_EVENT_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"INSPECTION_ID\" TEXT," + // 2: inspectionId + "\"NAME\" TEXT," + // 3: name + "\"CREATE_TIME\" TEXT," + // 4: createTime + "\"LNG\" REAL NOT NULL ," + // 5: lng + "\"LAT\" REAL NOT NULL ," + // 6: lat + "\"TYPE\" TEXT," + // 7: type + "\"DATA\" REAL NOT NULL ," + // 8: data + "\"IMAGES\" TEXT," + // 9: images + "\"DESCRIPTION\" TEXT," + // 10: description + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"TASK_EVENT_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public TaskEventBean readEntity(Cursor cursor, int offset) { + TaskEventBean entity = new TaskEventBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // name + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getDouble(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, TaskEventBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setInspectionId(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setName(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setCreateTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setLng(cursor.getDouble(offset + 5)); + entity.setLat(cursor.getDouble(offset + 6)); + entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); + entity.setData(cursor.getDouble(offset + 8)); + entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); + entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(TaskEventBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(TaskEventBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(TaskEventBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt new file mode 100644 index 0000000..dc635a4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt @@ -0,0 +1,41 @@ +package com.casic.birmm.inspect.model + +class EventListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var total = 0 + var rows: MutableList? = + null + + class RowsBean { + /** + * createTime : 2020-12-28 14:56:59 + * data : -1 + * description : ggg + * id : t1609138629320112121 + * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg + * inspectionId : 1609138451543200022 + * lat : 39.915956 + * lng : 116.268596 + * name : sss + * type : 自定义事件 + * user : 超超级管理员 + */ + var createTime: String? = null + var data = 0 + var description: String? = null + var id: String? = null + var images: String? = null + var inspectionId: String? = null + var lat = 0.0 + var lng = 0.0 + var name: String? = null + var type: String? = null + var user: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt deleted file mode 100644 index de499aa..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.birmm.inspect.model - -class EventModel { - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var total = 0 - var rows: MutableList? = - null - - class RowsBean { - /** - * createTime : 2020-12-28 14:56:59 - * data : -1 - * description : ggg - * id : t1609138629320112121 - * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg - * inspectionId : 1609138451543200022 - * lat : 39.915956 - * lng : 116.268596 - * name : sss - * type : 自定义事件 - * user : 超超级管理员 - */ - var createTime: String? = null - var data = 0 - var description: String? = null - var id: String? = null - var images: String? = null - var inspectionId: String? = null - var lat = 0.0 - var lng = 0.0 - var name: String? = null - var type: String? = null - var user: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt new file mode 100644 index 0000000..395b6e8 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt @@ -0,0 +1,43 @@ +package com.casic.birmm.inspect.model + +class InspectListModel { + + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + + var total = 0 + var rows: MutableList? = null + + class RowsBean { + /** + * date : 2021年07月08日 + * endLat : 39.915908 + * endLng : 116.26876 + * endTime : 2021-07-08 11:20:20 + * id : 162570318141612121 + * name : 测试 + * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] + * startLat : 39.913365 + * startLng : 116.269462 + * startTime : 2021-07-08 08:13:01 + * user : 王晓颖 + */ + var date: String? = null + var endLat = 0.0 + var endLng = 0.0 + var endTime: String? = null + var id: String? = null + var name: String? = null + var routes: String? = null + var startLat = 0.0 + var startLng = 0.0 + var startTime: String? = null + var user: String? = null + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt deleted file mode 100644 index 558e716..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.casic.birmm.inspect.model - -class InspectModel { - - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - - var total = 0 - var rows: MutableList? = null - - class RowsBean { - /** - * date : 2021年07月08日 - * endLat : 39.915908 - * endLng : 116.26876 - * endTime : 2021-07-08 11:20:20 - * id : 162570318141612121 - * name : 测试 - * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] - * startLat : 39.913365 - * startLng : 116.269462 - * startTime : 2021-07-08 08:13:01 - * user : 王晓颖 - */ - var date: String? = null - var endLat = 0.0 - var endLng = 0.0 - var endTime: String? = null - var id: String? = null - var name: String? = null - var routes: String? = null - var startLat = 0.0 - var startLng = 0.0 - var startTime: String? = null - var user: String? = null - - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt index ee6f1f6..beb469b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.model +//同巡检Id的事件列表数据模型 class TaskRecordModel { var code = 0 @@ -8,7 +9,7 @@ var isSuccess = false class DataBean { - var list: List? = null + var list: MutableList? = null class ListBean { /** diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt new file mode 100644 index 0000000..8201cb4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt @@ -0,0 +1,89 @@ +package com.casic.birmm.inspect.utils + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.util.Log +import com.casic.birmm.inspect.base.BaseApplication + + +class BroadcastManager private constructor() { + + private var mContext: Context = BaseApplication.instance + private var receiverMap: HashMap = HashMap() + + companion object { + private const val Tag = "BroadcastManager" + + val instance: BroadcastManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + BroadcastManager() + } + } + + /** + * 添加单个Action,广播的初始化 + */ + fun addAction(action: String, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + filter.addAction(action) + mContext.registerReceiver(receiver, filter) + receiverMap[action] = receiver + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 添加多个Action,广播的初始化 + */ + fun addAction(actions: Array, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + actions.forEach { + filter.addAction(it) + receiverMap[it] = receiver + } + mContext.registerReceiver(receiver, filter) + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 发送广播 + * + * @param action 唯一码 + * @param msg 参数 + */ + fun sendBroadcast(action: String, msg: String) { + try { + val intent = Intent() + intent.action = action + intent.putExtra("data", msg) + mContext.sendBroadcast(intent) + Log.d(Tag, "发送广播: $msg") + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 销毁广播 + * + * @param actions action集合 + */ + fun destroy(vararg actions: String) { + try { + actions.forEach { + val receiver = receiverMap[it] + if (receiver != null) { + mContext.unregisterReceiver(receiver) + } + } + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt index 0c9e963..507655b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt @@ -16,13 +16,25 @@ const val BLUETOOTH_ON = 20 const val BLUETOOTH_OFF = 21 const val DEVICE_CONNECTED = 22 - const val DEVICE_DISCONNECTED = 23 + const val DEVICE_CONNECT_FAIL = 23 + const val DEVICE_DISCONNECTED = 24 + const val SEND_SUCCESS = 25 + const val SEND_FAILURE = 26 + const val RECEIVE_SUCCESS = 27 + const val RECEIVE_FAILURE = 28 const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val IMAGE_MINUS_SIZE = 50 * 1024 + const val IMAGE_MINUS_SIZE = 100 * 1024 const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val USER_OBJECT = "userObject" const val OPEN_WARNING = "isOpenWarning" const val AUTO_RECORD = "isRecordLog" + const val INSPECTION_OBJECT = "inspectionObject" + + val ASK_DEV_CODE_COMMAND = byteArrayOf(0x01, 0x0D, 0x0A)// 查询设备编号命令 + val OPEN_TRANSFER_COMMAND = byteArrayOf(0x02, 0x0D, 0x0A) // 开启数据发送命令 + const val SERVICE_UUID = "0003cdd0-0000-1000-8000-00805f9b0131"//连接设备的UUID + const val WRITE_CHARACTERISTIC_UUID = "0003cdd2-0000-1000-8000-00805f9b0131"//写数据特征值UUID + const val READ_CHARACTERISTIC_UUID = "0003cdd1-0000-1000-8000-00805f9b0131"//读数据特征值UUID } \ No newline at end of file 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 new file mode 100644 index 0000000..c7fba84 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -0,0 +1,123 @@ +package com.casic.birmm.inspect.utils + +import com.casic.birmm.inspect.base.BaseApplication +import com.casic.birmm.inspect.bean.InspectionBean +import com.casic.birmm.inspect.bean.TaskEventBean +import com.casic.birmm.inspect.greendao.TaskEventBeanDao +import com.casic.birmm.inspect.model.TaskRecordModel + +class DataBaseManager private constructor() { + + companion object { + //Kotlin委托模式双重锁单例 + val instance: DataBaseManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + DataBaseManager() + } + } + + /** + * 保存巡检记录到本地 + * */ + fun insertData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.insert(bean) + } + + /** + * 删除本地巡检记录 + * */ + fun deleteData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllInspection() { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.update(bean) + } + + /** + * 查询所有数据 + */ + fun queryAllInspection(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao?.queryBuilder() + ?.build()?.list() + } + + /**********************************************************************************************/ + + /** + * 保存事件记录到本地 + * */ + fun insertData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.insert(bean) + } + + /** + * 删除本地事件记录 + * */ + fun deleteData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllTask() { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.update(bean) + } + + /** + * 根据巡检Id查询事件数据 + */ + fun queryTaskByInspection(inspectionId: String): MutableList? { + val dataBeans: MutableList = ArrayList() + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.where(TaskEventBeanDao.Properties.InspectionId.eq(inspectionId)) + ?.orderDesc(TaskEventBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + ?.build() + ?.list()?.let { + it.forEach { taskBean -> + val listBean = TaskRecordModel.DataBean.ListBean() + listBean.createTime = taskBean.createTime + listBean.data = taskBean.data.toInt() + listBean.description = taskBean.description + listBean.id = taskBean.serverMainId + listBean.images = taskBean.images + listBean.inspectionId = taskBean.inspectionId + listBean.lat = taskBean.lat + listBean.lng = taskBean.lng + listBean.name = taskBean.name + listBean.type = taskBean.type + listBean.user = taskBean.user + dataBeans.add(listBean) + } + } + return dataBeans + } + + /** + * 查询所有数据 + */ + fun queryAllTask(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.build() + ?.list() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt new file mode 100644 index 0000000..fa53beb --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt @@ -0,0 +1,34 @@ +package com.casic.birmm.inspect.utils + +import android.content.Context +import android.util.Log +import com.amap.api.location.AMapLocationClient +import com.amap.api.location.AMapLocationClientOption +import com.casic.birmm.inspect.utils.callback.ILocationListener + +object LocationHelper { + private const val Tag = "LocationHelper" + + fun obtainCurrentLocation(context: Context, listener: ILocationListener) { + val locationClient = AMapLocationClient(context) + val locationOption = AMapLocationClientOption() + locationOption.locationMode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy; + locationOption.isNeedAddress = true//设置是否返回地址信息(默认返回地址信息) + locationOption.isOnceLocation = true//设置是否只定位一次,默认为false + locationOption.isMockEnable = false//设置是否允许模拟位置,默认为false,不允许模拟位置 + locationOption.isLocationCacheEnable = false //可选,设置是否使用缓存定位,默认为true + locationClient.setLocationOption(locationOption) + locationClient.setLocationListener { + if (it != null) { + if (it.errorCode == 0) { + listener.onAMapLocationGet(it) + } else { + Log.e( + Tag, "location Error, ErrCode:" + it.errorCode + ", errInfo:" + it.errorInfo + ) + } + } + } + locationClient.startLocation() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt new file mode 100644 index 0000000..a4def44 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt @@ -0,0 +1,8 @@ +package com.casic.birmm.inspect.utils.callback + +import com.amap.api.location.AMapLocation + + +interface ILocationListener { + fun onAMapLocationGet(aMapLocation: AMapLocation) //高德定位数据 +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index a05027e..c5c9a30 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -49,7 +49,7 @@ @Query("endTime") endTime: String, @Query("limit") limit: Int, @Query("offset") offset: Int - ): InspectModel + ): InspectListModel /** * 巡检记录列表 @@ -62,7 +62,7 @@ @Query("endTime") endTime: String, @Query("limit") limit: Int, @Query("offset") offset: Int - ): EventModel + ): EventListModel /** * 获取巡检详情 @@ -93,4 +93,24 @@ @Header("token") token: String, @Part file: MultipartBody.Part ): ActionResultModel + + /** + * 新增事件 + */ + @FormUrlEncoded + @POST("/task/add") + suspend fun addEventTask( + @Header("token") token: String, + @Field("id") id: String, + @Field("inspectionId") inspectionId: String, + @Field("name") name: String, + @Field("createTime") createTime: String, + @Field("type") type: String, + @Field("Lng") Lng: Double, + @Field("Lat") Lat: Double, + @Field("data") data: Double, + @Field("images") images: String, + @Field("description") description: String, + @Field("user") user: String + ): ActionResultModel } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index df03b14..d24faff 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -49,7 +49,7 @@ startTime: String, endTime: String, pageIndex: Int - ): InspectModel { + ): InspectListModel { return api.obtainInspectList( AuthenticationHelper.token!!, keywords, @@ -68,7 +68,7 @@ startTime: String, endTime: String, pageIndex: Int - ): EventModel { + ): EventListModel { return api.obtainEventList( AuthenticationHelper.token!!, keywords, @@ -101,4 +101,17 @@ val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody) return api.uploadImage(AuthenticationHelper.token!!, imagePart) } + + /** + * 新增事件 + */ + suspend fun addEventTask( + id: String, inspectionId: String, name: String, createTime: String, type: String, + lng: Double, lat: Double, data: Double, images: String, description: String, user: String + ): ActionResultModel { + return api.addEventTask( + AuthenticationHelper.token!!, id, inspectionId, name, createTime, + type, lng, lat, data, images, description, user + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 12c7c7e..ff6de36 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -11,7 +11,7 @@ import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.model.EventModel +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 @@ -38,7 +38,7 @@ private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var adapter: EventSearchListAdapter diff --git a/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt index 2e57bec..9cce3ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt @@ -7,6 +7,8 @@ import android.view.ViewGroup.MarginLayoutParams import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider +import com.aihook.alertview.library.AlertView +import com.aihook.alertview.library.OnItemClickListener import com.casic.birmm.inspect.R import com.casic.birmm.inspect.base.BaseActivity import com.casic.birmm.inspect.extensions.show @@ -68,9 +70,35 @@ val userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) userViewModel.getUserInfo() userViewModel.resultModel.observe(this, Observer { - SaveKeyValues.putValue(Constant.USER_OBJECT, Gson().toJson(it))//保存用户对象 - startActivity(Intent(this, MainActivity::class.java)) - finish() + if (it.code == 200) { + SaveKeyValues.putValue(Constant.USER_OBJECT, Gson().toJson(it))//保存用户对象 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } else { + AlertView("温馨提示", + it.message, + "等会再来", + arrayOf("去登录"), + null, + this, + AlertView.Style.Alert, + OnItemClickListener { _, position -> + when (position) { + -1 -> { + this@GuideActivity.finish() + } + 0 -> { + startActivity( + Intent( + this@GuideActivity, + LoginActivity::class.java + ) + ) + finish() + } + } + }).show() + } }) userViewModel.loadState.observe(this, Observer { "获取用户信息失败,请重试".show(this) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt index da4b03e..03e0f95 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt @@ -10,7 +10,7 @@ import com.casic.birmm.inspect.adapter.InspectListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.PageNavigationManager import com.casic.birmm.inspect.utils.StatusBarColorUtil @@ -32,7 +32,7 @@ private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var adapter: InspectListAdapter diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java new file mode 100644 index 0000000..b7077a3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java @@ -0,0 +1,237 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.InspectionBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "INSPECTION_BEAN". +*/ +public class InspectionBeanDao extends AbstractDao { + + public static final String TABLENAME = "INSPECTION_BEAN"; + + /** + * Properties of entity InspectionBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property Name = new Property(2, String.class, "name", false, "NAME"); + public final static Property StartTime = new Property(3, String.class, "startTime", false, "START_TIME"); + public final static Property EndTime = new Property(4, String.class, "endTime", false, "END_TIME"); + public final static Property Date = new Property(5, String.class, "date", false, "DATE"); + public final static Property StartLng = new Property(6, double.class, "startLng", false, "START_LNG"); + public final static Property StartLat = new Property(7, double.class, "startLat", false, "START_LAT"); + public final static Property EndLng = new Property(8, double.class, "endLng", false, "END_LNG"); + public final static Property EndLat = new Property(9, double.class, "endLat", false, "END_LAT"); + public final static Property Routes = new Property(10, String.class, "routes", false, "ROUTES"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public InspectionBeanDao(DaoConfig config) { + super(config); + } + + public InspectionBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"INSPECTION_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"NAME\" TEXT," + // 2: name + "\"START_TIME\" TEXT," + // 3: startTime + "\"END_TIME\" TEXT," + // 4: endTime + "\"DATE\" TEXT," + // 5: date + "\"START_LNG\" REAL NOT NULL ," + // 6: startLng + "\"START_LAT\" REAL NOT NULL ," + // 7: startLat + "\"END_LNG\" REAL NOT NULL ," + // 8: endLng + "\"END_LAT\" REAL NOT NULL ," + // 9: endLat + "\"ROUTES\" TEXT," + // 10: routes + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"INSPECTION_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public InspectionBean readEntity(Cursor cursor, int offset) { + InspectionBean entity = new InspectionBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // startTime + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // endTime + cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // date + cursor.getDouble(offset + 6), // startLng + cursor.getDouble(offset + 7), // startLat + cursor.getDouble(offset + 8), // endLng + cursor.getDouble(offset + 9), // endLat + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // routes + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, InspectionBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setStartTime(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setEndTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setDate(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5)); + entity.setStartLng(cursor.getDouble(offset + 6)); + entity.setStartLat(cursor.getDouble(offset + 7)); + entity.setEndLng(cursor.getDouble(offset + 8)); + entity.setEndLat(cursor.getDouble(offset + 9)); + entity.setRoutes(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(InspectionBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(InspectionBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(InspectionBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java new file mode 100644 index 0000000..3f040d3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java @@ -0,0 +1,245 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.TaskEventBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "TASK_EVENT_BEAN". +*/ +public class TaskEventBeanDao extends AbstractDao { + + public static final String TABLENAME = "TASK_EVENT_BEAN"; + + /** + * Properties of entity TaskEventBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property InspectionId = new Property(2, String.class, "inspectionId", false, "INSPECTION_ID"); + public final static Property Name = new Property(3, String.class, "name", false, "NAME"); + public final static Property CreateTime = new Property(4, String.class, "createTime", false, "CREATE_TIME"); + public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); + public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); + public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); + public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); + public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public TaskEventBeanDao(DaoConfig config) { + super(config); + } + + public TaskEventBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"TASK_EVENT_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"INSPECTION_ID\" TEXT," + // 2: inspectionId + "\"NAME\" TEXT," + // 3: name + "\"CREATE_TIME\" TEXT," + // 4: createTime + "\"LNG\" REAL NOT NULL ," + // 5: lng + "\"LAT\" REAL NOT NULL ," + // 6: lat + "\"TYPE\" TEXT," + // 7: type + "\"DATA\" REAL NOT NULL ," + // 8: data + "\"IMAGES\" TEXT," + // 9: images + "\"DESCRIPTION\" TEXT," + // 10: description + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"TASK_EVENT_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public TaskEventBean readEntity(Cursor cursor, int offset) { + TaskEventBean entity = new TaskEventBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // name + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getDouble(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, TaskEventBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setInspectionId(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setName(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setCreateTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setLng(cursor.getDouble(offset + 5)); + entity.setLat(cursor.getDouble(offset + 6)); + entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); + entity.setData(cursor.getDouble(offset + 8)); + entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); + entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(TaskEventBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(TaskEventBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(TaskEventBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt new file mode 100644 index 0000000..dc635a4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt @@ -0,0 +1,41 @@ +package com.casic.birmm.inspect.model + +class EventListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var total = 0 + var rows: MutableList? = + null + + class RowsBean { + /** + * createTime : 2020-12-28 14:56:59 + * data : -1 + * description : ggg + * id : t1609138629320112121 + * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg + * inspectionId : 1609138451543200022 + * lat : 39.915956 + * lng : 116.268596 + * name : sss + * type : 自定义事件 + * user : 超超级管理员 + */ + var createTime: String? = null + var data = 0 + var description: String? = null + var id: String? = null + var images: String? = null + var inspectionId: String? = null + var lat = 0.0 + var lng = 0.0 + var name: String? = null + var type: String? = null + var user: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt deleted file mode 100644 index de499aa..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.birmm.inspect.model - -class EventModel { - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var total = 0 - var rows: MutableList? = - null - - class RowsBean { - /** - * createTime : 2020-12-28 14:56:59 - * data : -1 - * description : ggg - * id : t1609138629320112121 - * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg - * inspectionId : 1609138451543200022 - * lat : 39.915956 - * lng : 116.268596 - * name : sss - * type : 自定义事件 - * user : 超超级管理员 - */ - var createTime: String? = null - var data = 0 - var description: String? = null - var id: String? = null - var images: String? = null - var inspectionId: String? = null - var lat = 0.0 - var lng = 0.0 - var name: String? = null - var type: String? = null - var user: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt new file mode 100644 index 0000000..395b6e8 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt @@ -0,0 +1,43 @@ +package com.casic.birmm.inspect.model + +class InspectListModel { + + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + + var total = 0 + var rows: MutableList? = null + + class RowsBean { + /** + * date : 2021年07月08日 + * endLat : 39.915908 + * endLng : 116.26876 + * endTime : 2021-07-08 11:20:20 + * id : 162570318141612121 + * name : 测试 + * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] + * startLat : 39.913365 + * startLng : 116.269462 + * startTime : 2021-07-08 08:13:01 + * user : 王晓颖 + */ + var date: String? = null + var endLat = 0.0 + var endLng = 0.0 + var endTime: String? = null + var id: String? = null + var name: String? = null + var routes: String? = null + var startLat = 0.0 + var startLng = 0.0 + var startTime: String? = null + var user: String? = null + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt deleted file mode 100644 index 558e716..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.casic.birmm.inspect.model - -class InspectModel { - - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - - var total = 0 - var rows: MutableList? = null - - class RowsBean { - /** - * date : 2021年07月08日 - * endLat : 39.915908 - * endLng : 116.26876 - * endTime : 2021-07-08 11:20:20 - * id : 162570318141612121 - * name : 测试 - * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] - * startLat : 39.913365 - * startLng : 116.269462 - * startTime : 2021-07-08 08:13:01 - * user : 王晓颖 - */ - var date: String? = null - var endLat = 0.0 - var endLng = 0.0 - var endTime: String? = null - var id: String? = null - var name: String? = null - var routes: String? = null - var startLat = 0.0 - var startLng = 0.0 - var startTime: String? = null - var user: String? = null - - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt index ee6f1f6..beb469b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.model +//同巡检Id的事件列表数据模型 class TaskRecordModel { var code = 0 @@ -8,7 +9,7 @@ var isSuccess = false class DataBean { - var list: List? = null + var list: MutableList? = null class ListBean { /** diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt new file mode 100644 index 0000000..8201cb4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt @@ -0,0 +1,89 @@ +package com.casic.birmm.inspect.utils + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.util.Log +import com.casic.birmm.inspect.base.BaseApplication + + +class BroadcastManager private constructor() { + + private var mContext: Context = BaseApplication.instance + private var receiverMap: HashMap = HashMap() + + companion object { + private const val Tag = "BroadcastManager" + + val instance: BroadcastManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + BroadcastManager() + } + } + + /** + * 添加单个Action,广播的初始化 + */ + fun addAction(action: String, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + filter.addAction(action) + mContext.registerReceiver(receiver, filter) + receiverMap[action] = receiver + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 添加多个Action,广播的初始化 + */ + fun addAction(actions: Array, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + actions.forEach { + filter.addAction(it) + receiverMap[it] = receiver + } + mContext.registerReceiver(receiver, filter) + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 发送广播 + * + * @param action 唯一码 + * @param msg 参数 + */ + fun sendBroadcast(action: String, msg: String) { + try { + val intent = Intent() + intent.action = action + intent.putExtra("data", msg) + mContext.sendBroadcast(intent) + Log.d(Tag, "发送广播: $msg") + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 销毁广播 + * + * @param actions action集合 + */ + fun destroy(vararg actions: String) { + try { + actions.forEach { + val receiver = receiverMap[it] + if (receiver != null) { + mContext.unregisterReceiver(receiver) + } + } + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt index 0c9e963..507655b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt @@ -16,13 +16,25 @@ const val BLUETOOTH_ON = 20 const val BLUETOOTH_OFF = 21 const val DEVICE_CONNECTED = 22 - const val DEVICE_DISCONNECTED = 23 + const val DEVICE_CONNECT_FAIL = 23 + const val DEVICE_DISCONNECTED = 24 + const val SEND_SUCCESS = 25 + const val SEND_FAILURE = 26 + const val RECEIVE_SUCCESS = 27 + const val RECEIVE_FAILURE = 28 const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val IMAGE_MINUS_SIZE = 50 * 1024 + const val IMAGE_MINUS_SIZE = 100 * 1024 const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val USER_OBJECT = "userObject" const val OPEN_WARNING = "isOpenWarning" const val AUTO_RECORD = "isRecordLog" + const val INSPECTION_OBJECT = "inspectionObject" + + val ASK_DEV_CODE_COMMAND = byteArrayOf(0x01, 0x0D, 0x0A)// 查询设备编号命令 + val OPEN_TRANSFER_COMMAND = byteArrayOf(0x02, 0x0D, 0x0A) // 开启数据发送命令 + const val SERVICE_UUID = "0003cdd0-0000-1000-8000-00805f9b0131"//连接设备的UUID + const val WRITE_CHARACTERISTIC_UUID = "0003cdd2-0000-1000-8000-00805f9b0131"//写数据特征值UUID + const val READ_CHARACTERISTIC_UUID = "0003cdd1-0000-1000-8000-00805f9b0131"//读数据特征值UUID } \ No newline at end of file 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 new file mode 100644 index 0000000..c7fba84 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -0,0 +1,123 @@ +package com.casic.birmm.inspect.utils + +import com.casic.birmm.inspect.base.BaseApplication +import com.casic.birmm.inspect.bean.InspectionBean +import com.casic.birmm.inspect.bean.TaskEventBean +import com.casic.birmm.inspect.greendao.TaskEventBeanDao +import com.casic.birmm.inspect.model.TaskRecordModel + +class DataBaseManager private constructor() { + + companion object { + //Kotlin委托模式双重锁单例 + val instance: DataBaseManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + DataBaseManager() + } + } + + /** + * 保存巡检记录到本地 + * */ + fun insertData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.insert(bean) + } + + /** + * 删除本地巡检记录 + * */ + fun deleteData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllInspection() { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.update(bean) + } + + /** + * 查询所有数据 + */ + fun queryAllInspection(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao?.queryBuilder() + ?.build()?.list() + } + + /**********************************************************************************************/ + + /** + * 保存事件记录到本地 + * */ + fun insertData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.insert(bean) + } + + /** + * 删除本地事件记录 + * */ + fun deleteData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllTask() { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.update(bean) + } + + /** + * 根据巡检Id查询事件数据 + */ + fun queryTaskByInspection(inspectionId: String): MutableList? { + val dataBeans: MutableList = ArrayList() + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.where(TaskEventBeanDao.Properties.InspectionId.eq(inspectionId)) + ?.orderDesc(TaskEventBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + ?.build() + ?.list()?.let { + it.forEach { taskBean -> + val listBean = TaskRecordModel.DataBean.ListBean() + listBean.createTime = taskBean.createTime + listBean.data = taskBean.data.toInt() + listBean.description = taskBean.description + listBean.id = taskBean.serverMainId + listBean.images = taskBean.images + listBean.inspectionId = taskBean.inspectionId + listBean.lat = taskBean.lat + listBean.lng = taskBean.lng + listBean.name = taskBean.name + listBean.type = taskBean.type + listBean.user = taskBean.user + dataBeans.add(listBean) + } + } + return dataBeans + } + + /** + * 查询所有数据 + */ + fun queryAllTask(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.build() + ?.list() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt new file mode 100644 index 0000000..fa53beb --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt @@ -0,0 +1,34 @@ +package com.casic.birmm.inspect.utils + +import android.content.Context +import android.util.Log +import com.amap.api.location.AMapLocationClient +import com.amap.api.location.AMapLocationClientOption +import com.casic.birmm.inspect.utils.callback.ILocationListener + +object LocationHelper { + private const val Tag = "LocationHelper" + + fun obtainCurrentLocation(context: Context, listener: ILocationListener) { + val locationClient = AMapLocationClient(context) + val locationOption = AMapLocationClientOption() + locationOption.locationMode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy; + locationOption.isNeedAddress = true//设置是否返回地址信息(默认返回地址信息) + locationOption.isOnceLocation = true//设置是否只定位一次,默认为false + locationOption.isMockEnable = false//设置是否允许模拟位置,默认为false,不允许模拟位置 + locationOption.isLocationCacheEnable = false //可选,设置是否使用缓存定位,默认为true + locationClient.setLocationOption(locationOption) + locationClient.setLocationListener { + if (it != null) { + if (it.errorCode == 0) { + listener.onAMapLocationGet(it) + } else { + Log.e( + Tag, "location Error, ErrCode:" + it.errorCode + ", errInfo:" + it.errorInfo + ) + } + } + } + locationClient.startLocation() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt new file mode 100644 index 0000000..a4def44 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt @@ -0,0 +1,8 @@ +package com.casic.birmm.inspect.utils.callback + +import com.amap.api.location.AMapLocation + + +interface ILocationListener { + fun onAMapLocationGet(aMapLocation: AMapLocation) //高德定位数据 +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index a05027e..c5c9a30 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -49,7 +49,7 @@ @Query("endTime") endTime: String, @Query("limit") limit: Int, @Query("offset") offset: Int - ): InspectModel + ): InspectListModel /** * 巡检记录列表 @@ -62,7 +62,7 @@ @Query("endTime") endTime: String, @Query("limit") limit: Int, @Query("offset") offset: Int - ): EventModel + ): EventListModel /** * 获取巡检详情 @@ -93,4 +93,24 @@ @Header("token") token: String, @Part file: MultipartBody.Part ): ActionResultModel + + /** + * 新增事件 + */ + @FormUrlEncoded + @POST("/task/add") + suspend fun addEventTask( + @Header("token") token: String, + @Field("id") id: String, + @Field("inspectionId") inspectionId: String, + @Field("name") name: String, + @Field("createTime") createTime: String, + @Field("type") type: String, + @Field("Lng") Lng: Double, + @Field("Lat") Lat: Double, + @Field("data") data: Double, + @Field("images") images: String, + @Field("description") description: String, + @Field("user") user: String + ): ActionResultModel } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index df03b14..d24faff 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -49,7 +49,7 @@ startTime: String, endTime: String, pageIndex: Int - ): InspectModel { + ): InspectListModel { return api.obtainInspectList( AuthenticationHelper.token!!, keywords, @@ -68,7 +68,7 @@ startTime: String, endTime: String, pageIndex: Int - ): EventModel { + ): EventListModel { return api.obtainEventList( AuthenticationHelper.token!!, keywords, @@ -101,4 +101,17 @@ val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody) return api.uploadImage(AuthenticationHelper.token!!, imagePart) } + + /** + * 新增事件 + */ + suspend fun addEventTask( + id: String, inspectionId: String, name: String, createTime: String, type: String, + lng: Double, lat: Double, data: Double, images: String, description: String, user: String + ): ActionResultModel { + return api.addEventTask( + AuthenticationHelper.token!!, id, inspectionId, name, createTime, + type, lng, lat, data, images, description, user + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 12c7c7e..ff6de36 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -11,7 +11,7 @@ import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.model.EventModel +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 @@ -38,7 +38,7 @@ private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var adapter: EventSearchListAdapter diff --git a/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt index 2e57bec..9cce3ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt @@ -7,6 +7,8 @@ import android.view.ViewGroup.MarginLayoutParams import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider +import com.aihook.alertview.library.AlertView +import com.aihook.alertview.library.OnItemClickListener import com.casic.birmm.inspect.R import com.casic.birmm.inspect.base.BaseActivity import com.casic.birmm.inspect.extensions.show @@ -68,9 +70,35 @@ val userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) userViewModel.getUserInfo() userViewModel.resultModel.observe(this, Observer { - SaveKeyValues.putValue(Constant.USER_OBJECT, Gson().toJson(it))//保存用户对象 - startActivity(Intent(this, MainActivity::class.java)) - finish() + if (it.code == 200) { + SaveKeyValues.putValue(Constant.USER_OBJECT, Gson().toJson(it))//保存用户对象 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } else { + AlertView("温馨提示", + it.message, + "等会再来", + arrayOf("去登录"), + null, + this, + AlertView.Style.Alert, + OnItemClickListener { _, position -> + when (position) { + -1 -> { + this@GuideActivity.finish() + } + 0 -> { + startActivity( + Intent( + this@GuideActivity, + LoginActivity::class.java + ) + ) + finish() + } + } + }).show() + } }) userViewModel.loadState.observe(this, Observer { "获取用户信息失败,请重试".show(this) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt index da4b03e..03e0f95 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt @@ -10,7 +10,7 @@ import com.casic.birmm.inspect.adapter.InspectListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.PageNavigationManager import com.casic.birmm.inspect.utils.StatusBarColorUtil @@ -32,7 +32,7 @@ private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var adapter: InspectListAdapter diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt index 91fb674..dab7f0c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt @@ -1,27 +1,38 @@ package com.casic.birmm.inspect.view import android.bluetooth.BluetoothAdapter +import android.bluetooth.BluetoothDevice +import android.content.BroadcastReceiver +import android.content.Context import android.content.Intent -import android.graphics.Color import android.os.Bundle import android.os.Handler import android.os.Message import android.util.Log import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProvider +import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.MyLocationStyle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.bean.BlueToothBean +import com.casic.birmm.inspect.bean.InspectionBean +import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.utils.Constant -import com.casic.birmm.inspect.utils.OtherUtils -import com.casic.birmm.inspect.utils.PageNavigationManager -import com.casic.birmm.inspect.utils.StatusBarColorUtil +import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.UserInfoModel +import com.casic.birmm.inspect.utils.* +import com.casic.birmm.inspect.utils.callback.ILocationListener +import com.casic.birmm.inspect.vm.TaskRecordViewModel import com.casic.birmm.inspect.widgets.InputDialog import com.casic.birmm.inspect.widgets.SingleChoiceDialog +import com.google.gson.Gson import com.gyf.immersionbar.ImmersionBar import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet import kotlinx.android.synthetic.main.activity_inspect_route.mapView import kotlinx.android.synthetic.main.activity_map.* import kotlinx.android.synthetic.main.include_base_title.* @@ -42,9 +53,21 @@ } } + private val itemList: List = arrayListOf("报警事件", "自定义事件") private lateinit var aMap: AMap private lateinit var locationStyle: MyLocationStyle - private val itemList: List = arrayListOf("报警事件", "自定义事件") + private lateinit var inspectionName: String + private lateinit var inspectionId: String + private lateinit var inspectionBean: InspectionBean + private lateinit var userDataModel: UserInfoModel.DataBean + private var dataBeans: MutableList = ArrayList() + private var routes: MutableList = ArrayList()//路线集和 + private var gson: Gson = Gson() + private var isBluetoothOn = true + private var blueToothDevices: MutableList = ArrayList() + private var blueToothBeans: MutableList = ArrayList()//搜索展示列表 + private var bluetoothAdapter: BluetoothAdapter? = null + private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 init { weakReferenceHandler = WeakReferenceHandler(this) @@ -53,22 +76,40 @@ private class WeakReferenceHandler(activity: MapActivity) : Handler() { private val activity: WeakReference = WeakReference(activity) override fun handleMessage(msg: Message) { - val mainActivity = activity.get() ?: return + val mapActivity = activity.get() ?: return when (msg.what) { Constant.BLUETOOTH_ON -> { - "蓝牙已开启".show(mainActivity) - mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + "蓝牙已开启".show(mapActivity) + mapActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + mapActivity.isBluetoothOn = true } Constant.BLUETOOTH_OFF -> { - "蓝牙已关闭".show(mainActivity) - mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + "蓝牙已关闭".show(mapActivity) + mapActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + mapActivity.isBluetoothOn = false } Constant.DEVICE_CONNECTED -> { //TODO 设备已连接 + mapActivity.communicateWithDevice(Constant.ASK_DEV_CODE_COMMAND) + } + Constant.DEVICE_CONNECT_FAIL -> { + //TODO 设备连接失败/超时 } Constant.DEVICE_DISCONNECTED -> { //TODO 设备断开连接 } + Constant.SEND_SUCCESS -> { + //TODO 发送成功 + } + Constant.SEND_FAILURE -> { + //TODO 发送失败 + } + Constant.RECEIVE_SUCCESS -> { + //TODO 接收成功 + } + Constant.RECEIVE_FAILURE -> { + //TODO 接收失败 + } } } } @@ -79,7 +120,8 @@ PageNavigationManager.addActivity(this) setupTopBarLayout() if (OtherUtils.isNetworkConnected(this)) { - initData(savedInstanceState) + initData() + initMap(savedInstanceState) initEvent() } else { "糟糕,没有接入任何网络~".show(this) @@ -93,7 +135,133 @@ titleView.text = "巡检" } - fun initData(savedInstanceState: Bundle?) { + fun initData() { + val userModelJson = SaveKeyValues.getValue(Constant.USER_OBJECT, "") as String + userDataModel = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! + //蓝牙搜索监听 + BroadcastManager.instance.addAction( + arrayOf( + BluetoothDevice.ACTION_FOUND, + BluetoothAdapter.ACTION_DISCOVERY_FINISHED + ), object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + when (intent?.action) { + BluetoothDevice.ACTION_FOUND -> { + val device = + intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE) + lateinit var bean: BlueToothBean + device?.let { + bean = if (it.name == null || it.name == "") { + BlueToothBean("设备名未知", it.address) + } else { + BlueToothBean(device.name, device.address) + } + } + if (bean.blueToothName != "设备名未知") { + if (blueToothBeans.size == 0) { + blueToothBeans.add(bean) + blueToothDevices.add(device) + } else { + //0表示未添加到list的新设备,1表示已经扫描并添加到list的设备 + var judge = 0 + for (it in blueToothBeans) { + if (it.blueToothAddress == bean.blueToothAddress) { + judge = 1 + break + } + } + if (judge == 0) { + blueToothBeans.add(bean) + blueToothDevices.add(device) + } + } + } + } + BluetoothAdapter.ACTION_DISCOVERY_FINISHED -> { + OtherUtils.dismissLoadingDialog() + bluetoothButton.isEnabled = true + Log.d(Tag, gson.toJson(blueToothBeans)) + val sheetBuilder = + QMUIBottomSheet.BottomListSheetBuilder(this@MapActivity) + sheetBuilder.setTitle("请选择要连接的设备") + blueToothBeans.forEach { + sheetBuilder.addItem(it.blueToothName) + } + sheetBuilder.setGravityCenter(true).setAddCancelBtn(true) + .setOnSheetItemClickListener { dialog, _, position, _ -> + dialog.dismiss() + //连接点击的设备 + startConnectDevice( + blueToothBeans[position].blueToothName, + blueToothDevices[position] + ) + }.build().show() + } + } + } + }) + } + + private fun startConnectDevice(deviceName: String, bluetoothDevice: BluetoothDevice?) { + if (bluetoothDevice == null) { + Log.d(Tag, "startConnectDevice-->bluetoothDevice == null") + return + } + this.currentDevice = bluetoothDevice + if (bluetoothAdapter == null) { + Log.d(Tag, "startConnectDevice-->bluetoothAdapter == null") + return + } + OtherUtils.showLoadingDialog(this, "正在连接[$deviceName]...") + + } + +// private fun manageConnectSendReceiveData(bluetoothSocket: BluetoothSocket) { +// connectedThread = ConnectedThread(bluetoothSocket) +// connectedThread!!.start() +// connectedThread!!.setOnSendReceiveDataListener(object : +// ConnectedThread.OnSendReceiveDataListener { +// override fun onSendDataSuccess(data: ByteArray?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.SEND_SUCCESS +// message.obj = "发送数据成功,长度" + data!!.size + "->" + ConnectedThread.bytes2HexString( +// data, +// data.size +// ) +// weakReferenceHandler.sendMessage(message) +// } +// +// override fun onSendDataError(data: ByteArray?, errorMsg: String?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.SEND_FAILURE +// message.obj = "发送数据出错,长度" + data!!.size + "->" + ConnectedThread.bytes2HexString( +// data, +// data.size +// ) +// weakReferenceHandler.sendMessage(message) +// } +// +// override fun onReceiveDataSuccess(buffer: ByteArray?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.RECEIVE_SUCCESS +// message.obj = +// "成功接收数据,长度" + buffer!!.size + "->" + ConnectedThread.bytes2HexString( +// buffer, +// buffer.size +// ) +// weakReferenceHandler.sendMessage(message) +// } +// +// override fun onReceiveDataError(errorMsg: String?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.RECEIVE_FAILURE +// message.obj = "接收数据出错:$errorMsg" +// weakReferenceHandler.sendMessage(message) +// } +// }) +// } + + private fun initMap(savedInstanceState: Bundle?) { mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -102,35 +270,19 @@ //显示定位小蓝点 locationStyle = MyLocationStyle() locationStyle.showMyLocation(true)//设置是否显示定位小蓝点 - locationStyle.strokeColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的边框颜色 - locationStyle.radiusFillColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的填充颜色 aMap.myLocationStyle = locationStyle aMap.isMyLocationEnabled = true aMap.addOnMyLocationChangeListener { - Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]") + // Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]") } } fun initEvent() { leftBackView.setOnClickListener { this.finish() } + //地图左边五个按钮事件 + menuButtonEvent() //需要判断是否是上次未完的巡检 -// selectInspectMode() - - //判断蓝牙的状态 - val blueAdapter = BluetoothAdapter.getDefaultAdapter() - if (blueAdapter == null) { - "该设备不支持蓝牙,无法连接".show(this) - } else { - if (blueAdapter.isEnabled) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { - //搜索蓝牙 - } - } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) - //打开 - } - } + selectInspectMode() newEventButton.setChangeAlphaWhenPress(true) newEventButton.setOnClickListener { @@ -149,29 +301,149 @@ intent.putExtra("isWarning", false) } } - startActivity(intent) + //获取当前定位 + LocationHelper.obtainCurrentLocation(this@MapActivity, + object : ILocationListener { + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + intent.putExtra("inspectionId", inspectionId) + intent.putExtra("inspectionName", inspectionName) + intent.putExtra("longitude", aMapLocation.longitude) + intent.putExtra("latitude", aMapLocation.latitude) + startActivity(intent) + } + }) } }) .build().show() } } + private fun menuButtonEvent() { + //判断蓝牙的状态 + bluetoothAdapter = BluetoothAdapter.getDefaultAdapter() + if (bluetoothAdapter == null) { + "该设备不支持蓝牙,无法连接".show(this) + return + } + if (bluetoothAdapter!!.isEnabled) { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { + if (currentDevice == null) { + //搜索蓝牙 + searchDevice() + } else { + if (currentDevice!!.bondState == BluetoothDevice.BOND_NONE) { + searchDevice() + } else { + //断开连接 + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + "设备已断开连接".show(this) + } + } + } + } else { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + //打开 + startActivity(Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)) + } + } + + private fun searchDevice() { + //搜索蓝牙 + if (bluetoothAdapter!!.isDiscovering) { + //搜索中不让再次搜索 + bluetoothButton.isEnabled = false + return + } + OtherUtils.showLoadingDialog(this, "设备搜索中..."); + bluetoothAdapter!!.startDiscovery() + } + private fun selectInspectMode() { - InputDialog.Builder().setContext(this) - .setTitle("请输入巡检标签") - .setHintText("如:xxx区间巡检") - .setNegativeButton("放弃") - .setPositiveButton("开始巡检") - .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener { - override fun onConfirmClick(input: String) { + val currentInspection = SaveKeyValues.getValue(Constant.INSPECTION_OBJECT, "") as String + if (currentInspection != "") { + inspectionBean = gson.fromJson(currentInspection, InspectionBean::class.java) + /** + * 获取最近的Task + * */ + if (OtherUtils.isNetworkConnected(this)) { + val taskViewModel = ViewModelProvider(this).get(TaskRecordViewModel::class.java) + taskViewModel.searchByInspection(inspectionBean.serverMainId) + taskViewModel.resultModel.observe(this, Observer { + dataBeans = it.data!!.list!! + }) + } else { + dataBeans = + DataBaseManager.instance.queryTaskByInspection(inspectionBean.serverMainId)!! + } + "欢迎回来,继续未完成巡检".show(this) + } else { + InputDialog.Builder().setContext(this) + .setTitle("请输入巡检标签") + .setHintText("如:xxx区间巡检") + .setNegativeButton("放弃") + .setPositiveButton("开始巡检") + .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener { + override fun onConfirmClick(input: String) { + val currentTimeMillis = System.currentTimeMillis() + //新建巡检,inspectionId必为空 + inspectionId = currentTimeMillis.id() + inspectionName = input - } + inspectionBean = + InspectionBean( + System.currentTimeMillis(), + inspectionId, + inspectionName, + TimeOrDateUtil.timestampToCompleteDate(currentTimeMillis), + "", + TimeOrDateUtil.timestampToDate(currentTimeMillis), + 0.0, + 0.0, + 0.0, + 0.0, + "", + userDataModel.name + ) + startInspection() + } - override fun onCancelClick() { - finish() + override fun onCancelClick() { + finish() + } + }) + .build().show() + } + } + + /** + * 开始巡检,获取坐标,开定时器,和设备交互 + * */ + fun startInspection() { + LocationHelper.obtainCurrentLocation(this, object : ILocationListener { + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + routes.add(aMapLocation) + inspectionBean.routes = gson.toJson(routes) + if (inspectionBean.startLng == 0.0) { + inspectionBean.startLng = aMapLocation.longitude + inspectionBean.startLat = aMapLocation.latitude } - }) - .build().show() + } + }) + updateCurrentInspection() + // 和设备通信 + communicateWithDevice(Constant.OPEN_TRANSFER_COMMAND) + } + + private fun updateCurrentInspection() { + SaveKeyValues.putValue(Constant.INSPECTION_OBJECT, gson.toJson(inspectionBean)) + } + + private fun communicateWithDevice(cmd: ByteArray) { + } override fun onResume() { diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java new file mode 100644 index 0000000..b7077a3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java @@ -0,0 +1,237 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.InspectionBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "INSPECTION_BEAN". +*/ +public class InspectionBeanDao extends AbstractDao { + + public static final String TABLENAME = "INSPECTION_BEAN"; + + /** + * Properties of entity InspectionBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property Name = new Property(2, String.class, "name", false, "NAME"); + public final static Property StartTime = new Property(3, String.class, "startTime", false, "START_TIME"); + public final static Property EndTime = new Property(4, String.class, "endTime", false, "END_TIME"); + public final static Property Date = new Property(5, String.class, "date", false, "DATE"); + public final static Property StartLng = new Property(6, double.class, "startLng", false, "START_LNG"); + public final static Property StartLat = new Property(7, double.class, "startLat", false, "START_LAT"); + public final static Property EndLng = new Property(8, double.class, "endLng", false, "END_LNG"); + public final static Property EndLat = new Property(9, double.class, "endLat", false, "END_LAT"); + public final static Property Routes = new Property(10, String.class, "routes", false, "ROUTES"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public InspectionBeanDao(DaoConfig config) { + super(config); + } + + public InspectionBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"INSPECTION_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"NAME\" TEXT," + // 2: name + "\"START_TIME\" TEXT," + // 3: startTime + "\"END_TIME\" TEXT," + // 4: endTime + "\"DATE\" TEXT," + // 5: date + "\"START_LNG\" REAL NOT NULL ," + // 6: startLng + "\"START_LAT\" REAL NOT NULL ," + // 7: startLat + "\"END_LNG\" REAL NOT NULL ," + // 8: endLng + "\"END_LAT\" REAL NOT NULL ," + // 9: endLat + "\"ROUTES\" TEXT," + // 10: routes + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"INSPECTION_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public InspectionBean readEntity(Cursor cursor, int offset) { + InspectionBean entity = new InspectionBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // startTime + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // endTime + cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // date + cursor.getDouble(offset + 6), // startLng + cursor.getDouble(offset + 7), // startLat + cursor.getDouble(offset + 8), // endLng + cursor.getDouble(offset + 9), // endLat + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // routes + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, InspectionBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setStartTime(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setEndTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setDate(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5)); + entity.setStartLng(cursor.getDouble(offset + 6)); + entity.setStartLat(cursor.getDouble(offset + 7)); + entity.setEndLng(cursor.getDouble(offset + 8)); + entity.setEndLat(cursor.getDouble(offset + 9)); + entity.setRoutes(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(InspectionBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(InspectionBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(InspectionBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java new file mode 100644 index 0000000..3f040d3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java @@ -0,0 +1,245 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.TaskEventBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "TASK_EVENT_BEAN". +*/ +public class TaskEventBeanDao extends AbstractDao { + + public static final String TABLENAME = "TASK_EVENT_BEAN"; + + /** + * Properties of entity TaskEventBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property InspectionId = new Property(2, String.class, "inspectionId", false, "INSPECTION_ID"); + public final static Property Name = new Property(3, String.class, "name", false, "NAME"); + public final static Property CreateTime = new Property(4, String.class, "createTime", false, "CREATE_TIME"); + public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); + public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); + public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); + public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); + public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public TaskEventBeanDao(DaoConfig config) { + super(config); + } + + public TaskEventBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"TASK_EVENT_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"INSPECTION_ID\" TEXT," + // 2: inspectionId + "\"NAME\" TEXT," + // 3: name + "\"CREATE_TIME\" TEXT," + // 4: createTime + "\"LNG\" REAL NOT NULL ," + // 5: lng + "\"LAT\" REAL NOT NULL ," + // 6: lat + "\"TYPE\" TEXT," + // 7: type + "\"DATA\" REAL NOT NULL ," + // 8: data + "\"IMAGES\" TEXT," + // 9: images + "\"DESCRIPTION\" TEXT," + // 10: description + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"TASK_EVENT_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public TaskEventBean readEntity(Cursor cursor, int offset) { + TaskEventBean entity = new TaskEventBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // name + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getDouble(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, TaskEventBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setInspectionId(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setName(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setCreateTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setLng(cursor.getDouble(offset + 5)); + entity.setLat(cursor.getDouble(offset + 6)); + entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); + entity.setData(cursor.getDouble(offset + 8)); + entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); + entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(TaskEventBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(TaskEventBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(TaskEventBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt new file mode 100644 index 0000000..dc635a4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt @@ -0,0 +1,41 @@ +package com.casic.birmm.inspect.model + +class EventListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var total = 0 + var rows: MutableList? = + null + + class RowsBean { + /** + * createTime : 2020-12-28 14:56:59 + * data : -1 + * description : ggg + * id : t1609138629320112121 + * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg + * inspectionId : 1609138451543200022 + * lat : 39.915956 + * lng : 116.268596 + * name : sss + * type : 自定义事件 + * user : 超超级管理员 + */ + var createTime: String? = null + var data = 0 + var description: String? = null + var id: String? = null + var images: String? = null + var inspectionId: String? = null + var lat = 0.0 + var lng = 0.0 + var name: String? = null + var type: String? = null + var user: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt deleted file mode 100644 index de499aa..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.birmm.inspect.model - -class EventModel { - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var total = 0 - var rows: MutableList? = - null - - class RowsBean { - /** - * createTime : 2020-12-28 14:56:59 - * data : -1 - * description : ggg - * id : t1609138629320112121 - * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg - * inspectionId : 1609138451543200022 - * lat : 39.915956 - * lng : 116.268596 - * name : sss - * type : 自定义事件 - * user : 超超级管理员 - */ - var createTime: String? = null - var data = 0 - var description: String? = null - var id: String? = null - var images: String? = null - var inspectionId: String? = null - var lat = 0.0 - var lng = 0.0 - var name: String? = null - var type: String? = null - var user: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt new file mode 100644 index 0000000..395b6e8 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt @@ -0,0 +1,43 @@ +package com.casic.birmm.inspect.model + +class InspectListModel { + + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + + var total = 0 + var rows: MutableList? = null + + class RowsBean { + /** + * date : 2021年07月08日 + * endLat : 39.915908 + * endLng : 116.26876 + * endTime : 2021-07-08 11:20:20 + * id : 162570318141612121 + * name : 测试 + * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] + * startLat : 39.913365 + * startLng : 116.269462 + * startTime : 2021-07-08 08:13:01 + * user : 王晓颖 + */ + var date: String? = null + var endLat = 0.0 + var endLng = 0.0 + var endTime: String? = null + var id: String? = null + var name: String? = null + var routes: String? = null + var startLat = 0.0 + var startLng = 0.0 + var startTime: String? = null + var user: String? = null + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt deleted file mode 100644 index 558e716..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.casic.birmm.inspect.model - -class InspectModel { - - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - - var total = 0 - var rows: MutableList? = null - - class RowsBean { - /** - * date : 2021年07月08日 - * endLat : 39.915908 - * endLng : 116.26876 - * endTime : 2021-07-08 11:20:20 - * id : 162570318141612121 - * name : 测试 - * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] - * startLat : 39.913365 - * startLng : 116.269462 - * startTime : 2021-07-08 08:13:01 - * user : 王晓颖 - */ - var date: String? = null - var endLat = 0.0 - var endLng = 0.0 - var endTime: String? = null - var id: String? = null - var name: String? = null - var routes: String? = null - var startLat = 0.0 - var startLng = 0.0 - var startTime: String? = null - var user: String? = null - - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt index ee6f1f6..beb469b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.model +//同巡检Id的事件列表数据模型 class TaskRecordModel { var code = 0 @@ -8,7 +9,7 @@ var isSuccess = false class DataBean { - var list: List? = null + var list: MutableList? = null class ListBean { /** diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt new file mode 100644 index 0000000..8201cb4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt @@ -0,0 +1,89 @@ +package com.casic.birmm.inspect.utils + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.util.Log +import com.casic.birmm.inspect.base.BaseApplication + + +class BroadcastManager private constructor() { + + private var mContext: Context = BaseApplication.instance + private var receiverMap: HashMap = HashMap() + + companion object { + private const val Tag = "BroadcastManager" + + val instance: BroadcastManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + BroadcastManager() + } + } + + /** + * 添加单个Action,广播的初始化 + */ + fun addAction(action: String, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + filter.addAction(action) + mContext.registerReceiver(receiver, filter) + receiverMap[action] = receiver + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 添加多个Action,广播的初始化 + */ + fun addAction(actions: Array, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + actions.forEach { + filter.addAction(it) + receiverMap[it] = receiver + } + mContext.registerReceiver(receiver, filter) + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 发送广播 + * + * @param action 唯一码 + * @param msg 参数 + */ + fun sendBroadcast(action: String, msg: String) { + try { + val intent = Intent() + intent.action = action + intent.putExtra("data", msg) + mContext.sendBroadcast(intent) + Log.d(Tag, "发送广播: $msg") + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 销毁广播 + * + * @param actions action集合 + */ + fun destroy(vararg actions: String) { + try { + actions.forEach { + val receiver = receiverMap[it] + if (receiver != null) { + mContext.unregisterReceiver(receiver) + } + } + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt index 0c9e963..507655b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt @@ -16,13 +16,25 @@ const val BLUETOOTH_ON = 20 const val BLUETOOTH_OFF = 21 const val DEVICE_CONNECTED = 22 - const val DEVICE_DISCONNECTED = 23 + const val DEVICE_CONNECT_FAIL = 23 + const val DEVICE_DISCONNECTED = 24 + const val SEND_SUCCESS = 25 + const val SEND_FAILURE = 26 + const val RECEIVE_SUCCESS = 27 + const val RECEIVE_FAILURE = 28 const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val IMAGE_MINUS_SIZE = 50 * 1024 + const val IMAGE_MINUS_SIZE = 100 * 1024 const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val USER_OBJECT = "userObject" const val OPEN_WARNING = "isOpenWarning" const val AUTO_RECORD = "isRecordLog" + const val INSPECTION_OBJECT = "inspectionObject" + + val ASK_DEV_CODE_COMMAND = byteArrayOf(0x01, 0x0D, 0x0A)// 查询设备编号命令 + val OPEN_TRANSFER_COMMAND = byteArrayOf(0x02, 0x0D, 0x0A) // 开启数据发送命令 + const val SERVICE_UUID = "0003cdd0-0000-1000-8000-00805f9b0131"//连接设备的UUID + const val WRITE_CHARACTERISTIC_UUID = "0003cdd2-0000-1000-8000-00805f9b0131"//写数据特征值UUID + const val READ_CHARACTERISTIC_UUID = "0003cdd1-0000-1000-8000-00805f9b0131"//读数据特征值UUID } \ No newline at end of file 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 new file mode 100644 index 0000000..c7fba84 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -0,0 +1,123 @@ +package com.casic.birmm.inspect.utils + +import com.casic.birmm.inspect.base.BaseApplication +import com.casic.birmm.inspect.bean.InspectionBean +import com.casic.birmm.inspect.bean.TaskEventBean +import com.casic.birmm.inspect.greendao.TaskEventBeanDao +import com.casic.birmm.inspect.model.TaskRecordModel + +class DataBaseManager private constructor() { + + companion object { + //Kotlin委托模式双重锁单例 + val instance: DataBaseManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + DataBaseManager() + } + } + + /** + * 保存巡检记录到本地 + * */ + fun insertData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.insert(bean) + } + + /** + * 删除本地巡检记录 + * */ + fun deleteData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllInspection() { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.update(bean) + } + + /** + * 查询所有数据 + */ + fun queryAllInspection(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao?.queryBuilder() + ?.build()?.list() + } + + /**********************************************************************************************/ + + /** + * 保存事件记录到本地 + * */ + fun insertData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.insert(bean) + } + + /** + * 删除本地事件记录 + * */ + fun deleteData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllTask() { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.update(bean) + } + + /** + * 根据巡检Id查询事件数据 + */ + fun queryTaskByInspection(inspectionId: String): MutableList? { + val dataBeans: MutableList = ArrayList() + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.where(TaskEventBeanDao.Properties.InspectionId.eq(inspectionId)) + ?.orderDesc(TaskEventBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + ?.build() + ?.list()?.let { + it.forEach { taskBean -> + val listBean = TaskRecordModel.DataBean.ListBean() + listBean.createTime = taskBean.createTime + listBean.data = taskBean.data.toInt() + listBean.description = taskBean.description + listBean.id = taskBean.serverMainId + listBean.images = taskBean.images + listBean.inspectionId = taskBean.inspectionId + listBean.lat = taskBean.lat + listBean.lng = taskBean.lng + listBean.name = taskBean.name + listBean.type = taskBean.type + listBean.user = taskBean.user + dataBeans.add(listBean) + } + } + return dataBeans + } + + /** + * 查询所有数据 + */ + fun queryAllTask(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.build() + ?.list() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt new file mode 100644 index 0000000..fa53beb --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt @@ -0,0 +1,34 @@ +package com.casic.birmm.inspect.utils + +import android.content.Context +import android.util.Log +import com.amap.api.location.AMapLocationClient +import com.amap.api.location.AMapLocationClientOption +import com.casic.birmm.inspect.utils.callback.ILocationListener + +object LocationHelper { + private const val Tag = "LocationHelper" + + fun obtainCurrentLocation(context: Context, listener: ILocationListener) { + val locationClient = AMapLocationClient(context) + val locationOption = AMapLocationClientOption() + locationOption.locationMode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy; + locationOption.isNeedAddress = true//设置是否返回地址信息(默认返回地址信息) + locationOption.isOnceLocation = true//设置是否只定位一次,默认为false + locationOption.isMockEnable = false//设置是否允许模拟位置,默认为false,不允许模拟位置 + locationOption.isLocationCacheEnable = false //可选,设置是否使用缓存定位,默认为true + locationClient.setLocationOption(locationOption) + locationClient.setLocationListener { + if (it != null) { + if (it.errorCode == 0) { + listener.onAMapLocationGet(it) + } else { + Log.e( + Tag, "location Error, ErrCode:" + it.errorCode + ", errInfo:" + it.errorInfo + ) + } + } + } + locationClient.startLocation() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt new file mode 100644 index 0000000..a4def44 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt @@ -0,0 +1,8 @@ +package com.casic.birmm.inspect.utils.callback + +import com.amap.api.location.AMapLocation + + +interface ILocationListener { + fun onAMapLocationGet(aMapLocation: AMapLocation) //高德定位数据 +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index a05027e..c5c9a30 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -49,7 +49,7 @@ @Query("endTime") endTime: String, @Query("limit") limit: Int, @Query("offset") offset: Int - ): InspectModel + ): InspectListModel /** * 巡检记录列表 @@ -62,7 +62,7 @@ @Query("endTime") endTime: String, @Query("limit") limit: Int, @Query("offset") offset: Int - ): EventModel + ): EventListModel /** * 获取巡检详情 @@ -93,4 +93,24 @@ @Header("token") token: String, @Part file: MultipartBody.Part ): ActionResultModel + + /** + * 新增事件 + */ + @FormUrlEncoded + @POST("/task/add") + suspend fun addEventTask( + @Header("token") token: String, + @Field("id") id: String, + @Field("inspectionId") inspectionId: String, + @Field("name") name: String, + @Field("createTime") createTime: String, + @Field("type") type: String, + @Field("Lng") Lng: Double, + @Field("Lat") Lat: Double, + @Field("data") data: Double, + @Field("images") images: String, + @Field("description") description: String, + @Field("user") user: String + ): ActionResultModel } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index df03b14..d24faff 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -49,7 +49,7 @@ startTime: String, endTime: String, pageIndex: Int - ): InspectModel { + ): InspectListModel { return api.obtainInspectList( AuthenticationHelper.token!!, keywords, @@ -68,7 +68,7 @@ startTime: String, endTime: String, pageIndex: Int - ): EventModel { + ): EventListModel { return api.obtainEventList( AuthenticationHelper.token!!, keywords, @@ -101,4 +101,17 @@ val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody) return api.uploadImage(AuthenticationHelper.token!!, imagePart) } + + /** + * 新增事件 + */ + suspend fun addEventTask( + id: String, inspectionId: String, name: String, createTime: String, type: String, + lng: Double, lat: Double, data: Double, images: String, description: String, user: String + ): ActionResultModel { + return api.addEventTask( + AuthenticationHelper.token!!, id, inspectionId, name, createTime, + type, lng, lat, data, images, description, user + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 12c7c7e..ff6de36 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -11,7 +11,7 @@ import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.model.EventModel +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 @@ -38,7 +38,7 @@ private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var adapter: EventSearchListAdapter diff --git a/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt index 2e57bec..9cce3ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt @@ -7,6 +7,8 @@ import android.view.ViewGroup.MarginLayoutParams import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider +import com.aihook.alertview.library.AlertView +import com.aihook.alertview.library.OnItemClickListener import com.casic.birmm.inspect.R import com.casic.birmm.inspect.base.BaseActivity import com.casic.birmm.inspect.extensions.show @@ -68,9 +70,35 @@ val userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) userViewModel.getUserInfo() userViewModel.resultModel.observe(this, Observer { - SaveKeyValues.putValue(Constant.USER_OBJECT, Gson().toJson(it))//保存用户对象 - startActivity(Intent(this, MainActivity::class.java)) - finish() + if (it.code == 200) { + SaveKeyValues.putValue(Constant.USER_OBJECT, Gson().toJson(it))//保存用户对象 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } else { + AlertView("温馨提示", + it.message, + "等会再来", + arrayOf("去登录"), + null, + this, + AlertView.Style.Alert, + OnItemClickListener { _, position -> + when (position) { + -1 -> { + this@GuideActivity.finish() + } + 0 -> { + startActivity( + Intent( + this@GuideActivity, + LoginActivity::class.java + ) + ) + finish() + } + } + }).show() + } }) userViewModel.loadState.observe(this, Observer { "获取用户信息失败,请重试".show(this) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt index da4b03e..03e0f95 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt @@ -10,7 +10,7 @@ import com.casic.birmm.inspect.adapter.InspectListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.PageNavigationManager import com.casic.birmm.inspect.utils.StatusBarColorUtil @@ -32,7 +32,7 @@ private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var adapter: InspectListAdapter diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt index 91fb674..dab7f0c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt @@ -1,27 +1,38 @@ package com.casic.birmm.inspect.view import android.bluetooth.BluetoothAdapter +import android.bluetooth.BluetoothDevice +import android.content.BroadcastReceiver +import android.content.Context import android.content.Intent -import android.graphics.Color import android.os.Bundle import android.os.Handler import android.os.Message import android.util.Log import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProvider +import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.MyLocationStyle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.bean.BlueToothBean +import com.casic.birmm.inspect.bean.InspectionBean +import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.utils.Constant -import com.casic.birmm.inspect.utils.OtherUtils -import com.casic.birmm.inspect.utils.PageNavigationManager -import com.casic.birmm.inspect.utils.StatusBarColorUtil +import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.UserInfoModel +import com.casic.birmm.inspect.utils.* +import com.casic.birmm.inspect.utils.callback.ILocationListener +import com.casic.birmm.inspect.vm.TaskRecordViewModel import com.casic.birmm.inspect.widgets.InputDialog import com.casic.birmm.inspect.widgets.SingleChoiceDialog +import com.google.gson.Gson import com.gyf.immersionbar.ImmersionBar import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet import kotlinx.android.synthetic.main.activity_inspect_route.mapView import kotlinx.android.synthetic.main.activity_map.* import kotlinx.android.synthetic.main.include_base_title.* @@ -42,9 +53,21 @@ } } + private val itemList: List = arrayListOf("报警事件", "自定义事件") private lateinit var aMap: AMap private lateinit var locationStyle: MyLocationStyle - private val itemList: List = arrayListOf("报警事件", "自定义事件") + private lateinit var inspectionName: String + private lateinit var inspectionId: String + private lateinit var inspectionBean: InspectionBean + private lateinit var userDataModel: UserInfoModel.DataBean + private var dataBeans: MutableList = ArrayList() + private var routes: MutableList = ArrayList()//路线集和 + private var gson: Gson = Gson() + private var isBluetoothOn = true + private var blueToothDevices: MutableList = ArrayList() + private var blueToothBeans: MutableList = ArrayList()//搜索展示列表 + private var bluetoothAdapter: BluetoothAdapter? = null + private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 init { weakReferenceHandler = WeakReferenceHandler(this) @@ -53,22 +76,40 @@ private class WeakReferenceHandler(activity: MapActivity) : Handler() { private val activity: WeakReference = WeakReference(activity) override fun handleMessage(msg: Message) { - val mainActivity = activity.get() ?: return + val mapActivity = activity.get() ?: return when (msg.what) { Constant.BLUETOOTH_ON -> { - "蓝牙已开启".show(mainActivity) - mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + "蓝牙已开启".show(mapActivity) + mapActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + mapActivity.isBluetoothOn = true } Constant.BLUETOOTH_OFF -> { - "蓝牙已关闭".show(mainActivity) - mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + "蓝牙已关闭".show(mapActivity) + mapActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + mapActivity.isBluetoothOn = false } Constant.DEVICE_CONNECTED -> { //TODO 设备已连接 + mapActivity.communicateWithDevice(Constant.ASK_DEV_CODE_COMMAND) + } + Constant.DEVICE_CONNECT_FAIL -> { + //TODO 设备连接失败/超时 } Constant.DEVICE_DISCONNECTED -> { //TODO 设备断开连接 } + Constant.SEND_SUCCESS -> { + //TODO 发送成功 + } + Constant.SEND_FAILURE -> { + //TODO 发送失败 + } + Constant.RECEIVE_SUCCESS -> { + //TODO 接收成功 + } + Constant.RECEIVE_FAILURE -> { + //TODO 接收失败 + } } } } @@ -79,7 +120,8 @@ PageNavigationManager.addActivity(this) setupTopBarLayout() if (OtherUtils.isNetworkConnected(this)) { - initData(savedInstanceState) + initData() + initMap(savedInstanceState) initEvent() } else { "糟糕,没有接入任何网络~".show(this) @@ -93,7 +135,133 @@ titleView.text = "巡检" } - fun initData(savedInstanceState: Bundle?) { + fun initData() { + val userModelJson = SaveKeyValues.getValue(Constant.USER_OBJECT, "") as String + userDataModel = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! + //蓝牙搜索监听 + BroadcastManager.instance.addAction( + arrayOf( + BluetoothDevice.ACTION_FOUND, + BluetoothAdapter.ACTION_DISCOVERY_FINISHED + ), object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + when (intent?.action) { + BluetoothDevice.ACTION_FOUND -> { + val device = + intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE) + lateinit var bean: BlueToothBean + device?.let { + bean = if (it.name == null || it.name == "") { + BlueToothBean("设备名未知", it.address) + } else { + BlueToothBean(device.name, device.address) + } + } + if (bean.blueToothName != "设备名未知") { + if (blueToothBeans.size == 0) { + blueToothBeans.add(bean) + blueToothDevices.add(device) + } else { + //0表示未添加到list的新设备,1表示已经扫描并添加到list的设备 + var judge = 0 + for (it in blueToothBeans) { + if (it.blueToothAddress == bean.blueToothAddress) { + judge = 1 + break + } + } + if (judge == 0) { + blueToothBeans.add(bean) + blueToothDevices.add(device) + } + } + } + } + BluetoothAdapter.ACTION_DISCOVERY_FINISHED -> { + OtherUtils.dismissLoadingDialog() + bluetoothButton.isEnabled = true + Log.d(Tag, gson.toJson(blueToothBeans)) + val sheetBuilder = + QMUIBottomSheet.BottomListSheetBuilder(this@MapActivity) + sheetBuilder.setTitle("请选择要连接的设备") + blueToothBeans.forEach { + sheetBuilder.addItem(it.blueToothName) + } + sheetBuilder.setGravityCenter(true).setAddCancelBtn(true) + .setOnSheetItemClickListener { dialog, _, position, _ -> + dialog.dismiss() + //连接点击的设备 + startConnectDevice( + blueToothBeans[position].blueToothName, + blueToothDevices[position] + ) + }.build().show() + } + } + } + }) + } + + private fun startConnectDevice(deviceName: String, bluetoothDevice: BluetoothDevice?) { + if (bluetoothDevice == null) { + Log.d(Tag, "startConnectDevice-->bluetoothDevice == null") + return + } + this.currentDevice = bluetoothDevice + if (bluetoothAdapter == null) { + Log.d(Tag, "startConnectDevice-->bluetoothAdapter == null") + return + } + OtherUtils.showLoadingDialog(this, "正在连接[$deviceName]...") + + } + +// private fun manageConnectSendReceiveData(bluetoothSocket: BluetoothSocket) { +// connectedThread = ConnectedThread(bluetoothSocket) +// connectedThread!!.start() +// connectedThread!!.setOnSendReceiveDataListener(object : +// ConnectedThread.OnSendReceiveDataListener { +// override fun onSendDataSuccess(data: ByteArray?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.SEND_SUCCESS +// message.obj = "发送数据成功,长度" + data!!.size + "->" + ConnectedThread.bytes2HexString( +// data, +// data.size +// ) +// weakReferenceHandler.sendMessage(message) +// } +// +// override fun onSendDataError(data: ByteArray?, errorMsg: String?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.SEND_FAILURE +// message.obj = "发送数据出错,长度" + data!!.size + "->" + ConnectedThread.bytes2HexString( +// data, +// data.size +// ) +// weakReferenceHandler.sendMessage(message) +// } +// +// override fun onReceiveDataSuccess(buffer: ByteArray?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.RECEIVE_SUCCESS +// message.obj = +// "成功接收数据,长度" + buffer!!.size + "->" + ConnectedThread.bytes2HexString( +// buffer, +// buffer.size +// ) +// weakReferenceHandler.sendMessage(message) +// } +// +// override fun onReceiveDataError(errorMsg: String?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.RECEIVE_FAILURE +// message.obj = "接收数据出错:$errorMsg" +// weakReferenceHandler.sendMessage(message) +// } +// }) +// } + + private fun initMap(savedInstanceState: Bundle?) { mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -102,35 +270,19 @@ //显示定位小蓝点 locationStyle = MyLocationStyle() locationStyle.showMyLocation(true)//设置是否显示定位小蓝点 - locationStyle.strokeColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的边框颜色 - locationStyle.radiusFillColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的填充颜色 aMap.myLocationStyle = locationStyle aMap.isMyLocationEnabled = true aMap.addOnMyLocationChangeListener { - Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]") + // Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]") } } fun initEvent() { leftBackView.setOnClickListener { this.finish() } + //地图左边五个按钮事件 + menuButtonEvent() //需要判断是否是上次未完的巡检 -// selectInspectMode() - - //判断蓝牙的状态 - val blueAdapter = BluetoothAdapter.getDefaultAdapter() - if (blueAdapter == null) { - "该设备不支持蓝牙,无法连接".show(this) - } else { - if (blueAdapter.isEnabled) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { - //搜索蓝牙 - } - } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) - //打开 - } - } + selectInspectMode() newEventButton.setChangeAlphaWhenPress(true) newEventButton.setOnClickListener { @@ -149,29 +301,149 @@ intent.putExtra("isWarning", false) } } - startActivity(intent) + //获取当前定位 + LocationHelper.obtainCurrentLocation(this@MapActivity, + object : ILocationListener { + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + intent.putExtra("inspectionId", inspectionId) + intent.putExtra("inspectionName", inspectionName) + intent.putExtra("longitude", aMapLocation.longitude) + intent.putExtra("latitude", aMapLocation.latitude) + startActivity(intent) + } + }) } }) .build().show() } } + private fun menuButtonEvent() { + //判断蓝牙的状态 + bluetoothAdapter = BluetoothAdapter.getDefaultAdapter() + if (bluetoothAdapter == null) { + "该设备不支持蓝牙,无法连接".show(this) + return + } + if (bluetoothAdapter!!.isEnabled) { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { + if (currentDevice == null) { + //搜索蓝牙 + searchDevice() + } else { + if (currentDevice!!.bondState == BluetoothDevice.BOND_NONE) { + searchDevice() + } else { + //断开连接 + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + "设备已断开连接".show(this) + } + } + } + } else { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + //打开 + startActivity(Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)) + } + } + + private fun searchDevice() { + //搜索蓝牙 + if (bluetoothAdapter!!.isDiscovering) { + //搜索中不让再次搜索 + bluetoothButton.isEnabled = false + return + } + OtherUtils.showLoadingDialog(this, "设备搜索中..."); + bluetoothAdapter!!.startDiscovery() + } + private fun selectInspectMode() { - InputDialog.Builder().setContext(this) - .setTitle("请输入巡检标签") - .setHintText("如:xxx区间巡检") - .setNegativeButton("放弃") - .setPositiveButton("开始巡检") - .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener { - override fun onConfirmClick(input: String) { + val currentInspection = SaveKeyValues.getValue(Constant.INSPECTION_OBJECT, "") as String + if (currentInspection != "") { + inspectionBean = gson.fromJson(currentInspection, InspectionBean::class.java) + /** + * 获取最近的Task + * */ + if (OtherUtils.isNetworkConnected(this)) { + val taskViewModel = ViewModelProvider(this).get(TaskRecordViewModel::class.java) + taskViewModel.searchByInspection(inspectionBean.serverMainId) + taskViewModel.resultModel.observe(this, Observer { + dataBeans = it.data!!.list!! + }) + } else { + dataBeans = + DataBaseManager.instance.queryTaskByInspection(inspectionBean.serverMainId)!! + } + "欢迎回来,继续未完成巡检".show(this) + } else { + InputDialog.Builder().setContext(this) + .setTitle("请输入巡检标签") + .setHintText("如:xxx区间巡检") + .setNegativeButton("放弃") + .setPositiveButton("开始巡检") + .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener { + override fun onConfirmClick(input: String) { + val currentTimeMillis = System.currentTimeMillis() + //新建巡检,inspectionId必为空 + inspectionId = currentTimeMillis.id() + inspectionName = input - } + inspectionBean = + InspectionBean( + System.currentTimeMillis(), + inspectionId, + inspectionName, + TimeOrDateUtil.timestampToCompleteDate(currentTimeMillis), + "", + TimeOrDateUtil.timestampToDate(currentTimeMillis), + 0.0, + 0.0, + 0.0, + 0.0, + "", + userDataModel.name + ) + startInspection() + } - override fun onCancelClick() { - finish() + override fun onCancelClick() { + finish() + } + }) + .build().show() + } + } + + /** + * 开始巡检,获取坐标,开定时器,和设备交互 + * */ + fun startInspection() { + LocationHelper.obtainCurrentLocation(this, object : ILocationListener { + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + routes.add(aMapLocation) + inspectionBean.routes = gson.toJson(routes) + if (inspectionBean.startLng == 0.0) { + inspectionBean.startLng = aMapLocation.longitude + inspectionBean.startLat = aMapLocation.latitude } - }) - .build().show() + } + }) + updateCurrentInspection() + // 和设备通信 + communicateWithDevice(Constant.OPEN_TRANSFER_COMMAND) + } + + private fun updateCurrentInspection() { + SaveKeyValues.putValue(Constant.INSPECTION_OBJECT, gson.toJson(inspectionBean)) + } + + private fun communicateWithDevice(cmd: ByteArray) { + } override fun onResume() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index de3eb19..8887a06 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -11,12 +11,12 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ImageGridViewAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity -import com.casic.birmm.inspect.extensions.combineImagePath -import com.casic.birmm.inspect.extensions.filterString -import com.casic.birmm.inspect.extensions.show +import com.casic.birmm.inspect.extensions.* +import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.* import com.casic.birmm.inspect.vm.NewEventViewModel import com.casic.birmm.inspect.vm.UploadImageViewModel +import com.google.gson.Gson import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.PictureSelector import com.luck.picture.lib.config.PictureConfig @@ -33,6 +33,13 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private lateinit var imageAdapter: ImageGridViewAdapter private var isWarning: Boolean = true + private lateinit var inspectionId: String + private lateinit var inspectionName: String + private var longitude: Double = 0.0 + private var latitude: Double = 0.0 + private var data = -1.0//泄露默认值 + private lateinit var type: String + private lateinit var userModel: UserInfoModel override fun createViewModelByClass(): Class? = NewEventViewModel::class.java @@ -46,7 +53,13 @@ override fun initData() { uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) + val userModelJson = SaveKeyValues.getValue(Constant.USER_OBJECT, "") as String + userModel = Gson().fromJson(userModelJson, UserInfoModel::class.java) isWarning = intent.getBooleanExtra("isWarning", true) + inspectionId = intent.getStringExtra("inspectionId")!! + inspectionName = intent.getStringExtra("inspectionName")!! + longitude = intent.getDoubleExtra("longitude", 0.0) + latitude = intent.getDoubleExtra("latitude", 0.0) if (isWarning) { titleView.text = "报警事件记录" inspectCardView.visibility = View.VISIBLE @@ -159,9 +172,42 @@ "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } + type = "报警事件" + data = inspectNumberView.text.toString().filterString().toDouble() + } else { + type = "自定义事件" } - + //随机生成主键 + userModel.data!!.name?.let { user -> + viewModel.addEventTask( + "t".id(), + inspectionId, + inspectionName, + eventCreateTimeView.text.toString(), + type, + longitude, + latitude, + data, + imagePaths.reformat(), + eventEditTextView.text.toString().filterString(), + user + ) + } } + viewModel.resultModel.observe(this, Observer { model -> + if (model.code == 200) { + "保存成功".show(this) + finish() + } + }) + viewModel.loadState.observe(this, Observer { + when (it) { + is LoadState.Loading -> { + OtherUtils.showLoadingDialog(this, "保存中,请稍后...") + } + else -> OtherUtils.dismissLoadingDialog() + } + }) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java new file mode 100644 index 0000000..b7077a3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java @@ -0,0 +1,237 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.InspectionBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "INSPECTION_BEAN". +*/ +public class InspectionBeanDao extends AbstractDao { + + public static final String TABLENAME = "INSPECTION_BEAN"; + + /** + * Properties of entity InspectionBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property Name = new Property(2, String.class, "name", false, "NAME"); + public final static Property StartTime = new Property(3, String.class, "startTime", false, "START_TIME"); + public final static Property EndTime = new Property(4, String.class, "endTime", false, "END_TIME"); + public final static Property Date = new Property(5, String.class, "date", false, "DATE"); + public final static Property StartLng = new Property(6, double.class, "startLng", false, "START_LNG"); + public final static Property StartLat = new Property(7, double.class, "startLat", false, "START_LAT"); + public final static Property EndLng = new Property(8, double.class, "endLng", false, "END_LNG"); + public final static Property EndLat = new Property(9, double.class, "endLat", false, "END_LAT"); + public final static Property Routes = new Property(10, String.class, "routes", false, "ROUTES"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public InspectionBeanDao(DaoConfig config) { + super(config); + } + + public InspectionBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"INSPECTION_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"NAME\" TEXT," + // 2: name + "\"START_TIME\" TEXT," + // 3: startTime + "\"END_TIME\" TEXT," + // 4: endTime + "\"DATE\" TEXT," + // 5: date + "\"START_LNG\" REAL NOT NULL ," + // 6: startLng + "\"START_LAT\" REAL NOT NULL ," + // 7: startLat + "\"END_LNG\" REAL NOT NULL ," + // 8: endLng + "\"END_LAT\" REAL NOT NULL ," + // 9: endLat + "\"ROUTES\" TEXT," + // 10: routes + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"INSPECTION_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public InspectionBean readEntity(Cursor cursor, int offset) { + InspectionBean entity = new InspectionBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // startTime + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // endTime + cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // date + cursor.getDouble(offset + 6), // startLng + cursor.getDouble(offset + 7), // startLat + cursor.getDouble(offset + 8), // endLng + cursor.getDouble(offset + 9), // endLat + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // routes + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, InspectionBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setStartTime(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setEndTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setDate(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5)); + entity.setStartLng(cursor.getDouble(offset + 6)); + entity.setStartLat(cursor.getDouble(offset + 7)); + entity.setEndLng(cursor.getDouble(offset + 8)); + entity.setEndLat(cursor.getDouble(offset + 9)); + entity.setRoutes(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(InspectionBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(InspectionBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(InspectionBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java new file mode 100644 index 0000000..3f040d3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java @@ -0,0 +1,245 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.TaskEventBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "TASK_EVENT_BEAN". +*/ +public class TaskEventBeanDao extends AbstractDao { + + public static final String TABLENAME = "TASK_EVENT_BEAN"; + + /** + * Properties of entity TaskEventBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property InspectionId = new Property(2, String.class, "inspectionId", false, "INSPECTION_ID"); + public final static Property Name = new Property(3, String.class, "name", false, "NAME"); + public final static Property CreateTime = new Property(4, String.class, "createTime", false, "CREATE_TIME"); + public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); + public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); + public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); + public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); + public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public TaskEventBeanDao(DaoConfig config) { + super(config); + } + + public TaskEventBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"TASK_EVENT_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"INSPECTION_ID\" TEXT," + // 2: inspectionId + "\"NAME\" TEXT," + // 3: name + "\"CREATE_TIME\" TEXT," + // 4: createTime + "\"LNG\" REAL NOT NULL ," + // 5: lng + "\"LAT\" REAL NOT NULL ," + // 6: lat + "\"TYPE\" TEXT," + // 7: type + "\"DATA\" REAL NOT NULL ," + // 8: data + "\"IMAGES\" TEXT," + // 9: images + "\"DESCRIPTION\" TEXT," + // 10: description + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"TASK_EVENT_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public TaskEventBean readEntity(Cursor cursor, int offset) { + TaskEventBean entity = new TaskEventBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // name + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getDouble(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, TaskEventBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setInspectionId(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setName(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setCreateTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setLng(cursor.getDouble(offset + 5)); + entity.setLat(cursor.getDouble(offset + 6)); + entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); + entity.setData(cursor.getDouble(offset + 8)); + entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); + entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(TaskEventBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(TaskEventBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(TaskEventBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt new file mode 100644 index 0000000..dc635a4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt @@ -0,0 +1,41 @@ +package com.casic.birmm.inspect.model + +class EventListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var total = 0 + var rows: MutableList? = + null + + class RowsBean { + /** + * createTime : 2020-12-28 14:56:59 + * data : -1 + * description : ggg + * id : t1609138629320112121 + * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg + * inspectionId : 1609138451543200022 + * lat : 39.915956 + * lng : 116.268596 + * name : sss + * type : 自定义事件 + * user : 超超级管理员 + */ + var createTime: String? = null + var data = 0 + var description: String? = null + var id: String? = null + var images: String? = null + var inspectionId: String? = null + var lat = 0.0 + var lng = 0.0 + var name: String? = null + var type: String? = null + var user: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt deleted file mode 100644 index de499aa..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.birmm.inspect.model - -class EventModel { - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var total = 0 - var rows: MutableList? = - null - - class RowsBean { - /** - * createTime : 2020-12-28 14:56:59 - * data : -1 - * description : ggg - * id : t1609138629320112121 - * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg - * inspectionId : 1609138451543200022 - * lat : 39.915956 - * lng : 116.268596 - * name : sss - * type : 自定义事件 - * user : 超超级管理员 - */ - var createTime: String? = null - var data = 0 - var description: String? = null - var id: String? = null - var images: String? = null - var inspectionId: String? = null - var lat = 0.0 - var lng = 0.0 - var name: String? = null - var type: String? = null - var user: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt new file mode 100644 index 0000000..395b6e8 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt @@ -0,0 +1,43 @@ +package com.casic.birmm.inspect.model + +class InspectListModel { + + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + + var total = 0 + var rows: MutableList? = null + + class RowsBean { + /** + * date : 2021年07月08日 + * endLat : 39.915908 + * endLng : 116.26876 + * endTime : 2021-07-08 11:20:20 + * id : 162570318141612121 + * name : 测试 + * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] + * startLat : 39.913365 + * startLng : 116.269462 + * startTime : 2021-07-08 08:13:01 + * user : 王晓颖 + */ + var date: String? = null + var endLat = 0.0 + var endLng = 0.0 + var endTime: String? = null + var id: String? = null + var name: String? = null + var routes: String? = null + var startLat = 0.0 + var startLng = 0.0 + var startTime: String? = null + var user: String? = null + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt deleted file mode 100644 index 558e716..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.casic.birmm.inspect.model - -class InspectModel { - - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - - var total = 0 - var rows: MutableList? = null - - class RowsBean { - /** - * date : 2021年07月08日 - * endLat : 39.915908 - * endLng : 116.26876 - * endTime : 2021-07-08 11:20:20 - * id : 162570318141612121 - * name : 测试 - * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] - * startLat : 39.913365 - * startLng : 116.269462 - * startTime : 2021-07-08 08:13:01 - * user : 王晓颖 - */ - var date: String? = null - var endLat = 0.0 - var endLng = 0.0 - var endTime: String? = null - var id: String? = null - var name: String? = null - var routes: String? = null - var startLat = 0.0 - var startLng = 0.0 - var startTime: String? = null - var user: String? = null - - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt index ee6f1f6..beb469b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.model +//同巡检Id的事件列表数据模型 class TaskRecordModel { var code = 0 @@ -8,7 +9,7 @@ var isSuccess = false class DataBean { - var list: List? = null + var list: MutableList? = null class ListBean { /** diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt new file mode 100644 index 0000000..8201cb4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt @@ -0,0 +1,89 @@ +package com.casic.birmm.inspect.utils + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.util.Log +import com.casic.birmm.inspect.base.BaseApplication + + +class BroadcastManager private constructor() { + + private var mContext: Context = BaseApplication.instance + private var receiverMap: HashMap = HashMap() + + companion object { + private const val Tag = "BroadcastManager" + + val instance: BroadcastManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + BroadcastManager() + } + } + + /** + * 添加单个Action,广播的初始化 + */ + fun addAction(action: String, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + filter.addAction(action) + mContext.registerReceiver(receiver, filter) + receiverMap[action] = receiver + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 添加多个Action,广播的初始化 + */ + fun addAction(actions: Array, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + actions.forEach { + filter.addAction(it) + receiverMap[it] = receiver + } + mContext.registerReceiver(receiver, filter) + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 发送广播 + * + * @param action 唯一码 + * @param msg 参数 + */ + fun sendBroadcast(action: String, msg: String) { + try { + val intent = Intent() + intent.action = action + intent.putExtra("data", msg) + mContext.sendBroadcast(intent) + Log.d(Tag, "发送广播: $msg") + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 销毁广播 + * + * @param actions action集合 + */ + fun destroy(vararg actions: String) { + try { + actions.forEach { + val receiver = receiverMap[it] + if (receiver != null) { + mContext.unregisterReceiver(receiver) + } + } + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt index 0c9e963..507655b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt @@ -16,13 +16,25 @@ const val BLUETOOTH_ON = 20 const val BLUETOOTH_OFF = 21 const val DEVICE_CONNECTED = 22 - const val DEVICE_DISCONNECTED = 23 + const val DEVICE_CONNECT_FAIL = 23 + const val DEVICE_DISCONNECTED = 24 + const val SEND_SUCCESS = 25 + const val SEND_FAILURE = 26 + const val RECEIVE_SUCCESS = 27 + const val RECEIVE_FAILURE = 28 const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val IMAGE_MINUS_SIZE = 50 * 1024 + const val IMAGE_MINUS_SIZE = 100 * 1024 const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val USER_OBJECT = "userObject" const val OPEN_WARNING = "isOpenWarning" const val AUTO_RECORD = "isRecordLog" + const val INSPECTION_OBJECT = "inspectionObject" + + val ASK_DEV_CODE_COMMAND = byteArrayOf(0x01, 0x0D, 0x0A)// 查询设备编号命令 + val OPEN_TRANSFER_COMMAND = byteArrayOf(0x02, 0x0D, 0x0A) // 开启数据发送命令 + const val SERVICE_UUID = "0003cdd0-0000-1000-8000-00805f9b0131"//连接设备的UUID + const val WRITE_CHARACTERISTIC_UUID = "0003cdd2-0000-1000-8000-00805f9b0131"//写数据特征值UUID + const val READ_CHARACTERISTIC_UUID = "0003cdd1-0000-1000-8000-00805f9b0131"//读数据特征值UUID } \ No newline at end of file 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 new file mode 100644 index 0000000..c7fba84 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -0,0 +1,123 @@ +package com.casic.birmm.inspect.utils + +import com.casic.birmm.inspect.base.BaseApplication +import com.casic.birmm.inspect.bean.InspectionBean +import com.casic.birmm.inspect.bean.TaskEventBean +import com.casic.birmm.inspect.greendao.TaskEventBeanDao +import com.casic.birmm.inspect.model.TaskRecordModel + +class DataBaseManager private constructor() { + + companion object { + //Kotlin委托模式双重锁单例 + val instance: DataBaseManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + DataBaseManager() + } + } + + /** + * 保存巡检记录到本地 + * */ + fun insertData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.insert(bean) + } + + /** + * 删除本地巡检记录 + * */ + fun deleteData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllInspection() { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.update(bean) + } + + /** + * 查询所有数据 + */ + fun queryAllInspection(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao?.queryBuilder() + ?.build()?.list() + } + + /**********************************************************************************************/ + + /** + * 保存事件记录到本地 + * */ + fun insertData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.insert(bean) + } + + /** + * 删除本地事件记录 + * */ + fun deleteData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllTask() { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.update(bean) + } + + /** + * 根据巡检Id查询事件数据 + */ + fun queryTaskByInspection(inspectionId: String): MutableList? { + val dataBeans: MutableList = ArrayList() + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.where(TaskEventBeanDao.Properties.InspectionId.eq(inspectionId)) + ?.orderDesc(TaskEventBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + ?.build() + ?.list()?.let { + it.forEach { taskBean -> + val listBean = TaskRecordModel.DataBean.ListBean() + listBean.createTime = taskBean.createTime + listBean.data = taskBean.data.toInt() + listBean.description = taskBean.description + listBean.id = taskBean.serverMainId + listBean.images = taskBean.images + listBean.inspectionId = taskBean.inspectionId + listBean.lat = taskBean.lat + listBean.lng = taskBean.lng + listBean.name = taskBean.name + listBean.type = taskBean.type + listBean.user = taskBean.user + dataBeans.add(listBean) + } + } + return dataBeans + } + + /** + * 查询所有数据 + */ + fun queryAllTask(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.build() + ?.list() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt new file mode 100644 index 0000000..fa53beb --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt @@ -0,0 +1,34 @@ +package com.casic.birmm.inspect.utils + +import android.content.Context +import android.util.Log +import com.amap.api.location.AMapLocationClient +import com.amap.api.location.AMapLocationClientOption +import com.casic.birmm.inspect.utils.callback.ILocationListener + +object LocationHelper { + private const val Tag = "LocationHelper" + + fun obtainCurrentLocation(context: Context, listener: ILocationListener) { + val locationClient = AMapLocationClient(context) + val locationOption = AMapLocationClientOption() + locationOption.locationMode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy; + locationOption.isNeedAddress = true//设置是否返回地址信息(默认返回地址信息) + locationOption.isOnceLocation = true//设置是否只定位一次,默认为false + locationOption.isMockEnable = false//设置是否允许模拟位置,默认为false,不允许模拟位置 + locationOption.isLocationCacheEnable = false //可选,设置是否使用缓存定位,默认为true + locationClient.setLocationOption(locationOption) + locationClient.setLocationListener { + if (it != null) { + if (it.errorCode == 0) { + listener.onAMapLocationGet(it) + } else { + Log.e( + Tag, "location Error, ErrCode:" + it.errorCode + ", errInfo:" + it.errorInfo + ) + } + } + } + locationClient.startLocation() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt new file mode 100644 index 0000000..a4def44 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt @@ -0,0 +1,8 @@ +package com.casic.birmm.inspect.utils.callback + +import com.amap.api.location.AMapLocation + + +interface ILocationListener { + fun onAMapLocationGet(aMapLocation: AMapLocation) //高德定位数据 +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index a05027e..c5c9a30 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -49,7 +49,7 @@ @Query("endTime") endTime: String, @Query("limit") limit: Int, @Query("offset") offset: Int - ): InspectModel + ): InspectListModel /** * 巡检记录列表 @@ -62,7 +62,7 @@ @Query("endTime") endTime: String, @Query("limit") limit: Int, @Query("offset") offset: Int - ): EventModel + ): EventListModel /** * 获取巡检详情 @@ -93,4 +93,24 @@ @Header("token") token: String, @Part file: MultipartBody.Part ): ActionResultModel + + /** + * 新增事件 + */ + @FormUrlEncoded + @POST("/task/add") + suspend fun addEventTask( + @Header("token") token: String, + @Field("id") id: String, + @Field("inspectionId") inspectionId: String, + @Field("name") name: String, + @Field("createTime") createTime: String, + @Field("type") type: String, + @Field("Lng") Lng: Double, + @Field("Lat") Lat: Double, + @Field("data") data: Double, + @Field("images") images: String, + @Field("description") description: String, + @Field("user") user: String + ): ActionResultModel } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index df03b14..d24faff 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -49,7 +49,7 @@ startTime: String, endTime: String, pageIndex: Int - ): InspectModel { + ): InspectListModel { return api.obtainInspectList( AuthenticationHelper.token!!, keywords, @@ -68,7 +68,7 @@ startTime: String, endTime: String, pageIndex: Int - ): EventModel { + ): EventListModel { return api.obtainEventList( AuthenticationHelper.token!!, keywords, @@ -101,4 +101,17 @@ val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody) return api.uploadImage(AuthenticationHelper.token!!, imagePart) } + + /** + * 新增事件 + */ + suspend fun addEventTask( + id: String, inspectionId: String, name: String, createTime: String, type: String, + lng: Double, lat: Double, data: Double, images: String, description: String, user: String + ): ActionResultModel { + return api.addEventTask( + AuthenticationHelper.token!!, id, inspectionId, name, createTime, + type, lng, lat, data, images, description, user + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 12c7c7e..ff6de36 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -11,7 +11,7 @@ import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.model.EventModel +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 @@ -38,7 +38,7 @@ private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var adapter: EventSearchListAdapter diff --git a/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt index 2e57bec..9cce3ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt @@ -7,6 +7,8 @@ import android.view.ViewGroup.MarginLayoutParams import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider +import com.aihook.alertview.library.AlertView +import com.aihook.alertview.library.OnItemClickListener import com.casic.birmm.inspect.R import com.casic.birmm.inspect.base.BaseActivity import com.casic.birmm.inspect.extensions.show @@ -68,9 +70,35 @@ val userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) userViewModel.getUserInfo() userViewModel.resultModel.observe(this, Observer { - SaveKeyValues.putValue(Constant.USER_OBJECT, Gson().toJson(it))//保存用户对象 - startActivity(Intent(this, MainActivity::class.java)) - finish() + if (it.code == 200) { + SaveKeyValues.putValue(Constant.USER_OBJECT, Gson().toJson(it))//保存用户对象 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } else { + AlertView("温馨提示", + it.message, + "等会再来", + arrayOf("去登录"), + null, + this, + AlertView.Style.Alert, + OnItemClickListener { _, position -> + when (position) { + -1 -> { + this@GuideActivity.finish() + } + 0 -> { + startActivity( + Intent( + this@GuideActivity, + LoginActivity::class.java + ) + ) + finish() + } + } + }).show() + } }) userViewModel.loadState.observe(this, Observer { "获取用户信息失败,请重试".show(this) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt index da4b03e..03e0f95 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt @@ -10,7 +10,7 @@ import com.casic.birmm.inspect.adapter.InspectListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.PageNavigationManager import com.casic.birmm.inspect.utils.StatusBarColorUtil @@ -32,7 +32,7 @@ private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var adapter: InspectListAdapter diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt index 91fb674..dab7f0c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt @@ -1,27 +1,38 @@ package com.casic.birmm.inspect.view import android.bluetooth.BluetoothAdapter +import android.bluetooth.BluetoothDevice +import android.content.BroadcastReceiver +import android.content.Context import android.content.Intent -import android.graphics.Color import android.os.Bundle import android.os.Handler import android.os.Message import android.util.Log import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProvider +import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.MyLocationStyle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.bean.BlueToothBean +import com.casic.birmm.inspect.bean.InspectionBean +import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.utils.Constant -import com.casic.birmm.inspect.utils.OtherUtils -import com.casic.birmm.inspect.utils.PageNavigationManager -import com.casic.birmm.inspect.utils.StatusBarColorUtil +import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.UserInfoModel +import com.casic.birmm.inspect.utils.* +import com.casic.birmm.inspect.utils.callback.ILocationListener +import com.casic.birmm.inspect.vm.TaskRecordViewModel import com.casic.birmm.inspect.widgets.InputDialog import com.casic.birmm.inspect.widgets.SingleChoiceDialog +import com.google.gson.Gson import com.gyf.immersionbar.ImmersionBar import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet import kotlinx.android.synthetic.main.activity_inspect_route.mapView import kotlinx.android.synthetic.main.activity_map.* import kotlinx.android.synthetic.main.include_base_title.* @@ -42,9 +53,21 @@ } } + private val itemList: List = arrayListOf("报警事件", "自定义事件") private lateinit var aMap: AMap private lateinit var locationStyle: MyLocationStyle - private val itemList: List = arrayListOf("报警事件", "自定义事件") + private lateinit var inspectionName: String + private lateinit var inspectionId: String + private lateinit var inspectionBean: InspectionBean + private lateinit var userDataModel: UserInfoModel.DataBean + private var dataBeans: MutableList = ArrayList() + private var routes: MutableList = ArrayList()//路线集和 + private var gson: Gson = Gson() + private var isBluetoothOn = true + private var blueToothDevices: MutableList = ArrayList() + private var blueToothBeans: MutableList = ArrayList()//搜索展示列表 + private var bluetoothAdapter: BluetoothAdapter? = null + private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 init { weakReferenceHandler = WeakReferenceHandler(this) @@ -53,22 +76,40 @@ private class WeakReferenceHandler(activity: MapActivity) : Handler() { private val activity: WeakReference = WeakReference(activity) override fun handleMessage(msg: Message) { - val mainActivity = activity.get() ?: return + val mapActivity = activity.get() ?: return when (msg.what) { Constant.BLUETOOTH_ON -> { - "蓝牙已开启".show(mainActivity) - mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + "蓝牙已开启".show(mapActivity) + mapActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + mapActivity.isBluetoothOn = true } Constant.BLUETOOTH_OFF -> { - "蓝牙已关闭".show(mainActivity) - mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + "蓝牙已关闭".show(mapActivity) + mapActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + mapActivity.isBluetoothOn = false } Constant.DEVICE_CONNECTED -> { //TODO 设备已连接 + mapActivity.communicateWithDevice(Constant.ASK_DEV_CODE_COMMAND) + } + Constant.DEVICE_CONNECT_FAIL -> { + //TODO 设备连接失败/超时 } Constant.DEVICE_DISCONNECTED -> { //TODO 设备断开连接 } + Constant.SEND_SUCCESS -> { + //TODO 发送成功 + } + Constant.SEND_FAILURE -> { + //TODO 发送失败 + } + Constant.RECEIVE_SUCCESS -> { + //TODO 接收成功 + } + Constant.RECEIVE_FAILURE -> { + //TODO 接收失败 + } } } } @@ -79,7 +120,8 @@ PageNavigationManager.addActivity(this) setupTopBarLayout() if (OtherUtils.isNetworkConnected(this)) { - initData(savedInstanceState) + initData() + initMap(savedInstanceState) initEvent() } else { "糟糕,没有接入任何网络~".show(this) @@ -93,7 +135,133 @@ titleView.text = "巡检" } - fun initData(savedInstanceState: Bundle?) { + fun initData() { + val userModelJson = SaveKeyValues.getValue(Constant.USER_OBJECT, "") as String + userDataModel = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! + //蓝牙搜索监听 + BroadcastManager.instance.addAction( + arrayOf( + BluetoothDevice.ACTION_FOUND, + BluetoothAdapter.ACTION_DISCOVERY_FINISHED + ), object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + when (intent?.action) { + BluetoothDevice.ACTION_FOUND -> { + val device = + intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE) + lateinit var bean: BlueToothBean + device?.let { + bean = if (it.name == null || it.name == "") { + BlueToothBean("设备名未知", it.address) + } else { + BlueToothBean(device.name, device.address) + } + } + if (bean.blueToothName != "设备名未知") { + if (blueToothBeans.size == 0) { + blueToothBeans.add(bean) + blueToothDevices.add(device) + } else { + //0表示未添加到list的新设备,1表示已经扫描并添加到list的设备 + var judge = 0 + for (it in blueToothBeans) { + if (it.blueToothAddress == bean.blueToothAddress) { + judge = 1 + break + } + } + if (judge == 0) { + blueToothBeans.add(bean) + blueToothDevices.add(device) + } + } + } + } + BluetoothAdapter.ACTION_DISCOVERY_FINISHED -> { + OtherUtils.dismissLoadingDialog() + bluetoothButton.isEnabled = true + Log.d(Tag, gson.toJson(blueToothBeans)) + val sheetBuilder = + QMUIBottomSheet.BottomListSheetBuilder(this@MapActivity) + sheetBuilder.setTitle("请选择要连接的设备") + blueToothBeans.forEach { + sheetBuilder.addItem(it.blueToothName) + } + sheetBuilder.setGravityCenter(true).setAddCancelBtn(true) + .setOnSheetItemClickListener { dialog, _, position, _ -> + dialog.dismiss() + //连接点击的设备 + startConnectDevice( + blueToothBeans[position].blueToothName, + blueToothDevices[position] + ) + }.build().show() + } + } + } + }) + } + + private fun startConnectDevice(deviceName: String, bluetoothDevice: BluetoothDevice?) { + if (bluetoothDevice == null) { + Log.d(Tag, "startConnectDevice-->bluetoothDevice == null") + return + } + this.currentDevice = bluetoothDevice + if (bluetoothAdapter == null) { + Log.d(Tag, "startConnectDevice-->bluetoothAdapter == null") + return + } + OtherUtils.showLoadingDialog(this, "正在连接[$deviceName]...") + + } + +// private fun manageConnectSendReceiveData(bluetoothSocket: BluetoothSocket) { +// connectedThread = ConnectedThread(bluetoothSocket) +// connectedThread!!.start() +// connectedThread!!.setOnSendReceiveDataListener(object : +// ConnectedThread.OnSendReceiveDataListener { +// override fun onSendDataSuccess(data: ByteArray?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.SEND_SUCCESS +// message.obj = "发送数据成功,长度" + data!!.size + "->" + ConnectedThread.bytes2HexString( +// data, +// data.size +// ) +// weakReferenceHandler.sendMessage(message) +// } +// +// override fun onSendDataError(data: ByteArray?, errorMsg: String?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.SEND_FAILURE +// message.obj = "发送数据出错,长度" + data!!.size + "->" + ConnectedThread.bytes2HexString( +// data, +// data.size +// ) +// weakReferenceHandler.sendMessage(message) +// } +// +// override fun onReceiveDataSuccess(buffer: ByteArray?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.RECEIVE_SUCCESS +// message.obj = +// "成功接收数据,长度" + buffer!!.size + "->" + ConnectedThread.bytes2HexString( +// buffer, +// buffer.size +// ) +// weakReferenceHandler.sendMessage(message) +// } +// +// override fun onReceiveDataError(errorMsg: String?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.RECEIVE_FAILURE +// message.obj = "接收数据出错:$errorMsg" +// weakReferenceHandler.sendMessage(message) +// } +// }) +// } + + private fun initMap(savedInstanceState: Bundle?) { mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -102,35 +270,19 @@ //显示定位小蓝点 locationStyle = MyLocationStyle() locationStyle.showMyLocation(true)//设置是否显示定位小蓝点 - locationStyle.strokeColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的边框颜色 - locationStyle.radiusFillColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的填充颜色 aMap.myLocationStyle = locationStyle aMap.isMyLocationEnabled = true aMap.addOnMyLocationChangeListener { - Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]") + // Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]") } } fun initEvent() { leftBackView.setOnClickListener { this.finish() } + //地图左边五个按钮事件 + menuButtonEvent() //需要判断是否是上次未完的巡检 -// selectInspectMode() - - //判断蓝牙的状态 - val blueAdapter = BluetoothAdapter.getDefaultAdapter() - if (blueAdapter == null) { - "该设备不支持蓝牙,无法连接".show(this) - } else { - if (blueAdapter.isEnabled) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { - //搜索蓝牙 - } - } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) - //打开 - } - } + selectInspectMode() newEventButton.setChangeAlphaWhenPress(true) newEventButton.setOnClickListener { @@ -149,29 +301,149 @@ intent.putExtra("isWarning", false) } } - startActivity(intent) + //获取当前定位 + LocationHelper.obtainCurrentLocation(this@MapActivity, + object : ILocationListener { + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + intent.putExtra("inspectionId", inspectionId) + intent.putExtra("inspectionName", inspectionName) + intent.putExtra("longitude", aMapLocation.longitude) + intent.putExtra("latitude", aMapLocation.latitude) + startActivity(intent) + } + }) } }) .build().show() } } + private fun menuButtonEvent() { + //判断蓝牙的状态 + bluetoothAdapter = BluetoothAdapter.getDefaultAdapter() + if (bluetoothAdapter == null) { + "该设备不支持蓝牙,无法连接".show(this) + return + } + if (bluetoothAdapter!!.isEnabled) { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { + if (currentDevice == null) { + //搜索蓝牙 + searchDevice() + } else { + if (currentDevice!!.bondState == BluetoothDevice.BOND_NONE) { + searchDevice() + } else { + //断开连接 + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + "设备已断开连接".show(this) + } + } + } + } else { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + //打开 + startActivity(Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)) + } + } + + private fun searchDevice() { + //搜索蓝牙 + if (bluetoothAdapter!!.isDiscovering) { + //搜索中不让再次搜索 + bluetoothButton.isEnabled = false + return + } + OtherUtils.showLoadingDialog(this, "设备搜索中..."); + bluetoothAdapter!!.startDiscovery() + } + private fun selectInspectMode() { - InputDialog.Builder().setContext(this) - .setTitle("请输入巡检标签") - .setHintText("如:xxx区间巡检") - .setNegativeButton("放弃") - .setPositiveButton("开始巡检") - .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener { - override fun onConfirmClick(input: String) { + val currentInspection = SaveKeyValues.getValue(Constant.INSPECTION_OBJECT, "") as String + if (currentInspection != "") { + inspectionBean = gson.fromJson(currentInspection, InspectionBean::class.java) + /** + * 获取最近的Task + * */ + if (OtherUtils.isNetworkConnected(this)) { + val taskViewModel = ViewModelProvider(this).get(TaskRecordViewModel::class.java) + taskViewModel.searchByInspection(inspectionBean.serverMainId) + taskViewModel.resultModel.observe(this, Observer { + dataBeans = it.data!!.list!! + }) + } else { + dataBeans = + DataBaseManager.instance.queryTaskByInspection(inspectionBean.serverMainId)!! + } + "欢迎回来,继续未完成巡检".show(this) + } else { + InputDialog.Builder().setContext(this) + .setTitle("请输入巡检标签") + .setHintText("如:xxx区间巡检") + .setNegativeButton("放弃") + .setPositiveButton("开始巡检") + .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener { + override fun onConfirmClick(input: String) { + val currentTimeMillis = System.currentTimeMillis() + //新建巡检,inspectionId必为空 + inspectionId = currentTimeMillis.id() + inspectionName = input - } + inspectionBean = + InspectionBean( + System.currentTimeMillis(), + inspectionId, + inspectionName, + TimeOrDateUtil.timestampToCompleteDate(currentTimeMillis), + "", + TimeOrDateUtil.timestampToDate(currentTimeMillis), + 0.0, + 0.0, + 0.0, + 0.0, + "", + userDataModel.name + ) + startInspection() + } - override fun onCancelClick() { - finish() + override fun onCancelClick() { + finish() + } + }) + .build().show() + } + } + + /** + * 开始巡检,获取坐标,开定时器,和设备交互 + * */ + fun startInspection() { + LocationHelper.obtainCurrentLocation(this, object : ILocationListener { + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + routes.add(aMapLocation) + inspectionBean.routes = gson.toJson(routes) + if (inspectionBean.startLng == 0.0) { + inspectionBean.startLng = aMapLocation.longitude + inspectionBean.startLat = aMapLocation.latitude } - }) - .build().show() + } + }) + updateCurrentInspection() + // 和设备通信 + communicateWithDevice(Constant.OPEN_TRANSFER_COMMAND) + } + + private fun updateCurrentInspection() { + SaveKeyValues.putValue(Constant.INSPECTION_OBJECT, gson.toJson(inspectionBean)) + } + + private fun communicateWithDevice(cmd: ByteArray) { + } override fun onResume() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index de3eb19..8887a06 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -11,12 +11,12 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ImageGridViewAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity -import com.casic.birmm.inspect.extensions.combineImagePath -import com.casic.birmm.inspect.extensions.filterString -import com.casic.birmm.inspect.extensions.show +import com.casic.birmm.inspect.extensions.* +import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.* import com.casic.birmm.inspect.vm.NewEventViewModel import com.casic.birmm.inspect.vm.UploadImageViewModel +import com.google.gson.Gson import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.PictureSelector import com.luck.picture.lib.config.PictureConfig @@ -33,6 +33,13 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private lateinit var imageAdapter: ImageGridViewAdapter private var isWarning: Boolean = true + private lateinit var inspectionId: String + private lateinit var inspectionName: String + private var longitude: Double = 0.0 + private var latitude: Double = 0.0 + private var data = -1.0//泄露默认值 + private lateinit var type: String + private lateinit var userModel: UserInfoModel override fun createViewModelByClass(): Class? = NewEventViewModel::class.java @@ -46,7 +53,13 @@ override fun initData() { uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) + val userModelJson = SaveKeyValues.getValue(Constant.USER_OBJECT, "") as String + userModel = Gson().fromJson(userModelJson, UserInfoModel::class.java) isWarning = intent.getBooleanExtra("isWarning", true) + inspectionId = intent.getStringExtra("inspectionId")!! + inspectionName = intent.getStringExtra("inspectionName")!! + longitude = intent.getDoubleExtra("longitude", 0.0) + latitude = intent.getDoubleExtra("latitude", 0.0) if (isWarning) { titleView.text = "报警事件记录" inspectCardView.visibility = View.VISIBLE @@ -159,9 +172,42 @@ "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } + type = "报警事件" + data = inspectNumberView.text.toString().filterString().toDouble() + } else { + type = "自定义事件" } - + //随机生成主键 + userModel.data!!.name?.let { user -> + viewModel.addEventTask( + "t".id(), + inspectionId, + inspectionName, + eventCreateTimeView.text.toString(), + type, + longitude, + latitude, + data, + imagePaths.reformat(), + eventEditTextView.text.toString().filterString(), + user + ) + } } + viewModel.resultModel.observe(this, Observer { model -> + if (model.code == 200) { + "保存成功".show(this) + finish() + } + }) + viewModel.loadState.observe(this, Observer { + when (it) { + is LoadState.Loading -> { + OtherUtils.showLoadingDialog(this, "保存中,请稍后...") + } + else -> OtherUtils.dismissLoadingDialog() + } + }) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/EventQueryViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/EventQueryViewModel.kt index 7dcf628..59bf212 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/EventQueryViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/EventQueryViewModel.kt @@ -3,12 +3,12 @@ import androidx.lifecycle.MutableLiveData import com.casic.birmm.inspect.base.BaseViewModel import com.casic.birmm.inspect.extensions.launch -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.utils.LoadState import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager class EventQueryViewModel : BaseViewModel() { - val resultModel = MutableLiveData() + val resultModel = MutableLiveData() fun queryEvent(keywords: String, startTime: String, endTime: String, pageIndex: Int) = launch({ diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java new file mode 100644 index 0000000..b7077a3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java @@ -0,0 +1,237 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.InspectionBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "INSPECTION_BEAN". +*/ +public class InspectionBeanDao extends AbstractDao { + + public static final String TABLENAME = "INSPECTION_BEAN"; + + /** + * Properties of entity InspectionBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property Name = new Property(2, String.class, "name", false, "NAME"); + public final static Property StartTime = new Property(3, String.class, "startTime", false, "START_TIME"); + public final static Property EndTime = new Property(4, String.class, "endTime", false, "END_TIME"); + public final static Property Date = new Property(5, String.class, "date", false, "DATE"); + public final static Property StartLng = new Property(6, double.class, "startLng", false, "START_LNG"); + public final static Property StartLat = new Property(7, double.class, "startLat", false, "START_LAT"); + public final static Property EndLng = new Property(8, double.class, "endLng", false, "END_LNG"); + public final static Property EndLat = new Property(9, double.class, "endLat", false, "END_LAT"); + public final static Property Routes = new Property(10, String.class, "routes", false, "ROUTES"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public InspectionBeanDao(DaoConfig config) { + super(config); + } + + public InspectionBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"INSPECTION_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"NAME\" TEXT," + // 2: name + "\"START_TIME\" TEXT," + // 3: startTime + "\"END_TIME\" TEXT," + // 4: endTime + "\"DATE\" TEXT," + // 5: date + "\"START_LNG\" REAL NOT NULL ," + // 6: startLng + "\"START_LAT\" REAL NOT NULL ," + // 7: startLat + "\"END_LNG\" REAL NOT NULL ," + // 8: endLng + "\"END_LAT\" REAL NOT NULL ," + // 9: endLat + "\"ROUTES\" TEXT," + // 10: routes + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"INSPECTION_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public InspectionBean readEntity(Cursor cursor, int offset) { + InspectionBean entity = new InspectionBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // startTime + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // endTime + cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // date + cursor.getDouble(offset + 6), // startLng + cursor.getDouble(offset + 7), // startLat + cursor.getDouble(offset + 8), // endLng + cursor.getDouble(offset + 9), // endLat + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // routes + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, InspectionBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setStartTime(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setEndTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setDate(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5)); + entity.setStartLng(cursor.getDouble(offset + 6)); + entity.setStartLat(cursor.getDouble(offset + 7)); + entity.setEndLng(cursor.getDouble(offset + 8)); + entity.setEndLat(cursor.getDouble(offset + 9)); + entity.setRoutes(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(InspectionBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(InspectionBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(InspectionBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java new file mode 100644 index 0000000..3f040d3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java @@ -0,0 +1,245 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.TaskEventBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "TASK_EVENT_BEAN". +*/ +public class TaskEventBeanDao extends AbstractDao { + + public static final String TABLENAME = "TASK_EVENT_BEAN"; + + /** + * Properties of entity TaskEventBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property InspectionId = new Property(2, String.class, "inspectionId", false, "INSPECTION_ID"); + public final static Property Name = new Property(3, String.class, "name", false, "NAME"); + public final static Property CreateTime = new Property(4, String.class, "createTime", false, "CREATE_TIME"); + public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); + public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); + public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); + public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); + public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public TaskEventBeanDao(DaoConfig config) { + super(config); + } + + public TaskEventBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"TASK_EVENT_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"INSPECTION_ID\" TEXT," + // 2: inspectionId + "\"NAME\" TEXT," + // 3: name + "\"CREATE_TIME\" TEXT," + // 4: createTime + "\"LNG\" REAL NOT NULL ," + // 5: lng + "\"LAT\" REAL NOT NULL ," + // 6: lat + "\"TYPE\" TEXT," + // 7: type + "\"DATA\" REAL NOT NULL ," + // 8: data + "\"IMAGES\" TEXT," + // 9: images + "\"DESCRIPTION\" TEXT," + // 10: description + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"TASK_EVENT_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public TaskEventBean readEntity(Cursor cursor, int offset) { + TaskEventBean entity = new TaskEventBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // name + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getDouble(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, TaskEventBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setInspectionId(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setName(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setCreateTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setLng(cursor.getDouble(offset + 5)); + entity.setLat(cursor.getDouble(offset + 6)); + entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); + entity.setData(cursor.getDouble(offset + 8)); + entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); + entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(TaskEventBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(TaskEventBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(TaskEventBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt new file mode 100644 index 0000000..dc635a4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt @@ -0,0 +1,41 @@ +package com.casic.birmm.inspect.model + +class EventListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var total = 0 + var rows: MutableList? = + null + + class RowsBean { + /** + * createTime : 2020-12-28 14:56:59 + * data : -1 + * description : ggg + * id : t1609138629320112121 + * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg + * inspectionId : 1609138451543200022 + * lat : 39.915956 + * lng : 116.268596 + * name : sss + * type : 自定义事件 + * user : 超超级管理员 + */ + var createTime: String? = null + var data = 0 + var description: String? = null + var id: String? = null + var images: String? = null + var inspectionId: String? = null + var lat = 0.0 + var lng = 0.0 + var name: String? = null + var type: String? = null + var user: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt deleted file mode 100644 index de499aa..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.birmm.inspect.model - -class EventModel { - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var total = 0 - var rows: MutableList? = - null - - class RowsBean { - /** - * createTime : 2020-12-28 14:56:59 - * data : -1 - * description : ggg - * id : t1609138629320112121 - * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg - * inspectionId : 1609138451543200022 - * lat : 39.915956 - * lng : 116.268596 - * name : sss - * type : 自定义事件 - * user : 超超级管理员 - */ - var createTime: String? = null - var data = 0 - var description: String? = null - var id: String? = null - var images: String? = null - var inspectionId: String? = null - var lat = 0.0 - var lng = 0.0 - var name: String? = null - var type: String? = null - var user: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt new file mode 100644 index 0000000..395b6e8 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt @@ -0,0 +1,43 @@ +package com.casic.birmm.inspect.model + +class InspectListModel { + + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + + var total = 0 + var rows: MutableList? = null + + class RowsBean { + /** + * date : 2021年07月08日 + * endLat : 39.915908 + * endLng : 116.26876 + * endTime : 2021-07-08 11:20:20 + * id : 162570318141612121 + * name : 测试 + * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] + * startLat : 39.913365 + * startLng : 116.269462 + * startTime : 2021-07-08 08:13:01 + * user : 王晓颖 + */ + var date: String? = null + var endLat = 0.0 + var endLng = 0.0 + var endTime: String? = null + var id: String? = null + var name: String? = null + var routes: String? = null + var startLat = 0.0 + var startLng = 0.0 + var startTime: String? = null + var user: String? = null + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt deleted file mode 100644 index 558e716..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.casic.birmm.inspect.model - -class InspectModel { - - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - - var total = 0 - var rows: MutableList? = null - - class RowsBean { - /** - * date : 2021年07月08日 - * endLat : 39.915908 - * endLng : 116.26876 - * endTime : 2021-07-08 11:20:20 - * id : 162570318141612121 - * name : 测试 - * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] - * startLat : 39.913365 - * startLng : 116.269462 - * startTime : 2021-07-08 08:13:01 - * user : 王晓颖 - */ - var date: String? = null - var endLat = 0.0 - var endLng = 0.0 - var endTime: String? = null - var id: String? = null - var name: String? = null - var routes: String? = null - var startLat = 0.0 - var startLng = 0.0 - var startTime: String? = null - var user: String? = null - - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt index ee6f1f6..beb469b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.model +//同巡检Id的事件列表数据模型 class TaskRecordModel { var code = 0 @@ -8,7 +9,7 @@ var isSuccess = false class DataBean { - var list: List? = null + var list: MutableList? = null class ListBean { /** diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt new file mode 100644 index 0000000..8201cb4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt @@ -0,0 +1,89 @@ +package com.casic.birmm.inspect.utils + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.util.Log +import com.casic.birmm.inspect.base.BaseApplication + + +class BroadcastManager private constructor() { + + private var mContext: Context = BaseApplication.instance + private var receiverMap: HashMap = HashMap() + + companion object { + private const val Tag = "BroadcastManager" + + val instance: BroadcastManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + BroadcastManager() + } + } + + /** + * 添加单个Action,广播的初始化 + */ + fun addAction(action: String, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + filter.addAction(action) + mContext.registerReceiver(receiver, filter) + receiverMap[action] = receiver + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 添加多个Action,广播的初始化 + */ + fun addAction(actions: Array, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + actions.forEach { + filter.addAction(it) + receiverMap[it] = receiver + } + mContext.registerReceiver(receiver, filter) + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 发送广播 + * + * @param action 唯一码 + * @param msg 参数 + */ + fun sendBroadcast(action: String, msg: String) { + try { + val intent = Intent() + intent.action = action + intent.putExtra("data", msg) + mContext.sendBroadcast(intent) + Log.d(Tag, "发送广播: $msg") + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 销毁广播 + * + * @param actions action集合 + */ + fun destroy(vararg actions: String) { + try { + actions.forEach { + val receiver = receiverMap[it] + if (receiver != null) { + mContext.unregisterReceiver(receiver) + } + } + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt index 0c9e963..507655b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt @@ -16,13 +16,25 @@ const val BLUETOOTH_ON = 20 const val BLUETOOTH_OFF = 21 const val DEVICE_CONNECTED = 22 - const val DEVICE_DISCONNECTED = 23 + const val DEVICE_CONNECT_FAIL = 23 + const val DEVICE_DISCONNECTED = 24 + const val SEND_SUCCESS = 25 + const val SEND_FAILURE = 26 + const val RECEIVE_SUCCESS = 27 + const val RECEIVE_FAILURE = 28 const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val IMAGE_MINUS_SIZE = 50 * 1024 + const val IMAGE_MINUS_SIZE = 100 * 1024 const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val USER_OBJECT = "userObject" const val OPEN_WARNING = "isOpenWarning" const val AUTO_RECORD = "isRecordLog" + const val INSPECTION_OBJECT = "inspectionObject" + + val ASK_DEV_CODE_COMMAND = byteArrayOf(0x01, 0x0D, 0x0A)// 查询设备编号命令 + val OPEN_TRANSFER_COMMAND = byteArrayOf(0x02, 0x0D, 0x0A) // 开启数据发送命令 + const val SERVICE_UUID = "0003cdd0-0000-1000-8000-00805f9b0131"//连接设备的UUID + const val WRITE_CHARACTERISTIC_UUID = "0003cdd2-0000-1000-8000-00805f9b0131"//写数据特征值UUID + const val READ_CHARACTERISTIC_UUID = "0003cdd1-0000-1000-8000-00805f9b0131"//读数据特征值UUID } \ No newline at end of file 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 new file mode 100644 index 0000000..c7fba84 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -0,0 +1,123 @@ +package com.casic.birmm.inspect.utils + +import com.casic.birmm.inspect.base.BaseApplication +import com.casic.birmm.inspect.bean.InspectionBean +import com.casic.birmm.inspect.bean.TaskEventBean +import com.casic.birmm.inspect.greendao.TaskEventBeanDao +import com.casic.birmm.inspect.model.TaskRecordModel + +class DataBaseManager private constructor() { + + companion object { + //Kotlin委托模式双重锁单例 + val instance: DataBaseManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + DataBaseManager() + } + } + + /** + * 保存巡检记录到本地 + * */ + fun insertData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.insert(bean) + } + + /** + * 删除本地巡检记录 + * */ + fun deleteData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllInspection() { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.update(bean) + } + + /** + * 查询所有数据 + */ + fun queryAllInspection(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao?.queryBuilder() + ?.build()?.list() + } + + /**********************************************************************************************/ + + /** + * 保存事件记录到本地 + * */ + fun insertData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.insert(bean) + } + + /** + * 删除本地事件记录 + * */ + fun deleteData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllTask() { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.update(bean) + } + + /** + * 根据巡检Id查询事件数据 + */ + fun queryTaskByInspection(inspectionId: String): MutableList? { + val dataBeans: MutableList = ArrayList() + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.where(TaskEventBeanDao.Properties.InspectionId.eq(inspectionId)) + ?.orderDesc(TaskEventBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + ?.build() + ?.list()?.let { + it.forEach { taskBean -> + val listBean = TaskRecordModel.DataBean.ListBean() + listBean.createTime = taskBean.createTime + listBean.data = taskBean.data.toInt() + listBean.description = taskBean.description + listBean.id = taskBean.serverMainId + listBean.images = taskBean.images + listBean.inspectionId = taskBean.inspectionId + listBean.lat = taskBean.lat + listBean.lng = taskBean.lng + listBean.name = taskBean.name + listBean.type = taskBean.type + listBean.user = taskBean.user + dataBeans.add(listBean) + } + } + return dataBeans + } + + /** + * 查询所有数据 + */ + fun queryAllTask(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.build() + ?.list() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt new file mode 100644 index 0000000..fa53beb --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt @@ -0,0 +1,34 @@ +package com.casic.birmm.inspect.utils + +import android.content.Context +import android.util.Log +import com.amap.api.location.AMapLocationClient +import com.amap.api.location.AMapLocationClientOption +import com.casic.birmm.inspect.utils.callback.ILocationListener + +object LocationHelper { + private const val Tag = "LocationHelper" + + fun obtainCurrentLocation(context: Context, listener: ILocationListener) { + val locationClient = AMapLocationClient(context) + val locationOption = AMapLocationClientOption() + locationOption.locationMode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy; + locationOption.isNeedAddress = true//设置是否返回地址信息(默认返回地址信息) + locationOption.isOnceLocation = true//设置是否只定位一次,默认为false + locationOption.isMockEnable = false//设置是否允许模拟位置,默认为false,不允许模拟位置 + locationOption.isLocationCacheEnable = false //可选,设置是否使用缓存定位,默认为true + locationClient.setLocationOption(locationOption) + locationClient.setLocationListener { + if (it != null) { + if (it.errorCode == 0) { + listener.onAMapLocationGet(it) + } else { + Log.e( + Tag, "location Error, ErrCode:" + it.errorCode + ", errInfo:" + it.errorInfo + ) + } + } + } + locationClient.startLocation() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt new file mode 100644 index 0000000..a4def44 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt @@ -0,0 +1,8 @@ +package com.casic.birmm.inspect.utils.callback + +import com.amap.api.location.AMapLocation + + +interface ILocationListener { + fun onAMapLocationGet(aMapLocation: AMapLocation) //高德定位数据 +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index a05027e..c5c9a30 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -49,7 +49,7 @@ @Query("endTime") endTime: String, @Query("limit") limit: Int, @Query("offset") offset: Int - ): InspectModel + ): InspectListModel /** * 巡检记录列表 @@ -62,7 +62,7 @@ @Query("endTime") endTime: String, @Query("limit") limit: Int, @Query("offset") offset: Int - ): EventModel + ): EventListModel /** * 获取巡检详情 @@ -93,4 +93,24 @@ @Header("token") token: String, @Part file: MultipartBody.Part ): ActionResultModel + + /** + * 新增事件 + */ + @FormUrlEncoded + @POST("/task/add") + suspend fun addEventTask( + @Header("token") token: String, + @Field("id") id: String, + @Field("inspectionId") inspectionId: String, + @Field("name") name: String, + @Field("createTime") createTime: String, + @Field("type") type: String, + @Field("Lng") Lng: Double, + @Field("Lat") Lat: Double, + @Field("data") data: Double, + @Field("images") images: String, + @Field("description") description: String, + @Field("user") user: String + ): ActionResultModel } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index df03b14..d24faff 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -49,7 +49,7 @@ startTime: String, endTime: String, pageIndex: Int - ): InspectModel { + ): InspectListModel { return api.obtainInspectList( AuthenticationHelper.token!!, keywords, @@ -68,7 +68,7 @@ startTime: String, endTime: String, pageIndex: Int - ): EventModel { + ): EventListModel { return api.obtainEventList( AuthenticationHelper.token!!, keywords, @@ -101,4 +101,17 @@ val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody) return api.uploadImage(AuthenticationHelper.token!!, imagePart) } + + /** + * 新增事件 + */ + suspend fun addEventTask( + id: String, inspectionId: String, name: String, createTime: String, type: String, + lng: Double, lat: Double, data: Double, images: String, description: String, user: String + ): ActionResultModel { + return api.addEventTask( + AuthenticationHelper.token!!, id, inspectionId, name, createTime, + type, lng, lat, data, images, description, user + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 12c7c7e..ff6de36 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -11,7 +11,7 @@ import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.model.EventModel +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 @@ -38,7 +38,7 @@ private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var adapter: EventSearchListAdapter diff --git a/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt index 2e57bec..9cce3ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt @@ -7,6 +7,8 @@ import android.view.ViewGroup.MarginLayoutParams import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider +import com.aihook.alertview.library.AlertView +import com.aihook.alertview.library.OnItemClickListener import com.casic.birmm.inspect.R import com.casic.birmm.inspect.base.BaseActivity import com.casic.birmm.inspect.extensions.show @@ -68,9 +70,35 @@ val userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) userViewModel.getUserInfo() userViewModel.resultModel.observe(this, Observer { - SaveKeyValues.putValue(Constant.USER_OBJECT, Gson().toJson(it))//保存用户对象 - startActivity(Intent(this, MainActivity::class.java)) - finish() + if (it.code == 200) { + SaveKeyValues.putValue(Constant.USER_OBJECT, Gson().toJson(it))//保存用户对象 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } else { + AlertView("温馨提示", + it.message, + "等会再来", + arrayOf("去登录"), + null, + this, + AlertView.Style.Alert, + OnItemClickListener { _, position -> + when (position) { + -1 -> { + this@GuideActivity.finish() + } + 0 -> { + startActivity( + Intent( + this@GuideActivity, + LoginActivity::class.java + ) + ) + finish() + } + } + }).show() + } }) userViewModel.loadState.observe(this, Observer { "获取用户信息失败,请重试".show(this) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt index da4b03e..03e0f95 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt @@ -10,7 +10,7 @@ import com.casic.birmm.inspect.adapter.InspectListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.PageNavigationManager import com.casic.birmm.inspect.utils.StatusBarColorUtil @@ -32,7 +32,7 @@ private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var adapter: InspectListAdapter diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt index 91fb674..dab7f0c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt @@ -1,27 +1,38 @@ package com.casic.birmm.inspect.view import android.bluetooth.BluetoothAdapter +import android.bluetooth.BluetoothDevice +import android.content.BroadcastReceiver +import android.content.Context import android.content.Intent -import android.graphics.Color import android.os.Bundle import android.os.Handler import android.os.Message import android.util.Log import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProvider +import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.MyLocationStyle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.bean.BlueToothBean +import com.casic.birmm.inspect.bean.InspectionBean +import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.utils.Constant -import com.casic.birmm.inspect.utils.OtherUtils -import com.casic.birmm.inspect.utils.PageNavigationManager -import com.casic.birmm.inspect.utils.StatusBarColorUtil +import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.UserInfoModel +import com.casic.birmm.inspect.utils.* +import com.casic.birmm.inspect.utils.callback.ILocationListener +import com.casic.birmm.inspect.vm.TaskRecordViewModel import com.casic.birmm.inspect.widgets.InputDialog import com.casic.birmm.inspect.widgets.SingleChoiceDialog +import com.google.gson.Gson import com.gyf.immersionbar.ImmersionBar import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet import kotlinx.android.synthetic.main.activity_inspect_route.mapView import kotlinx.android.synthetic.main.activity_map.* import kotlinx.android.synthetic.main.include_base_title.* @@ -42,9 +53,21 @@ } } + private val itemList: List = arrayListOf("报警事件", "自定义事件") private lateinit var aMap: AMap private lateinit var locationStyle: MyLocationStyle - private val itemList: List = arrayListOf("报警事件", "自定义事件") + private lateinit var inspectionName: String + private lateinit var inspectionId: String + private lateinit var inspectionBean: InspectionBean + private lateinit var userDataModel: UserInfoModel.DataBean + private var dataBeans: MutableList = ArrayList() + private var routes: MutableList = ArrayList()//路线集和 + private var gson: Gson = Gson() + private var isBluetoothOn = true + private var blueToothDevices: MutableList = ArrayList() + private var blueToothBeans: MutableList = ArrayList()//搜索展示列表 + private var bluetoothAdapter: BluetoothAdapter? = null + private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 init { weakReferenceHandler = WeakReferenceHandler(this) @@ -53,22 +76,40 @@ private class WeakReferenceHandler(activity: MapActivity) : Handler() { private val activity: WeakReference = WeakReference(activity) override fun handleMessage(msg: Message) { - val mainActivity = activity.get() ?: return + val mapActivity = activity.get() ?: return when (msg.what) { Constant.BLUETOOTH_ON -> { - "蓝牙已开启".show(mainActivity) - mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + "蓝牙已开启".show(mapActivity) + mapActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + mapActivity.isBluetoothOn = true } Constant.BLUETOOTH_OFF -> { - "蓝牙已关闭".show(mainActivity) - mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + "蓝牙已关闭".show(mapActivity) + mapActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + mapActivity.isBluetoothOn = false } Constant.DEVICE_CONNECTED -> { //TODO 设备已连接 + mapActivity.communicateWithDevice(Constant.ASK_DEV_CODE_COMMAND) + } + Constant.DEVICE_CONNECT_FAIL -> { + //TODO 设备连接失败/超时 } Constant.DEVICE_DISCONNECTED -> { //TODO 设备断开连接 } + Constant.SEND_SUCCESS -> { + //TODO 发送成功 + } + Constant.SEND_FAILURE -> { + //TODO 发送失败 + } + Constant.RECEIVE_SUCCESS -> { + //TODO 接收成功 + } + Constant.RECEIVE_FAILURE -> { + //TODO 接收失败 + } } } } @@ -79,7 +120,8 @@ PageNavigationManager.addActivity(this) setupTopBarLayout() if (OtherUtils.isNetworkConnected(this)) { - initData(savedInstanceState) + initData() + initMap(savedInstanceState) initEvent() } else { "糟糕,没有接入任何网络~".show(this) @@ -93,7 +135,133 @@ titleView.text = "巡检" } - fun initData(savedInstanceState: Bundle?) { + fun initData() { + val userModelJson = SaveKeyValues.getValue(Constant.USER_OBJECT, "") as String + userDataModel = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! + //蓝牙搜索监听 + BroadcastManager.instance.addAction( + arrayOf( + BluetoothDevice.ACTION_FOUND, + BluetoothAdapter.ACTION_DISCOVERY_FINISHED + ), object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + when (intent?.action) { + BluetoothDevice.ACTION_FOUND -> { + val device = + intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE) + lateinit var bean: BlueToothBean + device?.let { + bean = if (it.name == null || it.name == "") { + BlueToothBean("设备名未知", it.address) + } else { + BlueToothBean(device.name, device.address) + } + } + if (bean.blueToothName != "设备名未知") { + if (blueToothBeans.size == 0) { + blueToothBeans.add(bean) + blueToothDevices.add(device) + } else { + //0表示未添加到list的新设备,1表示已经扫描并添加到list的设备 + var judge = 0 + for (it in blueToothBeans) { + if (it.blueToothAddress == bean.blueToothAddress) { + judge = 1 + break + } + } + if (judge == 0) { + blueToothBeans.add(bean) + blueToothDevices.add(device) + } + } + } + } + BluetoothAdapter.ACTION_DISCOVERY_FINISHED -> { + OtherUtils.dismissLoadingDialog() + bluetoothButton.isEnabled = true + Log.d(Tag, gson.toJson(blueToothBeans)) + val sheetBuilder = + QMUIBottomSheet.BottomListSheetBuilder(this@MapActivity) + sheetBuilder.setTitle("请选择要连接的设备") + blueToothBeans.forEach { + sheetBuilder.addItem(it.blueToothName) + } + sheetBuilder.setGravityCenter(true).setAddCancelBtn(true) + .setOnSheetItemClickListener { dialog, _, position, _ -> + dialog.dismiss() + //连接点击的设备 + startConnectDevice( + blueToothBeans[position].blueToothName, + blueToothDevices[position] + ) + }.build().show() + } + } + } + }) + } + + private fun startConnectDevice(deviceName: String, bluetoothDevice: BluetoothDevice?) { + if (bluetoothDevice == null) { + Log.d(Tag, "startConnectDevice-->bluetoothDevice == null") + return + } + this.currentDevice = bluetoothDevice + if (bluetoothAdapter == null) { + Log.d(Tag, "startConnectDevice-->bluetoothAdapter == null") + return + } + OtherUtils.showLoadingDialog(this, "正在连接[$deviceName]...") + + } + +// private fun manageConnectSendReceiveData(bluetoothSocket: BluetoothSocket) { +// connectedThread = ConnectedThread(bluetoothSocket) +// connectedThread!!.start() +// connectedThread!!.setOnSendReceiveDataListener(object : +// ConnectedThread.OnSendReceiveDataListener { +// override fun onSendDataSuccess(data: ByteArray?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.SEND_SUCCESS +// message.obj = "发送数据成功,长度" + data!!.size + "->" + ConnectedThread.bytes2HexString( +// data, +// data.size +// ) +// weakReferenceHandler.sendMessage(message) +// } +// +// override fun onSendDataError(data: ByteArray?, errorMsg: String?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.SEND_FAILURE +// message.obj = "发送数据出错,长度" + data!!.size + "->" + ConnectedThread.bytes2HexString( +// data, +// data.size +// ) +// weakReferenceHandler.sendMessage(message) +// } +// +// override fun onReceiveDataSuccess(buffer: ByteArray?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.RECEIVE_SUCCESS +// message.obj = +// "成功接收数据,长度" + buffer!!.size + "->" + ConnectedThread.bytes2HexString( +// buffer, +// buffer.size +// ) +// weakReferenceHandler.sendMessage(message) +// } +// +// override fun onReceiveDataError(errorMsg: String?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.RECEIVE_FAILURE +// message.obj = "接收数据出错:$errorMsg" +// weakReferenceHandler.sendMessage(message) +// } +// }) +// } + + private fun initMap(savedInstanceState: Bundle?) { mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -102,35 +270,19 @@ //显示定位小蓝点 locationStyle = MyLocationStyle() locationStyle.showMyLocation(true)//设置是否显示定位小蓝点 - locationStyle.strokeColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的边框颜色 - locationStyle.radiusFillColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的填充颜色 aMap.myLocationStyle = locationStyle aMap.isMyLocationEnabled = true aMap.addOnMyLocationChangeListener { - Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]") + // Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]") } } fun initEvent() { leftBackView.setOnClickListener { this.finish() } + //地图左边五个按钮事件 + menuButtonEvent() //需要判断是否是上次未完的巡检 -// selectInspectMode() - - //判断蓝牙的状态 - val blueAdapter = BluetoothAdapter.getDefaultAdapter() - if (blueAdapter == null) { - "该设备不支持蓝牙,无法连接".show(this) - } else { - if (blueAdapter.isEnabled) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { - //搜索蓝牙 - } - } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) - //打开 - } - } + selectInspectMode() newEventButton.setChangeAlphaWhenPress(true) newEventButton.setOnClickListener { @@ -149,29 +301,149 @@ intent.putExtra("isWarning", false) } } - startActivity(intent) + //获取当前定位 + LocationHelper.obtainCurrentLocation(this@MapActivity, + object : ILocationListener { + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + intent.putExtra("inspectionId", inspectionId) + intent.putExtra("inspectionName", inspectionName) + intent.putExtra("longitude", aMapLocation.longitude) + intent.putExtra("latitude", aMapLocation.latitude) + startActivity(intent) + } + }) } }) .build().show() } } + private fun menuButtonEvent() { + //判断蓝牙的状态 + bluetoothAdapter = BluetoothAdapter.getDefaultAdapter() + if (bluetoothAdapter == null) { + "该设备不支持蓝牙,无法连接".show(this) + return + } + if (bluetoothAdapter!!.isEnabled) { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { + if (currentDevice == null) { + //搜索蓝牙 + searchDevice() + } else { + if (currentDevice!!.bondState == BluetoothDevice.BOND_NONE) { + searchDevice() + } else { + //断开连接 + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + "设备已断开连接".show(this) + } + } + } + } else { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + //打开 + startActivity(Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)) + } + } + + private fun searchDevice() { + //搜索蓝牙 + if (bluetoothAdapter!!.isDiscovering) { + //搜索中不让再次搜索 + bluetoothButton.isEnabled = false + return + } + OtherUtils.showLoadingDialog(this, "设备搜索中..."); + bluetoothAdapter!!.startDiscovery() + } + private fun selectInspectMode() { - InputDialog.Builder().setContext(this) - .setTitle("请输入巡检标签") - .setHintText("如:xxx区间巡检") - .setNegativeButton("放弃") - .setPositiveButton("开始巡检") - .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener { - override fun onConfirmClick(input: String) { + val currentInspection = SaveKeyValues.getValue(Constant.INSPECTION_OBJECT, "") as String + if (currentInspection != "") { + inspectionBean = gson.fromJson(currentInspection, InspectionBean::class.java) + /** + * 获取最近的Task + * */ + if (OtherUtils.isNetworkConnected(this)) { + val taskViewModel = ViewModelProvider(this).get(TaskRecordViewModel::class.java) + taskViewModel.searchByInspection(inspectionBean.serverMainId) + taskViewModel.resultModel.observe(this, Observer { + dataBeans = it.data!!.list!! + }) + } else { + dataBeans = + DataBaseManager.instance.queryTaskByInspection(inspectionBean.serverMainId)!! + } + "欢迎回来,继续未完成巡检".show(this) + } else { + InputDialog.Builder().setContext(this) + .setTitle("请输入巡检标签") + .setHintText("如:xxx区间巡检") + .setNegativeButton("放弃") + .setPositiveButton("开始巡检") + .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener { + override fun onConfirmClick(input: String) { + val currentTimeMillis = System.currentTimeMillis() + //新建巡检,inspectionId必为空 + inspectionId = currentTimeMillis.id() + inspectionName = input - } + inspectionBean = + InspectionBean( + System.currentTimeMillis(), + inspectionId, + inspectionName, + TimeOrDateUtil.timestampToCompleteDate(currentTimeMillis), + "", + TimeOrDateUtil.timestampToDate(currentTimeMillis), + 0.0, + 0.0, + 0.0, + 0.0, + "", + userDataModel.name + ) + startInspection() + } - override fun onCancelClick() { - finish() + override fun onCancelClick() { + finish() + } + }) + .build().show() + } + } + + /** + * 开始巡检,获取坐标,开定时器,和设备交互 + * */ + fun startInspection() { + LocationHelper.obtainCurrentLocation(this, object : ILocationListener { + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + routes.add(aMapLocation) + inspectionBean.routes = gson.toJson(routes) + if (inspectionBean.startLng == 0.0) { + inspectionBean.startLng = aMapLocation.longitude + inspectionBean.startLat = aMapLocation.latitude } - }) - .build().show() + } + }) + updateCurrentInspection() + // 和设备通信 + communicateWithDevice(Constant.OPEN_TRANSFER_COMMAND) + } + + private fun updateCurrentInspection() { + SaveKeyValues.putValue(Constant.INSPECTION_OBJECT, gson.toJson(inspectionBean)) + } + + private fun communicateWithDevice(cmd: ByteArray) { + } override fun onResume() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index de3eb19..8887a06 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -11,12 +11,12 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ImageGridViewAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity -import com.casic.birmm.inspect.extensions.combineImagePath -import com.casic.birmm.inspect.extensions.filterString -import com.casic.birmm.inspect.extensions.show +import com.casic.birmm.inspect.extensions.* +import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.* import com.casic.birmm.inspect.vm.NewEventViewModel import com.casic.birmm.inspect.vm.UploadImageViewModel +import com.google.gson.Gson import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.PictureSelector import com.luck.picture.lib.config.PictureConfig @@ -33,6 +33,13 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private lateinit var imageAdapter: ImageGridViewAdapter private var isWarning: Boolean = true + private lateinit var inspectionId: String + private lateinit var inspectionName: String + private var longitude: Double = 0.0 + private var latitude: Double = 0.0 + private var data = -1.0//泄露默认值 + private lateinit var type: String + private lateinit var userModel: UserInfoModel override fun createViewModelByClass(): Class? = NewEventViewModel::class.java @@ -46,7 +53,13 @@ override fun initData() { uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) + val userModelJson = SaveKeyValues.getValue(Constant.USER_OBJECT, "") as String + userModel = Gson().fromJson(userModelJson, UserInfoModel::class.java) isWarning = intent.getBooleanExtra("isWarning", true) + inspectionId = intent.getStringExtra("inspectionId")!! + inspectionName = intent.getStringExtra("inspectionName")!! + longitude = intent.getDoubleExtra("longitude", 0.0) + latitude = intent.getDoubleExtra("latitude", 0.0) if (isWarning) { titleView.text = "报警事件记录" inspectCardView.visibility = View.VISIBLE @@ -159,9 +172,42 @@ "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } + type = "报警事件" + data = inspectNumberView.text.toString().filterString().toDouble() + } else { + type = "自定义事件" } - + //随机生成主键 + userModel.data!!.name?.let { user -> + viewModel.addEventTask( + "t".id(), + inspectionId, + inspectionName, + eventCreateTimeView.text.toString(), + type, + longitude, + latitude, + data, + imagePaths.reformat(), + eventEditTextView.text.toString().filterString(), + user + ) + } } + viewModel.resultModel.observe(this, Observer { model -> + if (model.code == 200) { + "保存成功".show(this) + finish() + } + }) + viewModel.loadState.observe(this, Observer { + when (it) { + is LoadState.Loading -> { + OtherUtils.showLoadingDialog(this, "保存中,请稍后...") + } + else -> OtherUtils.dismissLoadingDialog() + } + }) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/EventQueryViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/EventQueryViewModel.kt index 7dcf628..59bf212 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/EventQueryViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/EventQueryViewModel.kt @@ -3,12 +3,12 @@ import androidx.lifecycle.MutableLiveData import com.casic.birmm.inspect.base.BaseViewModel import com.casic.birmm.inspect.extensions.launch -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.utils.LoadState import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager class EventQueryViewModel : BaseViewModel() { - val resultModel = MutableLiveData() + val resultModel = MutableLiveData() fun queryEvent(keywords: String, startTime: String, endTime: String, pageIndex: Int) = launch({ diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/InspectionQueryViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/InspectionQueryViewModel.kt index 4c7c302..ea87162 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/InspectionQueryViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/InspectionQueryViewModel.kt @@ -3,12 +3,12 @@ import androidx.lifecycle.MutableLiveData import com.casic.birmm.inspect.base.BaseViewModel import com.casic.birmm.inspect.extensions.launch -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.utils.LoadState import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager class InspectionQueryViewModel : BaseViewModel() { - val resultModel = MutableLiveData() + val resultModel = MutableLiveData() fun queryInspect(keywords: String, startTime: String, endTime: String, pageIndex: Int) = launch({ diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java new file mode 100644 index 0000000..b7077a3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java @@ -0,0 +1,237 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.InspectionBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "INSPECTION_BEAN". +*/ +public class InspectionBeanDao extends AbstractDao { + + public static final String TABLENAME = "INSPECTION_BEAN"; + + /** + * Properties of entity InspectionBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property Name = new Property(2, String.class, "name", false, "NAME"); + public final static Property StartTime = new Property(3, String.class, "startTime", false, "START_TIME"); + public final static Property EndTime = new Property(4, String.class, "endTime", false, "END_TIME"); + public final static Property Date = new Property(5, String.class, "date", false, "DATE"); + public final static Property StartLng = new Property(6, double.class, "startLng", false, "START_LNG"); + public final static Property StartLat = new Property(7, double.class, "startLat", false, "START_LAT"); + public final static Property EndLng = new Property(8, double.class, "endLng", false, "END_LNG"); + public final static Property EndLat = new Property(9, double.class, "endLat", false, "END_LAT"); + public final static Property Routes = new Property(10, String.class, "routes", false, "ROUTES"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public InspectionBeanDao(DaoConfig config) { + super(config); + } + + public InspectionBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"INSPECTION_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"NAME\" TEXT," + // 2: name + "\"START_TIME\" TEXT," + // 3: startTime + "\"END_TIME\" TEXT," + // 4: endTime + "\"DATE\" TEXT," + // 5: date + "\"START_LNG\" REAL NOT NULL ," + // 6: startLng + "\"START_LAT\" REAL NOT NULL ," + // 7: startLat + "\"END_LNG\" REAL NOT NULL ," + // 8: endLng + "\"END_LAT\" REAL NOT NULL ," + // 9: endLat + "\"ROUTES\" TEXT," + // 10: routes + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"INSPECTION_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public InspectionBean readEntity(Cursor cursor, int offset) { + InspectionBean entity = new InspectionBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // startTime + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // endTime + cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // date + cursor.getDouble(offset + 6), // startLng + cursor.getDouble(offset + 7), // startLat + cursor.getDouble(offset + 8), // endLng + cursor.getDouble(offset + 9), // endLat + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // routes + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, InspectionBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setStartTime(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setEndTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setDate(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5)); + entity.setStartLng(cursor.getDouble(offset + 6)); + entity.setStartLat(cursor.getDouble(offset + 7)); + entity.setEndLng(cursor.getDouble(offset + 8)); + entity.setEndLat(cursor.getDouble(offset + 9)); + entity.setRoutes(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(InspectionBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(InspectionBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(InspectionBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java new file mode 100644 index 0000000..3f040d3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java @@ -0,0 +1,245 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.TaskEventBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "TASK_EVENT_BEAN". +*/ +public class TaskEventBeanDao extends AbstractDao { + + public static final String TABLENAME = "TASK_EVENT_BEAN"; + + /** + * Properties of entity TaskEventBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property InspectionId = new Property(2, String.class, "inspectionId", false, "INSPECTION_ID"); + public final static Property Name = new Property(3, String.class, "name", false, "NAME"); + public final static Property CreateTime = new Property(4, String.class, "createTime", false, "CREATE_TIME"); + public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); + public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); + public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); + public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); + public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public TaskEventBeanDao(DaoConfig config) { + super(config); + } + + public TaskEventBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"TASK_EVENT_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"INSPECTION_ID\" TEXT," + // 2: inspectionId + "\"NAME\" TEXT," + // 3: name + "\"CREATE_TIME\" TEXT," + // 4: createTime + "\"LNG\" REAL NOT NULL ," + // 5: lng + "\"LAT\" REAL NOT NULL ," + // 6: lat + "\"TYPE\" TEXT," + // 7: type + "\"DATA\" REAL NOT NULL ," + // 8: data + "\"IMAGES\" TEXT," + // 9: images + "\"DESCRIPTION\" TEXT," + // 10: description + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"TASK_EVENT_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public TaskEventBean readEntity(Cursor cursor, int offset) { + TaskEventBean entity = new TaskEventBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // name + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getDouble(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, TaskEventBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setInspectionId(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setName(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setCreateTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setLng(cursor.getDouble(offset + 5)); + entity.setLat(cursor.getDouble(offset + 6)); + entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); + entity.setData(cursor.getDouble(offset + 8)); + entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); + entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(TaskEventBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(TaskEventBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(TaskEventBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt new file mode 100644 index 0000000..dc635a4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt @@ -0,0 +1,41 @@ +package com.casic.birmm.inspect.model + +class EventListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var total = 0 + var rows: MutableList? = + null + + class RowsBean { + /** + * createTime : 2020-12-28 14:56:59 + * data : -1 + * description : ggg + * id : t1609138629320112121 + * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg + * inspectionId : 1609138451543200022 + * lat : 39.915956 + * lng : 116.268596 + * name : sss + * type : 自定义事件 + * user : 超超级管理员 + */ + var createTime: String? = null + var data = 0 + var description: String? = null + var id: String? = null + var images: String? = null + var inspectionId: String? = null + var lat = 0.0 + var lng = 0.0 + var name: String? = null + var type: String? = null + var user: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt deleted file mode 100644 index de499aa..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.birmm.inspect.model - -class EventModel { - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var total = 0 - var rows: MutableList? = - null - - class RowsBean { - /** - * createTime : 2020-12-28 14:56:59 - * data : -1 - * description : ggg - * id : t1609138629320112121 - * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg - * inspectionId : 1609138451543200022 - * lat : 39.915956 - * lng : 116.268596 - * name : sss - * type : 自定义事件 - * user : 超超级管理员 - */ - var createTime: String? = null - var data = 0 - var description: String? = null - var id: String? = null - var images: String? = null - var inspectionId: String? = null - var lat = 0.0 - var lng = 0.0 - var name: String? = null - var type: String? = null - var user: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt new file mode 100644 index 0000000..395b6e8 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt @@ -0,0 +1,43 @@ +package com.casic.birmm.inspect.model + +class InspectListModel { + + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + + var total = 0 + var rows: MutableList? = null + + class RowsBean { + /** + * date : 2021年07月08日 + * endLat : 39.915908 + * endLng : 116.26876 + * endTime : 2021-07-08 11:20:20 + * id : 162570318141612121 + * name : 测试 + * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] + * startLat : 39.913365 + * startLng : 116.269462 + * startTime : 2021-07-08 08:13:01 + * user : 王晓颖 + */ + var date: String? = null + var endLat = 0.0 + var endLng = 0.0 + var endTime: String? = null + var id: String? = null + var name: String? = null + var routes: String? = null + var startLat = 0.0 + var startLng = 0.0 + var startTime: String? = null + var user: String? = null + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt deleted file mode 100644 index 558e716..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.casic.birmm.inspect.model - -class InspectModel { - - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - - var total = 0 - var rows: MutableList? = null - - class RowsBean { - /** - * date : 2021年07月08日 - * endLat : 39.915908 - * endLng : 116.26876 - * endTime : 2021-07-08 11:20:20 - * id : 162570318141612121 - * name : 测试 - * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] - * startLat : 39.913365 - * startLng : 116.269462 - * startTime : 2021-07-08 08:13:01 - * user : 王晓颖 - */ - var date: String? = null - var endLat = 0.0 - var endLng = 0.0 - var endTime: String? = null - var id: String? = null - var name: String? = null - var routes: String? = null - var startLat = 0.0 - var startLng = 0.0 - var startTime: String? = null - var user: String? = null - - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt index ee6f1f6..beb469b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.model +//同巡检Id的事件列表数据模型 class TaskRecordModel { var code = 0 @@ -8,7 +9,7 @@ var isSuccess = false class DataBean { - var list: List? = null + var list: MutableList? = null class ListBean { /** diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt new file mode 100644 index 0000000..8201cb4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt @@ -0,0 +1,89 @@ +package com.casic.birmm.inspect.utils + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.util.Log +import com.casic.birmm.inspect.base.BaseApplication + + +class BroadcastManager private constructor() { + + private var mContext: Context = BaseApplication.instance + private var receiverMap: HashMap = HashMap() + + companion object { + private const val Tag = "BroadcastManager" + + val instance: BroadcastManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + BroadcastManager() + } + } + + /** + * 添加单个Action,广播的初始化 + */ + fun addAction(action: String, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + filter.addAction(action) + mContext.registerReceiver(receiver, filter) + receiverMap[action] = receiver + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 添加多个Action,广播的初始化 + */ + fun addAction(actions: Array, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + actions.forEach { + filter.addAction(it) + receiverMap[it] = receiver + } + mContext.registerReceiver(receiver, filter) + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 发送广播 + * + * @param action 唯一码 + * @param msg 参数 + */ + fun sendBroadcast(action: String, msg: String) { + try { + val intent = Intent() + intent.action = action + intent.putExtra("data", msg) + mContext.sendBroadcast(intent) + Log.d(Tag, "发送广播: $msg") + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 销毁广播 + * + * @param actions action集合 + */ + fun destroy(vararg actions: String) { + try { + actions.forEach { + val receiver = receiverMap[it] + if (receiver != null) { + mContext.unregisterReceiver(receiver) + } + } + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt index 0c9e963..507655b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt @@ -16,13 +16,25 @@ const val BLUETOOTH_ON = 20 const val BLUETOOTH_OFF = 21 const val DEVICE_CONNECTED = 22 - const val DEVICE_DISCONNECTED = 23 + const val DEVICE_CONNECT_FAIL = 23 + const val DEVICE_DISCONNECTED = 24 + const val SEND_SUCCESS = 25 + const val SEND_FAILURE = 26 + const val RECEIVE_SUCCESS = 27 + const val RECEIVE_FAILURE = 28 const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val IMAGE_MINUS_SIZE = 50 * 1024 + const val IMAGE_MINUS_SIZE = 100 * 1024 const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val USER_OBJECT = "userObject" const val OPEN_WARNING = "isOpenWarning" const val AUTO_RECORD = "isRecordLog" + const val INSPECTION_OBJECT = "inspectionObject" + + val ASK_DEV_CODE_COMMAND = byteArrayOf(0x01, 0x0D, 0x0A)// 查询设备编号命令 + val OPEN_TRANSFER_COMMAND = byteArrayOf(0x02, 0x0D, 0x0A) // 开启数据发送命令 + const val SERVICE_UUID = "0003cdd0-0000-1000-8000-00805f9b0131"//连接设备的UUID + const val WRITE_CHARACTERISTIC_UUID = "0003cdd2-0000-1000-8000-00805f9b0131"//写数据特征值UUID + const val READ_CHARACTERISTIC_UUID = "0003cdd1-0000-1000-8000-00805f9b0131"//读数据特征值UUID } \ No newline at end of file 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 new file mode 100644 index 0000000..c7fba84 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -0,0 +1,123 @@ +package com.casic.birmm.inspect.utils + +import com.casic.birmm.inspect.base.BaseApplication +import com.casic.birmm.inspect.bean.InspectionBean +import com.casic.birmm.inspect.bean.TaskEventBean +import com.casic.birmm.inspect.greendao.TaskEventBeanDao +import com.casic.birmm.inspect.model.TaskRecordModel + +class DataBaseManager private constructor() { + + companion object { + //Kotlin委托模式双重锁单例 + val instance: DataBaseManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + DataBaseManager() + } + } + + /** + * 保存巡检记录到本地 + * */ + fun insertData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.insert(bean) + } + + /** + * 删除本地巡检记录 + * */ + fun deleteData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllInspection() { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.update(bean) + } + + /** + * 查询所有数据 + */ + fun queryAllInspection(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao?.queryBuilder() + ?.build()?.list() + } + + /**********************************************************************************************/ + + /** + * 保存事件记录到本地 + * */ + fun insertData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.insert(bean) + } + + /** + * 删除本地事件记录 + * */ + fun deleteData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllTask() { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.update(bean) + } + + /** + * 根据巡检Id查询事件数据 + */ + fun queryTaskByInspection(inspectionId: String): MutableList? { + val dataBeans: MutableList = ArrayList() + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.where(TaskEventBeanDao.Properties.InspectionId.eq(inspectionId)) + ?.orderDesc(TaskEventBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + ?.build() + ?.list()?.let { + it.forEach { taskBean -> + val listBean = TaskRecordModel.DataBean.ListBean() + listBean.createTime = taskBean.createTime + listBean.data = taskBean.data.toInt() + listBean.description = taskBean.description + listBean.id = taskBean.serverMainId + listBean.images = taskBean.images + listBean.inspectionId = taskBean.inspectionId + listBean.lat = taskBean.lat + listBean.lng = taskBean.lng + listBean.name = taskBean.name + listBean.type = taskBean.type + listBean.user = taskBean.user + dataBeans.add(listBean) + } + } + return dataBeans + } + + /** + * 查询所有数据 + */ + fun queryAllTask(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.build() + ?.list() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt new file mode 100644 index 0000000..fa53beb --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt @@ -0,0 +1,34 @@ +package com.casic.birmm.inspect.utils + +import android.content.Context +import android.util.Log +import com.amap.api.location.AMapLocationClient +import com.amap.api.location.AMapLocationClientOption +import com.casic.birmm.inspect.utils.callback.ILocationListener + +object LocationHelper { + private const val Tag = "LocationHelper" + + fun obtainCurrentLocation(context: Context, listener: ILocationListener) { + val locationClient = AMapLocationClient(context) + val locationOption = AMapLocationClientOption() + locationOption.locationMode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy; + locationOption.isNeedAddress = true//设置是否返回地址信息(默认返回地址信息) + locationOption.isOnceLocation = true//设置是否只定位一次,默认为false + locationOption.isMockEnable = false//设置是否允许模拟位置,默认为false,不允许模拟位置 + locationOption.isLocationCacheEnable = false //可选,设置是否使用缓存定位,默认为true + locationClient.setLocationOption(locationOption) + locationClient.setLocationListener { + if (it != null) { + if (it.errorCode == 0) { + listener.onAMapLocationGet(it) + } else { + Log.e( + Tag, "location Error, ErrCode:" + it.errorCode + ", errInfo:" + it.errorInfo + ) + } + } + } + locationClient.startLocation() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt new file mode 100644 index 0000000..a4def44 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt @@ -0,0 +1,8 @@ +package com.casic.birmm.inspect.utils.callback + +import com.amap.api.location.AMapLocation + + +interface ILocationListener { + fun onAMapLocationGet(aMapLocation: AMapLocation) //高德定位数据 +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index a05027e..c5c9a30 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -49,7 +49,7 @@ @Query("endTime") endTime: String, @Query("limit") limit: Int, @Query("offset") offset: Int - ): InspectModel + ): InspectListModel /** * 巡检记录列表 @@ -62,7 +62,7 @@ @Query("endTime") endTime: String, @Query("limit") limit: Int, @Query("offset") offset: Int - ): EventModel + ): EventListModel /** * 获取巡检详情 @@ -93,4 +93,24 @@ @Header("token") token: String, @Part file: MultipartBody.Part ): ActionResultModel + + /** + * 新增事件 + */ + @FormUrlEncoded + @POST("/task/add") + suspend fun addEventTask( + @Header("token") token: String, + @Field("id") id: String, + @Field("inspectionId") inspectionId: String, + @Field("name") name: String, + @Field("createTime") createTime: String, + @Field("type") type: String, + @Field("Lng") Lng: Double, + @Field("Lat") Lat: Double, + @Field("data") data: Double, + @Field("images") images: String, + @Field("description") description: String, + @Field("user") user: String + ): ActionResultModel } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index df03b14..d24faff 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -49,7 +49,7 @@ startTime: String, endTime: String, pageIndex: Int - ): InspectModel { + ): InspectListModel { return api.obtainInspectList( AuthenticationHelper.token!!, keywords, @@ -68,7 +68,7 @@ startTime: String, endTime: String, pageIndex: Int - ): EventModel { + ): EventListModel { return api.obtainEventList( AuthenticationHelper.token!!, keywords, @@ -101,4 +101,17 @@ val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody) return api.uploadImage(AuthenticationHelper.token!!, imagePart) } + + /** + * 新增事件 + */ + suspend fun addEventTask( + id: String, inspectionId: String, name: String, createTime: String, type: String, + lng: Double, lat: Double, data: Double, images: String, description: String, user: String + ): ActionResultModel { + return api.addEventTask( + AuthenticationHelper.token!!, id, inspectionId, name, createTime, + type, lng, lat, data, images, description, user + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 12c7c7e..ff6de36 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -11,7 +11,7 @@ import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.model.EventModel +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 @@ -38,7 +38,7 @@ private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var adapter: EventSearchListAdapter diff --git a/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt index 2e57bec..9cce3ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt @@ -7,6 +7,8 @@ import android.view.ViewGroup.MarginLayoutParams import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider +import com.aihook.alertview.library.AlertView +import com.aihook.alertview.library.OnItemClickListener import com.casic.birmm.inspect.R import com.casic.birmm.inspect.base.BaseActivity import com.casic.birmm.inspect.extensions.show @@ -68,9 +70,35 @@ val userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) userViewModel.getUserInfo() userViewModel.resultModel.observe(this, Observer { - SaveKeyValues.putValue(Constant.USER_OBJECT, Gson().toJson(it))//保存用户对象 - startActivity(Intent(this, MainActivity::class.java)) - finish() + if (it.code == 200) { + SaveKeyValues.putValue(Constant.USER_OBJECT, Gson().toJson(it))//保存用户对象 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } else { + AlertView("温馨提示", + it.message, + "等会再来", + arrayOf("去登录"), + null, + this, + AlertView.Style.Alert, + OnItemClickListener { _, position -> + when (position) { + -1 -> { + this@GuideActivity.finish() + } + 0 -> { + startActivity( + Intent( + this@GuideActivity, + LoginActivity::class.java + ) + ) + finish() + } + } + }).show() + } }) userViewModel.loadState.observe(this, Observer { "获取用户信息失败,请重试".show(this) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt index da4b03e..03e0f95 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt @@ -10,7 +10,7 @@ import com.casic.birmm.inspect.adapter.InspectListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.PageNavigationManager import com.casic.birmm.inspect.utils.StatusBarColorUtil @@ -32,7 +32,7 @@ private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var adapter: InspectListAdapter diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt index 91fb674..dab7f0c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt @@ -1,27 +1,38 @@ package com.casic.birmm.inspect.view import android.bluetooth.BluetoothAdapter +import android.bluetooth.BluetoothDevice +import android.content.BroadcastReceiver +import android.content.Context import android.content.Intent -import android.graphics.Color import android.os.Bundle import android.os.Handler import android.os.Message import android.util.Log import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProvider +import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.MyLocationStyle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.bean.BlueToothBean +import com.casic.birmm.inspect.bean.InspectionBean +import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.utils.Constant -import com.casic.birmm.inspect.utils.OtherUtils -import com.casic.birmm.inspect.utils.PageNavigationManager -import com.casic.birmm.inspect.utils.StatusBarColorUtil +import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.UserInfoModel +import com.casic.birmm.inspect.utils.* +import com.casic.birmm.inspect.utils.callback.ILocationListener +import com.casic.birmm.inspect.vm.TaskRecordViewModel import com.casic.birmm.inspect.widgets.InputDialog import com.casic.birmm.inspect.widgets.SingleChoiceDialog +import com.google.gson.Gson import com.gyf.immersionbar.ImmersionBar import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet import kotlinx.android.synthetic.main.activity_inspect_route.mapView import kotlinx.android.synthetic.main.activity_map.* import kotlinx.android.synthetic.main.include_base_title.* @@ -42,9 +53,21 @@ } } + private val itemList: List = arrayListOf("报警事件", "自定义事件") private lateinit var aMap: AMap private lateinit var locationStyle: MyLocationStyle - private val itemList: List = arrayListOf("报警事件", "自定义事件") + private lateinit var inspectionName: String + private lateinit var inspectionId: String + private lateinit var inspectionBean: InspectionBean + private lateinit var userDataModel: UserInfoModel.DataBean + private var dataBeans: MutableList = ArrayList() + private var routes: MutableList = ArrayList()//路线集和 + private var gson: Gson = Gson() + private var isBluetoothOn = true + private var blueToothDevices: MutableList = ArrayList() + private var blueToothBeans: MutableList = ArrayList()//搜索展示列表 + private var bluetoothAdapter: BluetoothAdapter? = null + private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 init { weakReferenceHandler = WeakReferenceHandler(this) @@ -53,22 +76,40 @@ private class WeakReferenceHandler(activity: MapActivity) : Handler() { private val activity: WeakReference = WeakReference(activity) override fun handleMessage(msg: Message) { - val mainActivity = activity.get() ?: return + val mapActivity = activity.get() ?: return when (msg.what) { Constant.BLUETOOTH_ON -> { - "蓝牙已开启".show(mainActivity) - mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + "蓝牙已开启".show(mapActivity) + mapActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + mapActivity.isBluetoothOn = true } Constant.BLUETOOTH_OFF -> { - "蓝牙已关闭".show(mainActivity) - mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + "蓝牙已关闭".show(mapActivity) + mapActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + mapActivity.isBluetoothOn = false } Constant.DEVICE_CONNECTED -> { //TODO 设备已连接 + mapActivity.communicateWithDevice(Constant.ASK_DEV_CODE_COMMAND) + } + Constant.DEVICE_CONNECT_FAIL -> { + //TODO 设备连接失败/超时 } Constant.DEVICE_DISCONNECTED -> { //TODO 设备断开连接 } + Constant.SEND_SUCCESS -> { + //TODO 发送成功 + } + Constant.SEND_FAILURE -> { + //TODO 发送失败 + } + Constant.RECEIVE_SUCCESS -> { + //TODO 接收成功 + } + Constant.RECEIVE_FAILURE -> { + //TODO 接收失败 + } } } } @@ -79,7 +120,8 @@ PageNavigationManager.addActivity(this) setupTopBarLayout() if (OtherUtils.isNetworkConnected(this)) { - initData(savedInstanceState) + initData() + initMap(savedInstanceState) initEvent() } else { "糟糕,没有接入任何网络~".show(this) @@ -93,7 +135,133 @@ titleView.text = "巡检" } - fun initData(savedInstanceState: Bundle?) { + fun initData() { + val userModelJson = SaveKeyValues.getValue(Constant.USER_OBJECT, "") as String + userDataModel = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! + //蓝牙搜索监听 + BroadcastManager.instance.addAction( + arrayOf( + BluetoothDevice.ACTION_FOUND, + BluetoothAdapter.ACTION_DISCOVERY_FINISHED + ), object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + when (intent?.action) { + BluetoothDevice.ACTION_FOUND -> { + val device = + intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE) + lateinit var bean: BlueToothBean + device?.let { + bean = if (it.name == null || it.name == "") { + BlueToothBean("设备名未知", it.address) + } else { + BlueToothBean(device.name, device.address) + } + } + if (bean.blueToothName != "设备名未知") { + if (blueToothBeans.size == 0) { + blueToothBeans.add(bean) + blueToothDevices.add(device) + } else { + //0表示未添加到list的新设备,1表示已经扫描并添加到list的设备 + var judge = 0 + for (it in blueToothBeans) { + if (it.blueToothAddress == bean.blueToothAddress) { + judge = 1 + break + } + } + if (judge == 0) { + blueToothBeans.add(bean) + blueToothDevices.add(device) + } + } + } + } + BluetoothAdapter.ACTION_DISCOVERY_FINISHED -> { + OtherUtils.dismissLoadingDialog() + bluetoothButton.isEnabled = true + Log.d(Tag, gson.toJson(blueToothBeans)) + val sheetBuilder = + QMUIBottomSheet.BottomListSheetBuilder(this@MapActivity) + sheetBuilder.setTitle("请选择要连接的设备") + blueToothBeans.forEach { + sheetBuilder.addItem(it.blueToothName) + } + sheetBuilder.setGravityCenter(true).setAddCancelBtn(true) + .setOnSheetItemClickListener { dialog, _, position, _ -> + dialog.dismiss() + //连接点击的设备 + startConnectDevice( + blueToothBeans[position].blueToothName, + blueToothDevices[position] + ) + }.build().show() + } + } + } + }) + } + + private fun startConnectDevice(deviceName: String, bluetoothDevice: BluetoothDevice?) { + if (bluetoothDevice == null) { + Log.d(Tag, "startConnectDevice-->bluetoothDevice == null") + return + } + this.currentDevice = bluetoothDevice + if (bluetoothAdapter == null) { + Log.d(Tag, "startConnectDevice-->bluetoothAdapter == null") + return + } + OtherUtils.showLoadingDialog(this, "正在连接[$deviceName]...") + + } + +// private fun manageConnectSendReceiveData(bluetoothSocket: BluetoothSocket) { +// connectedThread = ConnectedThread(bluetoothSocket) +// connectedThread!!.start() +// connectedThread!!.setOnSendReceiveDataListener(object : +// ConnectedThread.OnSendReceiveDataListener { +// override fun onSendDataSuccess(data: ByteArray?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.SEND_SUCCESS +// message.obj = "发送数据成功,长度" + data!!.size + "->" + ConnectedThread.bytes2HexString( +// data, +// data.size +// ) +// weakReferenceHandler.sendMessage(message) +// } +// +// override fun onSendDataError(data: ByteArray?, errorMsg: String?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.SEND_FAILURE +// message.obj = "发送数据出错,长度" + data!!.size + "->" + ConnectedThread.bytes2HexString( +// data, +// data.size +// ) +// weakReferenceHandler.sendMessage(message) +// } +// +// override fun onReceiveDataSuccess(buffer: ByteArray?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.RECEIVE_SUCCESS +// message.obj = +// "成功接收数据,长度" + buffer!!.size + "->" + ConnectedThread.bytes2HexString( +// buffer, +// buffer.size +// ) +// weakReferenceHandler.sendMessage(message) +// } +// +// override fun onReceiveDataError(errorMsg: String?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.RECEIVE_FAILURE +// message.obj = "接收数据出错:$errorMsg" +// weakReferenceHandler.sendMessage(message) +// } +// }) +// } + + private fun initMap(savedInstanceState: Bundle?) { mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -102,35 +270,19 @@ //显示定位小蓝点 locationStyle = MyLocationStyle() locationStyle.showMyLocation(true)//设置是否显示定位小蓝点 - locationStyle.strokeColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的边框颜色 - locationStyle.radiusFillColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的填充颜色 aMap.myLocationStyle = locationStyle aMap.isMyLocationEnabled = true aMap.addOnMyLocationChangeListener { - Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]") + // Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]") } } fun initEvent() { leftBackView.setOnClickListener { this.finish() } + //地图左边五个按钮事件 + menuButtonEvent() //需要判断是否是上次未完的巡检 -// selectInspectMode() - - //判断蓝牙的状态 - val blueAdapter = BluetoothAdapter.getDefaultAdapter() - if (blueAdapter == null) { - "该设备不支持蓝牙,无法连接".show(this) - } else { - if (blueAdapter.isEnabled) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { - //搜索蓝牙 - } - } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) - //打开 - } - } + selectInspectMode() newEventButton.setChangeAlphaWhenPress(true) newEventButton.setOnClickListener { @@ -149,29 +301,149 @@ intent.putExtra("isWarning", false) } } - startActivity(intent) + //获取当前定位 + LocationHelper.obtainCurrentLocation(this@MapActivity, + object : ILocationListener { + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + intent.putExtra("inspectionId", inspectionId) + intent.putExtra("inspectionName", inspectionName) + intent.putExtra("longitude", aMapLocation.longitude) + intent.putExtra("latitude", aMapLocation.latitude) + startActivity(intent) + } + }) } }) .build().show() } } + private fun menuButtonEvent() { + //判断蓝牙的状态 + bluetoothAdapter = BluetoothAdapter.getDefaultAdapter() + if (bluetoothAdapter == null) { + "该设备不支持蓝牙,无法连接".show(this) + return + } + if (bluetoothAdapter!!.isEnabled) { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { + if (currentDevice == null) { + //搜索蓝牙 + searchDevice() + } else { + if (currentDevice!!.bondState == BluetoothDevice.BOND_NONE) { + searchDevice() + } else { + //断开连接 + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + "设备已断开连接".show(this) + } + } + } + } else { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + //打开 + startActivity(Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)) + } + } + + private fun searchDevice() { + //搜索蓝牙 + if (bluetoothAdapter!!.isDiscovering) { + //搜索中不让再次搜索 + bluetoothButton.isEnabled = false + return + } + OtherUtils.showLoadingDialog(this, "设备搜索中..."); + bluetoothAdapter!!.startDiscovery() + } + private fun selectInspectMode() { - InputDialog.Builder().setContext(this) - .setTitle("请输入巡检标签") - .setHintText("如:xxx区间巡检") - .setNegativeButton("放弃") - .setPositiveButton("开始巡检") - .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener { - override fun onConfirmClick(input: String) { + val currentInspection = SaveKeyValues.getValue(Constant.INSPECTION_OBJECT, "") as String + if (currentInspection != "") { + inspectionBean = gson.fromJson(currentInspection, InspectionBean::class.java) + /** + * 获取最近的Task + * */ + if (OtherUtils.isNetworkConnected(this)) { + val taskViewModel = ViewModelProvider(this).get(TaskRecordViewModel::class.java) + taskViewModel.searchByInspection(inspectionBean.serverMainId) + taskViewModel.resultModel.observe(this, Observer { + dataBeans = it.data!!.list!! + }) + } else { + dataBeans = + DataBaseManager.instance.queryTaskByInspection(inspectionBean.serverMainId)!! + } + "欢迎回来,继续未完成巡检".show(this) + } else { + InputDialog.Builder().setContext(this) + .setTitle("请输入巡检标签") + .setHintText("如:xxx区间巡检") + .setNegativeButton("放弃") + .setPositiveButton("开始巡检") + .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener { + override fun onConfirmClick(input: String) { + val currentTimeMillis = System.currentTimeMillis() + //新建巡检,inspectionId必为空 + inspectionId = currentTimeMillis.id() + inspectionName = input - } + inspectionBean = + InspectionBean( + System.currentTimeMillis(), + inspectionId, + inspectionName, + TimeOrDateUtil.timestampToCompleteDate(currentTimeMillis), + "", + TimeOrDateUtil.timestampToDate(currentTimeMillis), + 0.0, + 0.0, + 0.0, + 0.0, + "", + userDataModel.name + ) + startInspection() + } - override fun onCancelClick() { - finish() + override fun onCancelClick() { + finish() + } + }) + .build().show() + } + } + + /** + * 开始巡检,获取坐标,开定时器,和设备交互 + * */ + fun startInspection() { + LocationHelper.obtainCurrentLocation(this, object : ILocationListener { + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + routes.add(aMapLocation) + inspectionBean.routes = gson.toJson(routes) + if (inspectionBean.startLng == 0.0) { + inspectionBean.startLng = aMapLocation.longitude + inspectionBean.startLat = aMapLocation.latitude } - }) - .build().show() + } + }) + updateCurrentInspection() + // 和设备通信 + communicateWithDevice(Constant.OPEN_TRANSFER_COMMAND) + } + + private fun updateCurrentInspection() { + SaveKeyValues.putValue(Constant.INSPECTION_OBJECT, gson.toJson(inspectionBean)) + } + + private fun communicateWithDevice(cmd: ByteArray) { + } override fun onResume() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index de3eb19..8887a06 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -11,12 +11,12 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ImageGridViewAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity -import com.casic.birmm.inspect.extensions.combineImagePath -import com.casic.birmm.inspect.extensions.filterString -import com.casic.birmm.inspect.extensions.show +import com.casic.birmm.inspect.extensions.* +import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.* import com.casic.birmm.inspect.vm.NewEventViewModel import com.casic.birmm.inspect.vm.UploadImageViewModel +import com.google.gson.Gson import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.PictureSelector import com.luck.picture.lib.config.PictureConfig @@ -33,6 +33,13 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private lateinit var imageAdapter: ImageGridViewAdapter private var isWarning: Boolean = true + private lateinit var inspectionId: String + private lateinit var inspectionName: String + private var longitude: Double = 0.0 + private var latitude: Double = 0.0 + private var data = -1.0//泄露默认值 + private lateinit var type: String + private lateinit var userModel: UserInfoModel override fun createViewModelByClass(): Class? = NewEventViewModel::class.java @@ -46,7 +53,13 @@ override fun initData() { uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) + val userModelJson = SaveKeyValues.getValue(Constant.USER_OBJECT, "") as String + userModel = Gson().fromJson(userModelJson, UserInfoModel::class.java) isWarning = intent.getBooleanExtra("isWarning", true) + inspectionId = intent.getStringExtra("inspectionId")!! + inspectionName = intent.getStringExtra("inspectionName")!! + longitude = intent.getDoubleExtra("longitude", 0.0) + latitude = intent.getDoubleExtra("latitude", 0.0) if (isWarning) { titleView.text = "报警事件记录" inspectCardView.visibility = View.VISIBLE @@ -159,9 +172,42 @@ "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } + type = "报警事件" + data = inspectNumberView.text.toString().filterString().toDouble() + } else { + type = "自定义事件" } - + //随机生成主键 + userModel.data!!.name?.let { user -> + viewModel.addEventTask( + "t".id(), + inspectionId, + inspectionName, + eventCreateTimeView.text.toString(), + type, + longitude, + latitude, + data, + imagePaths.reformat(), + eventEditTextView.text.toString().filterString(), + user + ) + } } + viewModel.resultModel.observe(this, Observer { model -> + if (model.code == 200) { + "保存成功".show(this) + finish() + } + }) + viewModel.loadState.observe(this, Observer { + when (it) { + is LoadState.Loading -> { + OtherUtils.showLoadingDialog(this, "保存中,请稍后...") + } + else -> OtherUtils.dismissLoadingDialog() + } + }) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/EventQueryViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/EventQueryViewModel.kt index 7dcf628..59bf212 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/EventQueryViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/EventQueryViewModel.kt @@ -3,12 +3,12 @@ import androidx.lifecycle.MutableLiveData import com.casic.birmm.inspect.base.BaseViewModel import com.casic.birmm.inspect.extensions.launch -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.utils.LoadState import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager class EventQueryViewModel : BaseViewModel() { - val resultModel = MutableLiveData() + val resultModel = MutableLiveData() fun queryEvent(keywords: String, startTime: String, endTime: String, pageIndex: Int) = launch({ diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/InspectionQueryViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/InspectionQueryViewModel.kt index 4c7c302..ea87162 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/InspectionQueryViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/InspectionQueryViewModel.kt @@ -3,12 +3,12 @@ import androidx.lifecycle.MutableLiveData import com.casic.birmm.inspect.base.BaseViewModel import com.casic.birmm.inspect.extensions.launch -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.utils.LoadState import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager class InspectionQueryViewModel : BaseViewModel() { - val resultModel = MutableLiveData() + val resultModel = MutableLiveData() fun queryInspect(keywords: String, startTime: String, endTime: String, pageIndex: Int) = launch({ diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/NewEventViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/NewEventViewModel.kt index dd145f4..beb24eb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/NewEventViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/NewEventViewModel.kt @@ -1,6 +1,26 @@ package com.casic.birmm.inspect.vm +import androidx.lifecycle.MutableLiveData import com.casic.birmm.inspect.base.BaseViewModel +import com.casic.birmm.inspect.extensions.launch +import com.casic.birmm.inspect.model.ActionResultModel +import com.casic.birmm.inspect.utils.LoadState +import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager class NewEventViewModel : BaseViewModel() { + val resultModel = MutableLiveData() + + fun addEventTask( + id: String, inspectionId: String, name: String, createTime: String, type: String, + lng: Double, lat: Double, data: Double, images: String, description: String, user: String + ) = launch({ + loadState.value = LoadState.Loading + resultModel.value = RetrofitServiceManager.addEventTask( + id, inspectionId, name, createTime, + type, lng, lat, data, images, description, user + ) + loadState.value = LoadState.Success + }, { + loadState.value = LoadState.Fail + }) } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java new file mode 100644 index 0000000..b7077a3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java @@ -0,0 +1,237 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.InspectionBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "INSPECTION_BEAN". +*/ +public class InspectionBeanDao extends AbstractDao { + + public static final String TABLENAME = "INSPECTION_BEAN"; + + /** + * Properties of entity InspectionBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property Name = new Property(2, String.class, "name", false, "NAME"); + public final static Property StartTime = new Property(3, String.class, "startTime", false, "START_TIME"); + public final static Property EndTime = new Property(4, String.class, "endTime", false, "END_TIME"); + public final static Property Date = new Property(5, String.class, "date", false, "DATE"); + public final static Property StartLng = new Property(6, double.class, "startLng", false, "START_LNG"); + public final static Property StartLat = new Property(7, double.class, "startLat", false, "START_LAT"); + public final static Property EndLng = new Property(8, double.class, "endLng", false, "END_LNG"); + public final static Property EndLat = new Property(9, double.class, "endLat", false, "END_LAT"); + public final static Property Routes = new Property(10, String.class, "routes", false, "ROUTES"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public InspectionBeanDao(DaoConfig config) { + super(config); + } + + public InspectionBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"INSPECTION_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"NAME\" TEXT," + // 2: name + "\"START_TIME\" TEXT," + // 3: startTime + "\"END_TIME\" TEXT," + // 4: endTime + "\"DATE\" TEXT," + // 5: date + "\"START_LNG\" REAL NOT NULL ," + // 6: startLng + "\"START_LAT\" REAL NOT NULL ," + // 7: startLat + "\"END_LNG\" REAL NOT NULL ," + // 8: endLng + "\"END_LAT\" REAL NOT NULL ," + // 9: endLat + "\"ROUTES\" TEXT," + // 10: routes + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"INSPECTION_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public InspectionBean readEntity(Cursor cursor, int offset) { + InspectionBean entity = new InspectionBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // startTime + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // endTime + cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // date + cursor.getDouble(offset + 6), // startLng + cursor.getDouble(offset + 7), // startLat + cursor.getDouble(offset + 8), // endLng + cursor.getDouble(offset + 9), // endLat + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // routes + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, InspectionBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setStartTime(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setEndTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setDate(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5)); + entity.setStartLng(cursor.getDouble(offset + 6)); + entity.setStartLat(cursor.getDouble(offset + 7)); + entity.setEndLng(cursor.getDouble(offset + 8)); + entity.setEndLat(cursor.getDouble(offset + 9)); + entity.setRoutes(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(InspectionBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(InspectionBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(InspectionBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java new file mode 100644 index 0000000..3f040d3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java @@ -0,0 +1,245 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.TaskEventBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "TASK_EVENT_BEAN". +*/ +public class TaskEventBeanDao extends AbstractDao { + + public static final String TABLENAME = "TASK_EVENT_BEAN"; + + /** + * Properties of entity TaskEventBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property InspectionId = new Property(2, String.class, "inspectionId", false, "INSPECTION_ID"); + public final static Property Name = new Property(3, String.class, "name", false, "NAME"); + public final static Property CreateTime = new Property(4, String.class, "createTime", false, "CREATE_TIME"); + public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); + public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); + public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); + public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); + public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public TaskEventBeanDao(DaoConfig config) { + super(config); + } + + public TaskEventBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"TASK_EVENT_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"INSPECTION_ID\" TEXT," + // 2: inspectionId + "\"NAME\" TEXT," + // 3: name + "\"CREATE_TIME\" TEXT," + // 4: createTime + "\"LNG\" REAL NOT NULL ," + // 5: lng + "\"LAT\" REAL NOT NULL ," + // 6: lat + "\"TYPE\" TEXT," + // 7: type + "\"DATA\" REAL NOT NULL ," + // 8: data + "\"IMAGES\" TEXT," + // 9: images + "\"DESCRIPTION\" TEXT," + // 10: description + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"TASK_EVENT_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public TaskEventBean readEntity(Cursor cursor, int offset) { + TaskEventBean entity = new TaskEventBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // name + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getDouble(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, TaskEventBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setInspectionId(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setName(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setCreateTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setLng(cursor.getDouble(offset + 5)); + entity.setLat(cursor.getDouble(offset + 6)); + entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); + entity.setData(cursor.getDouble(offset + 8)); + entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); + entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(TaskEventBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(TaskEventBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(TaskEventBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt new file mode 100644 index 0000000..dc635a4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt @@ -0,0 +1,41 @@ +package com.casic.birmm.inspect.model + +class EventListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var total = 0 + var rows: MutableList? = + null + + class RowsBean { + /** + * createTime : 2020-12-28 14:56:59 + * data : -1 + * description : ggg + * id : t1609138629320112121 + * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg + * inspectionId : 1609138451543200022 + * lat : 39.915956 + * lng : 116.268596 + * name : sss + * type : 自定义事件 + * user : 超超级管理员 + */ + var createTime: String? = null + var data = 0 + var description: String? = null + var id: String? = null + var images: String? = null + var inspectionId: String? = null + var lat = 0.0 + var lng = 0.0 + var name: String? = null + var type: String? = null + var user: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt deleted file mode 100644 index de499aa..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.birmm.inspect.model - -class EventModel { - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var total = 0 - var rows: MutableList? = - null - - class RowsBean { - /** - * createTime : 2020-12-28 14:56:59 - * data : -1 - * description : ggg - * id : t1609138629320112121 - * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg - * inspectionId : 1609138451543200022 - * lat : 39.915956 - * lng : 116.268596 - * name : sss - * type : 自定义事件 - * user : 超超级管理员 - */ - var createTime: String? = null - var data = 0 - var description: String? = null - var id: String? = null - var images: String? = null - var inspectionId: String? = null - var lat = 0.0 - var lng = 0.0 - var name: String? = null - var type: String? = null - var user: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt new file mode 100644 index 0000000..395b6e8 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt @@ -0,0 +1,43 @@ +package com.casic.birmm.inspect.model + +class InspectListModel { + + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + + var total = 0 + var rows: MutableList? = null + + class RowsBean { + /** + * date : 2021年07月08日 + * endLat : 39.915908 + * endLng : 116.26876 + * endTime : 2021-07-08 11:20:20 + * id : 162570318141612121 + * name : 测试 + * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] + * startLat : 39.913365 + * startLng : 116.269462 + * startTime : 2021-07-08 08:13:01 + * user : 王晓颖 + */ + var date: String? = null + var endLat = 0.0 + var endLng = 0.0 + var endTime: String? = null + var id: String? = null + var name: String? = null + var routes: String? = null + var startLat = 0.0 + var startLng = 0.0 + var startTime: String? = null + var user: String? = null + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt deleted file mode 100644 index 558e716..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.casic.birmm.inspect.model - -class InspectModel { - - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - - var total = 0 - var rows: MutableList? = null - - class RowsBean { - /** - * date : 2021年07月08日 - * endLat : 39.915908 - * endLng : 116.26876 - * endTime : 2021-07-08 11:20:20 - * id : 162570318141612121 - * name : 测试 - * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] - * startLat : 39.913365 - * startLng : 116.269462 - * startTime : 2021-07-08 08:13:01 - * user : 王晓颖 - */ - var date: String? = null - var endLat = 0.0 - var endLng = 0.0 - var endTime: String? = null - var id: String? = null - var name: String? = null - var routes: String? = null - var startLat = 0.0 - var startLng = 0.0 - var startTime: String? = null - var user: String? = null - - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt index ee6f1f6..beb469b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.model +//同巡检Id的事件列表数据模型 class TaskRecordModel { var code = 0 @@ -8,7 +9,7 @@ var isSuccess = false class DataBean { - var list: List? = null + var list: MutableList? = null class ListBean { /** diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt new file mode 100644 index 0000000..8201cb4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt @@ -0,0 +1,89 @@ +package com.casic.birmm.inspect.utils + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.util.Log +import com.casic.birmm.inspect.base.BaseApplication + + +class BroadcastManager private constructor() { + + private var mContext: Context = BaseApplication.instance + private var receiverMap: HashMap = HashMap() + + companion object { + private const val Tag = "BroadcastManager" + + val instance: BroadcastManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + BroadcastManager() + } + } + + /** + * 添加单个Action,广播的初始化 + */ + fun addAction(action: String, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + filter.addAction(action) + mContext.registerReceiver(receiver, filter) + receiverMap[action] = receiver + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 添加多个Action,广播的初始化 + */ + fun addAction(actions: Array, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + actions.forEach { + filter.addAction(it) + receiverMap[it] = receiver + } + mContext.registerReceiver(receiver, filter) + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 发送广播 + * + * @param action 唯一码 + * @param msg 参数 + */ + fun sendBroadcast(action: String, msg: String) { + try { + val intent = Intent() + intent.action = action + intent.putExtra("data", msg) + mContext.sendBroadcast(intent) + Log.d(Tag, "发送广播: $msg") + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 销毁广播 + * + * @param actions action集合 + */ + fun destroy(vararg actions: String) { + try { + actions.forEach { + val receiver = receiverMap[it] + if (receiver != null) { + mContext.unregisterReceiver(receiver) + } + } + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt index 0c9e963..507655b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt @@ -16,13 +16,25 @@ const val BLUETOOTH_ON = 20 const val BLUETOOTH_OFF = 21 const val DEVICE_CONNECTED = 22 - const val DEVICE_DISCONNECTED = 23 + const val DEVICE_CONNECT_FAIL = 23 + const val DEVICE_DISCONNECTED = 24 + const val SEND_SUCCESS = 25 + const val SEND_FAILURE = 26 + const val RECEIVE_SUCCESS = 27 + const val RECEIVE_FAILURE = 28 const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val IMAGE_MINUS_SIZE = 50 * 1024 + const val IMAGE_MINUS_SIZE = 100 * 1024 const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val USER_OBJECT = "userObject" const val OPEN_WARNING = "isOpenWarning" const val AUTO_RECORD = "isRecordLog" + const val INSPECTION_OBJECT = "inspectionObject" + + val ASK_DEV_CODE_COMMAND = byteArrayOf(0x01, 0x0D, 0x0A)// 查询设备编号命令 + val OPEN_TRANSFER_COMMAND = byteArrayOf(0x02, 0x0D, 0x0A) // 开启数据发送命令 + const val SERVICE_UUID = "0003cdd0-0000-1000-8000-00805f9b0131"//连接设备的UUID + const val WRITE_CHARACTERISTIC_UUID = "0003cdd2-0000-1000-8000-00805f9b0131"//写数据特征值UUID + const val READ_CHARACTERISTIC_UUID = "0003cdd1-0000-1000-8000-00805f9b0131"//读数据特征值UUID } \ No newline at end of file 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 new file mode 100644 index 0000000..c7fba84 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -0,0 +1,123 @@ +package com.casic.birmm.inspect.utils + +import com.casic.birmm.inspect.base.BaseApplication +import com.casic.birmm.inspect.bean.InspectionBean +import com.casic.birmm.inspect.bean.TaskEventBean +import com.casic.birmm.inspect.greendao.TaskEventBeanDao +import com.casic.birmm.inspect.model.TaskRecordModel + +class DataBaseManager private constructor() { + + companion object { + //Kotlin委托模式双重锁单例 + val instance: DataBaseManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + DataBaseManager() + } + } + + /** + * 保存巡检记录到本地 + * */ + fun insertData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.insert(bean) + } + + /** + * 删除本地巡检记录 + * */ + fun deleteData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllInspection() { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.update(bean) + } + + /** + * 查询所有数据 + */ + fun queryAllInspection(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao?.queryBuilder() + ?.build()?.list() + } + + /**********************************************************************************************/ + + /** + * 保存事件记录到本地 + * */ + fun insertData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.insert(bean) + } + + /** + * 删除本地事件记录 + * */ + fun deleteData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllTask() { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.update(bean) + } + + /** + * 根据巡检Id查询事件数据 + */ + fun queryTaskByInspection(inspectionId: String): MutableList? { + val dataBeans: MutableList = ArrayList() + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.where(TaskEventBeanDao.Properties.InspectionId.eq(inspectionId)) + ?.orderDesc(TaskEventBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + ?.build() + ?.list()?.let { + it.forEach { taskBean -> + val listBean = TaskRecordModel.DataBean.ListBean() + listBean.createTime = taskBean.createTime + listBean.data = taskBean.data.toInt() + listBean.description = taskBean.description + listBean.id = taskBean.serverMainId + listBean.images = taskBean.images + listBean.inspectionId = taskBean.inspectionId + listBean.lat = taskBean.lat + listBean.lng = taskBean.lng + listBean.name = taskBean.name + listBean.type = taskBean.type + listBean.user = taskBean.user + dataBeans.add(listBean) + } + } + return dataBeans + } + + /** + * 查询所有数据 + */ + fun queryAllTask(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.build() + ?.list() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt new file mode 100644 index 0000000..fa53beb --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt @@ -0,0 +1,34 @@ +package com.casic.birmm.inspect.utils + +import android.content.Context +import android.util.Log +import com.amap.api.location.AMapLocationClient +import com.amap.api.location.AMapLocationClientOption +import com.casic.birmm.inspect.utils.callback.ILocationListener + +object LocationHelper { + private const val Tag = "LocationHelper" + + fun obtainCurrentLocation(context: Context, listener: ILocationListener) { + val locationClient = AMapLocationClient(context) + val locationOption = AMapLocationClientOption() + locationOption.locationMode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy; + locationOption.isNeedAddress = true//设置是否返回地址信息(默认返回地址信息) + locationOption.isOnceLocation = true//设置是否只定位一次,默认为false + locationOption.isMockEnable = false//设置是否允许模拟位置,默认为false,不允许模拟位置 + locationOption.isLocationCacheEnable = false //可选,设置是否使用缓存定位,默认为true + locationClient.setLocationOption(locationOption) + locationClient.setLocationListener { + if (it != null) { + if (it.errorCode == 0) { + listener.onAMapLocationGet(it) + } else { + Log.e( + Tag, "location Error, ErrCode:" + it.errorCode + ", errInfo:" + it.errorInfo + ) + } + } + } + locationClient.startLocation() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt new file mode 100644 index 0000000..a4def44 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt @@ -0,0 +1,8 @@ +package com.casic.birmm.inspect.utils.callback + +import com.amap.api.location.AMapLocation + + +interface ILocationListener { + fun onAMapLocationGet(aMapLocation: AMapLocation) //高德定位数据 +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index a05027e..c5c9a30 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -49,7 +49,7 @@ @Query("endTime") endTime: String, @Query("limit") limit: Int, @Query("offset") offset: Int - ): InspectModel + ): InspectListModel /** * 巡检记录列表 @@ -62,7 +62,7 @@ @Query("endTime") endTime: String, @Query("limit") limit: Int, @Query("offset") offset: Int - ): EventModel + ): EventListModel /** * 获取巡检详情 @@ -93,4 +93,24 @@ @Header("token") token: String, @Part file: MultipartBody.Part ): ActionResultModel + + /** + * 新增事件 + */ + @FormUrlEncoded + @POST("/task/add") + suspend fun addEventTask( + @Header("token") token: String, + @Field("id") id: String, + @Field("inspectionId") inspectionId: String, + @Field("name") name: String, + @Field("createTime") createTime: String, + @Field("type") type: String, + @Field("Lng") Lng: Double, + @Field("Lat") Lat: Double, + @Field("data") data: Double, + @Field("images") images: String, + @Field("description") description: String, + @Field("user") user: String + ): ActionResultModel } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index df03b14..d24faff 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -49,7 +49,7 @@ startTime: String, endTime: String, pageIndex: Int - ): InspectModel { + ): InspectListModel { return api.obtainInspectList( AuthenticationHelper.token!!, keywords, @@ -68,7 +68,7 @@ startTime: String, endTime: String, pageIndex: Int - ): EventModel { + ): EventListModel { return api.obtainEventList( AuthenticationHelper.token!!, keywords, @@ -101,4 +101,17 @@ val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody) return api.uploadImage(AuthenticationHelper.token!!, imagePart) } + + /** + * 新增事件 + */ + suspend fun addEventTask( + id: String, inspectionId: String, name: String, createTime: String, type: String, + lng: Double, lat: Double, data: Double, images: String, description: String, user: String + ): ActionResultModel { + return api.addEventTask( + AuthenticationHelper.token!!, id, inspectionId, name, createTime, + type, lng, lat, data, images, description, user + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 12c7c7e..ff6de36 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -11,7 +11,7 @@ import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.model.EventModel +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 @@ -38,7 +38,7 @@ private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var adapter: EventSearchListAdapter diff --git a/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt index 2e57bec..9cce3ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt @@ -7,6 +7,8 @@ import android.view.ViewGroup.MarginLayoutParams import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider +import com.aihook.alertview.library.AlertView +import com.aihook.alertview.library.OnItemClickListener import com.casic.birmm.inspect.R import com.casic.birmm.inspect.base.BaseActivity import com.casic.birmm.inspect.extensions.show @@ -68,9 +70,35 @@ val userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) userViewModel.getUserInfo() userViewModel.resultModel.observe(this, Observer { - SaveKeyValues.putValue(Constant.USER_OBJECT, Gson().toJson(it))//保存用户对象 - startActivity(Intent(this, MainActivity::class.java)) - finish() + if (it.code == 200) { + SaveKeyValues.putValue(Constant.USER_OBJECT, Gson().toJson(it))//保存用户对象 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } else { + AlertView("温馨提示", + it.message, + "等会再来", + arrayOf("去登录"), + null, + this, + AlertView.Style.Alert, + OnItemClickListener { _, position -> + when (position) { + -1 -> { + this@GuideActivity.finish() + } + 0 -> { + startActivity( + Intent( + this@GuideActivity, + LoginActivity::class.java + ) + ) + finish() + } + } + }).show() + } }) userViewModel.loadState.observe(this, Observer { "获取用户信息失败,请重试".show(this) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt index da4b03e..03e0f95 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt @@ -10,7 +10,7 @@ import com.casic.birmm.inspect.adapter.InspectListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.PageNavigationManager import com.casic.birmm.inspect.utils.StatusBarColorUtil @@ -32,7 +32,7 @@ private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var adapter: InspectListAdapter diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt index 91fb674..dab7f0c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt @@ -1,27 +1,38 @@ package com.casic.birmm.inspect.view import android.bluetooth.BluetoothAdapter +import android.bluetooth.BluetoothDevice +import android.content.BroadcastReceiver +import android.content.Context import android.content.Intent -import android.graphics.Color import android.os.Bundle import android.os.Handler import android.os.Message import android.util.Log import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProvider +import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.MyLocationStyle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.bean.BlueToothBean +import com.casic.birmm.inspect.bean.InspectionBean +import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.utils.Constant -import com.casic.birmm.inspect.utils.OtherUtils -import com.casic.birmm.inspect.utils.PageNavigationManager -import com.casic.birmm.inspect.utils.StatusBarColorUtil +import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.UserInfoModel +import com.casic.birmm.inspect.utils.* +import com.casic.birmm.inspect.utils.callback.ILocationListener +import com.casic.birmm.inspect.vm.TaskRecordViewModel import com.casic.birmm.inspect.widgets.InputDialog import com.casic.birmm.inspect.widgets.SingleChoiceDialog +import com.google.gson.Gson import com.gyf.immersionbar.ImmersionBar import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet import kotlinx.android.synthetic.main.activity_inspect_route.mapView import kotlinx.android.synthetic.main.activity_map.* import kotlinx.android.synthetic.main.include_base_title.* @@ -42,9 +53,21 @@ } } + private val itemList: List = arrayListOf("报警事件", "自定义事件") private lateinit var aMap: AMap private lateinit var locationStyle: MyLocationStyle - private val itemList: List = arrayListOf("报警事件", "自定义事件") + private lateinit var inspectionName: String + private lateinit var inspectionId: String + private lateinit var inspectionBean: InspectionBean + private lateinit var userDataModel: UserInfoModel.DataBean + private var dataBeans: MutableList = ArrayList() + private var routes: MutableList = ArrayList()//路线集和 + private var gson: Gson = Gson() + private var isBluetoothOn = true + private var blueToothDevices: MutableList = ArrayList() + private var blueToothBeans: MutableList = ArrayList()//搜索展示列表 + private var bluetoothAdapter: BluetoothAdapter? = null + private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 init { weakReferenceHandler = WeakReferenceHandler(this) @@ -53,22 +76,40 @@ private class WeakReferenceHandler(activity: MapActivity) : Handler() { private val activity: WeakReference = WeakReference(activity) override fun handleMessage(msg: Message) { - val mainActivity = activity.get() ?: return + val mapActivity = activity.get() ?: return when (msg.what) { Constant.BLUETOOTH_ON -> { - "蓝牙已开启".show(mainActivity) - mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + "蓝牙已开启".show(mapActivity) + mapActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + mapActivity.isBluetoothOn = true } Constant.BLUETOOTH_OFF -> { - "蓝牙已关闭".show(mainActivity) - mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + "蓝牙已关闭".show(mapActivity) + mapActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + mapActivity.isBluetoothOn = false } Constant.DEVICE_CONNECTED -> { //TODO 设备已连接 + mapActivity.communicateWithDevice(Constant.ASK_DEV_CODE_COMMAND) + } + Constant.DEVICE_CONNECT_FAIL -> { + //TODO 设备连接失败/超时 } Constant.DEVICE_DISCONNECTED -> { //TODO 设备断开连接 } + Constant.SEND_SUCCESS -> { + //TODO 发送成功 + } + Constant.SEND_FAILURE -> { + //TODO 发送失败 + } + Constant.RECEIVE_SUCCESS -> { + //TODO 接收成功 + } + Constant.RECEIVE_FAILURE -> { + //TODO 接收失败 + } } } } @@ -79,7 +120,8 @@ PageNavigationManager.addActivity(this) setupTopBarLayout() if (OtherUtils.isNetworkConnected(this)) { - initData(savedInstanceState) + initData() + initMap(savedInstanceState) initEvent() } else { "糟糕,没有接入任何网络~".show(this) @@ -93,7 +135,133 @@ titleView.text = "巡检" } - fun initData(savedInstanceState: Bundle?) { + fun initData() { + val userModelJson = SaveKeyValues.getValue(Constant.USER_OBJECT, "") as String + userDataModel = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! + //蓝牙搜索监听 + BroadcastManager.instance.addAction( + arrayOf( + BluetoothDevice.ACTION_FOUND, + BluetoothAdapter.ACTION_DISCOVERY_FINISHED + ), object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + when (intent?.action) { + BluetoothDevice.ACTION_FOUND -> { + val device = + intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE) + lateinit var bean: BlueToothBean + device?.let { + bean = if (it.name == null || it.name == "") { + BlueToothBean("设备名未知", it.address) + } else { + BlueToothBean(device.name, device.address) + } + } + if (bean.blueToothName != "设备名未知") { + if (blueToothBeans.size == 0) { + blueToothBeans.add(bean) + blueToothDevices.add(device) + } else { + //0表示未添加到list的新设备,1表示已经扫描并添加到list的设备 + var judge = 0 + for (it in blueToothBeans) { + if (it.blueToothAddress == bean.blueToothAddress) { + judge = 1 + break + } + } + if (judge == 0) { + blueToothBeans.add(bean) + blueToothDevices.add(device) + } + } + } + } + BluetoothAdapter.ACTION_DISCOVERY_FINISHED -> { + OtherUtils.dismissLoadingDialog() + bluetoothButton.isEnabled = true + Log.d(Tag, gson.toJson(blueToothBeans)) + val sheetBuilder = + QMUIBottomSheet.BottomListSheetBuilder(this@MapActivity) + sheetBuilder.setTitle("请选择要连接的设备") + blueToothBeans.forEach { + sheetBuilder.addItem(it.blueToothName) + } + sheetBuilder.setGravityCenter(true).setAddCancelBtn(true) + .setOnSheetItemClickListener { dialog, _, position, _ -> + dialog.dismiss() + //连接点击的设备 + startConnectDevice( + blueToothBeans[position].blueToothName, + blueToothDevices[position] + ) + }.build().show() + } + } + } + }) + } + + private fun startConnectDevice(deviceName: String, bluetoothDevice: BluetoothDevice?) { + if (bluetoothDevice == null) { + Log.d(Tag, "startConnectDevice-->bluetoothDevice == null") + return + } + this.currentDevice = bluetoothDevice + if (bluetoothAdapter == null) { + Log.d(Tag, "startConnectDevice-->bluetoothAdapter == null") + return + } + OtherUtils.showLoadingDialog(this, "正在连接[$deviceName]...") + + } + +// private fun manageConnectSendReceiveData(bluetoothSocket: BluetoothSocket) { +// connectedThread = ConnectedThread(bluetoothSocket) +// connectedThread!!.start() +// connectedThread!!.setOnSendReceiveDataListener(object : +// ConnectedThread.OnSendReceiveDataListener { +// override fun onSendDataSuccess(data: ByteArray?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.SEND_SUCCESS +// message.obj = "发送数据成功,长度" + data!!.size + "->" + ConnectedThread.bytes2HexString( +// data, +// data.size +// ) +// weakReferenceHandler.sendMessage(message) +// } +// +// override fun onSendDataError(data: ByteArray?, errorMsg: String?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.SEND_FAILURE +// message.obj = "发送数据出错,长度" + data!!.size + "->" + ConnectedThread.bytes2HexString( +// data, +// data.size +// ) +// weakReferenceHandler.sendMessage(message) +// } +// +// override fun onReceiveDataSuccess(buffer: ByteArray?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.RECEIVE_SUCCESS +// message.obj = +// "成功接收数据,长度" + buffer!!.size + "->" + ConnectedThread.bytes2HexString( +// buffer, +// buffer.size +// ) +// weakReferenceHandler.sendMessage(message) +// } +// +// override fun onReceiveDataError(errorMsg: String?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.RECEIVE_FAILURE +// message.obj = "接收数据出错:$errorMsg" +// weakReferenceHandler.sendMessage(message) +// } +// }) +// } + + private fun initMap(savedInstanceState: Bundle?) { mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -102,35 +270,19 @@ //显示定位小蓝点 locationStyle = MyLocationStyle() locationStyle.showMyLocation(true)//设置是否显示定位小蓝点 - locationStyle.strokeColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的边框颜色 - locationStyle.radiusFillColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的填充颜色 aMap.myLocationStyle = locationStyle aMap.isMyLocationEnabled = true aMap.addOnMyLocationChangeListener { - Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]") + // Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]") } } fun initEvent() { leftBackView.setOnClickListener { this.finish() } + //地图左边五个按钮事件 + menuButtonEvent() //需要判断是否是上次未完的巡检 -// selectInspectMode() - - //判断蓝牙的状态 - val blueAdapter = BluetoothAdapter.getDefaultAdapter() - if (blueAdapter == null) { - "该设备不支持蓝牙,无法连接".show(this) - } else { - if (blueAdapter.isEnabled) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { - //搜索蓝牙 - } - } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) - //打开 - } - } + selectInspectMode() newEventButton.setChangeAlphaWhenPress(true) newEventButton.setOnClickListener { @@ -149,29 +301,149 @@ intent.putExtra("isWarning", false) } } - startActivity(intent) + //获取当前定位 + LocationHelper.obtainCurrentLocation(this@MapActivity, + object : ILocationListener { + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + intent.putExtra("inspectionId", inspectionId) + intent.putExtra("inspectionName", inspectionName) + intent.putExtra("longitude", aMapLocation.longitude) + intent.putExtra("latitude", aMapLocation.latitude) + startActivity(intent) + } + }) } }) .build().show() } } + private fun menuButtonEvent() { + //判断蓝牙的状态 + bluetoothAdapter = BluetoothAdapter.getDefaultAdapter() + if (bluetoothAdapter == null) { + "该设备不支持蓝牙,无法连接".show(this) + return + } + if (bluetoothAdapter!!.isEnabled) { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { + if (currentDevice == null) { + //搜索蓝牙 + searchDevice() + } else { + if (currentDevice!!.bondState == BluetoothDevice.BOND_NONE) { + searchDevice() + } else { + //断开连接 + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + "设备已断开连接".show(this) + } + } + } + } else { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + //打开 + startActivity(Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)) + } + } + + private fun searchDevice() { + //搜索蓝牙 + if (bluetoothAdapter!!.isDiscovering) { + //搜索中不让再次搜索 + bluetoothButton.isEnabled = false + return + } + OtherUtils.showLoadingDialog(this, "设备搜索中..."); + bluetoothAdapter!!.startDiscovery() + } + private fun selectInspectMode() { - InputDialog.Builder().setContext(this) - .setTitle("请输入巡检标签") - .setHintText("如:xxx区间巡检") - .setNegativeButton("放弃") - .setPositiveButton("开始巡检") - .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener { - override fun onConfirmClick(input: String) { + val currentInspection = SaveKeyValues.getValue(Constant.INSPECTION_OBJECT, "") as String + if (currentInspection != "") { + inspectionBean = gson.fromJson(currentInspection, InspectionBean::class.java) + /** + * 获取最近的Task + * */ + if (OtherUtils.isNetworkConnected(this)) { + val taskViewModel = ViewModelProvider(this).get(TaskRecordViewModel::class.java) + taskViewModel.searchByInspection(inspectionBean.serverMainId) + taskViewModel.resultModel.observe(this, Observer { + dataBeans = it.data!!.list!! + }) + } else { + dataBeans = + DataBaseManager.instance.queryTaskByInspection(inspectionBean.serverMainId)!! + } + "欢迎回来,继续未完成巡检".show(this) + } else { + InputDialog.Builder().setContext(this) + .setTitle("请输入巡检标签") + .setHintText("如:xxx区间巡检") + .setNegativeButton("放弃") + .setPositiveButton("开始巡检") + .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener { + override fun onConfirmClick(input: String) { + val currentTimeMillis = System.currentTimeMillis() + //新建巡检,inspectionId必为空 + inspectionId = currentTimeMillis.id() + inspectionName = input - } + inspectionBean = + InspectionBean( + System.currentTimeMillis(), + inspectionId, + inspectionName, + TimeOrDateUtil.timestampToCompleteDate(currentTimeMillis), + "", + TimeOrDateUtil.timestampToDate(currentTimeMillis), + 0.0, + 0.0, + 0.0, + 0.0, + "", + userDataModel.name + ) + startInspection() + } - override fun onCancelClick() { - finish() + override fun onCancelClick() { + finish() + } + }) + .build().show() + } + } + + /** + * 开始巡检,获取坐标,开定时器,和设备交互 + * */ + fun startInspection() { + LocationHelper.obtainCurrentLocation(this, object : ILocationListener { + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + routes.add(aMapLocation) + inspectionBean.routes = gson.toJson(routes) + if (inspectionBean.startLng == 0.0) { + inspectionBean.startLng = aMapLocation.longitude + inspectionBean.startLat = aMapLocation.latitude } - }) - .build().show() + } + }) + updateCurrentInspection() + // 和设备通信 + communicateWithDevice(Constant.OPEN_TRANSFER_COMMAND) + } + + private fun updateCurrentInspection() { + SaveKeyValues.putValue(Constant.INSPECTION_OBJECT, gson.toJson(inspectionBean)) + } + + private fun communicateWithDevice(cmd: ByteArray) { + } override fun onResume() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index de3eb19..8887a06 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -11,12 +11,12 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ImageGridViewAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity -import com.casic.birmm.inspect.extensions.combineImagePath -import com.casic.birmm.inspect.extensions.filterString -import com.casic.birmm.inspect.extensions.show +import com.casic.birmm.inspect.extensions.* +import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.* import com.casic.birmm.inspect.vm.NewEventViewModel import com.casic.birmm.inspect.vm.UploadImageViewModel +import com.google.gson.Gson import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.PictureSelector import com.luck.picture.lib.config.PictureConfig @@ -33,6 +33,13 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private lateinit var imageAdapter: ImageGridViewAdapter private var isWarning: Boolean = true + private lateinit var inspectionId: String + private lateinit var inspectionName: String + private var longitude: Double = 0.0 + private var latitude: Double = 0.0 + private var data = -1.0//泄露默认值 + private lateinit var type: String + private lateinit var userModel: UserInfoModel override fun createViewModelByClass(): Class? = NewEventViewModel::class.java @@ -46,7 +53,13 @@ override fun initData() { uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) + val userModelJson = SaveKeyValues.getValue(Constant.USER_OBJECT, "") as String + userModel = Gson().fromJson(userModelJson, UserInfoModel::class.java) isWarning = intent.getBooleanExtra("isWarning", true) + inspectionId = intent.getStringExtra("inspectionId")!! + inspectionName = intent.getStringExtra("inspectionName")!! + longitude = intent.getDoubleExtra("longitude", 0.0) + latitude = intent.getDoubleExtra("latitude", 0.0) if (isWarning) { titleView.text = "报警事件记录" inspectCardView.visibility = View.VISIBLE @@ -159,9 +172,42 @@ "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } + type = "报警事件" + data = inspectNumberView.text.toString().filterString().toDouble() + } else { + type = "自定义事件" } - + //随机生成主键 + userModel.data!!.name?.let { user -> + viewModel.addEventTask( + "t".id(), + inspectionId, + inspectionName, + eventCreateTimeView.text.toString(), + type, + longitude, + latitude, + data, + imagePaths.reformat(), + eventEditTextView.text.toString().filterString(), + user + ) + } } + viewModel.resultModel.observe(this, Observer { model -> + if (model.code == 200) { + "保存成功".show(this) + finish() + } + }) + viewModel.loadState.observe(this, Observer { + when (it) { + is LoadState.Loading -> { + OtherUtils.showLoadingDialog(this, "保存中,请稍后...") + } + else -> OtherUtils.dismissLoadingDialog() + } + }) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/EventQueryViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/EventQueryViewModel.kt index 7dcf628..59bf212 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/EventQueryViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/EventQueryViewModel.kt @@ -3,12 +3,12 @@ import androidx.lifecycle.MutableLiveData import com.casic.birmm.inspect.base.BaseViewModel import com.casic.birmm.inspect.extensions.launch -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.utils.LoadState import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager class EventQueryViewModel : BaseViewModel() { - val resultModel = MutableLiveData() + val resultModel = MutableLiveData() fun queryEvent(keywords: String, startTime: String, endTime: String, pageIndex: Int) = launch({ diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/InspectionQueryViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/InspectionQueryViewModel.kt index 4c7c302..ea87162 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/InspectionQueryViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/InspectionQueryViewModel.kt @@ -3,12 +3,12 @@ import androidx.lifecycle.MutableLiveData import com.casic.birmm.inspect.base.BaseViewModel import com.casic.birmm.inspect.extensions.launch -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.utils.LoadState import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager class InspectionQueryViewModel : BaseViewModel() { - val resultModel = MutableLiveData() + val resultModel = MutableLiveData() fun queryInspect(keywords: String, startTime: String, endTime: String, pageIndex: Int) = launch({ diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/NewEventViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/NewEventViewModel.kt index dd145f4..beb24eb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/NewEventViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/NewEventViewModel.kt @@ -1,6 +1,26 @@ package com.casic.birmm.inspect.vm +import androidx.lifecycle.MutableLiveData import com.casic.birmm.inspect.base.BaseViewModel +import com.casic.birmm.inspect.extensions.launch +import com.casic.birmm.inspect.model.ActionResultModel +import com.casic.birmm.inspect.utils.LoadState +import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager class NewEventViewModel : BaseViewModel() { + val resultModel = MutableLiveData() + + fun addEventTask( + id: String, inspectionId: String, name: String, createTime: String, type: String, + lng: Double, lat: Double, data: Double, images: String, description: String, user: String + ) = launch({ + loadState.value = LoadState.Loading + resultModel.value = RetrofitServiceManager.addEventTask( + id, inspectionId, name, createTime, + type, lng, lat, data, images, description, user + ) + loadState.value = LoadState.Success + }, { + loadState.value = LoadState.Fail + }) } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_new_event.xml b/app/src/main/res/layout/activity_new_event.xml index 50e4933..7f9559c 100644 --- a/app/src/main/res/layout/activity_new_event.xml +++ b/app/src/main/res/layout/activity_new_event.xml @@ -102,7 +102,10 @@ android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:background="@drawable/bg_layout_white" + android:gravity="end" android:hint="如:9999" + android:inputType="numberDecimal" + android:maxLength="9" android:padding="5dp" android:textColor="@color/black" android:textColorHint="@color/hintColor" diff --git a/app/build.gradle b/app/build.gradle index a101c80..fe5f854 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'org.greenrobot.greendao' android { compileSdkVersion 30 @@ -35,6 +36,12 @@ coroutines 'enable' } } + + greendao { + schemaVersion 1//数据库版本号 + targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录 + daoPackage 'com.casic.birmm.inspect.greendao'//设置DaoMaster、DaoSession、Dao包名 + } } dependencies { @@ -83,4 +90,6 @@ implementation 'com.amap.api:location:5.3.1' //仿iOS风格的dialog库 implementation 'com.aihook:alertview:1.0.0' + //数据库框架 + implementation 'org.greenrobot:greendao:3.3.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e17162..5dd8db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt index c98d39e..0ed4a6d 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt @@ -8,17 +8,17 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel /** * 事件查询 * */ class EventSearchListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt index 8f0278c..7e2f483 100644 --- a/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt +++ b/app/src/main/java/com/casic/birmm/inspect/adapter/InspectListAdapter.kt @@ -7,15 +7,15 @@ import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel class InspectListAdapter( context: Context, - dataRows: MutableList + dataRows: MutableList ) : RecyclerView.Adapter() { - private val dataRows: MutableList? = dataRows + private val dataRows: MutableList? = dataRows private var layoutInflater: LayoutInflater? = null init { diff --git a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt index dbbbd33..e6a7719 100644 --- a/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt +++ b/app/src/main/java/com/casic/birmm/inspect/base/BaseApplication.kt @@ -1,6 +1,9 @@ package com.casic.birmm.inspect.base import android.app.Application +import android.database.sqlite.SQLiteDatabase +import com.casic.birmm.inspect.greendao.DaoMaster +import com.casic.birmm.inspect.greendao.DaoSession import com.casic.birmm.inspect.utils.FileUtils import com.casic.birmm.inspect.utils.SaveKeyValues import kotlin.properties.Delegates @@ -9,6 +12,10 @@ companion object { var instance: BaseApplication by Delegates.notNull() + + private lateinit var daoSession: DaoSession + + fun obtainInstance() = instance } override fun onCreate() { @@ -16,5 +23,16 @@ instance = this SaveKeyValues.initSharedPreferences() FileUtils.initFileConfig() + initDataBase() + } + + private fun initDataBase() { + val devOpenHelper = DaoMaster.DevOpenHelper(this, "Inspection.db") + val db: SQLiteDatabase = devOpenHelper.writableDatabase + daoSession = DaoMaster(db).newSession() + } + + fun obtainDaoSession(): DaoSession { + return daoSession } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java new file mode 100644 index 0000000..14424ec --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/BlueToothBean.java @@ -0,0 +1,27 @@ +package com.casic.birmm.inspect.bean; + +public class BlueToothBean { + private String blueToothName; + private String blueToothAddress; + + public BlueToothBean(String blueToothName, String blueToothAddress) { + this.blueToothName = blueToothName; + this.blueToothAddress = blueToothAddress; + } + + public String getBlueToothName() { + return blueToothName; + } + + public void setBlueToothName(String blueToothName) { + this.blueToothName = blueToothName; + } + + public String getBlueToothAddress() { + return blueToothAddress; + } + + public void setBlueToothAddress(String blueToothAddress) { + this.blueToothAddress = blueToothAddress; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java new file mode 100644 index 0000000..d330f9e --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/InspectionBean.java @@ -0,0 +1,143 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +//实体类必须是java的,因为GreenDao暂时不支持Kotlin +@Entity +public class InspectionBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String name; // 巡检标签 + private String startTime; //开始事件 + private String endTime; // 结束时间 + private String date; // 日期 + private double startLng; // 开始经度 + private double startLat; // 开始纬度 + private double endLng; // 结束经度 + private double endLat; // 结束维度 + private String routes; // 路线Json + private String user; // 巡检人 + + @Generated(hash = 563794757) + public InspectionBean(Long id, String serverMainId, String name, + String startTime, String endTime, String date, double startLng, + double startLat, double endLng, double endLat, String routes, + String user) { + this.id = id; + this.serverMainId = serverMainId; + this.name = name; + this.startTime = startTime; + this.endTime = endTime; + this.date = date; + this.startLng = startLng; + this.startLat = startLat; + this.endLng = endLng; + this.endLat = endLat; + this.routes = routes; + this.user = user; + } + + @Generated(hash = 752533168) + public InspectionBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getStartTime() { + return this.startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return this.endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getDate() { + return this.date; + } + + public void setDate(String date) { + this.date = date; + } + + public double getStartLng() { + return this.startLng; + } + + public void setStartLng(double startLng) { + this.startLng = startLng; + } + + public double getStartLat() { + return this.startLat; + } + + public void setStartLat(double startLat) { + this.startLat = startLat; + } + + public double getEndLng() { + return this.endLng; + } + + public void setEndLng(double endLng) { + this.endLng = endLng; + } + + public double getEndLat() { + return this.endLat; + } + + public void setEndLat(double endLat) { + this.endLat = endLat; + } + + public String getRoutes() { + return this.routes; + } + + public void setRoutes(String routes) { + this.routes = routes; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java new file mode 100644 index 0000000..a605447 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/bean/TaskEventBean.java @@ -0,0 +1,141 @@ +package com.casic.birmm.inspect.bean; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Generated; +import org.greenrobot.greendao.annotation.Id; + +@Entity +public class TaskEventBean { + @Id(autoincrement = true) + private Long id;//本地数据库主键ID + + private String serverMainId; //服务器数据库主键id + private String inspectionId; // 巡检标签 + private String name; // 事件标题:巡检标签-事件类型 + private String createTime; //开始时间 + private double lng; // 经度 + private double lat; // 维度 + private String type; // 事件类型:自定义事件 or 报警事件 + private double data; // 最大泄漏数值 + private String images; // 图片 + private String description; // 事件描述 + private String user; + + @Generated(hash = 1553594848) + public TaskEventBean(Long id, String serverMainId, String inspectionId, + String name, String createTime, double lng, double lat, String type, + double data, String images, String description, String user) { + this.id = id; + this.serverMainId = serverMainId; + this.inspectionId = inspectionId; + this.name = name; + this.createTime = createTime; + this.lng = lng; + this.lat = lat; + this.type = type; + this.data = data; + this.images = images; + this.description = description; + this.user = user; + } + + @Generated(hash = 2137936048) + public TaskEventBean() { + } + + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getServerMainId() { + return this.serverMainId; + } + + public void setServerMainId(String serverMainId) { + this.serverMainId = serverMainId; + } + + public String getInspectionId() { + return this.inspectionId; + } + + public void setInspectionId(String inspectionId) { + this.inspectionId = inspectionId; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCreateTime() { + return this.createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public double getLng() { + return this.lng; + } + + public void setLng(double lng) { + this.lng = lng; + } + + public double getLat() { + return this.lat; + } + + public void setLat(double lat) { + this.lat = lat; + } + + public String getType() { + return this.type; + } + + public void setType(String type) { + this.type = type; + } + + public double getData() { + return this.data; + } + + public void setData(double data) { + this.data = data; + } + + public String getImages() { + return this.images; + } + + public void setImages(String images) { + this.images = images; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUser() { + return this.user; + } + + public void setUser(String user) { + this.user = user; + } +} diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt new file mode 100644 index 0000000..c30cfea --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -0,0 +1,20 @@ +package com.casic.birmm.inspect.extensions + +/** + * ArrayList扩展方法 + */ + +//将图片集合格式化成满足上传格式的数据 +fun ArrayList.reformat(): String { + if (this.isEmpty()) return "" + val builder = StringBuilder() + //循环遍历元素,同时得到元素index(下标) + this.forEachIndexed { index, s -> + if (index == this.size - 1) { + builder.append(s).append(",") + } else { + builder.append(s) + } + } + return builder.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt new file mode 100644 index 0000000..9243dc5 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/Long.kt @@ -0,0 +1,12 @@ +package com.casic.birmm.inspect.extensions + +import java.util.* + +/** + * Long扩展方法 + */ + +//随机生成inspectionId主键 +fun Long.id(): String { + return this.toString() + Random().nextInt(999).toString(3) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt index 164d636..52e71f0 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/String.kt @@ -9,12 +9,18 @@ import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.SaveKeyValues import com.qmuiteam.qmui.util.QMUIDisplayHelper +import java.util.* import java.util.regex.Pattern /** * String扩展方法 */ +//随机生成taskId主键 +fun String.id(): String { + return this + System.currentTimeMillis() + Random().nextInt(999).toString(3) +} + //过滤空格,回车 fun String.filterString(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java new file mode 100644 index 0000000..a07c566 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoMaster.java @@ -0,0 +1,99 @@ +package com.casic.birmm.inspect.greendao; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.util.Log; + +import org.greenrobot.greendao.AbstractDaoMaster; +import org.greenrobot.greendao.database.StandardDatabase; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseOpenHelper; +import org.greenrobot.greendao.identityscope.IdentityScopeType; + + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * Master of DAO (schema version 1): knows all DAOs. + */ +public class DaoMaster extends AbstractDaoMaster { + public static final int SCHEMA_VERSION = 1; + + /** Creates underlying database table using DAOs. */ + public static void createAllTables(Database db, boolean ifNotExists) { + InspectionBeanDao.createTable(db, ifNotExists); + TaskEventBeanDao.createTable(db, ifNotExists); + } + + /** Drops underlying database table using DAOs. */ + public static void dropAllTables(Database db, boolean ifExists) { + InspectionBeanDao.dropTable(db, ifExists); + TaskEventBeanDao.dropTable(db, ifExists); + } + + /** + * WARNING: Drops all table on Upgrade! Use only during development. + * Convenience method using a {@link DevOpenHelper}. + */ + public static DaoSession newDevSession(Context context, String name) { + Database db = new DevOpenHelper(context, name).getWritableDb(); + DaoMaster daoMaster = new DaoMaster(db); + return daoMaster.newSession(); + } + + public DaoMaster(SQLiteDatabase db) { + this(new StandardDatabase(db)); + } + + public DaoMaster(Database db) { + super(db, SCHEMA_VERSION); + registerDaoClass(InspectionBeanDao.class); + registerDaoClass(TaskEventBeanDao.class); + } + + public DaoSession newSession() { + return new DaoSession(db, IdentityScopeType.Session, daoConfigMap); + } + + public DaoSession newSession(IdentityScopeType type) { + return new DaoSession(db, type, daoConfigMap); + } + + /** + * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} - + */ + public static abstract class OpenHelper extends DatabaseOpenHelper { + public OpenHelper(Context context, String name) { + super(context, name, SCHEMA_VERSION); + } + + public OpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory, SCHEMA_VERSION); + } + + @Override + public void onCreate(Database db) { + Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION); + createAllTables(db, false); + } + } + + /** WARNING: Drops all table on Upgrade! Use only during development. */ + public static class DevOpenHelper extends OpenHelper { + public DevOpenHelper(Context context, String name) { + super(context, name); + } + + public DevOpenHelper(Context context, String name, CursorFactory factory) { + super(context, name, factory); + } + + @Override + public void onUpgrade(Database db, int oldVersion, int newVersion) { + Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables"); + dropAllTables(db, true); + onCreate(db); + } + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java new file mode 100644 index 0000000..346e192 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/DaoSession.java @@ -0,0 +1,62 @@ +package com.casic.birmm.inspect.greendao; + +import java.util.Map; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.AbstractDaoSession; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.identityscope.IdentityScopeType; +import org.greenrobot.greendao.internal.DaoConfig; + +import com.casic.birmm.inspect.bean.InspectionBean; +import com.casic.birmm.inspect.bean.TaskEventBean; + +import com.casic.birmm.inspect.greendao.InspectionBeanDao; +import com.casic.birmm.inspect.greendao.TaskEventBeanDao; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. + +/** + * {@inheritDoc} + * + * @see org.greenrobot.greendao.AbstractDaoSession + */ +public class DaoSession extends AbstractDaoSession { + + private final DaoConfig inspectionBeanDaoConfig; + private final DaoConfig taskEventBeanDaoConfig; + + private final InspectionBeanDao inspectionBeanDao; + private final TaskEventBeanDao taskEventBeanDao; + + public DaoSession(Database db, IdentityScopeType type, Map>, DaoConfig> + daoConfigMap) { + super(db); + + inspectionBeanDaoConfig = daoConfigMap.get(InspectionBeanDao.class).clone(); + inspectionBeanDaoConfig.initIdentityScope(type); + + taskEventBeanDaoConfig = daoConfigMap.get(TaskEventBeanDao.class).clone(); + taskEventBeanDaoConfig.initIdentityScope(type); + + inspectionBeanDao = new InspectionBeanDao(inspectionBeanDaoConfig, this); + taskEventBeanDao = new TaskEventBeanDao(taskEventBeanDaoConfig, this); + + registerDao(InspectionBean.class, inspectionBeanDao); + registerDao(TaskEventBean.class, taskEventBeanDao); + } + + public void clear() { + inspectionBeanDaoConfig.clearIdentityScope(); + taskEventBeanDaoConfig.clearIdentityScope(); + } + + public InspectionBeanDao getInspectionBeanDao() { + return inspectionBeanDao; + } + + public TaskEventBeanDao getTaskEventBeanDao() { + return taskEventBeanDao; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java new file mode 100644 index 0000000..b7077a3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/InspectionBeanDao.java @@ -0,0 +1,237 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.InspectionBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "INSPECTION_BEAN". +*/ +public class InspectionBeanDao extends AbstractDao { + + public static final String TABLENAME = "INSPECTION_BEAN"; + + /** + * Properties of entity InspectionBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property Name = new Property(2, String.class, "name", false, "NAME"); + public final static Property StartTime = new Property(3, String.class, "startTime", false, "START_TIME"); + public final static Property EndTime = new Property(4, String.class, "endTime", false, "END_TIME"); + public final static Property Date = new Property(5, String.class, "date", false, "DATE"); + public final static Property StartLng = new Property(6, double.class, "startLng", false, "START_LNG"); + public final static Property StartLat = new Property(7, double.class, "startLat", false, "START_LAT"); + public final static Property EndLng = new Property(8, double.class, "endLng", false, "END_LNG"); + public final static Property EndLat = new Property(9, double.class, "endLat", false, "END_LAT"); + public final static Property Routes = new Property(10, String.class, "routes", false, "ROUTES"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public InspectionBeanDao(DaoConfig config) { + super(config); + } + + public InspectionBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"INSPECTION_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"NAME\" TEXT," + // 2: name + "\"START_TIME\" TEXT," + // 3: startTime + "\"END_TIME\" TEXT," + // 4: endTime + "\"DATE\" TEXT," + // 5: date + "\"START_LNG\" REAL NOT NULL ," + // 6: startLng + "\"START_LAT\" REAL NOT NULL ," + // 7: startLat + "\"END_LNG\" REAL NOT NULL ," + // 8: endLng + "\"END_LAT\" REAL NOT NULL ," + // 9: endLat + "\"ROUTES\" TEXT," + // 10: routes + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"INSPECTION_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, InspectionBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(3, name); + } + + String startTime = entity.getStartTime(); + if (startTime != null) { + stmt.bindString(4, startTime); + } + + String endTime = entity.getEndTime(); + if (endTime != null) { + stmt.bindString(5, endTime); + } + + String date = entity.getDate(); + if (date != null) { + stmt.bindString(6, date); + } + stmt.bindDouble(7, entity.getStartLng()); + stmt.bindDouble(8, entity.getStartLat()); + stmt.bindDouble(9, entity.getEndLng()); + stmt.bindDouble(10, entity.getEndLat()); + + String routes = entity.getRoutes(); + if (routes != null) { + stmt.bindString(11, routes); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public InspectionBean readEntity(Cursor cursor, int offset) { + InspectionBean entity = new InspectionBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // startTime + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // endTime + cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // date + cursor.getDouble(offset + 6), // startLng + cursor.getDouble(offset + 7), // startLat + cursor.getDouble(offset + 8), // endLng + cursor.getDouble(offset + 9), // endLat + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // routes + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, InspectionBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setStartTime(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setEndTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setDate(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5)); + entity.setStartLng(cursor.getDouble(offset + 6)); + entity.setStartLat(cursor.getDouble(offset + 7)); + entity.setEndLng(cursor.getDouble(offset + 8)); + entity.setEndLat(cursor.getDouble(offset + 9)); + entity.setRoutes(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(InspectionBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(InspectionBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(InspectionBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java new file mode 100644 index 0000000..3f040d3 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/TaskEventBeanDao.java @@ -0,0 +1,245 @@ +package com.casic.birmm.inspect.greendao; + +import android.database.Cursor; +import android.database.sqlite.SQLiteStatement; + +import org.greenrobot.greendao.AbstractDao; +import org.greenrobot.greendao.Property; +import org.greenrobot.greendao.internal.DaoConfig; +import org.greenrobot.greendao.database.Database; +import org.greenrobot.greendao.database.DatabaseStatement; + +import com.casic.birmm.inspect.bean.TaskEventBean; + +// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. +/** + * DAO for table "TASK_EVENT_BEAN". +*/ +public class TaskEventBeanDao extends AbstractDao { + + public static final String TABLENAME = "TASK_EVENT_BEAN"; + + /** + * Properties of entity TaskEventBean.
+ * Can be used for QueryBuilder and for referencing column names. + */ + public static class Properties { + public final static Property Id = new Property(0, Long.class, "id", true, "_id"); + public final static Property ServerMainId = new Property(1, String.class, "serverMainId", false, "SERVER_MAIN_ID"); + public final static Property InspectionId = new Property(2, String.class, "inspectionId", false, "INSPECTION_ID"); + public final static Property Name = new Property(3, String.class, "name", false, "NAME"); + public final static Property CreateTime = new Property(4, String.class, "createTime", false, "CREATE_TIME"); + public final static Property Lng = new Property(5, double.class, "lng", false, "LNG"); + public final static Property Lat = new Property(6, double.class, "lat", false, "LAT"); + public final static Property Type = new Property(7, String.class, "type", false, "TYPE"); + public final static Property Data = new Property(8, double.class, "data", false, "DATA"); + public final static Property Images = new Property(9, String.class, "images", false, "IMAGES"); + public final static Property Description = new Property(10, String.class, "description", false, "DESCRIPTION"); + public final static Property User = new Property(11, String.class, "user", false, "USER"); + } + + + public TaskEventBeanDao(DaoConfig config) { + super(config); + } + + public TaskEventBeanDao(DaoConfig config, DaoSession daoSession) { + super(config, daoSession); + } + + /** Creates the underlying database table. */ + public static void createTable(Database db, boolean ifNotExists) { + String constraint = ifNotExists? "IF NOT EXISTS ": ""; + db.execSQL("CREATE TABLE " + constraint + "\"TASK_EVENT_BEAN\" (" + // + "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id + "\"SERVER_MAIN_ID\" TEXT," + // 1: serverMainId + "\"INSPECTION_ID\" TEXT," + // 2: inspectionId + "\"NAME\" TEXT," + // 3: name + "\"CREATE_TIME\" TEXT," + // 4: createTime + "\"LNG\" REAL NOT NULL ," + // 5: lng + "\"LAT\" REAL NOT NULL ," + // 6: lat + "\"TYPE\" TEXT," + // 7: type + "\"DATA\" REAL NOT NULL ," + // 8: data + "\"IMAGES\" TEXT," + // 9: images + "\"DESCRIPTION\" TEXT," + // 10: description + "\"USER\" TEXT);"); // 11: user + } + + /** Drops the underlying database table. */ + public static void dropTable(Database db, boolean ifExists) { + String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"TASK_EVENT_BEAN\""; + db.execSQL(sql); + } + + @Override + protected final void bindValues(DatabaseStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + protected final void bindValues(SQLiteStatement stmt, TaskEventBean entity) { + stmt.clearBindings(); + + Long id = entity.getId(); + if (id != null) { + stmt.bindLong(1, id); + } + + String serverMainId = entity.getServerMainId(); + if (serverMainId != null) { + stmt.bindString(2, serverMainId); + } + + String inspectionId = entity.getInspectionId(); + if (inspectionId != null) { + stmt.bindString(3, inspectionId); + } + + String name = entity.getName(); + if (name != null) { + stmt.bindString(4, name); + } + + String createTime = entity.getCreateTime(); + if (createTime != null) { + stmt.bindString(5, createTime); + } + stmt.bindDouble(6, entity.getLng()); + stmt.bindDouble(7, entity.getLat()); + + String type = entity.getType(); + if (type != null) { + stmt.bindString(8, type); + } + stmt.bindDouble(9, entity.getData()); + + String images = entity.getImages(); + if (images != null) { + stmt.bindString(10, images); + } + + String description = entity.getDescription(); + if (description != null) { + stmt.bindString(11, description); + } + + String user = entity.getUser(); + if (user != null) { + stmt.bindString(12, user); + } + } + + @Override + public Long readKey(Cursor cursor, int offset) { + return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0); + } + + @Override + public TaskEventBean readEntity(Cursor cursor, int offset) { + TaskEventBean entity = new TaskEventBean( // + cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // serverMainId + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // inspectionId + cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // name + cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // createTime + cursor.getDouble(offset + 5), // lng + cursor.getDouble(offset + 6), // lat + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // type + cursor.getDouble(offset + 8), // data + cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9), // images + cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10), // description + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11) // user + ); + return entity; + } + + @Override + public void readEntity(Cursor cursor, TaskEventBean entity, int offset) { + entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0)); + entity.setServerMainId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1)); + entity.setInspectionId(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2)); + entity.setName(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); + entity.setCreateTime(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4)); + entity.setLng(cursor.getDouble(offset + 5)); + entity.setLat(cursor.getDouble(offset + 6)); + entity.setType(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); + entity.setData(cursor.getDouble(offset + 8)); + entity.setImages(cursor.isNull(offset + 9) ? null : cursor.getString(offset + 9)); + entity.setDescription(cursor.isNull(offset + 10) ? null : cursor.getString(offset + 10)); + entity.setUser(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11)); + } + + @Override + protected final Long updateKeyAfterInsert(TaskEventBean entity, long rowId) { + entity.setId(rowId); + return rowId; + } + + @Override + public Long getKey(TaskEventBean entity) { + if(entity != null) { + return entity.getId(); + } else { + return null; + } + } + + @Override + public boolean hasKey(TaskEventBean entity) { + return entity.getId() != null; + } + + @Override + protected final boolean isEntityUpdateable() { + return true; + } + +} diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt new file mode 100644 index 0000000..dc635a4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/EventListModel.kt @@ -0,0 +1,41 @@ +package com.casic.birmm.inspect.model + +class EventListModel { + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + var total = 0 + var rows: MutableList? = + null + + class RowsBean { + /** + * createTime : 2020-12-28 14:56:59 + * data : -1 + * description : ggg + * id : t1609138629320112121 + * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg + * inspectionId : 1609138451543200022 + * lat : 39.915956 + * lng : 116.268596 + * name : sss + * type : 自定义事件 + * user : 超超级管理员 + */ + var createTime: String? = null + var data = 0 + var description: String? = null + var id: String? = null + var images: String? = null + var inspectionId: String? = null + var lat = 0.0 + var lng = 0.0 + var name: String? = null + var type: String? = null + var user: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt deleted file mode 100644 index de499aa..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/EventModel.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.birmm.inspect.model - -class EventModel { - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - var total = 0 - var rows: MutableList? = - null - - class RowsBean { - /** - * createTime : 2020-12-28 14:56:59 - * data : -1 - * description : ggg - * id : t1609138629320112121 - * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg - * inspectionId : 1609138451543200022 - * lat : 39.915956 - * lng : 116.268596 - * name : sss - * type : 自定义事件 - * user : 超超级管理员 - */ - var createTime: String? = null - var data = 0 - var description: String? = null - var id: String? = null - var images: String? = null - var inspectionId: String? = null - var lat = 0.0 - var lng = 0.0 - var name: String? = null - var type: String? = null - var user: String? = null - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt new file mode 100644 index 0000000..395b6e8 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectListModel.kt @@ -0,0 +1,43 @@ +package com.casic.birmm.inspect.model + +class InspectListModel { + + var code = 0 + var data: DataBean? = null + var message: String? = null + var isSuccess = false + + class DataBean { + + var total = 0 + var rows: MutableList? = null + + class RowsBean { + /** + * date : 2021年07月08日 + * endLat : 39.915908 + * endLng : 116.26876 + * endTime : 2021-07-08 11:20:20 + * id : 162570318141612121 + * name : 测试 + * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] + * startLat : 39.913365 + * startLng : 116.269462 + * startTime : 2021-07-08 08:13:01 + * user : 王晓颖 + */ + var date: String? = null + var endLat = 0.0 + var endLng = 0.0 + var endTime: String? = null + var id: String? = null + var name: String? = null + var routes: String? = null + var startLat = 0.0 + var startLng = 0.0 + var startTime: String? = null + var user: String? = null + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt deleted file mode 100644 index 558e716..0000000 --- a/app/src/main/java/com/casic/birmm/inspect/model/InspectModel.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.casic.birmm.inspect.model - -class InspectModel { - - var code = 0 - var data: DataBean? = null - var message: String? = null - var isSuccess = false - - class DataBean { - - var total = 0 - var rows: MutableList? = null - - class RowsBean { - /** - * date : 2021年07月08日 - * endLat : 39.915908 - * endLng : 116.26876 - * endTime : 2021-07-08 11:20:20 - * id : 162570318141612121 - * name : 测试 - * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]] - * startLat : 39.913365 - * startLng : 116.269462 - * startTime : 2021-07-08 08:13:01 - * user : 王晓颖 - */ - var date: String? = null - var endLat = 0.0 - var endLng = 0.0 - var endTime: String? = null - var id: String? = null - var name: String? = null - var routes: String? = null - var startLat = 0.0 - var startLng = 0.0 - var startTime: String? = null - var user: String? = null - - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt index ee6f1f6..beb469b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt @@ -1,5 +1,6 @@ package com.casic.birmm.inspect.model +//同巡检Id的事件列表数据模型 class TaskRecordModel { var code = 0 @@ -8,7 +9,7 @@ var isSuccess = false class DataBean { - var list: List? = null + var list: MutableList? = null class ListBean { /** diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt new file mode 100644 index 0000000..8201cb4 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/BroadcastManager.kt @@ -0,0 +1,89 @@ +package com.casic.birmm.inspect.utils + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.util.Log +import com.casic.birmm.inspect.base.BaseApplication + + +class BroadcastManager private constructor() { + + private var mContext: Context = BaseApplication.instance + private var receiverMap: HashMap = HashMap() + + companion object { + private const val Tag = "BroadcastManager" + + val instance: BroadcastManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + BroadcastManager() + } + } + + /** + * 添加单个Action,广播的初始化 + */ + fun addAction(action: String, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + filter.addAction(action) + mContext.registerReceiver(receiver, filter) + receiverMap[action] = receiver + } catch (e: Exception) { + e.printStackTrace() + } + } + + /** + * 添加多个Action,广播的初始化 + */ + fun addAction(actions: Array, receiver: BroadcastReceiver) { + try { + val filter = IntentFilter() + actions.forEach { + filter.addAction(it) + receiverMap[it] = receiver + } + mContext.registerReceiver(receiver, filter) + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 发送广播 + * + * @param action 唯一码 + * @param msg 参数 + */ + fun sendBroadcast(action: String, msg: String) { + try { + val intent = Intent() + intent.action = action + intent.putExtra("data", msg) + mContext.sendBroadcast(intent) + Log.d(Tag, "发送广播: $msg") + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + + /** + * 销毁广播 + * + * @param actions action集合 + */ + fun destroy(vararg actions: String) { + try { + actions.forEach { + val receiver = receiverMap[it] + if (receiver != null) { + mContext.unregisterReceiver(receiver) + } + } + } catch (e: IllegalArgumentException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt index 0c9e963..507655b 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt @@ -16,13 +16,25 @@ const val BLUETOOTH_ON = 20 const val BLUETOOTH_OFF = 21 const val DEVICE_CONNECTED = 22 - const val DEVICE_DISCONNECTED = 23 + const val DEVICE_CONNECT_FAIL = 23 + const val DEVICE_DISCONNECTED = 24 + const val SEND_SUCCESS = 25 + const val SEND_FAILURE = 26 + const val RECEIVE_SUCCESS = 27 + const val RECEIVE_FAILURE = 28 const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val IMAGE_MINUS_SIZE = 50 * 1024 + const val IMAGE_MINUS_SIZE = 100 * 1024 const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" const val USER_OBJECT = "userObject" const val OPEN_WARNING = "isOpenWarning" const val AUTO_RECORD = "isRecordLog" + const val INSPECTION_OBJECT = "inspectionObject" + + val ASK_DEV_CODE_COMMAND = byteArrayOf(0x01, 0x0D, 0x0A)// 查询设备编号命令 + val OPEN_TRANSFER_COMMAND = byteArrayOf(0x02, 0x0D, 0x0A) // 开启数据发送命令 + const val SERVICE_UUID = "0003cdd0-0000-1000-8000-00805f9b0131"//连接设备的UUID + const val WRITE_CHARACTERISTIC_UUID = "0003cdd2-0000-1000-8000-00805f9b0131"//写数据特征值UUID + const val READ_CHARACTERISTIC_UUID = "0003cdd1-0000-1000-8000-00805f9b0131"//读数据特征值UUID } \ No newline at end of file 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 new file mode 100644 index 0000000..c7fba84 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -0,0 +1,123 @@ +package com.casic.birmm.inspect.utils + +import com.casic.birmm.inspect.base.BaseApplication +import com.casic.birmm.inspect.bean.InspectionBean +import com.casic.birmm.inspect.bean.TaskEventBean +import com.casic.birmm.inspect.greendao.TaskEventBeanDao +import com.casic.birmm.inspect.model.TaskRecordModel + +class DataBaseManager private constructor() { + + companion object { + //Kotlin委托模式双重锁单例 + val instance: DataBaseManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + DataBaseManager() + } + } + + /** + * 保存巡检记录到本地 + * */ + fun insertData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.insert(bean) + } + + /** + * 删除本地巡检记录 + * */ + fun deleteData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllInspection() { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: InspectionBean) { + BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao.update(bean) + } + + /** + * 查询所有数据 + */ + fun queryAllInspection(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().inspectionBeanDao?.queryBuilder() + ?.build()?.list() + } + + /**********************************************************************************************/ + + /** + * 保存事件记录到本地 + * */ + fun insertData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.insert(bean) + } + + /** + * 删除本地事件记录 + * */ + fun deleteData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.delete(bean) + } + + /** + * 删除全部数据 + */ + fun deleteAllTask() { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.deleteAll() + } + + /** + * 更新数据库 + */ + fun updateData(bean: TaskEventBean) { + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao.update(bean) + } + + /** + * 根据巡检Id查询事件数据 + */ + fun queryTaskByInspection(inspectionId: String): MutableList? { + val dataBeans: MutableList = ArrayList() + BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.where(TaskEventBeanDao.Properties.InspectionId.eq(inspectionId)) + ?.orderDesc(TaskEventBeanDao.Properties.CreateTime)//按时间顺序最新顺序排序 + ?.build() + ?.list()?.let { + it.forEach { taskBean -> + val listBean = TaskRecordModel.DataBean.ListBean() + listBean.createTime = taskBean.createTime + listBean.data = taskBean.data.toInt() + listBean.description = taskBean.description + listBean.id = taskBean.serverMainId + listBean.images = taskBean.images + listBean.inspectionId = taskBean.inspectionId + listBean.lat = taskBean.lat + listBean.lng = taskBean.lng + listBean.name = taskBean.name + listBean.type = taskBean.type + listBean.user = taskBean.user + dataBeans.add(listBean) + } + } + return dataBeans + } + + /** + * 查询所有数据 + */ + fun queryAllTask(): MutableList? { + return BaseApplication.obtainInstance().obtainDaoSession().taskEventBeanDao + ?.queryBuilder() + ?.build() + ?.list() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt new file mode 100644 index 0000000..fa53beb --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHelper.kt @@ -0,0 +1,34 @@ +package com.casic.birmm.inspect.utils + +import android.content.Context +import android.util.Log +import com.amap.api.location.AMapLocationClient +import com.amap.api.location.AMapLocationClientOption +import com.casic.birmm.inspect.utils.callback.ILocationListener + +object LocationHelper { + private const val Tag = "LocationHelper" + + fun obtainCurrentLocation(context: Context, listener: ILocationListener) { + val locationClient = AMapLocationClient(context) + val locationOption = AMapLocationClientOption() + locationOption.locationMode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy; + locationOption.isNeedAddress = true//设置是否返回地址信息(默认返回地址信息) + locationOption.isOnceLocation = true//设置是否只定位一次,默认为false + locationOption.isMockEnable = false//设置是否允许模拟位置,默认为false,不允许模拟位置 + locationOption.isLocationCacheEnable = false //可选,设置是否使用缓存定位,默认为true + locationClient.setLocationOption(locationOption) + locationClient.setLocationListener { + if (it != null) { + if (it.errorCode == 0) { + listener.onAMapLocationGet(it) + } else { + Log.e( + Tag, "location Error, ErrCode:" + it.errorCode + ", errInfo:" + it.errorInfo + ) + } + } + } + locationClient.startLocation() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt new file mode 100644 index 0000000..a4def44 --- /dev/null +++ b/app/src/main/java/com/casic/birmm/inspect/utils/callback/ILocationListener.kt @@ -0,0 +1,8 @@ +package com.casic.birmm.inspect.utils.callback + +import com.amap.api.location.AMapLocation + + +interface ILocationListener { + fun onAMapLocationGet(aMapLocation: AMapLocation) //高德定位数据 +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index a05027e..c5c9a30 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -49,7 +49,7 @@ @Query("endTime") endTime: String, @Query("limit") limit: Int, @Query("offset") offset: Int - ): InspectModel + ): InspectListModel /** * 巡检记录列表 @@ -62,7 +62,7 @@ @Query("endTime") endTime: String, @Query("limit") limit: Int, @Query("offset") offset: Int - ): EventModel + ): EventListModel /** * 获取巡检详情 @@ -93,4 +93,24 @@ @Header("token") token: String, @Part file: MultipartBody.Part ): ActionResultModel + + /** + * 新增事件 + */ + @FormUrlEncoded + @POST("/task/add") + suspend fun addEventTask( + @Header("token") token: String, + @Field("id") id: String, + @Field("inspectionId") inspectionId: String, + @Field("name") name: String, + @Field("createTime") createTime: String, + @Field("type") type: String, + @Field("Lng") Lng: Double, + @Field("Lat") Lat: Double, + @Field("data") data: Double, + @Field("images") images: String, + @Field("description") description: String, + @Field("user") user: String + ): ActionResultModel } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index df03b14..d24faff 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -49,7 +49,7 @@ startTime: String, endTime: String, pageIndex: Int - ): InspectModel { + ): InspectListModel { return api.obtainInspectList( AuthenticationHelper.token!!, keywords, @@ -68,7 +68,7 @@ startTime: String, endTime: String, pageIndex: Int - ): EventModel { + ): EventListModel { return api.obtainEventList( AuthenticationHelper.token!!, keywords, @@ -101,4 +101,17 @@ val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody) return api.uploadImage(AuthenticationHelper.token!!, imagePart) } + + /** + * 新增事件 + */ + suspend fun addEventTask( + id: String, inspectionId: String, name: String, createTime: String, type: String, + lng: Double, lat: Double, data: Double, images: String, description: String, user: String + ): ActionResultModel { + return api.addEventTask( + AuthenticationHelper.token!!, id, inspectionId, name, createTime, + type, lng, lat, data, images, description, user + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt index 12c7c7e..ff6de36 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt @@ -11,7 +11,7 @@ import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.filterString import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.model.EventModel +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 @@ -38,7 +38,7 @@ private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var adapter: EventSearchListAdapter diff --git a/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt index 2e57bec..9cce3ca 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/GuideActivity.kt @@ -7,6 +7,8 @@ import android.view.ViewGroup.MarginLayoutParams import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider +import com.aihook.alertview.library.AlertView +import com.aihook.alertview.library.OnItemClickListener import com.casic.birmm.inspect.R import com.casic.birmm.inspect.base.BaseActivity import com.casic.birmm.inspect.extensions.show @@ -68,9 +70,35 @@ val userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) userViewModel.getUserInfo() userViewModel.resultModel.observe(this, Observer { - SaveKeyValues.putValue(Constant.USER_OBJECT, Gson().toJson(it))//保存用户对象 - startActivity(Intent(this, MainActivity::class.java)) - finish() + if (it.code == 200) { + SaveKeyValues.putValue(Constant.USER_OBJECT, Gson().toJson(it))//保存用户对象 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } else { + AlertView("温馨提示", + it.message, + "等会再来", + arrayOf("去登录"), + null, + this, + AlertView.Style.Alert, + OnItemClickListener { _, position -> + when (position) { + -1 -> { + this@GuideActivity.finish() + } + 0 -> { + startActivity( + Intent( + this@GuideActivity, + LoginActivity::class.java + ) + ) + finish() + } + } + }).show() + } }) userViewModel.loadState.observe(this, Observer { "获取用户信息失败,请重试".show(this) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt index da4b03e..03e0f95 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt @@ -10,7 +10,7 @@ import com.casic.birmm.inspect.adapter.InspectListAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.utils.Constant import com.casic.birmm.inspect.utils.PageNavigationManager import com.casic.birmm.inspect.utils.StatusBarColorUtil @@ -32,7 +32,7 @@ private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var adapter: InspectListAdapter diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt index 91fb674..dab7f0c 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MapActivity.kt @@ -1,27 +1,38 @@ package com.casic.birmm.inspect.view import android.bluetooth.BluetoothAdapter +import android.bluetooth.BluetoothDevice +import android.content.BroadcastReceiver +import android.content.Context import android.content.Intent -import android.graphics.Color import android.os.Bundle import android.os.Handler import android.os.Message import android.util.Log import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProvider +import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.model.MyLocationStyle import com.casic.birmm.inspect.R +import com.casic.birmm.inspect.bean.BlueToothBean +import com.casic.birmm.inspect.bean.InspectionBean +import com.casic.birmm.inspect.extensions.id import com.casic.birmm.inspect.extensions.show -import com.casic.birmm.inspect.utils.Constant -import com.casic.birmm.inspect.utils.OtherUtils -import com.casic.birmm.inspect.utils.PageNavigationManager -import com.casic.birmm.inspect.utils.StatusBarColorUtil +import com.casic.birmm.inspect.model.TaskRecordModel +import com.casic.birmm.inspect.model.UserInfoModel +import com.casic.birmm.inspect.utils.* +import com.casic.birmm.inspect.utils.callback.ILocationListener +import com.casic.birmm.inspect.vm.TaskRecordViewModel import com.casic.birmm.inspect.widgets.InputDialog import com.casic.birmm.inspect.widgets.SingleChoiceDialog +import com.google.gson.Gson import com.gyf.immersionbar.ImmersionBar import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet import kotlinx.android.synthetic.main.activity_inspect_route.mapView import kotlinx.android.synthetic.main.activity_map.* import kotlinx.android.synthetic.main.include_base_title.* @@ -42,9 +53,21 @@ } } + private val itemList: List = arrayListOf("报警事件", "自定义事件") private lateinit var aMap: AMap private lateinit var locationStyle: MyLocationStyle - private val itemList: List = arrayListOf("报警事件", "自定义事件") + private lateinit var inspectionName: String + private lateinit var inspectionId: String + private lateinit var inspectionBean: InspectionBean + private lateinit var userDataModel: UserInfoModel.DataBean + private var dataBeans: MutableList = ArrayList() + private var routes: MutableList = ArrayList()//路线集和 + private var gson: Gson = Gson() + private var isBluetoothOn = true + private var blueToothDevices: MutableList = ArrayList() + private var blueToothBeans: MutableList = ArrayList()//搜索展示列表 + private var bluetoothAdapter: BluetoothAdapter? = null + private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 init { weakReferenceHandler = WeakReferenceHandler(this) @@ -53,22 +76,40 @@ private class WeakReferenceHandler(activity: MapActivity) : Handler() { private val activity: WeakReference = WeakReference(activity) override fun handleMessage(msg: Message) { - val mainActivity = activity.get() ?: return + val mapActivity = activity.get() ?: return when (msg.what) { Constant.BLUETOOTH_ON -> { - "蓝牙已开启".show(mainActivity) - mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + "蓝牙已开启".show(mapActivity) + mapActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + mapActivity.isBluetoothOn = true } Constant.BLUETOOTH_OFF -> { - "蓝牙已关闭".show(mainActivity) - mainActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + "蓝牙已关闭".show(mapActivity) + mapActivity.bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + mapActivity.isBluetoothOn = false } Constant.DEVICE_CONNECTED -> { //TODO 设备已连接 + mapActivity.communicateWithDevice(Constant.ASK_DEV_CODE_COMMAND) + } + Constant.DEVICE_CONNECT_FAIL -> { + //TODO 设备连接失败/超时 } Constant.DEVICE_DISCONNECTED -> { //TODO 设备断开连接 } + Constant.SEND_SUCCESS -> { + //TODO 发送成功 + } + Constant.SEND_FAILURE -> { + //TODO 发送失败 + } + Constant.RECEIVE_SUCCESS -> { + //TODO 接收成功 + } + Constant.RECEIVE_FAILURE -> { + //TODO 接收失败 + } } } } @@ -79,7 +120,8 @@ PageNavigationManager.addActivity(this) setupTopBarLayout() if (OtherUtils.isNetworkConnected(this)) { - initData(savedInstanceState) + initData() + initMap(savedInstanceState) initEvent() } else { "糟糕,没有接入任何网络~".show(this) @@ -93,7 +135,133 @@ titleView.text = "巡检" } - fun initData(savedInstanceState: Bundle?) { + fun initData() { + val userModelJson = SaveKeyValues.getValue(Constant.USER_OBJECT, "") as String + userDataModel = gson.fromJson(userModelJson, UserInfoModel::class.java).data!! + //蓝牙搜索监听 + BroadcastManager.instance.addAction( + arrayOf( + BluetoothDevice.ACTION_FOUND, + BluetoothAdapter.ACTION_DISCOVERY_FINISHED + ), object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + when (intent?.action) { + BluetoothDevice.ACTION_FOUND -> { + val device = + intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE) + lateinit var bean: BlueToothBean + device?.let { + bean = if (it.name == null || it.name == "") { + BlueToothBean("设备名未知", it.address) + } else { + BlueToothBean(device.name, device.address) + } + } + if (bean.blueToothName != "设备名未知") { + if (blueToothBeans.size == 0) { + blueToothBeans.add(bean) + blueToothDevices.add(device) + } else { + //0表示未添加到list的新设备,1表示已经扫描并添加到list的设备 + var judge = 0 + for (it in blueToothBeans) { + if (it.blueToothAddress == bean.blueToothAddress) { + judge = 1 + break + } + } + if (judge == 0) { + blueToothBeans.add(bean) + blueToothDevices.add(device) + } + } + } + } + BluetoothAdapter.ACTION_DISCOVERY_FINISHED -> { + OtherUtils.dismissLoadingDialog() + bluetoothButton.isEnabled = true + Log.d(Tag, gson.toJson(blueToothBeans)) + val sheetBuilder = + QMUIBottomSheet.BottomListSheetBuilder(this@MapActivity) + sheetBuilder.setTitle("请选择要连接的设备") + blueToothBeans.forEach { + sheetBuilder.addItem(it.blueToothName) + } + sheetBuilder.setGravityCenter(true).setAddCancelBtn(true) + .setOnSheetItemClickListener { dialog, _, position, _ -> + dialog.dismiss() + //连接点击的设备 + startConnectDevice( + blueToothBeans[position].blueToothName, + blueToothDevices[position] + ) + }.build().show() + } + } + } + }) + } + + private fun startConnectDevice(deviceName: String, bluetoothDevice: BluetoothDevice?) { + if (bluetoothDevice == null) { + Log.d(Tag, "startConnectDevice-->bluetoothDevice == null") + return + } + this.currentDevice = bluetoothDevice + if (bluetoothAdapter == null) { + Log.d(Tag, "startConnectDevice-->bluetoothAdapter == null") + return + } + OtherUtils.showLoadingDialog(this, "正在连接[$deviceName]...") + + } + +// private fun manageConnectSendReceiveData(bluetoothSocket: BluetoothSocket) { +// connectedThread = ConnectedThread(bluetoothSocket) +// connectedThread!!.start() +// connectedThread!!.setOnSendReceiveDataListener(object : +// ConnectedThread.OnSendReceiveDataListener { +// override fun onSendDataSuccess(data: ByteArray?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.SEND_SUCCESS +// message.obj = "发送数据成功,长度" + data!!.size + "->" + ConnectedThread.bytes2HexString( +// data, +// data.size +// ) +// weakReferenceHandler.sendMessage(message) +// } +// +// override fun onSendDataError(data: ByteArray?, errorMsg: String?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.SEND_FAILURE +// message.obj = "发送数据出错,长度" + data!!.size + "->" + ConnectedThread.bytes2HexString( +// data, +// data.size +// ) +// weakReferenceHandler.sendMessage(message) +// } +// +// override fun onReceiveDataSuccess(buffer: ByteArray?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.RECEIVE_SUCCESS +// message.obj = +// "成功接收数据,长度" + buffer!!.size + "->" + ConnectedThread.bytes2HexString( +// buffer, +// buffer.size +// ) +// weakReferenceHandler.sendMessage(message) +// } +// +// override fun onReceiveDataError(errorMsg: String?) { +// val message = weakReferenceHandler.obtainMessage() +// message.what = Constant.RECEIVE_FAILURE +// message.obj = "接收数据出错:$errorMsg" +// weakReferenceHandler.sendMessage(message) +// } +// }) +// } + + private fun initMap(savedInstanceState: Bundle?) { mapView.onCreate(savedInstanceState) aMap = mapView.map val uiSettings = aMap.uiSettings @@ -102,35 +270,19 @@ //显示定位小蓝点 locationStyle = MyLocationStyle() locationStyle.showMyLocation(true)//设置是否显示定位小蓝点 - locationStyle.strokeColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的边框颜色 - locationStyle.radiusFillColor(Color.parseColor("#A2DBFA"))//设置定位蓝点精度圆圈的填充颜色 aMap.myLocationStyle = locationStyle aMap.isMyLocationEnabled = true aMap.addOnMyLocationChangeListener { - Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]") + // Log.d(Tag, "[" + it.longitude + "," + it.latitude + "]") } } fun initEvent() { leftBackView.setOnClickListener { this.finish() } + //地图左边五个按钮事件 + menuButtonEvent() //需要判断是否是上次未完的巡检 -// selectInspectMode() - - //判断蓝牙的状态 - val blueAdapter = BluetoothAdapter.getDefaultAdapter() - if (blueAdapter == null) { - "该设备不支持蓝牙,无法连接".show(this) - } else { - if (blueAdapter.isEnabled) { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) - bluetoothButton.setOnClickListener { - //搜索蓝牙 - } - } else { - bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) - //打开 - } - } + selectInspectMode() newEventButton.setChangeAlphaWhenPress(true) newEventButton.setOnClickListener { @@ -149,29 +301,149 @@ intent.putExtra("isWarning", false) } } - startActivity(intent) + //获取当前定位 + LocationHelper.obtainCurrentLocation(this@MapActivity, + object : ILocationListener { + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + intent.putExtra("inspectionId", inspectionId) + intent.putExtra("inspectionName", inspectionName) + intent.putExtra("longitude", aMapLocation.longitude) + intent.putExtra("latitude", aMapLocation.latitude) + startActivity(intent) + } + }) } }) .build().show() } } + private fun menuButtonEvent() { + //判断蓝牙的状态 + bluetoothAdapter = BluetoothAdapter.getDefaultAdapter() + if (bluetoothAdapter == null) { + "该设备不支持蓝牙,无法连接".show(this) + return + } + if (bluetoothAdapter!!.isEnabled) { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_enable) + bluetoothButton.setOnClickListener { + if (currentDevice == null) { + //搜索蓝牙 + searchDevice() + } else { + if (currentDevice!!.bondState == BluetoothDevice.BOND_NONE) { + searchDevice() + } else { + //断开连接 + currentValueView.text = "--" + settingsValueView.text = "--" + maxValueView.text = "--" + deviceStatusView.text = "设备编号:未连接" + "设备已断开连接".show(this) + } + } + } + } else { + bluetoothButton.setImageResource(R.drawable.ic_bluetooth_disabled) + //打开 + startActivity(Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)) + } + } + + private fun searchDevice() { + //搜索蓝牙 + if (bluetoothAdapter!!.isDiscovering) { + //搜索中不让再次搜索 + bluetoothButton.isEnabled = false + return + } + OtherUtils.showLoadingDialog(this, "设备搜索中..."); + bluetoothAdapter!!.startDiscovery() + } + private fun selectInspectMode() { - InputDialog.Builder().setContext(this) - .setTitle("请输入巡检标签") - .setHintText("如:xxx区间巡检") - .setNegativeButton("放弃") - .setPositiveButton("开始巡检") - .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener { - override fun onConfirmClick(input: String) { + val currentInspection = SaveKeyValues.getValue(Constant.INSPECTION_OBJECT, "") as String + if (currentInspection != "") { + inspectionBean = gson.fromJson(currentInspection, InspectionBean::class.java) + /** + * 获取最近的Task + * */ + if (OtherUtils.isNetworkConnected(this)) { + val taskViewModel = ViewModelProvider(this).get(TaskRecordViewModel::class.java) + taskViewModel.searchByInspection(inspectionBean.serverMainId) + taskViewModel.resultModel.observe(this, Observer { + dataBeans = it.data!!.list!! + }) + } else { + dataBeans = + DataBaseManager.instance.queryTaskByInspection(inspectionBean.serverMainId)!! + } + "欢迎回来,继续未完成巡检".show(this) + } else { + InputDialog.Builder().setContext(this) + .setTitle("请输入巡检标签") + .setHintText("如:xxx区间巡检") + .setNegativeButton("放弃") + .setPositiveButton("开始巡检") + .setOnDialogClickListener(object : InputDialog.OnDialogButtonClickListener { + override fun onConfirmClick(input: String) { + val currentTimeMillis = System.currentTimeMillis() + //新建巡检,inspectionId必为空 + inspectionId = currentTimeMillis.id() + inspectionName = input - } + inspectionBean = + InspectionBean( + System.currentTimeMillis(), + inspectionId, + inspectionName, + TimeOrDateUtil.timestampToCompleteDate(currentTimeMillis), + "", + TimeOrDateUtil.timestampToDate(currentTimeMillis), + 0.0, + 0.0, + 0.0, + 0.0, + "", + userDataModel.name + ) + startInspection() + } - override fun onCancelClick() { - finish() + override fun onCancelClick() { + finish() + } + }) + .build().show() + } + } + + /** + * 开始巡检,获取坐标,开定时器,和设备交互 + * */ + fun startInspection() { + LocationHelper.obtainCurrentLocation(this, object : ILocationListener { + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + routes.add(aMapLocation) + inspectionBean.routes = gson.toJson(routes) + if (inspectionBean.startLng == 0.0) { + inspectionBean.startLng = aMapLocation.longitude + inspectionBean.startLat = aMapLocation.latitude } - }) - .build().show() + } + }) + updateCurrentInspection() + // 和设备通信 + communicateWithDevice(Constant.OPEN_TRANSFER_COMMAND) + } + + private fun updateCurrentInspection() { + SaveKeyValues.putValue(Constant.INSPECTION_OBJECT, gson.toJson(inspectionBean)) + } + + private fun communicateWithDevice(cmd: ByteArray) { + } override fun onResume() { diff --git a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt index de3eb19..8887a06 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/NewEventActivity.kt @@ -11,12 +11,12 @@ import com.casic.birmm.inspect.R import com.casic.birmm.inspect.adapter.ImageGridViewAdapter import com.casic.birmm.inspect.base.BaseViewModelActivity -import com.casic.birmm.inspect.extensions.combineImagePath -import com.casic.birmm.inspect.extensions.filterString -import com.casic.birmm.inspect.extensions.show +import com.casic.birmm.inspect.extensions.* +import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.* import com.casic.birmm.inspect.vm.NewEventViewModel import com.casic.birmm.inspect.vm.UploadImageViewModel +import com.google.gson.Gson import com.gyf.immersionbar.ImmersionBar import com.luck.picture.lib.PictureSelector import com.luck.picture.lib.config.PictureConfig @@ -33,6 +33,13 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private lateinit var imageAdapter: ImageGridViewAdapter private var isWarning: Boolean = true + private lateinit var inspectionId: String + private lateinit var inspectionName: String + private var longitude: Double = 0.0 + private var latitude: Double = 0.0 + private var data = -1.0//泄露默认值 + private lateinit var type: String + private lateinit var userModel: UserInfoModel override fun createViewModelByClass(): Class? = NewEventViewModel::class.java @@ -46,7 +53,13 @@ override fun initData() { uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) + val userModelJson = SaveKeyValues.getValue(Constant.USER_OBJECT, "") as String + userModel = Gson().fromJson(userModelJson, UserInfoModel::class.java) isWarning = intent.getBooleanExtra("isWarning", true) + inspectionId = intent.getStringExtra("inspectionId")!! + inspectionName = intent.getStringExtra("inspectionName")!! + longitude = intent.getDoubleExtra("longitude", 0.0) + latitude = intent.getDoubleExtra("latitude", 0.0) if (isWarning) { titleView.text = "报警事件记录" inspectCardView.visibility = View.VISIBLE @@ -159,9 +172,42 @@ "最大泄露值还未填写,请检查".show(this) return@setOnClickListener } + type = "报警事件" + data = inspectNumberView.text.toString().filterString().toDouble() + } else { + type = "自定义事件" } - + //随机生成主键 + userModel.data!!.name?.let { user -> + viewModel.addEventTask( + "t".id(), + inspectionId, + inspectionName, + eventCreateTimeView.text.toString(), + type, + longitude, + latitude, + data, + imagePaths.reformat(), + eventEditTextView.text.toString().filterString(), + user + ) + } } + viewModel.resultModel.observe(this, Observer { model -> + if (model.code == 200) { + "保存成功".show(this) + finish() + } + }) + viewModel.loadState.observe(this, Observer { + when (it) { + is LoadState.Loading -> { + OtherUtils.showLoadingDialog(this, "保存中,请稍后...") + } + else -> OtherUtils.dismissLoadingDialog() + } + }) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/EventQueryViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/EventQueryViewModel.kt index 7dcf628..59bf212 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/EventQueryViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/EventQueryViewModel.kt @@ -3,12 +3,12 @@ import androidx.lifecycle.MutableLiveData import com.casic.birmm.inspect.base.BaseViewModel import com.casic.birmm.inspect.extensions.launch -import com.casic.birmm.inspect.model.EventModel +import com.casic.birmm.inspect.model.EventListModel import com.casic.birmm.inspect.utils.LoadState import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager class EventQueryViewModel : BaseViewModel() { - val resultModel = MutableLiveData() + val resultModel = MutableLiveData() fun queryEvent(keywords: String, startTime: String, endTime: String, pageIndex: Int) = launch({ diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/InspectionQueryViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/InspectionQueryViewModel.kt index 4c7c302..ea87162 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/InspectionQueryViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/InspectionQueryViewModel.kt @@ -3,12 +3,12 @@ import androidx.lifecycle.MutableLiveData import com.casic.birmm.inspect.base.BaseViewModel import com.casic.birmm.inspect.extensions.launch -import com.casic.birmm.inspect.model.InspectModel +import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.utils.LoadState import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager class InspectionQueryViewModel : BaseViewModel() { - val resultModel = MutableLiveData() + val resultModel = MutableLiveData() fun queryInspect(keywords: String, startTime: String, endTime: String, pageIndex: Int) = launch({ diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/NewEventViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/NewEventViewModel.kt index dd145f4..beb24eb 100644 --- a/app/src/main/java/com/casic/birmm/inspect/vm/NewEventViewModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/vm/NewEventViewModel.kt @@ -1,6 +1,26 @@ package com.casic.birmm.inspect.vm +import androidx.lifecycle.MutableLiveData import com.casic.birmm.inspect.base.BaseViewModel +import com.casic.birmm.inspect.extensions.launch +import com.casic.birmm.inspect.model.ActionResultModel +import com.casic.birmm.inspect.utils.LoadState +import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager class NewEventViewModel : BaseViewModel() { + val resultModel = MutableLiveData() + + fun addEventTask( + id: String, inspectionId: String, name: String, createTime: String, type: String, + lng: Double, lat: Double, data: Double, images: String, description: String, user: String + ) = launch({ + loadState.value = LoadState.Loading + resultModel.value = RetrofitServiceManager.addEventTask( + id, inspectionId, name, createTime, + type, lng, lat, data, images, description, user + ) + loadState.value = LoadState.Success + }, { + loadState.value = LoadState.Fail + }) } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_new_event.xml b/app/src/main/res/layout/activity_new_event.xml index 50e4933..7f9559c 100644 --- a/app/src/main/res/layout/activity_new_event.xml +++ b/app/src/main/res/layout/activity_new_event.xml @@ -102,7 +102,10 @@ android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:background="@drawable/bg_layout_white" + android:gravity="end" android:hint="如:9999" + android:inputType="numberDecimal" + android:maxLength="9" android:padding="5dp" android:textColor="@color/black" android:textColorHint="@color/hintColor" diff --git a/build.gradle b/build.gradle index 500f939..b2bfc04 100644 --- a/build.gradle +++ b/build.gradle @@ -10,6 +10,7 @@ dependencies { classpath 'com.android.tools.build:gradle:3.6.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files