diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index febcd02..f845c47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -95,6 +95,7 @@ + + fields; + private List features; + + public String getDisplayFieldName() { + return displayFieldName; + } + + public void setDisplayFieldName(String displayFieldName) { + this.displayFieldName = displayFieldName; + } + + public FieldAliasesBean getFieldAliases() { + return fieldAliases; + } + + public void setFieldAliases(FieldAliasesBean fieldAliases) { + this.fieldAliases = fieldAliases; + } + + public String getGeometryType() { + return geometryType; + } + + public void setGeometryType(String geometryType) { + this.geometryType = geometryType; + } + + public SpatialReferenceBean getSpatialReference() { + return spatialReference; + } + + public void setSpatialReference(SpatialReferenceBean spatialReference) { + this.spatialReference = spatialReference; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public List getFeatures() { + return features; + } + + public void setFeatures(List features) { + this.features = features; + } + + public static class FieldAliasesBean { + + private String objectid; + private String 编号; + private String 附属物编码; + private String 地面高程; + private String x坐标; + private String y坐标; + private String 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private String jd; + private String wd; + + public String getObjectid() { + return objectid; + } + + public void setObjectid(String objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public String get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(String 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public String get地面高程() { + return 地面高程; + } + + public void set地面高程(String 地面高程) { + this.地面高程 = 地面高程; + } + + public String getX坐标() { + return x坐标; + } + + public void setX坐标(String x坐标) { + this.x坐标 = x坐标; + } + + public String getY坐标() { + return y坐标; + } + + public void setY坐标(String y坐标) { + this.y坐标 = y坐标; + } + + public String get井深() { + return 井深; + } + + public void set井深(String 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public String getJd() { + return jd; + } + + public void setJd(String jd) { + this.jd = jd; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + } + + public static class SpatialReferenceBean { + + private int wkid; + private int latestWkid; + + public int getWkid() { + return wkid; + } + + public void setWkid(int wkid) { + this.wkid = wkid; + } + + public int getLatestWkid() { + return latestWkid; + } + + public void setLatestWkid(int latestWkid) { + this.latestWkid = latestWkid; + } + } + + public static class FieldsBean { + + private String name; + private String type; + private String alias; + private int length; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + } + + public static class FeaturesBean { + + private AttributesBean attributes; + private GeometryBean geometry; + + public AttributesBean getAttributes() { + return attributes; + } + + public void setAttributes(AttributesBean attributes) { + this.attributes = attributes; + } + + public GeometryBean getGeometry() { + return geometry; + } + + public void setGeometry(GeometryBean geometry) { + this.geometry = geometry; + } + + public static class AttributesBean { + /** + * objectid : 3984 + * 编号 : GX_WSD_4107_HLDD150 + * 附属物编码 : 4107 + * 地面高程 : 59.462 + * x坐标 : 3071874.507 + * y坐标 : 408323.999 + * 井深 : 2.72 + * 附属物名称 : 污水井 + * 所属道路 : 活力大道 + * 建设年代 : + * 权属单位 : + * 备注 : + * jd : 116.070072 + * wd : 27.757135 + */ + + private int objectid; + private String 编号; + private int 附属物编码; + private double 地面高程; + private double x坐标; + private double y坐标; + private double 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private double jd; + private double wd; + + public int getObjectid() { + return objectid; + } + + public void setObjectid(int objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public int get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(int 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public double get地面高程() { + return 地面高程; + } + + public void set地面高程(double 地面高程) { + this.地面高程 = 地面高程; + } + + public double getX坐标() { + return x坐标; + } + + public void setX坐标(double x坐标) { + this.x坐标 = x坐标; + } + + public double getY坐标() { + return y坐标; + } + + public void setY坐标(double y坐标) { + this.y坐标 = y坐标; + } + + public double get井深() { + return 井深; + } + + public void set井深(double 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public double getJd() { + return jd; + } + + public void setJd(double jd) { + this.jd = jd; + } + + public double getWd() { + return wd; + } + + public void setWd(double wd) { + this.wd = wd; + } + } + + public static class GeometryBean { + /** + * x : 116.07007205499997 + * y : 27.757134534999977 + */ + + private double x; + private double y; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + } + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index febcd02..f845c47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -95,6 +95,7 @@ + fields; + private List features; + + public String getDisplayFieldName() { + return displayFieldName; + } + + public void setDisplayFieldName(String displayFieldName) { + this.displayFieldName = displayFieldName; + } + + public FieldAliasesBean getFieldAliases() { + return fieldAliases; + } + + public void setFieldAliases(FieldAliasesBean fieldAliases) { + this.fieldAliases = fieldAliases; + } + + public String getGeometryType() { + return geometryType; + } + + public void setGeometryType(String geometryType) { + this.geometryType = geometryType; + } + + public SpatialReferenceBean getSpatialReference() { + return spatialReference; + } + + public void setSpatialReference(SpatialReferenceBean spatialReference) { + this.spatialReference = spatialReference; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public List getFeatures() { + return features; + } + + public void setFeatures(List features) { + this.features = features; + } + + public static class FieldAliasesBean { + + private String objectid; + private String 编号; + private String 附属物编码; + private String 地面高程; + private String x坐标; + private String y坐标; + private String 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private String jd; + private String wd; + + public String getObjectid() { + return objectid; + } + + public void setObjectid(String objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public String get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(String 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public String get地面高程() { + return 地面高程; + } + + public void set地面高程(String 地面高程) { + this.地面高程 = 地面高程; + } + + public String getX坐标() { + return x坐标; + } + + public void setX坐标(String x坐标) { + this.x坐标 = x坐标; + } + + public String getY坐标() { + return y坐标; + } + + public void setY坐标(String y坐标) { + this.y坐标 = y坐标; + } + + public String get井深() { + return 井深; + } + + public void set井深(String 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public String getJd() { + return jd; + } + + public void setJd(String jd) { + this.jd = jd; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + } + + public static class SpatialReferenceBean { + + private int wkid; + private int latestWkid; + + public int getWkid() { + return wkid; + } + + public void setWkid(int wkid) { + this.wkid = wkid; + } + + public int getLatestWkid() { + return latestWkid; + } + + public void setLatestWkid(int latestWkid) { + this.latestWkid = latestWkid; + } + } + + public static class FieldsBean { + + private String name; + private String type; + private String alias; + private int length; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + } + + public static class FeaturesBean { + + private AttributesBean attributes; + private GeometryBean geometry; + + public AttributesBean getAttributes() { + return attributes; + } + + public void setAttributes(AttributesBean attributes) { + this.attributes = attributes; + } + + public GeometryBean getGeometry() { + return geometry; + } + + public void setGeometry(GeometryBean geometry) { + this.geometry = geometry; + } + + public static class AttributesBean { + /** + * objectid : 3984 + * 编号 : GX_WSD_4107_HLDD150 + * 附属物编码 : 4107 + * 地面高程 : 59.462 + * x坐标 : 3071874.507 + * y坐标 : 408323.999 + * 井深 : 2.72 + * 附属物名称 : 污水井 + * 所属道路 : 活力大道 + * 建设年代 : + * 权属单位 : + * 备注 : + * jd : 116.070072 + * wd : 27.757135 + */ + + private int objectid; + private String 编号; + private int 附属物编码; + private double 地面高程; + private double x坐标; + private double y坐标; + private double 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private double jd; + private double wd; + + public int getObjectid() { + return objectid; + } + + public void setObjectid(int objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public int get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(int 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public double get地面高程() { + return 地面高程; + } + + public void set地面高程(double 地面高程) { + this.地面高程 = 地面高程; + } + + public double getX坐标() { + return x坐标; + } + + public void setX坐标(double x坐标) { + this.x坐标 = x坐标; + } + + public double getY坐标() { + return y坐标; + } + + public void setY坐标(double y坐标) { + this.y坐标 = y坐标; + } + + public double get井深() { + return 井深; + } + + public void set井深(double 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public double getJd() { + return jd; + } + + public void setJd(double jd) { + this.jd = jd; + } + + public double getWd() { + return wd; + } + + public void setWd(double wd) { + this.wd = wd; + } + } + + public static class GeometryBean { + /** + * x : 116.07007205499997 + * y : 27.757134534999977 + */ + + private double x; + private double y; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java index 5f5b8a9..1117853 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java @@ -24,8 +24,8 @@ } @Override - public Subscription sendRetrofitRequest(int offset) { - Observable observable = RetrofitServiceManager.getAlarmListResult(offset); + public Subscription sendRetrofitRequest(int limit,int offset) { + Observable observable = RetrofitServiceManager.getAlarmListResult(limit, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index febcd02..f845c47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -95,6 +95,7 @@ + fields; + private List features; + + public String getDisplayFieldName() { + return displayFieldName; + } + + public void setDisplayFieldName(String displayFieldName) { + this.displayFieldName = displayFieldName; + } + + public FieldAliasesBean getFieldAliases() { + return fieldAliases; + } + + public void setFieldAliases(FieldAliasesBean fieldAliases) { + this.fieldAliases = fieldAliases; + } + + public String getGeometryType() { + return geometryType; + } + + public void setGeometryType(String geometryType) { + this.geometryType = geometryType; + } + + public SpatialReferenceBean getSpatialReference() { + return spatialReference; + } + + public void setSpatialReference(SpatialReferenceBean spatialReference) { + this.spatialReference = spatialReference; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public List getFeatures() { + return features; + } + + public void setFeatures(List features) { + this.features = features; + } + + public static class FieldAliasesBean { + + private String objectid; + private String 编号; + private String 附属物编码; + private String 地面高程; + private String x坐标; + private String y坐标; + private String 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private String jd; + private String wd; + + public String getObjectid() { + return objectid; + } + + public void setObjectid(String objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public String get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(String 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public String get地面高程() { + return 地面高程; + } + + public void set地面高程(String 地面高程) { + this.地面高程 = 地面高程; + } + + public String getX坐标() { + return x坐标; + } + + public void setX坐标(String x坐标) { + this.x坐标 = x坐标; + } + + public String getY坐标() { + return y坐标; + } + + public void setY坐标(String y坐标) { + this.y坐标 = y坐标; + } + + public String get井深() { + return 井深; + } + + public void set井深(String 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public String getJd() { + return jd; + } + + public void setJd(String jd) { + this.jd = jd; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + } + + public static class SpatialReferenceBean { + + private int wkid; + private int latestWkid; + + public int getWkid() { + return wkid; + } + + public void setWkid(int wkid) { + this.wkid = wkid; + } + + public int getLatestWkid() { + return latestWkid; + } + + public void setLatestWkid(int latestWkid) { + this.latestWkid = latestWkid; + } + } + + public static class FieldsBean { + + private String name; + private String type; + private String alias; + private int length; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + } + + public static class FeaturesBean { + + private AttributesBean attributes; + private GeometryBean geometry; + + public AttributesBean getAttributes() { + return attributes; + } + + public void setAttributes(AttributesBean attributes) { + this.attributes = attributes; + } + + public GeometryBean getGeometry() { + return geometry; + } + + public void setGeometry(GeometryBean geometry) { + this.geometry = geometry; + } + + public static class AttributesBean { + /** + * objectid : 3984 + * 编号 : GX_WSD_4107_HLDD150 + * 附属物编码 : 4107 + * 地面高程 : 59.462 + * x坐标 : 3071874.507 + * y坐标 : 408323.999 + * 井深 : 2.72 + * 附属物名称 : 污水井 + * 所属道路 : 活力大道 + * 建设年代 : + * 权属单位 : + * 备注 : + * jd : 116.070072 + * wd : 27.757135 + */ + + private int objectid; + private String 编号; + private int 附属物编码; + private double 地面高程; + private double x坐标; + private double y坐标; + private double 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private double jd; + private double wd; + + public int getObjectid() { + return objectid; + } + + public void setObjectid(int objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public int get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(int 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public double get地面高程() { + return 地面高程; + } + + public void set地面高程(double 地面高程) { + this.地面高程 = 地面高程; + } + + public double getX坐标() { + return x坐标; + } + + public void setX坐标(double x坐标) { + this.x坐标 = x坐标; + } + + public double getY坐标() { + return y坐标; + } + + public void setY坐标(double y坐标) { + this.y坐标 = y坐标; + } + + public double get井深() { + return 井深; + } + + public void set井深(double 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public double getJd() { + return jd; + } + + public void setJd(double jd) { + this.jd = jd; + } + + public double getWd() { + return wd; + } + + public void setWd(double wd) { + this.wd = wd; + } + } + + public static class GeometryBean { + /** + * x : 116.07007205499997 + * y : 27.757134534999977 + */ + + private double x; + private double y; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java index 5f5b8a9..1117853 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java @@ -24,8 +24,8 @@ } @Override - public Subscription sendRetrofitRequest(int offset) { - Observable observable = RetrofitServiceManager.getAlarmListResult(offset); + public Subscription sendRetrofitRequest(int limit,int offset) { + Observable observable = RetrofitServiceManager.getAlarmListResult(limit, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java index fc8b4ce..d9f08dc 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java @@ -3,5 +3,5 @@ import rx.Subscription; public interface IAlarmListModel { - Subscription sendRetrofitRequest(int offset); + Subscription sendRetrofitRequest(int limit,int offset); } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index febcd02..f845c47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -95,6 +95,7 @@ + fields; + private List features; + + public String getDisplayFieldName() { + return displayFieldName; + } + + public void setDisplayFieldName(String displayFieldName) { + this.displayFieldName = displayFieldName; + } + + public FieldAliasesBean getFieldAliases() { + return fieldAliases; + } + + public void setFieldAliases(FieldAliasesBean fieldAliases) { + this.fieldAliases = fieldAliases; + } + + public String getGeometryType() { + return geometryType; + } + + public void setGeometryType(String geometryType) { + this.geometryType = geometryType; + } + + public SpatialReferenceBean getSpatialReference() { + return spatialReference; + } + + public void setSpatialReference(SpatialReferenceBean spatialReference) { + this.spatialReference = spatialReference; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public List getFeatures() { + return features; + } + + public void setFeatures(List features) { + this.features = features; + } + + public static class FieldAliasesBean { + + private String objectid; + private String 编号; + private String 附属物编码; + private String 地面高程; + private String x坐标; + private String y坐标; + private String 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private String jd; + private String wd; + + public String getObjectid() { + return objectid; + } + + public void setObjectid(String objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public String get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(String 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public String get地面高程() { + return 地面高程; + } + + public void set地面高程(String 地面高程) { + this.地面高程 = 地面高程; + } + + public String getX坐标() { + return x坐标; + } + + public void setX坐标(String x坐标) { + this.x坐标 = x坐标; + } + + public String getY坐标() { + return y坐标; + } + + public void setY坐标(String y坐标) { + this.y坐标 = y坐标; + } + + public String get井深() { + return 井深; + } + + public void set井深(String 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public String getJd() { + return jd; + } + + public void setJd(String jd) { + this.jd = jd; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + } + + public static class SpatialReferenceBean { + + private int wkid; + private int latestWkid; + + public int getWkid() { + return wkid; + } + + public void setWkid(int wkid) { + this.wkid = wkid; + } + + public int getLatestWkid() { + return latestWkid; + } + + public void setLatestWkid(int latestWkid) { + this.latestWkid = latestWkid; + } + } + + public static class FieldsBean { + + private String name; + private String type; + private String alias; + private int length; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + } + + public static class FeaturesBean { + + private AttributesBean attributes; + private GeometryBean geometry; + + public AttributesBean getAttributes() { + return attributes; + } + + public void setAttributes(AttributesBean attributes) { + this.attributes = attributes; + } + + public GeometryBean getGeometry() { + return geometry; + } + + public void setGeometry(GeometryBean geometry) { + this.geometry = geometry; + } + + public static class AttributesBean { + /** + * objectid : 3984 + * 编号 : GX_WSD_4107_HLDD150 + * 附属物编码 : 4107 + * 地面高程 : 59.462 + * x坐标 : 3071874.507 + * y坐标 : 408323.999 + * 井深 : 2.72 + * 附属物名称 : 污水井 + * 所属道路 : 活力大道 + * 建设年代 : + * 权属单位 : + * 备注 : + * jd : 116.070072 + * wd : 27.757135 + */ + + private int objectid; + private String 编号; + private int 附属物编码; + private double 地面高程; + private double x坐标; + private double y坐标; + private double 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private double jd; + private double wd; + + public int getObjectid() { + return objectid; + } + + public void setObjectid(int objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public int get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(int 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public double get地面高程() { + return 地面高程; + } + + public void set地面高程(double 地面高程) { + this.地面高程 = 地面高程; + } + + public double getX坐标() { + return x坐标; + } + + public void setX坐标(double x坐标) { + this.x坐标 = x坐标; + } + + public double getY坐标() { + return y坐标; + } + + public void setY坐标(double y坐标) { + this.y坐标 = y坐标; + } + + public double get井深() { + return 井深; + } + + public void set井深(double 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public double getJd() { + return jd; + } + + public void setJd(double jd) { + this.jd = jd; + } + + public double getWd() { + return wd; + } + + public void setWd(double wd) { + this.wd = wd; + } + } + + public static class GeometryBean { + /** + * x : 116.07007205499997 + * y : 27.757134534999977 + */ + + private double x; + private double y; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java index 5f5b8a9..1117853 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java @@ -24,8 +24,8 @@ } @Override - public Subscription sendRetrofitRequest(int offset) { - Observable observable = RetrofitServiceManager.getAlarmListResult(offset); + public Subscription sendRetrofitRequest(int limit,int offset) { + Observable observable = RetrofitServiceManager.getAlarmListResult(limit, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java index fc8b4ce..d9f08dc 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java @@ -3,5 +3,5 @@ import rx.Subscription; public interface IAlarmListModel { - Subscription sendRetrofitRequest(int offset); + Subscription sendRetrofitRequest(int limit,int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java new file mode 100644 index 0000000..1db090e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IWellDetailModel { + Subscription sendRetrofitRequest(String where); +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index febcd02..f845c47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -95,6 +95,7 @@ + fields; + private List features; + + public String getDisplayFieldName() { + return displayFieldName; + } + + public void setDisplayFieldName(String displayFieldName) { + this.displayFieldName = displayFieldName; + } + + public FieldAliasesBean getFieldAliases() { + return fieldAliases; + } + + public void setFieldAliases(FieldAliasesBean fieldAliases) { + this.fieldAliases = fieldAliases; + } + + public String getGeometryType() { + return geometryType; + } + + public void setGeometryType(String geometryType) { + this.geometryType = geometryType; + } + + public SpatialReferenceBean getSpatialReference() { + return spatialReference; + } + + public void setSpatialReference(SpatialReferenceBean spatialReference) { + this.spatialReference = spatialReference; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public List getFeatures() { + return features; + } + + public void setFeatures(List features) { + this.features = features; + } + + public static class FieldAliasesBean { + + private String objectid; + private String 编号; + private String 附属物编码; + private String 地面高程; + private String x坐标; + private String y坐标; + private String 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private String jd; + private String wd; + + public String getObjectid() { + return objectid; + } + + public void setObjectid(String objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public String get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(String 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public String get地面高程() { + return 地面高程; + } + + public void set地面高程(String 地面高程) { + this.地面高程 = 地面高程; + } + + public String getX坐标() { + return x坐标; + } + + public void setX坐标(String x坐标) { + this.x坐标 = x坐标; + } + + public String getY坐标() { + return y坐标; + } + + public void setY坐标(String y坐标) { + this.y坐标 = y坐标; + } + + public String get井深() { + return 井深; + } + + public void set井深(String 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public String getJd() { + return jd; + } + + public void setJd(String jd) { + this.jd = jd; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + } + + public static class SpatialReferenceBean { + + private int wkid; + private int latestWkid; + + public int getWkid() { + return wkid; + } + + public void setWkid(int wkid) { + this.wkid = wkid; + } + + public int getLatestWkid() { + return latestWkid; + } + + public void setLatestWkid(int latestWkid) { + this.latestWkid = latestWkid; + } + } + + public static class FieldsBean { + + private String name; + private String type; + private String alias; + private int length; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + } + + public static class FeaturesBean { + + private AttributesBean attributes; + private GeometryBean geometry; + + public AttributesBean getAttributes() { + return attributes; + } + + public void setAttributes(AttributesBean attributes) { + this.attributes = attributes; + } + + public GeometryBean getGeometry() { + return geometry; + } + + public void setGeometry(GeometryBean geometry) { + this.geometry = geometry; + } + + public static class AttributesBean { + /** + * objectid : 3984 + * 编号 : GX_WSD_4107_HLDD150 + * 附属物编码 : 4107 + * 地面高程 : 59.462 + * x坐标 : 3071874.507 + * y坐标 : 408323.999 + * 井深 : 2.72 + * 附属物名称 : 污水井 + * 所属道路 : 活力大道 + * 建设年代 : + * 权属单位 : + * 备注 : + * jd : 116.070072 + * wd : 27.757135 + */ + + private int objectid; + private String 编号; + private int 附属物编码; + private double 地面高程; + private double x坐标; + private double y坐标; + private double 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private double jd; + private double wd; + + public int getObjectid() { + return objectid; + } + + public void setObjectid(int objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public int get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(int 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public double get地面高程() { + return 地面高程; + } + + public void set地面高程(double 地面高程) { + this.地面高程 = 地面高程; + } + + public double getX坐标() { + return x坐标; + } + + public void setX坐标(double x坐标) { + this.x坐标 = x坐标; + } + + public double getY坐标() { + return y坐标; + } + + public void setY坐标(double y坐标) { + this.y坐标 = y坐标; + } + + public double get井深() { + return 井深; + } + + public void set井深(double 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public double getJd() { + return jd; + } + + public void setJd(double jd) { + this.jd = jd; + } + + public double getWd() { + return wd; + } + + public void setWd(double wd) { + this.wd = wd; + } + } + + public static class GeometryBean { + /** + * x : 116.07007205499997 + * y : 27.757134534999977 + */ + + private double x; + private double y; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java index 5f5b8a9..1117853 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java @@ -24,8 +24,8 @@ } @Override - public Subscription sendRetrofitRequest(int offset) { - Observable observable = RetrofitServiceManager.getAlarmListResult(offset); + public Subscription sendRetrofitRequest(int limit,int offset) { + Observable observable = RetrofitServiceManager.getAlarmListResult(limit, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java index fc8b4ce..d9f08dc 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java @@ -3,5 +3,5 @@ import rx.Subscription; public interface IAlarmListModel { - Subscription sendRetrofitRequest(int offset); + Subscription sendRetrofitRequest(int limit,int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java new file mode 100644 index 0000000..1db090e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IWellDetailModel { + Subscription sendRetrofitRequest(String where); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java new file mode 100644 index 0000000..f9e7a3e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class WellDetailModelImpl implements IWellDetailModel { + + private OnGetDetailListener listener; + + public WellDetailModelImpl(OnGetDetailListener listListener) { + this.listener = listListener; + } + + public interface OnGetDetailListener { + void onSuccess(WellDetailBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String where) { + Observable observable = RetrofitServiceManager.getWellDetailResult(where); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(WellDetailBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index febcd02..f845c47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -95,6 +95,7 @@ + fields; + private List features; + + public String getDisplayFieldName() { + return displayFieldName; + } + + public void setDisplayFieldName(String displayFieldName) { + this.displayFieldName = displayFieldName; + } + + public FieldAliasesBean getFieldAliases() { + return fieldAliases; + } + + public void setFieldAliases(FieldAliasesBean fieldAliases) { + this.fieldAliases = fieldAliases; + } + + public String getGeometryType() { + return geometryType; + } + + public void setGeometryType(String geometryType) { + this.geometryType = geometryType; + } + + public SpatialReferenceBean getSpatialReference() { + return spatialReference; + } + + public void setSpatialReference(SpatialReferenceBean spatialReference) { + this.spatialReference = spatialReference; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public List getFeatures() { + return features; + } + + public void setFeatures(List features) { + this.features = features; + } + + public static class FieldAliasesBean { + + private String objectid; + private String 编号; + private String 附属物编码; + private String 地面高程; + private String x坐标; + private String y坐标; + private String 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private String jd; + private String wd; + + public String getObjectid() { + return objectid; + } + + public void setObjectid(String objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public String get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(String 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public String get地面高程() { + return 地面高程; + } + + public void set地面高程(String 地面高程) { + this.地面高程 = 地面高程; + } + + public String getX坐标() { + return x坐标; + } + + public void setX坐标(String x坐标) { + this.x坐标 = x坐标; + } + + public String getY坐标() { + return y坐标; + } + + public void setY坐标(String y坐标) { + this.y坐标 = y坐标; + } + + public String get井深() { + return 井深; + } + + public void set井深(String 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public String getJd() { + return jd; + } + + public void setJd(String jd) { + this.jd = jd; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + } + + public static class SpatialReferenceBean { + + private int wkid; + private int latestWkid; + + public int getWkid() { + return wkid; + } + + public void setWkid(int wkid) { + this.wkid = wkid; + } + + public int getLatestWkid() { + return latestWkid; + } + + public void setLatestWkid(int latestWkid) { + this.latestWkid = latestWkid; + } + } + + public static class FieldsBean { + + private String name; + private String type; + private String alias; + private int length; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + } + + public static class FeaturesBean { + + private AttributesBean attributes; + private GeometryBean geometry; + + public AttributesBean getAttributes() { + return attributes; + } + + public void setAttributes(AttributesBean attributes) { + this.attributes = attributes; + } + + public GeometryBean getGeometry() { + return geometry; + } + + public void setGeometry(GeometryBean geometry) { + this.geometry = geometry; + } + + public static class AttributesBean { + /** + * objectid : 3984 + * 编号 : GX_WSD_4107_HLDD150 + * 附属物编码 : 4107 + * 地面高程 : 59.462 + * x坐标 : 3071874.507 + * y坐标 : 408323.999 + * 井深 : 2.72 + * 附属物名称 : 污水井 + * 所属道路 : 活力大道 + * 建设年代 : + * 权属单位 : + * 备注 : + * jd : 116.070072 + * wd : 27.757135 + */ + + private int objectid; + private String 编号; + private int 附属物编码; + private double 地面高程; + private double x坐标; + private double y坐标; + private double 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private double jd; + private double wd; + + public int getObjectid() { + return objectid; + } + + public void setObjectid(int objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public int get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(int 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public double get地面高程() { + return 地面高程; + } + + public void set地面高程(double 地面高程) { + this.地面高程 = 地面高程; + } + + public double getX坐标() { + return x坐标; + } + + public void setX坐标(double x坐标) { + this.x坐标 = x坐标; + } + + public double getY坐标() { + return y坐标; + } + + public void setY坐标(double y坐标) { + this.y坐标 = y坐标; + } + + public double get井深() { + return 井深; + } + + public void set井深(double 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public double getJd() { + return jd; + } + + public void setJd(double jd) { + this.jd = jd; + } + + public double getWd() { + return wd; + } + + public void setWd(double wd) { + this.wd = wd; + } + } + + public static class GeometryBean { + /** + * x : 116.07007205499997 + * y : 27.757134534999977 + */ + + private double x; + private double y; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java index 5f5b8a9..1117853 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java @@ -24,8 +24,8 @@ } @Override - public Subscription sendRetrofitRequest(int offset) { - Observable observable = RetrofitServiceManager.getAlarmListResult(offset); + public Subscription sendRetrofitRequest(int limit,int offset) { + Observable observable = RetrofitServiceManager.getAlarmListResult(limit, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java index fc8b4ce..d9f08dc 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java @@ -3,5 +3,5 @@ import rx.Subscription; public interface IAlarmListModel { - Subscription sendRetrofitRequest(int offset); + Subscription sendRetrofitRequest(int limit,int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java new file mode 100644 index 0000000..1db090e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IWellDetailModel { + Subscription sendRetrofitRequest(String where); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java new file mode 100644 index 0000000..f9e7a3e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class WellDetailModelImpl implements IWellDetailModel { + + private OnGetDetailListener listener; + + public WellDetailModelImpl(OnGetDetailListener listListener) { + this.listener = listListener; + } + + public interface OnGetDetailListener { + void onSuccess(WellDetailBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String where) { + Observable observable = RetrofitServiceManager.getWellDetailResult(where); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(WellDetailBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java index 624715b..1851e54 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java @@ -16,8 +16,8 @@ } @Override - public void onReadyRetrofitRequest(int offset) { - addSubscription(model.sendRetrofitRequest(offset)); + public void onReadyRetrofitRequest(int limit, int offset) { + addSubscription(model.sendRetrofitRequest(limit, offset)); } @Override diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index febcd02..f845c47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -95,6 +95,7 @@ + fields; + private List features; + + public String getDisplayFieldName() { + return displayFieldName; + } + + public void setDisplayFieldName(String displayFieldName) { + this.displayFieldName = displayFieldName; + } + + public FieldAliasesBean getFieldAliases() { + return fieldAliases; + } + + public void setFieldAliases(FieldAliasesBean fieldAliases) { + this.fieldAliases = fieldAliases; + } + + public String getGeometryType() { + return geometryType; + } + + public void setGeometryType(String geometryType) { + this.geometryType = geometryType; + } + + public SpatialReferenceBean getSpatialReference() { + return spatialReference; + } + + public void setSpatialReference(SpatialReferenceBean spatialReference) { + this.spatialReference = spatialReference; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public List getFeatures() { + return features; + } + + public void setFeatures(List features) { + this.features = features; + } + + public static class FieldAliasesBean { + + private String objectid; + private String 编号; + private String 附属物编码; + private String 地面高程; + private String x坐标; + private String y坐标; + private String 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private String jd; + private String wd; + + public String getObjectid() { + return objectid; + } + + public void setObjectid(String objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public String get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(String 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public String get地面高程() { + return 地面高程; + } + + public void set地面高程(String 地面高程) { + this.地面高程 = 地面高程; + } + + public String getX坐标() { + return x坐标; + } + + public void setX坐标(String x坐标) { + this.x坐标 = x坐标; + } + + public String getY坐标() { + return y坐标; + } + + public void setY坐标(String y坐标) { + this.y坐标 = y坐标; + } + + public String get井深() { + return 井深; + } + + public void set井深(String 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public String getJd() { + return jd; + } + + public void setJd(String jd) { + this.jd = jd; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + } + + public static class SpatialReferenceBean { + + private int wkid; + private int latestWkid; + + public int getWkid() { + return wkid; + } + + public void setWkid(int wkid) { + this.wkid = wkid; + } + + public int getLatestWkid() { + return latestWkid; + } + + public void setLatestWkid(int latestWkid) { + this.latestWkid = latestWkid; + } + } + + public static class FieldsBean { + + private String name; + private String type; + private String alias; + private int length; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + } + + public static class FeaturesBean { + + private AttributesBean attributes; + private GeometryBean geometry; + + public AttributesBean getAttributes() { + return attributes; + } + + public void setAttributes(AttributesBean attributes) { + this.attributes = attributes; + } + + public GeometryBean getGeometry() { + return geometry; + } + + public void setGeometry(GeometryBean geometry) { + this.geometry = geometry; + } + + public static class AttributesBean { + /** + * objectid : 3984 + * 编号 : GX_WSD_4107_HLDD150 + * 附属物编码 : 4107 + * 地面高程 : 59.462 + * x坐标 : 3071874.507 + * y坐标 : 408323.999 + * 井深 : 2.72 + * 附属物名称 : 污水井 + * 所属道路 : 活力大道 + * 建设年代 : + * 权属单位 : + * 备注 : + * jd : 116.070072 + * wd : 27.757135 + */ + + private int objectid; + private String 编号; + private int 附属物编码; + private double 地面高程; + private double x坐标; + private double y坐标; + private double 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private double jd; + private double wd; + + public int getObjectid() { + return objectid; + } + + public void setObjectid(int objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public int get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(int 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public double get地面高程() { + return 地面高程; + } + + public void set地面高程(double 地面高程) { + this.地面高程 = 地面高程; + } + + public double getX坐标() { + return x坐标; + } + + public void setX坐标(double x坐标) { + this.x坐标 = x坐标; + } + + public double getY坐标() { + return y坐标; + } + + public void setY坐标(double y坐标) { + this.y坐标 = y坐标; + } + + public double get井深() { + return 井深; + } + + public void set井深(double 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public double getJd() { + return jd; + } + + public void setJd(double jd) { + this.jd = jd; + } + + public double getWd() { + return wd; + } + + public void setWd(double wd) { + this.wd = wd; + } + } + + public static class GeometryBean { + /** + * x : 116.07007205499997 + * y : 27.757134534999977 + */ + + private double x; + private double y; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java index 5f5b8a9..1117853 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java @@ -24,8 +24,8 @@ } @Override - public Subscription sendRetrofitRequest(int offset) { - Observable observable = RetrofitServiceManager.getAlarmListResult(offset); + public Subscription sendRetrofitRequest(int limit,int offset) { + Observable observable = RetrofitServiceManager.getAlarmListResult(limit, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java index fc8b4ce..d9f08dc 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java @@ -3,5 +3,5 @@ import rx.Subscription; public interface IAlarmListModel { - Subscription sendRetrofitRequest(int offset); + Subscription sendRetrofitRequest(int limit,int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java new file mode 100644 index 0000000..1db090e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IWellDetailModel { + Subscription sendRetrofitRequest(String where); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java new file mode 100644 index 0000000..f9e7a3e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class WellDetailModelImpl implements IWellDetailModel { + + private OnGetDetailListener listener; + + public WellDetailModelImpl(OnGetDetailListener listListener) { + this.listener = listListener; + } + + public interface OnGetDetailListener { + void onSuccess(WellDetailBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String where) { + Observable observable = RetrofitServiceManager.getWellDetailResult(where); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(WellDetailBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java index 624715b..1851e54 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java @@ -16,8 +16,8 @@ } @Override - public void onReadyRetrofitRequest(int offset) { - addSubscription(model.sendRetrofitRequest(offset)); + public void onReadyRetrofitRequest(int limit, int offset) { + addSubscription(model.sendRetrofitRequest(limit, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java index 550deec..2408f94 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java @@ -1,7 +1,7 @@ package com.casic.dcms.mvp.presenter; public interface IAlarmListPresenter { - void onReadyRetrofitRequest(int offset); + void onReadyRetrofitRequest(int limit,int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index febcd02..f845c47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -95,6 +95,7 @@ + fields; + private List features; + + public String getDisplayFieldName() { + return displayFieldName; + } + + public void setDisplayFieldName(String displayFieldName) { + this.displayFieldName = displayFieldName; + } + + public FieldAliasesBean getFieldAliases() { + return fieldAliases; + } + + public void setFieldAliases(FieldAliasesBean fieldAliases) { + this.fieldAliases = fieldAliases; + } + + public String getGeometryType() { + return geometryType; + } + + public void setGeometryType(String geometryType) { + this.geometryType = geometryType; + } + + public SpatialReferenceBean getSpatialReference() { + return spatialReference; + } + + public void setSpatialReference(SpatialReferenceBean spatialReference) { + this.spatialReference = spatialReference; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public List getFeatures() { + return features; + } + + public void setFeatures(List features) { + this.features = features; + } + + public static class FieldAliasesBean { + + private String objectid; + private String 编号; + private String 附属物编码; + private String 地面高程; + private String x坐标; + private String y坐标; + private String 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private String jd; + private String wd; + + public String getObjectid() { + return objectid; + } + + public void setObjectid(String objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public String get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(String 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public String get地面高程() { + return 地面高程; + } + + public void set地面高程(String 地面高程) { + this.地面高程 = 地面高程; + } + + public String getX坐标() { + return x坐标; + } + + public void setX坐标(String x坐标) { + this.x坐标 = x坐标; + } + + public String getY坐标() { + return y坐标; + } + + public void setY坐标(String y坐标) { + this.y坐标 = y坐标; + } + + public String get井深() { + return 井深; + } + + public void set井深(String 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public String getJd() { + return jd; + } + + public void setJd(String jd) { + this.jd = jd; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + } + + public static class SpatialReferenceBean { + + private int wkid; + private int latestWkid; + + public int getWkid() { + return wkid; + } + + public void setWkid(int wkid) { + this.wkid = wkid; + } + + public int getLatestWkid() { + return latestWkid; + } + + public void setLatestWkid(int latestWkid) { + this.latestWkid = latestWkid; + } + } + + public static class FieldsBean { + + private String name; + private String type; + private String alias; + private int length; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + } + + public static class FeaturesBean { + + private AttributesBean attributes; + private GeometryBean geometry; + + public AttributesBean getAttributes() { + return attributes; + } + + public void setAttributes(AttributesBean attributes) { + this.attributes = attributes; + } + + public GeometryBean getGeometry() { + return geometry; + } + + public void setGeometry(GeometryBean geometry) { + this.geometry = geometry; + } + + public static class AttributesBean { + /** + * objectid : 3984 + * 编号 : GX_WSD_4107_HLDD150 + * 附属物编码 : 4107 + * 地面高程 : 59.462 + * x坐标 : 3071874.507 + * y坐标 : 408323.999 + * 井深 : 2.72 + * 附属物名称 : 污水井 + * 所属道路 : 活力大道 + * 建设年代 : + * 权属单位 : + * 备注 : + * jd : 116.070072 + * wd : 27.757135 + */ + + private int objectid; + private String 编号; + private int 附属物编码; + private double 地面高程; + private double x坐标; + private double y坐标; + private double 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private double jd; + private double wd; + + public int getObjectid() { + return objectid; + } + + public void setObjectid(int objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public int get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(int 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public double get地面高程() { + return 地面高程; + } + + public void set地面高程(double 地面高程) { + this.地面高程 = 地面高程; + } + + public double getX坐标() { + return x坐标; + } + + public void setX坐标(double x坐标) { + this.x坐标 = x坐标; + } + + public double getY坐标() { + return y坐标; + } + + public void setY坐标(double y坐标) { + this.y坐标 = y坐标; + } + + public double get井深() { + return 井深; + } + + public void set井深(double 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public double getJd() { + return jd; + } + + public void setJd(double jd) { + this.jd = jd; + } + + public double getWd() { + return wd; + } + + public void setWd(double wd) { + this.wd = wd; + } + } + + public static class GeometryBean { + /** + * x : 116.07007205499997 + * y : 27.757134534999977 + */ + + private double x; + private double y; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java index 5f5b8a9..1117853 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java @@ -24,8 +24,8 @@ } @Override - public Subscription sendRetrofitRequest(int offset) { - Observable observable = RetrofitServiceManager.getAlarmListResult(offset); + public Subscription sendRetrofitRequest(int limit,int offset) { + Observable observable = RetrofitServiceManager.getAlarmListResult(limit, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java index fc8b4ce..d9f08dc 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java @@ -3,5 +3,5 @@ import rx.Subscription; public interface IAlarmListModel { - Subscription sendRetrofitRequest(int offset); + Subscription sendRetrofitRequest(int limit,int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java new file mode 100644 index 0000000..1db090e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IWellDetailModel { + Subscription sendRetrofitRequest(String where); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java new file mode 100644 index 0000000..f9e7a3e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class WellDetailModelImpl implements IWellDetailModel { + + private OnGetDetailListener listener; + + public WellDetailModelImpl(OnGetDetailListener listListener) { + this.listener = listListener; + } + + public interface OnGetDetailListener { + void onSuccess(WellDetailBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String where) { + Observable observable = RetrofitServiceManager.getWellDetailResult(where); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(WellDetailBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java index 624715b..1851e54 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java @@ -16,8 +16,8 @@ } @Override - public void onReadyRetrofitRequest(int offset) { - addSubscription(model.sendRetrofitRequest(offset)); + public void onReadyRetrofitRequest(int limit, int offset) { + addSubscription(model.sendRetrofitRequest(limit, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java index 550deec..2408f94 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java @@ -1,7 +1,7 @@ package com.casic.dcms.mvp.presenter; public interface IAlarmListPresenter { - void onReadyRetrofitRequest(int offset); + void onReadyRetrofitRequest(int limit,int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java new file mode 100644 index 0000000..e968509 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IWellDetailPresenter { + void onReadyRetrofitRequest(String where); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index febcd02..f845c47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -95,6 +95,7 @@ + fields; + private List features; + + public String getDisplayFieldName() { + return displayFieldName; + } + + public void setDisplayFieldName(String displayFieldName) { + this.displayFieldName = displayFieldName; + } + + public FieldAliasesBean getFieldAliases() { + return fieldAliases; + } + + public void setFieldAliases(FieldAliasesBean fieldAliases) { + this.fieldAliases = fieldAliases; + } + + public String getGeometryType() { + return geometryType; + } + + public void setGeometryType(String geometryType) { + this.geometryType = geometryType; + } + + public SpatialReferenceBean getSpatialReference() { + return spatialReference; + } + + public void setSpatialReference(SpatialReferenceBean spatialReference) { + this.spatialReference = spatialReference; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public List getFeatures() { + return features; + } + + public void setFeatures(List features) { + this.features = features; + } + + public static class FieldAliasesBean { + + private String objectid; + private String 编号; + private String 附属物编码; + private String 地面高程; + private String x坐标; + private String y坐标; + private String 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private String jd; + private String wd; + + public String getObjectid() { + return objectid; + } + + public void setObjectid(String objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public String get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(String 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public String get地面高程() { + return 地面高程; + } + + public void set地面高程(String 地面高程) { + this.地面高程 = 地面高程; + } + + public String getX坐标() { + return x坐标; + } + + public void setX坐标(String x坐标) { + this.x坐标 = x坐标; + } + + public String getY坐标() { + return y坐标; + } + + public void setY坐标(String y坐标) { + this.y坐标 = y坐标; + } + + public String get井深() { + return 井深; + } + + public void set井深(String 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public String getJd() { + return jd; + } + + public void setJd(String jd) { + this.jd = jd; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + } + + public static class SpatialReferenceBean { + + private int wkid; + private int latestWkid; + + public int getWkid() { + return wkid; + } + + public void setWkid(int wkid) { + this.wkid = wkid; + } + + public int getLatestWkid() { + return latestWkid; + } + + public void setLatestWkid(int latestWkid) { + this.latestWkid = latestWkid; + } + } + + public static class FieldsBean { + + private String name; + private String type; + private String alias; + private int length; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + } + + public static class FeaturesBean { + + private AttributesBean attributes; + private GeometryBean geometry; + + public AttributesBean getAttributes() { + return attributes; + } + + public void setAttributes(AttributesBean attributes) { + this.attributes = attributes; + } + + public GeometryBean getGeometry() { + return geometry; + } + + public void setGeometry(GeometryBean geometry) { + this.geometry = geometry; + } + + public static class AttributesBean { + /** + * objectid : 3984 + * 编号 : GX_WSD_4107_HLDD150 + * 附属物编码 : 4107 + * 地面高程 : 59.462 + * x坐标 : 3071874.507 + * y坐标 : 408323.999 + * 井深 : 2.72 + * 附属物名称 : 污水井 + * 所属道路 : 活力大道 + * 建设年代 : + * 权属单位 : + * 备注 : + * jd : 116.070072 + * wd : 27.757135 + */ + + private int objectid; + private String 编号; + private int 附属物编码; + private double 地面高程; + private double x坐标; + private double y坐标; + private double 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private double jd; + private double wd; + + public int getObjectid() { + return objectid; + } + + public void setObjectid(int objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public int get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(int 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public double get地面高程() { + return 地面高程; + } + + public void set地面高程(double 地面高程) { + this.地面高程 = 地面高程; + } + + public double getX坐标() { + return x坐标; + } + + public void setX坐标(double x坐标) { + this.x坐标 = x坐标; + } + + public double getY坐标() { + return y坐标; + } + + public void setY坐标(double y坐标) { + this.y坐标 = y坐标; + } + + public double get井深() { + return 井深; + } + + public void set井深(double 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public double getJd() { + return jd; + } + + public void setJd(double jd) { + this.jd = jd; + } + + public double getWd() { + return wd; + } + + public void setWd(double wd) { + this.wd = wd; + } + } + + public static class GeometryBean { + /** + * x : 116.07007205499997 + * y : 27.757134534999977 + */ + + private double x; + private double y; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java index 5f5b8a9..1117853 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java @@ -24,8 +24,8 @@ } @Override - public Subscription sendRetrofitRequest(int offset) { - Observable observable = RetrofitServiceManager.getAlarmListResult(offset); + public Subscription sendRetrofitRequest(int limit,int offset) { + Observable observable = RetrofitServiceManager.getAlarmListResult(limit, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java index fc8b4ce..d9f08dc 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java @@ -3,5 +3,5 @@ import rx.Subscription; public interface IAlarmListModel { - Subscription sendRetrofitRequest(int offset); + Subscription sendRetrofitRequest(int limit,int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java new file mode 100644 index 0000000..1db090e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IWellDetailModel { + Subscription sendRetrofitRequest(String where); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java new file mode 100644 index 0000000..f9e7a3e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class WellDetailModelImpl implements IWellDetailModel { + + private OnGetDetailListener listener; + + public WellDetailModelImpl(OnGetDetailListener listListener) { + this.listener = listListener; + } + + public interface OnGetDetailListener { + void onSuccess(WellDetailBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String where) { + Observable observable = RetrofitServiceManager.getWellDetailResult(where); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(WellDetailBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java index 624715b..1851e54 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java @@ -16,8 +16,8 @@ } @Override - public void onReadyRetrofitRequest(int offset) { - addSubscription(model.sendRetrofitRequest(offset)); + public void onReadyRetrofitRequest(int limit, int offset) { + addSubscription(model.sendRetrofitRequest(limit, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java index 550deec..2408f94 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java @@ -1,7 +1,7 @@ package com.casic.dcms.mvp.presenter; public interface IAlarmListPresenter { - void onReadyRetrofitRequest(int offset); + void onReadyRetrofitRequest(int limit,int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java new file mode 100644 index 0000000..e968509 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IWellDetailPresenter { + void onReadyRetrofitRequest(String where); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java new file mode 100644 index 0000000..1a123f1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.WellDetailModelImpl; +import com.casic.dcms.mvp.view.IWellDetailView; + +public class WellDetailPresenterImpl extends BasePresenter implements IWellDetailPresenter, WellDetailModelImpl.OnGetDetailListener { + + private IWellDetailView view; + private WellDetailModelImpl actionModel; + + public WellDetailPresenterImpl(IWellDetailView detailView) { + this.view = detailView; + actionModel = new WellDetailModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String where) { + addSubscription(actionModel.sendRetrofitRequest(where)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(WellDetailBean resultBean) { + view.obtainWellDetailResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index febcd02..f845c47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -95,6 +95,7 @@ + fields; + private List features; + + public String getDisplayFieldName() { + return displayFieldName; + } + + public void setDisplayFieldName(String displayFieldName) { + this.displayFieldName = displayFieldName; + } + + public FieldAliasesBean getFieldAliases() { + return fieldAliases; + } + + public void setFieldAliases(FieldAliasesBean fieldAliases) { + this.fieldAliases = fieldAliases; + } + + public String getGeometryType() { + return geometryType; + } + + public void setGeometryType(String geometryType) { + this.geometryType = geometryType; + } + + public SpatialReferenceBean getSpatialReference() { + return spatialReference; + } + + public void setSpatialReference(SpatialReferenceBean spatialReference) { + this.spatialReference = spatialReference; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public List getFeatures() { + return features; + } + + public void setFeatures(List features) { + this.features = features; + } + + public static class FieldAliasesBean { + + private String objectid; + private String 编号; + private String 附属物编码; + private String 地面高程; + private String x坐标; + private String y坐标; + private String 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private String jd; + private String wd; + + public String getObjectid() { + return objectid; + } + + public void setObjectid(String objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public String get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(String 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public String get地面高程() { + return 地面高程; + } + + public void set地面高程(String 地面高程) { + this.地面高程 = 地面高程; + } + + public String getX坐标() { + return x坐标; + } + + public void setX坐标(String x坐标) { + this.x坐标 = x坐标; + } + + public String getY坐标() { + return y坐标; + } + + public void setY坐标(String y坐标) { + this.y坐标 = y坐标; + } + + public String get井深() { + return 井深; + } + + public void set井深(String 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public String getJd() { + return jd; + } + + public void setJd(String jd) { + this.jd = jd; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + } + + public static class SpatialReferenceBean { + + private int wkid; + private int latestWkid; + + public int getWkid() { + return wkid; + } + + public void setWkid(int wkid) { + this.wkid = wkid; + } + + public int getLatestWkid() { + return latestWkid; + } + + public void setLatestWkid(int latestWkid) { + this.latestWkid = latestWkid; + } + } + + public static class FieldsBean { + + private String name; + private String type; + private String alias; + private int length; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + } + + public static class FeaturesBean { + + private AttributesBean attributes; + private GeometryBean geometry; + + public AttributesBean getAttributes() { + return attributes; + } + + public void setAttributes(AttributesBean attributes) { + this.attributes = attributes; + } + + public GeometryBean getGeometry() { + return geometry; + } + + public void setGeometry(GeometryBean geometry) { + this.geometry = geometry; + } + + public static class AttributesBean { + /** + * objectid : 3984 + * 编号 : GX_WSD_4107_HLDD150 + * 附属物编码 : 4107 + * 地面高程 : 59.462 + * x坐标 : 3071874.507 + * y坐标 : 408323.999 + * 井深 : 2.72 + * 附属物名称 : 污水井 + * 所属道路 : 活力大道 + * 建设年代 : + * 权属单位 : + * 备注 : + * jd : 116.070072 + * wd : 27.757135 + */ + + private int objectid; + private String 编号; + private int 附属物编码; + private double 地面高程; + private double x坐标; + private double y坐标; + private double 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private double jd; + private double wd; + + public int getObjectid() { + return objectid; + } + + public void setObjectid(int objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public int get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(int 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public double get地面高程() { + return 地面高程; + } + + public void set地面高程(double 地面高程) { + this.地面高程 = 地面高程; + } + + public double getX坐标() { + return x坐标; + } + + public void setX坐标(double x坐标) { + this.x坐标 = x坐标; + } + + public double getY坐标() { + return y坐标; + } + + public void setY坐标(double y坐标) { + this.y坐标 = y坐标; + } + + public double get井深() { + return 井深; + } + + public void set井深(double 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public double getJd() { + return jd; + } + + public void setJd(double jd) { + this.jd = jd; + } + + public double getWd() { + return wd; + } + + public void setWd(double wd) { + this.wd = wd; + } + } + + public static class GeometryBean { + /** + * x : 116.07007205499997 + * y : 27.757134534999977 + */ + + private double x; + private double y; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java index 5f5b8a9..1117853 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java @@ -24,8 +24,8 @@ } @Override - public Subscription sendRetrofitRequest(int offset) { - Observable observable = RetrofitServiceManager.getAlarmListResult(offset); + public Subscription sendRetrofitRequest(int limit,int offset) { + Observable observable = RetrofitServiceManager.getAlarmListResult(limit, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java index fc8b4ce..d9f08dc 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java @@ -3,5 +3,5 @@ import rx.Subscription; public interface IAlarmListModel { - Subscription sendRetrofitRequest(int offset); + Subscription sendRetrofitRequest(int limit,int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java new file mode 100644 index 0000000..1db090e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IWellDetailModel { + Subscription sendRetrofitRequest(String where); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java new file mode 100644 index 0000000..f9e7a3e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class WellDetailModelImpl implements IWellDetailModel { + + private OnGetDetailListener listener; + + public WellDetailModelImpl(OnGetDetailListener listListener) { + this.listener = listListener; + } + + public interface OnGetDetailListener { + void onSuccess(WellDetailBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String where) { + Observable observable = RetrofitServiceManager.getWellDetailResult(where); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(WellDetailBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java index 624715b..1851e54 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java @@ -16,8 +16,8 @@ } @Override - public void onReadyRetrofitRequest(int offset) { - addSubscription(model.sendRetrofitRequest(offset)); + public void onReadyRetrofitRequest(int limit, int offset) { + addSubscription(model.sendRetrofitRequest(limit, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java index 550deec..2408f94 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java @@ -1,7 +1,7 @@ package com.casic.dcms.mvp.presenter; public interface IAlarmListPresenter { - void onReadyRetrofitRequest(int offset); + void onReadyRetrofitRequest(int limit,int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java new file mode 100644 index 0000000..e968509 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IWellDetailPresenter { + void onReadyRetrofitRequest(String where); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java new file mode 100644 index 0000000..1a123f1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.WellDetailModelImpl; +import com.casic.dcms.mvp.view.IWellDetailView; + +public class WellDetailPresenterImpl extends BasePresenter implements IWellDetailPresenter, WellDetailModelImpl.OnGetDetailListener { + + private IWellDetailView view; + private WellDetailModelImpl actionModel; + + public WellDetailPresenterImpl(IWellDetailView detailView) { + this.view = detailView; + actionModel = new WellDetailModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String where) { + addSubscription(actionModel.sendRetrofitRequest(where)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(WellDetailBean resultBean) { + view.obtainWellDetailResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java new file mode 100644 index 0000000..2d01903 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.WellDetailBean; + +public interface IWellDetailView { + void obtainWellDetailResult(WellDetailBean resultBean); +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index febcd02..f845c47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -95,6 +95,7 @@ + fields; + private List features; + + public String getDisplayFieldName() { + return displayFieldName; + } + + public void setDisplayFieldName(String displayFieldName) { + this.displayFieldName = displayFieldName; + } + + public FieldAliasesBean getFieldAliases() { + return fieldAliases; + } + + public void setFieldAliases(FieldAliasesBean fieldAliases) { + this.fieldAliases = fieldAliases; + } + + public String getGeometryType() { + return geometryType; + } + + public void setGeometryType(String geometryType) { + this.geometryType = geometryType; + } + + public SpatialReferenceBean getSpatialReference() { + return spatialReference; + } + + public void setSpatialReference(SpatialReferenceBean spatialReference) { + this.spatialReference = spatialReference; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public List getFeatures() { + return features; + } + + public void setFeatures(List features) { + this.features = features; + } + + public static class FieldAliasesBean { + + private String objectid; + private String 编号; + private String 附属物编码; + private String 地面高程; + private String x坐标; + private String y坐标; + private String 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private String jd; + private String wd; + + public String getObjectid() { + return objectid; + } + + public void setObjectid(String objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public String get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(String 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public String get地面高程() { + return 地面高程; + } + + public void set地面高程(String 地面高程) { + this.地面高程 = 地面高程; + } + + public String getX坐标() { + return x坐标; + } + + public void setX坐标(String x坐标) { + this.x坐标 = x坐标; + } + + public String getY坐标() { + return y坐标; + } + + public void setY坐标(String y坐标) { + this.y坐标 = y坐标; + } + + public String get井深() { + return 井深; + } + + public void set井深(String 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public String getJd() { + return jd; + } + + public void setJd(String jd) { + this.jd = jd; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + } + + public static class SpatialReferenceBean { + + private int wkid; + private int latestWkid; + + public int getWkid() { + return wkid; + } + + public void setWkid(int wkid) { + this.wkid = wkid; + } + + public int getLatestWkid() { + return latestWkid; + } + + public void setLatestWkid(int latestWkid) { + this.latestWkid = latestWkid; + } + } + + public static class FieldsBean { + + private String name; + private String type; + private String alias; + private int length; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + } + + public static class FeaturesBean { + + private AttributesBean attributes; + private GeometryBean geometry; + + public AttributesBean getAttributes() { + return attributes; + } + + public void setAttributes(AttributesBean attributes) { + this.attributes = attributes; + } + + public GeometryBean getGeometry() { + return geometry; + } + + public void setGeometry(GeometryBean geometry) { + this.geometry = geometry; + } + + public static class AttributesBean { + /** + * objectid : 3984 + * 编号 : GX_WSD_4107_HLDD150 + * 附属物编码 : 4107 + * 地面高程 : 59.462 + * x坐标 : 3071874.507 + * y坐标 : 408323.999 + * 井深 : 2.72 + * 附属物名称 : 污水井 + * 所属道路 : 活力大道 + * 建设年代 : + * 权属单位 : + * 备注 : + * jd : 116.070072 + * wd : 27.757135 + */ + + private int objectid; + private String 编号; + private int 附属物编码; + private double 地面高程; + private double x坐标; + private double y坐标; + private double 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private double jd; + private double wd; + + public int getObjectid() { + return objectid; + } + + public void setObjectid(int objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public int get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(int 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public double get地面高程() { + return 地面高程; + } + + public void set地面高程(double 地面高程) { + this.地面高程 = 地面高程; + } + + public double getX坐标() { + return x坐标; + } + + public void setX坐标(double x坐标) { + this.x坐标 = x坐标; + } + + public double getY坐标() { + return y坐标; + } + + public void setY坐标(double y坐标) { + this.y坐标 = y坐标; + } + + public double get井深() { + return 井深; + } + + public void set井深(double 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public double getJd() { + return jd; + } + + public void setJd(double jd) { + this.jd = jd; + } + + public double getWd() { + return wd; + } + + public void setWd(double wd) { + this.wd = wd; + } + } + + public static class GeometryBean { + /** + * x : 116.07007205499997 + * y : 27.757134534999977 + */ + + private double x; + private double y; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java index 5f5b8a9..1117853 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java @@ -24,8 +24,8 @@ } @Override - public Subscription sendRetrofitRequest(int offset) { - Observable observable = RetrofitServiceManager.getAlarmListResult(offset); + public Subscription sendRetrofitRequest(int limit,int offset) { + Observable observable = RetrofitServiceManager.getAlarmListResult(limit, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java index fc8b4ce..d9f08dc 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java @@ -3,5 +3,5 @@ import rx.Subscription; public interface IAlarmListModel { - Subscription sendRetrofitRequest(int offset); + Subscription sendRetrofitRequest(int limit,int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java new file mode 100644 index 0000000..1db090e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IWellDetailModel { + Subscription sendRetrofitRequest(String where); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java new file mode 100644 index 0000000..f9e7a3e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class WellDetailModelImpl implements IWellDetailModel { + + private OnGetDetailListener listener; + + public WellDetailModelImpl(OnGetDetailListener listListener) { + this.listener = listListener; + } + + public interface OnGetDetailListener { + void onSuccess(WellDetailBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String where) { + Observable observable = RetrofitServiceManager.getWellDetailResult(where); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(WellDetailBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java index 624715b..1851e54 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java @@ -16,8 +16,8 @@ } @Override - public void onReadyRetrofitRequest(int offset) { - addSubscription(model.sendRetrofitRequest(offset)); + public void onReadyRetrofitRequest(int limit, int offset) { + addSubscription(model.sendRetrofitRequest(limit, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java index 550deec..2408f94 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java @@ -1,7 +1,7 @@ package com.casic.dcms.mvp.presenter; public interface IAlarmListPresenter { - void onReadyRetrofitRequest(int offset); + void onReadyRetrofitRequest(int limit,int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java new file mode 100644 index 0000000..e968509 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IWellDetailPresenter { + void onReadyRetrofitRequest(String where); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java new file mode 100644 index 0000000..1a123f1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.WellDetailModelImpl; +import com.casic.dcms.mvp.view.IWellDetailView; + +public class WellDetailPresenterImpl extends BasePresenter implements IWellDetailPresenter, WellDetailModelImpl.OnGetDetailListener { + + private IWellDetailView view; + private WellDetailModelImpl actionModel; + + public WellDetailPresenterImpl(IWellDetailView detailView) { + this.view = detailView; + actionModel = new WellDetailModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String where) { + addSubscription(actionModel.sendRetrofitRequest(where)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(WellDetailBean resultBean) { + view.obtainWellDetailResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java new file mode 100644 index 0000000..2d01903 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.WellDetailBean; + +public interface IWellDetailView { + void obtainWellDetailResult(WellDetailBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java index b1b7352..a58662d 100644 --- a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java @@ -27,6 +27,7 @@ import com.casic.dcms.mvp.view.ICancelAlarmView; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.CancelAlarmDialog; @@ -105,7 +106,7 @@ showBatchCancelDialog(); break; case 1: - + startActivity(new Intent(context, WarningOnMapActivity.class)); break; case 2: startActivity(new Intent(context, WellListActivity.class)); @@ -123,7 +124,7 @@ @Override public void initData() { alarmListPresenter = new AlarmListPresenterImpl(this); - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); weakReferenceHandler = new WeakReferenceHandler(this); @@ -138,7 +139,7 @@ isRefresh = true; //刷新之后页码重置 pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -146,7 +147,7 @@ public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { isLoadMore = true; pageIndex++; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); } @@ -231,7 +232,7 @@ //取消成功之后自动刷新列表 isRefresh = true; pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } else { ToastHelper.showToast("操作失败,请重试", ToastHelper.ERROR); } @@ -240,6 +241,7 @@ @Override public void obtainAlarmResult(AlarmDataBean resultBean) { if (resultBean.isSuccess()) { + SaveKeyValues.putValue("alarmTotal", resultBean.getData().getTotal()); List dataRows = resultBean.getData().getRows(); if (isRefresh) { dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index febcd02..f845c47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -95,6 +95,7 @@ + fields; + private List features; + + public String getDisplayFieldName() { + return displayFieldName; + } + + public void setDisplayFieldName(String displayFieldName) { + this.displayFieldName = displayFieldName; + } + + public FieldAliasesBean getFieldAliases() { + return fieldAliases; + } + + public void setFieldAliases(FieldAliasesBean fieldAliases) { + this.fieldAliases = fieldAliases; + } + + public String getGeometryType() { + return geometryType; + } + + public void setGeometryType(String geometryType) { + this.geometryType = geometryType; + } + + public SpatialReferenceBean getSpatialReference() { + return spatialReference; + } + + public void setSpatialReference(SpatialReferenceBean spatialReference) { + this.spatialReference = spatialReference; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public List getFeatures() { + return features; + } + + public void setFeatures(List features) { + this.features = features; + } + + public static class FieldAliasesBean { + + private String objectid; + private String 编号; + private String 附属物编码; + private String 地面高程; + private String x坐标; + private String y坐标; + private String 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private String jd; + private String wd; + + public String getObjectid() { + return objectid; + } + + public void setObjectid(String objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public String get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(String 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public String get地面高程() { + return 地面高程; + } + + public void set地面高程(String 地面高程) { + this.地面高程 = 地面高程; + } + + public String getX坐标() { + return x坐标; + } + + public void setX坐标(String x坐标) { + this.x坐标 = x坐标; + } + + public String getY坐标() { + return y坐标; + } + + public void setY坐标(String y坐标) { + this.y坐标 = y坐标; + } + + public String get井深() { + return 井深; + } + + public void set井深(String 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public String getJd() { + return jd; + } + + public void setJd(String jd) { + this.jd = jd; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + } + + public static class SpatialReferenceBean { + + private int wkid; + private int latestWkid; + + public int getWkid() { + return wkid; + } + + public void setWkid(int wkid) { + this.wkid = wkid; + } + + public int getLatestWkid() { + return latestWkid; + } + + public void setLatestWkid(int latestWkid) { + this.latestWkid = latestWkid; + } + } + + public static class FieldsBean { + + private String name; + private String type; + private String alias; + private int length; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + } + + public static class FeaturesBean { + + private AttributesBean attributes; + private GeometryBean geometry; + + public AttributesBean getAttributes() { + return attributes; + } + + public void setAttributes(AttributesBean attributes) { + this.attributes = attributes; + } + + public GeometryBean getGeometry() { + return geometry; + } + + public void setGeometry(GeometryBean geometry) { + this.geometry = geometry; + } + + public static class AttributesBean { + /** + * objectid : 3984 + * 编号 : GX_WSD_4107_HLDD150 + * 附属物编码 : 4107 + * 地面高程 : 59.462 + * x坐标 : 3071874.507 + * y坐标 : 408323.999 + * 井深 : 2.72 + * 附属物名称 : 污水井 + * 所属道路 : 活力大道 + * 建设年代 : + * 权属单位 : + * 备注 : + * jd : 116.070072 + * wd : 27.757135 + */ + + private int objectid; + private String 编号; + private int 附属物编码; + private double 地面高程; + private double x坐标; + private double y坐标; + private double 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private double jd; + private double wd; + + public int getObjectid() { + return objectid; + } + + public void setObjectid(int objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public int get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(int 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public double get地面高程() { + return 地面高程; + } + + public void set地面高程(double 地面高程) { + this.地面高程 = 地面高程; + } + + public double getX坐标() { + return x坐标; + } + + public void setX坐标(double x坐标) { + this.x坐标 = x坐标; + } + + public double getY坐标() { + return y坐标; + } + + public void setY坐标(double y坐标) { + this.y坐标 = y坐标; + } + + public double get井深() { + return 井深; + } + + public void set井深(double 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public double getJd() { + return jd; + } + + public void setJd(double jd) { + this.jd = jd; + } + + public double getWd() { + return wd; + } + + public void setWd(double wd) { + this.wd = wd; + } + } + + public static class GeometryBean { + /** + * x : 116.07007205499997 + * y : 27.757134534999977 + */ + + private double x; + private double y; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java index 5f5b8a9..1117853 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java @@ -24,8 +24,8 @@ } @Override - public Subscription sendRetrofitRequest(int offset) { - Observable observable = RetrofitServiceManager.getAlarmListResult(offset); + public Subscription sendRetrofitRequest(int limit,int offset) { + Observable observable = RetrofitServiceManager.getAlarmListResult(limit, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java index fc8b4ce..d9f08dc 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java @@ -3,5 +3,5 @@ import rx.Subscription; public interface IAlarmListModel { - Subscription sendRetrofitRequest(int offset); + Subscription sendRetrofitRequest(int limit,int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java new file mode 100644 index 0000000..1db090e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IWellDetailModel { + Subscription sendRetrofitRequest(String where); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java new file mode 100644 index 0000000..f9e7a3e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class WellDetailModelImpl implements IWellDetailModel { + + private OnGetDetailListener listener; + + public WellDetailModelImpl(OnGetDetailListener listListener) { + this.listener = listListener; + } + + public interface OnGetDetailListener { + void onSuccess(WellDetailBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String where) { + Observable observable = RetrofitServiceManager.getWellDetailResult(where); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(WellDetailBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java index 624715b..1851e54 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java @@ -16,8 +16,8 @@ } @Override - public void onReadyRetrofitRequest(int offset) { - addSubscription(model.sendRetrofitRequest(offset)); + public void onReadyRetrofitRequest(int limit, int offset) { + addSubscription(model.sendRetrofitRequest(limit, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java index 550deec..2408f94 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java @@ -1,7 +1,7 @@ package com.casic.dcms.mvp.presenter; public interface IAlarmListPresenter { - void onReadyRetrofitRequest(int offset); + void onReadyRetrofitRequest(int limit,int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java new file mode 100644 index 0000000..e968509 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IWellDetailPresenter { + void onReadyRetrofitRequest(String where); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java new file mode 100644 index 0000000..1a123f1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.WellDetailModelImpl; +import com.casic.dcms.mvp.view.IWellDetailView; + +public class WellDetailPresenterImpl extends BasePresenter implements IWellDetailPresenter, WellDetailModelImpl.OnGetDetailListener { + + private IWellDetailView view; + private WellDetailModelImpl actionModel; + + public WellDetailPresenterImpl(IWellDetailView detailView) { + this.view = detailView; + actionModel = new WellDetailModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String where) { + addSubscription(actionModel.sendRetrofitRequest(where)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(WellDetailBean resultBean) { + view.obtainWellDetailResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java new file mode 100644 index 0000000..2d01903 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.WellDetailBean; + +public interface IWellDetailView { + void obtainWellDetailResult(WellDetailBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java index b1b7352..a58662d 100644 --- a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java @@ -27,6 +27,7 @@ import com.casic.dcms.mvp.view.ICancelAlarmView; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.CancelAlarmDialog; @@ -105,7 +106,7 @@ showBatchCancelDialog(); break; case 1: - + startActivity(new Intent(context, WarningOnMapActivity.class)); break; case 2: startActivity(new Intent(context, WellListActivity.class)); @@ -123,7 +124,7 @@ @Override public void initData() { alarmListPresenter = new AlarmListPresenterImpl(this); - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); weakReferenceHandler = new WeakReferenceHandler(this); @@ -138,7 +139,7 @@ isRefresh = true; //刷新之后页码重置 pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -146,7 +147,7 @@ public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { isLoadMore = true; pageIndex++; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); } @@ -231,7 +232,7 @@ //取消成功之后自动刷新列表 isRefresh = true; pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } else { ToastHelper.showToast("操作失败,请重试", ToastHelper.ERROR); } @@ -240,6 +241,7 @@ @Override public void obtainAlarmResult(AlarmDataBean resultBean) { if (resultBean.isSuccess()) { + SaveKeyValues.putValue("alarmTotal", resultBean.getData().getTotal()); List dataRows = resultBean.getData().getRows(); if (isRefresh) { dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 diff --git a/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java new file mode 100644 index 0000000..b318fe0 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java @@ -0,0 +1,221 @@ +package com.casic.dcms.ui; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.DialogInterface; +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.AlarmDataBean; +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.presenter.AlarmListPresenterImpl; +import com.casic.dcms.mvp.presenter.WellDetailPresenterImpl; +import com.casic.dcms.mvp.view.IAlarmListView; +import com.casic.dcms.mvp.view.IWellDetailView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.SaveKeyValues; +import com.esri.arcgisruntime.geometry.Point; +import com.esri.arcgisruntime.layers.ArcGISTiledLayer; +import com.esri.arcgisruntime.mapping.ArcGISMap; +import com.esri.arcgisruntime.mapping.Basemap; +import com.esri.arcgisruntime.mapping.BasemapStyle; +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; +import com.esri.arcgisruntime.mapping.view.Graphic; +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; +import com.esri.arcgisruntime.mapping.view.MapView; +import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol; +import com.esri.arcgisruntime.util.ListenableList; +import com.qmuiteam.qmui.util.QMUIDisplayHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.popup.QMUIPopup; +import com.qmuiteam.qmui.widget.popup.QMUIPopups; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class WarningOnMapActivity extends BaseActivity implements View.OnClickListener, IAlarmListView, + IWellDetailView { + + private static final String TAG = "WarningOnMapActivity"; + private Context context = this; + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.mapView) + MapView mapView; + + private AlarmListPresenterImpl alarmListPresenter; + private WellDetailPresenterImpl detailPresenter; + private List geometryList = new ArrayList<>(); + + @Override + public int initLayoutView() { + return R.layout.activity_map_warning; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("报警分布").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mapView.setAttributionTextVisible(false);//去掉左下角属性标识 + mapView.setViewpointScaleAsync(64000); + ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); + //创建底图、并设置底图图层 + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); + Basemap basemap = new Basemap(baseLayer); + arcGISMap.setBasemap(basemap); + mapView.setMap(arcGISMap); + + int alarmTotal = (int) SaveKeyValues.getValue("alarmTotal", Constant.PAGE_LIMIT); + alarmListPresenter = new AlarmListPresenterImpl(this); + alarmListPresenter.onReadyRetrofitRequest(alarmTotal, 1); + detailPresenter = new WellDetailPresenterImpl(this); + } + + @SuppressLint("ClickableViewAccessibility") + @Override + public void initEvent() { + mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { + @Override + public boolean onSingleTapConfirmed(MotionEvent e) { + android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); + Point clickPoint = mapView.screenToLocation(screenPoint); + if (geometryList.size() > 0) { + List tempList = new ArrayList<>(); + for (WellDetailBean.FeaturesBean featuresBean : geometryList) { + WellDetailBean.FeaturesBean.GeometryBean dataBean = featuresBean.getGeometry(); + if (Math.abs(dataBean.getX() - clickPoint.getX()) <= 10 * Constant.DELTA_LNG_10 && + Math.abs(dataBean.getY() - clickPoint.getY()) <= 10 * Constant.DELTA_LNG_10) { + tempList.add(featuresBean); + } + } + if (tempList.size() > 0) { + QMUIDialog.MenuDialogBuilder menuDialogBuilder = new QMUIDialog.MenuDialogBuilder(context); + menuDialogBuilder.setTitle("请选择您要查看的窨井"); + for (WellDetailBean.FeaturesBean dataBean : tempList) { + menuDialogBuilder.addItem(dataBean.getAttributes().get编号(), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + + View popupView = LayoutInflater.from(context).inflate(R.layout.popu_well, null); + TextView wellCodeView = popupView.findViewById(R.id.wellCodeView); + TextView wellTypeView = popupView.findViewById(R.id.wellTypeView); + TextView wellPositionView = popupView.findViewById(R.id.wellPositionView); + + WellDetailBean.FeaturesBean.AttributesBean attributes = dataBean.getAttributes(); + wellCodeView.setText(attributes.get编号()); + wellTypeView.setText(attributes.get附属物名称()); + wellPositionView.setText(attributes.get所属道路()); + + QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 290)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapView); + } + }); + } + menuDialogBuilder.create().show(); + } + } + return super.onSingleTapConfirmed(e); + } + }); + } + + @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.expandMapView: + mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); + break; + case R.id.minusMapView: + mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); + break; + default: + break; + } + } + + protected void onResume() { + super.onResume(); + mapView.resume(); + } + + @Override + protected void onPause() { + super.onPause(); + mapView.pause(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + mapView.dispose(); + if (alarmListPresenter != null) { + alarmListPresenter.disposeRetrofitRequest(); + } + if (detailPresenter != null) { + detailPresenter.disposeRetrofitRequest(); + } + } + + @Override + public void obtainAlarmResult(AlarmDataBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + for (AlarmDataBean.DataBean.RowsBean rowsBean : dataRows) { + String queryParam = "编号='" + rowsBean.getWellCode() + "'"; + detailPresenter.onReadyRetrofitRequest(queryParam); + } + } + } + + @Override + public void obtainWellDetailResult(WellDetailBean resultBean) { + List features = resultBean.getFeatures(); + if (features.size() > 0) { + WellDetailBean.FeaturesBean featuresBean = features.get(0); + //将获取到的井数据缓存起来 + geometryList.add(featuresBean); + WellDetailBean.FeaturesBean.GeometryBean geometryBean = featuresBean.getGeometry(); + //每获取一个点就绘制出 + addMarker(new Point(geometryBean.getX(), geometryBean.getY())); + } + } + + private void addMarker(Point point) { + SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 10); + Graphic graphic = new Graphic(point, simpleMarkerSymbol); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index febcd02..f845c47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -95,6 +95,7 @@ + fields; + private List features; + + public String getDisplayFieldName() { + return displayFieldName; + } + + public void setDisplayFieldName(String displayFieldName) { + this.displayFieldName = displayFieldName; + } + + public FieldAliasesBean getFieldAliases() { + return fieldAliases; + } + + public void setFieldAliases(FieldAliasesBean fieldAliases) { + this.fieldAliases = fieldAliases; + } + + public String getGeometryType() { + return geometryType; + } + + public void setGeometryType(String geometryType) { + this.geometryType = geometryType; + } + + public SpatialReferenceBean getSpatialReference() { + return spatialReference; + } + + public void setSpatialReference(SpatialReferenceBean spatialReference) { + this.spatialReference = spatialReference; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public List getFeatures() { + return features; + } + + public void setFeatures(List features) { + this.features = features; + } + + public static class FieldAliasesBean { + + private String objectid; + private String 编号; + private String 附属物编码; + private String 地面高程; + private String x坐标; + private String y坐标; + private String 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private String jd; + private String wd; + + public String getObjectid() { + return objectid; + } + + public void setObjectid(String objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public String get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(String 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public String get地面高程() { + return 地面高程; + } + + public void set地面高程(String 地面高程) { + this.地面高程 = 地面高程; + } + + public String getX坐标() { + return x坐标; + } + + public void setX坐标(String x坐标) { + this.x坐标 = x坐标; + } + + public String getY坐标() { + return y坐标; + } + + public void setY坐标(String y坐标) { + this.y坐标 = y坐标; + } + + public String get井深() { + return 井深; + } + + public void set井深(String 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public String getJd() { + return jd; + } + + public void setJd(String jd) { + this.jd = jd; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + } + + public static class SpatialReferenceBean { + + private int wkid; + private int latestWkid; + + public int getWkid() { + return wkid; + } + + public void setWkid(int wkid) { + this.wkid = wkid; + } + + public int getLatestWkid() { + return latestWkid; + } + + public void setLatestWkid(int latestWkid) { + this.latestWkid = latestWkid; + } + } + + public static class FieldsBean { + + private String name; + private String type; + private String alias; + private int length; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + } + + public static class FeaturesBean { + + private AttributesBean attributes; + private GeometryBean geometry; + + public AttributesBean getAttributes() { + return attributes; + } + + public void setAttributes(AttributesBean attributes) { + this.attributes = attributes; + } + + public GeometryBean getGeometry() { + return geometry; + } + + public void setGeometry(GeometryBean geometry) { + this.geometry = geometry; + } + + public static class AttributesBean { + /** + * objectid : 3984 + * 编号 : GX_WSD_4107_HLDD150 + * 附属物编码 : 4107 + * 地面高程 : 59.462 + * x坐标 : 3071874.507 + * y坐标 : 408323.999 + * 井深 : 2.72 + * 附属物名称 : 污水井 + * 所属道路 : 活力大道 + * 建设年代 : + * 权属单位 : + * 备注 : + * jd : 116.070072 + * wd : 27.757135 + */ + + private int objectid; + private String 编号; + private int 附属物编码; + private double 地面高程; + private double x坐标; + private double y坐标; + private double 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private double jd; + private double wd; + + public int getObjectid() { + return objectid; + } + + public void setObjectid(int objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public int get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(int 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public double get地面高程() { + return 地面高程; + } + + public void set地面高程(double 地面高程) { + this.地面高程 = 地面高程; + } + + public double getX坐标() { + return x坐标; + } + + public void setX坐标(double x坐标) { + this.x坐标 = x坐标; + } + + public double getY坐标() { + return y坐标; + } + + public void setY坐标(double y坐标) { + this.y坐标 = y坐标; + } + + public double get井深() { + return 井深; + } + + public void set井深(double 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public double getJd() { + return jd; + } + + public void setJd(double jd) { + this.jd = jd; + } + + public double getWd() { + return wd; + } + + public void setWd(double wd) { + this.wd = wd; + } + } + + public static class GeometryBean { + /** + * x : 116.07007205499997 + * y : 27.757134534999977 + */ + + private double x; + private double y; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java index 5f5b8a9..1117853 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java @@ -24,8 +24,8 @@ } @Override - public Subscription sendRetrofitRequest(int offset) { - Observable observable = RetrofitServiceManager.getAlarmListResult(offset); + public Subscription sendRetrofitRequest(int limit,int offset) { + Observable observable = RetrofitServiceManager.getAlarmListResult(limit, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java index fc8b4ce..d9f08dc 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java @@ -3,5 +3,5 @@ import rx.Subscription; public interface IAlarmListModel { - Subscription sendRetrofitRequest(int offset); + Subscription sendRetrofitRequest(int limit,int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java new file mode 100644 index 0000000..1db090e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IWellDetailModel { + Subscription sendRetrofitRequest(String where); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java new file mode 100644 index 0000000..f9e7a3e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class WellDetailModelImpl implements IWellDetailModel { + + private OnGetDetailListener listener; + + public WellDetailModelImpl(OnGetDetailListener listListener) { + this.listener = listListener; + } + + public interface OnGetDetailListener { + void onSuccess(WellDetailBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String where) { + Observable observable = RetrofitServiceManager.getWellDetailResult(where); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(WellDetailBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java index 624715b..1851e54 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java @@ -16,8 +16,8 @@ } @Override - public void onReadyRetrofitRequest(int offset) { - addSubscription(model.sendRetrofitRequest(offset)); + public void onReadyRetrofitRequest(int limit, int offset) { + addSubscription(model.sendRetrofitRequest(limit, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java index 550deec..2408f94 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java @@ -1,7 +1,7 @@ package com.casic.dcms.mvp.presenter; public interface IAlarmListPresenter { - void onReadyRetrofitRequest(int offset); + void onReadyRetrofitRequest(int limit,int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java new file mode 100644 index 0000000..e968509 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IWellDetailPresenter { + void onReadyRetrofitRequest(String where); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java new file mode 100644 index 0000000..1a123f1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.WellDetailModelImpl; +import com.casic.dcms.mvp.view.IWellDetailView; + +public class WellDetailPresenterImpl extends BasePresenter implements IWellDetailPresenter, WellDetailModelImpl.OnGetDetailListener { + + private IWellDetailView view; + private WellDetailModelImpl actionModel; + + public WellDetailPresenterImpl(IWellDetailView detailView) { + this.view = detailView; + actionModel = new WellDetailModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String where) { + addSubscription(actionModel.sendRetrofitRequest(where)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(WellDetailBean resultBean) { + view.obtainWellDetailResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java new file mode 100644 index 0000000..2d01903 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.WellDetailBean; + +public interface IWellDetailView { + void obtainWellDetailResult(WellDetailBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java index b1b7352..a58662d 100644 --- a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java @@ -27,6 +27,7 @@ import com.casic.dcms.mvp.view.ICancelAlarmView; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.CancelAlarmDialog; @@ -105,7 +106,7 @@ showBatchCancelDialog(); break; case 1: - + startActivity(new Intent(context, WarningOnMapActivity.class)); break; case 2: startActivity(new Intent(context, WellListActivity.class)); @@ -123,7 +124,7 @@ @Override public void initData() { alarmListPresenter = new AlarmListPresenterImpl(this); - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); weakReferenceHandler = new WeakReferenceHandler(this); @@ -138,7 +139,7 @@ isRefresh = true; //刷新之后页码重置 pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -146,7 +147,7 @@ public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { isLoadMore = true; pageIndex++; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); } @@ -231,7 +232,7 @@ //取消成功之后自动刷新列表 isRefresh = true; pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } else { ToastHelper.showToast("操作失败,请重试", ToastHelper.ERROR); } @@ -240,6 +241,7 @@ @Override public void obtainAlarmResult(AlarmDataBean resultBean) { if (resultBean.isSuccess()) { + SaveKeyValues.putValue("alarmTotal", resultBean.getData().getTotal()); List dataRows = resultBean.getData().getRows(); if (isRefresh) { dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 diff --git a/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java new file mode 100644 index 0000000..b318fe0 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java @@ -0,0 +1,221 @@ +package com.casic.dcms.ui; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.DialogInterface; +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.AlarmDataBean; +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.presenter.AlarmListPresenterImpl; +import com.casic.dcms.mvp.presenter.WellDetailPresenterImpl; +import com.casic.dcms.mvp.view.IAlarmListView; +import com.casic.dcms.mvp.view.IWellDetailView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.SaveKeyValues; +import com.esri.arcgisruntime.geometry.Point; +import com.esri.arcgisruntime.layers.ArcGISTiledLayer; +import com.esri.arcgisruntime.mapping.ArcGISMap; +import com.esri.arcgisruntime.mapping.Basemap; +import com.esri.arcgisruntime.mapping.BasemapStyle; +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; +import com.esri.arcgisruntime.mapping.view.Graphic; +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; +import com.esri.arcgisruntime.mapping.view.MapView; +import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol; +import com.esri.arcgisruntime.util.ListenableList; +import com.qmuiteam.qmui.util.QMUIDisplayHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.popup.QMUIPopup; +import com.qmuiteam.qmui.widget.popup.QMUIPopups; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class WarningOnMapActivity extends BaseActivity implements View.OnClickListener, IAlarmListView, + IWellDetailView { + + private static final String TAG = "WarningOnMapActivity"; + private Context context = this; + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.mapView) + MapView mapView; + + private AlarmListPresenterImpl alarmListPresenter; + private WellDetailPresenterImpl detailPresenter; + private List geometryList = new ArrayList<>(); + + @Override + public int initLayoutView() { + return R.layout.activity_map_warning; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("报警分布").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mapView.setAttributionTextVisible(false);//去掉左下角属性标识 + mapView.setViewpointScaleAsync(64000); + ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); + //创建底图、并设置底图图层 + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); + Basemap basemap = new Basemap(baseLayer); + arcGISMap.setBasemap(basemap); + mapView.setMap(arcGISMap); + + int alarmTotal = (int) SaveKeyValues.getValue("alarmTotal", Constant.PAGE_LIMIT); + alarmListPresenter = new AlarmListPresenterImpl(this); + alarmListPresenter.onReadyRetrofitRequest(alarmTotal, 1); + detailPresenter = new WellDetailPresenterImpl(this); + } + + @SuppressLint("ClickableViewAccessibility") + @Override + public void initEvent() { + mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { + @Override + public boolean onSingleTapConfirmed(MotionEvent e) { + android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); + Point clickPoint = mapView.screenToLocation(screenPoint); + if (geometryList.size() > 0) { + List tempList = new ArrayList<>(); + for (WellDetailBean.FeaturesBean featuresBean : geometryList) { + WellDetailBean.FeaturesBean.GeometryBean dataBean = featuresBean.getGeometry(); + if (Math.abs(dataBean.getX() - clickPoint.getX()) <= 10 * Constant.DELTA_LNG_10 && + Math.abs(dataBean.getY() - clickPoint.getY()) <= 10 * Constant.DELTA_LNG_10) { + tempList.add(featuresBean); + } + } + if (tempList.size() > 0) { + QMUIDialog.MenuDialogBuilder menuDialogBuilder = new QMUIDialog.MenuDialogBuilder(context); + menuDialogBuilder.setTitle("请选择您要查看的窨井"); + for (WellDetailBean.FeaturesBean dataBean : tempList) { + menuDialogBuilder.addItem(dataBean.getAttributes().get编号(), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + + View popupView = LayoutInflater.from(context).inflate(R.layout.popu_well, null); + TextView wellCodeView = popupView.findViewById(R.id.wellCodeView); + TextView wellTypeView = popupView.findViewById(R.id.wellTypeView); + TextView wellPositionView = popupView.findViewById(R.id.wellPositionView); + + WellDetailBean.FeaturesBean.AttributesBean attributes = dataBean.getAttributes(); + wellCodeView.setText(attributes.get编号()); + wellTypeView.setText(attributes.get附属物名称()); + wellPositionView.setText(attributes.get所属道路()); + + QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 290)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapView); + } + }); + } + menuDialogBuilder.create().show(); + } + } + return super.onSingleTapConfirmed(e); + } + }); + } + + @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.expandMapView: + mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); + break; + case R.id.minusMapView: + mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); + break; + default: + break; + } + } + + protected void onResume() { + super.onResume(); + mapView.resume(); + } + + @Override + protected void onPause() { + super.onPause(); + mapView.pause(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + mapView.dispose(); + if (alarmListPresenter != null) { + alarmListPresenter.disposeRetrofitRequest(); + } + if (detailPresenter != null) { + detailPresenter.disposeRetrofitRequest(); + } + } + + @Override + public void obtainAlarmResult(AlarmDataBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + for (AlarmDataBean.DataBean.RowsBean rowsBean : dataRows) { + String queryParam = "编号='" + rowsBean.getWellCode() + "'"; + detailPresenter.onReadyRetrofitRequest(queryParam); + } + } + } + + @Override + public void obtainWellDetailResult(WellDetailBean resultBean) { + List features = resultBean.getFeatures(); + if (features.size() > 0) { + WellDetailBean.FeaturesBean featuresBean = features.get(0); + //将获取到的井数据缓存起来 + geometryList.add(featuresBean); + WellDetailBean.FeaturesBean.GeometryBean geometryBean = featuresBean.getGeometry(); + //每获取一个点就绘制出 + addMarker(new Point(geometryBean.getX(), geometryBean.getY())); + } + } + + private void addMarker(Point point) { + SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 10); + Graphic graphic = new Graphic(point, simpleMarkerSymbol); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index b3fbd7b..e8cd7d5 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -87,9 +87,11 @@ public static final String BASE_MAP_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 public static final String BASE_MAP_NO_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 public static final String COMPONENT_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 + public static final String WELL_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer";//崇仁窨井图层 //正式环境 // public static final String BASE_MAP_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 // public static final String BASE_MAP_NO_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 // public static final String COMPONENT_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 +// public static final String WELL_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer";//崇仁窨井图层 } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index febcd02..f845c47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -95,6 +95,7 @@ + fields; + private List features; + + public String getDisplayFieldName() { + return displayFieldName; + } + + public void setDisplayFieldName(String displayFieldName) { + this.displayFieldName = displayFieldName; + } + + public FieldAliasesBean getFieldAliases() { + return fieldAliases; + } + + public void setFieldAliases(FieldAliasesBean fieldAliases) { + this.fieldAliases = fieldAliases; + } + + public String getGeometryType() { + return geometryType; + } + + public void setGeometryType(String geometryType) { + this.geometryType = geometryType; + } + + public SpatialReferenceBean getSpatialReference() { + return spatialReference; + } + + public void setSpatialReference(SpatialReferenceBean spatialReference) { + this.spatialReference = spatialReference; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public List getFeatures() { + return features; + } + + public void setFeatures(List features) { + this.features = features; + } + + public static class FieldAliasesBean { + + private String objectid; + private String 编号; + private String 附属物编码; + private String 地面高程; + private String x坐标; + private String y坐标; + private String 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private String jd; + private String wd; + + public String getObjectid() { + return objectid; + } + + public void setObjectid(String objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public String get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(String 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public String get地面高程() { + return 地面高程; + } + + public void set地面高程(String 地面高程) { + this.地面高程 = 地面高程; + } + + public String getX坐标() { + return x坐标; + } + + public void setX坐标(String x坐标) { + this.x坐标 = x坐标; + } + + public String getY坐标() { + return y坐标; + } + + public void setY坐标(String y坐标) { + this.y坐标 = y坐标; + } + + public String get井深() { + return 井深; + } + + public void set井深(String 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public String getJd() { + return jd; + } + + public void setJd(String jd) { + this.jd = jd; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + } + + public static class SpatialReferenceBean { + + private int wkid; + private int latestWkid; + + public int getWkid() { + return wkid; + } + + public void setWkid(int wkid) { + this.wkid = wkid; + } + + public int getLatestWkid() { + return latestWkid; + } + + public void setLatestWkid(int latestWkid) { + this.latestWkid = latestWkid; + } + } + + public static class FieldsBean { + + private String name; + private String type; + private String alias; + private int length; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + } + + public static class FeaturesBean { + + private AttributesBean attributes; + private GeometryBean geometry; + + public AttributesBean getAttributes() { + return attributes; + } + + public void setAttributes(AttributesBean attributes) { + this.attributes = attributes; + } + + public GeometryBean getGeometry() { + return geometry; + } + + public void setGeometry(GeometryBean geometry) { + this.geometry = geometry; + } + + public static class AttributesBean { + /** + * objectid : 3984 + * 编号 : GX_WSD_4107_HLDD150 + * 附属物编码 : 4107 + * 地面高程 : 59.462 + * x坐标 : 3071874.507 + * y坐标 : 408323.999 + * 井深 : 2.72 + * 附属物名称 : 污水井 + * 所属道路 : 活力大道 + * 建设年代 : + * 权属单位 : + * 备注 : + * jd : 116.070072 + * wd : 27.757135 + */ + + private int objectid; + private String 编号; + private int 附属物编码; + private double 地面高程; + private double x坐标; + private double y坐标; + private double 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private double jd; + private double wd; + + public int getObjectid() { + return objectid; + } + + public void setObjectid(int objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public int get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(int 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public double get地面高程() { + return 地面高程; + } + + public void set地面高程(double 地面高程) { + this.地面高程 = 地面高程; + } + + public double getX坐标() { + return x坐标; + } + + public void setX坐标(double x坐标) { + this.x坐标 = x坐标; + } + + public double getY坐标() { + return y坐标; + } + + public void setY坐标(double y坐标) { + this.y坐标 = y坐标; + } + + public double get井深() { + return 井深; + } + + public void set井深(double 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public double getJd() { + return jd; + } + + public void setJd(double jd) { + this.jd = jd; + } + + public double getWd() { + return wd; + } + + public void setWd(double wd) { + this.wd = wd; + } + } + + public static class GeometryBean { + /** + * x : 116.07007205499997 + * y : 27.757134534999977 + */ + + private double x; + private double y; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java index 5f5b8a9..1117853 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java @@ -24,8 +24,8 @@ } @Override - public Subscription sendRetrofitRequest(int offset) { - Observable observable = RetrofitServiceManager.getAlarmListResult(offset); + public Subscription sendRetrofitRequest(int limit,int offset) { + Observable observable = RetrofitServiceManager.getAlarmListResult(limit, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java index fc8b4ce..d9f08dc 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java @@ -3,5 +3,5 @@ import rx.Subscription; public interface IAlarmListModel { - Subscription sendRetrofitRequest(int offset); + Subscription sendRetrofitRequest(int limit,int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java new file mode 100644 index 0000000..1db090e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IWellDetailModel { + Subscription sendRetrofitRequest(String where); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java new file mode 100644 index 0000000..f9e7a3e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class WellDetailModelImpl implements IWellDetailModel { + + private OnGetDetailListener listener; + + public WellDetailModelImpl(OnGetDetailListener listListener) { + this.listener = listListener; + } + + public interface OnGetDetailListener { + void onSuccess(WellDetailBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String where) { + Observable observable = RetrofitServiceManager.getWellDetailResult(where); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(WellDetailBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java index 624715b..1851e54 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java @@ -16,8 +16,8 @@ } @Override - public void onReadyRetrofitRequest(int offset) { - addSubscription(model.sendRetrofitRequest(offset)); + public void onReadyRetrofitRequest(int limit, int offset) { + addSubscription(model.sendRetrofitRequest(limit, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java index 550deec..2408f94 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java @@ -1,7 +1,7 @@ package com.casic.dcms.mvp.presenter; public interface IAlarmListPresenter { - void onReadyRetrofitRequest(int offset); + void onReadyRetrofitRequest(int limit,int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java new file mode 100644 index 0000000..e968509 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IWellDetailPresenter { + void onReadyRetrofitRequest(String where); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java new file mode 100644 index 0000000..1a123f1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.WellDetailModelImpl; +import com.casic.dcms.mvp.view.IWellDetailView; + +public class WellDetailPresenterImpl extends BasePresenter implements IWellDetailPresenter, WellDetailModelImpl.OnGetDetailListener { + + private IWellDetailView view; + private WellDetailModelImpl actionModel; + + public WellDetailPresenterImpl(IWellDetailView detailView) { + this.view = detailView; + actionModel = new WellDetailModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String where) { + addSubscription(actionModel.sendRetrofitRequest(where)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(WellDetailBean resultBean) { + view.obtainWellDetailResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java new file mode 100644 index 0000000..2d01903 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.WellDetailBean; + +public interface IWellDetailView { + void obtainWellDetailResult(WellDetailBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java index b1b7352..a58662d 100644 --- a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java @@ -27,6 +27,7 @@ import com.casic.dcms.mvp.view.ICancelAlarmView; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.CancelAlarmDialog; @@ -105,7 +106,7 @@ showBatchCancelDialog(); break; case 1: - + startActivity(new Intent(context, WarningOnMapActivity.class)); break; case 2: startActivity(new Intent(context, WellListActivity.class)); @@ -123,7 +124,7 @@ @Override public void initData() { alarmListPresenter = new AlarmListPresenterImpl(this); - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); weakReferenceHandler = new WeakReferenceHandler(this); @@ -138,7 +139,7 @@ isRefresh = true; //刷新之后页码重置 pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -146,7 +147,7 @@ public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { isLoadMore = true; pageIndex++; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); } @@ -231,7 +232,7 @@ //取消成功之后自动刷新列表 isRefresh = true; pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } else { ToastHelper.showToast("操作失败,请重试", ToastHelper.ERROR); } @@ -240,6 +241,7 @@ @Override public void obtainAlarmResult(AlarmDataBean resultBean) { if (resultBean.isSuccess()) { + SaveKeyValues.putValue("alarmTotal", resultBean.getData().getTotal()); List dataRows = resultBean.getData().getRows(); if (isRefresh) { dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 diff --git a/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java new file mode 100644 index 0000000..b318fe0 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java @@ -0,0 +1,221 @@ +package com.casic.dcms.ui; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.DialogInterface; +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.AlarmDataBean; +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.presenter.AlarmListPresenterImpl; +import com.casic.dcms.mvp.presenter.WellDetailPresenterImpl; +import com.casic.dcms.mvp.view.IAlarmListView; +import com.casic.dcms.mvp.view.IWellDetailView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.SaveKeyValues; +import com.esri.arcgisruntime.geometry.Point; +import com.esri.arcgisruntime.layers.ArcGISTiledLayer; +import com.esri.arcgisruntime.mapping.ArcGISMap; +import com.esri.arcgisruntime.mapping.Basemap; +import com.esri.arcgisruntime.mapping.BasemapStyle; +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; +import com.esri.arcgisruntime.mapping.view.Graphic; +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; +import com.esri.arcgisruntime.mapping.view.MapView; +import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol; +import com.esri.arcgisruntime.util.ListenableList; +import com.qmuiteam.qmui.util.QMUIDisplayHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.popup.QMUIPopup; +import com.qmuiteam.qmui.widget.popup.QMUIPopups; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class WarningOnMapActivity extends BaseActivity implements View.OnClickListener, IAlarmListView, + IWellDetailView { + + private static final String TAG = "WarningOnMapActivity"; + private Context context = this; + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.mapView) + MapView mapView; + + private AlarmListPresenterImpl alarmListPresenter; + private WellDetailPresenterImpl detailPresenter; + private List geometryList = new ArrayList<>(); + + @Override + public int initLayoutView() { + return R.layout.activity_map_warning; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("报警分布").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mapView.setAttributionTextVisible(false);//去掉左下角属性标识 + mapView.setViewpointScaleAsync(64000); + ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); + //创建底图、并设置底图图层 + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); + Basemap basemap = new Basemap(baseLayer); + arcGISMap.setBasemap(basemap); + mapView.setMap(arcGISMap); + + int alarmTotal = (int) SaveKeyValues.getValue("alarmTotal", Constant.PAGE_LIMIT); + alarmListPresenter = new AlarmListPresenterImpl(this); + alarmListPresenter.onReadyRetrofitRequest(alarmTotal, 1); + detailPresenter = new WellDetailPresenterImpl(this); + } + + @SuppressLint("ClickableViewAccessibility") + @Override + public void initEvent() { + mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { + @Override + public boolean onSingleTapConfirmed(MotionEvent e) { + android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); + Point clickPoint = mapView.screenToLocation(screenPoint); + if (geometryList.size() > 0) { + List tempList = new ArrayList<>(); + for (WellDetailBean.FeaturesBean featuresBean : geometryList) { + WellDetailBean.FeaturesBean.GeometryBean dataBean = featuresBean.getGeometry(); + if (Math.abs(dataBean.getX() - clickPoint.getX()) <= 10 * Constant.DELTA_LNG_10 && + Math.abs(dataBean.getY() - clickPoint.getY()) <= 10 * Constant.DELTA_LNG_10) { + tempList.add(featuresBean); + } + } + if (tempList.size() > 0) { + QMUIDialog.MenuDialogBuilder menuDialogBuilder = new QMUIDialog.MenuDialogBuilder(context); + menuDialogBuilder.setTitle("请选择您要查看的窨井"); + for (WellDetailBean.FeaturesBean dataBean : tempList) { + menuDialogBuilder.addItem(dataBean.getAttributes().get编号(), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + + View popupView = LayoutInflater.from(context).inflate(R.layout.popu_well, null); + TextView wellCodeView = popupView.findViewById(R.id.wellCodeView); + TextView wellTypeView = popupView.findViewById(R.id.wellTypeView); + TextView wellPositionView = popupView.findViewById(R.id.wellPositionView); + + WellDetailBean.FeaturesBean.AttributesBean attributes = dataBean.getAttributes(); + wellCodeView.setText(attributes.get编号()); + wellTypeView.setText(attributes.get附属物名称()); + wellPositionView.setText(attributes.get所属道路()); + + QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 290)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapView); + } + }); + } + menuDialogBuilder.create().show(); + } + } + return super.onSingleTapConfirmed(e); + } + }); + } + + @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.expandMapView: + mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); + break; + case R.id.minusMapView: + mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); + break; + default: + break; + } + } + + protected void onResume() { + super.onResume(); + mapView.resume(); + } + + @Override + protected void onPause() { + super.onPause(); + mapView.pause(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + mapView.dispose(); + if (alarmListPresenter != null) { + alarmListPresenter.disposeRetrofitRequest(); + } + if (detailPresenter != null) { + detailPresenter.disposeRetrofitRequest(); + } + } + + @Override + public void obtainAlarmResult(AlarmDataBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + for (AlarmDataBean.DataBean.RowsBean rowsBean : dataRows) { + String queryParam = "编号='" + rowsBean.getWellCode() + "'"; + detailPresenter.onReadyRetrofitRequest(queryParam); + } + } + } + + @Override + public void obtainWellDetailResult(WellDetailBean resultBean) { + List features = resultBean.getFeatures(); + if (features.size() > 0) { + WellDetailBean.FeaturesBean featuresBean = features.get(0); + //将获取到的井数据缓存起来 + geometryList.add(featuresBean); + WellDetailBean.FeaturesBean.GeometryBean geometryBean = featuresBean.getGeometry(); + //每获取一个点就绘制出 + addMarker(new Point(geometryBean.getX(), geometryBean.getY())); + } + } + + private void addMarker(Point point) { + SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 10); + Graphic graphic = new Graphic(point, simpleMarkerSymbol); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index b3fbd7b..e8cd7d5 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -87,9 +87,11 @@ public static final String BASE_MAP_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 public static final String BASE_MAP_NO_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 public static final String COMPONENT_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 + public static final String WELL_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer";//崇仁窨井图层 //正式环境 // public static final String BASE_MAP_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 // public static final String BASE_MAP_NO_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 // public static final String COMPONENT_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 +// public static final String WELL_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer";//崇仁窨井图层 } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 16a9d4c..f70d101 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -35,6 +35,7 @@ import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; import com.casic.dcms.bean.UserBean; +import com.casic.dcms.bean.WellDetailBean; import com.casic.dcms.bean.WellListBean; import java.util.List; @@ -768,4 +769,17 @@ @POST("/smartwell/well/batchBfcf") Observable optionWellStatus(@Header("token") String token, @Field("bfzt") String bfzt); + + /** + * 井详情 + *

+ * http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer/0/query?f=json&inSr=4326&outSR=4326&outFields=*&returnGeometry=true&where=编号='GX_WSD_4107_HLDD154' + */ + @GET("/arcgis/rest/services/fsw/MapServer/0/query") + Observable obtainWellDetail(@Query("f") String f, + @Query("inSr") String inSr, + @Query("outSR") String outSR, + @Query("outFields") String outFields, + @Query("returnGeometry") boolean returnGeometry, + @Query("where") String where); } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index febcd02..f845c47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -95,6 +95,7 @@ + fields; + private List features; + + public String getDisplayFieldName() { + return displayFieldName; + } + + public void setDisplayFieldName(String displayFieldName) { + this.displayFieldName = displayFieldName; + } + + public FieldAliasesBean getFieldAliases() { + return fieldAliases; + } + + public void setFieldAliases(FieldAliasesBean fieldAliases) { + this.fieldAliases = fieldAliases; + } + + public String getGeometryType() { + return geometryType; + } + + public void setGeometryType(String geometryType) { + this.geometryType = geometryType; + } + + public SpatialReferenceBean getSpatialReference() { + return spatialReference; + } + + public void setSpatialReference(SpatialReferenceBean spatialReference) { + this.spatialReference = spatialReference; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public List getFeatures() { + return features; + } + + public void setFeatures(List features) { + this.features = features; + } + + public static class FieldAliasesBean { + + private String objectid; + private String 编号; + private String 附属物编码; + private String 地面高程; + private String x坐标; + private String y坐标; + private String 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private String jd; + private String wd; + + public String getObjectid() { + return objectid; + } + + public void setObjectid(String objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public String get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(String 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public String get地面高程() { + return 地面高程; + } + + public void set地面高程(String 地面高程) { + this.地面高程 = 地面高程; + } + + public String getX坐标() { + return x坐标; + } + + public void setX坐标(String x坐标) { + this.x坐标 = x坐标; + } + + public String getY坐标() { + return y坐标; + } + + public void setY坐标(String y坐标) { + this.y坐标 = y坐标; + } + + public String get井深() { + return 井深; + } + + public void set井深(String 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public String getJd() { + return jd; + } + + public void setJd(String jd) { + this.jd = jd; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + } + + public static class SpatialReferenceBean { + + private int wkid; + private int latestWkid; + + public int getWkid() { + return wkid; + } + + public void setWkid(int wkid) { + this.wkid = wkid; + } + + public int getLatestWkid() { + return latestWkid; + } + + public void setLatestWkid(int latestWkid) { + this.latestWkid = latestWkid; + } + } + + public static class FieldsBean { + + private String name; + private String type; + private String alias; + private int length; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + } + + public static class FeaturesBean { + + private AttributesBean attributes; + private GeometryBean geometry; + + public AttributesBean getAttributes() { + return attributes; + } + + public void setAttributes(AttributesBean attributes) { + this.attributes = attributes; + } + + public GeometryBean getGeometry() { + return geometry; + } + + public void setGeometry(GeometryBean geometry) { + this.geometry = geometry; + } + + public static class AttributesBean { + /** + * objectid : 3984 + * 编号 : GX_WSD_4107_HLDD150 + * 附属物编码 : 4107 + * 地面高程 : 59.462 + * x坐标 : 3071874.507 + * y坐标 : 408323.999 + * 井深 : 2.72 + * 附属物名称 : 污水井 + * 所属道路 : 活力大道 + * 建设年代 : + * 权属单位 : + * 备注 : + * jd : 116.070072 + * wd : 27.757135 + */ + + private int objectid; + private String 编号; + private int 附属物编码; + private double 地面高程; + private double x坐标; + private double y坐标; + private double 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private double jd; + private double wd; + + public int getObjectid() { + return objectid; + } + + public void setObjectid(int objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public int get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(int 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public double get地面高程() { + return 地面高程; + } + + public void set地面高程(double 地面高程) { + this.地面高程 = 地面高程; + } + + public double getX坐标() { + return x坐标; + } + + public void setX坐标(double x坐标) { + this.x坐标 = x坐标; + } + + public double getY坐标() { + return y坐标; + } + + public void setY坐标(double y坐标) { + this.y坐标 = y坐标; + } + + public double get井深() { + return 井深; + } + + public void set井深(double 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public double getJd() { + return jd; + } + + public void setJd(double jd) { + this.jd = jd; + } + + public double getWd() { + return wd; + } + + public void setWd(double wd) { + this.wd = wd; + } + } + + public static class GeometryBean { + /** + * x : 116.07007205499997 + * y : 27.757134534999977 + */ + + private double x; + private double y; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java index 5f5b8a9..1117853 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java @@ -24,8 +24,8 @@ } @Override - public Subscription sendRetrofitRequest(int offset) { - Observable observable = RetrofitServiceManager.getAlarmListResult(offset); + public Subscription sendRetrofitRequest(int limit,int offset) { + Observable observable = RetrofitServiceManager.getAlarmListResult(limit, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java index fc8b4ce..d9f08dc 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java @@ -3,5 +3,5 @@ import rx.Subscription; public interface IAlarmListModel { - Subscription sendRetrofitRequest(int offset); + Subscription sendRetrofitRequest(int limit,int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java new file mode 100644 index 0000000..1db090e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IWellDetailModel { + Subscription sendRetrofitRequest(String where); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java new file mode 100644 index 0000000..f9e7a3e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class WellDetailModelImpl implements IWellDetailModel { + + private OnGetDetailListener listener; + + public WellDetailModelImpl(OnGetDetailListener listListener) { + this.listener = listListener; + } + + public interface OnGetDetailListener { + void onSuccess(WellDetailBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String where) { + Observable observable = RetrofitServiceManager.getWellDetailResult(where); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(WellDetailBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java index 624715b..1851e54 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java @@ -16,8 +16,8 @@ } @Override - public void onReadyRetrofitRequest(int offset) { - addSubscription(model.sendRetrofitRequest(offset)); + public void onReadyRetrofitRequest(int limit, int offset) { + addSubscription(model.sendRetrofitRequest(limit, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java index 550deec..2408f94 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java @@ -1,7 +1,7 @@ package com.casic.dcms.mvp.presenter; public interface IAlarmListPresenter { - void onReadyRetrofitRequest(int offset); + void onReadyRetrofitRequest(int limit,int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java new file mode 100644 index 0000000..e968509 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IWellDetailPresenter { + void onReadyRetrofitRequest(String where); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java new file mode 100644 index 0000000..1a123f1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.WellDetailModelImpl; +import com.casic.dcms.mvp.view.IWellDetailView; + +public class WellDetailPresenterImpl extends BasePresenter implements IWellDetailPresenter, WellDetailModelImpl.OnGetDetailListener { + + private IWellDetailView view; + private WellDetailModelImpl actionModel; + + public WellDetailPresenterImpl(IWellDetailView detailView) { + this.view = detailView; + actionModel = new WellDetailModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String where) { + addSubscription(actionModel.sendRetrofitRequest(where)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(WellDetailBean resultBean) { + view.obtainWellDetailResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java new file mode 100644 index 0000000..2d01903 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.WellDetailBean; + +public interface IWellDetailView { + void obtainWellDetailResult(WellDetailBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java index b1b7352..a58662d 100644 --- a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java @@ -27,6 +27,7 @@ import com.casic.dcms.mvp.view.ICancelAlarmView; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.CancelAlarmDialog; @@ -105,7 +106,7 @@ showBatchCancelDialog(); break; case 1: - + startActivity(new Intent(context, WarningOnMapActivity.class)); break; case 2: startActivity(new Intent(context, WellListActivity.class)); @@ -123,7 +124,7 @@ @Override public void initData() { alarmListPresenter = new AlarmListPresenterImpl(this); - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); weakReferenceHandler = new WeakReferenceHandler(this); @@ -138,7 +139,7 @@ isRefresh = true; //刷新之后页码重置 pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -146,7 +147,7 @@ public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { isLoadMore = true; pageIndex++; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); } @@ -231,7 +232,7 @@ //取消成功之后自动刷新列表 isRefresh = true; pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } else { ToastHelper.showToast("操作失败,请重试", ToastHelper.ERROR); } @@ -240,6 +241,7 @@ @Override public void obtainAlarmResult(AlarmDataBean resultBean) { if (resultBean.isSuccess()) { + SaveKeyValues.putValue("alarmTotal", resultBean.getData().getTotal()); List dataRows = resultBean.getData().getRows(); if (isRefresh) { dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 diff --git a/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java new file mode 100644 index 0000000..b318fe0 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java @@ -0,0 +1,221 @@ +package com.casic.dcms.ui; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.DialogInterface; +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.AlarmDataBean; +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.presenter.AlarmListPresenterImpl; +import com.casic.dcms.mvp.presenter.WellDetailPresenterImpl; +import com.casic.dcms.mvp.view.IAlarmListView; +import com.casic.dcms.mvp.view.IWellDetailView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.SaveKeyValues; +import com.esri.arcgisruntime.geometry.Point; +import com.esri.arcgisruntime.layers.ArcGISTiledLayer; +import com.esri.arcgisruntime.mapping.ArcGISMap; +import com.esri.arcgisruntime.mapping.Basemap; +import com.esri.arcgisruntime.mapping.BasemapStyle; +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; +import com.esri.arcgisruntime.mapping.view.Graphic; +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; +import com.esri.arcgisruntime.mapping.view.MapView; +import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol; +import com.esri.arcgisruntime.util.ListenableList; +import com.qmuiteam.qmui.util.QMUIDisplayHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.popup.QMUIPopup; +import com.qmuiteam.qmui.widget.popup.QMUIPopups; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class WarningOnMapActivity extends BaseActivity implements View.OnClickListener, IAlarmListView, + IWellDetailView { + + private static final String TAG = "WarningOnMapActivity"; + private Context context = this; + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.mapView) + MapView mapView; + + private AlarmListPresenterImpl alarmListPresenter; + private WellDetailPresenterImpl detailPresenter; + private List geometryList = new ArrayList<>(); + + @Override + public int initLayoutView() { + return R.layout.activity_map_warning; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("报警分布").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mapView.setAttributionTextVisible(false);//去掉左下角属性标识 + mapView.setViewpointScaleAsync(64000); + ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); + //创建底图、并设置底图图层 + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); + Basemap basemap = new Basemap(baseLayer); + arcGISMap.setBasemap(basemap); + mapView.setMap(arcGISMap); + + int alarmTotal = (int) SaveKeyValues.getValue("alarmTotal", Constant.PAGE_LIMIT); + alarmListPresenter = new AlarmListPresenterImpl(this); + alarmListPresenter.onReadyRetrofitRequest(alarmTotal, 1); + detailPresenter = new WellDetailPresenterImpl(this); + } + + @SuppressLint("ClickableViewAccessibility") + @Override + public void initEvent() { + mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { + @Override + public boolean onSingleTapConfirmed(MotionEvent e) { + android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); + Point clickPoint = mapView.screenToLocation(screenPoint); + if (geometryList.size() > 0) { + List tempList = new ArrayList<>(); + for (WellDetailBean.FeaturesBean featuresBean : geometryList) { + WellDetailBean.FeaturesBean.GeometryBean dataBean = featuresBean.getGeometry(); + if (Math.abs(dataBean.getX() - clickPoint.getX()) <= 10 * Constant.DELTA_LNG_10 && + Math.abs(dataBean.getY() - clickPoint.getY()) <= 10 * Constant.DELTA_LNG_10) { + tempList.add(featuresBean); + } + } + if (tempList.size() > 0) { + QMUIDialog.MenuDialogBuilder menuDialogBuilder = new QMUIDialog.MenuDialogBuilder(context); + menuDialogBuilder.setTitle("请选择您要查看的窨井"); + for (WellDetailBean.FeaturesBean dataBean : tempList) { + menuDialogBuilder.addItem(dataBean.getAttributes().get编号(), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + + View popupView = LayoutInflater.from(context).inflate(R.layout.popu_well, null); + TextView wellCodeView = popupView.findViewById(R.id.wellCodeView); + TextView wellTypeView = popupView.findViewById(R.id.wellTypeView); + TextView wellPositionView = popupView.findViewById(R.id.wellPositionView); + + WellDetailBean.FeaturesBean.AttributesBean attributes = dataBean.getAttributes(); + wellCodeView.setText(attributes.get编号()); + wellTypeView.setText(attributes.get附属物名称()); + wellPositionView.setText(attributes.get所属道路()); + + QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 290)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapView); + } + }); + } + menuDialogBuilder.create().show(); + } + } + return super.onSingleTapConfirmed(e); + } + }); + } + + @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.expandMapView: + mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); + break; + case R.id.minusMapView: + mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); + break; + default: + break; + } + } + + protected void onResume() { + super.onResume(); + mapView.resume(); + } + + @Override + protected void onPause() { + super.onPause(); + mapView.pause(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + mapView.dispose(); + if (alarmListPresenter != null) { + alarmListPresenter.disposeRetrofitRequest(); + } + if (detailPresenter != null) { + detailPresenter.disposeRetrofitRequest(); + } + } + + @Override + public void obtainAlarmResult(AlarmDataBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + for (AlarmDataBean.DataBean.RowsBean rowsBean : dataRows) { + String queryParam = "编号='" + rowsBean.getWellCode() + "'"; + detailPresenter.onReadyRetrofitRequest(queryParam); + } + } + } + + @Override + public void obtainWellDetailResult(WellDetailBean resultBean) { + List features = resultBean.getFeatures(); + if (features.size() > 0) { + WellDetailBean.FeaturesBean featuresBean = features.get(0); + //将获取到的井数据缓存起来 + geometryList.add(featuresBean); + WellDetailBean.FeaturesBean.GeometryBean geometryBean = featuresBean.getGeometry(); + //每获取一个点就绘制出 + addMarker(new Point(geometryBean.getX(), geometryBean.getY())); + } + } + + private void addMarker(Point point) { + SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 10); + Graphic graphic = new Graphic(point, simpleMarkerSymbol); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index b3fbd7b..e8cd7d5 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -87,9 +87,11 @@ public static final String BASE_MAP_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 public static final String BASE_MAP_NO_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 public static final String COMPONENT_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 + public static final String WELL_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer";//崇仁窨井图层 //正式环境 // public static final String BASE_MAP_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 // public static final String BASE_MAP_NO_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 // public static final String COMPONENT_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 +// public static final String WELL_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer";//崇仁窨井图层 } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 16a9d4c..f70d101 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -35,6 +35,7 @@ import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; import com.casic.dcms.bean.UserBean; +import com.casic.dcms.bean.WellDetailBean; import com.casic.dcms.bean.WellListBean; import java.util.List; @@ -768,4 +769,17 @@ @POST("/smartwell/well/batchBfcf") Observable optionWellStatus(@Header("token") String token, @Field("bfzt") String bfzt); + + /** + * 井详情 + *

+ * http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer/0/query?f=json&inSr=4326&outSR=4326&outFields=*&returnGeometry=true&where=编号='GX_WSD_4107_HLDD154' + */ + @GET("/arcgis/rest/services/fsw/MapServer/0/query") + Observable obtainWellDetail(@Query("f") String f, + @Query("inSr") String inSr, + @Query("outSR") String outSR, + @Query("outFields") String outFields, + @Query("returnGeometry") boolean returnGeometry, + @Query("where") String where); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 7c3705f..32a93a1 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -37,6 +37,7 @@ import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; import com.casic.dcms.bean.UserBean; +import com.casic.dcms.bean.WellDetailBean; import com.casic.dcms.bean.WellListBean; import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.Constant; @@ -724,10 +725,10 @@ /** * 报警列表 */ - public static Observable getAlarmListResult(int offset) { + public static Observable getAlarmListResult(int limit, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainAlarmList(AuthenticationHelper.getToken(), "1", Constant.PAGE_LIMIT, offset); + return service.obtainAlarmList(AuthenticationHelper.getToken(), "1", limit, offset); } /** @@ -754,7 +755,8 @@ public static Observable getWellListResult(int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainWellList(AuthenticationHelper.getToken(), "wellCode", "asc", Constant.PAGE_LIMIT, offset); + return service.obtainWellList(AuthenticationHelper.getToken(), "wellCode", "asc", + Constant.PAGE_LIMIT, offset); } /** @@ -776,14 +778,17 @@ } /** - * 测试别的端口数据,永远放最后面 + * 报警窨井详情 */ - private static Retrofit createTestRetrofit() { - return new Retrofit.Builder() - .baseUrl("http://111.198.10.15:11643") + public static Observable getWellDetailResult(String where) { + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://111.198.10.15:13002") .addConverterFactory(GsonConverterFactory.create())//Gson转换器 .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .client(createOKHttpClient())//log拦截器 .build(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWellDetail("json", "4326", "4326", "*", + true, where); } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index febcd02..f845c47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -95,6 +95,7 @@ + fields; + private List features; + + public String getDisplayFieldName() { + return displayFieldName; + } + + public void setDisplayFieldName(String displayFieldName) { + this.displayFieldName = displayFieldName; + } + + public FieldAliasesBean getFieldAliases() { + return fieldAliases; + } + + public void setFieldAliases(FieldAliasesBean fieldAliases) { + this.fieldAliases = fieldAliases; + } + + public String getGeometryType() { + return geometryType; + } + + public void setGeometryType(String geometryType) { + this.geometryType = geometryType; + } + + public SpatialReferenceBean getSpatialReference() { + return spatialReference; + } + + public void setSpatialReference(SpatialReferenceBean spatialReference) { + this.spatialReference = spatialReference; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public List getFeatures() { + return features; + } + + public void setFeatures(List features) { + this.features = features; + } + + public static class FieldAliasesBean { + + private String objectid; + private String 编号; + private String 附属物编码; + private String 地面高程; + private String x坐标; + private String y坐标; + private String 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private String jd; + private String wd; + + public String getObjectid() { + return objectid; + } + + public void setObjectid(String objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public String get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(String 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public String get地面高程() { + return 地面高程; + } + + public void set地面高程(String 地面高程) { + this.地面高程 = 地面高程; + } + + public String getX坐标() { + return x坐标; + } + + public void setX坐标(String x坐标) { + this.x坐标 = x坐标; + } + + public String getY坐标() { + return y坐标; + } + + public void setY坐标(String y坐标) { + this.y坐标 = y坐标; + } + + public String get井深() { + return 井深; + } + + public void set井深(String 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public String getJd() { + return jd; + } + + public void setJd(String jd) { + this.jd = jd; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + } + + public static class SpatialReferenceBean { + + private int wkid; + private int latestWkid; + + public int getWkid() { + return wkid; + } + + public void setWkid(int wkid) { + this.wkid = wkid; + } + + public int getLatestWkid() { + return latestWkid; + } + + public void setLatestWkid(int latestWkid) { + this.latestWkid = latestWkid; + } + } + + public static class FieldsBean { + + private String name; + private String type; + private String alias; + private int length; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + } + + public static class FeaturesBean { + + private AttributesBean attributes; + private GeometryBean geometry; + + public AttributesBean getAttributes() { + return attributes; + } + + public void setAttributes(AttributesBean attributes) { + this.attributes = attributes; + } + + public GeometryBean getGeometry() { + return geometry; + } + + public void setGeometry(GeometryBean geometry) { + this.geometry = geometry; + } + + public static class AttributesBean { + /** + * objectid : 3984 + * 编号 : GX_WSD_4107_HLDD150 + * 附属物编码 : 4107 + * 地面高程 : 59.462 + * x坐标 : 3071874.507 + * y坐标 : 408323.999 + * 井深 : 2.72 + * 附属物名称 : 污水井 + * 所属道路 : 活力大道 + * 建设年代 : + * 权属单位 : + * 备注 : + * jd : 116.070072 + * wd : 27.757135 + */ + + private int objectid; + private String 编号; + private int 附属物编码; + private double 地面高程; + private double x坐标; + private double y坐标; + private double 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private double jd; + private double wd; + + public int getObjectid() { + return objectid; + } + + public void setObjectid(int objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public int get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(int 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public double get地面高程() { + return 地面高程; + } + + public void set地面高程(double 地面高程) { + this.地面高程 = 地面高程; + } + + public double getX坐标() { + return x坐标; + } + + public void setX坐标(double x坐标) { + this.x坐标 = x坐标; + } + + public double getY坐标() { + return y坐标; + } + + public void setY坐标(double y坐标) { + this.y坐标 = y坐标; + } + + public double get井深() { + return 井深; + } + + public void set井深(double 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public double getJd() { + return jd; + } + + public void setJd(double jd) { + this.jd = jd; + } + + public double getWd() { + return wd; + } + + public void setWd(double wd) { + this.wd = wd; + } + } + + public static class GeometryBean { + /** + * x : 116.07007205499997 + * y : 27.757134534999977 + */ + + private double x; + private double y; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java index 5f5b8a9..1117853 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java @@ -24,8 +24,8 @@ } @Override - public Subscription sendRetrofitRequest(int offset) { - Observable observable = RetrofitServiceManager.getAlarmListResult(offset); + public Subscription sendRetrofitRequest(int limit,int offset) { + Observable observable = RetrofitServiceManager.getAlarmListResult(limit, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java index fc8b4ce..d9f08dc 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java @@ -3,5 +3,5 @@ import rx.Subscription; public interface IAlarmListModel { - Subscription sendRetrofitRequest(int offset); + Subscription sendRetrofitRequest(int limit,int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java new file mode 100644 index 0000000..1db090e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IWellDetailModel { + Subscription sendRetrofitRequest(String where); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java new file mode 100644 index 0000000..f9e7a3e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class WellDetailModelImpl implements IWellDetailModel { + + private OnGetDetailListener listener; + + public WellDetailModelImpl(OnGetDetailListener listListener) { + this.listener = listListener; + } + + public interface OnGetDetailListener { + void onSuccess(WellDetailBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String where) { + Observable observable = RetrofitServiceManager.getWellDetailResult(where); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(WellDetailBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java index 624715b..1851e54 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java @@ -16,8 +16,8 @@ } @Override - public void onReadyRetrofitRequest(int offset) { - addSubscription(model.sendRetrofitRequest(offset)); + public void onReadyRetrofitRequest(int limit, int offset) { + addSubscription(model.sendRetrofitRequest(limit, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java index 550deec..2408f94 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java @@ -1,7 +1,7 @@ package com.casic.dcms.mvp.presenter; public interface IAlarmListPresenter { - void onReadyRetrofitRequest(int offset); + void onReadyRetrofitRequest(int limit,int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java new file mode 100644 index 0000000..e968509 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IWellDetailPresenter { + void onReadyRetrofitRequest(String where); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java new file mode 100644 index 0000000..1a123f1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.WellDetailModelImpl; +import com.casic.dcms.mvp.view.IWellDetailView; + +public class WellDetailPresenterImpl extends BasePresenter implements IWellDetailPresenter, WellDetailModelImpl.OnGetDetailListener { + + private IWellDetailView view; + private WellDetailModelImpl actionModel; + + public WellDetailPresenterImpl(IWellDetailView detailView) { + this.view = detailView; + actionModel = new WellDetailModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String where) { + addSubscription(actionModel.sendRetrofitRequest(where)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(WellDetailBean resultBean) { + view.obtainWellDetailResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java new file mode 100644 index 0000000..2d01903 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.WellDetailBean; + +public interface IWellDetailView { + void obtainWellDetailResult(WellDetailBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java index b1b7352..a58662d 100644 --- a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java @@ -27,6 +27,7 @@ import com.casic.dcms.mvp.view.ICancelAlarmView; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.CancelAlarmDialog; @@ -105,7 +106,7 @@ showBatchCancelDialog(); break; case 1: - + startActivity(new Intent(context, WarningOnMapActivity.class)); break; case 2: startActivity(new Intent(context, WellListActivity.class)); @@ -123,7 +124,7 @@ @Override public void initData() { alarmListPresenter = new AlarmListPresenterImpl(this); - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); weakReferenceHandler = new WeakReferenceHandler(this); @@ -138,7 +139,7 @@ isRefresh = true; //刷新之后页码重置 pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -146,7 +147,7 @@ public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { isLoadMore = true; pageIndex++; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); } @@ -231,7 +232,7 @@ //取消成功之后自动刷新列表 isRefresh = true; pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } else { ToastHelper.showToast("操作失败,请重试", ToastHelper.ERROR); } @@ -240,6 +241,7 @@ @Override public void obtainAlarmResult(AlarmDataBean resultBean) { if (resultBean.isSuccess()) { + SaveKeyValues.putValue("alarmTotal", resultBean.getData().getTotal()); List dataRows = resultBean.getData().getRows(); if (isRefresh) { dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 diff --git a/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java new file mode 100644 index 0000000..b318fe0 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java @@ -0,0 +1,221 @@ +package com.casic.dcms.ui; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.DialogInterface; +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.AlarmDataBean; +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.presenter.AlarmListPresenterImpl; +import com.casic.dcms.mvp.presenter.WellDetailPresenterImpl; +import com.casic.dcms.mvp.view.IAlarmListView; +import com.casic.dcms.mvp.view.IWellDetailView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.SaveKeyValues; +import com.esri.arcgisruntime.geometry.Point; +import com.esri.arcgisruntime.layers.ArcGISTiledLayer; +import com.esri.arcgisruntime.mapping.ArcGISMap; +import com.esri.arcgisruntime.mapping.Basemap; +import com.esri.arcgisruntime.mapping.BasemapStyle; +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; +import com.esri.arcgisruntime.mapping.view.Graphic; +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; +import com.esri.arcgisruntime.mapping.view.MapView; +import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol; +import com.esri.arcgisruntime.util.ListenableList; +import com.qmuiteam.qmui.util.QMUIDisplayHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.popup.QMUIPopup; +import com.qmuiteam.qmui.widget.popup.QMUIPopups; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class WarningOnMapActivity extends BaseActivity implements View.OnClickListener, IAlarmListView, + IWellDetailView { + + private static final String TAG = "WarningOnMapActivity"; + private Context context = this; + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.mapView) + MapView mapView; + + private AlarmListPresenterImpl alarmListPresenter; + private WellDetailPresenterImpl detailPresenter; + private List geometryList = new ArrayList<>(); + + @Override + public int initLayoutView() { + return R.layout.activity_map_warning; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("报警分布").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mapView.setAttributionTextVisible(false);//去掉左下角属性标识 + mapView.setViewpointScaleAsync(64000); + ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); + //创建底图、并设置底图图层 + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); + Basemap basemap = new Basemap(baseLayer); + arcGISMap.setBasemap(basemap); + mapView.setMap(arcGISMap); + + int alarmTotal = (int) SaveKeyValues.getValue("alarmTotal", Constant.PAGE_LIMIT); + alarmListPresenter = new AlarmListPresenterImpl(this); + alarmListPresenter.onReadyRetrofitRequest(alarmTotal, 1); + detailPresenter = new WellDetailPresenterImpl(this); + } + + @SuppressLint("ClickableViewAccessibility") + @Override + public void initEvent() { + mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { + @Override + public boolean onSingleTapConfirmed(MotionEvent e) { + android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); + Point clickPoint = mapView.screenToLocation(screenPoint); + if (geometryList.size() > 0) { + List tempList = new ArrayList<>(); + for (WellDetailBean.FeaturesBean featuresBean : geometryList) { + WellDetailBean.FeaturesBean.GeometryBean dataBean = featuresBean.getGeometry(); + if (Math.abs(dataBean.getX() - clickPoint.getX()) <= 10 * Constant.DELTA_LNG_10 && + Math.abs(dataBean.getY() - clickPoint.getY()) <= 10 * Constant.DELTA_LNG_10) { + tempList.add(featuresBean); + } + } + if (tempList.size() > 0) { + QMUIDialog.MenuDialogBuilder menuDialogBuilder = new QMUIDialog.MenuDialogBuilder(context); + menuDialogBuilder.setTitle("请选择您要查看的窨井"); + for (WellDetailBean.FeaturesBean dataBean : tempList) { + menuDialogBuilder.addItem(dataBean.getAttributes().get编号(), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + + View popupView = LayoutInflater.from(context).inflate(R.layout.popu_well, null); + TextView wellCodeView = popupView.findViewById(R.id.wellCodeView); + TextView wellTypeView = popupView.findViewById(R.id.wellTypeView); + TextView wellPositionView = popupView.findViewById(R.id.wellPositionView); + + WellDetailBean.FeaturesBean.AttributesBean attributes = dataBean.getAttributes(); + wellCodeView.setText(attributes.get编号()); + wellTypeView.setText(attributes.get附属物名称()); + wellPositionView.setText(attributes.get所属道路()); + + QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 290)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapView); + } + }); + } + menuDialogBuilder.create().show(); + } + } + return super.onSingleTapConfirmed(e); + } + }); + } + + @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.expandMapView: + mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); + break; + case R.id.minusMapView: + mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); + break; + default: + break; + } + } + + protected void onResume() { + super.onResume(); + mapView.resume(); + } + + @Override + protected void onPause() { + super.onPause(); + mapView.pause(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + mapView.dispose(); + if (alarmListPresenter != null) { + alarmListPresenter.disposeRetrofitRequest(); + } + if (detailPresenter != null) { + detailPresenter.disposeRetrofitRequest(); + } + } + + @Override + public void obtainAlarmResult(AlarmDataBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + for (AlarmDataBean.DataBean.RowsBean rowsBean : dataRows) { + String queryParam = "编号='" + rowsBean.getWellCode() + "'"; + detailPresenter.onReadyRetrofitRequest(queryParam); + } + } + } + + @Override + public void obtainWellDetailResult(WellDetailBean resultBean) { + List features = resultBean.getFeatures(); + if (features.size() > 0) { + WellDetailBean.FeaturesBean featuresBean = features.get(0); + //将获取到的井数据缓存起来 + geometryList.add(featuresBean); + WellDetailBean.FeaturesBean.GeometryBean geometryBean = featuresBean.getGeometry(); + //每获取一个点就绘制出 + addMarker(new Point(geometryBean.getX(), geometryBean.getY())); + } + } + + private void addMarker(Point point) { + SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 10); + Graphic graphic = new Graphic(point, simpleMarkerSymbol); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index b3fbd7b..e8cd7d5 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -87,9 +87,11 @@ public static final String BASE_MAP_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 public static final String BASE_MAP_NO_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 public static final String COMPONENT_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 + public static final String WELL_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer";//崇仁窨井图层 //正式环境 // public static final String BASE_MAP_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 // public static final String BASE_MAP_NO_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 // public static final String COMPONENT_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 +// public static final String WELL_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer";//崇仁窨井图层 } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 16a9d4c..f70d101 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -35,6 +35,7 @@ import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; import com.casic.dcms.bean.UserBean; +import com.casic.dcms.bean.WellDetailBean; import com.casic.dcms.bean.WellListBean; import java.util.List; @@ -768,4 +769,17 @@ @POST("/smartwell/well/batchBfcf") Observable optionWellStatus(@Header("token") String token, @Field("bfzt") String bfzt); + + /** + * 井详情 + *

+ * http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer/0/query?f=json&inSr=4326&outSR=4326&outFields=*&returnGeometry=true&where=编号='GX_WSD_4107_HLDD154' + */ + @GET("/arcgis/rest/services/fsw/MapServer/0/query") + Observable obtainWellDetail(@Query("f") String f, + @Query("inSr") String inSr, + @Query("outSR") String outSR, + @Query("outFields") String outFields, + @Query("returnGeometry") boolean returnGeometry, + @Query("where") String where); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 7c3705f..32a93a1 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -37,6 +37,7 @@ import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; import com.casic.dcms.bean.UserBean; +import com.casic.dcms.bean.WellDetailBean; import com.casic.dcms.bean.WellListBean; import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.Constant; @@ -724,10 +725,10 @@ /** * 报警列表 */ - public static Observable getAlarmListResult(int offset) { + public static Observable getAlarmListResult(int limit, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainAlarmList(AuthenticationHelper.getToken(), "1", Constant.PAGE_LIMIT, offset); + return service.obtainAlarmList(AuthenticationHelper.getToken(), "1", limit, offset); } /** @@ -754,7 +755,8 @@ public static Observable getWellListResult(int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainWellList(AuthenticationHelper.getToken(), "wellCode", "asc", Constant.PAGE_LIMIT, offset); + return service.obtainWellList(AuthenticationHelper.getToken(), "wellCode", "asc", + Constant.PAGE_LIMIT, offset); } /** @@ -776,14 +778,17 @@ } /** - * 测试别的端口数据,永远放最后面 + * 报警窨井详情 */ - private static Retrofit createTestRetrofit() { - return new Retrofit.Builder() - .baseUrl("http://111.198.10.15:11643") + public static Observable getWellDetailResult(String where) { + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://111.198.10.15:13002") .addConverterFactory(GsonConverterFactory.create())//Gson转换器 .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .client(createOKHttpClient())//log拦截器 .build(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWellDetail("json", "4326", "4326", "*", + true, where); } } diff --git a/app/src/main/res/drawable/dash_white_line.xml b/app/src/main/res/drawable/dash_white_line.xml new file mode 100644 index 0000000..d9f7330 --- /dev/null +++ b/app/src/main/res/drawable/dash_white_line.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index febcd02..f845c47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -95,6 +95,7 @@ + fields; + private List features; + + public String getDisplayFieldName() { + return displayFieldName; + } + + public void setDisplayFieldName(String displayFieldName) { + this.displayFieldName = displayFieldName; + } + + public FieldAliasesBean getFieldAliases() { + return fieldAliases; + } + + public void setFieldAliases(FieldAliasesBean fieldAliases) { + this.fieldAliases = fieldAliases; + } + + public String getGeometryType() { + return geometryType; + } + + public void setGeometryType(String geometryType) { + this.geometryType = geometryType; + } + + public SpatialReferenceBean getSpatialReference() { + return spatialReference; + } + + public void setSpatialReference(SpatialReferenceBean spatialReference) { + this.spatialReference = spatialReference; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public List getFeatures() { + return features; + } + + public void setFeatures(List features) { + this.features = features; + } + + public static class FieldAliasesBean { + + private String objectid; + private String 编号; + private String 附属物编码; + private String 地面高程; + private String x坐标; + private String y坐标; + private String 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private String jd; + private String wd; + + public String getObjectid() { + return objectid; + } + + public void setObjectid(String objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public String get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(String 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public String get地面高程() { + return 地面高程; + } + + public void set地面高程(String 地面高程) { + this.地面高程 = 地面高程; + } + + public String getX坐标() { + return x坐标; + } + + public void setX坐标(String x坐标) { + this.x坐标 = x坐标; + } + + public String getY坐标() { + return y坐标; + } + + public void setY坐标(String y坐标) { + this.y坐标 = y坐标; + } + + public String get井深() { + return 井深; + } + + public void set井深(String 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public String getJd() { + return jd; + } + + public void setJd(String jd) { + this.jd = jd; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + } + + public static class SpatialReferenceBean { + + private int wkid; + private int latestWkid; + + public int getWkid() { + return wkid; + } + + public void setWkid(int wkid) { + this.wkid = wkid; + } + + public int getLatestWkid() { + return latestWkid; + } + + public void setLatestWkid(int latestWkid) { + this.latestWkid = latestWkid; + } + } + + public static class FieldsBean { + + private String name; + private String type; + private String alias; + private int length; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + } + + public static class FeaturesBean { + + private AttributesBean attributes; + private GeometryBean geometry; + + public AttributesBean getAttributes() { + return attributes; + } + + public void setAttributes(AttributesBean attributes) { + this.attributes = attributes; + } + + public GeometryBean getGeometry() { + return geometry; + } + + public void setGeometry(GeometryBean geometry) { + this.geometry = geometry; + } + + public static class AttributesBean { + /** + * objectid : 3984 + * 编号 : GX_WSD_4107_HLDD150 + * 附属物编码 : 4107 + * 地面高程 : 59.462 + * x坐标 : 3071874.507 + * y坐标 : 408323.999 + * 井深 : 2.72 + * 附属物名称 : 污水井 + * 所属道路 : 活力大道 + * 建设年代 : + * 权属单位 : + * 备注 : + * jd : 116.070072 + * wd : 27.757135 + */ + + private int objectid; + private String 编号; + private int 附属物编码; + private double 地面高程; + private double x坐标; + private double y坐标; + private double 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private double jd; + private double wd; + + public int getObjectid() { + return objectid; + } + + public void setObjectid(int objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public int get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(int 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public double get地面高程() { + return 地面高程; + } + + public void set地面高程(double 地面高程) { + this.地面高程 = 地面高程; + } + + public double getX坐标() { + return x坐标; + } + + public void setX坐标(double x坐标) { + this.x坐标 = x坐标; + } + + public double getY坐标() { + return y坐标; + } + + public void setY坐标(double y坐标) { + this.y坐标 = y坐标; + } + + public double get井深() { + return 井深; + } + + public void set井深(double 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public double getJd() { + return jd; + } + + public void setJd(double jd) { + this.jd = jd; + } + + public double getWd() { + return wd; + } + + public void setWd(double wd) { + this.wd = wd; + } + } + + public static class GeometryBean { + /** + * x : 116.07007205499997 + * y : 27.757134534999977 + */ + + private double x; + private double y; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java index 5f5b8a9..1117853 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java @@ -24,8 +24,8 @@ } @Override - public Subscription sendRetrofitRequest(int offset) { - Observable observable = RetrofitServiceManager.getAlarmListResult(offset); + public Subscription sendRetrofitRequest(int limit,int offset) { + Observable observable = RetrofitServiceManager.getAlarmListResult(limit, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java index fc8b4ce..d9f08dc 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java @@ -3,5 +3,5 @@ import rx.Subscription; public interface IAlarmListModel { - Subscription sendRetrofitRequest(int offset); + Subscription sendRetrofitRequest(int limit,int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java new file mode 100644 index 0000000..1db090e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IWellDetailModel { + Subscription sendRetrofitRequest(String where); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java new file mode 100644 index 0000000..f9e7a3e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class WellDetailModelImpl implements IWellDetailModel { + + private OnGetDetailListener listener; + + public WellDetailModelImpl(OnGetDetailListener listListener) { + this.listener = listListener; + } + + public interface OnGetDetailListener { + void onSuccess(WellDetailBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String where) { + Observable observable = RetrofitServiceManager.getWellDetailResult(where); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(WellDetailBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java index 624715b..1851e54 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java @@ -16,8 +16,8 @@ } @Override - public void onReadyRetrofitRequest(int offset) { - addSubscription(model.sendRetrofitRequest(offset)); + public void onReadyRetrofitRequest(int limit, int offset) { + addSubscription(model.sendRetrofitRequest(limit, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java index 550deec..2408f94 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java @@ -1,7 +1,7 @@ package com.casic.dcms.mvp.presenter; public interface IAlarmListPresenter { - void onReadyRetrofitRequest(int offset); + void onReadyRetrofitRequest(int limit,int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java new file mode 100644 index 0000000..e968509 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IWellDetailPresenter { + void onReadyRetrofitRequest(String where); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java new file mode 100644 index 0000000..1a123f1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.WellDetailModelImpl; +import com.casic.dcms.mvp.view.IWellDetailView; + +public class WellDetailPresenterImpl extends BasePresenter implements IWellDetailPresenter, WellDetailModelImpl.OnGetDetailListener { + + private IWellDetailView view; + private WellDetailModelImpl actionModel; + + public WellDetailPresenterImpl(IWellDetailView detailView) { + this.view = detailView; + actionModel = new WellDetailModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String where) { + addSubscription(actionModel.sendRetrofitRequest(where)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(WellDetailBean resultBean) { + view.obtainWellDetailResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java new file mode 100644 index 0000000..2d01903 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.WellDetailBean; + +public interface IWellDetailView { + void obtainWellDetailResult(WellDetailBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java index b1b7352..a58662d 100644 --- a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java @@ -27,6 +27,7 @@ import com.casic.dcms.mvp.view.ICancelAlarmView; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.CancelAlarmDialog; @@ -105,7 +106,7 @@ showBatchCancelDialog(); break; case 1: - + startActivity(new Intent(context, WarningOnMapActivity.class)); break; case 2: startActivity(new Intent(context, WellListActivity.class)); @@ -123,7 +124,7 @@ @Override public void initData() { alarmListPresenter = new AlarmListPresenterImpl(this); - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); weakReferenceHandler = new WeakReferenceHandler(this); @@ -138,7 +139,7 @@ isRefresh = true; //刷新之后页码重置 pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -146,7 +147,7 @@ public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { isLoadMore = true; pageIndex++; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); } @@ -231,7 +232,7 @@ //取消成功之后自动刷新列表 isRefresh = true; pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } else { ToastHelper.showToast("操作失败,请重试", ToastHelper.ERROR); } @@ -240,6 +241,7 @@ @Override public void obtainAlarmResult(AlarmDataBean resultBean) { if (resultBean.isSuccess()) { + SaveKeyValues.putValue("alarmTotal", resultBean.getData().getTotal()); List dataRows = resultBean.getData().getRows(); if (isRefresh) { dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 diff --git a/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java new file mode 100644 index 0000000..b318fe0 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java @@ -0,0 +1,221 @@ +package com.casic.dcms.ui; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.DialogInterface; +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.AlarmDataBean; +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.presenter.AlarmListPresenterImpl; +import com.casic.dcms.mvp.presenter.WellDetailPresenterImpl; +import com.casic.dcms.mvp.view.IAlarmListView; +import com.casic.dcms.mvp.view.IWellDetailView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.SaveKeyValues; +import com.esri.arcgisruntime.geometry.Point; +import com.esri.arcgisruntime.layers.ArcGISTiledLayer; +import com.esri.arcgisruntime.mapping.ArcGISMap; +import com.esri.arcgisruntime.mapping.Basemap; +import com.esri.arcgisruntime.mapping.BasemapStyle; +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; +import com.esri.arcgisruntime.mapping.view.Graphic; +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; +import com.esri.arcgisruntime.mapping.view.MapView; +import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol; +import com.esri.arcgisruntime.util.ListenableList; +import com.qmuiteam.qmui.util.QMUIDisplayHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.popup.QMUIPopup; +import com.qmuiteam.qmui.widget.popup.QMUIPopups; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class WarningOnMapActivity extends BaseActivity implements View.OnClickListener, IAlarmListView, + IWellDetailView { + + private static final String TAG = "WarningOnMapActivity"; + private Context context = this; + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.mapView) + MapView mapView; + + private AlarmListPresenterImpl alarmListPresenter; + private WellDetailPresenterImpl detailPresenter; + private List geometryList = new ArrayList<>(); + + @Override + public int initLayoutView() { + return R.layout.activity_map_warning; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("报警分布").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mapView.setAttributionTextVisible(false);//去掉左下角属性标识 + mapView.setViewpointScaleAsync(64000); + ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); + //创建底图、并设置底图图层 + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); + Basemap basemap = new Basemap(baseLayer); + arcGISMap.setBasemap(basemap); + mapView.setMap(arcGISMap); + + int alarmTotal = (int) SaveKeyValues.getValue("alarmTotal", Constant.PAGE_LIMIT); + alarmListPresenter = new AlarmListPresenterImpl(this); + alarmListPresenter.onReadyRetrofitRequest(alarmTotal, 1); + detailPresenter = new WellDetailPresenterImpl(this); + } + + @SuppressLint("ClickableViewAccessibility") + @Override + public void initEvent() { + mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { + @Override + public boolean onSingleTapConfirmed(MotionEvent e) { + android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); + Point clickPoint = mapView.screenToLocation(screenPoint); + if (geometryList.size() > 0) { + List tempList = new ArrayList<>(); + for (WellDetailBean.FeaturesBean featuresBean : geometryList) { + WellDetailBean.FeaturesBean.GeometryBean dataBean = featuresBean.getGeometry(); + if (Math.abs(dataBean.getX() - clickPoint.getX()) <= 10 * Constant.DELTA_LNG_10 && + Math.abs(dataBean.getY() - clickPoint.getY()) <= 10 * Constant.DELTA_LNG_10) { + tempList.add(featuresBean); + } + } + if (tempList.size() > 0) { + QMUIDialog.MenuDialogBuilder menuDialogBuilder = new QMUIDialog.MenuDialogBuilder(context); + menuDialogBuilder.setTitle("请选择您要查看的窨井"); + for (WellDetailBean.FeaturesBean dataBean : tempList) { + menuDialogBuilder.addItem(dataBean.getAttributes().get编号(), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + + View popupView = LayoutInflater.from(context).inflate(R.layout.popu_well, null); + TextView wellCodeView = popupView.findViewById(R.id.wellCodeView); + TextView wellTypeView = popupView.findViewById(R.id.wellTypeView); + TextView wellPositionView = popupView.findViewById(R.id.wellPositionView); + + WellDetailBean.FeaturesBean.AttributesBean attributes = dataBean.getAttributes(); + wellCodeView.setText(attributes.get编号()); + wellTypeView.setText(attributes.get附属物名称()); + wellPositionView.setText(attributes.get所属道路()); + + QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 290)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapView); + } + }); + } + menuDialogBuilder.create().show(); + } + } + return super.onSingleTapConfirmed(e); + } + }); + } + + @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.expandMapView: + mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); + break; + case R.id.minusMapView: + mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); + break; + default: + break; + } + } + + protected void onResume() { + super.onResume(); + mapView.resume(); + } + + @Override + protected void onPause() { + super.onPause(); + mapView.pause(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + mapView.dispose(); + if (alarmListPresenter != null) { + alarmListPresenter.disposeRetrofitRequest(); + } + if (detailPresenter != null) { + detailPresenter.disposeRetrofitRequest(); + } + } + + @Override + public void obtainAlarmResult(AlarmDataBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + for (AlarmDataBean.DataBean.RowsBean rowsBean : dataRows) { + String queryParam = "编号='" + rowsBean.getWellCode() + "'"; + detailPresenter.onReadyRetrofitRequest(queryParam); + } + } + } + + @Override + public void obtainWellDetailResult(WellDetailBean resultBean) { + List features = resultBean.getFeatures(); + if (features.size() > 0) { + WellDetailBean.FeaturesBean featuresBean = features.get(0); + //将获取到的井数据缓存起来 + geometryList.add(featuresBean); + WellDetailBean.FeaturesBean.GeometryBean geometryBean = featuresBean.getGeometry(); + //每获取一个点就绘制出 + addMarker(new Point(geometryBean.getX(), geometryBean.getY())); + } + } + + private void addMarker(Point point) { + SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 10); + Graphic graphic = new Graphic(point, simpleMarkerSymbol); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index b3fbd7b..e8cd7d5 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -87,9 +87,11 @@ public static final String BASE_MAP_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 public static final String BASE_MAP_NO_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 public static final String COMPONENT_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 + public static final String WELL_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer";//崇仁窨井图层 //正式环境 // public static final String BASE_MAP_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 // public static final String BASE_MAP_NO_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 // public static final String COMPONENT_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 +// public static final String WELL_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer";//崇仁窨井图层 } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 16a9d4c..f70d101 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -35,6 +35,7 @@ import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; import com.casic.dcms.bean.UserBean; +import com.casic.dcms.bean.WellDetailBean; import com.casic.dcms.bean.WellListBean; import java.util.List; @@ -768,4 +769,17 @@ @POST("/smartwell/well/batchBfcf") Observable optionWellStatus(@Header("token") String token, @Field("bfzt") String bfzt); + + /** + * 井详情 + *

+ * http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer/0/query?f=json&inSr=4326&outSR=4326&outFields=*&returnGeometry=true&where=编号='GX_WSD_4107_HLDD154' + */ + @GET("/arcgis/rest/services/fsw/MapServer/0/query") + Observable obtainWellDetail(@Query("f") String f, + @Query("inSr") String inSr, + @Query("outSR") String outSR, + @Query("outFields") String outFields, + @Query("returnGeometry") boolean returnGeometry, + @Query("where") String where); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 7c3705f..32a93a1 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -37,6 +37,7 @@ import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; import com.casic.dcms.bean.UserBean; +import com.casic.dcms.bean.WellDetailBean; import com.casic.dcms.bean.WellListBean; import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.Constant; @@ -724,10 +725,10 @@ /** * 报警列表 */ - public static Observable getAlarmListResult(int offset) { + public static Observable getAlarmListResult(int limit, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainAlarmList(AuthenticationHelper.getToken(), "1", Constant.PAGE_LIMIT, offset); + return service.obtainAlarmList(AuthenticationHelper.getToken(), "1", limit, offset); } /** @@ -754,7 +755,8 @@ public static Observable getWellListResult(int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainWellList(AuthenticationHelper.getToken(), "wellCode", "asc", Constant.PAGE_LIMIT, offset); + return service.obtainWellList(AuthenticationHelper.getToken(), "wellCode", "asc", + Constant.PAGE_LIMIT, offset); } /** @@ -776,14 +778,17 @@ } /** - * 测试别的端口数据,永远放最后面 + * 报警窨井详情 */ - private static Retrofit createTestRetrofit() { - return new Retrofit.Builder() - .baseUrl("http://111.198.10.15:11643") + public static Observable getWellDetailResult(String where) { + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://111.198.10.15:13002") .addConverterFactory(GsonConverterFactory.create())//Gson转换器 .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .client(createOKHttpClient())//log拦截器 .build(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWellDetail("json", "4326", "4326", "*", + true, where); } } diff --git a/app/src/main/res/drawable/dash_white_line.xml b/app/src/main/res/drawable/dash_white_line.xml new file mode 100644 index 0000000..d9f7330 --- /dev/null +++ b/app/src/main/res/drawable/dash_white_line.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_dot_off.xml b/app/src/main/res/drawable/ic_dot_off.xml deleted file mode 100644 index 859e9ca..0000000 --- a/app/src/main/res/drawable/ic_dot_off.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index febcd02..f845c47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -95,6 +95,7 @@ + fields; + private List features; + + public String getDisplayFieldName() { + return displayFieldName; + } + + public void setDisplayFieldName(String displayFieldName) { + this.displayFieldName = displayFieldName; + } + + public FieldAliasesBean getFieldAliases() { + return fieldAliases; + } + + public void setFieldAliases(FieldAliasesBean fieldAliases) { + this.fieldAliases = fieldAliases; + } + + public String getGeometryType() { + return geometryType; + } + + public void setGeometryType(String geometryType) { + this.geometryType = geometryType; + } + + public SpatialReferenceBean getSpatialReference() { + return spatialReference; + } + + public void setSpatialReference(SpatialReferenceBean spatialReference) { + this.spatialReference = spatialReference; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public List getFeatures() { + return features; + } + + public void setFeatures(List features) { + this.features = features; + } + + public static class FieldAliasesBean { + + private String objectid; + private String 编号; + private String 附属物编码; + private String 地面高程; + private String x坐标; + private String y坐标; + private String 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private String jd; + private String wd; + + public String getObjectid() { + return objectid; + } + + public void setObjectid(String objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public String get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(String 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public String get地面高程() { + return 地面高程; + } + + public void set地面高程(String 地面高程) { + this.地面高程 = 地面高程; + } + + public String getX坐标() { + return x坐标; + } + + public void setX坐标(String x坐标) { + this.x坐标 = x坐标; + } + + public String getY坐标() { + return y坐标; + } + + public void setY坐标(String y坐标) { + this.y坐标 = y坐标; + } + + public String get井深() { + return 井深; + } + + public void set井深(String 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public String getJd() { + return jd; + } + + public void setJd(String jd) { + this.jd = jd; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + } + + public static class SpatialReferenceBean { + + private int wkid; + private int latestWkid; + + public int getWkid() { + return wkid; + } + + public void setWkid(int wkid) { + this.wkid = wkid; + } + + public int getLatestWkid() { + return latestWkid; + } + + public void setLatestWkid(int latestWkid) { + this.latestWkid = latestWkid; + } + } + + public static class FieldsBean { + + private String name; + private String type; + private String alias; + private int length; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + } + + public static class FeaturesBean { + + private AttributesBean attributes; + private GeometryBean geometry; + + public AttributesBean getAttributes() { + return attributes; + } + + public void setAttributes(AttributesBean attributes) { + this.attributes = attributes; + } + + public GeometryBean getGeometry() { + return geometry; + } + + public void setGeometry(GeometryBean geometry) { + this.geometry = geometry; + } + + public static class AttributesBean { + /** + * objectid : 3984 + * 编号 : GX_WSD_4107_HLDD150 + * 附属物编码 : 4107 + * 地面高程 : 59.462 + * x坐标 : 3071874.507 + * y坐标 : 408323.999 + * 井深 : 2.72 + * 附属物名称 : 污水井 + * 所属道路 : 活力大道 + * 建设年代 : + * 权属单位 : + * 备注 : + * jd : 116.070072 + * wd : 27.757135 + */ + + private int objectid; + private String 编号; + private int 附属物编码; + private double 地面高程; + private double x坐标; + private double y坐标; + private double 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private double jd; + private double wd; + + public int getObjectid() { + return objectid; + } + + public void setObjectid(int objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public int get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(int 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public double get地面高程() { + return 地面高程; + } + + public void set地面高程(double 地面高程) { + this.地面高程 = 地面高程; + } + + public double getX坐标() { + return x坐标; + } + + public void setX坐标(double x坐标) { + this.x坐标 = x坐标; + } + + public double getY坐标() { + return y坐标; + } + + public void setY坐标(double y坐标) { + this.y坐标 = y坐标; + } + + public double get井深() { + return 井深; + } + + public void set井深(double 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public double getJd() { + return jd; + } + + public void setJd(double jd) { + this.jd = jd; + } + + public double getWd() { + return wd; + } + + public void setWd(double wd) { + this.wd = wd; + } + } + + public static class GeometryBean { + /** + * x : 116.07007205499997 + * y : 27.757134534999977 + */ + + private double x; + private double y; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java index 5f5b8a9..1117853 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java @@ -24,8 +24,8 @@ } @Override - public Subscription sendRetrofitRequest(int offset) { - Observable observable = RetrofitServiceManager.getAlarmListResult(offset); + public Subscription sendRetrofitRequest(int limit,int offset) { + Observable observable = RetrofitServiceManager.getAlarmListResult(limit, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java index fc8b4ce..d9f08dc 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java @@ -3,5 +3,5 @@ import rx.Subscription; public interface IAlarmListModel { - Subscription sendRetrofitRequest(int offset); + Subscription sendRetrofitRequest(int limit,int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java new file mode 100644 index 0000000..1db090e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IWellDetailModel { + Subscription sendRetrofitRequest(String where); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java new file mode 100644 index 0000000..f9e7a3e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class WellDetailModelImpl implements IWellDetailModel { + + private OnGetDetailListener listener; + + public WellDetailModelImpl(OnGetDetailListener listListener) { + this.listener = listListener; + } + + public interface OnGetDetailListener { + void onSuccess(WellDetailBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String where) { + Observable observable = RetrofitServiceManager.getWellDetailResult(where); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(WellDetailBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java index 624715b..1851e54 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java @@ -16,8 +16,8 @@ } @Override - public void onReadyRetrofitRequest(int offset) { - addSubscription(model.sendRetrofitRequest(offset)); + public void onReadyRetrofitRequest(int limit, int offset) { + addSubscription(model.sendRetrofitRequest(limit, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java index 550deec..2408f94 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java @@ -1,7 +1,7 @@ package com.casic.dcms.mvp.presenter; public interface IAlarmListPresenter { - void onReadyRetrofitRequest(int offset); + void onReadyRetrofitRequest(int limit,int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java new file mode 100644 index 0000000..e968509 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IWellDetailPresenter { + void onReadyRetrofitRequest(String where); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java new file mode 100644 index 0000000..1a123f1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.WellDetailModelImpl; +import com.casic.dcms.mvp.view.IWellDetailView; + +public class WellDetailPresenterImpl extends BasePresenter implements IWellDetailPresenter, WellDetailModelImpl.OnGetDetailListener { + + private IWellDetailView view; + private WellDetailModelImpl actionModel; + + public WellDetailPresenterImpl(IWellDetailView detailView) { + this.view = detailView; + actionModel = new WellDetailModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String where) { + addSubscription(actionModel.sendRetrofitRequest(where)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(WellDetailBean resultBean) { + view.obtainWellDetailResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java new file mode 100644 index 0000000..2d01903 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.WellDetailBean; + +public interface IWellDetailView { + void obtainWellDetailResult(WellDetailBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java index b1b7352..a58662d 100644 --- a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java @@ -27,6 +27,7 @@ import com.casic.dcms.mvp.view.ICancelAlarmView; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.CancelAlarmDialog; @@ -105,7 +106,7 @@ showBatchCancelDialog(); break; case 1: - + startActivity(new Intent(context, WarningOnMapActivity.class)); break; case 2: startActivity(new Intent(context, WellListActivity.class)); @@ -123,7 +124,7 @@ @Override public void initData() { alarmListPresenter = new AlarmListPresenterImpl(this); - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); weakReferenceHandler = new WeakReferenceHandler(this); @@ -138,7 +139,7 @@ isRefresh = true; //刷新之后页码重置 pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -146,7 +147,7 @@ public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { isLoadMore = true; pageIndex++; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); } @@ -231,7 +232,7 @@ //取消成功之后自动刷新列表 isRefresh = true; pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } else { ToastHelper.showToast("操作失败,请重试", ToastHelper.ERROR); } @@ -240,6 +241,7 @@ @Override public void obtainAlarmResult(AlarmDataBean resultBean) { if (resultBean.isSuccess()) { + SaveKeyValues.putValue("alarmTotal", resultBean.getData().getTotal()); List dataRows = resultBean.getData().getRows(); if (isRefresh) { dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 diff --git a/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java new file mode 100644 index 0000000..b318fe0 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java @@ -0,0 +1,221 @@ +package com.casic.dcms.ui; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.DialogInterface; +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.AlarmDataBean; +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.presenter.AlarmListPresenterImpl; +import com.casic.dcms.mvp.presenter.WellDetailPresenterImpl; +import com.casic.dcms.mvp.view.IAlarmListView; +import com.casic.dcms.mvp.view.IWellDetailView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.SaveKeyValues; +import com.esri.arcgisruntime.geometry.Point; +import com.esri.arcgisruntime.layers.ArcGISTiledLayer; +import com.esri.arcgisruntime.mapping.ArcGISMap; +import com.esri.arcgisruntime.mapping.Basemap; +import com.esri.arcgisruntime.mapping.BasemapStyle; +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; +import com.esri.arcgisruntime.mapping.view.Graphic; +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; +import com.esri.arcgisruntime.mapping.view.MapView; +import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol; +import com.esri.arcgisruntime.util.ListenableList; +import com.qmuiteam.qmui.util.QMUIDisplayHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.popup.QMUIPopup; +import com.qmuiteam.qmui.widget.popup.QMUIPopups; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class WarningOnMapActivity extends BaseActivity implements View.OnClickListener, IAlarmListView, + IWellDetailView { + + private static final String TAG = "WarningOnMapActivity"; + private Context context = this; + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.mapView) + MapView mapView; + + private AlarmListPresenterImpl alarmListPresenter; + private WellDetailPresenterImpl detailPresenter; + private List geometryList = new ArrayList<>(); + + @Override + public int initLayoutView() { + return R.layout.activity_map_warning; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("报警分布").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mapView.setAttributionTextVisible(false);//去掉左下角属性标识 + mapView.setViewpointScaleAsync(64000); + ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); + //创建底图、并设置底图图层 + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); + Basemap basemap = new Basemap(baseLayer); + arcGISMap.setBasemap(basemap); + mapView.setMap(arcGISMap); + + int alarmTotal = (int) SaveKeyValues.getValue("alarmTotal", Constant.PAGE_LIMIT); + alarmListPresenter = new AlarmListPresenterImpl(this); + alarmListPresenter.onReadyRetrofitRequest(alarmTotal, 1); + detailPresenter = new WellDetailPresenterImpl(this); + } + + @SuppressLint("ClickableViewAccessibility") + @Override + public void initEvent() { + mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { + @Override + public boolean onSingleTapConfirmed(MotionEvent e) { + android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); + Point clickPoint = mapView.screenToLocation(screenPoint); + if (geometryList.size() > 0) { + List tempList = new ArrayList<>(); + for (WellDetailBean.FeaturesBean featuresBean : geometryList) { + WellDetailBean.FeaturesBean.GeometryBean dataBean = featuresBean.getGeometry(); + if (Math.abs(dataBean.getX() - clickPoint.getX()) <= 10 * Constant.DELTA_LNG_10 && + Math.abs(dataBean.getY() - clickPoint.getY()) <= 10 * Constant.DELTA_LNG_10) { + tempList.add(featuresBean); + } + } + if (tempList.size() > 0) { + QMUIDialog.MenuDialogBuilder menuDialogBuilder = new QMUIDialog.MenuDialogBuilder(context); + menuDialogBuilder.setTitle("请选择您要查看的窨井"); + for (WellDetailBean.FeaturesBean dataBean : tempList) { + menuDialogBuilder.addItem(dataBean.getAttributes().get编号(), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + + View popupView = LayoutInflater.from(context).inflate(R.layout.popu_well, null); + TextView wellCodeView = popupView.findViewById(R.id.wellCodeView); + TextView wellTypeView = popupView.findViewById(R.id.wellTypeView); + TextView wellPositionView = popupView.findViewById(R.id.wellPositionView); + + WellDetailBean.FeaturesBean.AttributesBean attributes = dataBean.getAttributes(); + wellCodeView.setText(attributes.get编号()); + wellTypeView.setText(attributes.get附属物名称()); + wellPositionView.setText(attributes.get所属道路()); + + QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 290)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapView); + } + }); + } + menuDialogBuilder.create().show(); + } + } + return super.onSingleTapConfirmed(e); + } + }); + } + + @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.expandMapView: + mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); + break; + case R.id.minusMapView: + mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); + break; + default: + break; + } + } + + protected void onResume() { + super.onResume(); + mapView.resume(); + } + + @Override + protected void onPause() { + super.onPause(); + mapView.pause(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + mapView.dispose(); + if (alarmListPresenter != null) { + alarmListPresenter.disposeRetrofitRequest(); + } + if (detailPresenter != null) { + detailPresenter.disposeRetrofitRequest(); + } + } + + @Override + public void obtainAlarmResult(AlarmDataBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + for (AlarmDataBean.DataBean.RowsBean rowsBean : dataRows) { + String queryParam = "编号='" + rowsBean.getWellCode() + "'"; + detailPresenter.onReadyRetrofitRequest(queryParam); + } + } + } + + @Override + public void obtainWellDetailResult(WellDetailBean resultBean) { + List features = resultBean.getFeatures(); + if (features.size() > 0) { + WellDetailBean.FeaturesBean featuresBean = features.get(0); + //将获取到的井数据缓存起来 + geometryList.add(featuresBean); + WellDetailBean.FeaturesBean.GeometryBean geometryBean = featuresBean.getGeometry(); + //每获取一个点就绘制出 + addMarker(new Point(geometryBean.getX(), geometryBean.getY())); + } + } + + private void addMarker(Point point) { + SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 10); + Graphic graphic = new Graphic(point, simpleMarkerSymbol); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index b3fbd7b..e8cd7d5 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -87,9 +87,11 @@ public static final String BASE_MAP_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 public static final String BASE_MAP_NO_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 public static final String COMPONENT_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 + public static final String WELL_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer";//崇仁窨井图层 //正式环境 // public static final String BASE_MAP_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 // public static final String BASE_MAP_NO_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 // public static final String COMPONENT_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 +// public static final String WELL_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer";//崇仁窨井图层 } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 16a9d4c..f70d101 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -35,6 +35,7 @@ import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; import com.casic.dcms.bean.UserBean; +import com.casic.dcms.bean.WellDetailBean; import com.casic.dcms.bean.WellListBean; import java.util.List; @@ -768,4 +769,17 @@ @POST("/smartwell/well/batchBfcf") Observable optionWellStatus(@Header("token") String token, @Field("bfzt") String bfzt); + + /** + * 井详情 + *

+ * http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer/0/query?f=json&inSr=4326&outSR=4326&outFields=*&returnGeometry=true&where=编号='GX_WSD_4107_HLDD154' + */ + @GET("/arcgis/rest/services/fsw/MapServer/0/query") + Observable obtainWellDetail(@Query("f") String f, + @Query("inSr") String inSr, + @Query("outSR") String outSR, + @Query("outFields") String outFields, + @Query("returnGeometry") boolean returnGeometry, + @Query("where") String where); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 7c3705f..32a93a1 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -37,6 +37,7 @@ import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; import com.casic.dcms.bean.UserBean; +import com.casic.dcms.bean.WellDetailBean; import com.casic.dcms.bean.WellListBean; import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.Constant; @@ -724,10 +725,10 @@ /** * 报警列表 */ - public static Observable getAlarmListResult(int offset) { + public static Observable getAlarmListResult(int limit, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainAlarmList(AuthenticationHelper.getToken(), "1", Constant.PAGE_LIMIT, offset); + return service.obtainAlarmList(AuthenticationHelper.getToken(), "1", limit, offset); } /** @@ -754,7 +755,8 @@ public static Observable getWellListResult(int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainWellList(AuthenticationHelper.getToken(), "wellCode", "asc", Constant.PAGE_LIMIT, offset); + return service.obtainWellList(AuthenticationHelper.getToken(), "wellCode", "asc", + Constant.PAGE_LIMIT, offset); } /** @@ -776,14 +778,17 @@ } /** - * 测试别的端口数据,永远放最后面 + * 报警窨井详情 */ - private static Retrofit createTestRetrofit() { - return new Retrofit.Builder() - .baseUrl("http://111.198.10.15:11643") + public static Observable getWellDetailResult(String where) { + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://111.198.10.15:13002") .addConverterFactory(GsonConverterFactory.create())//Gson转换器 .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .client(createOKHttpClient())//log拦截器 .build(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWellDetail("json", "4326", "4326", "*", + true, where); } } diff --git a/app/src/main/res/drawable/dash_white_line.xml b/app/src/main/res/drawable/dash_white_line.xml new file mode 100644 index 0000000..d9f7330 --- /dev/null +++ b/app/src/main/res/drawable/dash_white_line.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_dot_off.xml b/app/src/main/res/drawable/ic_dot_off.xml deleted file mode 100644 index 859e9ca..0000000 --- a/app/src/main/res/drawable/ic_dot_off.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dot_on.xml b/app/src/main/res/drawable/ic_dot_on.xml deleted file mode 100644 index 0b0bd97..0000000 --- a/app/src/main/res/drawable/ic_dot_on.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index febcd02..f845c47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -95,6 +95,7 @@ + fields; + private List features; + + public String getDisplayFieldName() { + return displayFieldName; + } + + public void setDisplayFieldName(String displayFieldName) { + this.displayFieldName = displayFieldName; + } + + public FieldAliasesBean getFieldAliases() { + return fieldAliases; + } + + public void setFieldAliases(FieldAliasesBean fieldAliases) { + this.fieldAliases = fieldAliases; + } + + public String getGeometryType() { + return geometryType; + } + + public void setGeometryType(String geometryType) { + this.geometryType = geometryType; + } + + public SpatialReferenceBean getSpatialReference() { + return spatialReference; + } + + public void setSpatialReference(SpatialReferenceBean spatialReference) { + this.spatialReference = spatialReference; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public List getFeatures() { + return features; + } + + public void setFeatures(List features) { + this.features = features; + } + + public static class FieldAliasesBean { + + private String objectid; + private String 编号; + private String 附属物编码; + private String 地面高程; + private String x坐标; + private String y坐标; + private String 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private String jd; + private String wd; + + public String getObjectid() { + return objectid; + } + + public void setObjectid(String objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public String get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(String 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public String get地面高程() { + return 地面高程; + } + + public void set地面高程(String 地面高程) { + this.地面高程 = 地面高程; + } + + public String getX坐标() { + return x坐标; + } + + public void setX坐标(String x坐标) { + this.x坐标 = x坐标; + } + + public String getY坐标() { + return y坐标; + } + + public void setY坐标(String y坐标) { + this.y坐标 = y坐标; + } + + public String get井深() { + return 井深; + } + + public void set井深(String 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public String getJd() { + return jd; + } + + public void setJd(String jd) { + this.jd = jd; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + } + + public static class SpatialReferenceBean { + + private int wkid; + private int latestWkid; + + public int getWkid() { + return wkid; + } + + public void setWkid(int wkid) { + this.wkid = wkid; + } + + public int getLatestWkid() { + return latestWkid; + } + + public void setLatestWkid(int latestWkid) { + this.latestWkid = latestWkid; + } + } + + public static class FieldsBean { + + private String name; + private String type; + private String alias; + private int length; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + } + + public static class FeaturesBean { + + private AttributesBean attributes; + private GeometryBean geometry; + + public AttributesBean getAttributes() { + return attributes; + } + + public void setAttributes(AttributesBean attributes) { + this.attributes = attributes; + } + + public GeometryBean getGeometry() { + return geometry; + } + + public void setGeometry(GeometryBean geometry) { + this.geometry = geometry; + } + + public static class AttributesBean { + /** + * objectid : 3984 + * 编号 : GX_WSD_4107_HLDD150 + * 附属物编码 : 4107 + * 地面高程 : 59.462 + * x坐标 : 3071874.507 + * y坐标 : 408323.999 + * 井深 : 2.72 + * 附属物名称 : 污水井 + * 所属道路 : 活力大道 + * 建设年代 : + * 权属单位 : + * 备注 : + * jd : 116.070072 + * wd : 27.757135 + */ + + private int objectid; + private String 编号; + private int 附属物编码; + private double 地面高程; + private double x坐标; + private double y坐标; + private double 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private double jd; + private double wd; + + public int getObjectid() { + return objectid; + } + + public void setObjectid(int objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public int get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(int 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public double get地面高程() { + return 地面高程; + } + + public void set地面高程(double 地面高程) { + this.地面高程 = 地面高程; + } + + public double getX坐标() { + return x坐标; + } + + public void setX坐标(double x坐标) { + this.x坐标 = x坐标; + } + + public double getY坐标() { + return y坐标; + } + + public void setY坐标(double y坐标) { + this.y坐标 = y坐标; + } + + public double get井深() { + return 井深; + } + + public void set井深(double 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public double getJd() { + return jd; + } + + public void setJd(double jd) { + this.jd = jd; + } + + public double getWd() { + return wd; + } + + public void setWd(double wd) { + this.wd = wd; + } + } + + public static class GeometryBean { + /** + * x : 116.07007205499997 + * y : 27.757134534999977 + */ + + private double x; + private double y; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java index 5f5b8a9..1117853 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java @@ -24,8 +24,8 @@ } @Override - public Subscription sendRetrofitRequest(int offset) { - Observable observable = RetrofitServiceManager.getAlarmListResult(offset); + public Subscription sendRetrofitRequest(int limit,int offset) { + Observable observable = RetrofitServiceManager.getAlarmListResult(limit, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java index fc8b4ce..d9f08dc 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java @@ -3,5 +3,5 @@ import rx.Subscription; public interface IAlarmListModel { - Subscription sendRetrofitRequest(int offset); + Subscription sendRetrofitRequest(int limit,int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java new file mode 100644 index 0000000..1db090e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IWellDetailModel { + Subscription sendRetrofitRequest(String where); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java new file mode 100644 index 0000000..f9e7a3e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class WellDetailModelImpl implements IWellDetailModel { + + private OnGetDetailListener listener; + + public WellDetailModelImpl(OnGetDetailListener listListener) { + this.listener = listListener; + } + + public interface OnGetDetailListener { + void onSuccess(WellDetailBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String where) { + Observable observable = RetrofitServiceManager.getWellDetailResult(where); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(WellDetailBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java index 624715b..1851e54 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java @@ -16,8 +16,8 @@ } @Override - public void onReadyRetrofitRequest(int offset) { - addSubscription(model.sendRetrofitRequest(offset)); + public void onReadyRetrofitRequest(int limit, int offset) { + addSubscription(model.sendRetrofitRequest(limit, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java index 550deec..2408f94 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java @@ -1,7 +1,7 @@ package com.casic.dcms.mvp.presenter; public interface IAlarmListPresenter { - void onReadyRetrofitRequest(int offset); + void onReadyRetrofitRequest(int limit,int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java new file mode 100644 index 0000000..e968509 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IWellDetailPresenter { + void onReadyRetrofitRequest(String where); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java new file mode 100644 index 0000000..1a123f1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.WellDetailModelImpl; +import com.casic.dcms.mvp.view.IWellDetailView; + +public class WellDetailPresenterImpl extends BasePresenter implements IWellDetailPresenter, WellDetailModelImpl.OnGetDetailListener { + + private IWellDetailView view; + private WellDetailModelImpl actionModel; + + public WellDetailPresenterImpl(IWellDetailView detailView) { + this.view = detailView; + actionModel = new WellDetailModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String where) { + addSubscription(actionModel.sendRetrofitRequest(where)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(WellDetailBean resultBean) { + view.obtainWellDetailResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java new file mode 100644 index 0000000..2d01903 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.WellDetailBean; + +public interface IWellDetailView { + void obtainWellDetailResult(WellDetailBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java index b1b7352..a58662d 100644 --- a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java @@ -27,6 +27,7 @@ import com.casic.dcms.mvp.view.ICancelAlarmView; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.CancelAlarmDialog; @@ -105,7 +106,7 @@ showBatchCancelDialog(); break; case 1: - + startActivity(new Intent(context, WarningOnMapActivity.class)); break; case 2: startActivity(new Intent(context, WellListActivity.class)); @@ -123,7 +124,7 @@ @Override public void initData() { alarmListPresenter = new AlarmListPresenterImpl(this); - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); weakReferenceHandler = new WeakReferenceHandler(this); @@ -138,7 +139,7 @@ isRefresh = true; //刷新之后页码重置 pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -146,7 +147,7 @@ public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { isLoadMore = true; pageIndex++; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); } @@ -231,7 +232,7 @@ //取消成功之后自动刷新列表 isRefresh = true; pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } else { ToastHelper.showToast("操作失败,请重试", ToastHelper.ERROR); } @@ -240,6 +241,7 @@ @Override public void obtainAlarmResult(AlarmDataBean resultBean) { if (resultBean.isSuccess()) { + SaveKeyValues.putValue("alarmTotal", resultBean.getData().getTotal()); List dataRows = resultBean.getData().getRows(); if (isRefresh) { dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 diff --git a/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java new file mode 100644 index 0000000..b318fe0 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java @@ -0,0 +1,221 @@ +package com.casic.dcms.ui; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.DialogInterface; +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.AlarmDataBean; +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.presenter.AlarmListPresenterImpl; +import com.casic.dcms.mvp.presenter.WellDetailPresenterImpl; +import com.casic.dcms.mvp.view.IAlarmListView; +import com.casic.dcms.mvp.view.IWellDetailView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.SaveKeyValues; +import com.esri.arcgisruntime.geometry.Point; +import com.esri.arcgisruntime.layers.ArcGISTiledLayer; +import com.esri.arcgisruntime.mapping.ArcGISMap; +import com.esri.arcgisruntime.mapping.Basemap; +import com.esri.arcgisruntime.mapping.BasemapStyle; +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; +import com.esri.arcgisruntime.mapping.view.Graphic; +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; +import com.esri.arcgisruntime.mapping.view.MapView; +import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol; +import com.esri.arcgisruntime.util.ListenableList; +import com.qmuiteam.qmui.util.QMUIDisplayHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.popup.QMUIPopup; +import com.qmuiteam.qmui.widget.popup.QMUIPopups; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class WarningOnMapActivity extends BaseActivity implements View.OnClickListener, IAlarmListView, + IWellDetailView { + + private static final String TAG = "WarningOnMapActivity"; + private Context context = this; + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.mapView) + MapView mapView; + + private AlarmListPresenterImpl alarmListPresenter; + private WellDetailPresenterImpl detailPresenter; + private List geometryList = new ArrayList<>(); + + @Override + public int initLayoutView() { + return R.layout.activity_map_warning; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("报警分布").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mapView.setAttributionTextVisible(false);//去掉左下角属性标识 + mapView.setViewpointScaleAsync(64000); + ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); + //创建底图、并设置底图图层 + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); + Basemap basemap = new Basemap(baseLayer); + arcGISMap.setBasemap(basemap); + mapView.setMap(arcGISMap); + + int alarmTotal = (int) SaveKeyValues.getValue("alarmTotal", Constant.PAGE_LIMIT); + alarmListPresenter = new AlarmListPresenterImpl(this); + alarmListPresenter.onReadyRetrofitRequest(alarmTotal, 1); + detailPresenter = new WellDetailPresenterImpl(this); + } + + @SuppressLint("ClickableViewAccessibility") + @Override + public void initEvent() { + mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { + @Override + public boolean onSingleTapConfirmed(MotionEvent e) { + android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); + Point clickPoint = mapView.screenToLocation(screenPoint); + if (geometryList.size() > 0) { + List tempList = new ArrayList<>(); + for (WellDetailBean.FeaturesBean featuresBean : geometryList) { + WellDetailBean.FeaturesBean.GeometryBean dataBean = featuresBean.getGeometry(); + if (Math.abs(dataBean.getX() - clickPoint.getX()) <= 10 * Constant.DELTA_LNG_10 && + Math.abs(dataBean.getY() - clickPoint.getY()) <= 10 * Constant.DELTA_LNG_10) { + tempList.add(featuresBean); + } + } + if (tempList.size() > 0) { + QMUIDialog.MenuDialogBuilder menuDialogBuilder = new QMUIDialog.MenuDialogBuilder(context); + menuDialogBuilder.setTitle("请选择您要查看的窨井"); + for (WellDetailBean.FeaturesBean dataBean : tempList) { + menuDialogBuilder.addItem(dataBean.getAttributes().get编号(), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + + View popupView = LayoutInflater.from(context).inflate(R.layout.popu_well, null); + TextView wellCodeView = popupView.findViewById(R.id.wellCodeView); + TextView wellTypeView = popupView.findViewById(R.id.wellTypeView); + TextView wellPositionView = popupView.findViewById(R.id.wellPositionView); + + WellDetailBean.FeaturesBean.AttributesBean attributes = dataBean.getAttributes(); + wellCodeView.setText(attributes.get编号()); + wellTypeView.setText(attributes.get附属物名称()); + wellPositionView.setText(attributes.get所属道路()); + + QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 290)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapView); + } + }); + } + menuDialogBuilder.create().show(); + } + } + return super.onSingleTapConfirmed(e); + } + }); + } + + @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.expandMapView: + mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); + break; + case R.id.minusMapView: + mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); + break; + default: + break; + } + } + + protected void onResume() { + super.onResume(); + mapView.resume(); + } + + @Override + protected void onPause() { + super.onPause(); + mapView.pause(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + mapView.dispose(); + if (alarmListPresenter != null) { + alarmListPresenter.disposeRetrofitRequest(); + } + if (detailPresenter != null) { + detailPresenter.disposeRetrofitRequest(); + } + } + + @Override + public void obtainAlarmResult(AlarmDataBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + for (AlarmDataBean.DataBean.RowsBean rowsBean : dataRows) { + String queryParam = "编号='" + rowsBean.getWellCode() + "'"; + detailPresenter.onReadyRetrofitRequest(queryParam); + } + } + } + + @Override + public void obtainWellDetailResult(WellDetailBean resultBean) { + List features = resultBean.getFeatures(); + if (features.size() > 0) { + WellDetailBean.FeaturesBean featuresBean = features.get(0); + //将获取到的井数据缓存起来 + geometryList.add(featuresBean); + WellDetailBean.FeaturesBean.GeometryBean geometryBean = featuresBean.getGeometry(); + //每获取一个点就绘制出 + addMarker(new Point(geometryBean.getX(), geometryBean.getY())); + } + } + + private void addMarker(Point point) { + SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 10); + Graphic graphic = new Graphic(point, simpleMarkerSymbol); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index b3fbd7b..e8cd7d5 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -87,9 +87,11 @@ public static final String BASE_MAP_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 public static final String BASE_MAP_NO_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 public static final String COMPONENT_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 + public static final String WELL_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer";//崇仁窨井图层 //正式环境 // public static final String BASE_MAP_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 // public static final String BASE_MAP_NO_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 // public static final String COMPONENT_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 +// public static final String WELL_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer";//崇仁窨井图层 } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 16a9d4c..f70d101 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -35,6 +35,7 @@ import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; import com.casic.dcms.bean.UserBean; +import com.casic.dcms.bean.WellDetailBean; import com.casic.dcms.bean.WellListBean; import java.util.List; @@ -768,4 +769,17 @@ @POST("/smartwell/well/batchBfcf") Observable optionWellStatus(@Header("token") String token, @Field("bfzt") String bfzt); + + /** + * 井详情 + *

+ * http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer/0/query?f=json&inSr=4326&outSR=4326&outFields=*&returnGeometry=true&where=编号='GX_WSD_4107_HLDD154' + */ + @GET("/arcgis/rest/services/fsw/MapServer/0/query") + Observable obtainWellDetail(@Query("f") String f, + @Query("inSr") String inSr, + @Query("outSR") String outSR, + @Query("outFields") String outFields, + @Query("returnGeometry") boolean returnGeometry, + @Query("where") String where); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 7c3705f..32a93a1 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -37,6 +37,7 @@ import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; import com.casic.dcms.bean.UserBean; +import com.casic.dcms.bean.WellDetailBean; import com.casic.dcms.bean.WellListBean; import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.Constant; @@ -724,10 +725,10 @@ /** * 报警列表 */ - public static Observable getAlarmListResult(int offset) { + public static Observable getAlarmListResult(int limit, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainAlarmList(AuthenticationHelper.getToken(), "1", Constant.PAGE_LIMIT, offset); + return service.obtainAlarmList(AuthenticationHelper.getToken(), "1", limit, offset); } /** @@ -754,7 +755,8 @@ public static Observable getWellListResult(int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainWellList(AuthenticationHelper.getToken(), "wellCode", "asc", Constant.PAGE_LIMIT, offset); + return service.obtainWellList(AuthenticationHelper.getToken(), "wellCode", "asc", + Constant.PAGE_LIMIT, offset); } /** @@ -776,14 +778,17 @@ } /** - * 测试别的端口数据,永远放最后面 + * 报警窨井详情 */ - private static Retrofit createTestRetrofit() { - return new Retrofit.Builder() - .baseUrl("http://111.198.10.15:11643") + public static Observable getWellDetailResult(String where) { + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://111.198.10.15:13002") .addConverterFactory(GsonConverterFactory.create())//Gson转换器 .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .client(createOKHttpClient())//log拦截器 .build(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWellDetail("json", "4326", "4326", "*", + true, where); } } diff --git a/app/src/main/res/drawable/dash_white_line.xml b/app/src/main/res/drawable/dash_white_line.xml new file mode 100644 index 0000000..d9f7330 --- /dev/null +++ b/app/src/main/res/drawable/dash_white_line.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_dot_off.xml b/app/src/main/res/drawable/ic_dot_off.xml deleted file mode 100644 index 859e9ca..0000000 --- a/app/src/main/res/drawable/ic_dot_off.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dot_on.xml b/app/src/main/res/drawable/ic_dot_on.xml deleted file mode 100644 index 0b0bd97..0000000 --- a/app/src/main/res/drawable/ic_dot_on.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dot_warning.xml b/app/src/main/res/drawable/ic_dot_warning.xml deleted file mode 100644 index dadb908..0000000 --- a/app/src/main/res/drawable/ic_dot_warning.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index febcd02..f845c47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -95,6 +95,7 @@ + fields; + private List features; + + public String getDisplayFieldName() { + return displayFieldName; + } + + public void setDisplayFieldName(String displayFieldName) { + this.displayFieldName = displayFieldName; + } + + public FieldAliasesBean getFieldAliases() { + return fieldAliases; + } + + public void setFieldAliases(FieldAliasesBean fieldAliases) { + this.fieldAliases = fieldAliases; + } + + public String getGeometryType() { + return geometryType; + } + + public void setGeometryType(String geometryType) { + this.geometryType = geometryType; + } + + public SpatialReferenceBean getSpatialReference() { + return spatialReference; + } + + public void setSpatialReference(SpatialReferenceBean spatialReference) { + this.spatialReference = spatialReference; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public List getFeatures() { + return features; + } + + public void setFeatures(List features) { + this.features = features; + } + + public static class FieldAliasesBean { + + private String objectid; + private String 编号; + private String 附属物编码; + private String 地面高程; + private String x坐标; + private String y坐标; + private String 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private String jd; + private String wd; + + public String getObjectid() { + return objectid; + } + + public void setObjectid(String objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public String get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(String 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public String get地面高程() { + return 地面高程; + } + + public void set地面高程(String 地面高程) { + this.地面高程 = 地面高程; + } + + public String getX坐标() { + return x坐标; + } + + public void setX坐标(String x坐标) { + this.x坐标 = x坐标; + } + + public String getY坐标() { + return y坐标; + } + + public void setY坐标(String y坐标) { + this.y坐标 = y坐标; + } + + public String get井深() { + return 井深; + } + + public void set井深(String 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public String getJd() { + return jd; + } + + public void setJd(String jd) { + this.jd = jd; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + } + + public static class SpatialReferenceBean { + + private int wkid; + private int latestWkid; + + public int getWkid() { + return wkid; + } + + public void setWkid(int wkid) { + this.wkid = wkid; + } + + public int getLatestWkid() { + return latestWkid; + } + + public void setLatestWkid(int latestWkid) { + this.latestWkid = latestWkid; + } + } + + public static class FieldsBean { + + private String name; + private String type; + private String alias; + private int length; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + } + + public static class FeaturesBean { + + private AttributesBean attributes; + private GeometryBean geometry; + + public AttributesBean getAttributes() { + return attributes; + } + + public void setAttributes(AttributesBean attributes) { + this.attributes = attributes; + } + + public GeometryBean getGeometry() { + return geometry; + } + + public void setGeometry(GeometryBean geometry) { + this.geometry = geometry; + } + + public static class AttributesBean { + /** + * objectid : 3984 + * 编号 : GX_WSD_4107_HLDD150 + * 附属物编码 : 4107 + * 地面高程 : 59.462 + * x坐标 : 3071874.507 + * y坐标 : 408323.999 + * 井深 : 2.72 + * 附属物名称 : 污水井 + * 所属道路 : 活力大道 + * 建设年代 : + * 权属单位 : + * 备注 : + * jd : 116.070072 + * wd : 27.757135 + */ + + private int objectid; + private String 编号; + private int 附属物编码; + private double 地面高程; + private double x坐标; + private double y坐标; + private double 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private double jd; + private double wd; + + public int getObjectid() { + return objectid; + } + + public void setObjectid(int objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public int get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(int 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public double get地面高程() { + return 地面高程; + } + + public void set地面高程(double 地面高程) { + this.地面高程 = 地面高程; + } + + public double getX坐标() { + return x坐标; + } + + public void setX坐标(double x坐标) { + this.x坐标 = x坐标; + } + + public double getY坐标() { + return y坐标; + } + + public void setY坐标(double y坐标) { + this.y坐标 = y坐标; + } + + public double get井深() { + return 井深; + } + + public void set井深(double 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public double getJd() { + return jd; + } + + public void setJd(double jd) { + this.jd = jd; + } + + public double getWd() { + return wd; + } + + public void setWd(double wd) { + this.wd = wd; + } + } + + public static class GeometryBean { + /** + * x : 116.07007205499997 + * y : 27.757134534999977 + */ + + private double x; + private double y; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java index 5f5b8a9..1117853 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java @@ -24,8 +24,8 @@ } @Override - public Subscription sendRetrofitRequest(int offset) { - Observable observable = RetrofitServiceManager.getAlarmListResult(offset); + public Subscription sendRetrofitRequest(int limit,int offset) { + Observable observable = RetrofitServiceManager.getAlarmListResult(limit, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java index fc8b4ce..d9f08dc 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java @@ -3,5 +3,5 @@ import rx.Subscription; public interface IAlarmListModel { - Subscription sendRetrofitRequest(int offset); + Subscription sendRetrofitRequest(int limit,int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java new file mode 100644 index 0000000..1db090e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IWellDetailModel { + Subscription sendRetrofitRequest(String where); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java new file mode 100644 index 0000000..f9e7a3e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class WellDetailModelImpl implements IWellDetailModel { + + private OnGetDetailListener listener; + + public WellDetailModelImpl(OnGetDetailListener listListener) { + this.listener = listListener; + } + + public interface OnGetDetailListener { + void onSuccess(WellDetailBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String where) { + Observable observable = RetrofitServiceManager.getWellDetailResult(where); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(WellDetailBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java index 624715b..1851e54 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java @@ -16,8 +16,8 @@ } @Override - public void onReadyRetrofitRequest(int offset) { - addSubscription(model.sendRetrofitRequest(offset)); + public void onReadyRetrofitRequest(int limit, int offset) { + addSubscription(model.sendRetrofitRequest(limit, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java index 550deec..2408f94 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java @@ -1,7 +1,7 @@ package com.casic.dcms.mvp.presenter; public interface IAlarmListPresenter { - void onReadyRetrofitRequest(int offset); + void onReadyRetrofitRequest(int limit,int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java new file mode 100644 index 0000000..e968509 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IWellDetailPresenter { + void onReadyRetrofitRequest(String where); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java new file mode 100644 index 0000000..1a123f1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.WellDetailModelImpl; +import com.casic.dcms.mvp.view.IWellDetailView; + +public class WellDetailPresenterImpl extends BasePresenter implements IWellDetailPresenter, WellDetailModelImpl.OnGetDetailListener { + + private IWellDetailView view; + private WellDetailModelImpl actionModel; + + public WellDetailPresenterImpl(IWellDetailView detailView) { + this.view = detailView; + actionModel = new WellDetailModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String where) { + addSubscription(actionModel.sendRetrofitRequest(where)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(WellDetailBean resultBean) { + view.obtainWellDetailResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java new file mode 100644 index 0000000..2d01903 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.WellDetailBean; + +public interface IWellDetailView { + void obtainWellDetailResult(WellDetailBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java index b1b7352..a58662d 100644 --- a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java @@ -27,6 +27,7 @@ import com.casic.dcms.mvp.view.ICancelAlarmView; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.CancelAlarmDialog; @@ -105,7 +106,7 @@ showBatchCancelDialog(); break; case 1: - + startActivity(new Intent(context, WarningOnMapActivity.class)); break; case 2: startActivity(new Intent(context, WellListActivity.class)); @@ -123,7 +124,7 @@ @Override public void initData() { alarmListPresenter = new AlarmListPresenterImpl(this); - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); weakReferenceHandler = new WeakReferenceHandler(this); @@ -138,7 +139,7 @@ isRefresh = true; //刷新之后页码重置 pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -146,7 +147,7 @@ public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { isLoadMore = true; pageIndex++; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); } @@ -231,7 +232,7 @@ //取消成功之后自动刷新列表 isRefresh = true; pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } else { ToastHelper.showToast("操作失败,请重试", ToastHelper.ERROR); } @@ -240,6 +241,7 @@ @Override public void obtainAlarmResult(AlarmDataBean resultBean) { if (resultBean.isSuccess()) { + SaveKeyValues.putValue("alarmTotal", resultBean.getData().getTotal()); List dataRows = resultBean.getData().getRows(); if (isRefresh) { dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 diff --git a/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java new file mode 100644 index 0000000..b318fe0 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java @@ -0,0 +1,221 @@ +package com.casic.dcms.ui; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.DialogInterface; +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.AlarmDataBean; +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.presenter.AlarmListPresenterImpl; +import com.casic.dcms.mvp.presenter.WellDetailPresenterImpl; +import com.casic.dcms.mvp.view.IAlarmListView; +import com.casic.dcms.mvp.view.IWellDetailView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.SaveKeyValues; +import com.esri.arcgisruntime.geometry.Point; +import com.esri.arcgisruntime.layers.ArcGISTiledLayer; +import com.esri.arcgisruntime.mapping.ArcGISMap; +import com.esri.arcgisruntime.mapping.Basemap; +import com.esri.arcgisruntime.mapping.BasemapStyle; +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; +import com.esri.arcgisruntime.mapping.view.Graphic; +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; +import com.esri.arcgisruntime.mapping.view.MapView; +import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol; +import com.esri.arcgisruntime.util.ListenableList; +import com.qmuiteam.qmui.util.QMUIDisplayHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.popup.QMUIPopup; +import com.qmuiteam.qmui.widget.popup.QMUIPopups; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class WarningOnMapActivity extends BaseActivity implements View.OnClickListener, IAlarmListView, + IWellDetailView { + + private static final String TAG = "WarningOnMapActivity"; + private Context context = this; + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.mapView) + MapView mapView; + + private AlarmListPresenterImpl alarmListPresenter; + private WellDetailPresenterImpl detailPresenter; + private List geometryList = new ArrayList<>(); + + @Override + public int initLayoutView() { + return R.layout.activity_map_warning; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("报警分布").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mapView.setAttributionTextVisible(false);//去掉左下角属性标识 + mapView.setViewpointScaleAsync(64000); + ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); + //创建底图、并设置底图图层 + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); + Basemap basemap = new Basemap(baseLayer); + arcGISMap.setBasemap(basemap); + mapView.setMap(arcGISMap); + + int alarmTotal = (int) SaveKeyValues.getValue("alarmTotal", Constant.PAGE_LIMIT); + alarmListPresenter = new AlarmListPresenterImpl(this); + alarmListPresenter.onReadyRetrofitRequest(alarmTotal, 1); + detailPresenter = new WellDetailPresenterImpl(this); + } + + @SuppressLint("ClickableViewAccessibility") + @Override + public void initEvent() { + mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { + @Override + public boolean onSingleTapConfirmed(MotionEvent e) { + android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); + Point clickPoint = mapView.screenToLocation(screenPoint); + if (geometryList.size() > 0) { + List tempList = new ArrayList<>(); + for (WellDetailBean.FeaturesBean featuresBean : geometryList) { + WellDetailBean.FeaturesBean.GeometryBean dataBean = featuresBean.getGeometry(); + if (Math.abs(dataBean.getX() - clickPoint.getX()) <= 10 * Constant.DELTA_LNG_10 && + Math.abs(dataBean.getY() - clickPoint.getY()) <= 10 * Constant.DELTA_LNG_10) { + tempList.add(featuresBean); + } + } + if (tempList.size() > 0) { + QMUIDialog.MenuDialogBuilder menuDialogBuilder = new QMUIDialog.MenuDialogBuilder(context); + menuDialogBuilder.setTitle("请选择您要查看的窨井"); + for (WellDetailBean.FeaturesBean dataBean : tempList) { + menuDialogBuilder.addItem(dataBean.getAttributes().get编号(), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + + View popupView = LayoutInflater.from(context).inflate(R.layout.popu_well, null); + TextView wellCodeView = popupView.findViewById(R.id.wellCodeView); + TextView wellTypeView = popupView.findViewById(R.id.wellTypeView); + TextView wellPositionView = popupView.findViewById(R.id.wellPositionView); + + WellDetailBean.FeaturesBean.AttributesBean attributes = dataBean.getAttributes(); + wellCodeView.setText(attributes.get编号()); + wellTypeView.setText(attributes.get附属物名称()); + wellPositionView.setText(attributes.get所属道路()); + + QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 290)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapView); + } + }); + } + menuDialogBuilder.create().show(); + } + } + return super.onSingleTapConfirmed(e); + } + }); + } + + @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.expandMapView: + mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); + break; + case R.id.minusMapView: + mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); + break; + default: + break; + } + } + + protected void onResume() { + super.onResume(); + mapView.resume(); + } + + @Override + protected void onPause() { + super.onPause(); + mapView.pause(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + mapView.dispose(); + if (alarmListPresenter != null) { + alarmListPresenter.disposeRetrofitRequest(); + } + if (detailPresenter != null) { + detailPresenter.disposeRetrofitRequest(); + } + } + + @Override + public void obtainAlarmResult(AlarmDataBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + for (AlarmDataBean.DataBean.RowsBean rowsBean : dataRows) { + String queryParam = "编号='" + rowsBean.getWellCode() + "'"; + detailPresenter.onReadyRetrofitRequest(queryParam); + } + } + } + + @Override + public void obtainWellDetailResult(WellDetailBean resultBean) { + List features = resultBean.getFeatures(); + if (features.size() > 0) { + WellDetailBean.FeaturesBean featuresBean = features.get(0); + //将获取到的井数据缓存起来 + geometryList.add(featuresBean); + WellDetailBean.FeaturesBean.GeometryBean geometryBean = featuresBean.getGeometry(); + //每获取一个点就绘制出 + addMarker(new Point(geometryBean.getX(), geometryBean.getY())); + } + } + + private void addMarker(Point point) { + SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 10); + Graphic graphic = new Graphic(point, simpleMarkerSymbol); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index b3fbd7b..e8cd7d5 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -87,9 +87,11 @@ public static final String BASE_MAP_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 public static final String BASE_MAP_NO_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 public static final String COMPONENT_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 + public static final String WELL_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer";//崇仁窨井图层 //正式环境 // public static final String BASE_MAP_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 // public static final String BASE_MAP_NO_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 // public static final String COMPONENT_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 +// public static final String WELL_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer";//崇仁窨井图层 } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 16a9d4c..f70d101 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -35,6 +35,7 @@ import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; import com.casic.dcms.bean.UserBean; +import com.casic.dcms.bean.WellDetailBean; import com.casic.dcms.bean.WellListBean; import java.util.List; @@ -768,4 +769,17 @@ @POST("/smartwell/well/batchBfcf") Observable optionWellStatus(@Header("token") String token, @Field("bfzt") String bfzt); + + /** + * 井详情 + *

+ * http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer/0/query?f=json&inSr=4326&outSR=4326&outFields=*&returnGeometry=true&where=编号='GX_WSD_4107_HLDD154' + */ + @GET("/arcgis/rest/services/fsw/MapServer/0/query") + Observable obtainWellDetail(@Query("f") String f, + @Query("inSr") String inSr, + @Query("outSR") String outSR, + @Query("outFields") String outFields, + @Query("returnGeometry") boolean returnGeometry, + @Query("where") String where); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 7c3705f..32a93a1 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -37,6 +37,7 @@ import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; import com.casic.dcms.bean.UserBean; +import com.casic.dcms.bean.WellDetailBean; import com.casic.dcms.bean.WellListBean; import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.Constant; @@ -724,10 +725,10 @@ /** * 报警列表 */ - public static Observable getAlarmListResult(int offset) { + public static Observable getAlarmListResult(int limit, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainAlarmList(AuthenticationHelper.getToken(), "1", Constant.PAGE_LIMIT, offset); + return service.obtainAlarmList(AuthenticationHelper.getToken(), "1", limit, offset); } /** @@ -754,7 +755,8 @@ public static Observable getWellListResult(int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainWellList(AuthenticationHelper.getToken(), "wellCode", "asc", Constant.PAGE_LIMIT, offset); + return service.obtainWellList(AuthenticationHelper.getToken(), "wellCode", "asc", + Constant.PAGE_LIMIT, offset); } /** @@ -776,14 +778,17 @@ } /** - * 测试别的端口数据,永远放最后面 + * 报警窨井详情 */ - private static Retrofit createTestRetrofit() { - return new Retrofit.Builder() - .baseUrl("http://111.198.10.15:11643") + public static Observable getWellDetailResult(String where) { + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://111.198.10.15:13002") .addConverterFactory(GsonConverterFactory.create())//Gson转换器 .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .client(createOKHttpClient())//log拦截器 .build(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWellDetail("json", "4326", "4326", "*", + true, where); } } diff --git a/app/src/main/res/drawable/dash_white_line.xml b/app/src/main/res/drawable/dash_white_line.xml new file mode 100644 index 0000000..d9f7330 --- /dev/null +++ b/app/src/main/res/drawable/dash_white_line.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_dot_off.xml b/app/src/main/res/drawable/ic_dot_off.xml deleted file mode 100644 index 859e9ca..0000000 --- a/app/src/main/res/drawable/ic_dot_off.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dot_on.xml b/app/src/main/res/drawable/ic_dot_on.xml deleted file mode 100644 index 0b0bd97..0000000 --- a/app/src/main/res/drawable/ic_dot_on.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dot_warning.xml b/app/src/main/res/drawable/ic_dot_warning.xml deleted file mode 100644 index dadb908..0000000 --- a/app/src/main/res/drawable/ic_dot_warning.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/layout/activity_map_warning.xml b/app/src/main/res/layout/activity_map_warning.xml new file mode 100644 index 0000000..f835f9e --- /dev/null +++ b/app/src/main/res/layout/activity_map_warning.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index febcd02..f845c47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -95,6 +95,7 @@ + fields; + private List features; + + public String getDisplayFieldName() { + return displayFieldName; + } + + public void setDisplayFieldName(String displayFieldName) { + this.displayFieldName = displayFieldName; + } + + public FieldAliasesBean getFieldAliases() { + return fieldAliases; + } + + public void setFieldAliases(FieldAliasesBean fieldAliases) { + this.fieldAliases = fieldAliases; + } + + public String getGeometryType() { + return geometryType; + } + + public void setGeometryType(String geometryType) { + this.geometryType = geometryType; + } + + public SpatialReferenceBean getSpatialReference() { + return spatialReference; + } + + public void setSpatialReference(SpatialReferenceBean spatialReference) { + this.spatialReference = spatialReference; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public List getFeatures() { + return features; + } + + public void setFeatures(List features) { + this.features = features; + } + + public static class FieldAliasesBean { + + private String objectid; + private String 编号; + private String 附属物编码; + private String 地面高程; + private String x坐标; + private String y坐标; + private String 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private String jd; + private String wd; + + public String getObjectid() { + return objectid; + } + + public void setObjectid(String objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public String get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(String 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public String get地面高程() { + return 地面高程; + } + + public void set地面高程(String 地面高程) { + this.地面高程 = 地面高程; + } + + public String getX坐标() { + return x坐标; + } + + public void setX坐标(String x坐标) { + this.x坐标 = x坐标; + } + + public String getY坐标() { + return y坐标; + } + + public void setY坐标(String y坐标) { + this.y坐标 = y坐标; + } + + public String get井深() { + return 井深; + } + + public void set井深(String 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public String getJd() { + return jd; + } + + public void setJd(String jd) { + this.jd = jd; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + } + + public static class SpatialReferenceBean { + + private int wkid; + private int latestWkid; + + public int getWkid() { + return wkid; + } + + public void setWkid(int wkid) { + this.wkid = wkid; + } + + public int getLatestWkid() { + return latestWkid; + } + + public void setLatestWkid(int latestWkid) { + this.latestWkid = latestWkid; + } + } + + public static class FieldsBean { + + private String name; + private String type; + private String alias; + private int length; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + } + + public static class FeaturesBean { + + private AttributesBean attributes; + private GeometryBean geometry; + + public AttributesBean getAttributes() { + return attributes; + } + + public void setAttributes(AttributesBean attributes) { + this.attributes = attributes; + } + + public GeometryBean getGeometry() { + return geometry; + } + + public void setGeometry(GeometryBean geometry) { + this.geometry = geometry; + } + + public static class AttributesBean { + /** + * objectid : 3984 + * 编号 : GX_WSD_4107_HLDD150 + * 附属物编码 : 4107 + * 地面高程 : 59.462 + * x坐标 : 3071874.507 + * y坐标 : 408323.999 + * 井深 : 2.72 + * 附属物名称 : 污水井 + * 所属道路 : 活力大道 + * 建设年代 : + * 权属单位 : + * 备注 : + * jd : 116.070072 + * wd : 27.757135 + */ + + private int objectid; + private String 编号; + private int 附属物编码; + private double 地面高程; + private double x坐标; + private double y坐标; + private double 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private double jd; + private double wd; + + public int getObjectid() { + return objectid; + } + + public void setObjectid(int objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public int get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(int 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public double get地面高程() { + return 地面高程; + } + + public void set地面高程(double 地面高程) { + this.地面高程 = 地面高程; + } + + public double getX坐标() { + return x坐标; + } + + public void setX坐标(double x坐标) { + this.x坐标 = x坐标; + } + + public double getY坐标() { + return y坐标; + } + + public void setY坐标(double y坐标) { + this.y坐标 = y坐标; + } + + public double get井深() { + return 井深; + } + + public void set井深(double 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public double getJd() { + return jd; + } + + public void setJd(double jd) { + this.jd = jd; + } + + public double getWd() { + return wd; + } + + public void setWd(double wd) { + this.wd = wd; + } + } + + public static class GeometryBean { + /** + * x : 116.07007205499997 + * y : 27.757134534999977 + */ + + private double x; + private double y; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java index 5f5b8a9..1117853 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java @@ -24,8 +24,8 @@ } @Override - public Subscription sendRetrofitRequest(int offset) { - Observable observable = RetrofitServiceManager.getAlarmListResult(offset); + public Subscription sendRetrofitRequest(int limit,int offset) { + Observable observable = RetrofitServiceManager.getAlarmListResult(limit, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java index fc8b4ce..d9f08dc 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java @@ -3,5 +3,5 @@ import rx.Subscription; public interface IAlarmListModel { - Subscription sendRetrofitRequest(int offset); + Subscription sendRetrofitRequest(int limit,int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java new file mode 100644 index 0000000..1db090e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IWellDetailModel { + Subscription sendRetrofitRequest(String where); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java new file mode 100644 index 0000000..f9e7a3e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class WellDetailModelImpl implements IWellDetailModel { + + private OnGetDetailListener listener; + + public WellDetailModelImpl(OnGetDetailListener listListener) { + this.listener = listListener; + } + + public interface OnGetDetailListener { + void onSuccess(WellDetailBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String where) { + Observable observable = RetrofitServiceManager.getWellDetailResult(where); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(WellDetailBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java index 624715b..1851e54 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java @@ -16,8 +16,8 @@ } @Override - public void onReadyRetrofitRequest(int offset) { - addSubscription(model.sendRetrofitRequest(offset)); + public void onReadyRetrofitRequest(int limit, int offset) { + addSubscription(model.sendRetrofitRequest(limit, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java index 550deec..2408f94 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java @@ -1,7 +1,7 @@ package com.casic.dcms.mvp.presenter; public interface IAlarmListPresenter { - void onReadyRetrofitRequest(int offset); + void onReadyRetrofitRequest(int limit,int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java new file mode 100644 index 0000000..e968509 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IWellDetailPresenter { + void onReadyRetrofitRequest(String where); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java new file mode 100644 index 0000000..1a123f1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.WellDetailModelImpl; +import com.casic.dcms.mvp.view.IWellDetailView; + +public class WellDetailPresenterImpl extends BasePresenter implements IWellDetailPresenter, WellDetailModelImpl.OnGetDetailListener { + + private IWellDetailView view; + private WellDetailModelImpl actionModel; + + public WellDetailPresenterImpl(IWellDetailView detailView) { + this.view = detailView; + actionModel = new WellDetailModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String where) { + addSubscription(actionModel.sendRetrofitRequest(where)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(WellDetailBean resultBean) { + view.obtainWellDetailResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java new file mode 100644 index 0000000..2d01903 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.WellDetailBean; + +public interface IWellDetailView { + void obtainWellDetailResult(WellDetailBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java index b1b7352..a58662d 100644 --- a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java @@ -27,6 +27,7 @@ import com.casic.dcms.mvp.view.ICancelAlarmView; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.CancelAlarmDialog; @@ -105,7 +106,7 @@ showBatchCancelDialog(); break; case 1: - + startActivity(new Intent(context, WarningOnMapActivity.class)); break; case 2: startActivity(new Intent(context, WellListActivity.class)); @@ -123,7 +124,7 @@ @Override public void initData() { alarmListPresenter = new AlarmListPresenterImpl(this); - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); weakReferenceHandler = new WeakReferenceHandler(this); @@ -138,7 +139,7 @@ isRefresh = true; //刷新之后页码重置 pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -146,7 +147,7 @@ public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { isLoadMore = true; pageIndex++; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); } @@ -231,7 +232,7 @@ //取消成功之后自动刷新列表 isRefresh = true; pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } else { ToastHelper.showToast("操作失败,请重试", ToastHelper.ERROR); } @@ -240,6 +241,7 @@ @Override public void obtainAlarmResult(AlarmDataBean resultBean) { if (resultBean.isSuccess()) { + SaveKeyValues.putValue("alarmTotal", resultBean.getData().getTotal()); List dataRows = resultBean.getData().getRows(); if (isRefresh) { dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 diff --git a/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java new file mode 100644 index 0000000..b318fe0 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java @@ -0,0 +1,221 @@ +package com.casic.dcms.ui; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.DialogInterface; +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.AlarmDataBean; +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.presenter.AlarmListPresenterImpl; +import com.casic.dcms.mvp.presenter.WellDetailPresenterImpl; +import com.casic.dcms.mvp.view.IAlarmListView; +import com.casic.dcms.mvp.view.IWellDetailView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.SaveKeyValues; +import com.esri.arcgisruntime.geometry.Point; +import com.esri.arcgisruntime.layers.ArcGISTiledLayer; +import com.esri.arcgisruntime.mapping.ArcGISMap; +import com.esri.arcgisruntime.mapping.Basemap; +import com.esri.arcgisruntime.mapping.BasemapStyle; +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; +import com.esri.arcgisruntime.mapping.view.Graphic; +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; +import com.esri.arcgisruntime.mapping.view.MapView; +import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol; +import com.esri.arcgisruntime.util.ListenableList; +import com.qmuiteam.qmui.util.QMUIDisplayHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.popup.QMUIPopup; +import com.qmuiteam.qmui.widget.popup.QMUIPopups; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class WarningOnMapActivity extends BaseActivity implements View.OnClickListener, IAlarmListView, + IWellDetailView { + + private static final String TAG = "WarningOnMapActivity"; + private Context context = this; + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.mapView) + MapView mapView; + + private AlarmListPresenterImpl alarmListPresenter; + private WellDetailPresenterImpl detailPresenter; + private List geometryList = new ArrayList<>(); + + @Override + public int initLayoutView() { + return R.layout.activity_map_warning; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("报警分布").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mapView.setAttributionTextVisible(false);//去掉左下角属性标识 + mapView.setViewpointScaleAsync(64000); + ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); + //创建底图、并设置底图图层 + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); + Basemap basemap = new Basemap(baseLayer); + arcGISMap.setBasemap(basemap); + mapView.setMap(arcGISMap); + + int alarmTotal = (int) SaveKeyValues.getValue("alarmTotal", Constant.PAGE_LIMIT); + alarmListPresenter = new AlarmListPresenterImpl(this); + alarmListPresenter.onReadyRetrofitRequest(alarmTotal, 1); + detailPresenter = new WellDetailPresenterImpl(this); + } + + @SuppressLint("ClickableViewAccessibility") + @Override + public void initEvent() { + mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { + @Override + public boolean onSingleTapConfirmed(MotionEvent e) { + android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); + Point clickPoint = mapView.screenToLocation(screenPoint); + if (geometryList.size() > 0) { + List tempList = new ArrayList<>(); + for (WellDetailBean.FeaturesBean featuresBean : geometryList) { + WellDetailBean.FeaturesBean.GeometryBean dataBean = featuresBean.getGeometry(); + if (Math.abs(dataBean.getX() - clickPoint.getX()) <= 10 * Constant.DELTA_LNG_10 && + Math.abs(dataBean.getY() - clickPoint.getY()) <= 10 * Constant.DELTA_LNG_10) { + tempList.add(featuresBean); + } + } + if (tempList.size() > 0) { + QMUIDialog.MenuDialogBuilder menuDialogBuilder = new QMUIDialog.MenuDialogBuilder(context); + menuDialogBuilder.setTitle("请选择您要查看的窨井"); + for (WellDetailBean.FeaturesBean dataBean : tempList) { + menuDialogBuilder.addItem(dataBean.getAttributes().get编号(), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + + View popupView = LayoutInflater.from(context).inflate(R.layout.popu_well, null); + TextView wellCodeView = popupView.findViewById(R.id.wellCodeView); + TextView wellTypeView = popupView.findViewById(R.id.wellTypeView); + TextView wellPositionView = popupView.findViewById(R.id.wellPositionView); + + WellDetailBean.FeaturesBean.AttributesBean attributes = dataBean.getAttributes(); + wellCodeView.setText(attributes.get编号()); + wellTypeView.setText(attributes.get附属物名称()); + wellPositionView.setText(attributes.get所属道路()); + + QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 290)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapView); + } + }); + } + menuDialogBuilder.create().show(); + } + } + return super.onSingleTapConfirmed(e); + } + }); + } + + @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.expandMapView: + mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); + break; + case R.id.minusMapView: + mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); + break; + default: + break; + } + } + + protected void onResume() { + super.onResume(); + mapView.resume(); + } + + @Override + protected void onPause() { + super.onPause(); + mapView.pause(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + mapView.dispose(); + if (alarmListPresenter != null) { + alarmListPresenter.disposeRetrofitRequest(); + } + if (detailPresenter != null) { + detailPresenter.disposeRetrofitRequest(); + } + } + + @Override + public void obtainAlarmResult(AlarmDataBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + for (AlarmDataBean.DataBean.RowsBean rowsBean : dataRows) { + String queryParam = "编号='" + rowsBean.getWellCode() + "'"; + detailPresenter.onReadyRetrofitRequest(queryParam); + } + } + } + + @Override + public void obtainWellDetailResult(WellDetailBean resultBean) { + List features = resultBean.getFeatures(); + if (features.size() > 0) { + WellDetailBean.FeaturesBean featuresBean = features.get(0); + //将获取到的井数据缓存起来 + geometryList.add(featuresBean); + WellDetailBean.FeaturesBean.GeometryBean geometryBean = featuresBean.getGeometry(); + //每获取一个点就绘制出 + addMarker(new Point(geometryBean.getX(), geometryBean.getY())); + } + } + + private void addMarker(Point point) { + SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 10); + Graphic graphic = new Graphic(point, simpleMarkerSymbol); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index b3fbd7b..e8cd7d5 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -87,9 +87,11 @@ public static final String BASE_MAP_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 public static final String BASE_MAP_NO_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 public static final String COMPONENT_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 + public static final String WELL_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer";//崇仁窨井图层 //正式环境 // public static final String BASE_MAP_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 // public static final String BASE_MAP_NO_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 // public static final String COMPONENT_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 +// public static final String WELL_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer";//崇仁窨井图层 } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 16a9d4c..f70d101 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -35,6 +35,7 @@ import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; import com.casic.dcms.bean.UserBean; +import com.casic.dcms.bean.WellDetailBean; import com.casic.dcms.bean.WellListBean; import java.util.List; @@ -768,4 +769,17 @@ @POST("/smartwell/well/batchBfcf") Observable optionWellStatus(@Header("token") String token, @Field("bfzt") String bfzt); + + /** + * 井详情 + *

+ * http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer/0/query?f=json&inSr=4326&outSR=4326&outFields=*&returnGeometry=true&where=编号='GX_WSD_4107_HLDD154' + */ + @GET("/arcgis/rest/services/fsw/MapServer/0/query") + Observable obtainWellDetail(@Query("f") String f, + @Query("inSr") String inSr, + @Query("outSR") String outSR, + @Query("outFields") String outFields, + @Query("returnGeometry") boolean returnGeometry, + @Query("where") String where); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 7c3705f..32a93a1 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -37,6 +37,7 @@ import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; import com.casic.dcms.bean.UserBean; +import com.casic.dcms.bean.WellDetailBean; import com.casic.dcms.bean.WellListBean; import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.Constant; @@ -724,10 +725,10 @@ /** * 报警列表 */ - public static Observable getAlarmListResult(int offset) { + public static Observable getAlarmListResult(int limit, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainAlarmList(AuthenticationHelper.getToken(), "1", Constant.PAGE_LIMIT, offset); + return service.obtainAlarmList(AuthenticationHelper.getToken(), "1", limit, offset); } /** @@ -754,7 +755,8 @@ public static Observable getWellListResult(int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainWellList(AuthenticationHelper.getToken(), "wellCode", "asc", Constant.PAGE_LIMIT, offset); + return service.obtainWellList(AuthenticationHelper.getToken(), "wellCode", "asc", + Constant.PAGE_LIMIT, offset); } /** @@ -776,14 +778,17 @@ } /** - * 测试别的端口数据,永远放最后面 + * 报警窨井详情 */ - private static Retrofit createTestRetrofit() { - return new Retrofit.Builder() - .baseUrl("http://111.198.10.15:11643") + public static Observable getWellDetailResult(String where) { + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://111.198.10.15:13002") .addConverterFactory(GsonConverterFactory.create())//Gson转换器 .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .client(createOKHttpClient())//log拦截器 .build(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWellDetail("json", "4326", "4326", "*", + true, where); } } diff --git a/app/src/main/res/drawable/dash_white_line.xml b/app/src/main/res/drawable/dash_white_line.xml new file mode 100644 index 0000000..d9f7330 --- /dev/null +++ b/app/src/main/res/drawable/dash_white_line.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_dot_off.xml b/app/src/main/res/drawable/ic_dot_off.xml deleted file mode 100644 index 859e9ca..0000000 --- a/app/src/main/res/drawable/ic_dot_off.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dot_on.xml b/app/src/main/res/drawable/ic_dot_on.xml deleted file mode 100644 index 0b0bd97..0000000 --- a/app/src/main/res/drawable/ic_dot_on.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dot_warning.xml b/app/src/main/res/drawable/ic_dot_warning.xml deleted file mode 100644 index dadb908..0000000 --- a/app/src/main/res/drawable/ic_dot_warning.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/layout/activity_map_warning.xml b/app/src/main/res/layout/activity_map_warning.xml new file mode 100644 index 0000000..f835f9e --- /dev/null +++ b/app/src/main/res/layout/activity_map_warning.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_pipe_map.xml b/app/src/main/res/layout/fragment_pipe_map.xml deleted file mode 100644 index e4babdb..0000000 --- a/app/src/main/res/layout/fragment_pipe_map.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index febcd02..f845c47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -95,6 +95,7 @@ + fields; + private List features; + + public String getDisplayFieldName() { + return displayFieldName; + } + + public void setDisplayFieldName(String displayFieldName) { + this.displayFieldName = displayFieldName; + } + + public FieldAliasesBean getFieldAliases() { + return fieldAliases; + } + + public void setFieldAliases(FieldAliasesBean fieldAliases) { + this.fieldAliases = fieldAliases; + } + + public String getGeometryType() { + return geometryType; + } + + public void setGeometryType(String geometryType) { + this.geometryType = geometryType; + } + + public SpatialReferenceBean getSpatialReference() { + return spatialReference; + } + + public void setSpatialReference(SpatialReferenceBean spatialReference) { + this.spatialReference = spatialReference; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public List getFeatures() { + return features; + } + + public void setFeatures(List features) { + this.features = features; + } + + public static class FieldAliasesBean { + + private String objectid; + private String 编号; + private String 附属物编码; + private String 地面高程; + private String x坐标; + private String y坐标; + private String 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private String jd; + private String wd; + + public String getObjectid() { + return objectid; + } + + public void setObjectid(String objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public String get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(String 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public String get地面高程() { + return 地面高程; + } + + public void set地面高程(String 地面高程) { + this.地面高程 = 地面高程; + } + + public String getX坐标() { + return x坐标; + } + + public void setX坐标(String x坐标) { + this.x坐标 = x坐标; + } + + public String getY坐标() { + return y坐标; + } + + public void setY坐标(String y坐标) { + this.y坐标 = y坐标; + } + + public String get井深() { + return 井深; + } + + public void set井深(String 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public String getJd() { + return jd; + } + + public void setJd(String jd) { + this.jd = jd; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + } + + public static class SpatialReferenceBean { + + private int wkid; + private int latestWkid; + + public int getWkid() { + return wkid; + } + + public void setWkid(int wkid) { + this.wkid = wkid; + } + + public int getLatestWkid() { + return latestWkid; + } + + public void setLatestWkid(int latestWkid) { + this.latestWkid = latestWkid; + } + } + + public static class FieldsBean { + + private String name; + private String type; + private String alias; + private int length; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + } + + public static class FeaturesBean { + + private AttributesBean attributes; + private GeometryBean geometry; + + public AttributesBean getAttributes() { + return attributes; + } + + public void setAttributes(AttributesBean attributes) { + this.attributes = attributes; + } + + public GeometryBean getGeometry() { + return geometry; + } + + public void setGeometry(GeometryBean geometry) { + this.geometry = geometry; + } + + public static class AttributesBean { + /** + * objectid : 3984 + * 编号 : GX_WSD_4107_HLDD150 + * 附属物编码 : 4107 + * 地面高程 : 59.462 + * x坐标 : 3071874.507 + * y坐标 : 408323.999 + * 井深 : 2.72 + * 附属物名称 : 污水井 + * 所属道路 : 活力大道 + * 建设年代 : + * 权属单位 : + * 备注 : + * jd : 116.070072 + * wd : 27.757135 + */ + + private int objectid; + private String 编号; + private int 附属物编码; + private double 地面高程; + private double x坐标; + private double y坐标; + private double 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private double jd; + private double wd; + + public int getObjectid() { + return objectid; + } + + public void setObjectid(int objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public int get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(int 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public double get地面高程() { + return 地面高程; + } + + public void set地面高程(double 地面高程) { + this.地面高程 = 地面高程; + } + + public double getX坐标() { + return x坐标; + } + + public void setX坐标(double x坐标) { + this.x坐标 = x坐标; + } + + public double getY坐标() { + return y坐标; + } + + public void setY坐标(double y坐标) { + this.y坐标 = y坐标; + } + + public double get井深() { + return 井深; + } + + public void set井深(double 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public double getJd() { + return jd; + } + + public void setJd(double jd) { + this.jd = jd; + } + + public double getWd() { + return wd; + } + + public void setWd(double wd) { + this.wd = wd; + } + } + + public static class GeometryBean { + /** + * x : 116.07007205499997 + * y : 27.757134534999977 + */ + + private double x; + private double y; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java index 5f5b8a9..1117853 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java @@ -24,8 +24,8 @@ } @Override - public Subscription sendRetrofitRequest(int offset) { - Observable observable = RetrofitServiceManager.getAlarmListResult(offset); + public Subscription sendRetrofitRequest(int limit,int offset) { + Observable observable = RetrofitServiceManager.getAlarmListResult(limit, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java index fc8b4ce..d9f08dc 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java @@ -3,5 +3,5 @@ import rx.Subscription; public interface IAlarmListModel { - Subscription sendRetrofitRequest(int offset); + Subscription sendRetrofitRequest(int limit,int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java new file mode 100644 index 0000000..1db090e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IWellDetailModel { + Subscription sendRetrofitRequest(String where); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java new file mode 100644 index 0000000..f9e7a3e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class WellDetailModelImpl implements IWellDetailModel { + + private OnGetDetailListener listener; + + public WellDetailModelImpl(OnGetDetailListener listListener) { + this.listener = listListener; + } + + public interface OnGetDetailListener { + void onSuccess(WellDetailBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String where) { + Observable observable = RetrofitServiceManager.getWellDetailResult(where); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(WellDetailBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java index 624715b..1851e54 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java @@ -16,8 +16,8 @@ } @Override - public void onReadyRetrofitRequest(int offset) { - addSubscription(model.sendRetrofitRequest(offset)); + public void onReadyRetrofitRequest(int limit, int offset) { + addSubscription(model.sendRetrofitRequest(limit, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java index 550deec..2408f94 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java @@ -1,7 +1,7 @@ package com.casic.dcms.mvp.presenter; public interface IAlarmListPresenter { - void onReadyRetrofitRequest(int offset); + void onReadyRetrofitRequest(int limit,int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java new file mode 100644 index 0000000..e968509 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IWellDetailPresenter { + void onReadyRetrofitRequest(String where); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java new file mode 100644 index 0000000..1a123f1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.WellDetailModelImpl; +import com.casic.dcms.mvp.view.IWellDetailView; + +public class WellDetailPresenterImpl extends BasePresenter implements IWellDetailPresenter, WellDetailModelImpl.OnGetDetailListener { + + private IWellDetailView view; + private WellDetailModelImpl actionModel; + + public WellDetailPresenterImpl(IWellDetailView detailView) { + this.view = detailView; + actionModel = new WellDetailModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String where) { + addSubscription(actionModel.sendRetrofitRequest(where)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(WellDetailBean resultBean) { + view.obtainWellDetailResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java new file mode 100644 index 0000000..2d01903 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.WellDetailBean; + +public interface IWellDetailView { + void obtainWellDetailResult(WellDetailBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java index b1b7352..a58662d 100644 --- a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java @@ -27,6 +27,7 @@ import com.casic.dcms.mvp.view.ICancelAlarmView; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.CancelAlarmDialog; @@ -105,7 +106,7 @@ showBatchCancelDialog(); break; case 1: - + startActivity(new Intent(context, WarningOnMapActivity.class)); break; case 2: startActivity(new Intent(context, WellListActivity.class)); @@ -123,7 +124,7 @@ @Override public void initData() { alarmListPresenter = new AlarmListPresenterImpl(this); - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); weakReferenceHandler = new WeakReferenceHandler(this); @@ -138,7 +139,7 @@ isRefresh = true; //刷新之后页码重置 pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -146,7 +147,7 @@ public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { isLoadMore = true; pageIndex++; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); } @@ -231,7 +232,7 @@ //取消成功之后自动刷新列表 isRefresh = true; pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } else { ToastHelper.showToast("操作失败,请重试", ToastHelper.ERROR); } @@ -240,6 +241,7 @@ @Override public void obtainAlarmResult(AlarmDataBean resultBean) { if (resultBean.isSuccess()) { + SaveKeyValues.putValue("alarmTotal", resultBean.getData().getTotal()); List dataRows = resultBean.getData().getRows(); if (isRefresh) { dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 diff --git a/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java new file mode 100644 index 0000000..b318fe0 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java @@ -0,0 +1,221 @@ +package com.casic.dcms.ui; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.DialogInterface; +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.AlarmDataBean; +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.presenter.AlarmListPresenterImpl; +import com.casic.dcms.mvp.presenter.WellDetailPresenterImpl; +import com.casic.dcms.mvp.view.IAlarmListView; +import com.casic.dcms.mvp.view.IWellDetailView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.SaveKeyValues; +import com.esri.arcgisruntime.geometry.Point; +import com.esri.arcgisruntime.layers.ArcGISTiledLayer; +import com.esri.arcgisruntime.mapping.ArcGISMap; +import com.esri.arcgisruntime.mapping.Basemap; +import com.esri.arcgisruntime.mapping.BasemapStyle; +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; +import com.esri.arcgisruntime.mapping.view.Graphic; +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; +import com.esri.arcgisruntime.mapping.view.MapView; +import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol; +import com.esri.arcgisruntime.util.ListenableList; +import com.qmuiteam.qmui.util.QMUIDisplayHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.popup.QMUIPopup; +import com.qmuiteam.qmui.widget.popup.QMUIPopups; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class WarningOnMapActivity extends BaseActivity implements View.OnClickListener, IAlarmListView, + IWellDetailView { + + private static final String TAG = "WarningOnMapActivity"; + private Context context = this; + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.mapView) + MapView mapView; + + private AlarmListPresenterImpl alarmListPresenter; + private WellDetailPresenterImpl detailPresenter; + private List geometryList = new ArrayList<>(); + + @Override + public int initLayoutView() { + return R.layout.activity_map_warning; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("报警分布").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mapView.setAttributionTextVisible(false);//去掉左下角属性标识 + mapView.setViewpointScaleAsync(64000); + ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); + //创建底图、并设置底图图层 + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); + Basemap basemap = new Basemap(baseLayer); + arcGISMap.setBasemap(basemap); + mapView.setMap(arcGISMap); + + int alarmTotal = (int) SaveKeyValues.getValue("alarmTotal", Constant.PAGE_LIMIT); + alarmListPresenter = new AlarmListPresenterImpl(this); + alarmListPresenter.onReadyRetrofitRequest(alarmTotal, 1); + detailPresenter = new WellDetailPresenterImpl(this); + } + + @SuppressLint("ClickableViewAccessibility") + @Override + public void initEvent() { + mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { + @Override + public boolean onSingleTapConfirmed(MotionEvent e) { + android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); + Point clickPoint = mapView.screenToLocation(screenPoint); + if (geometryList.size() > 0) { + List tempList = new ArrayList<>(); + for (WellDetailBean.FeaturesBean featuresBean : geometryList) { + WellDetailBean.FeaturesBean.GeometryBean dataBean = featuresBean.getGeometry(); + if (Math.abs(dataBean.getX() - clickPoint.getX()) <= 10 * Constant.DELTA_LNG_10 && + Math.abs(dataBean.getY() - clickPoint.getY()) <= 10 * Constant.DELTA_LNG_10) { + tempList.add(featuresBean); + } + } + if (tempList.size() > 0) { + QMUIDialog.MenuDialogBuilder menuDialogBuilder = new QMUIDialog.MenuDialogBuilder(context); + menuDialogBuilder.setTitle("请选择您要查看的窨井"); + for (WellDetailBean.FeaturesBean dataBean : tempList) { + menuDialogBuilder.addItem(dataBean.getAttributes().get编号(), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + + View popupView = LayoutInflater.from(context).inflate(R.layout.popu_well, null); + TextView wellCodeView = popupView.findViewById(R.id.wellCodeView); + TextView wellTypeView = popupView.findViewById(R.id.wellTypeView); + TextView wellPositionView = popupView.findViewById(R.id.wellPositionView); + + WellDetailBean.FeaturesBean.AttributesBean attributes = dataBean.getAttributes(); + wellCodeView.setText(attributes.get编号()); + wellTypeView.setText(attributes.get附属物名称()); + wellPositionView.setText(attributes.get所属道路()); + + QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 290)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapView); + } + }); + } + menuDialogBuilder.create().show(); + } + } + return super.onSingleTapConfirmed(e); + } + }); + } + + @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.expandMapView: + mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); + break; + case R.id.minusMapView: + mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); + break; + default: + break; + } + } + + protected void onResume() { + super.onResume(); + mapView.resume(); + } + + @Override + protected void onPause() { + super.onPause(); + mapView.pause(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + mapView.dispose(); + if (alarmListPresenter != null) { + alarmListPresenter.disposeRetrofitRequest(); + } + if (detailPresenter != null) { + detailPresenter.disposeRetrofitRequest(); + } + } + + @Override + public void obtainAlarmResult(AlarmDataBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + for (AlarmDataBean.DataBean.RowsBean rowsBean : dataRows) { + String queryParam = "编号='" + rowsBean.getWellCode() + "'"; + detailPresenter.onReadyRetrofitRequest(queryParam); + } + } + } + + @Override + public void obtainWellDetailResult(WellDetailBean resultBean) { + List features = resultBean.getFeatures(); + if (features.size() > 0) { + WellDetailBean.FeaturesBean featuresBean = features.get(0); + //将获取到的井数据缓存起来 + geometryList.add(featuresBean); + WellDetailBean.FeaturesBean.GeometryBean geometryBean = featuresBean.getGeometry(); + //每获取一个点就绘制出 + addMarker(new Point(geometryBean.getX(), geometryBean.getY())); + } + } + + private void addMarker(Point point) { + SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 10); + Graphic graphic = new Graphic(point, simpleMarkerSymbol); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index b3fbd7b..e8cd7d5 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -87,9 +87,11 @@ public static final String BASE_MAP_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 public static final String BASE_MAP_NO_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 public static final String COMPONENT_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 + public static final String WELL_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer";//崇仁窨井图层 //正式环境 // public static final String BASE_MAP_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 // public static final String BASE_MAP_NO_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 // public static final String COMPONENT_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 +// public static final String WELL_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer";//崇仁窨井图层 } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 16a9d4c..f70d101 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -35,6 +35,7 @@ import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; import com.casic.dcms.bean.UserBean; +import com.casic.dcms.bean.WellDetailBean; import com.casic.dcms.bean.WellListBean; import java.util.List; @@ -768,4 +769,17 @@ @POST("/smartwell/well/batchBfcf") Observable optionWellStatus(@Header("token") String token, @Field("bfzt") String bfzt); + + /** + * 井详情 + *

+ * http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer/0/query?f=json&inSr=4326&outSR=4326&outFields=*&returnGeometry=true&where=编号='GX_WSD_4107_HLDD154' + */ + @GET("/arcgis/rest/services/fsw/MapServer/0/query") + Observable obtainWellDetail(@Query("f") String f, + @Query("inSr") String inSr, + @Query("outSR") String outSR, + @Query("outFields") String outFields, + @Query("returnGeometry") boolean returnGeometry, + @Query("where") String where); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 7c3705f..32a93a1 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -37,6 +37,7 @@ import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; import com.casic.dcms.bean.UserBean; +import com.casic.dcms.bean.WellDetailBean; import com.casic.dcms.bean.WellListBean; import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.Constant; @@ -724,10 +725,10 @@ /** * 报警列表 */ - public static Observable getAlarmListResult(int offset) { + public static Observable getAlarmListResult(int limit, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainAlarmList(AuthenticationHelper.getToken(), "1", Constant.PAGE_LIMIT, offset); + return service.obtainAlarmList(AuthenticationHelper.getToken(), "1", limit, offset); } /** @@ -754,7 +755,8 @@ public static Observable getWellListResult(int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainWellList(AuthenticationHelper.getToken(), "wellCode", "asc", Constant.PAGE_LIMIT, offset); + return service.obtainWellList(AuthenticationHelper.getToken(), "wellCode", "asc", + Constant.PAGE_LIMIT, offset); } /** @@ -776,14 +778,17 @@ } /** - * 测试别的端口数据,永远放最后面 + * 报警窨井详情 */ - private static Retrofit createTestRetrofit() { - return new Retrofit.Builder() - .baseUrl("http://111.198.10.15:11643") + public static Observable getWellDetailResult(String where) { + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://111.198.10.15:13002") .addConverterFactory(GsonConverterFactory.create())//Gson转换器 .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .client(createOKHttpClient())//log拦截器 .build(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWellDetail("json", "4326", "4326", "*", + true, where); } } diff --git a/app/src/main/res/drawable/dash_white_line.xml b/app/src/main/res/drawable/dash_white_line.xml new file mode 100644 index 0000000..d9f7330 --- /dev/null +++ b/app/src/main/res/drawable/dash_white_line.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_dot_off.xml b/app/src/main/res/drawable/ic_dot_off.xml deleted file mode 100644 index 859e9ca..0000000 --- a/app/src/main/res/drawable/ic_dot_off.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dot_on.xml b/app/src/main/res/drawable/ic_dot_on.xml deleted file mode 100644 index 0b0bd97..0000000 --- a/app/src/main/res/drawable/ic_dot_on.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dot_warning.xml b/app/src/main/res/drawable/ic_dot_warning.xml deleted file mode 100644 index dadb908..0000000 --- a/app/src/main/res/drawable/ic_dot_warning.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/layout/activity_map_warning.xml b/app/src/main/res/layout/activity_map_warning.xml new file mode 100644 index 0000000..f835f9e --- /dev/null +++ b/app/src/main/res/layout/activity_map_warning.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_pipe_map.xml b/app/src/main/res/layout/fragment_pipe_map.xml deleted file mode 100644 index e4babdb..0000000 --- a/app/src/main/res/layout/fragment_pipe_map.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/popu_well.xml b/app/src/main/res/layout/popu_well.xml new file mode 100644 index 0000000..97e5d00 --- /dev/null +++ b/app/src/main/res/layout/popu_well.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index febcd02..f845c47 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -95,6 +95,7 @@ + fields; + private List features; + + public String getDisplayFieldName() { + return displayFieldName; + } + + public void setDisplayFieldName(String displayFieldName) { + this.displayFieldName = displayFieldName; + } + + public FieldAliasesBean getFieldAliases() { + return fieldAliases; + } + + public void setFieldAliases(FieldAliasesBean fieldAliases) { + this.fieldAliases = fieldAliases; + } + + public String getGeometryType() { + return geometryType; + } + + public void setGeometryType(String geometryType) { + this.geometryType = geometryType; + } + + public SpatialReferenceBean getSpatialReference() { + return spatialReference; + } + + public void setSpatialReference(SpatialReferenceBean spatialReference) { + this.spatialReference = spatialReference; + } + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public List getFeatures() { + return features; + } + + public void setFeatures(List features) { + this.features = features; + } + + public static class FieldAliasesBean { + + private String objectid; + private String 编号; + private String 附属物编码; + private String 地面高程; + private String x坐标; + private String y坐标; + private String 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private String jd; + private String wd; + + public String getObjectid() { + return objectid; + } + + public void setObjectid(String objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public String get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(String 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public String get地面高程() { + return 地面高程; + } + + public void set地面高程(String 地面高程) { + this.地面高程 = 地面高程; + } + + public String getX坐标() { + return x坐标; + } + + public void setX坐标(String x坐标) { + this.x坐标 = x坐标; + } + + public String getY坐标() { + return y坐标; + } + + public void setY坐标(String y坐标) { + this.y坐标 = y坐标; + } + + public String get井深() { + return 井深; + } + + public void set井深(String 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public String getJd() { + return jd; + } + + public void setJd(String jd) { + this.jd = jd; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + } + + public static class SpatialReferenceBean { + + private int wkid; + private int latestWkid; + + public int getWkid() { + return wkid; + } + + public void setWkid(int wkid) { + this.wkid = wkid; + } + + public int getLatestWkid() { + return latestWkid; + } + + public void setLatestWkid(int latestWkid) { + this.latestWkid = latestWkid; + } + } + + public static class FieldsBean { + + private String name; + private String type; + private String alias; + private int length; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getAlias() { + return alias; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + } + + public static class FeaturesBean { + + private AttributesBean attributes; + private GeometryBean geometry; + + public AttributesBean getAttributes() { + return attributes; + } + + public void setAttributes(AttributesBean attributes) { + this.attributes = attributes; + } + + public GeometryBean getGeometry() { + return geometry; + } + + public void setGeometry(GeometryBean geometry) { + this.geometry = geometry; + } + + public static class AttributesBean { + /** + * objectid : 3984 + * 编号 : GX_WSD_4107_HLDD150 + * 附属物编码 : 4107 + * 地面高程 : 59.462 + * x坐标 : 3071874.507 + * y坐标 : 408323.999 + * 井深 : 2.72 + * 附属物名称 : 污水井 + * 所属道路 : 活力大道 + * 建设年代 : + * 权属单位 : + * 备注 : + * jd : 116.070072 + * wd : 27.757135 + */ + + private int objectid; + private String 编号; + private int 附属物编码; + private double 地面高程; + private double x坐标; + private double y坐标; + private double 井深; + private String 附属物名称; + private String 所属道路; + private String 建设年代; + private String 权属单位; + private String 备注; + private double jd; + private double wd; + + public int getObjectid() { + return objectid; + } + + public void setObjectid(int objectid) { + this.objectid = objectid; + } + + public String get编号() { + return 编号; + } + + public void set编号(String 编号) { + this.编号 = 编号; + } + + public int get附属物编码() { + return 附属物编码; + } + + public void set附属物编码(int 附属物编码) { + this.附属物编码 = 附属物编码; + } + + public double get地面高程() { + return 地面高程; + } + + public void set地面高程(double 地面高程) { + this.地面高程 = 地面高程; + } + + public double getX坐标() { + return x坐标; + } + + public void setX坐标(double x坐标) { + this.x坐标 = x坐标; + } + + public double getY坐标() { + return y坐标; + } + + public void setY坐标(double y坐标) { + this.y坐标 = y坐标; + } + + public double get井深() { + return 井深; + } + + public void set井深(double 井深) { + this.井深 = 井深; + } + + public String get附属物名称() { + return 附属物名称; + } + + public void set附属物名称(String 附属物名称) { + this.附属物名称 = 附属物名称; + } + + public String get所属道路() { + return 所属道路; + } + + public void set所属道路(String 所属道路) { + this.所属道路 = 所属道路; + } + + public String get建设年代() { + return 建设年代; + } + + public void set建设年代(String 建设年代) { + this.建设年代 = 建设年代; + } + + public String get权属单位() { + return 权属单位; + } + + public void set权属单位(String 权属单位) { + this.权属单位 = 权属单位; + } + + public String get备注() { + return 备注; + } + + public void set备注(String 备注) { + this.备注 = 备注; + } + + public double getJd() { + return jd; + } + + public void setJd(double jd) { + this.jd = jd; + } + + public double getWd() { + return wd; + } + + public void setWd(double wd) { + this.wd = wd; + } + } + + public static class GeometryBean { + /** + * x : 116.07007205499997 + * y : 27.757134534999977 + */ + + private double x; + private double y; + + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java index 5f5b8a9..1117853 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/AlarmListModelImpl.java @@ -24,8 +24,8 @@ } @Override - public Subscription sendRetrofitRequest(int offset) { - Observable observable = RetrofitServiceManager.getAlarmListResult(offset); + public Subscription sendRetrofitRequest(int limit,int offset) { + Observable observable = RetrofitServiceManager.getAlarmListResult(limit, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java index fc8b4ce..d9f08dc 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/IAlarmListModel.java @@ -3,5 +3,5 @@ import rx.Subscription; public interface IAlarmListModel { - Subscription sendRetrofitRequest(int offset); + Subscription sendRetrofitRequest(int limit,int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java new file mode 100644 index 0000000..1db090e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IWellDetailModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IWellDetailModel { + Subscription sendRetrofitRequest(String where); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java new file mode 100644 index 0000000..f9e7a3e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/WellDetailModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class WellDetailModelImpl implements IWellDetailModel { + + private OnGetDetailListener listener; + + public WellDetailModelImpl(OnGetDetailListener listListener) { + this.listener = listListener; + } + + public interface OnGetDetailListener { + void onSuccess(WellDetailBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String where) { + Observable observable = RetrofitServiceManager.getWellDetailResult(where); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(WellDetailBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java index 624715b..1851e54 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/AlarmListPresenterImpl.java @@ -16,8 +16,8 @@ } @Override - public void onReadyRetrofitRequest(int offset) { - addSubscription(model.sendRetrofitRequest(offset)); + public void onReadyRetrofitRequest(int limit, int offset) { + addSubscription(model.sendRetrofitRequest(limit, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java index 550deec..2408f94 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IAlarmListPresenter.java @@ -1,7 +1,7 @@ package com.casic.dcms.mvp.presenter; public interface IAlarmListPresenter { - void onReadyRetrofitRequest(int offset); + void onReadyRetrofitRequest(int limit,int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java new file mode 100644 index 0000000..e968509 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IWellDetailPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IWellDetailPresenter { + void onReadyRetrofitRequest(String where); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java new file mode 100644 index 0000000..1a123f1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/WellDetailPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.WellDetailModelImpl; +import com.casic.dcms.mvp.view.IWellDetailView; + +public class WellDetailPresenterImpl extends BasePresenter implements IWellDetailPresenter, WellDetailModelImpl.OnGetDetailListener { + + private IWellDetailView view; + private WellDetailModelImpl actionModel; + + public WellDetailPresenterImpl(IWellDetailView detailView) { + this.view = detailView; + actionModel = new WellDetailModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String where) { + addSubscription(actionModel.sendRetrofitRequest(where)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(WellDetailBean resultBean) { + view.obtainWellDetailResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java new file mode 100644 index 0000000..2d01903 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IWellDetailView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.WellDetailBean; + +public interface IWellDetailView { + void obtainWellDetailResult(WellDetailBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java index b1b7352..a58662d 100644 --- a/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PipelineManagerActivity.java @@ -27,6 +27,7 @@ import com.casic.dcms.mvp.view.ICancelAlarmView; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.CancelAlarmDialog; @@ -105,7 +106,7 @@ showBatchCancelDialog(); break; case 1: - + startActivity(new Intent(context, WarningOnMapActivity.class)); break; case 2: startActivity(new Intent(context, WellListActivity.class)); @@ -123,7 +124,7 @@ @Override public void initData() { alarmListPresenter = new AlarmListPresenterImpl(this); - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); weakReferenceHandler = new WeakReferenceHandler(this); @@ -138,7 +139,7 @@ isRefresh = true; //刷新之后页码重置 pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -146,7 +147,7 @@ public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { isLoadMore = true; pageIndex++; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } }); } @@ -231,7 +232,7 @@ //取消成功之后自动刷新列表 isRefresh = true; pageIndex = 1; - alarmListPresenter.onReadyRetrofitRequest(pageIndex); + alarmListPresenter.onReadyRetrofitRequest(Constant.PAGE_LIMIT, pageIndex); } else { ToastHelper.showToast("操作失败,请重试", ToastHelper.ERROR); } @@ -240,6 +241,7 @@ @Override public void obtainAlarmResult(AlarmDataBean resultBean) { if (resultBean.isSuccess()) { + SaveKeyValues.putValue("alarmTotal", resultBean.getData().getTotal()); List dataRows = resultBean.getData().getRows(); if (isRefresh) { dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 diff --git a/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java new file mode 100644 index 0000000..b318fe0 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/WarningOnMapActivity.java @@ -0,0 +1,221 @@ +package com.casic.dcms.ui; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.DialogInterface; +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.AlarmDataBean; +import com.casic.dcms.bean.WellDetailBean; +import com.casic.dcms.mvp.presenter.AlarmListPresenterImpl; +import com.casic.dcms.mvp.presenter.WellDetailPresenterImpl; +import com.casic.dcms.mvp.view.IAlarmListView; +import com.casic.dcms.mvp.view.IWellDetailView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.SaveKeyValues; +import com.esri.arcgisruntime.geometry.Point; +import com.esri.arcgisruntime.layers.ArcGISTiledLayer; +import com.esri.arcgisruntime.mapping.ArcGISMap; +import com.esri.arcgisruntime.mapping.Basemap; +import com.esri.arcgisruntime.mapping.BasemapStyle; +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; +import com.esri.arcgisruntime.mapping.view.Graphic; +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; +import com.esri.arcgisruntime.mapping.view.MapView; +import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol; +import com.esri.arcgisruntime.util.ListenableList; +import com.qmuiteam.qmui.util.QMUIDisplayHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUIDialog; +import com.qmuiteam.qmui.widget.popup.QMUIPopup; +import com.qmuiteam.qmui.widget.popup.QMUIPopups; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class WarningOnMapActivity extends BaseActivity implements View.OnClickListener, IAlarmListView, + IWellDetailView { + + private static final String TAG = "WarningOnMapActivity"; + private Context context = this; + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.mapView) + MapView mapView; + + private AlarmListPresenterImpl alarmListPresenter; + private WellDetailPresenterImpl detailPresenter; + private List geometryList = new ArrayList<>(); + + @Override + public int initLayoutView() { + return R.layout.activity_map_warning; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("报警分布").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mapView.setAttributionTextVisible(false);//去掉左下角属性标识 + mapView.setViewpointScaleAsync(64000); + ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); + //创建底图、并设置底图图层 + ArcGISTiledLayer baseLayer = new ArcGISTiledLayer(Constant.BASE_MAP_NO_SERVICE_URL); + Basemap basemap = new Basemap(baseLayer); + arcGISMap.setBasemap(basemap); + mapView.setMap(arcGISMap); + + int alarmTotal = (int) SaveKeyValues.getValue("alarmTotal", Constant.PAGE_LIMIT); + alarmListPresenter = new AlarmListPresenterImpl(this); + alarmListPresenter.onReadyRetrofitRequest(alarmTotal, 1); + detailPresenter = new WellDetailPresenterImpl(this); + } + + @SuppressLint("ClickableViewAccessibility") + @Override + public void initEvent() { + mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { + @Override + public boolean onSingleTapConfirmed(MotionEvent e) { + android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); + Point clickPoint = mapView.screenToLocation(screenPoint); + if (geometryList.size() > 0) { + List tempList = new ArrayList<>(); + for (WellDetailBean.FeaturesBean featuresBean : geometryList) { + WellDetailBean.FeaturesBean.GeometryBean dataBean = featuresBean.getGeometry(); + if (Math.abs(dataBean.getX() - clickPoint.getX()) <= 10 * Constant.DELTA_LNG_10 && + Math.abs(dataBean.getY() - clickPoint.getY()) <= 10 * Constant.DELTA_LNG_10) { + tempList.add(featuresBean); + } + } + if (tempList.size() > 0) { + QMUIDialog.MenuDialogBuilder menuDialogBuilder = new QMUIDialog.MenuDialogBuilder(context); + menuDialogBuilder.setTitle("请选择您要查看的窨井"); + for (WellDetailBean.FeaturesBean dataBean : tempList) { + menuDialogBuilder.addItem(dataBean.getAttributes().get编号(), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + + View popupView = LayoutInflater.from(context).inflate(R.layout.popu_well, null); + TextView wellCodeView = popupView.findViewById(R.id.wellCodeView); + TextView wellTypeView = popupView.findViewById(R.id.wellTypeView); + TextView wellPositionView = popupView.findViewById(R.id.wellPositionView); + + WellDetailBean.FeaturesBean.AttributesBean attributes = dataBean.getAttributes(); + wellCodeView.setText(attributes.get编号()); + wellTypeView.setText(attributes.get附属物名称()); + wellPositionView.setText(attributes.get所属道路()); + + QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 290)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapView); + } + }); + } + menuDialogBuilder.create().show(); + } + } + return super.onSingleTapConfirmed(e); + } + }); + } + + @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.expandMapView: + mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); + break; + case R.id.minusMapView: + mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); + break; + default: + break; + } + } + + protected void onResume() { + super.onResume(); + mapView.resume(); + } + + @Override + protected void onPause() { + super.onPause(); + mapView.pause(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + mapView.dispose(); + if (alarmListPresenter != null) { + alarmListPresenter.disposeRetrofitRequest(); + } + if (detailPresenter != null) { + detailPresenter.disposeRetrofitRequest(); + } + } + + @Override + public void obtainAlarmResult(AlarmDataBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + for (AlarmDataBean.DataBean.RowsBean rowsBean : dataRows) { + String queryParam = "编号='" + rowsBean.getWellCode() + "'"; + detailPresenter.onReadyRetrofitRequest(queryParam); + } + } + } + + @Override + public void obtainWellDetailResult(WellDetailBean resultBean) { + List features = resultBean.getFeatures(); + if (features.size() > 0) { + WellDetailBean.FeaturesBean featuresBean = features.get(0); + //将获取到的井数据缓存起来 + geometryList.add(featuresBean); + WellDetailBean.FeaturesBean.GeometryBean geometryBean = featuresBean.getGeometry(); + //每获取一个点就绘制出 + addMarker(new Point(geometryBean.getX(), geometryBean.getY())); + } + } + + private void addMarker(Point point) { + SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 10); + Graphic graphic = new Graphic(point, simpleMarkerSymbol); + GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); + ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); + ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); + overlayGraphics.add(graphic); + graphicsOverlays.add(mGraphicsOverlay); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index b3fbd7b..e8cd7d5 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -87,9 +87,11 @@ public static final String BASE_MAP_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 public static final String BASE_MAP_NO_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 public static final String COMPONENT_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 + public static final String WELL_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer";//崇仁窨井图层 //正式环境 // public static final String BASE_MAP_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crdt/MapServer";//崇仁城管地图底图 // public static final String BASE_MAP_NO_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crdt_1/MapServer";//崇仁城管地图不带网格底图 // public static final String COMPONENT_SERVICE_URL = "http://223.82.47.232:11408/arcgis/rest/services/crbj/FeatureServer";//崇仁部件图层 +// public static final String WELL_SERVICE_URL = "http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer";//崇仁窨井图层 } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 16a9d4c..f70d101 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -35,6 +35,7 @@ import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; import com.casic.dcms.bean.UserBean; +import com.casic.dcms.bean.WellDetailBean; import com.casic.dcms.bean.WellListBean; import java.util.List; @@ -768,4 +769,17 @@ @POST("/smartwell/well/batchBfcf") Observable optionWellStatus(@Header("token") String token, @Field("bfzt") String bfzt); + + /** + * 井详情 + *

+ * http://111.198.10.15:13002/arcgis/rest/services/fsw/MapServer/0/query?f=json&inSr=4326&outSR=4326&outFields=*&returnGeometry=true&where=编号='GX_WSD_4107_HLDD154' + */ + @GET("/arcgis/rest/services/fsw/MapServer/0/query") + Observable obtainWellDetail(@Query("f") String f, + @Query("inSr") String inSr, + @Query("outSR") String outSR, + @Query("outFields") String outFields, + @Query("returnGeometry") boolean returnGeometry, + @Query("where") String where); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 7c3705f..32a93a1 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -37,6 +37,7 @@ import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; import com.casic.dcms.bean.UserBean; +import com.casic.dcms.bean.WellDetailBean; import com.casic.dcms.bean.WellListBean; import com.casic.dcms.utils.AuthenticationHelper; import com.casic.dcms.utils.Constant; @@ -724,10 +725,10 @@ /** * 报警列表 */ - public static Observable getAlarmListResult(int offset) { + public static Observable getAlarmListResult(int limit, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainAlarmList(AuthenticationHelper.getToken(), "1", Constant.PAGE_LIMIT, offset); + return service.obtainAlarmList(AuthenticationHelper.getToken(), "1", limit, offset); } /** @@ -754,7 +755,8 @@ public static Observable getWellListResult(int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainWellList(AuthenticationHelper.getToken(), "wellCode", "asc", Constant.PAGE_LIMIT, offset); + return service.obtainWellList(AuthenticationHelper.getToken(), "wellCode", "asc", + Constant.PAGE_LIMIT, offset); } /** @@ -776,14 +778,17 @@ } /** - * 测试别的端口数据,永远放最后面 + * 报警窨井详情 */ - private static Retrofit createTestRetrofit() { - return new Retrofit.Builder() - .baseUrl("http://111.198.10.15:11643") + public static Observable getWellDetailResult(String where) { + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://111.198.10.15:13002") .addConverterFactory(GsonConverterFactory.create())//Gson转换器 .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .client(createOKHttpClient())//log拦截器 .build(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWellDetail("json", "4326", "4326", "*", + true, where); } } diff --git a/app/src/main/res/drawable/dash_white_line.xml b/app/src/main/res/drawable/dash_white_line.xml new file mode 100644 index 0000000..d9f7330 --- /dev/null +++ b/app/src/main/res/drawable/dash_white_line.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_dot_off.xml b/app/src/main/res/drawable/ic_dot_off.xml deleted file mode 100644 index 859e9ca..0000000 --- a/app/src/main/res/drawable/ic_dot_off.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dot_on.xml b/app/src/main/res/drawable/ic_dot_on.xml deleted file mode 100644 index 0b0bd97..0000000 --- a/app/src/main/res/drawable/ic_dot_on.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_dot_warning.xml b/app/src/main/res/drawable/ic_dot_warning.xml deleted file mode 100644 index dadb908..0000000 --- a/app/src/main/res/drawable/ic_dot_warning.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/layout/activity_map_warning.xml b/app/src/main/res/layout/activity_map_warning.xml new file mode 100644 index 0000000..f835f9e --- /dev/null +++ b/app/src/main/res/layout/activity_map_warning.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_pipe_map.xml b/app/src/main/res/layout/fragment_pipe_map.xml deleted file mode 100644 index e4babdb..0000000 --- a/app/src/main/res/layout/fragment_pipe_map.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/popu_well.xml b/app/src/main/res/layout/popu_well.xml new file mode 100644 index 0000000..97e5d00 --- /dev/null +++ b/app/src/main/res/layout/popu_well.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 84e2be7..dd80917 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -4,7 +4,6 @@ #3700B3 #03DAC5 - #03AAC5 #FFFFFF #F5F5F5 #E5E5E5