diff --git a/app/build.gradle b/app/build.gradle index a4224f0..42722ca 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -77,4 +77,9 @@ //高德导航 implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' implementation 'com.amap.api:location:5.3.1' + //日期选择器 + implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' + } diff --git a/app/build.gradle b/app/build.gradle index a4224f0..42722ca 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -77,4 +77,9 @@ //高德导航 implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' implementation 'com.amap.api:location:5.3.1' + //日期选择器 + implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' + } diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt new file mode 100644 index 0000000..ee3685d --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -0,0 +1,6 @@ +package com.casic.app.smartwell.extensions + +import java.text.SimpleDateFormat +import java.util.* + +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a4224f0..42722ca 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -77,4 +77,9 @@ //高德导航 implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' implementation 'com.amap.api:location:5.3.1' + //日期选择器 + implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' + } diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt new file mode 100644 index 0000000..ee3685d --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -0,0 +1,6 @@ +package com.casic.app.smartwell.extensions + +import java.text.SimpleDateFormat +import java.util.* + +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt new file mode 100644 index 0000000..6911fd1 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt @@ -0,0 +1,29 @@ +package com.casic.app.smartwell.model + +class AlarmContentTypeModel { + /** + * code : 200 + * data : {"list":[{"deviceType":"1","alarmType":"1","name":"井盖开盖报警","value":"1"},{"deviceType":"2","alarmType":"1","name":"液位超限","value":"4"},{"deviceType":"3","alarmType":"1","name":"有害气体超标","value":"10"},{"deviceType":"5","alarmType":"1","name":"温湿度超限","value":"11"},{"deviceType":"6","alarmType":"1","name":"疑似开挖","value":"12"},{"deviceType":"4","alarmType":"1","name":"浓度超限","value":"13"},{"deviceType":"8","alarmType":"1","name":"噪声超限","value":"22"}]} + * message : success + */ + var code = 0 + var data: DataBean? = null + var message: String? = null + + class DataBean { + var list: List? = null + + class ListBean { + /** + * deviceType : 1 + * alarmType : 1 + * name : 井盖开盖报警 + * value : 1 + */ + var deviceType: String? = null + var alarmType: String? = null + var name: String? = null + var value: String? = null + } + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a4224f0..42722ca 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -77,4 +77,9 @@ //高德导航 implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' implementation 'com.amap.api:location:5.3.1' + //日期选择器 + implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' + } diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt new file mode 100644 index 0000000..ee3685d --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -0,0 +1,6 @@ +package com.casic.app.smartwell.extensions + +import java.text.SimpleDateFormat +import java.util.* + +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt new file mode 100644 index 0000000..6911fd1 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt @@ -0,0 +1,29 @@ +package com.casic.app.smartwell.model + +class AlarmContentTypeModel { + /** + * code : 200 + * data : {"list":[{"deviceType":"1","alarmType":"1","name":"井盖开盖报警","value":"1"},{"deviceType":"2","alarmType":"1","name":"液位超限","value":"4"},{"deviceType":"3","alarmType":"1","name":"有害气体超标","value":"10"},{"deviceType":"5","alarmType":"1","name":"温湿度超限","value":"11"},{"deviceType":"6","alarmType":"1","name":"疑似开挖","value":"12"},{"deviceType":"4","alarmType":"1","name":"浓度超限","value":"13"},{"deviceType":"8","alarmType":"1","name":"噪声超限","value":"22"}]} + * message : success + */ + var code = 0 + var data: DataBean? = null + var message: String? = null + + class DataBean { + var list: List? = null + + class ListBean { + /** + * deviceType : 1 + * alarmType : 1 + * name : 井盖开盖报警 + * value : 1 + */ + var deviceType: String? = null + var alarmType: String? = null + var name: String? = null + var value: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt new file mode 100644 index 0000000..1fefd20 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt @@ -0,0 +1,25 @@ +package com.casic.app.smartwell.model + +class OrderStatusModel { + /** + * code : 200 + * data : [{"name":"待处理","id":"84","value":"0"},{"name":"待确认","id":"85","value":"1"},{"name":"处理中","id":"86","value":"2"},{"name":"已完成","id":"87","value":"3"},{"name":"已取消","id":"93","value":"4"}] + * message : 请求成功 + * success : true + */ + var code = 0 + var message: String? = null + var success = false + var data: List? = null + + class DataBean { + /** + * name : 待处理 + * id : 84 + * value : 0 + */ + var name: String? = null + var id: String? = null + var value: String? = null + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a4224f0..42722ca 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -77,4 +77,9 @@ //高德导航 implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' implementation 'com.amap.api:location:5.3.1' + //日期选择器 + implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' + } diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt new file mode 100644 index 0000000..ee3685d --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -0,0 +1,6 @@ +package com.casic.app.smartwell.extensions + +import java.text.SimpleDateFormat +import java.util.* + +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt new file mode 100644 index 0000000..6911fd1 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt @@ -0,0 +1,29 @@ +package com.casic.app.smartwell.model + +class AlarmContentTypeModel { + /** + * code : 200 + * data : {"list":[{"deviceType":"1","alarmType":"1","name":"井盖开盖报警","value":"1"},{"deviceType":"2","alarmType":"1","name":"液位超限","value":"4"},{"deviceType":"3","alarmType":"1","name":"有害气体超标","value":"10"},{"deviceType":"5","alarmType":"1","name":"温湿度超限","value":"11"},{"deviceType":"6","alarmType":"1","name":"疑似开挖","value":"12"},{"deviceType":"4","alarmType":"1","name":"浓度超限","value":"13"},{"deviceType":"8","alarmType":"1","name":"噪声超限","value":"22"}]} + * message : success + */ + var code = 0 + var data: DataBean? = null + var message: String? = null + + class DataBean { + var list: List? = null + + class ListBean { + /** + * deviceType : 1 + * alarmType : 1 + * name : 井盖开盖报警 + * value : 1 + */ + var deviceType: String? = null + var alarmType: String? = null + var name: String? = null + var value: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt new file mode 100644 index 0000000..1fefd20 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt @@ -0,0 +1,25 @@ +package com.casic.app.smartwell.model + +class OrderStatusModel { + /** + * code : 200 + * data : [{"name":"待处理","id":"84","value":"0"},{"name":"待确认","id":"85","value":"1"},{"name":"处理中","id":"86","value":"2"},{"name":"已完成","id":"87","value":"3"},{"name":"已取消","id":"93","value":"4"}] + * message : 请求成功 + * success : true + */ + var code = 0 + var message: String? = null + var success = false + var data: List? = null + + class DataBean { + /** + * name : 待处理 + * id : 84 + * value : 0 + */ + var name: String? = null + var id: String? = null + var value: String? = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt index 91ad645..8d23f3e 100644 --- a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt @@ -3,98 +3,99 @@ class WorkOrderDetailModel { /** * code : 200 - * message : success - * data : {"id":1,"wellId":1,"wellCode":"N51F131","wellName":"闸井名称","deep":32,"devcode":"41201802100","position":"宋郎路","coordinateX":"39.899999999","coordinateY":"116.70000000","latBaidu":"39.901694","lngBaidu":"116.709315","latGaode":"","lngGaode":"","alarmId":"1","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","deptid":"1","deptName":"一分公司","jobCode":"201902340484","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","firstState":"现场情况描述","firstStatePhotos":"现场情况图片","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00","handleMessage":"维护情况描述","handlePhotos":"维护图片","flow":[{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}],"editable":"1"} + * data : [{"firstState":"","alarmContent":22,"deptName":"燃气集团总公司","jobStatus":"0","handleJobPerson":"","alarmContentName":"噪声超限","shouldGetTime":"","firstStatePhotos":"","wellCode":"test001","deptid":"24","alarmTypeName":"数据异常","jobCode":"ZSCX202009070001","jobBelongTo":"","jobFlag":"","confirmJobPerson":"","confirmJobTime":"","jobStatusName":"待处理","alarmValue":"4000.86","alarmId":"11243","alarmLevel":0,"handleJobTime":"","tel":"","id":"1232178","wellId":"4453","jobType":"1","flow":[],"editable":1,"alarmTime":"2019-10-17 14:22:00","handleMessage":"","alarmMessage":"噪声超限","staff":"吴甘牛","handlePhotos":"","getJobTime":"","getJobPerson":"","shouldHandleTime":"","jobId":"1232178","alarmType":"1","alarmStatus":"1","devcode":"212020000a","createTime":"2020-09-07 09:30:18","position":"test001位置"}] + * message : 请求成功 + * success : true */ var code = 0 var message: String? = null - var data: DataBean? = null + var success = false + var data: List? = null class DataBean { /** - * id : 1 - * wellId : 1 - * wellCode : N51F131 - * wellName : 闸井名称 - * deep : 32 - * devcode : 41201802100 - * position : 宋郎路 - * coordinateX : 39.899999999 - * coordinateY : 116.70000000 - * latBaidu : 39.901694 - * lngBaidu : 116.709315 - * latGaode : - * lngGaode : - * alarmId : 1 - * alarmType : 1 - * alarmTypeName : 数据异常 - * alarmContent : 1 - * alarmContentName : 液位超限 - * deptid : 1 - * deptName : 一分公司 - * jobCode : 201902340484 + * firstState : + * alarmContent : 22 + * deptName : 燃气集团总公司 * jobStatus : 0 + * handleJobPerson : + * alarmContentName : 噪声超限 + * shouldGetTime : + * firstStatePhotos : + * wellCode : test001 + * deptid : 24 + * alarmTypeName : 数据异常 + * jobCode : ZSCX202009070001 + * jobBelongTo : + * jobFlag : + * confirmJobPerson : + * confirmJobTime : * jobStatusName : 待处理 - * createTime : 2018-12-27 00:00:00 - * getJobPerson : 1321321 - * getJobTime : 2018-12-27 00:00:00 - * firstState : 现场情况描述 - * firstStatePhotos : 现场情况图片 - * confirmJobPerson : 1321321 - * confirmJobTime : 2018-12-27 00:00:00 - * handleJobPerson : 1321321 - * handleJobTime : 2018-12-27 00:00:00 - * handleMessage : 维护情况描述 - * handlePhotos : 维护图片 - * flow : [{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}] + * alarmValue : 4000.86 + * alarmId : 11243 + * alarmLevel : 0 + * handleJobTime : + * tel : + * id : 1232178 + * wellId : 4453 + * jobType : 1 + * flow : [] * editable : 1 + * alarmTime : 2019-10-17 14:22:00 + * handleMessage : + * alarmMessage : 噪声超限 + * staff : 吴甘牛 + * handlePhotos : + * getJobTime : + * getJobPerson : + * shouldHandleTime : + * jobId : 1232178 + * alarmType : 1 + * alarmStatus : 1 + * devcode : 212020000a + * createTime : 2020-09-07 09:30:18 + * position : test001位置 */ - var id = 0 - var wellId = 0 - var wellCode: String? = null - var wellName: String? = null - var deep = 0 - var devcode: String? = null - var position: String? = null - var coordinateX: String? = null - var coordinateY: String? = null - var latBaidu: String? = null - var lngBaidu: String? = null - var latGaode: String? = null - var lngGaode: String? = null - var alarmId: String? = null - var alarmType: String? = null - var alarmTypeName: String? = null - var alarmContent: String? = null - var alarmContentName: String? = null - var deptid: String? = null - var deptName: String? = null - var jobCode: String? = null - var jobStatus: String? = null - var jobStatusName: String? = null - var createTime: String? = null - var getJobPerson: String? = null - var getJobTime: String? = null var firstState: String? = null + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null var firstStatePhotos: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null var confirmJobPerson: String? = null var confirmJobTime: String? = null - var handleJobPerson: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel = 0 var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null var handleMessage: String? = null + var alarmMessage: String? = null + var staff: String? = null var handlePhotos: String? = null - var editable: String? = null - var flow: List? = null - - class FlowBean { - /** - * from : 张三 - * to : 李四 - * time : 2019-02-22-12:00:00 - */ - var from: String? = null - var to: String? = null - var time: String? = null - } + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + var flow: List<*>? = null } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a4224f0..42722ca 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -77,4 +77,9 @@ //高德导航 implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' implementation 'com.amap.api:location:5.3.1' + //日期选择器 + implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' + } diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt new file mode 100644 index 0000000..ee3685d --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -0,0 +1,6 @@ +package com.casic.app.smartwell.extensions + +import java.text.SimpleDateFormat +import java.util.* + +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt new file mode 100644 index 0000000..6911fd1 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt @@ -0,0 +1,29 @@ +package com.casic.app.smartwell.model + +class AlarmContentTypeModel { + /** + * code : 200 + * data : {"list":[{"deviceType":"1","alarmType":"1","name":"井盖开盖报警","value":"1"},{"deviceType":"2","alarmType":"1","name":"液位超限","value":"4"},{"deviceType":"3","alarmType":"1","name":"有害气体超标","value":"10"},{"deviceType":"5","alarmType":"1","name":"温湿度超限","value":"11"},{"deviceType":"6","alarmType":"1","name":"疑似开挖","value":"12"},{"deviceType":"4","alarmType":"1","name":"浓度超限","value":"13"},{"deviceType":"8","alarmType":"1","name":"噪声超限","value":"22"}]} + * message : success + */ + var code = 0 + var data: DataBean? = null + var message: String? = null + + class DataBean { + var list: List? = null + + class ListBean { + /** + * deviceType : 1 + * alarmType : 1 + * name : 井盖开盖报警 + * value : 1 + */ + var deviceType: String? = null + var alarmType: String? = null + var name: String? = null + var value: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt new file mode 100644 index 0000000..1fefd20 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt @@ -0,0 +1,25 @@ +package com.casic.app.smartwell.model + +class OrderStatusModel { + /** + * code : 200 + * data : [{"name":"待处理","id":"84","value":"0"},{"name":"待确认","id":"85","value":"1"},{"name":"处理中","id":"86","value":"2"},{"name":"已完成","id":"87","value":"3"},{"name":"已取消","id":"93","value":"4"}] + * message : 请求成功 + * success : true + */ + var code = 0 + var message: String? = null + var success = false + var data: List? = null + + class DataBean { + /** + * name : 待处理 + * id : 84 + * value : 0 + */ + var name: String? = null + var id: String? = null + var value: String? = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt index 91ad645..8d23f3e 100644 --- a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt @@ -3,98 +3,99 @@ class WorkOrderDetailModel { /** * code : 200 - * message : success - * data : {"id":1,"wellId":1,"wellCode":"N51F131","wellName":"闸井名称","deep":32,"devcode":"41201802100","position":"宋郎路","coordinateX":"39.899999999","coordinateY":"116.70000000","latBaidu":"39.901694","lngBaidu":"116.709315","latGaode":"","lngGaode":"","alarmId":"1","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","deptid":"1","deptName":"一分公司","jobCode":"201902340484","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","firstState":"现场情况描述","firstStatePhotos":"现场情况图片","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00","handleMessage":"维护情况描述","handlePhotos":"维护图片","flow":[{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}],"editable":"1"} + * data : [{"firstState":"","alarmContent":22,"deptName":"燃气集团总公司","jobStatus":"0","handleJobPerson":"","alarmContentName":"噪声超限","shouldGetTime":"","firstStatePhotos":"","wellCode":"test001","deptid":"24","alarmTypeName":"数据异常","jobCode":"ZSCX202009070001","jobBelongTo":"","jobFlag":"","confirmJobPerson":"","confirmJobTime":"","jobStatusName":"待处理","alarmValue":"4000.86","alarmId":"11243","alarmLevel":0,"handleJobTime":"","tel":"","id":"1232178","wellId":"4453","jobType":"1","flow":[],"editable":1,"alarmTime":"2019-10-17 14:22:00","handleMessage":"","alarmMessage":"噪声超限","staff":"吴甘牛","handlePhotos":"","getJobTime":"","getJobPerson":"","shouldHandleTime":"","jobId":"1232178","alarmType":"1","alarmStatus":"1","devcode":"212020000a","createTime":"2020-09-07 09:30:18","position":"test001位置"}] + * message : 请求成功 + * success : true */ var code = 0 var message: String? = null - var data: DataBean? = null + var success = false + var data: List? = null class DataBean { /** - * id : 1 - * wellId : 1 - * wellCode : N51F131 - * wellName : 闸井名称 - * deep : 32 - * devcode : 41201802100 - * position : 宋郎路 - * coordinateX : 39.899999999 - * coordinateY : 116.70000000 - * latBaidu : 39.901694 - * lngBaidu : 116.709315 - * latGaode : - * lngGaode : - * alarmId : 1 - * alarmType : 1 - * alarmTypeName : 数据异常 - * alarmContent : 1 - * alarmContentName : 液位超限 - * deptid : 1 - * deptName : 一分公司 - * jobCode : 201902340484 + * firstState : + * alarmContent : 22 + * deptName : 燃气集团总公司 * jobStatus : 0 + * handleJobPerson : + * alarmContentName : 噪声超限 + * shouldGetTime : + * firstStatePhotos : + * wellCode : test001 + * deptid : 24 + * alarmTypeName : 数据异常 + * jobCode : ZSCX202009070001 + * jobBelongTo : + * jobFlag : + * confirmJobPerson : + * confirmJobTime : * jobStatusName : 待处理 - * createTime : 2018-12-27 00:00:00 - * getJobPerson : 1321321 - * getJobTime : 2018-12-27 00:00:00 - * firstState : 现场情况描述 - * firstStatePhotos : 现场情况图片 - * confirmJobPerson : 1321321 - * confirmJobTime : 2018-12-27 00:00:00 - * handleJobPerson : 1321321 - * handleJobTime : 2018-12-27 00:00:00 - * handleMessage : 维护情况描述 - * handlePhotos : 维护图片 - * flow : [{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}] + * alarmValue : 4000.86 + * alarmId : 11243 + * alarmLevel : 0 + * handleJobTime : + * tel : + * id : 1232178 + * wellId : 4453 + * jobType : 1 + * flow : [] * editable : 1 + * alarmTime : 2019-10-17 14:22:00 + * handleMessage : + * alarmMessage : 噪声超限 + * staff : 吴甘牛 + * handlePhotos : + * getJobTime : + * getJobPerson : + * shouldHandleTime : + * jobId : 1232178 + * alarmType : 1 + * alarmStatus : 1 + * devcode : 212020000a + * createTime : 2020-09-07 09:30:18 + * position : test001位置 */ - var id = 0 - var wellId = 0 - var wellCode: String? = null - var wellName: String? = null - var deep = 0 - var devcode: String? = null - var position: String? = null - var coordinateX: String? = null - var coordinateY: String? = null - var latBaidu: String? = null - var lngBaidu: String? = null - var latGaode: String? = null - var lngGaode: String? = null - var alarmId: String? = null - var alarmType: String? = null - var alarmTypeName: String? = null - var alarmContent: String? = null - var alarmContentName: String? = null - var deptid: String? = null - var deptName: String? = null - var jobCode: String? = null - var jobStatus: String? = null - var jobStatusName: String? = null - var createTime: String? = null - var getJobPerson: String? = null - var getJobTime: String? = null var firstState: String? = null + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null var firstStatePhotos: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null var confirmJobPerson: String? = null var confirmJobTime: String? = null - var handleJobPerson: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel = 0 var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null var handleMessage: String? = null + var alarmMessage: String? = null + var staff: String? = null var handlePhotos: String? = null - var editable: String? = null - var flow: List? = null - - class FlowBean { - /** - * from : 张三 - * to : 李四 - * time : 2019-02-22-12:00:00 - */ - var from: String? = null - var to: String? = null - var time: String? = null - } + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + var flow: List<*>? = null } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index 91e8410..358ff17 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -23,6 +23,7 @@ ) } + const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 const val ORDER_TRANSFER_OK = 21 diff --git a/app/build.gradle b/app/build.gradle index a4224f0..42722ca 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -77,4 +77,9 @@ //高德导航 implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' implementation 'com.amap.api:location:5.3.1' + //日期选择器 + implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' + } diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt new file mode 100644 index 0000000..ee3685d --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -0,0 +1,6 @@ +package com.casic.app.smartwell.extensions + +import java.text.SimpleDateFormat +import java.util.* + +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt new file mode 100644 index 0000000..6911fd1 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt @@ -0,0 +1,29 @@ +package com.casic.app.smartwell.model + +class AlarmContentTypeModel { + /** + * code : 200 + * data : {"list":[{"deviceType":"1","alarmType":"1","name":"井盖开盖报警","value":"1"},{"deviceType":"2","alarmType":"1","name":"液位超限","value":"4"},{"deviceType":"3","alarmType":"1","name":"有害气体超标","value":"10"},{"deviceType":"5","alarmType":"1","name":"温湿度超限","value":"11"},{"deviceType":"6","alarmType":"1","name":"疑似开挖","value":"12"},{"deviceType":"4","alarmType":"1","name":"浓度超限","value":"13"},{"deviceType":"8","alarmType":"1","name":"噪声超限","value":"22"}]} + * message : success + */ + var code = 0 + var data: DataBean? = null + var message: String? = null + + class DataBean { + var list: List? = null + + class ListBean { + /** + * deviceType : 1 + * alarmType : 1 + * name : 井盖开盖报警 + * value : 1 + */ + var deviceType: String? = null + var alarmType: String? = null + var name: String? = null + var value: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt new file mode 100644 index 0000000..1fefd20 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt @@ -0,0 +1,25 @@ +package com.casic.app.smartwell.model + +class OrderStatusModel { + /** + * code : 200 + * data : [{"name":"待处理","id":"84","value":"0"},{"name":"待确认","id":"85","value":"1"},{"name":"处理中","id":"86","value":"2"},{"name":"已完成","id":"87","value":"3"},{"name":"已取消","id":"93","value":"4"}] + * message : 请求成功 + * success : true + */ + var code = 0 + var message: String? = null + var success = false + var data: List? = null + + class DataBean { + /** + * name : 待处理 + * id : 84 + * value : 0 + */ + var name: String? = null + var id: String? = null + var value: String? = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt index 91ad645..8d23f3e 100644 --- a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt @@ -3,98 +3,99 @@ class WorkOrderDetailModel { /** * code : 200 - * message : success - * data : {"id":1,"wellId":1,"wellCode":"N51F131","wellName":"闸井名称","deep":32,"devcode":"41201802100","position":"宋郎路","coordinateX":"39.899999999","coordinateY":"116.70000000","latBaidu":"39.901694","lngBaidu":"116.709315","latGaode":"","lngGaode":"","alarmId":"1","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","deptid":"1","deptName":"一分公司","jobCode":"201902340484","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","firstState":"现场情况描述","firstStatePhotos":"现场情况图片","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00","handleMessage":"维护情况描述","handlePhotos":"维护图片","flow":[{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}],"editable":"1"} + * data : [{"firstState":"","alarmContent":22,"deptName":"燃气集团总公司","jobStatus":"0","handleJobPerson":"","alarmContentName":"噪声超限","shouldGetTime":"","firstStatePhotos":"","wellCode":"test001","deptid":"24","alarmTypeName":"数据异常","jobCode":"ZSCX202009070001","jobBelongTo":"","jobFlag":"","confirmJobPerson":"","confirmJobTime":"","jobStatusName":"待处理","alarmValue":"4000.86","alarmId":"11243","alarmLevel":0,"handleJobTime":"","tel":"","id":"1232178","wellId":"4453","jobType":"1","flow":[],"editable":1,"alarmTime":"2019-10-17 14:22:00","handleMessage":"","alarmMessage":"噪声超限","staff":"吴甘牛","handlePhotos":"","getJobTime":"","getJobPerson":"","shouldHandleTime":"","jobId":"1232178","alarmType":"1","alarmStatus":"1","devcode":"212020000a","createTime":"2020-09-07 09:30:18","position":"test001位置"}] + * message : 请求成功 + * success : true */ var code = 0 var message: String? = null - var data: DataBean? = null + var success = false + var data: List? = null class DataBean { /** - * id : 1 - * wellId : 1 - * wellCode : N51F131 - * wellName : 闸井名称 - * deep : 32 - * devcode : 41201802100 - * position : 宋郎路 - * coordinateX : 39.899999999 - * coordinateY : 116.70000000 - * latBaidu : 39.901694 - * lngBaidu : 116.709315 - * latGaode : - * lngGaode : - * alarmId : 1 - * alarmType : 1 - * alarmTypeName : 数据异常 - * alarmContent : 1 - * alarmContentName : 液位超限 - * deptid : 1 - * deptName : 一分公司 - * jobCode : 201902340484 + * firstState : + * alarmContent : 22 + * deptName : 燃气集团总公司 * jobStatus : 0 + * handleJobPerson : + * alarmContentName : 噪声超限 + * shouldGetTime : + * firstStatePhotos : + * wellCode : test001 + * deptid : 24 + * alarmTypeName : 数据异常 + * jobCode : ZSCX202009070001 + * jobBelongTo : + * jobFlag : + * confirmJobPerson : + * confirmJobTime : * jobStatusName : 待处理 - * createTime : 2018-12-27 00:00:00 - * getJobPerson : 1321321 - * getJobTime : 2018-12-27 00:00:00 - * firstState : 现场情况描述 - * firstStatePhotos : 现场情况图片 - * confirmJobPerson : 1321321 - * confirmJobTime : 2018-12-27 00:00:00 - * handleJobPerson : 1321321 - * handleJobTime : 2018-12-27 00:00:00 - * handleMessage : 维护情况描述 - * handlePhotos : 维护图片 - * flow : [{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}] + * alarmValue : 4000.86 + * alarmId : 11243 + * alarmLevel : 0 + * handleJobTime : + * tel : + * id : 1232178 + * wellId : 4453 + * jobType : 1 + * flow : [] * editable : 1 + * alarmTime : 2019-10-17 14:22:00 + * handleMessage : + * alarmMessage : 噪声超限 + * staff : 吴甘牛 + * handlePhotos : + * getJobTime : + * getJobPerson : + * shouldHandleTime : + * jobId : 1232178 + * alarmType : 1 + * alarmStatus : 1 + * devcode : 212020000a + * createTime : 2020-09-07 09:30:18 + * position : test001位置 */ - var id = 0 - var wellId = 0 - var wellCode: String? = null - var wellName: String? = null - var deep = 0 - var devcode: String? = null - var position: String? = null - var coordinateX: String? = null - var coordinateY: String? = null - var latBaidu: String? = null - var lngBaidu: String? = null - var latGaode: String? = null - var lngGaode: String? = null - var alarmId: String? = null - var alarmType: String? = null - var alarmTypeName: String? = null - var alarmContent: String? = null - var alarmContentName: String? = null - var deptid: String? = null - var deptName: String? = null - var jobCode: String? = null - var jobStatus: String? = null - var jobStatusName: String? = null - var createTime: String? = null - var getJobPerson: String? = null - var getJobTime: String? = null var firstState: String? = null + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null var firstStatePhotos: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null var confirmJobPerson: String? = null var confirmJobTime: String? = null - var handleJobPerson: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel = 0 var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null var handleMessage: String? = null + var alarmMessage: String? = null + var staff: String? = null var handlePhotos: String? = null - var editable: String? = null - var flow: List? = null - - class FlowBean { - /** - * from : 张三 - * to : 李四 - * time : 2019-02-22-12:00:00 - */ - var from: String? = null - var to: String? = null - var time: String? = null - } + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + var flow: List<*>? = null } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index 91e8410..358ff17 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -23,6 +23,7 @@ ) } + const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 const val ORDER_TRANSFER_OK = 21 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index cd3b564..9b64524 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -107,7 +107,7 @@ ): WorkOrderDetailModel /** - * 转单 + * 接单 */ @FormUrlEncoded @POST("/job/getJob") @@ -117,6 +117,22 @@ ): CommonResultModel /** + * 告警内容列表 + * */ + @GET("/alarm/contentType") + suspend fun obtainAlarmContentType( + @Header("token") token: String + ): AlarmContentTypeModel + + /** + * 工单状态 + * */ + @GET("/dict/code/jobStatus") + suspend fun obtainOrderStatus( + @Header("token") token: String + ): OrderStatusModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/build.gradle b/app/build.gradle index a4224f0..42722ca 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -77,4 +77,9 @@ //高德导航 implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' implementation 'com.amap.api:location:5.3.1' + //日期选择器 + implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' + } diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt new file mode 100644 index 0000000..ee3685d --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -0,0 +1,6 @@ +package com.casic.app.smartwell.extensions + +import java.text.SimpleDateFormat +import java.util.* + +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt new file mode 100644 index 0000000..6911fd1 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt @@ -0,0 +1,29 @@ +package com.casic.app.smartwell.model + +class AlarmContentTypeModel { + /** + * code : 200 + * data : {"list":[{"deviceType":"1","alarmType":"1","name":"井盖开盖报警","value":"1"},{"deviceType":"2","alarmType":"1","name":"液位超限","value":"4"},{"deviceType":"3","alarmType":"1","name":"有害气体超标","value":"10"},{"deviceType":"5","alarmType":"1","name":"温湿度超限","value":"11"},{"deviceType":"6","alarmType":"1","name":"疑似开挖","value":"12"},{"deviceType":"4","alarmType":"1","name":"浓度超限","value":"13"},{"deviceType":"8","alarmType":"1","name":"噪声超限","value":"22"}]} + * message : success + */ + var code = 0 + var data: DataBean? = null + var message: String? = null + + class DataBean { + var list: List? = null + + class ListBean { + /** + * deviceType : 1 + * alarmType : 1 + * name : 井盖开盖报警 + * value : 1 + */ + var deviceType: String? = null + var alarmType: String? = null + var name: String? = null + var value: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt new file mode 100644 index 0000000..1fefd20 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt @@ -0,0 +1,25 @@ +package com.casic.app.smartwell.model + +class OrderStatusModel { + /** + * code : 200 + * data : [{"name":"待处理","id":"84","value":"0"},{"name":"待确认","id":"85","value":"1"},{"name":"处理中","id":"86","value":"2"},{"name":"已完成","id":"87","value":"3"},{"name":"已取消","id":"93","value":"4"}] + * message : 请求成功 + * success : true + */ + var code = 0 + var message: String? = null + var success = false + var data: List? = null + + class DataBean { + /** + * name : 待处理 + * id : 84 + * value : 0 + */ + var name: String? = null + var id: String? = null + var value: String? = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt index 91ad645..8d23f3e 100644 --- a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt @@ -3,98 +3,99 @@ class WorkOrderDetailModel { /** * code : 200 - * message : success - * data : {"id":1,"wellId":1,"wellCode":"N51F131","wellName":"闸井名称","deep":32,"devcode":"41201802100","position":"宋郎路","coordinateX":"39.899999999","coordinateY":"116.70000000","latBaidu":"39.901694","lngBaidu":"116.709315","latGaode":"","lngGaode":"","alarmId":"1","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","deptid":"1","deptName":"一分公司","jobCode":"201902340484","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","firstState":"现场情况描述","firstStatePhotos":"现场情况图片","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00","handleMessage":"维护情况描述","handlePhotos":"维护图片","flow":[{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}],"editable":"1"} + * data : [{"firstState":"","alarmContent":22,"deptName":"燃气集团总公司","jobStatus":"0","handleJobPerson":"","alarmContentName":"噪声超限","shouldGetTime":"","firstStatePhotos":"","wellCode":"test001","deptid":"24","alarmTypeName":"数据异常","jobCode":"ZSCX202009070001","jobBelongTo":"","jobFlag":"","confirmJobPerson":"","confirmJobTime":"","jobStatusName":"待处理","alarmValue":"4000.86","alarmId":"11243","alarmLevel":0,"handleJobTime":"","tel":"","id":"1232178","wellId":"4453","jobType":"1","flow":[],"editable":1,"alarmTime":"2019-10-17 14:22:00","handleMessage":"","alarmMessage":"噪声超限","staff":"吴甘牛","handlePhotos":"","getJobTime":"","getJobPerson":"","shouldHandleTime":"","jobId":"1232178","alarmType":"1","alarmStatus":"1","devcode":"212020000a","createTime":"2020-09-07 09:30:18","position":"test001位置"}] + * message : 请求成功 + * success : true */ var code = 0 var message: String? = null - var data: DataBean? = null + var success = false + var data: List? = null class DataBean { /** - * id : 1 - * wellId : 1 - * wellCode : N51F131 - * wellName : 闸井名称 - * deep : 32 - * devcode : 41201802100 - * position : 宋郎路 - * coordinateX : 39.899999999 - * coordinateY : 116.70000000 - * latBaidu : 39.901694 - * lngBaidu : 116.709315 - * latGaode : - * lngGaode : - * alarmId : 1 - * alarmType : 1 - * alarmTypeName : 数据异常 - * alarmContent : 1 - * alarmContentName : 液位超限 - * deptid : 1 - * deptName : 一分公司 - * jobCode : 201902340484 + * firstState : + * alarmContent : 22 + * deptName : 燃气集团总公司 * jobStatus : 0 + * handleJobPerson : + * alarmContentName : 噪声超限 + * shouldGetTime : + * firstStatePhotos : + * wellCode : test001 + * deptid : 24 + * alarmTypeName : 数据异常 + * jobCode : ZSCX202009070001 + * jobBelongTo : + * jobFlag : + * confirmJobPerson : + * confirmJobTime : * jobStatusName : 待处理 - * createTime : 2018-12-27 00:00:00 - * getJobPerson : 1321321 - * getJobTime : 2018-12-27 00:00:00 - * firstState : 现场情况描述 - * firstStatePhotos : 现场情况图片 - * confirmJobPerson : 1321321 - * confirmJobTime : 2018-12-27 00:00:00 - * handleJobPerson : 1321321 - * handleJobTime : 2018-12-27 00:00:00 - * handleMessage : 维护情况描述 - * handlePhotos : 维护图片 - * flow : [{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}] + * alarmValue : 4000.86 + * alarmId : 11243 + * alarmLevel : 0 + * handleJobTime : + * tel : + * id : 1232178 + * wellId : 4453 + * jobType : 1 + * flow : [] * editable : 1 + * alarmTime : 2019-10-17 14:22:00 + * handleMessage : + * alarmMessage : 噪声超限 + * staff : 吴甘牛 + * handlePhotos : + * getJobTime : + * getJobPerson : + * shouldHandleTime : + * jobId : 1232178 + * alarmType : 1 + * alarmStatus : 1 + * devcode : 212020000a + * createTime : 2020-09-07 09:30:18 + * position : test001位置 */ - var id = 0 - var wellId = 0 - var wellCode: String? = null - var wellName: String? = null - var deep = 0 - var devcode: String? = null - var position: String? = null - var coordinateX: String? = null - var coordinateY: String? = null - var latBaidu: String? = null - var lngBaidu: String? = null - var latGaode: String? = null - var lngGaode: String? = null - var alarmId: String? = null - var alarmType: String? = null - var alarmTypeName: String? = null - var alarmContent: String? = null - var alarmContentName: String? = null - var deptid: String? = null - var deptName: String? = null - var jobCode: String? = null - var jobStatus: String? = null - var jobStatusName: String? = null - var createTime: String? = null - var getJobPerson: String? = null - var getJobTime: String? = null var firstState: String? = null + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null var firstStatePhotos: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null var confirmJobPerson: String? = null var confirmJobTime: String? = null - var handleJobPerson: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel = 0 var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null var handleMessage: String? = null + var alarmMessage: String? = null + var staff: String? = null var handlePhotos: String? = null - var editable: String? = null - var flow: List? = null - - class FlowBean { - /** - * from : 张三 - * to : 李四 - * time : 2019-02-22-12:00:00 - */ - var from: String? = null - var to: String? = null - var time: String? = null - } + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + var flow: List<*>? = null } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index 91e8410..358ff17 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -23,6 +23,7 @@ ) } + const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 const val ORDER_TRANSFER_OK = 21 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index cd3b564..9b64524 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -107,7 +107,7 @@ ): WorkOrderDetailModel /** - * 转单 + * 接单 */ @FormUrlEncoded @POST("/job/getJob") @@ -117,6 +117,22 @@ ): CommonResultModel /** + * 告警内容列表 + * */ + @GET("/alarm/contentType") + suspend fun obtainAlarmContentType( + @Header("token") token: String + ): AlarmContentTypeModel + + /** + * 工单状态 + * */ + @GET("/dict/code/jobStatus") + suspend fun obtainOrderStatus( + @Header("token") token: String + ): OrderStatusModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index bfc49e8..d574dda 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -110,6 +110,20 @@ } /** + * 告警内容列表 + */ + suspend fun obtainAlarmContentType(): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!) + } + + /** + * 工单状态 + */ + suspend fun obtainOrderStatus(): OrderStatusModel { + return api.obtainOrderStatus(AuthenticationHelper.token!!) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/build.gradle b/app/build.gradle index a4224f0..42722ca 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -77,4 +77,9 @@ //高德导航 implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' implementation 'com.amap.api:location:5.3.1' + //日期选择器 + implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' + } diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt new file mode 100644 index 0000000..ee3685d --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -0,0 +1,6 @@ +package com.casic.app.smartwell.extensions + +import java.text.SimpleDateFormat +import java.util.* + +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt new file mode 100644 index 0000000..6911fd1 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt @@ -0,0 +1,29 @@ +package com.casic.app.smartwell.model + +class AlarmContentTypeModel { + /** + * code : 200 + * data : {"list":[{"deviceType":"1","alarmType":"1","name":"井盖开盖报警","value":"1"},{"deviceType":"2","alarmType":"1","name":"液位超限","value":"4"},{"deviceType":"3","alarmType":"1","name":"有害气体超标","value":"10"},{"deviceType":"5","alarmType":"1","name":"温湿度超限","value":"11"},{"deviceType":"6","alarmType":"1","name":"疑似开挖","value":"12"},{"deviceType":"4","alarmType":"1","name":"浓度超限","value":"13"},{"deviceType":"8","alarmType":"1","name":"噪声超限","value":"22"}]} + * message : success + */ + var code = 0 + var data: DataBean? = null + var message: String? = null + + class DataBean { + var list: List? = null + + class ListBean { + /** + * deviceType : 1 + * alarmType : 1 + * name : 井盖开盖报警 + * value : 1 + */ + var deviceType: String? = null + var alarmType: String? = null + var name: String? = null + var value: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt new file mode 100644 index 0000000..1fefd20 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt @@ -0,0 +1,25 @@ +package com.casic.app.smartwell.model + +class OrderStatusModel { + /** + * code : 200 + * data : [{"name":"待处理","id":"84","value":"0"},{"name":"待确认","id":"85","value":"1"},{"name":"处理中","id":"86","value":"2"},{"name":"已完成","id":"87","value":"3"},{"name":"已取消","id":"93","value":"4"}] + * message : 请求成功 + * success : true + */ + var code = 0 + var message: String? = null + var success = false + var data: List? = null + + class DataBean { + /** + * name : 待处理 + * id : 84 + * value : 0 + */ + var name: String? = null + var id: String? = null + var value: String? = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt index 91ad645..8d23f3e 100644 --- a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt @@ -3,98 +3,99 @@ class WorkOrderDetailModel { /** * code : 200 - * message : success - * data : {"id":1,"wellId":1,"wellCode":"N51F131","wellName":"闸井名称","deep":32,"devcode":"41201802100","position":"宋郎路","coordinateX":"39.899999999","coordinateY":"116.70000000","latBaidu":"39.901694","lngBaidu":"116.709315","latGaode":"","lngGaode":"","alarmId":"1","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","deptid":"1","deptName":"一分公司","jobCode":"201902340484","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","firstState":"现场情况描述","firstStatePhotos":"现场情况图片","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00","handleMessage":"维护情况描述","handlePhotos":"维护图片","flow":[{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}],"editable":"1"} + * data : [{"firstState":"","alarmContent":22,"deptName":"燃气集团总公司","jobStatus":"0","handleJobPerson":"","alarmContentName":"噪声超限","shouldGetTime":"","firstStatePhotos":"","wellCode":"test001","deptid":"24","alarmTypeName":"数据异常","jobCode":"ZSCX202009070001","jobBelongTo":"","jobFlag":"","confirmJobPerson":"","confirmJobTime":"","jobStatusName":"待处理","alarmValue":"4000.86","alarmId":"11243","alarmLevel":0,"handleJobTime":"","tel":"","id":"1232178","wellId":"4453","jobType":"1","flow":[],"editable":1,"alarmTime":"2019-10-17 14:22:00","handleMessage":"","alarmMessage":"噪声超限","staff":"吴甘牛","handlePhotos":"","getJobTime":"","getJobPerson":"","shouldHandleTime":"","jobId":"1232178","alarmType":"1","alarmStatus":"1","devcode":"212020000a","createTime":"2020-09-07 09:30:18","position":"test001位置"}] + * message : 请求成功 + * success : true */ var code = 0 var message: String? = null - var data: DataBean? = null + var success = false + var data: List? = null class DataBean { /** - * id : 1 - * wellId : 1 - * wellCode : N51F131 - * wellName : 闸井名称 - * deep : 32 - * devcode : 41201802100 - * position : 宋郎路 - * coordinateX : 39.899999999 - * coordinateY : 116.70000000 - * latBaidu : 39.901694 - * lngBaidu : 116.709315 - * latGaode : - * lngGaode : - * alarmId : 1 - * alarmType : 1 - * alarmTypeName : 数据异常 - * alarmContent : 1 - * alarmContentName : 液位超限 - * deptid : 1 - * deptName : 一分公司 - * jobCode : 201902340484 + * firstState : + * alarmContent : 22 + * deptName : 燃气集团总公司 * jobStatus : 0 + * handleJobPerson : + * alarmContentName : 噪声超限 + * shouldGetTime : + * firstStatePhotos : + * wellCode : test001 + * deptid : 24 + * alarmTypeName : 数据异常 + * jobCode : ZSCX202009070001 + * jobBelongTo : + * jobFlag : + * confirmJobPerson : + * confirmJobTime : * jobStatusName : 待处理 - * createTime : 2018-12-27 00:00:00 - * getJobPerson : 1321321 - * getJobTime : 2018-12-27 00:00:00 - * firstState : 现场情况描述 - * firstStatePhotos : 现场情况图片 - * confirmJobPerson : 1321321 - * confirmJobTime : 2018-12-27 00:00:00 - * handleJobPerson : 1321321 - * handleJobTime : 2018-12-27 00:00:00 - * handleMessage : 维护情况描述 - * handlePhotos : 维护图片 - * flow : [{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}] + * alarmValue : 4000.86 + * alarmId : 11243 + * alarmLevel : 0 + * handleJobTime : + * tel : + * id : 1232178 + * wellId : 4453 + * jobType : 1 + * flow : [] * editable : 1 + * alarmTime : 2019-10-17 14:22:00 + * handleMessage : + * alarmMessage : 噪声超限 + * staff : 吴甘牛 + * handlePhotos : + * getJobTime : + * getJobPerson : + * shouldHandleTime : + * jobId : 1232178 + * alarmType : 1 + * alarmStatus : 1 + * devcode : 212020000a + * createTime : 2020-09-07 09:30:18 + * position : test001位置 */ - var id = 0 - var wellId = 0 - var wellCode: String? = null - var wellName: String? = null - var deep = 0 - var devcode: String? = null - var position: String? = null - var coordinateX: String? = null - var coordinateY: String? = null - var latBaidu: String? = null - var lngBaidu: String? = null - var latGaode: String? = null - var lngGaode: String? = null - var alarmId: String? = null - var alarmType: String? = null - var alarmTypeName: String? = null - var alarmContent: String? = null - var alarmContentName: String? = null - var deptid: String? = null - var deptName: String? = null - var jobCode: String? = null - var jobStatus: String? = null - var jobStatusName: String? = null - var createTime: String? = null - var getJobPerson: String? = null - var getJobTime: String? = null var firstState: String? = null + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null var firstStatePhotos: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null var confirmJobPerson: String? = null var confirmJobTime: String? = null - var handleJobPerson: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel = 0 var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null var handleMessage: String? = null + var alarmMessage: String? = null + var staff: String? = null var handlePhotos: String? = null - var editable: String? = null - var flow: List? = null - - class FlowBean { - /** - * from : 张三 - * to : 李四 - * time : 2019-02-22-12:00:00 - */ - var from: String? = null - var to: String? = null - var time: String? = null - } + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + var flow: List<*>? = null } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index 91e8410..358ff17 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -23,6 +23,7 @@ ) } + const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 const val ORDER_TRANSFER_OK = 21 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index cd3b564..9b64524 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -107,7 +107,7 @@ ): WorkOrderDetailModel /** - * 转单 + * 接单 */ @FormUrlEncoded @POST("/job/getJob") @@ -117,6 +117,22 @@ ): CommonResultModel /** + * 告警内容列表 + * */ + @GET("/alarm/contentType") + suspend fun obtainAlarmContentType( + @Header("token") token: String + ): AlarmContentTypeModel + + /** + * 工单状态 + * */ + @GET("/dict/code/jobStatus") + suspend fun obtainOrderStatus( + @Header("token") token: String + ): OrderStatusModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index bfc49e8..d574dda 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -110,6 +110,20 @@ } /** + * 告警内容列表 + */ + suspend fun obtainAlarmContentType(): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!) + } + + /** + * 工单状态 + */ + suspend fun obtainOrderStatus(): OrderStatusModel { + return api.obtainOrderStatus(AuthenticationHelper.token!!) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index 226d94b..6016a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,12 +1,37 @@ package com.casic.app.smartwell.view +import android.util.Log +import android.view.LayoutInflater import android.view.View +import android.widget.TextView +import androidx.core.content.ContextCompat +import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.model.AlarmContentTypeModel +import com.casic.app.smartwell.model.OrderStatusModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.vm.AlarmContentTypeViewModel +import com.casic.app.smartwell.vm.OrderStatusViewModel +import com.google.gson.Gson +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter +import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* + class SearchWorkOrderActivity : BaseActivity() { + private val kTag = "SearchWorkOrderActivity" + private lateinit var contentTypeViewModel: AlarmContentTypeViewModel + private lateinit var orderStatusViewModel: OrderStatusViewModel + private lateinit var inflater: LayoutInflater + private var alarmTypeModels: MutableList = ArrayList() + private var orderStatusModels: MutableList = ArrayList() + override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { @@ -16,10 +41,103 @@ } override fun initData() { + inflater = LayoutInflater.from(this) + //告警内容 + contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) + contentTypeViewModel.obtainAlarmContentType() + contentTypeViewModel.listModel.observe(this, { + if (it.code == 200) { + it.data!!.list?.forEachIndexed { index, dataBean -> + val bean: AlarmContentTypeModel.DataBean.ListBean + if (index == 0) { + bean = AlarmContentTypeModel.DataBean.ListBean() + bean.value = "" + bean.name = "全部" + bean.alarmType = "" + bean.deviceType = "" + } else { + bean = dataBean + } + alarmTypeModels.add(bean) + } + Log.d(kTag, "告警内容: ${Gson().toJson(alarmTypeModels)}") + } + }) + //工单状态 + orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) + orderStatusViewModel.obtainOrderStatus() + orderStatusViewModel.listModel.observe(this, { + if (it.code == 200) { + it.data!!.forEachIndexed { index, dataBean -> + val bean: OrderStatusModel.DataBean + if (index == 0) { + bean = OrderStatusModel.DataBean() + bean.name = "全部" + bean.id = "" + bean.value = "" + } else { + bean = dataBean + } + orderStatusModels.add(bean) + } + + orderStatusLayout.adapter = + object : TagAdapter(orderStatusModels) { + override fun getView( + parent: FlowLayout?, + position: Int, bean: OrderStatusModel.DataBean? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, + false + ) as TextView + tagView.text = orderStatusModels[position].name + return tagView + } + } + } + }) } override fun initEvent() { + selectStartTimeView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择开始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { _: TimePickerDialog?, millSeconds: Long -> + selectStartTimeView.text = millSeconds.timestampToDate() + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndTimeView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { _: TimePickerDialog?, millSeconds: Long -> + selectEndTimeView.text = millSeconds.timestampToDate() + }.build().show(supportFragmentManager, "year_month_day") + } + + searchButton.setChangeAlphaWhenPress(true) + searchButton.setOnClickListener { + + } + + clearButton.setChangeAlphaWhenPress(true) + clearButton.setOnClickListener { + + } } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a4224f0..42722ca 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -77,4 +77,9 @@ //高德导航 implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' implementation 'com.amap.api:location:5.3.1' + //日期选择器 + implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' + } diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt new file mode 100644 index 0000000..ee3685d --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -0,0 +1,6 @@ +package com.casic.app.smartwell.extensions + +import java.text.SimpleDateFormat +import java.util.* + +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt new file mode 100644 index 0000000..6911fd1 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt @@ -0,0 +1,29 @@ +package com.casic.app.smartwell.model + +class AlarmContentTypeModel { + /** + * code : 200 + * data : {"list":[{"deviceType":"1","alarmType":"1","name":"井盖开盖报警","value":"1"},{"deviceType":"2","alarmType":"1","name":"液位超限","value":"4"},{"deviceType":"3","alarmType":"1","name":"有害气体超标","value":"10"},{"deviceType":"5","alarmType":"1","name":"温湿度超限","value":"11"},{"deviceType":"6","alarmType":"1","name":"疑似开挖","value":"12"},{"deviceType":"4","alarmType":"1","name":"浓度超限","value":"13"},{"deviceType":"8","alarmType":"1","name":"噪声超限","value":"22"}]} + * message : success + */ + var code = 0 + var data: DataBean? = null + var message: String? = null + + class DataBean { + var list: List? = null + + class ListBean { + /** + * deviceType : 1 + * alarmType : 1 + * name : 井盖开盖报警 + * value : 1 + */ + var deviceType: String? = null + var alarmType: String? = null + var name: String? = null + var value: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt new file mode 100644 index 0000000..1fefd20 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt @@ -0,0 +1,25 @@ +package com.casic.app.smartwell.model + +class OrderStatusModel { + /** + * code : 200 + * data : [{"name":"待处理","id":"84","value":"0"},{"name":"待确认","id":"85","value":"1"},{"name":"处理中","id":"86","value":"2"},{"name":"已完成","id":"87","value":"3"},{"name":"已取消","id":"93","value":"4"}] + * message : 请求成功 + * success : true + */ + var code = 0 + var message: String? = null + var success = false + var data: List? = null + + class DataBean { + /** + * name : 待处理 + * id : 84 + * value : 0 + */ + var name: String? = null + var id: String? = null + var value: String? = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt index 91ad645..8d23f3e 100644 --- a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt @@ -3,98 +3,99 @@ class WorkOrderDetailModel { /** * code : 200 - * message : success - * data : {"id":1,"wellId":1,"wellCode":"N51F131","wellName":"闸井名称","deep":32,"devcode":"41201802100","position":"宋郎路","coordinateX":"39.899999999","coordinateY":"116.70000000","latBaidu":"39.901694","lngBaidu":"116.709315","latGaode":"","lngGaode":"","alarmId":"1","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","deptid":"1","deptName":"一分公司","jobCode":"201902340484","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","firstState":"现场情况描述","firstStatePhotos":"现场情况图片","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00","handleMessage":"维护情况描述","handlePhotos":"维护图片","flow":[{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}],"editable":"1"} + * data : [{"firstState":"","alarmContent":22,"deptName":"燃气集团总公司","jobStatus":"0","handleJobPerson":"","alarmContentName":"噪声超限","shouldGetTime":"","firstStatePhotos":"","wellCode":"test001","deptid":"24","alarmTypeName":"数据异常","jobCode":"ZSCX202009070001","jobBelongTo":"","jobFlag":"","confirmJobPerson":"","confirmJobTime":"","jobStatusName":"待处理","alarmValue":"4000.86","alarmId":"11243","alarmLevel":0,"handleJobTime":"","tel":"","id":"1232178","wellId":"4453","jobType":"1","flow":[],"editable":1,"alarmTime":"2019-10-17 14:22:00","handleMessage":"","alarmMessage":"噪声超限","staff":"吴甘牛","handlePhotos":"","getJobTime":"","getJobPerson":"","shouldHandleTime":"","jobId":"1232178","alarmType":"1","alarmStatus":"1","devcode":"212020000a","createTime":"2020-09-07 09:30:18","position":"test001位置"}] + * message : 请求成功 + * success : true */ var code = 0 var message: String? = null - var data: DataBean? = null + var success = false + var data: List? = null class DataBean { /** - * id : 1 - * wellId : 1 - * wellCode : N51F131 - * wellName : 闸井名称 - * deep : 32 - * devcode : 41201802100 - * position : 宋郎路 - * coordinateX : 39.899999999 - * coordinateY : 116.70000000 - * latBaidu : 39.901694 - * lngBaidu : 116.709315 - * latGaode : - * lngGaode : - * alarmId : 1 - * alarmType : 1 - * alarmTypeName : 数据异常 - * alarmContent : 1 - * alarmContentName : 液位超限 - * deptid : 1 - * deptName : 一分公司 - * jobCode : 201902340484 + * firstState : + * alarmContent : 22 + * deptName : 燃气集团总公司 * jobStatus : 0 + * handleJobPerson : + * alarmContentName : 噪声超限 + * shouldGetTime : + * firstStatePhotos : + * wellCode : test001 + * deptid : 24 + * alarmTypeName : 数据异常 + * jobCode : ZSCX202009070001 + * jobBelongTo : + * jobFlag : + * confirmJobPerson : + * confirmJobTime : * jobStatusName : 待处理 - * createTime : 2018-12-27 00:00:00 - * getJobPerson : 1321321 - * getJobTime : 2018-12-27 00:00:00 - * firstState : 现场情况描述 - * firstStatePhotos : 现场情况图片 - * confirmJobPerson : 1321321 - * confirmJobTime : 2018-12-27 00:00:00 - * handleJobPerson : 1321321 - * handleJobTime : 2018-12-27 00:00:00 - * handleMessage : 维护情况描述 - * handlePhotos : 维护图片 - * flow : [{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}] + * alarmValue : 4000.86 + * alarmId : 11243 + * alarmLevel : 0 + * handleJobTime : + * tel : + * id : 1232178 + * wellId : 4453 + * jobType : 1 + * flow : [] * editable : 1 + * alarmTime : 2019-10-17 14:22:00 + * handleMessage : + * alarmMessage : 噪声超限 + * staff : 吴甘牛 + * handlePhotos : + * getJobTime : + * getJobPerson : + * shouldHandleTime : + * jobId : 1232178 + * alarmType : 1 + * alarmStatus : 1 + * devcode : 212020000a + * createTime : 2020-09-07 09:30:18 + * position : test001位置 */ - var id = 0 - var wellId = 0 - var wellCode: String? = null - var wellName: String? = null - var deep = 0 - var devcode: String? = null - var position: String? = null - var coordinateX: String? = null - var coordinateY: String? = null - var latBaidu: String? = null - var lngBaidu: String? = null - var latGaode: String? = null - var lngGaode: String? = null - var alarmId: String? = null - var alarmType: String? = null - var alarmTypeName: String? = null - var alarmContent: String? = null - var alarmContentName: String? = null - var deptid: String? = null - var deptName: String? = null - var jobCode: String? = null - var jobStatus: String? = null - var jobStatusName: String? = null - var createTime: String? = null - var getJobPerson: String? = null - var getJobTime: String? = null var firstState: String? = null + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null var firstStatePhotos: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null var confirmJobPerson: String? = null var confirmJobTime: String? = null - var handleJobPerson: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel = 0 var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null var handleMessage: String? = null + var alarmMessage: String? = null + var staff: String? = null var handlePhotos: String? = null - var editable: String? = null - var flow: List? = null - - class FlowBean { - /** - * from : 张三 - * to : 李四 - * time : 2019-02-22-12:00:00 - */ - var from: String? = null - var to: String? = null - var time: String? = null - } + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + var flow: List<*>? = null } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index 91e8410..358ff17 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -23,6 +23,7 @@ ) } + const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 const val ORDER_TRANSFER_OK = 21 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index cd3b564..9b64524 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -107,7 +107,7 @@ ): WorkOrderDetailModel /** - * 转单 + * 接单 */ @FormUrlEncoded @POST("/job/getJob") @@ -117,6 +117,22 @@ ): CommonResultModel /** + * 告警内容列表 + * */ + @GET("/alarm/contentType") + suspend fun obtainAlarmContentType( + @Header("token") token: String + ): AlarmContentTypeModel + + /** + * 工单状态 + * */ + @GET("/dict/code/jobStatus") + suspend fun obtainOrderStatus( + @Header("token") token: String + ): OrderStatusModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index bfc49e8..d574dda 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -110,6 +110,20 @@ } /** + * 告警内容列表 + */ + suspend fun obtainAlarmContentType(): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!) + } + + /** + * 工单状态 + */ + suspend fun obtainOrderStatus(): OrderStatusModel { + return api.obtainOrderStatus(AuthenticationHelper.token!!) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index 226d94b..6016a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,12 +1,37 @@ package com.casic.app.smartwell.view +import android.util.Log +import android.view.LayoutInflater import android.view.View +import android.widget.TextView +import androidx.core.content.ContextCompat +import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.model.AlarmContentTypeModel +import com.casic.app.smartwell.model.OrderStatusModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.vm.AlarmContentTypeViewModel +import com.casic.app.smartwell.vm.OrderStatusViewModel +import com.google.gson.Gson +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter +import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* + class SearchWorkOrderActivity : BaseActivity() { + private val kTag = "SearchWorkOrderActivity" + private lateinit var contentTypeViewModel: AlarmContentTypeViewModel + private lateinit var orderStatusViewModel: OrderStatusViewModel + private lateinit var inflater: LayoutInflater + private var alarmTypeModels: MutableList = ArrayList() + private var orderStatusModels: MutableList = ArrayList() + override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { @@ -16,10 +41,103 @@ } override fun initData() { + inflater = LayoutInflater.from(this) + //告警内容 + contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) + contentTypeViewModel.obtainAlarmContentType() + contentTypeViewModel.listModel.observe(this, { + if (it.code == 200) { + it.data!!.list?.forEachIndexed { index, dataBean -> + val bean: AlarmContentTypeModel.DataBean.ListBean + if (index == 0) { + bean = AlarmContentTypeModel.DataBean.ListBean() + bean.value = "" + bean.name = "全部" + bean.alarmType = "" + bean.deviceType = "" + } else { + bean = dataBean + } + alarmTypeModels.add(bean) + } + Log.d(kTag, "告警内容: ${Gson().toJson(alarmTypeModels)}") + } + }) + //工单状态 + orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) + orderStatusViewModel.obtainOrderStatus() + orderStatusViewModel.listModel.observe(this, { + if (it.code == 200) { + it.data!!.forEachIndexed { index, dataBean -> + val bean: OrderStatusModel.DataBean + if (index == 0) { + bean = OrderStatusModel.DataBean() + bean.name = "全部" + bean.id = "" + bean.value = "" + } else { + bean = dataBean + } + orderStatusModels.add(bean) + } + + orderStatusLayout.adapter = + object : TagAdapter(orderStatusModels) { + override fun getView( + parent: FlowLayout?, + position: Int, bean: OrderStatusModel.DataBean? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, + false + ) as TextView + tagView.text = orderStatusModels[position].name + return tagView + } + } + } + }) } override fun initEvent() { + selectStartTimeView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择开始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { _: TimePickerDialog?, millSeconds: Long -> + selectStartTimeView.text = millSeconds.timestampToDate() + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndTimeView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { _: TimePickerDialog?, millSeconds: Long -> + selectEndTimeView.text = millSeconds.timestampToDate() + }.build().show(supportFragmentManager, "year_month_day") + } + + searchButton.setChangeAlphaWhenPress(true) + searchButton.setOnClickListener { + + } + + clearButton.setChangeAlphaWhenPress(true) + clearButton.setOnClickListener { + + } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index 43a6620..0bcb4aa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -59,7 +59,7 @@ tipsImageView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) - .setTitle("窨井详细位置") + .setTitle("窨井完整位置") .setMessage(wellPosition) .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build() .show() diff --git a/app/build.gradle b/app/build.gradle index a4224f0..42722ca 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -77,4 +77,9 @@ //高德导航 implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' implementation 'com.amap.api:location:5.3.1' + //日期选择器 + implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' + } diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt new file mode 100644 index 0000000..ee3685d --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -0,0 +1,6 @@ +package com.casic.app.smartwell.extensions + +import java.text.SimpleDateFormat +import java.util.* + +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt new file mode 100644 index 0000000..6911fd1 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt @@ -0,0 +1,29 @@ +package com.casic.app.smartwell.model + +class AlarmContentTypeModel { + /** + * code : 200 + * data : {"list":[{"deviceType":"1","alarmType":"1","name":"井盖开盖报警","value":"1"},{"deviceType":"2","alarmType":"1","name":"液位超限","value":"4"},{"deviceType":"3","alarmType":"1","name":"有害气体超标","value":"10"},{"deviceType":"5","alarmType":"1","name":"温湿度超限","value":"11"},{"deviceType":"6","alarmType":"1","name":"疑似开挖","value":"12"},{"deviceType":"4","alarmType":"1","name":"浓度超限","value":"13"},{"deviceType":"8","alarmType":"1","name":"噪声超限","value":"22"}]} + * message : success + */ + var code = 0 + var data: DataBean? = null + var message: String? = null + + class DataBean { + var list: List? = null + + class ListBean { + /** + * deviceType : 1 + * alarmType : 1 + * name : 井盖开盖报警 + * value : 1 + */ + var deviceType: String? = null + var alarmType: String? = null + var name: String? = null + var value: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt new file mode 100644 index 0000000..1fefd20 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt @@ -0,0 +1,25 @@ +package com.casic.app.smartwell.model + +class OrderStatusModel { + /** + * code : 200 + * data : [{"name":"待处理","id":"84","value":"0"},{"name":"待确认","id":"85","value":"1"},{"name":"处理中","id":"86","value":"2"},{"name":"已完成","id":"87","value":"3"},{"name":"已取消","id":"93","value":"4"}] + * message : 请求成功 + * success : true + */ + var code = 0 + var message: String? = null + var success = false + var data: List? = null + + class DataBean { + /** + * name : 待处理 + * id : 84 + * value : 0 + */ + var name: String? = null + var id: String? = null + var value: String? = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt index 91ad645..8d23f3e 100644 --- a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt @@ -3,98 +3,99 @@ class WorkOrderDetailModel { /** * code : 200 - * message : success - * data : {"id":1,"wellId":1,"wellCode":"N51F131","wellName":"闸井名称","deep":32,"devcode":"41201802100","position":"宋郎路","coordinateX":"39.899999999","coordinateY":"116.70000000","latBaidu":"39.901694","lngBaidu":"116.709315","latGaode":"","lngGaode":"","alarmId":"1","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","deptid":"1","deptName":"一分公司","jobCode":"201902340484","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","firstState":"现场情况描述","firstStatePhotos":"现场情况图片","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00","handleMessage":"维护情况描述","handlePhotos":"维护图片","flow":[{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}],"editable":"1"} + * data : [{"firstState":"","alarmContent":22,"deptName":"燃气集团总公司","jobStatus":"0","handleJobPerson":"","alarmContentName":"噪声超限","shouldGetTime":"","firstStatePhotos":"","wellCode":"test001","deptid":"24","alarmTypeName":"数据异常","jobCode":"ZSCX202009070001","jobBelongTo":"","jobFlag":"","confirmJobPerson":"","confirmJobTime":"","jobStatusName":"待处理","alarmValue":"4000.86","alarmId":"11243","alarmLevel":0,"handleJobTime":"","tel":"","id":"1232178","wellId":"4453","jobType":"1","flow":[],"editable":1,"alarmTime":"2019-10-17 14:22:00","handleMessage":"","alarmMessage":"噪声超限","staff":"吴甘牛","handlePhotos":"","getJobTime":"","getJobPerson":"","shouldHandleTime":"","jobId":"1232178","alarmType":"1","alarmStatus":"1","devcode":"212020000a","createTime":"2020-09-07 09:30:18","position":"test001位置"}] + * message : 请求成功 + * success : true */ var code = 0 var message: String? = null - var data: DataBean? = null + var success = false + var data: List? = null class DataBean { /** - * id : 1 - * wellId : 1 - * wellCode : N51F131 - * wellName : 闸井名称 - * deep : 32 - * devcode : 41201802100 - * position : 宋郎路 - * coordinateX : 39.899999999 - * coordinateY : 116.70000000 - * latBaidu : 39.901694 - * lngBaidu : 116.709315 - * latGaode : - * lngGaode : - * alarmId : 1 - * alarmType : 1 - * alarmTypeName : 数据异常 - * alarmContent : 1 - * alarmContentName : 液位超限 - * deptid : 1 - * deptName : 一分公司 - * jobCode : 201902340484 + * firstState : + * alarmContent : 22 + * deptName : 燃气集团总公司 * jobStatus : 0 + * handleJobPerson : + * alarmContentName : 噪声超限 + * shouldGetTime : + * firstStatePhotos : + * wellCode : test001 + * deptid : 24 + * alarmTypeName : 数据异常 + * jobCode : ZSCX202009070001 + * jobBelongTo : + * jobFlag : + * confirmJobPerson : + * confirmJobTime : * jobStatusName : 待处理 - * createTime : 2018-12-27 00:00:00 - * getJobPerson : 1321321 - * getJobTime : 2018-12-27 00:00:00 - * firstState : 现场情况描述 - * firstStatePhotos : 现场情况图片 - * confirmJobPerson : 1321321 - * confirmJobTime : 2018-12-27 00:00:00 - * handleJobPerson : 1321321 - * handleJobTime : 2018-12-27 00:00:00 - * handleMessage : 维护情况描述 - * handlePhotos : 维护图片 - * flow : [{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}] + * alarmValue : 4000.86 + * alarmId : 11243 + * alarmLevel : 0 + * handleJobTime : + * tel : + * id : 1232178 + * wellId : 4453 + * jobType : 1 + * flow : [] * editable : 1 + * alarmTime : 2019-10-17 14:22:00 + * handleMessage : + * alarmMessage : 噪声超限 + * staff : 吴甘牛 + * handlePhotos : + * getJobTime : + * getJobPerson : + * shouldHandleTime : + * jobId : 1232178 + * alarmType : 1 + * alarmStatus : 1 + * devcode : 212020000a + * createTime : 2020-09-07 09:30:18 + * position : test001位置 */ - var id = 0 - var wellId = 0 - var wellCode: String? = null - var wellName: String? = null - var deep = 0 - var devcode: String? = null - var position: String? = null - var coordinateX: String? = null - var coordinateY: String? = null - var latBaidu: String? = null - var lngBaidu: String? = null - var latGaode: String? = null - var lngGaode: String? = null - var alarmId: String? = null - var alarmType: String? = null - var alarmTypeName: String? = null - var alarmContent: String? = null - var alarmContentName: String? = null - var deptid: String? = null - var deptName: String? = null - var jobCode: String? = null - var jobStatus: String? = null - var jobStatusName: String? = null - var createTime: String? = null - var getJobPerson: String? = null - var getJobTime: String? = null var firstState: String? = null + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null var firstStatePhotos: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null var confirmJobPerson: String? = null var confirmJobTime: String? = null - var handleJobPerson: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel = 0 var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null var handleMessage: String? = null + var alarmMessage: String? = null + var staff: String? = null var handlePhotos: String? = null - var editable: String? = null - var flow: List? = null - - class FlowBean { - /** - * from : 张三 - * to : 李四 - * time : 2019-02-22-12:00:00 - */ - var from: String? = null - var to: String? = null - var time: String? = null - } + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + var flow: List<*>? = null } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index 91e8410..358ff17 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -23,6 +23,7 @@ ) } + const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 const val ORDER_TRANSFER_OK = 21 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index cd3b564..9b64524 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -107,7 +107,7 @@ ): WorkOrderDetailModel /** - * 转单 + * 接单 */ @FormUrlEncoded @POST("/job/getJob") @@ -117,6 +117,22 @@ ): CommonResultModel /** + * 告警内容列表 + * */ + @GET("/alarm/contentType") + suspend fun obtainAlarmContentType( + @Header("token") token: String + ): AlarmContentTypeModel + + /** + * 工单状态 + * */ + @GET("/dict/code/jobStatus") + suspend fun obtainOrderStatus( + @Header("token") token: String + ): OrderStatusModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index bfc49e8..d574dda 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -110,6 +110,20 @@ } /** + * 告警内容列表 + */ + suspend fun obtainAlarmContentType(): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!) + } + + /** + * 工单状态 + */ + suspend fun obtainOrderStatus(): OrderStatusModel { + return api.obtainOrderStatus(AuthenticationHelper.token!!) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index 226d94b..6016a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,12 +1,37 @@ package com.casic.app.smartwell.view +import android.util.Log +import android.view.LayoutInflater import android.view.View +import android.widget.TextView +import androidx.core.content.ContextCompat +import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.model.AlarmContentTypeModel +import com.casic.app.smartwell.model.OrderStatusModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.vm.AlarmContentTypeViewModel +import com.casic.app.smartwell.vm.OrderStatusViewModel +import com.google.gson.Gson +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter +import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* + class SearchWorkOrderActivity : BaseActivity() { + private val kTag = "SearchWorkOrderActivity" + private lateinit var contentTypeViewModel: AlarmContentTypeViewModel + private lateinit var orderStatusViewModel: OrderStatusViewModel + private lateinit var inflater: LayoutInflater + private var alarmTypeModels: MutableList = ArrayList() + private var orderStatusModels: MutableList = ArrayList() + override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { @@ -16,10 +41,103 @@ } override fun initData() { + inflater = LayoutInflater.from(this) + //告警内容 + contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) + contentTypeViewModel.obtainAlarmContentType() + contentTypeViewModel.listModel.observe(this, { + if (it.code == 200) { + it.data!!.list?.forEachIndexed { index, dataBean -> + val bean: AlarmContentTypeModel.DataBean.ListBean + if (index == 0) { + bean = AlarmContentTypeModel.DataBean.ListBean() + bean.value = "" + bean.name = "全部" + bean.alarmType = "" + bean.deviceType = "" + } else { + bean = dataBean + } + alarmTypeModels.add(bean) + } + Log.d(kTag, "告警内容: ${Gson().toJson(alarmTypeModels)}") + } + }) + //工单状态 + orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) + orderStatusViewModel.obtainOrderStatus() + orderStatusViewModel.listModel.observe(this, { + if (it.code == 200) { + it.data!!.forEachIndexed { index, dataBean -> + val bean: OrderStatusModel.DataBean + if (index == 0) { + bean = OrderStatusModel.DataBean() + bean.name = "全部" + bean.id = "" + bean.value = "" + } else { + bean = dataBean + } + orderStatusModels.add(bean) + } + + orderStatusLayout.adapter = + object : TagAdapter(orderStatusModels) { + override fun getView( + parent: FlowLayout?, + position: Int, bean: OrderStatusModel.DataBean? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, + false + ) as TextView + tagView.text = orderStatusModels[position].name + return tagView + } + } + } + }) } override fun initEvent() { + selectStartTimeView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择开始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { _: TimePickerDialog?, millSeconds: Long -> + selectStartTimeView.text = millSeconds.timestampToDate() + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndTimeView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { _: TimePickerDialog?, millSeconds: Long -> + selectEndTimeView.text = millSeconds.timestampToDate() + }.build().show(supportFragmentManager, "year_month_day") + } + + searchButton.setChangeAlphaWhenPress(true) + searchButton.setOnClickListener { + + } + + clearButton.setChangeAlphaWhenPress(true) + clearButton.setOnClickListener { + + } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index 43a6620..0bcb4aa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -59,7 +59,7 @@ tipsImageView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) - .setTitle("窨井详细位置") + .setTitle("窨井完整位置") .setMessage(wellPosition) .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build() .show() diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt index 500b6ff..37dc5d6 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt @@ -6,10 +6,8 @@ import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.covertColor import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.showRouteOnMap -import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState @@ -17,6 +15,8 @@ import com.casic.app.smartwell.vm.AcceptOrderViewModel import com.casic.app.smartwell.vm.WellDetailViewModel import com.casic.app.smartwell.vm.WorkOrderDetailViewModel +import com.pengxh.app.multilib.widget.dialog.AlertControlDialog +import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -40,64 +40,85 @@ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId.toLong()) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { - val orderDetail = it.data!! - alarmTypeView.text = orderDetail.alarmContentName + val orderDetail = it.data!![0] + alarmContentView.text = orderDetail.alarmContentName + alarmDateView.text = orderDetail.alarmTime + orderCodeView.text = orderDetail.jobCode wellCodeView.text = orderDetail.wellCode - wellNameView.text = orderDetail.wellName - wellTypeView.text = orderDetail.wellId.valueToType() - - wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java) - val wellId = orderDetail.wellId.toString() - if (wellId == "") { - wellStateView.text = "状态未知" - } else { - wellDetailViewModel.obtainWellDetail(id = wellId) - wellDetailViewModel.detailModel.observe(this, { well -> - if (well.code == 200) { - val wellDetail = well.data!! - if (wellDetail.bfztName == "布防") { - wellStateView.setTextColor(R.color.greenTextColor.covertColor(this)) - } else { - wellStateView.setTextColor(R.color.redTextColor.covertColor(this)) - } - wellStateView.text = wellDetail.bfztName - } - }) - } - - installDateView.text = orderDetail.createTime - val depth = orderDetail.deep.toString() - if (depth == "") { - wellDepthView.text = resources.getString(R.string.unknown) - } else { - wellDepthView.text = depth - } - //绑定窨井位置 + devCodeView.text = orderDetail.devcode + alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() wellLocationView.text = wellPosition + if (wellPosition.length > 12) { + tipsImageView.visibility = View.VISIBLE + tipsImageView.setOnClickListener { + AlertMessageDialog.Builder() + .setContext(this) + .setTitle("窨井完整位置") + .setMessage(wellPosition) + .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build() + .show() + } + } else { + tipsImageView.visibility = View.GONE + } + dispatchDateView.text = orderDetail.getJobTime //接单 acceptOrderButton.setChangeAlphaWhenPress(true) acceptOrderButton.setOnClickListener { acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java) - acceptOrderViewModel.acceptWorkOrder(id = orderDetail.id) + AlertControlDialog.Builder() + .setContext(this) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + if (orderDetail.jobId.toString() == "") { + "工单ID异常,无法接单".show(this@WorkOrderDetailActivity) + return + } + acceptOrderViewModel.acceptWorkOrder(id = orderDetail.jobId!!.toInt()) + } + + override fun onCancelClick() { + + } + }) + .build().show() } //导航 navigationButton.setChangeAlphaWhenPress(true) navigationButton.setOnClickListener { - val lat = orderDetail.latGaode.toString() - val lng = orderDetail.lngGaode.toString() - if (lat == "" || lng == "") { - "窨井经纬度异常,无法开启导航".show(this) + wellDetailViewModel = + ViewModelProvider(this).get(WellDetailViewModel::class.java) + val wellId = orderDetail.wellId.toString() + if (wellId == "") { + "窨井ID异常,无法导航".show(this@WorkOrderDetailActivity) return@setOnClickListener } - Poi( - orderDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(this) + wellDetailViewModel.obtainWellDetail(id = wellId) + wellDetailViewModel.detailModel.observe(this, { well -> + if (well.code == 200) { + val wellDetail = well.data!! + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat == "" || lng == "") { + "窨井经纬度异常,无法开启导航".show(this) + } else { + Poi( + orderDetail.position, + LatLng(lat.toDouble(), lng.toDouble()), + "" + ).showRouteOnMap(this) + } + } + }) } } }) diff --git a/app/build.gradle b/app/build.gradle index a4224f0..42722ca 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -77,4 +77,9 @@ //高德导航 implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' implementation 'com.amap.api:location:5.3.1' + //日期选择器 + implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' + } diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt new file mode 100644 index 0000000..ee3685d --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -0,0 +1,6 @@ +package com.casic.app.smartwell.extensions + +import java.text.SimpleDateFormat +import java.util.* + +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt new file mode 100644 index 0000000..6911fd1 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt @@ -0,0 +1,29 @@ +package com.casic.app.smartwell.model + +class AlarmContentTypeModel { + /** + * code : 200 + * data : {"list":[{"deviceType":"1","alarmType":"1","name":"井盖开盖报警","value":"1"},{"deviceType":"2","alarmType":"1","name":"液位超限","value":"4"},{"deviceType":"3","alarmType":"1","name":"有害气体超标","value":"10"},{"deviceType":"5","alarmType":"1","name":"温湿度超限","value":"11"},{"deviceType":"6","alarmType":"1","name":"疑似开挖","value":"12"},{"deviceType":"4","alarmType":"1","name":"浓度超限","value":"13"},{"deviceType":"8","alarmType":"1","name":"噪声超限","value":"22"}]} + * message : success + */ + var code = 0 + var data: DataBean? = null + var message: String? = null + + class DataBean { + var list: List? = null + + class ListBean { + /** + * deviceType : 1 + * alarmType : 1 + * name : 井盖开盖报警 + * value : 1 + */ + var deviceType: String? = null + var alarmType: String? = null + var name: String? = null + var value: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt new file mode 100644 index 0000000..1fefd20 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt @@ -0,0 +1,25 @@ +package com.casic.app.smartwell.model + +class OrderStatusModel { + /** + * code : 200 + * data : [{"name":"待处理","id":"84","value":"0"},{"name":"待确认","id":"85","value":"1"},{"name":"处理中","id":"86","value":"2"},{"name":"已完成","id":"87","value":"3"},{"name":"已取消","id":"93","value":"4"}] + * message : 请求成功 + * success : true + */ + var code = 0 + var message: String? = null + var success = false + var data: List? = null + + class DataBean { + /** + * name : 待处理 + * id : 84 + * value : 0 + */ + var name: String? = null + var id: String? = null + var value: String? = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt index 91ad645..8d23f3e 100644 --- a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt @@ -3,98 +3,99 @@ class WorkOrderDetailModel { /** * code : 200 - * message : success - * data : {"id":1,"wellId":1,"wellCode":"N51F131","wellName":"闸井名称","deep":32,"devcode":"41201802100","position":"宋郎路","coordinateX":"39.899999999","coordinateY":"116.70000000","latBaidu":"39.901694","lngBaidu":"116.709315","latGaode":"","lngGaode":"","alarmId":"1","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","deptid":"1","deptName":"一分公司","jobCode":"201902340484","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","firstState":"现场情况描述","firstStatePhotos":"现场情况图片","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00","handleMessage":"维护情况描述","handlePhotos":"维护图片","flow":[{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}],"editable":"1"} + * data : [{"firstState":"","alarmContent":22,"deptName":"燃气集团总公司","jobStatus":"0","handleJobPerson":"","alarmContentName":"噪声超限","shouldGetTime":"","firstStatePhotos":"","wellCode":"test001","deptid":"24","alarmTypeName":"数据异常","jobCode":"ZSCX202009070001","jobBelongTo":"","jobFlag":"","confirmJobPerson":"","confirmJobTime":"","jobStatusName":"待处理","alarmValue":"4000.86","alarmId":"11243","alarmLevel":0,"handleJobTime":"","tel":"","id":"1232178","wellId":"4453","jobType":"1","flow":[],"editable":1,"alarmTime":"2019-10-17 14:22:00","handleMessage":"","alarmMessage":"噪声超限","staff":"吴甘牛","handlePhotos":"","getJobTime":"","getJobPerson":"","shouldHandleTime":"","jobId":"1232178","alarmType":"1","alarmStatus":"1","devcode":"212020000a","createTime":"2020-09-07 09:30:18","position":"test001位置"}] + * message : 请求成功 + * success : true */ var code = 0 var message: String? = null - var data: DataBean? = null + var success = false + var data: List? = null class DataBean { /** - * id : 1 - * wellId : 1 - * wellCode : N51F131 - * wellName : 闸井名称 - * deep : 32 - * devcode : 41201802100 - * position : 宋郎路 - * coordinateX : 39.899999999 - * coordinateY : 116.70000000 - * latBaidu : 39.901694 - * lngBaidu : 116.709315 - * latGaode : - * lngGaode : - * alarmId : 1 - * alarmType : 1 - * alarmTypeName : 数据异常 - * alarmContent : 1 - * alarmContentName : 液位超限 - * deptid : 1 - * deptName : 一分公司 - * jobCode : 201902340484 + * firstState : + * alarmContent : 22 + * deptName : 燃气集团总公司 * jobStatus : 0 + * handleJobPerson : + * alarmContentName : 噪声超限 + * shouldGetTime : + * firstStatePhotos : + * wellCode : test001 + * deptid : 24 + * alarmTypeName : 数据异常 + * jobCode : ZSCX202009070001 + * jobBelongTo : + * jobFlag : + * confirmJobPerson : + * confirmJobTime : * jobStatusName : 待处理 - * createTime : 2018-12-27 00:00:00 - * getJobPerson : 1321321 - * getJobTime : 2018-12-27 00:00:00 - * firstState : 现场情况描述 - * firstStatePhotos : 现场情况图片 - * confirmJobPerson : 1321321 - * confirmJobTime : 2018-12-27 00:00:00 - * handleJobPerson : 1321321 - * handleJobTime : 2018-12-27 00:00:00 - * handleMessage : 维护情况描述 - * handlePhotos : 维护图片 - * flow : [{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}] + * alarmValue : 4000.86 + * alarmId : 11243 + * alarmLevel : 0 + * handleJobTime : + * tel : + * id : 1232178 + * wellId : 4453 + * jobType : 1 + * flow : [] * editable : 1 + * alarmTime : 2019-10-17 14:22:00 + * handleMessage : + * alarmMessage : 噪声超限 + * staff : 吴甘牛 + * handlePhotos : + * getJobTime : + * getJobPerson : + * shouldHandleTime : + * jobId : 1232178 + * alarmType : 1 + * alarmStatus : 1 + * devcode : 212020000a + * createTime : 2020-09-07 09:30:18 + * position : test001位置 */ - var id = 0 - var wellId = 0 - var wellCode: String? = null - var wellName: String? = null - var deep = 0 - var devcode: String? = null - var position: String? = null - var coordinateX: String? = null - var coordinateY: String? = null - var latBaidu: String? = null - var lngBaidu: String? = null - var latGaode: String? = null - var lngGaode: String? = null - var alarmId: String? = null - var alarmType: String? = null - var alarmTypeName: String? = null - var alarmContent: String? = null - var alarmContentName: String? = null - var deptid: String? = null - var deptName: String? = null - var jobCode: String? = null - var jobStatus: String? = null - var jobStatusName: String? = null - var createTime: String? = null - var getJobPerson: String? = null - var getJobTime: String? = null var firstState: String? = null + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null var firstStatePhotos: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null var confirmJobPerson: String? = null var confirmJobTime: String? = null - var handleJobPerson: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel = 0 var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null var handleMessage: String? = null + var alarmMessage: String? = null + var staff: String? = null var handlePhotos: String? = null - var editable: String? = null - var flow: List? = null - - class FlowBean { - /** - * from : 张三 - * to : 李四 - * time : 2019-02-22-12:00:00 - */ - var from: String? = null - var to: String? = null - var time: String? = null - } + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + var flow: List<*>? = null } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index 91e8410..358ff17 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -23,6 +23,7 @@ ) } + const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 const val ORDER_TRANSFER_OK = 21 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index cd3b564..9b64524 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -107,7 +107,7 @@ ): WorkOrderDetailModel /** - * 转单 + * 接单 */ @FormUrlEncoded @POST("/job/getJob") @@ -117,6 +117,22 @@ ): CommonResultModel /** + * 告警内容列表 + * */ + @GET("/alarm/contentType") + suspend fun obtainAlarmContentType( + @Header("token") token: String + ): AlarmContentTypeModel + + /** + * 工单状态 + * */ + @GET("/dict/code/jobStatus") + suspend fun obtainOrderStatus( + @Header("token") token: String + ): OrderStatusModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index bfc49e8..d574dda 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -110,6 +110,20 @@ } /** + * 告警内容列表 + */ + suspend fun obtainAlarmContentType(): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!) + } + + /** + * 工单状态 + */ + suspend fun obtainOrderStatus(): OrderStatusModel { + return api.obtainOrderStatus(AuthenticationHelper.token!!) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index 226d94b..6016a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,12 +1,37 @@ package com.casic.app.smartwell.view +import android.util.Log +import android.view.LayoutInflater import android.view.View +import android.widget.TextView +import androidx.core.content.ContextCompat +import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.model.AlarmContentTypeModel +import com.casic.app.smartwell.model.OrderStatusModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.vm.AlarmContentTypeViewModel +import com.casic.app.smartwell.vm.OrderStatusViewModel +import com.google.gson.Gson +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter +import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* + class SearchWorkOrderActivity : BaseActivity() { + private val kTag = "SearchWorkOrderActivity" + private lateinit var contentTypeViewModel: AlarmContentTypeViewModel + private lateinit var orderStatusViewModel: OrderStatusViewModel + private lateinit var inflater: LayoutInflater + private var alarmTypeModels: MutableList = ArrayList() + private var orderStatusModels: MutableList = ArrayList() + override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { @@ -16,10 +41,103 @@ } override fun initData() { + inflater = LayoutInflater.from(this) + //告警内容 + contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) + contentTypeViewModel.obtainAlarmContentType() + contentTypeViewModel.listModel.observe(this, { + if (it.code == 200) { + it.data!!.list?.forEachIndexed { index, dataBean -> + val bean: AlarmContentTypeModel.DataBean.ListBean + if (index == 0) { + bean = AlarmContentTypeModel.DataBean.ListBean() + bean.value = "" + bean.name = "全部" + bean.alarmType = "" + bean.deviceType = "" + } else { + bean = dataBean + } + alarmTypeModels.add(bean) + } + Log.d(kTag, "告警内容: ${Gson().toJson(alarmTypeModels)}") + } + }) + //工单状态 + orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) + orderStatusViewModel.obtainOrderStatus() + orderStatusViewModel.listModel.observe(this, { + if (it.code == 200) { + it.data!!.forEachIndexed { index, dataBean -> + val bean: OrderStatusModel.DataBean + if (index == 0) { + bean = OrderStatusModel.DataBean() + bean.name = "全部" + bean.id = "" + bean.value = "" + } else { + bean = dataBean + } + orderStatusModels.add(bean) + } + + orderStatusLayout.adapter = + object : TagAdapter(orderStatusModels) { + override fun getView( + parent: FlowLayout?, + position: Int, bean: OrderStatusModel.DataBean? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, + false + ) as TextView + tagView.text = orderStatusModels[position].name + return tagView + } + } + } + }) } override fun initEvent() { + selectStartTimeView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择开始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { _: TimePickerDialog?, millSeconds: Long -> + selectStartTimeView.text = millSeconds.timestampToDate() + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndTimeView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { _: TimePickerDialog?, millSeconds: Long -> + selectEndTimeView.text = millSeconds.timestampToDate() + }.build().show(supportFragmentManager, "year_month_day") + } + + searchButton.setChangeAlphaWhenPress(true) + searchButton.setOnClickListener { + + } + + clearButton.setChangeAlphaWhenPress(true) + clearButton.setOnClickListener { + + } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index 43a6620..0bcb4aa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -59,7 +59,7 @@ tipsImageView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) - .setTitle("窨井详细位置") + .setTitle("窨井完整位置") .setMessage(wellPosition) .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build() .show() diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt index 500b6ff..37dc5d6 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt @@ -6,10 +6,8 @@ import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.covertColor import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.showRouteOnMap -import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState @@ -17,6 +15,8 @@ import com.casic.app.smartwell.vm.AcceptOrderViewModel import com.casic.app.smartwell.vm.WellDetailViewModel import com.casic.app.smartwell.vm.WorkOrderDetailViewModel +import com.pengxh.app.multilib.widget.dialog.AlertControlDialog +import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -40,64 +40,85 @@ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId.toLong()) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { - val orderDetail = it.data!! - alarmTypeView.text = orderDetail.alarmContentName + val orderDetail = it.data!![0] + alarmContentView.text = orderDetail.alarmContentName + alarmDateView.text = orderDetail.alarmTime + orderCodeView.text = orderDetail.jobCode wellCodeView.text = orderDetail.wellCode - wellNameView.text = orderDetail.wellName - wellTypeView.text = orderDetail.wellId.valueToType() - - wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java) - val wellId = orderDetail.wellId.toString() - if (wellId == "") { - wellStateView.text = "状态未知" - } else { - wellDetailViewModel.obtainWellDetail(id = wellId) - wellDetailViewModel.detailModel.observe(this, { well -> - if (well.code == 200) { - val wellDetail = well.data!! - if (wellDetail.bfztName == "布防") { - wellStateView.setTextColor(R.color.greenTextColor.covertColor(this)) - } else { - wellStateView.setTextColor(R.color.redTextColor.covertColor(this)) - } - wellStateView.text = wellDetail.bfztName - } - }) - } - - installDateView.text = orderDetail.createTime - val depth = orderDetail.deep.toString() - if (depth == "") { - wellDepthView.text = resources.getString(R.string.unknown) - } else { - wellDepthView.text = depth - } - //绑定窨井位置 + devCodeView.text = orderDetail.devcode + alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() wellLocationView.text = wellPosition + if (wellPosition.length > 12) { + tipsImageView.visibility = View.VISIBLE + tipsImageView.setOnClickListener { + AlertMessageDialog.Builder() + .setContext(this) + .setTitle("窨井完整位置") + .setMessage(wellPosition) + .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build() + .show() + } + } else { + tipsImageView.visibility = View.GONE + } + dispatchDateView.text = orderDetail.getJobTime //接单 acceptOrderButton.setChangeAlphaWhenPress(true) acceptOrderButton.setOnClickListener { acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java) - acceptOrderViewModel.acceptWorkOrder(id = orderDetail.id) + AlertControlDialog.Builder() + .setContext(this) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + if (orderDetail.jobId.toString() == "") { + "工单ID异常,无法接单".show(this@WorkOrderDetailActivity) + return + } + acceptOrderViewModel.acceptWorkOrder(id = orderDetail.jobId!!.toInt()) + } + + override fun onCancelClick() { + + } + }) + .build().show() } //导航 navigationButton.setChangeAlphaWhenPress(true) navigationButton.setOnClickListener { - val lat = orderDetail.latGaode.toString() - val lng = orderDetail.lngGaode.toString() - if (lat == "" || lng == "") { - "窨井经纬度异常,无法开启导航".show(this) + wellDetailViewModel = + ViewModelProvider(this).get(WellDetailViewModel::class.java) + val wellId = orderDetail.wellId.toString() + if (wellId == "") { + "窨井ID异常,无法导航".show(this@WorkOrderDetailActivity) return@setOnClickListener } - Poi( - orderDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(this) + wellDetailViewModel.obtainWellDetail(id = wellId) + wellDetailViewModel.detailModel.observe(this, { well -> + if (well.code == 200) { + val wellDetail = well.data!! + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat == "" || lng == "") { + "窨井经纬度异常,无法开启导航".show(this) + } else { + Poi( + orderDetail.position, + LatLng(lat.toDouble(), lng.toDouble()), + "" + ).showRouteOnMap(this) + } + } + }) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt new file mode 100644 index 0000000..98d5d42 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt @@ -0,0 +1,20 @@ +package com.casic.app.smartwell.vm + +import android.util.Log +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.AlarmContentTypeModel +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class AlarmContentTypeViewModel : BaseViewModel() { + + private val kTag = "AlarmContentType" + val listModel = MutableLiveData() + + fun obtainAlarmContentType() = launch({ + listModel.value = RetrofitServiceManager.obtainAlarmContentType() + }, { + Log.d(kTag, "obtainAlarmContentType: ${it.printStackTrace()}") + }) +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a4224f0..42722ca 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -77,4 +77,9 @@ //高德导航 implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' implementation 'com.amap.api:location:5.3.1' + //日期选择器 + implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' + } diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt new file mode 100644 index 0000000..ee3685d --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -0,0 +1,6 @@ +package com.casic.app.smartwell.extensions + +import java.text.SimpleDateFormat +import java.util.* + +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt new file mode 100644 index 0000000..6911fd1 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt @@ -0,0 +1,29 @@ +package com.casic.app.smartwell.model + +class AlarmContentTypeModel { + /** + * code : 200 + * data : {"list":[{"deviceType":"1","alarmType":"1","name":"井盖开盖报警","value":"1"},{"deviceType":"2","alarmType":"1","name":"液位超限","value":"4"},{"deviceType":"3","alarmType":"1","name":"有害气体超标","value":"10"},{"deviceType":"5","alarmType":"1","name":"温湿度超限","value":"11"},{"deviceType":"6","alarmType":"1","name":"疑似开挖","value":"12"},{"deviceType":"4","alarmType":"1","name":"浓度超限","value":"13"},{"deviceType":"8","alarmType":"1","name":"噪声超限","value":"22"}]} + * message : success + */ + var code = 0 + var data: DataBean? = null + var message: String? = null + + class DataBean { + var list: List? = null + + class ListBean { + /** + * deviceType : 1 + * alarmType : 1 + * name : 井盖开盖报警 + * value : 1 + */ + var deviceType: String? = null + var alarmType: String? = null + var name: String? = null + var value: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt new file mode 100644 index 0000000..1fefd20 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt @@ -0,0 +1,25 @@ +package com.casic.app.smartwell.model + +class OrderStatusModel { + /** + * code : 200 + * data : [{"name":"待处理","id":"84","value":"0"},{"name":"待确认","id":"85","value":"1"},{"name":"处理中","id":"86","value":"2"},{"name":"已完成","id":"87","value":"3"},{"name":"已取消","id":"93","value":"4"}] + * message : 请求成功 + * success : true + */ + var code = 0 + var message: String? = null + var success = false + var data: List? = null + + class DataBean { + /** + * name : 待处理 + * id : 84 + * value : 0 + */ + var name: String? = null + var id: String? = null + var value: String? = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt index 91ad645..8d23f3e 100644 --- a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt @@ -3,98 +3,99 @@ class WorkOrderDetailModel { /** * code : 200 - * message : success - * data : {"id":1,"wellId":1,"wellCode":"N51F131","wellName":"闸井名称","deep":32,"devcode":"41201802100","position":"宋郎路","coordinateX":"39.899999999","coordinateY":"116.70000000","latBaidu":"39.901694","lngBaidu":"116.709315","latGaode":"","lngGaode":"","alarmId":"1","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","deptid":"1","deptName":"一分公司","jobCode":"201902340484","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","firstState":"现场情况描述","firstStatePhotos":"现场情况图片","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00","handleMessage":"维护情况描述","handlePhotos":"维护图片","flow":[{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}],"editable":"1"} + * data : [{"firstState":"","alarmContent":22,"deptName":"燃气集团总公司","jobStatus":"0","handleJobPerson":"","alarmContentName":"噪声超限","shouldGetTime":"","firstStatePhotos":"","wellCode":"test001","deptid":"24","alarmTypeName":"数据异常","jobCode":"ZSCX202009070001","jobBelongTo":"","jobFlag":"","confirmJobPerson":"","confirmJobTime":"","jobStatusName":"待处理","alarmValue":"4000.86","alarmId":"11243","alarmLevel":0,"handleJobTime":"","tel":"","id":"1232178","wellId":"4453","jobType":"1","flow":[],"editable":1,"alarmTime":"2019-10-17 14:22:00","handleMessage":"","alarmMessage":"噪声超限","staff":"吴甘牛","handlePhotos":"","getJobTime":"","getJobPerson":"","shouldHandleTime":"","jobId":"1232178","alarmType":"1","alarmStatus":"1","devcode":"212020000a","createTime":"2020-09-07 09:30:18","position":"test001位置"}] + * message : 请求成功 + * success : true */ var code = 0 var message: String? = null - var data: DataBean? = null + var success = false + var data: List? = null class DataBean { /** - * id : 1 - * wellId : 1 - * wellCode : N51F131 - * wellName : 闸井名称 - * deep : 32 - * devcode : 41201802100 - * position : 宋郎路 - * coordinateX : 39.899999999 - * coordinateY : 116.70000000 - * latBaidu : 39.901694 - * lngBaidu : 116.709315 - * latGaode : - * lngGaode : - * alarmId : 1 - * alarmType : 1 - * alarmTypeName : 数据异常 - * alarmContent : 1 - * alarmContentName : 液位超限 - * deptid : 1 - * deptName : 一分公司 - * jobCode : 201902340484 + * firstState : + * alarmContent : 22 + * deptName : 燃气集团总公司 * jobStatus : 0 + * handleJobPerson : + * alarmContentName : 噪声超限 + * shouldGetTime : + * firstStatePhotos : + * wellCode : test001 + * deptid : 24 + * alarmTypeName : 数据异常 + * jobCode : ZSCX202009070001 + * jobBelongTo : + * jobFlag : + * confirmJobPerson : + * confirmJobTime : * jobStatusName : 待处理 - * createTime : 2018-12-27 00:00:00 - * getJobPerson : 1321321 - * getJobTime : 2018-12-27 00:00:00 - * firstState : 现场情况描述 - * firstStatePhotos : 现场情况图片 - * confirmJobPerson : 1321321 - * confirmJobTime : 2018-12-27 00:00:00 - * handleJobPerson : 1321321 - * handleJobTime : 2018-12-27 00:00:00 - * handleMessage : 维护情况描述 - * handlePhotos : 维护图片 - * flow : [{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}] + * alarmValue : 4000.86 + * alarmId : 11243 + * alarmLevel : 0 + * handleJobTime : + * tel : + * id : 1232178 + * wellId : 4453 + * jobType : 1 + * flow : [] * editable : 1 + * alarmTime : 2019-10-17 14:22:00 + * handleMessage : + * alarmMessage : 噪声超限 + * staff : 吴甘牛 + * handlePhotos : + * getJobTime : + * getJobPerson : + * shouldHandleTime : + * jobId : 1232178 + * alarmType : 1 + * alarmStatus : 1 + * devcode : 212020000a + * createTime : 2020-09-07 09:30:18 + * position : test001位置 */ - var id = 0 - var wellId = 0 - var wellCode: String? = null - var wellName: String? = null - var deep = 0 - var devcode: String? = null - var position: String? = null - var coordinateX: String? = null - var coordinateY: String? = null - var latBaidu: String? = null - var lngBaidu: String? = null - var latGaode: String? = null - var lngGaode: String? = null - var alarmId: String? = null - var alarmType: String? = null - var alarmTypeName: String? = null - var alarmContent: String? = null - var alarmContentName: String? = null - var deptid: String? = null - var deptName: String? = null - var jobCode: String? = null - var jobStatus: String? = null - var jobStatusName: String? = null - var createTime: String? = null - var getJobPerson: String? = null - var getJobTime: String? = null var firstState: String? = null + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null var firstStatePhotos: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null var confirmJobPerson: String? = null var confirmJobTime: String? = null - var handleJobPerson: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel = 0 var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null var handleMessage: String? = null + var alarmMessage: String? = null + var staff: String? = null var handlePhotos: String? = null - var editable: String? = null - var flow: List? = null - - class FlowBean { - /** - * from : 张三 - * to : 李四 - * time : 2019-02-22-12:00:00 - */ - var from: String? = null - var to: String? = null - var time: String? = null - } + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + var flow: List<*>? = null } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index 91e8410..358ff17 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -23,6 +23,7 @@ ) } + const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 const val ORDER_TRANSFER_OK = 21 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index cd3b564..9b64524 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -107,7 +107,7 @@ ): WorkOrderDetailModel /** - * 转单 + * 接单 */ @FormUrlEncoded @POST("/job/getJob") @@ -117,6 +117,22 @@ ): CommonResultModel /** + * 告警内容列表 + * */ + @GET("/alarm/contentType") + suspend fun obtainAlarmContentType( + @Header("token") token: String + ): AlarmContentTypeModel + + /** + * 工单状态 + * */ + @GET("/dict/code/jobStatus") + suspend fun obtainOrderStatus( + @Header("token") token: String + ): OrderStatusModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index bfc49e8..d574dda 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -110,6 +110,20 @@ } /** + * 告警内容列表 + */ + suspend fun obtainAlarmContentType(): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!) + } + + /** + * 工单状态 + */ + suspend fun obtainOrderStatus(): OrderStatusModel { + return api.obtainOrderStatus(AuthenticationHelper.token!!) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index 226d94b..6016a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,12 +1,37 @@ package com.casic.app.smartwell.view +import android.util.Log +import android.view.LayoutInflater import android.view.View +import android.widget.TextView +import androidx.core.content.ContextCompat +import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.model.AlarmContentTypeModel +import com.casic.app.smartwell.model.OrderStatusModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.vm.AlarmContentTypeViewModel +import com.casic.app.smartwell.vm.OrderStatusViewModel +import com.google.gson.Gson +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter +import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* + class SearchWorkOrderActivity : BaseActivity() { + private val kTag = "SearchWorkOrderActivity" + private lateinit var contentTypeViewModel: AlarmContentTypeViewModel + private lateinit var orderStatusViewModel: OrderStatusViewModel + private lateinit var inflater: LayoutInflater + private var alarmTypeModels: MutableList = ArrayList() + private var orderStatusModels: MutableList = ArrayList() + override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { @@ -16,10 +41,103 @@ } override fun initData() { + inflater = LayoutInflater.from(this) + //告警内容 + contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) + contentTypeViewModel.obtainAlarmContentType() + contentTypeViewModel.listModel.observe(this, { + if (it.code == 200) { + it.data!!.list?.forEachIndexed { index, dataBean -> + val bean: AlarmContentTypeModel.DataBean.ListBean + if (index == 0) { + bean = AlarmContentTypeModel.DataBean.ListBean() + bean.value = "" + bean.name = "全部" + bean.alarmType = "" + bean.deviceType = "" + } else { + bean = dataBean + } + alarmTypeModels.add(bean) + } + Log.d(kTag, "告警内容: ${Gson().toJson(alarmTypeModels)}") + } + }) + //工单状态 + orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) + orderStatusViewModel.obtainOrderStatus() + orderStatusViewModel.listModel.observe(this, { + if (it.code == 200) { + it.data!!.forEachIndexed { index, dataBean -> + val bean: OrderStatusModel.DataBean + if (index == 0) { + bean = OrderStatusModel.DataBean() + bean.name = "全部" + bean.id = "" + bean.value = "" + } else { + bean = dataBean + } + orderStatusModels.add(bean) + } + + orderStatusLayout.adapter = + object : TagAdapter(orderStatusModels) { + override fun getView( + parent: FlowLayout?, + position: Int, bean: OrderStatusModel.DataBean? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, + false + ) as TextView + tagView.text = orderStatusModels[position].name + return tagView + } + } + } + }) } override fun initEvent() { + selectStartTimeView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择开始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { _: TimePickerDialog?, millSeconds: Long -> + selectStartTimeView.text = millSeconds.timestampToDate() + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndTimeView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { _: TimePickerDialog?, millSeconds: Long -> + selectEndTimeView.text = millSeconds.timestampToDate() + }.build().show(supportFragmentManager, "year_month_day") + } + + searchButton.setChangeAlphaWhenPress(true) + searchButton.setOnClickListener { + + } + + clearButton.setChangeAlphaWhenPress(true) + clearButton.setOnClickListener { + + } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index 43a6620..0bcb4aa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -59,7 +59,7 @@ tipsImageView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) - .setTitle("窨井详细位置") + .setTitle("窨井完整位置") .setMessage(wellPosition) .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build() .show() diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt index 500b6ff..37dc5d6 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt @@ -6,10 +6,8 @@ import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.covertColor import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.showRouteOnMap -import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState @@ -17,6 +15,8 @@ import com.casic.app.smartwell.vm.AcceptOrderViewModel import com.casic.app.smartwell.vm.WellDetailViewModel import com.casic.app.smartwell.vm.WorkOrderDetailViewModel +import com.pengxh.app.multilib.widget.dialog.AlertControlDialog +import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -40,64 +40,85 @@ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId.toLong()) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { - val orderDetail = it.data!! - alarmTypeView.text = orderDetail.alarmContentName + val orderDetail = it.data!![0] + alarmContentView.text = orderDetail.alarmContentName + alarmDateView.text = orderDetail.alarmTime + orderCodeView.text = orderDetail.jobCode wellCodeView.text = orderDetail.wellCode - wellNameView.text = orderDetail.wellName - wellTypeView.text = orderDetail.wellId.valueToType() - - wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java) - val wellId = orderDetail.wellId.toString() - if (wellId == "") { - wellStateView.text = "状态未知" - } else { - wellDetailViewModel.obtainWellDetail(id = wellId) - wellDetailViewModel.detailModel.observe(this, { well -> - if (well.code == 200) { - val wellDetail = well.data!! - if (wellDetail.bfztName == "布防") { - wellStateView.setTextColor(R.color.greenTextColor.covertColor(this)) - } else { - wellStateView.setTextColor(R.color.redTextColor.covertColor(this)) - } - wellStateView.text = wellDetail.bfztName - } - }) - } - - installDateView.text = orderDetail.createTime - val depth = orderDetail.deep.toString() - if (depth == "") { - wellDepthView.text = resources.getString(R.string.unknown) - } else { - wellDepthView.text = depth - } - //绑定窨井位置 + devCodeView.text = orderDetail.devcode + alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() wellLocationView.text = wellPosition + if (wellPosition.length > 12) { + tipsImageView.visibility = View.VISIBLE + tipsImageView.setOnClickListener { + AlertMessageDialog.Builder() + .setContext(this) + .setTitle("窨井完整位置") + .setMessage(wellPosition) + .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build() + .show() + } + } else { + tipsImageView.visibility = View.GONE + } + dispatchDateView.text = orderDetail.getJobTime //接单 acceptOrderButton.setChangeAlphaWhenPress(true) acceptOrderButton.setOnClickListener { acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java) - acceptOrderViewModel.acceptWorkOrder(id = orderDetail.id) + AlertControlDialog.Builder() + .setContext(this) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + if (orderDetail.jobId.toString() == "") { + "工单ID异常,无法接单".show(this@WorkOrderDetailActivity) + return + } + acceptOrderViewModel.acceptWorkOrder(id = orderDetail.jobId!!.toInt()) + } + + override fun onCancelClick() { + + } + }) + .build().show() } //导航 navigationButton.setChangeAlphaWhenPress(true) navigationButton.setOnClickListener { - val lat = orderDetail.latGaode.toString() - val lng = orderDetail.lngGaode.toString() - if (lat == "" || lng == "") { - "窨井经纬度异常,无法开启导航".show(this) + wellDetailViewModel = + ViewModelProvider(this).get(WellDetailViewModel::class.java) + val wellId = orderDetail.wellId.toString() + if (wellId == "") { + "窨井ID异常,无法导航".show(this@WorkOrderDetailActivity) return@setOnClickListener } - Poi( - orderDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(this) + wellDetailViewModel.obtainWellDetail(id = wellId) + wellDetailViewModel.detailModel.observe(this, { well -> + if (well.code == 200) { + val wellDetail = well.data!! + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat == "" || lng == "") { + "窨井经纬度异常,无法开启导航".show(this) + } else { + Poi( + orderDetail.position, + LatLng(lat.toDouble(), lng.toDouble()), + "" + ).showRouteOnMap(this) + } + } + }) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt new file mode 100644 index 0000000..98d5d42 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt @@ -0,0 +1,20 @@ +package com.casic.app.smartwell.vm + +import android.util.Log +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.AlarmContentTypeModel +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class AlarmContentTypeViewModel : BaseViewModel() { + + private val kTag = "AlarmContentType" + val listModel = MutableLiveData() + + fun obtainAlarmContentType() = launch({ + listModel.value = RetrofitServiceManager.obtainAlarmContentType() + }, { + Log.d(kTag, "obtainAlarmContentType: ${it.printStackTrace()}") + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/OrderStatusViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/OrderStatusViewModel.kt new file mode 100644 index 0000000..90eb8c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/OrderStatusViewModel.kt @@ -0,0 +1,20 @@ +package com.casic.app.smartwell.vm + +import android.util.Log +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.OrderStatusModel +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class OrderStatusViewModel : BaseViewModel() { + + private val kTag = "OrderStatusViewModel" + val listModel = MutableLiveData() + + fun obtainOrderStatus() = launch({ + listModel.value = RetrofitServiceManager.obtainOrderStatus() + }, { + Log.d(kTag, "obtainOrderStatus: ${it.printStackTrace()}") + }) +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a4224f0..42722ca 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -77,4 +77,9 @@ //高德导航 implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' implementation 'com.amap.api:location:5.3.1' + //日期选择器 + implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' + } diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt new file mode 100644 index 0000000..ee3685d --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -0,0 +1,6 @@ +package com.casic.app.smartwell.extensions + +import java.text.SimpleDateFormat +import java.util.* + +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt new file mode 100644 index 0000000..6911fd1 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt @@ -0,0 +1,29 @@ +package com.casic.app.smartwell.model + +class AlarmContentTypeModel { + /** + * code : 200 + * data : {"list":[{"deviceType":"1","alarmType":"1","name":"井盖开盖报警","value":"1"},{"deviceType":"2","alarmType":"1","name":"液位超限","value":"4"},{"deviceType":"3","alarmType":"1","name":"有害气体超标","value":"10"},{"deviceType":"5","alarmType":"1","name":"温湿度超限","value":"11"},{"deviceType":"6","alarmType":"1","name":"疑似开挖","value":"12"},{"deviceType":"4","alarmType":"1","name":"浓度超限","value":"13"},{"deviceType":"8","alarmType":"1","name":"噪声超限","value":"22"}]} + * message : success + */ + var code = 0 + var data: DataBean? = null + var message: String? = null + + class DataBean { + var list: List? = null + + class ListBean { + /** + * deviceType : 1 + * alarmType : 1 + * name : 井盖开盖报警 + * value : 1 + */ + var deviceType: String? = null + var alarmType: String? = null + var name: String? = null + var value: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt new file mode 100644 index 0000000..1fefd20 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt @@ -0,0 +1,25 @@ +package com.casic.app.smartwell.model + +class OrderStatusModel { + /** + * code : 200 + * data : [{"name":"待处理","id":"84","value":"0"},{"name":"待确认","id":"85","value":"1"},{"name":"处理中","id":"86","value":"2"},{"name":"已完成","id":"87","value":"3"},{"name":"已取消","id":"93","value":"4"}] + * message : 请求成功 + * success : true + */ + var code = 0 + var message: String? = null + var success = false + var data: List? = null + + class DataBean { + /** + * name : 待处理 + * id : 84 + * value : 0 + */ + var name: String? = null + var id: String? = null + var value: String? = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt index 91ad645..8d23f3e 100644 --- a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt @@ -3,98 +3,99 @@ class WorkOrderDetailModel { /** * code : 200 - * message : success - * data : {"id":1,"wellId":1,"wellCode":"N51F131","wellName":"闸井名称","deep":32,"devcode":"41201802100","position":"宋郎路","coordinateX":"39.899999999","coordinateY":"116.70000000","latBaidu":"39.901694","lngBaidu":"116.709315","latGaode":"","lngGaode":"","alarmId":"1","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","deptid":"1","deptName":"一分公司","jobCode":"201902340484","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","firstState":"现场情况描述","firstStatePhotos":"现场情况图片","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00","handleMessage":"维护情况描述","handlePhotos":"维护图片","flow":[{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}],"editable":"1"} + * data : [{"firstState":"","alarmContent":22,"deptName":"燃气集团总公司","jobStatus":"0","handleJobPerson":"","alarmContentName":"噪声超限","shouldGetTime":"","firstStatePhotos":"","wellCode":"test001","deptid":"24","alarmTypeName":"数据异常","jobCode":"ZSCX202009070001","jobBelongTo":"","jobFlag":"","confirmJobPerson":"","confirmJobTime":"","jobStatusName":"待处理","alarmValue":"4000.86","alarmId":"11243","alarmLevel":0,"handleJobTime":"","tel":"","id":"1232178","wellId":"4453","jobType":"1","flow":[],"editable":1,"alarmTime":"2019-10-17 14:22:00","handleMessage":"","alarmMessage":"噪声超限","staff":"吴甘牛","handlePhotos":"","getJobTime":"","getJobPerson":"","shouldHandleTime":"","jobId":"1232178","alarmType":"1","alarmStatus":"1","devcode":"212020000a","createTime":"2020-09-07 09:30:18","position":"test001位置"}] + * message : 请求成功 + * success : true */ var code = 0 var message: String? = null - var data: DataBean? = null + var success = false + var data: List? = null class DataBean { /** - * id : 1 - * wellId : 1 - * wellCode : N51F131 - * wellName : 闸井名称 - * deep : 32 - * devcode : 41201802100 - * position : 宋郎路 - * coordinateX : 39.899999999 - * coordinateY : 116.70000000 - * latBaidu : 39.901694 - * lngBaidu : 116.709315 - * latGaode : - * lngGaode : - * alarmId : 1 - * alarmType : 1 - * alarmTypeName : 数据异常 - * alarmContent : 1 - * alarmContentName : 液位超限 - * deptid : 1 - * deptName : 一分公司 - * jobCode : 201902340484 + * firstState : + * alarmContent : 22 + * deptName : 燃气集团总公司 * jobStatus : 0 + * handleJobPerson : + * alarmContentName : 噪声超限 + * shouldGetTime : + * firstStatePhotos : + * wellCode : test001 + * deptid : 24 + * alarmTypeName : 数据异常 + * jobCode : ZSCX202009070001 + * jobBelongTo : + * jobFlag : + * confirmJobPerson : + * confirmJobTime : * jobStatusName : 待处理 - * createTime : 2018-12-27 00:00:00 - * getJobPerson : 1321321 - * getJobTime : 2018-12-27 00:00:00 - * firstState : 现场情况描述 - * firstStatePhotos : 现场情况图片 - * confirmJobPerson : 1321321 - * confirmJobTime : 2018-12-27 00:00:00 - * handleJobPerson : 1321321 - * handleJobTime : 2018-12-27 00:00:00 - * handleMessage : 维护情况描述 - * handlePhotos : 维护图片 - * flow : [{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}] + * alarmValue : 4000.86 + * alarmId : 11243 + * alarmLevel : 0 + * handleJobTime : + * tel : + * id : 1232178 + * wellId : 4453 + * jobType : 1 + * flow : [] * editable : 1 + * alarmTime : 2019-10-17 14:22:00 + * handleMessage : + * alarmMessage : 噪声超限 + * staff : 吴甘牛 + * handlePhotos : + * getJobTime : + * getJobPerson : + * shouldHandleTime : + * jobId : 1232178 + * alarmType : 1 + * alarmStatus : 1 + * devcode : 212020000a + * createTime : 2020-09-07 09:30:18 + * position : test001位置 */ - var id = 0 - var wellId = 0 - var wellCode: String? = null - var wellName: String? = null - var deep = 0 - var devcode: String? = null - var position: String? = null - var coordinateX: String? = null - var coordinateY: String? = null - var latBaidu: String? = null - var lngBaidu: String? = null - var latGaode: String? = null - var lngGaode: String? = null - var alarmId: String? = null - var alarmType: String? = null - var alarmTypeName: String? = null - var alarmContent: String? = null - var alarmContentName: String? = null - var deptid: String? = null - var deptName: String? = null - var jobCode: String? = null - var jobStatus: String? = null - var jobStatusName: String? = null - var createTime: String? = null - var getJobPerson: String? = null - var getJobTime: String? = null var firstState: String? = null + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null var firstStatePhotos: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null var confirmJobPerson: String? = null var confirmJobTime: String? = null - var handleJobPerson: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel = 0 var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null var handleMessage: String? = null + var alarmMessage: String? = null + var staff: String? = null var handlePhotos: String? = null - var editable: String? = null - var flow: List? = null - - class FlowBean { - /** - * from : 张三 - * to : 李四 - * time : 2019-02-22-12:00:00 - */ - var from: String? = null - var to: String? = null - var time: String? = null - } + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + var flow: List<*>? = null } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index 91e8410..358ff17 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -23,6 +23,7 @@ ) } + const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 const val ORDER_TRANSFER_OK = 21 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index cd3b564..9b64524 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -107,7 +107,7 @@ ): WorkOrderDetailModel /** - * 转单 + * 接单 */ @FormUrlEncoded @POST("/job/getJob") @@ -117,6 +117,22 @@ ): CommonResultModel /** + * 告警内容列表 + * */ + @GET("/alarm/contentType") + suspend fun obtainAlarmContentType( + @Header("token") token: String + ): AlarmContentTypeModel + + /** + * 工单状态 + * */ + @GET("/dict/code/jobStatus") + suspend fun obtainOrderStatus( + @Header("token") token: String + ): OrderStatusModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index bfc49e8..d574dda 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -110,6 +110,20 @@ } /** + * 告警内容列表 + */ + suspend fun obtainAlarmContentType(): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!) + } + + /** + * 工单状态 + */ + suspend fun obtainOrderStatus(): OrderStatusModel { + return api.obtainOrderStatus(AuthenticationHelper.token!!) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index 226d94b..6016a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,12 +1,37 @@ package com.casic.app.smartwell.view +import android.util.Log +import android.view.LayoutInflater import android.view.View +import android.widget.TextView +import androidx.core.content.ContextCompat +import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.model.AlarmContentTypeModel +import com.casic.app.smartwell.model.OrderStatusModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.vm.AlarmContentTypeViewModel +import com.casic.app.smartwell.vm.OrderStatusViewModel +import com.google.gson.Gson +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter +import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* + class SearchWorkOrderActivity : BaseActivity() { + private val kTag = "SearchWorkOrderActivity" + private lateinit var contentTypeViewModel: AlarmContentTypeViewModel + private lateinit var orderStatusViewModel: OrderStatusViewModel + private lateinit var inflater: LayoutInflater + private var alarmTypeModels: MutableList = ArrayList() + private var orderStatusModels: MutableList = ArrayList() + override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { @@ -16,10 +41,103 @@ } override fun initData() { + inflater = LayoutInflater.from(this) + //告警内容 + contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) + contentTypeViewModel.obtainAlarmContentType() + contentTypeViewModel.listModel.observe(this, { + if (it.code == 200) { + it.data!!.list?.forEachIndexed { index, dataBean -> + val bean: AlarmContentTypeModel.DataBean.ListBean + if (index == 0) { + bean = AlarmContentTypeModel.DataBean.ListBean() + bean.value = "" + bean.name = "全部" + bean.alarmType = "" + bean.deviceType = "" + } else { + bean = dataBean + } + alarmTypeModels.add(bean) + } + Log.d(kTag, "告警内容: ${Gson().toJson(alarmTypeModels)}") + } + }) + //工单状态 + orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) + orderStatusViewModel.obtainOrderStatus() + orderStatusViewModel.listModel.observe(this, { + if (it.code == 200) { + it.data!!.forEachIndexed { index, dataBean -> + val bean: OrderStatusModel.DataBean + if (index == 0) { + bean = OrderStatusModel.DataBean() + bean.name = "全部" + bean.id = "" + bean.value = "" + } else { + bean = dataBean + } + orderStatusModels.add(bean) + } + + orderStatusLayout.adapter = + object : TagAdapter(orderStatusModels) { + override fun getView( + parent: FlowLayout?, + position: Int, bean: OrderStatusModel.DataBean? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, + false + ) as TextView + tagView.text = orderStatusModels[position].name + return tagView + } + } + } + }) } override fun initEvent() { + selectStartTimeView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择开始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { _: TimePickerDialog?, millSeconds: Long -> + selectStartTimeView.text = millSeconds.timestampToDate() + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndTimeView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { _: TimePickerDialog?, millSeconds: Long -> + selectEndTimeView.text = millSeconds.timestampToDate() + }.build().show(supportFragmentManager, "year_month_day") + } + + searchButton.setChangeAlphaWhenPress(true) + searchButton.setOnClickListener { + + } + + clearButton.setChangeAlphaWhenPress(true) + clearButton.setOnClickListener { + + } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index 43a6620..0bcb4aa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -59,7 +59,7 @@ tipsImageView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) - .setTitle("窨井详细位置") + .setTitle("窨井完整位置") .setMessage(wellPosition) .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build() .show() diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt index 500b6ff..37dc5d6 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt @@ -6,10 +6,8 @@ import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.covertColor import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.showRouteOnMap -import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState @@ -17,6 +15,8 @@ import com.casic.app.smartwell.vm.AcceptOrderViewModel import com.casic.app.smartwell.vm.WellDetailViewModel import com.casic.app.smartwell.vm.WorkOrderDetailViewModel +import com.pengxh.app.multilib.widget.dialog.AlertControlDialog +import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -40,64 +40,85 @@ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId.toLong()) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { - val orderDetail = it.data!! - alarmTypeView.text = orderDetail.alarmContentName + val orderDetail = it.data!![0] + alarmContentView.text = orderDetail.alarmContentName + alarmDateView.text = orderDetail.alarmTime + orderCodeView.text = orderDetail.jobCode wellCodeView.text = orderDetail.wellCode - wellNameView.text = orderDetail.wellName - wellTypeView.text = orderDetail.wellId.valueToType() - - wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java) - val wellId = orderDetail.wellId.toString() - if (wellId == "") { - wellStateView.text = "状态未知" - } else { - wellDetailViewModel.obtainWellDetail(id = wellId) - wellDetailViewModel.detailModel.observe(this, { well -> - if (well.code == 200) { - val wellDetail = well.data!! - if (wellDetail.bfztName == "布防") { - wellStateView.setTextColor(R.color.greenTextColor.covertColor(this)) - } else { - wellStateView.setTextColor(R.color.redTextColor.covertColor(this)) - } - wellStateView.text = wellDetail.bfztName - } - }) - } - - installDateView.text = orderDetail.createTime - val depth = orderDetail.deep.toString() - if (depth == "") { - wellDepthView.text = resources.getString(R.string.unknown) - } else { - wellDepthView.text = depth - } - //绑定窨井位置 + devCodeView.text = orderDetail.devcode + alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() wellLocationView.text = wellPosition + if (wellPosition.length > 12) { + tipsImageView.visibility = View.VISIBLE + tipsImageView.setOnClickListener { + AlertMessageDialog.Builder() + .setContext(this) + .setTitle("窨井完整位置") + .setMessage(wellPosition) + .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build() + .show() + } + } else { + tipsImageView.visibility = View.GONE + } + dispatchDateView.text = orderDetail.getJobTime //接单 acceptOrderButton.setChangeAlphaWhenPress(true) acceptOrderButton.setOnClickListener { acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java) - acceptOrderViewModel.acceptWorkOrder(id = orderDetail.id) + AlertControlDialog.Builder() + .setContext(this) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + if (orderDetail.jobId.toString() == "") { + "工单ID异常,无法接单".show(this@WorkOrderDetailActivity) + return + } + acceptOrderViewModel.acceptWorkOrder(id = orderDetail.jobId!!.toInt()) + } + + override fun onCancelClick() { + + } + }) + .build().show() } //导航 navigationButton.setChangeAlphaWhenPress(true) navigationButton.setOnClickListener { - val lat = orderDetail.latGaode.toString() - val lng = orderDetail.lngGaode.toString() - if (lat == "" || lng == "") { - "窨井经纬度异常,无法开启导航".show(this) + wellDetailViewModel = + ViewModelProvider(this).get(WellDetailViewModel::class.java) + val wellId = orderDetail.wellId.toString() + if (wellId == "") { + "窨井ID异常,无法导航".show(this@WorkOrderDetailActivity) return@setOnClickListener } - Poi( - orderDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(this) + wellDetailViewModel.obtainWellDetail(id = wellId) + wellDetailViewModel.detailModel.observe(this, { well -> + if (well.code == 200) { + val wellDetail = well.data!! + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat == "" || lng == "") { + "窨井经纬度异常,无法开启导航".show(this) + } else { + Poi( + orderDetail.position, + LatLng(lat.toDouble(), lng.toDouble()), + "" + ).showRouteOnMap(this) + } + } + }) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt new file mode 100644 index 0000000..98d5d42 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt @@ -0,0 +1,20 @@ +package com.casic.app.smartwell.vm + +import android.util.Log +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.AlarmContentTypeModel +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class AlarmContentTypeViewModel : BaseViewModel() { + + private val kTag = "AlarmContentType" + val listModel = MutableLiveData() + + fun obtainAlarmContentType() = launch({ + listModel.value = RetrofitServiceManager.obtainAlarmContentType() + }, { + Log.d(kTag, "obtainAlarmContentType: ${it.printStackTrace()}") + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/OrderStatusViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/OrderStatusViewModel.kt new file mode 100644 index 0000000..90eb8c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/OrderStatusViewModel.kt @@ -0,0 +1,20 @@ +package com.casic.app.smartwell.vm + +import android.util.Log +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.OrderStatusModel +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class OrderStatusViewModel : BaseViewModel() { + + private val kTag = "OrderStatusViewModel" + val listModel = MutableLiveData() + + fun obtainOrderStatus() = launch({ + listModel.value = RetrofitServiceManager.obtainOrderStatus() + }, { + Log.d(kTag, "obtainOrderStatus: ${it.printStackTrace()}") + }) +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_search_white.xml b/app/src/main/res/drawable/ic_search_white.xml index f25c40a..5d439e5 100644 --- a/app/src/main/res/drawable/ic_search_white.xml +++ b/app/src/main/res/drawable/ic_search_white.xml @@ -1,6 +1,6 @@ ? = null + + class ListBean { + /** + * deviceType : 1 + * alarmType : 1 + * name : 井盖开盖报警 + * value : 1 + */ + var deviceType: String? = null + var alarmType: String? = null + var name: String? = null + var value: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt new file mode 100644 index 0000000..1fefd20 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt @@ -0,0 +1,25 @@ +package com.casic.app.smartwell.model + +class OrderStatusModel { + /** + * code : 200 + * data : [{"name":"待处理","id":"84","value":"0"},{"name":"待确认","id":"85","value":"1"},{"name":"处理中","id":"86","value":"2"},{"name":"已完成","id":"87","value":"3"},{"name":"已取消","id":"93","value":"4"}] + * message : 请求成功 + * success : true + */ + var code = 0 + var message: String? = null + var success = false + var data: List? = null + + class DataBean { + /** + * name : 待处理 + * id : 84 + * value : 0 + */ + var name: String? = null + var id: String? = null + var value: String? = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt index 91ad645..8d23f3e 100644 --- a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt @@ -3,98 +3,99 @@ class WorkOrderDetailModel { /** * code : 200 - * message : success - * data : {"id":1,"wellId":1,"wellCode":"N51F131","wellName":"闸井名称","deep":32,"devcode":"41201802100","position":"宋郎路","coordinateX":"39.899999999","coordinateY":"116.70000000","latBaidu":"39.901694","lngBaidu":"116.709315","latGaode":"","lngGaode":"","alarmId":"1","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","deptid":"1","deptName":"一分公司","jobCode":"201902340484","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","firstState":"现场情况描述","firstStatePhotos":"现场情况图片","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00","handleMessage":"维护情况描述","handlePhotos":"维护图片","flow":[{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}],"editable":"1"} + * data : [{"firstState":"","alarmContent":22,"deptName":"燃气集团总公司","jobStatus":"0","handleJobPerson":"","alarmContentName":"噪声超限","shouldGetTime":"","firstStatePhotos":"","wellCode":"test001","deptid":"24","alarmTypeName":"数据异常","jobCode":"ZSCX202009070001","jobBelongTo":"","jobFlag":"","confirmJobPerson":"","confirmJobTime":"","jobStatusName":"待处理","alarmValue":"4000.86","alarmId":"11243","alarmLevel":0,"handleJobTime":"","tel":"","id":"1232178","wellId":"4453","jobType":"1","flow":[],"editable":1,"alarmTime":"2019-10-17 14:22:00","handleMessage":"","alarmMessage":"噪声超限","staff":"吴甘牛","handlePhotos":"","getJobTime":"","getJobPerson":"","shouldHandleTime":"","jobId":"1232178","alarmType":"1","alarmStatus":"1","devcode":"212020000a","createTime":"2020-09-07 09:30:18","position":"test001位置"}] + * message : 请求成功 + * success : true */ var code = 0 var message: String? = null - var data: DataBean? = null + var success = false + var data: List? = null class DataBean { /** - * id : 1 - * wellId : 1 - * wellCode : N51F131 - * wellName : 闸井名称 - * deep : 32 - * devcode : 41201802100 - * position : 宋郎路 - * coordinateX : 39.899999999 - * coordinateY : 116.70000000 - * latBaidu : 39.901694 - * lngBaidu : 116.709315 - * latGaode : - * lngGaode : - * alarmId : 1 - * alarmType : 1 - * alarmTypeName : 数据异常 - * alarmContent : 1 - * alarmContentName : 液位超限 - * deptid : 1 - * deptName : 一分公司 - * jobCode : 201902340484 + * firstState : + * alarmContent : 22 + * deptName : 燃气集团总公司 * jobStatus : 0 + * handleJobPerson : + * alarmContentName : 噪声超限 + * shouldGetTime : + * firstStatePhotos : + * wellCode : test001 + * deptid : 24 + * alarmTypeName : 数据异常 + * jobCode : ZSCX202009070001 + * jobBelongTo : + * jobFlag : + * confirmJobPerson : + * confirmJobTime : * jobStatusName : 待处理 - * createTime : 2018-12-27 00:00:00 - * getJobPerson : 1321321 - * getJobTime : 2018-12-27 00:00:00 - * firstState : 现场情况描述 - * firstStatePhotos : 现场情况图片 - * confirmJobPerson : 1321321 - * confirmJobTime : 2018-12-27 00:00:00 - * handleJobPerson : 1321321 - * handleJobTime : 2018-12-27 00:00:00 - * handleMessage : 维护情况描述 - * handlePhotos : 维护图片 - * flow : [{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}] + * alarmValue : 4000.86 + * alarmId : 11243 + * alarmLevel : 0 + * handleJobTime : + * tel : + * id : 1232178 + * wellId : 4453 + * jobType : 1 + * flow : [] * editable : 1 + * alarmTime : 2019-10-17 14:22:00 + * handleMessage : + * alarmMessage : 噪声超限 + * staff : 吴甘牛 + * handlePhotos : + * getJobTime : + * getJobPerson : + * shouldHandleTime : + * jobId : 1232178 + * alarmType : 1 + * alarmStatus : 1 + * devcode : 212020000a + * createTime : 2020-09-07 09:30:18 + * position : test001位置 */ - var id = 0 - var wellId = 0 - var wellCode: String? = null - var wellName: String? = null - var deep = 0 - var devcode: String? = null - var position: String? = null - var coordinateX: String? = null - var coordinateY: String? = null - var latBaidu: String? = null - var lngBaidu: String? = null - var latGaode: String? = null - var lngGaode: String? = null - var alarmId: String? = null - var alarmType: String? = null - var alarmTypeName: String? = null - var alarmContent: String? = null - var alarmContentName: String? = null - var deptid: String? = null - var deptName: String? = null - var jobCode: String? = null - var jobStatus: String? = null - var jobStatusName: String? = null - var createTime: String? = null - var getJobPerson: String? = null - var getJobTime: String? = null var firstState: String? = null + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null var firstStatePhotos: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null var confirmJobPerson: String? = null var confirmJobTime: String? = null - var handleJobPerson: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel = 0 var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null var handleMessage: String? = null + var alarmMessage: String? = null + var staff: String? = null var handlePhotos: String? = null - var editable: String? = null - var flow: List? = null - - class FlowBean { - /** - * from : 张三 - * to : 李四 - * time : 2019-02-22-12:00:00 - */ - var from: String? = null - var to: String? = null - var time: String? = null - } + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + var flow: List<*>? = null } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index 91e8410..358ff17 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -23,6 +23,7 @@ ) } + const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 const val ORDER_TRANSFER_OK = 21 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index cd3b564..9b64524 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -107,7 +107,7 @@ ): WorkOrderDetailModel /** - * 转单 + * 接单 */ @FormUrlEncoded @POST("/job/getJob") @@ -117,6 +117,22 @@ ): CommonResultModel /** + * 告警内容列表 + * */ + @GET("/alarm/contentType") + suspend fun obtainAlarmContentType( + @Header("token") token: String + ): AlarmContentTypeModel + + /** + * 工单状态 + * */ + @GET("/dict/code/jobStatus") + suspend fun obtainOrderStatus( + @Header("token") token: String + ): OrderStatusModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index bfc49e8..d574dda 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -110,6 +110,20 @@ } /** + * 告警内容列表 + */ + suspend fun obtainAlarmContentType(): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!) + } + + /** + * 工单状态 + */ + suspend fun obtainOrderStatus(): OrderStatusModel { + return api.obtainOrderStatus(AuthenticationHelper.token!!) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index 226d94b..6016a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,12 +1,37 @@ package com.casic.app.smartwell.view +import android.util.Log +import android.view.LayoutInflater import android.view.View +import android.widget.TextView +import androidx.core.content.ContextCompat +import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.model.AlarmContentTypeModel +import com.casic.app.smartwell.model.OrderStatusModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.vm.AlarmContentTypeViewModel +import com.casic.app.smartwell.vm.OrderStatusViewModel +import com.google.gson.Gson +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter +import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* + class SearchWorkOrderActivity : BaseActivity() { + private val kTag = "SearchWorkOrderActivity" + private lateinit var contentTypeViewModel: AlarmContentTypeViewModel + private lateinit var orderStatusViewModel: OrderStatusViewModel + private lateinit var inflater: LayoutInflater + private var alarmTypeModels: MutableList = ArrayList() + private var orderStatusModels: MutableList = ArrayList() + override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { @@ -16,10 +41,103 @@ } override fun initData() { + inflater = LayoutInflater.from(this) + //告警内容 + contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) + contentTypeViewModel.obtainAlarmContentType() + contentTypeViewModel.listModel.observe(this, { + if (it.code == 200) { + it.data!!.list?.forEachIndexed { index, dataBean -> + val bean: AlarmContentTypeModel.DataBean.ListBean + if (index == 0) { + bean = AlarmContentTypeModel.DataBean.ListBean() + bean.value = "" + bean.name = "全部" + bean.alarmType = "" + bean.deviceType = "" + } else { + bean = dataBean + } + alarmTypeModels.add(bean) + } + Log.d(kTag, "告警内容: ${Gson().toJson(alarmTypeModels)}") + } + }) + //工单状态 + orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) + orderStatusViewModel.obtainOrderStatus() + orderStatusViewModel.listModel.observe(this, { + if (it.code == 200) { + it.data!!.forEachIndexed { index, dataBean -> + val bean: OrderStatusModel.DataBean + if (index == 0) { + bean = OrderStatusModel.DataBean() + bean.name = "全部" + bean.id = "" + bean.value = "" + } else { + bean = dataBean + } + orderStatusModels.add(bean) + } + + orderStatusLayout.adapter = + object : TagAdapter(orderStatusModels) { + override fun getView( + parent: FlowLayout?, + position: Int, bean: OrderStatusModel.DataBean? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, + false + ) as TextView + tagView.text = orderStatusModels[position].name + return tagView + } + } + } + }) } override fun initEvent() { + selectStartTimeView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择开始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { _: TimePickerDialog?, millSeconds: Long -> + selectStartTimeView.text = millSeconds.timestampToDate() + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndTimeView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { _: TimePickerDialog?, millSeconds: Long -> + selectEndTimeView.text = millSeconds.timestampToDate() + }.build().show(supportFragmentManager, "year_month_day") + } + + searchButton.setChangeAlphaWhenPress(true) + searchButton.setOnClickListener { + + } + + clearButton.setChangeAlphaWhenPress(true) + clearButton.setOnClickListener { + + } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index 43a6620..0bcb4aa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -59,7 +59,7 @@ tipsImageView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) - .setTitle("窨井详细位置") + .setTitle("窨井完整位置") .setMessage(wellPosition) .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build() .show() diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt index 500b6ff..37dc5d6 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt @@ -6,10 +6,8 @@ import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.covertColor import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.showRouteOnMap -import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState @@ -17,6 +15,8 @@ import com.casic.app.smartwell.vm.AcceptOrderViewModel import com.casic.app.smartwell.vm.WellDetailViewModel import com.casic.app.smartwell.vm.WorkOrderDetailViewModel +import com.pengxh.app.multilib.widget.dialog.AlertControlDialog +import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -40,64 +40,85 @@ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId.toLong()) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { - val orderDetail = it.data!! - alarmTypeView.text = orderDetail.alarmContentName + val orderDetail = it.data!![0] + alarmContentView.text = orderDetail.alarmContentName + alarmDateView.text = orderDetail.alarmTime + orderCodeView.text = orderDetail.jobCode wellCodeView.text = orderDetail.wellCode - wellNameView.text = orderDetail.wellName - wellTypeView.text = orderDetail.wellId.valueToType() - - wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java) - val wellId = orderDetail.wellId.toString() - if (wellId == "") { - wellStateView.text = "状态未知" - } else { - wellDetailViewModel.obtainWellDetail(id = wellId) - wellDetailViewModel.detailModel.observe(this, { well -> - if (well.code == 200) { - val wellDetail = well.data!! - if (wellDetail.bfztName == "布防") { - wellStateView.setTextColor(R.color.greenTextColor.covertColor(this)) - } else { - wellStateView.setTextColor(R.color.redTextColor.covertColor(this)) - } - wellStateView.text = wellDetail.bfztName - } - }) - } - - installDateView.text = orderDetail.createTime - val depth = orderDetail.deep.toString() - if (depth == "") { - wellDepthView.text = resources.getString(R.string.unknown) - } else { - wellDepthView.text = depth - } - //绑定窨井位置 + devCodeView.text = orderDetail.devcode + alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() wellLocationView.text = wellPosition + if (wellPosition.length > 12) { + tipsImageView.visibility = View.VISIBLE + tipsImageView.setOnClickListener { + AlertMessageDialog.Builder() + .setContext(this) + .setTitle("窨井完整位置") + .setMessage(wellPosition) + .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build() + .show() + } + } else { + tipsImageView.visibility = View.GONE + } + dispatchDateView.text = orderDetail.getJobTime //接单 acceptOrderButton.setChangeAlphaWhenPress(true) acceptOrderButton.setOnClickListener { acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java) - acceptOrderViewModel.acceptWorkOrder(id = orderDetail.id) + AlertControlDialog.Builder() + .setContext(this) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + if (orderDetail.jobId.toString() == "") { + "工单ID异常,无法接单".show(this@WorkOrderDetailActivity) + return + } + acceptOrderViewModel.acceptWorkOrder(id = orderDetail.jobId!!.toInt()) + } + + override fun onCancelClick() { + + } + }) + .build().show() } //导航 navigationButton.setChangeAlphaWhenPress(true) navigationButton.setOnClickListener { - val lat = orderDetail.latGaode.toString() - val lng = orderDetail.lngGaode.toString() - if (lat == "" || lng == "") { - "窨井经纬度异常,无法开启导航".show(this) + wellDetailViewModel = + ViewModelProvider(this).get(WellDetailViewModel::class.java) + val wellId = orderDetail.wellId.toString() + if (wellId == "") { + "窨井ID异常,无法导航".show(this@WorkOrderDetailActivity) return@setOnClickListener } - Poi( - orderDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(this) + wellDetailViewModel.obtainWellDetail(id = wellId) + wellDetailViewModel.detailModel.observe(this, { well -> + if (well.code == 200) { + val wellDetail = well.data!! + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat == "" || lng == "") { + "窨井经纬度异常,无法开启导航".show(this) + } else { + Poi( + orderDetail.position, + LatLng(lat.toDouble(), lng.toDouble()), + "" + ).showRouteOnMap(this) + } + } + }) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt new file mode 100644 index 0000000..98d5d42 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt @@ -0,0 +1,20 @@ +package com.casic.app.smartwell.vm + +import android.util.Log +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.AlarmContentTypeModel +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class AlarmContentTypeViewModel : BaseViewModel() { + + private val kTag = "AlarmContentType" + val listModel = MutableLiveData() + + fun obtainAlarmContentType() = launch({ + listModel.value = RetrofitServiceManager.obtainAlarmContentType() + }, { + Log.d(kTag, "obtainAlarmContentType: ${it.printStackTrace()}") + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/OrderStatusViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/OrderStatusViewModel.kt new file mode 100644 index 0000000..90eb8c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/OrderStatusViewModel.kt @@ -0,0 +1,20 @@ +package com.casic.app.smartwell.vm + +import android.util.Log +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.OrderStatusModel +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class OrderStatusViewModel : BaseViewModel() { + + private val kTag = "OrderStatusViewModel" + val listModel = MutableLiveData() + + fun obtainOrderStatus() = launch({ + listModel.value = RetrofitServiceManager.obtainOrderStatus() + }, { + Log.d(kTag, "obtainOrderStatus: ${it.printStackTrace()}") + }) +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_search_white.xml b/app/src/main/res/drawable/ic_search_white.xml index f25c40a..5d439e5 100644 --- a/app/src/main/res/drawable/ic_search_white.xml +++ b/app/src/main/res/drawable/ic_search_white.xml @@ -1,6 +1,6 @@ + android:orientation="vertical" + android:padding="@dimen/dp_10"> - + - + - - + - + + - + - + - - + - + + - + - + - - + - + + - + - + - - + - + + - + - + - - + - + + - + - + - - + - + + - + - + - - + - + + + + + + + + + android:layout_marginTop="@dimen/dp_10"> + android:text="派单时间" /> @@ -180,7 +202,7 @@ android:layout_width="0dp" android:layout_marginStart="@dimen/dp_10" android:layout_weight="1" - android:text="前往" + android:text="到这里去" android:textColor="@color/mainTextColor" app:qmui_backgroundColor="@color/white" app:qmui_borderColor="@color/hintTextColor" /> diff --git a/app/build.gradle b/app/build.gradle index a4224f0..42722ca 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -77,4 +77,9 @@ //高德导航 implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' implementation 'com.amap.api:location:5.3.1' + //日期选择器 + implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' + } diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt new file mode 100644 index 0000000..ee3685d --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -0,0 +1,6 @@ +package com.casic.app.smartwell.extensions + +import java.text.SimpleDateFormat +import java.util.* + +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt new file mode 100644 index 0000000..6911fd1 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt @@ -0,0 +1,29 @@ +package com.casic.app.smartwell.model + +class AlarmContentTypeModel { + /** + * code : 200 + * data : {"list":[{"deviceType":"1","alarmType":"1","name":"井盖开盖报警","value":"1"},{"deviceType":"2","alarmType":"1","name":"液位超限","value":"4"},{"deviceType":"3","alarmType":"1","name":"有害气体超标","value":"10"},{"deviceType":"5","alarmType":"1","name":"温湿度超限","value":"11"},{"deviceType":"6","alarmType":"1","name":"疑似开挖","value":"12"},{"deviceType":"4","alarmType":"1","name":"浓度超限","value":"13"},{"deviceType":"8","alarmType":"1","name":"噪声超限","value":"22"}]} + * message : success + */ + var code = 0 + var data: DataBean? = null + var message: String? = null + + class DataBean { + var list: List? = null + + class ListBean { + /** + * deviceType : 1 + * alarmType : 1 + * name : 井盖开盖报警 + * value : 1 + */ + var deviceType: String? = null + var alarmType: String? = null + var name: String? = null + var value: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt new file mode 100644 index 0000000..1fefd20 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt @@ -0,0 +1,25 @@ +package com.casic.app.smartwell.model + +class OrderStatusModel { + /** + * code : 200 + * data : [{"name":"待处理","id":"84","value":"0"},{"name":"待确认","id":"85","value":"1"},{"name":"处理中","id":"86","value":"2"},{"name":"已完成","id":"87","value":"3"},{"name":"已取消","id":"93","value":"4"}] + * message : 请求成功 + * success : true + */ + var code = 0 + var message: String? = null + var success = false + var data: List? = null + + class DataBean { + /** + * name : 待处理 + * id : 84 + * value : 0 + */ + var name: String? = null + var id: String? = null + var value: String? = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt index 91ad645..8d23f3e 100644 --- a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt @@ -3,98 +3,99 @@ class WorkOrderDetailModel { /** * code : 200 - * message : success - * data : {"id":1,"wellId":1,"wellCode":"N51F131","wellName":"闸井名称","deep":32,"devcode":"41201802100","position":"宋郎路","coordinateX":"39.899999999","coordinateY":"116.70000000","latBaidu":"39.901694","lngBaidu":"116.709315","latGaode":"","lngGaode":"","alarmId":"1","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","deptid":"1","deptName":"一分公司","jobCode":"201902340484","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","firstState":"现场情况描述","firstStatePhotos":"现场情况图片","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00","handleMessage":"维护情况描述","handlePhotos":"维护图片","flow":[{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}],"editable":"1"} + * data : [{"firstState":"","alarmContent":22,"deptName":"燃气集团总公司","jobStatus":"0","handleJobPerson":"","alarmContentName":"噪声超限","shouldGetTime":"","firstStatePhotos":"","wellCode":"test001","deptid":"24","alarmTypeName":"数据异常","jobCode":"ZSCX202009070001","jobBelongTo":"","jobFlag":"","confirmJobPerson":"","confirmJobTime":"","jobStatusName":"待处理","alarmValue":"4000.86","alarmId":"11243","alarmLevel":0,"handleJobTime":"","tel":"","id":"1232178","wellId":"4453","jobType":"1","flow":[],"editable":1,"alarmTime":"2019-10-17 14:22:00","handleMessage":"","alarmMessage":"噪声超限","staff":"吴甘牛","handlePhotos":"","getJobTime":"","getJobPerson":"","shouldHandleTime":"","jobId":"1232178","alarmType":"1","alarmStatus":"1","devcode":"212020000a","createTime":"2020-09-07 09:30:18","position":"test001位置"}] + * message : 请求成功 + * success : true */ var code = 0 var message: String? = null - var data: DataBean? = null + var success = false + var data: List? = null class DataBean { /** - * id : 1 - * wellId : 1 - * wellCode : N51F131 - * wellName : 闸井名称 - * deep : 32 - * devcode : 41201802100 - * position : 宋郎路 - * coordinateX : 39.899999999 - * coordinateY : 116.70000000 - * latBaidu : 39.901694 - * lngBaidu : 116.709315 - * latGaode : - * lngGaode : - * alarmId : 1 - * alarmType : 1 - * alarmTypeName : 数据异常 - * alarmContent : 1 - * alarmContentName : 液位超限 - * deptid : 1 - * deptName : 一分公司 - * jobCode : 201902340484 + * firstState : + * alarmContent : 22 + * deptName : 燃气集团总公司 * jobStatus : 0 + * handleJobPerson : + * alarmContentName : 噪声超限 + * shouldGetTime : + * firstStatePhotos : + * wellCode : test001 + * deptid : 24 + * alarmTypeName : 数据异常 + * jobCode : ZSCX202009070001 + * jobBelongTo : + * jobFlag : + * confirmJobPerson : + * confirmJobTime : * jobStatusName : 待处理 - * createTime : 2018-12-27 00:00:00 - * getJobPerson : 1321321 - * getJobTime : 2018-12-27 00:00:00 - * firstState : 现场情况描述 - * firstStatePhotos : 现场情况图片 - * confirmJobPerson : 1321321 - * confirmJobTime : 2018-12-27 00:00:00 - * handleJobPerson : 1321321 - * handleJobTime : 2018-12-27 00:00:00 - * handleMessage : 维护情况描述 - * handlePhotos : 维护图片 - * flow : [{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}] + * alarmValue : 4000.86 + * alarmId : 11243 + * alarmLevel : 0 + * handleJobTime : + * tel : + * id : 1232178 + * wellId : 4453 + * jobType : 1 + * flow : [] * editable : 1 + * alarmTime : 2019-10-17 14:22:00 + * handleMessage : + * alarmMessage : 噪声超限 + * staff : 吴甘牛 + * handlePhotos : + * getJobTime : + * getJobPerson : + * shouldHandleTime : + * jobId : 1232178 + * alarmType : 1 + * alarmStatus : 1 + * devcode : 212020000a + * createTime : 2020-09-07 09:30:18 + * position : test001位置 */ - var id = 0 - var wellId = 0 - var wellCode: String? = null - var wellName: String? = null - var deep = 0 - var devcode: String? = null - var position: String? = null - var coordinateX: String? = null - var coordinateY: String? = null - var latBaidu: String? = null - var lngBaidu: String? = null - var latGaode: String? = null - var lngGaode: String? = null - var alarmId: String? = null - var alarmType: String? = null - var alarmTypeName: String? = null - var alarmContent: String? = null - var alarmContentName: String? = null - var deptid: String? = null - var deptName: String? = null - var jobCode: String? = null - var jobStatus: String? = null - var jobStatusName: String? = null - var createTime: String? = null - var getJobPerson: String? = null - var getJobTime: String? = null var firstState: String? = null + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null var firstStatePhotos: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null var confirmJobPerson: String? = null var confirmJobTime: String? = null - var handleJobPerson: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel = 0 var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null var handleMessage: String? = null + var alarmMessage: String? = null + var staff: String? = null var handlePhotos: String? = null - var editable: String? = null - var flow: List? = null - - class FlowBean { - /** - * from : 张三 - * to : 李四 - * time : 2019-02-22-12:00:00 - */ - var from: String? = null - var to: String? = null - var time: String? = null - } + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + var flow: List<*>? = null } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index 91e8410..358ff17 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -23,6 +23,7 @@ ) } + const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 const val ORDER_TRANSFER_OK = 21 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index cd3b564..9b64524 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -107,7 +107,7 @@ ): WorkOrderDetailModel /** - * 转单 + * 接单 */ @FormUrlEncoded @POST("/job/getJob") @@ -117,6 +117,22 @@ ): CommonResultModel /** + * 告警内容列表 + * */ + @GET("/alarm/contentType") + suspend fun obtainAlarmContentType( + @Header("token") token: String + ): AlarmContentTypeModel + + /** + * 工单状态 + * */ + @GET("/dict/code/jobStatus") + suspend fun obtainOrderStatus( + @Header("token") token: String + ): OrderStatusModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index bfc49e8..d574dda 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -110,6 +110,20 @@ } /** + * 告警内容列表 + */ + suspend fun obtainAlarmContentType(): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!) + } + + /** + * 工单状态 + */ + suspend fun obtainOrderStatus(): OrderStatusModel { + return api.obtainOrderStatus(AuthenticationHelper.token!!) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index 226d94b..6016a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,12 +1,37 @@ package com.casic.app.smartwell.view +import android.util.Log +import android.view.LayoutInflater import android.view.View +import android.widget.TextView +import androidx.core.content.ContextCompat +import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.model.AlarmContentTypeModel +import com.casic.app.smartwell.model.OrderStatusModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.vm.AlarmContentTypeViewModel +import com.casic.app.smartwell.vm.OrderStatusViewModel +import com.google.gson.Gson +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter +import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* + class SearchWorkOrderActivity : BaseActivity() { + private val kTag = "SearchWorkOrderActivity" + private lateinit var contentTypeViewModel: AlarmContentTypeViewModel + private lateinit var orderStatusViewModel: OrderStatusViewModel + private lateinit var inflater: LayoutInflater + private var alarmTypeModels: MutableList = ArrayList() + private var orderStatusModels: MutableList = ArrayList() + override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { @@ -16,10 +41,103 @@ } override fun initData() { + inflater = LayoutInflater.from(this) + //告警内容 + contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) + contentTypeViewModel.obtainAlarmContentType() + contentTypeViewModel.listModel.observe(this, { + if (it.code == 200) { + it.data!!.list?.forEachIndexed { index, dataBean -> + val bean: AlarmContentTypeModel.DataBean.ListBean + if (index == 0) { + bean = AlarmContentTypeModel.DataBean.ListBean() + bean.value = "" + bean.name = "全部" + bean.alarmType = "" + bean.deviceType = "" + } else { + bean = dataBean + } + alarmTypeModels.add(bean) + } + Log.d(kTag, "告警内容: ${Gson().toJson(alarmTypeModels)}") + } + }) + //工单状态 + orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) + orderStatusViewModel.obtainOrderStatus() + orderStatusViewModel.listModel.observe(this, { + if (it.code == 200) { + it.data!!.forEachIndexed { index, dataBean -> + val bean: OrderStatusModel.DataBean + if (index == 0) { + bean = OrderStatusModel.DataBean() + bean.name = "全部" + bean.id = "" + bean.value = "" + } else { + bean = dataBean + } + orderStatusModels.add(bean) + } + + orderStatusLayout.adapter = + object : TagAdapter(orderStatusModels) { + override fun getView( + parent: FlowLayout?, + position: Int, bean: OrderStatusModel.DataBean? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, + false + ) as TextView + tagView.text = orderStatusModels[position].name + return tagView + } + } + } + }) } override fun initEvent() { + selectStartTimeView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择开始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { _: TimePickerDialog?, millSeconds: Long -> + selectStartTimeView.text = millSeconds.timestampToDate() + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndTimeView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { _: TimePickerDialog?, millSeconds: Long -> + selectEndTimeView.text = millSeconds.timestampToDate() + }.build().show(supportFragmentManager, "year_month_day") + } + + searchButton.setChangeAlphaWhenPress(true) + searchButton.setOnClickListener { + + } + + clearButton.setChangeAlphaWhenPress(true) + clearButton.setOnClickListener { + + } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index 43a6620..0bcb4aa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -59,7 +59,7 @@ tipsImageView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) - .setTitle("窨井详细位置") + .setTitle("窨井完整位置") .setMessage(wellPosition) .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build() .show() diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt index 500b6ff..37dc5d6 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt @@ -6,10 +6,8 @@ import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.covertColor import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.showRouteOnMap -import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState @@ -17,6 +15,8 @@ import com.casic.app.smartwell.vm.AcceptOrderViewModel import com.casic.app.smartwell.vm.WellDetailViewModel import com.casic.app.smartwell.vm.WorkOrderDetailViewModel +import com.pengxh.app.multilib.widget.dialog.AlertControlDialog +import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -40,64 +40,85 @@ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId.toLong()) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { - val orderDetail = it.data!! - alarmTypeView.text = orderDetail.alarmContentName + val orderDetail = it.data!![0] + alarmContentView.text = orderDetail.alarmContentName + alarmDateView.text = orderDetail.alarmTime + orderCodeView.text = orderDetail.jobCode wellCodeView.text = orderDetail.wellCode - wellNameView.text = orderDetail.wellName - wellTypeView.text = orderDetail.wellId.valueToType() - - wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java) - val wellId = orderDetail.wellId.toString() - if (wellId == "") { - wellStateView.text = "状态未知" - } else { - wellDetailViewModel.obtainWellDetail(id = wellId) - wellDetailViewModel.detailModel.observe(this, { well -> - if (well.code == 200) { - val wellDetail = well.data!! - if (wellDetail.bfztName == "布防") { - wellStateView.setTextColor(R.color.greenTextColor.covertColor(this)) - } else { - wellStateView.setTextColor(R.color.redTextColor.covertColor(this)) - } - wellStateView.text = wellDetail.bfztName - } - }) - } - - installDateView.text = orderDetail.createTime - val depth = orderDetail.deep.toString() - if (depth == "") { - wellDepthView.text = resources.getString(R.string.unknown) - } else { - wellDepthView.text = depth - } - //绑定窨井位置 + devCodeView.text = orderDetail.devcode + alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() wellLocationView.text = wellPosition + if (wellPosition.length > 12) { + tipsImageView.visibility = View.VISIBLE + tipsImageView.setOnClickListener { + AlertMessageDialog.Builder() + .setContext(this) + .setTitle("窨井完整位置") + .setMessage(wellPosition) + .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build() + .show() + } + } else { + tipsImageView.visibility = View.GONE + } + dispatchDateView.text = orderDetail.getJobTime //接单 acceptOrderButton.setChangeAlphaWhenPress(true) acceptOrderButton.setOnClickListener { acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java) - acceptOrderViewModel.acceptWorkOrder(id = orderDetail.id) + AlertControlDialog.Builder() + .setContext(this) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + if (orderDetail.jobId.toString() == "") { + "工单ID异常,无法接单".show(this@WorkOrderDetailActivity) + return + } + acceptOrderViewModel.acceptWorkOrder(id = orderDetail.jobId!!.toInt()) + } + + override fun onCancelClick() { + + } + }) + .build().show() } //导航 navigationButton.setChangeAlphaWhenPress(true) navigationButton.setOnClickListener { - val lat = orderDetail.latGaode.toString() - val lng = orderDetail.lngGaode.toString() - if (lat == "" || lng == "") { - "窨井经纬度异常,无法开启导航".show(this) + wellDetailViewModel = + ViewModelProvider(this).get(WellDetailViewModel::class.java) + val wellId = orderDetail.wellId.toString() + if (wellId == "") { + "窨井ID异常,无法导航".show(this@WorkOrderDetailActivity) return@setOnClickListener } - Poi( - orderDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(this) + wellDetailViewModel.obtainWellDetail(id = wellId) + wellDetailViewModel.detailModel.observe(this, { well -> + if (well.code == 200) { + val wellDetail = well.data!! + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat == "" || lng == "") { + "窨井经纬度异常,无法开启导航".show(this) + } else { + Poi( + orderDetail.position, + LatLng(lat.toDouble(), lng.toDouble()), + "" + ).showRouteOnMap(this) + } + } + }) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt new file mode 100644 index 0000000..98d5d42 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt @@ -0,0 +1,20 @@ +package com.casic.app.smartwell.vm + +import android.util.Log +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.AlarmContentTypeModel +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class AlarmContentTypeViewModel : BaseViewModel() { + + private val kTag = "AlarmContentType" + val listModel = MutableLiveData() + + fun obtainAlarmContentType() = launch({ + listModel.value = RetrofitServiceManager.obtainAlarmContentType() + }, { + Log.d(kTag, "obtainAlarmContentType: ${it.printStackTrace()}") + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/OrderStatusViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/OrderStatusViewModel.kt new file mode 100644 index 0000000..90eb8c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/OrderStatusViewModel.kt @@ -0,0 +1,20 @@ +package com.casic.app.smartwell.vm + +import android.util.Log +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.OrderStatusModel +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class OrderStatusViewModel : BaseViewModel() { + + private val kTag = "OrderStatusViewModel" + val listModel = MutableLiveData() + + fun obtainOrderStatus() = launch({ + listModel.value = RetrofitServiceManager.obtainOrderStatus() + }, { + Log.d(kTag, "obtainOrderStatus: ${it.printStackTrace()}") + }) +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_search_white.xml b/app/src/main/res/drawable/ic_search_white.xml index f25c40a..5d439e5 100644 --- a/app/src/main/res/drawable/ic_search_white.xml +++ b/app/src/main/res/drawable/ic_search_white.xml @@ -1,6 +1,6 @@ + android:orientation="vertical" + android:padding="@dimen/dp_10"> - + - + - - + - + + - + - + - - + - + + - + - + - - + - + + - + - + - - + - + + - + - + - - + - + + - + - + - - + - + + - + - + - - + - + + + + + + + + + android:layout_marginTop="@dimen/dp_10"> + android:text="派单时间" /> @@ -180,7 +202,7 @@ android:layout_width="0dp" android:layout_marginStart="@dimen/dp_10" android:layout_weight="1" - android:text="前往" + android:text="到这里去" android:textColor="@color/mainTextColor" app:qmui_backgroundColor="@color/white" app:qmui_borderColor="@color/hintTextColor" /> diff --git a/app/src/main/res/layout/activity_order_search.xml b/app/src/main/res/layout/activity_order_search.xml index 45922a8..255d066 100644 --- a/app/src/main/res/layout/activity_order_search.xml +++ b/app/src/main/res/layout/activity_order_search.xml @@ -1,5 +1,6 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a4224f0..42722ca 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -77,4 +77,9 @@ //高德导航 implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' implementation 'com.amap.api:location:5.3.1' + //日期选择器 + implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1' + //标签流式布局 + implementation group: 'com.hyman', name: 'flowlayout-lib', version: '1.1.2' + } diff --git a/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt new file mode 100644 index 0000000..ee3685d --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/extensions/Long.kt @@ -0,0 +1,6 @@ +package com.casic.app.smartwell.extensions + +import java.text.SimpleDateFormat +import java.util.* + +fun Long.timestampToDate(): String = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(Date(this)) \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt new file mode 100644 index 0000000..6911fd1 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/AlarmContentTypeModel.kt @@ -0,0 +1,29 @@ +package com.casic.app.smartwell.model + +class AlarmContentTypeModel { + /** + * code : 200 + * data : {"list":[{"deviceType":"1","alarmType":"1","name":"井盖开盖报警","value":"1"},{"deviceType":"2","alarmType":"1","name":"液位超限","value":"4"},{"deviceType":"3","alarmType":"1","name":"有害气体超标","value":"10"},{"deviceType":"5","alarmType":"1","name":"温湿度超限","value":"11"},{"deviceType":"6","alarmType":"1","name":"疑似开挖","value":"12"},{"deviceType":"4","alarmType":"1","name":"浓度超限","value":"13"},{"deviceType":"8","alarmType":"1","name":"噪声超限","value":"22"}]} + * message : success + */ + var code = 0 + var data: DataBean? = null + var message: String? = null + + class DataBean { + var list: List? = null + + class ListBean { + /** + * deviceType : 1 + * alarmType : 1 + * name : 井盖开盖报警 + * value : 1 + */ + var deviceType: String? = null + var alarmType: String? = null + var name: String? = null + var value: String? = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt new file mode 100644 index 0000000..1fefd20 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/model/OrderStatusModel.kt @@ -0,0 +1,25 @@ +package com.casic.app.smartwell.model + +class OrderStatusModel { + /** + * code : 200 + * data : [{"name":"待处理","id":"84","value":"0"},{"name":"待确认","id":"85","value":"1"},{"name":"处理中","id":"86","value":"2"},{"name":"已完成","id":"87","value":"3"},{"name":"已取消","id":"93","value":"4"}] + * message : 请求成功 + * success : true + */ + var code = 0 + var message: String? = null + var success = false + var data: List? = null + + class DataBean { + /** + * name : 待处理 + * id : 84 + * value : 0 + */ + var name: String? = null + var id: String? = null + var value: String? = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt index 91ad645..8d23f3e 100644 --- a/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt +++ b/app/src/main/java/com/casic/app/smartwell/model/WorkOrderDetailModel.kt @@ -3,98 +3,99 @@ class WorkOrderDetailModel { /** * code : 200 - * message : success - * data : {"id":1,"wellId":1,"wellCode":"N51F131","wellName":"闸井名称","deep":32,"devcode":"41201802100","position":"宋郎路","coordinateX":"39.899999999","coordinateY":"116.70000000","latBaidu":"39.901694","lngBaidu":"116.709315","latGaode":"","lngGaode":"","alarmId":"1","alarmType":"1","alarmTypeName":"数据异常","alarmContent":"1","alarmContentName":"液位超限","deptid":"1","deptName":"一分公司","jobCode":"201902340484","jobStatus":"0","jobStatusName":"待处理","createTime":"2018-12-27 00:00:00","getJobPerson":"1321321","getJobTime":"2018-12-27 00:00:00","firstState":"现场情况描述","firstStatePhotos":"现场情况图片","confirmJobPerson":"1321321","confirmJobTime":"2018-12-27 00:00:00","handleJobPerson":"1321321","handleJobTime":"2018-12-27 00:00:00","handleMessage":"维护情况描述","handlePhotos":"维护图片","flow":[{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}],"editable":"1"} + * data : [{"firstState":"","alarmContent":22,"deptName":"燃气集团总公司","jobStatus":"0","handleJobPerson":"","alarmContentName":"噪声超限","shouldGetTime":"","firstStatePhotos":"","wellCode":"test001","deptid":"24","alarmTypeName":"数据异常","jobCode":"ZSCX202009070001","jobBelongTo":"","jobFlag":"","confirmJobPerson":"","confirmJobTime":"","jobStatusName":"待处理","alarmValue":"4000.86","alarmId":"11243","alarmLevel":0,"handleJobTime":"","tel":"","id":"1232178","wellId":"4453","jobType":"1","flow":[],"editable":1,"alarmTime":"2019-10-17 14:22:00","handleMessage":"","alarmMessage":"噪声超限","staff":"吴甘牛","handlePhotos":"","getJobTime":"","getJobPerson":"","shouldHandleTime":"","jobId":"1232178","alarmType":"1","alarmStatus":"1","devcode":"212020000a","createTime":"2020-09-07 09:30:18","position":"test001位置"}] + * message : 请求成功 + * success : true */ var code = 0 var message: String? = null - var data: DataBean? = null + var success = false + var data: List? = null class DataBean { /** - * id : 1 - * wellId : 1 - * wellCode : N51F131 - * wellName : 闸井名称 - * deep : 32 - * devcode : 41201802100 - * position : 宋郎路 - * coordinateX : 39.899999999 - * coordinateY : 116.70000000 - * latBaidu : 39.901694 - * lngBaidu : 116.709315 - * latGaode : - * lngGaode : - * alarmId : 1 - * alarmType : 1 - * alarmTypeName : 数据异常 - * alarmContent : 1 - * alarmContentName : 液位超限 - * deptid : 1 - * deptName : 一分公司 - * jobCode : 201902340484 + * firstState : + * alarmContent : 22 + * deptName : 燃气集团总公司 * jobStatus : 0 + * handleJobPerson : + * alarmContentName : 噪声超限 + * shouldGetTime : + * firstStatePhotos : + * wellCode : test001 + * deptid : 24 + * alarmTypeName : 数据异常 + * jobCode : ZSCX202009070001 + * jobBelongTo : + * jobFlag : + * confirmJobPerson : + * confirmJobTime : * jobStatusName : 待处理 - * createTime : 2018-12-27 00:00:00 - * getJobPerson : 1321321 - * getJobTime : 2018-12-27 00:00:00 - * firstState : 现场情况描述 - * firstStatePhotos : 现场情况图片 - * confirmJobPerson : 1321321 - * confirmJobTime : 2018-12-27 00:00:00 - * handleJobPerson : 1321321 - * handleJobTime : 2018-12-27 00:00:00 - * handleMessage : 维护情况描述 - * handlePhotos : 维护图片 - * flow : [{"from":"张三","to":"李四","time":"2019-02-22-12:00:00"}] + * alarmValue : 4000.86 + * alarmId : 11243 + * alarmLevel : 0 + * handleJobTime : + * tel : + * id : 1232178 + * wellId : 4453 + * jobType : 1 + * flow : [] * editable : 1 + * alarmTime : 2019-10-17 14:22:00 + * handleMessage : + * alarmMessage : 噪声超限 + * staff : 吴甘牛 + * handlePhotos : + * getJobTime : + * getJobPerson : + * shouldHandleTime : + * jobId : 1232178 + * alarmType : 1 + * alarmStatus : 1 + * devcode : 212020000a + * createTime : 2020-09-07 09:30:18 + * position : test001位置 */ - var id = 0 - var wellId = 0 - var wellCode: String? = null - var wellName: String? = null - var deep = 0 - var devcode: String? = null - var position: String? = null - var coordinateX: String? = null - var coordinateY: String? = null - var latBaidu: String? = null - var lngBaidu: String? = null - var latGaode: String? = null - var lngGaode: String? = null - var alarmId: String? = null - var alarmType: String? = null - var alarmTypeName: String? = null - var alarmContent: String? = null - var alarmContentName: String? = null - var deptid: String? = null - var deptName: String? = null - var jobCode: String? = null - var jobStatus: String? = null - var jobStatusName: String? = null - var createTime: String? = null - var getJobPerson: String? = null - var getJobTime: String? = null var firstState: String? = null + var alarmContent = 0 + var deptName: String? = null + var jobStatus: String? = null + var handleJobPerson: String? = null + var alarmContentName: String? = null + var shouldGetTime: String? = null var firstStatePhotos: String? = null + var wellCode: String? = null + var deptid: String? = null + var alarmTypeName: String? = null + var jobCode: String? = null + var jobBelongTo: String? = null + var jobFlag: String? = null var confirmJobPerson: String? = null var confirmJobTime: String? = null - var handleJobPerson: String? = null + var jobStatusName: String? = null + var alarmValue: String? = null + var alarmId: String? = null + var alarmLevel = 0 var handleJobTime: String? = null + var tel: String? = null + var id: String? = null + var wellId: String? = null + var jobType: String? = null + var editable = 0 + var alarmTime: String? = null var handleMessage: String? = null + var alarmMessage: String? = null + var staff: String? = null var handlePhotos: String? = null - var editable: String? = null - var flow: List? = null - - class FlowBean { - /** - * from : 张三 - * to : 李四 - * time : 2019-02-22-12:00:00 - */ - var from: String? = null - var to: String? = null - var time: String? = null - } + var getJobTime: String? = null + var getJobPerson: String? = null + var shouldHandleTime: String? = null + var jobId: String? = null + var alarmType: String? = null + var alarmStatus: String? = null + var devcode: String? = null + var createTime: String? = null + var position: String? = null + var flow: List<*>? = null } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt index 91e8410..358ff17 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/Constant.kt @@ -23,6 +23,7 @@ ) } + const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 const val ORDER_TRANSFER_OK = 21 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index cd3b564..9b64524 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -107,7 +107,7 @@ ): WorkOrderDetailModel /** - * 转单 + * 接单 */ @FormUrlEncoded @POST("/job/getJob") @@ -117,6 +117,22 @@ ): CommonResultModel /** + * 告警内容列表 + * */ + @GET("/alarm/contentType") + suspend fun obtainAlarmContentType( + @Header("token") token: String + ): AlarmContentTypeModel + + /** + * 工单状态 + * */ + @GET("/dict/code/jobStatus") + suspend fun obtainOrderStatus( + @Header("token") token: String + ): OrderStatusModel + + /** * 获取用户信息 */ @GET("/user/info") diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index bfc49e8..d574dda 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -110,6 +110,20 @@ } /** + * 告警内容列表 + */ + suspend fun obtainAlarmContentType(): AlarmContentTypeModel { + return api.obtainAlarmContentType(AuthenticationHelper.token!!) + } + + /** + * 工单状态 + */ + suspend fun obtainOrderStatus(): OrderStatusModel { + return api.obtainOrderStatus(AuthenticationHelper.token!!) + } + + /** * 获取用户信息 */ suspend fun obtainUserDetail(): UserDetailModel { diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt index 226d94b..6016a40 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchWorkOrderActivity.kt @@ -1,12 +1,37 @@ package com.casic.app.smartwell.view +import android.util.Log +import android.view.LayoutInflater import android.view.View +import android.widget.TextView +import androidx.core.content.ContextCompat +import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity +import com.casic.app.smartwell.extensions.timestampToDate +import com.casic.app.smartwell.model.AlarmContentTypeModel +import com.casic.app.smartwell.model.OrderStatusModel +import com.casic.app.smartwell.utils.Constant +import com.casic.app.smartwell.vm.AlarmContentTypeViewModel +import com.casic.app.smartwell.vm.OrderStatusViewModel +import com.google.gson.Gson +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import com.zhy.view.flowlayout.FlowLayout +import com.zhy.view.flowlayout.TagAdapter +import kotlinx.android.synthetic.main.activity_order_search.* import kotlinx.android.synthetic.main.include_base_title.* + class SearchWorkOrderActivity : BaseActivity() { + private val kTag = "SearchWorkOrderActivity" + private lateinit var contentTypeViewModel: AlarmContentTypeViewModel + private lateinit var orderStatusViewModel: OrderStatusViewModel + private lateinit var inflater: LayoutInflater + private var alarmTypeModels: MutableList = ArrayList() + private var orderStatusModels: MutableList = ArrayList() + override fun initLayoutView(): Int = R.layout.activity_order_search override fun setupTopBarLayout() { @@ -16,10 +41,103 @@ } override fun initData() { + inflater = LayoutInflater.from(this) + //告警内容 + contentTypeViewModel = ViewModelProvider(this).get(AlarmContentTypeViewModel::class.java) + contentTypeViewModel.obtainAlarmContentType() + contentTypeViewModel.listModel.observe(this, { + if (it.code == 200) { + it.data!!.list?.forEachIndexed { index, dataBean -> + val bean: AlarmContentTypeModel.DataBean.ListBean + if (index == 0) { + bean = AlarmContentTypeModel.DataBean.ListBean() + bean.value = "" + bean.name = "全部" + bean.alarmType = "" + bean.deviceType = "" + } else { + bean = dataBean + } + alarmTypeModels.add(bean) + } + Log.d(kTag, "告警内容: ${Gson().toJson(alarmTypeModels)}") + } + }) + //工单状态 + orderStatusViewModel = ViewModelProvider(this).get(OrderStatusViewModel::class.java) + orderStatusViewModel.obtainOrderStatus() + orderStatusViewModel.listModel.observe(this, { + if (it.code == 200) { + it.data!!.forEachIndexed { index, dataBean -> + val bean: OrderStatusModel.DataBean + if (index == 0) { + bean = OrderStatusModel.DataBean() + bean.name = "全部" + bean.id = "" + bean.value = "" + } else { + bean = dataBean + } + orderStatusModels.add(bean) + } + + orderStatusLayout.adapter = + object : TagAdapter(orderStatusModels) { + override fun getView( + parent: FlowLayout?, + position: Int, bean: OrderStatusModel.DataBean? + ): View { + val tagView = inflater.inflate( + R.layout.item_tag_flowlayout, + orderStatusLayout, + false + ) as TextView + tagView.text = orderStatusModels[position].name + return tagView + } + } + } + }) } override fun initEvent() { + selectStartTimeView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择开始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { _: TimePickerDialog?, millSeconds: Long -> + selectStartTimeView.text = millSeconds.timestampToDate() + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndTimeView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { _: TimePickerDialog?, millSeconds: Long -> + selectEndTimeView.text = millSeconds.timestampToDate() + }.build().show(supportFragmentManager, "year_month_day") + } + + searchButton.setChangeAlphaWhenPress(true) + searchButton.setOnClickListener { + + } + + clearButton.setChangeAlphaWhenPress(true) + clearButton.setOnClickListener { + + } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index 43a6620..0bcb4aa 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -59,7 +59,7 @@ tipsImageView.setOnClickListener { AlertMessageDialog.Builder() .setContext(this) - .setTitle("窨井详细位置") + .setTitle("窨井完整位置") .setMessage(wellPosition) .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build() .show() diff --git a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt index 500b6ff..37dc5d6 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WorkOrderDetailActivity.kt @@ -6,10 +6,8 @@ import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.base.BaseActivity -import com.casic.app.smartwell.extensions.covertColor import com.casic.app.smartwell.extensions.show import com.casic.app.smartwell.extensions.showRouteOnMap -import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.utils.Constant import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LoadState @@ -17,6 +15,8 @@ import com.casic.app.smartwell.vm.AcceptOrderViewModel import com.casic.app.smartwell.vm.WellDetailViewModel import com.casic.app.smartwell.vm.WorkOrderDetailViewModel +import com.pengxh.app.multilib.widget.dialog.AlertControlDialog +import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog import kotlinx.android.synthetic.main.activity_order_detail.* import kotlinx.android.synthetic.main.include_base_title.* @@ -40,64 +40,85 @@ workOrderDetailViewModel.obtainWorkOrderDetail(id = jobId.toLong()) workOrderDetailViewModel.detailModel.observe(this, { if (it.code == 200) { - val orderDetail = it.data!! - alarmTypeView.text = orderDetail.alarmContentName + val orderDetail = it.data!![0] + alarmContentView.text = orderDetail.alarmContentName + alarmDateView.text = orderDetail.alarmTime + orderCodeView.text = orderDetail.jobCode wellCodeView.text = orderDetail.wellCode - wellNameView.text = orderDetail.wellName - wellTypeView.text = orderDetail.wellId.valueToType() - - wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java) - val wellId = orderDetail.wellId.toString() - if (wellId == "") { - wellStateView.text = "状态未知" - } else { - wellDetailViewModel.obtainWellDetail(id = wellId) - wellDetailViewModel.detailModel.observe(this, { well -> - if (well.code == 200) { - val wellDetail = well.data!! - if (wellDetail.bfztName == "布防") { - wellStateView.setTextColor(R.color.greenTextColor.covertColor(this)) - } else { - wellStateView.setTextColor(R.color.redTextColor.covertColor(this)) - } - wellStateView.text = wellDetail.bfztName - } - }) - } - - installDateView.text = orderDetail.createTime - val depth = orderDetail.deep.toString() - if (depth == "") { - wellDepthView.text = resources.getString(R.string.unknown) - } else { - wellDepthView.text = depth - } - //绑定窨井位置 + devCodeView.text = orderDetail.devcode + alarmValueView.text = orderDetail.alarmValue val wellPosition = orderDetail.position.toString() wellLocationView.text = wellPosition + if (wellPosition.length > 12) { + tipsImageView.visibility = View.VISIBLE + tipsImageView.setOnClickListener { + AlertMessageDialog.Builder() + .setContext(this) + .setTitle("窨井完整位置") + .setMessage(wellPosition) + .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build() + .show() + } + } else { + tipsImageView.visibility = View.GONE + } + dispatchDateView.text = orderDetail.getJobTime //接单 acceptOrderButton.setChangeAlphaWhenPress(true) acceptOrderButton.setOnClickListener { acceptOrderViewModel = ViewModelProvider(this).get(AcceptOrderViewModel::class.java) - acceptOrderViewModel.acceptWorkOrder(id = orderDetail.id) + AlertControlDialog.Builder() + .setContext(this) + .setTitle("操作提示") + .setMessage("确定要接单吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + if (orderDetail.jobId.toString() == "") { + "工单ID异常,无法接单".show(this@WorkOrderDetailActivity) + return + } + acceptOrderViewModel.acceptWorkOrder(id = orderDetail.jobId!!.toInt()) + } + + override fun onCancelClick() { + + } + }) + .build().show() } //导航 navigationButton.setChangeAlphaWhenPress(true) navigationButton.setOnClickListener { - val lat = orderDetail.latGaode.toString() - val lng = orderDetail.lngGaode.toString() - if (lat == "" || lng == "") { - "窨井经纬度异常,无法开启导航".show(this) + wellDetailViewModel = + ViewModelProvider(this).get(WellDetailViewModel::class.java) + val wellId = orderDetail.wellId.toString() + if (wellId == "") { + "窨井ID异常,无法导航".show(this@WorkOrderDetailActivity) return@setOnClickListener } - Poi( - orderDetail.position, - LatLng(lat.toDouble(), lng.toDouble()), - "" - ).showRouteOnMap(this) + wellDetailViewModel.obtainWellDetail(id = wellId) + wellDetailViewModel.detailModel.observe(this, { well -> + if (well.code == 200) { + val wellDetail = well.data!! + val lat = wellDetail.latGaode.toString() + val lng = wellDetail.lngGaode.toString() + if (lat == "" || lng == "") { + "窨井经纬度异常,无法开启导航".show(this) + } else { + Poi( + orderDetail.position, + LatLng(lat.toDouble(), lng.toDouble()), + "" + ).showRouteOnMap(this) + } + } + }) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt new file mode 100644 index 0000000..98d5d42 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/AlarmContentTypeViewModel.kt @@ -0,0 +1,20 @@ +package com.casic.app.smartwell.vm + +import android.util.Log +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.AlarmContentTypeModel +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class AlarmContentTypeViewModel : BaseViewModel() { + + private val kTag = "AlarmContentType" + val listModel = MutableLiveData() + + fun obtainAlarmContentType() = launch({ + listModel.value = RetrofitServiceManager.obtainAlarmContentType() + }, { + Log.d(kTag, "obtainAlarmContentType: ${it.printStackTrace()}") + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/vm/OrderStatusViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/OrderStatusViewModel.kt new file mode 100644 index 0000000..90eb8c9 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/OrderStatusViewModel.kt @@ -0,0 +1,20 @@ +package com.casic.app.smartwell.vm + +import android.util.Log +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseViewModel +import com.casic.app.smartwell.extensions.launch +import com.casic.app.smartwell.model.OrderStatusModel +import com.casic.app.smartwell.utils.retrofit.RetrofitServiceManager + +class OrderStatusViewModel : BaseViewModel() { + + private val kTag = "OrderStatusViewModel" + val listModel = MutableLiveData() + + fun obtainOrderStatus() = launch({ + listModel.value = RetrofitServiceManager.obtainOrderStatus() + }, { + Log.d(kTag, "obtainOrderStatus: ${it.printStackTrace()}") + }) +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_search_white.xml b/app/src/main/res/drawable/ic_search_white.xml index f25c40a..5d439e5 100644 --- a/app/src/main/res/drawable/ic_search_white.xml +++ b/app/src/main/res/drawable/ic_search_white.xml @@ -1,6 +1,6 @@ + android:orientation="vertical" + android:padding="@dimen/dp_10"> - + - + - - + - + + - + - + - - + - + + - + - + - - + - + + - + - + - - + - + + - + - + - - + - + + - + - + - - + - + + - + - + - - + - + + + + + + + + + android:layout_marginTop="@dimen/dp_10"> + android:text="派单时间" /> @@ -180,7 +202,7 @@ android:layout_width="0dp" android:layout_marginStart="@dimen/dp_10" android:layout_weight="1" - android:text="前往" + android:text="到这里去" android:textColor="@color/mainTextColor" app:qmui_backgroundColor="@color/white" app:qmui_borderColor="@color/hintTextColor" /> diff --git a/app/src/main/res/layout/activity_order_search.xml b/app/src/main/res/layout/activity_order_search.xml index 45922a8..255d066 100644 --- a/app/src/main/res/layout/activity_order_search.xml +++ b/app/src/main/res/layout/activity_order_search.xml @@ -1,5 +1,6 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_tag_flowlayout.xml b/app/src/main/res/layout/item_tag_flowlayout.xml new file mode 100644 index 0000000..9cf5671 --- /dev/null +++ b/app/src/main/res/layout/item_tag_flowlayout.xml @@ -0,0 +1,9 @@ + + \ No newline at end of file