diff --git a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java index 28c5abf..553776a 100644 --- a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java @@ -1,6 +1,7 @@ package com.casic.dcms.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -74,6 +75,9 @@ void bindView(CaseListResultBean.DataBean.RowsBean rowsBean) { String eorcName = rowsBean.getEorcName(); + if (TextUtils.isEmpty(eorcName)) { + eorcName = "未知"; + } leftTextView.setText(eorcName.substring(0, 1)); titleView.setText(rowsBean.getCasetypeName()); contentView.setText(rowsBean.getCasetypeDetailName()); diff --git a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java index 28c5abf..553776a 100644 --- a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java @@ -1,6 +1,7 @@ package com.casic.dcms.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -74,6 +75,9 @@ void bindView(CaseListResultBean.DataBean.RowsBean rowsBean) { String eorcName = rowsBean.getEorcName(); + if (TextUtils.isEmpty(eorcName)) { + eorcName = "未知"; + } leftTextView.setText(eorcName.substring(0, 1)); titleView.setText(rowsBean.getCasetypeName()); contentView.setText(rowsBean.getCasetypeDetailName()); diff --git a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java index 058ec63..eae9e88 100644 --- a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java @@ -10,7 +10,7 @@ import androidx.annotation.Nullable; import com.casic.dcms.R; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import java.util.ArrayList; import java.util.List; @@ -23,14 +23,14 @@ public class DeptExpandableAdapter extends BaseExpandableListAdapter { private List groupData = new ArrayList<>(); - private List> childData = new ArrayList<>(); + private List> childData = new ArrayList<>(); private LayoutInflater layoutInflater; public DeptExpandableAdapter(Context mContext) { layoutInflater = LayoutInflater.from(mContext); } - public void setData(@Nullable List groupList, @Nullable List> childList) { + public void setData(@Nullable List groupList, @Nullable List> childList) { groupData.clear(); childData.clear(); if (groupList != null) { diff --git a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java index 28c5abf..553776a 100644 --- a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java @@ -1,6 +1,7 @@ package com.casic.dcms.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -74,6 +75,9 @@ void bindView(CaseListResultBean.DataBean.RowsBean rowsBean) { String eorcName = rowsBean.getEorcName(); + if (TextUtils.isEmpty(eorcName)) { + eorcName = "未知"; + } leftTextView.setText(eorcName.substring(0, 1)); titleView.setText(rowsBean.getCasetypeName()); contentView.setText(rowsBean.getCasetypeDetailName()); diff --git a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java index 058ec63..eae9e88 100644 --- a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java @@ -10,7 +10,7 @@ import androidx.annotation.Nullable; import com.casic.dcms.R; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import java.util.ArrayList; import java.util.List; @@ -23,14 +23,14 @@ public class DeptExpandableAdapter extends BaseExpandableListAdapter { private List groupData = new ArrayList<>(); - private List> childData = new ArrayList<>(); + private List> childData = new ArrayList<>(); private LayoutInflater layoutInflater; public DeptExpandableAdapter(Context mContext) { layoutInflater = LayoutInflater.from(mContext); } - public void setData(@Nullable List groupList, @Nullable List> childList) { + public void setData(@Nullable List groupList, @Nullable List> childList) { groupData.clear(); childData.clear(); if (groupList != null) { diff --git a/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java new file mode 100644 index 0000000..9c4cca5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java @@ -0,0 +1,135 @@ +package com.casic.dcms.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PersonBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:11 + * @email : 290677893@qq.com + **/ +public class OnlinePersonAdapter extends BaseExpandableListAdapter { + + private List groupData = new ArrayList<>(); + private List> childData = new ArrayList<>(); + private LayoutInflater layoutInflater; + + public OnlinePersonAdapter(Context mContext) { + layoutInflater = LayoutInflater.from(mContext); + } + + public void setData(@Nullable List groupList, @Nullable List> childList) { + groupData.clear(); + childData.clear(); + if (groupList != null) { + this.groupData = groupList; + if (childList != null) { + this.childData = childList; + } + } + notifyDataSetChanged(); + } + + @Override + public int getGroupCount() { + return groupData.size(); + } + + @Override + public int getChildrenCount(int groupPosition) { + return childData.get(groupPosition).size(); + } + + @Override + public Object getGroup(int groupPosition) { + return groupData.get(groupPosition); + } + + @Override + public Object getChild(int groupPosition, int childPosition) { + return childData.get(groupPosition).get(childPosition); + } + + @Override + public long getGroupId(int groupPosition) { + return groupPosition; + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return childPosition; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { + GroupViewHolder groupHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_group_list, parent, false); + groupHolder = new GroupViewHolder(); + groupHolder.groupNameView = convertView.findViewById(R.id.groupNameView); + convertView.setTag(groupHolder); + } else { + groupHolder = (GroupViewHolder) convertView.getTag(); + } + groupHolder.groupNameView.setText(groupData.get(groupPosition)); + return convertView; + } + + @Override + public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { + ChildViewHolder itemHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_child_online, parent, false); + itemHolder = new ChildViewHolder(); + itemHolder.personStatusView = convertView.findViewById(R.id.personStatusView); + itemHolder.childNameView = convertView.findViewById(R.id.childNameView); + itemHolder.onlineTimeView = convertView.findViewById(R.id.onlineTimeView); + convertView.setTag(itemHolder); + } else { + itemHolder = (ChildViewHolder) convertView.getTag(); + } + boolean onLine = childData.get(groupPosition).get(childPosition).isOnLine(); + if (onLine) { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_online); + } else { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_offline); + } + itemHolder.childNameView.setText(childData.get(groupPosition).get(childPosition).getPersonName()); + itemHolder.onlineTimeView.setText(childData.get(groupPosition).get(childPosition).getLastTimeFmt()); + return convertView; + } + + //设置子列表是否可选中 + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return true; + } + + private static class GroupViewHolder { + private TextView groupNameView; + } + + private static class ChildViewHolder { + private ImageView personStatusView; + private TextView childNameView; + private TextView onlineTimeView; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java index 28c5abf..553776a 100644 --- a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java @@ -1,6 +1,7 @@ package com.casic.dcms.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -74,6 +75,9 @@ void bindView(CaseListResultBean.DataBean.RowsBean rowsBean) { String eorcName = rowsBean.getEorcName(); + if (TextUtils.isEmpty(eorcName)) { + eorcName = "未知"; + } leftTextView.setText(eorcName.substring(0, 1)); titleView.setText(rowsBean.getCasetypeName()); contentView.setText(rowsBean.getCasetypeDetailName()); diff --git a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java index 058ec63..eae9e88 100644 --- a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java @@ -10,7 +10,7 @@ import androidx.annotation.Nullable; import com.casic.dcms.R; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import java.util.ArrayList; import java.util.List; @@ -23,14 +23,14 @@ public class DeptExpandableAdapter extends BaseExpandableListAdapter { private List groupData = new ArrayList<>(); - private List> childData = new ArrayList<>(); + private List> childData = new ArrayList<>(); private LayoutInflater layoutInflater; public DeptExpandableAdapter(Context mContext) { layoutInflater = LayoutInflater.from(mContext); } - public void setData(@Nullable List groupList, @Nullable List> childList) { + public void setData(@Nullable List groupList, @Nullable List> childList) { groupData.clear(); childData.clear(); if (groupList != null) { diff --git a/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java new file mode 100644 index 0000000..9c4cca5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java @@ -0,0 +1,135 @@ +package com.casic.dcms.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PersonBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:11 + * @email : 290677893@qq.com + **/ +public class OnlinePersonAdapter extends BaseExpandableListAdapter { + + private List groupData = new ArrayList<>(); + private List> childData = new ArrayList<>(); + private LayoutInflater layoutInflater; + + public OnlinePersonAdapter(Context mContext) { + layoutInflater = LayoutInflater.from(mContext); + } + + public void setData(@Nullable List groupList, @Nullable List> childList) { + groupData.clear(); + childData.clear(); + if (groupList != null) { + this.groupData = groupList; + if (childList != null) { + this.childData = childList; + } + } + notifyDataSetChanged(); + } + + @Override + public int getGroupCount() { + return groupData.size(); + } + + @Override + public int getChildrenCount(int groupPosition) { + return childData.get(groupPosition).size(); + } + + @Override + public Object getGroup(int groupPosition) { + return groupData.get(groupPosition); + } + + @Override + public Object getChild(int groupPosition, int childPosition) { + return childData.get(groupPosition).get(childPosition); + } + + @Override + public long getGroupId(int groupPosition) { + return groupPosition; + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return childPosition; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { + GroupViewHolder groupHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_group_list, parent, false); + groupHolder = new GroupViewHolder(); + groupHolder.groupNameView = convertView.findViewById(R.id.groupNameView); + convertView.setTag(groupHolder); + } else { + groupHolder = (GroupViewHolder) convertView.getTag(); + } + groupHolder.groupNameView.setText(groupData.get(groupPosition)); + return convertView; + } + + @Override + public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { + ChildViewHolder itemHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_child_online, parent, false); + itemHolder = new ChildViewHolder(); + itemHolder.personStatusView = convertView.findViewById(R.id.personStatusView); + itemHolder.childNameView = convertView.findViewById(R.id.childNameView); + itemHolder.onlineTimeView = convertView.findViewById(R.id.onlineTimeView); + convertView.setTag(itemHolder); + } else { + itemHolder = (ChildViewHolder) convertView.getTag(); + } + boolean onLine = childData.get(groupPosition).get(childPosition).isOnLine(); + if (onLine) { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_online); + } else { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_offline); + } + itemHolder.childNameView.setText(childData.get(groupPosition).get(childPosition).getPersonName()); + itemHolder.onlineTimeView.setText(childData.get(groupPosition).get(childPosition).getLastTimeFmt()); + return convertView; + } + + //设置子列表是否可选中 + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return true; + } + + private static class GroupViewHolder { + private TextView groupNameView; + } + + private static class ChildViewHolder { + private ImageView personStatusView; + private TextView childNameView; + private TextView onlineTimeView; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java new file mode 100644 index 0000000..6110d6a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java @@ -0,0 +1,216 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class OnlinePersonBean { + + /** + * code : 200.0 + * data : [{"account":"ldadmin","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"2021-02-20","lastTimeFmt":"2021-02-20 17:33:43","name":"路灯管理员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1357146261327441921"},{"account":"ldsczy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所处置员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179797586866178"},{"account":"ldspqy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所派遣员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179555294507010"}] + * message : 请求成功 + * success : true + */ + + private double code; + private String message; + private boolean success; + private List data; + + public double getCode() { + return code; + } + + public void setCode(double code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * account : ldadmin + * deptId : 1344118138553909250 + * deptName : 路灯所 + * deviceName : + * id : + * imei : + * lastTime : 2021-02-20 + * lastTimeFmt : 2021-02-20 17:33:43 + * name : 路灯管理员 + * networkNumber : + * onLine : false + * phone : + * positionLat : + * positionLng : + * targetId : + * userId : 1357146261327441921 + */ + + private String account; + private String deptId; + private String deptName; + private String deviceName; + private String id; + private String imei; + private String lastTime; + private String lastTimeFmt; + private String name; + private String networkNumber; + private boolean onLine; + private String phone; + private String positionLat; + private String positionLng; + private String targetId; + private String userId; + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImei() { + return imei; + } + + public void setImei(String imei) { + this.imei = imei; + } + + public String getLastTime() { + return lastTime; + } + + public void setLastTime(String lastTime) { + this.lastTime = lastTime; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNetworkNumber() { + return networkNumber; + } + + public void setNetworkNumber(String networkNumber) { + this.networkNumber = networkNumber; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPositionLat() { + return positionLat; + } + + public void setPositionLat(String positionLat) { + this.positionLat = positionLat; + } + + public String getPositionLng() { + return positionLng; + } + + public void setPositionLng(String positionLng) { + this.positionLng = positionLng; + } + + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java index 28c5abf..553776a 100644 --- a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java @@ -1,6 +1,7 @@ package com.casic.dcms.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -74,6 +75,9 @@ void bindView(CaseListResultBean.DataBean.RowsBean rowsBean) { String eorcName = rowsBean.getEorcName(); + if (TextUtils.isEmpty(eorcName)) { + eorcName = "未知"; + } leftTextView.setText(eorcName.substring(0, 1)); titleView.setText(rowsBean.getCasetypeName()); contentView.setText(rowsBean.getCasetypeDetailName()); diff --git a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java index 058ec63..eae9e88 100644 --- a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java @@ -10,7 +10,7 @@ import androidx.annotation.Nullable; import com.casic.dcms.R; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import java.util.ArrayList; import java.util.List; @@ -23,14 +23,14 @@ public class DeptExpandableAdapter extends BaseExpandableListAdapter { private List groupData = new ArrayList<>(); - private List> childData = new ArrayList<>(); + private List> childData = new ArrayList<>(); private LayoutInflater layoutInflater; public DeptExpandableAdapter(Context mContext) { layoutInflater = LayoutInflater.from(mContext); } - public void setData(@Nullable List groupList, @Nullable List> childList) { + public void setData(@Nullable List groupList, @Nullable List> childList) { groupData.clear(); childData.clear(); if (groupList != null) { diff --git a/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java new file mode 100644 index 0000000..9c4cca5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java @@ -0,0 +1,135 @@ +package com.casic.dcms.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PersonBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:11 + * @email : 290677893@qq.com + **/ +public class OnlinePersonAdapter extends BaseExpandableListAdapter { + + private List groupData = new ArrayList<>(); + private List> childData = new ArrayList<>(); + private LayoutInflater layoutInflater; + + public OnlinePersonAdapter(Context mContext) { + layoutInflater = LayoutInflater.from(mContext); + } + + public void setData(@Nullable List groupList, @Nullable List> childList) { + groupData.clear(); + childData.clear(); + if (groupList != null) { + this.groupData = groupList; + if (childList != null) { + this.childData = childList; + } + } + notifyDataSetChanged(); + } + + @Override + public int getGroupCount() { + return groupData.size(); + } + + @Override + public int getChildrenCount(int groupPosition) { + return childData.get(groupPosition).size(); + } + + @Override + public Object getGroup(int groupPosition) { + return groupData.get(groupPosition); + } + + @Override + public Object getChild(int groupPosition, int childPosition) { + return childData.get(groupPosition).get(childPosition); + } + + @Override + public long getGroupId(int groupPosition) { + return groupPosition; + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return childPosition; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { + GroupViewHolder groupHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_group_list, parent, false); + groupHolder = new GroupViewHolder(); + groupHolder.groupNameView = convertView.findViewById(R.id.groupNameView); + convertView.setTag(groupHolder); + } else { + groupHolder = (GroupViewHolder) convertView.getTag(); + } + groupHolder.groupNameView.setText(groupData.get(groupPosition)); + return convertView; + } + + @Override + public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { + ChildViewHolder itemHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_child_online, parent, false); + itemHolder = new ChildViewHolder(); + itemHolder.personStatusView = convertView.findViewById(R.id.personStatusView); + itemHolder.childNameView = convertView.findViewById(R.id.childNameView); + itemHolder.onlineTimeView = convertView.findViewById(R.id.onlineTimeView); + convertView.setTag(itemHolder); + } else { + itemHolder = (ChildViewHolder) convertView.getTag(); + } + boolean onLine = childData.get(groupPosition).get(childPosition).isOnLine(); + if (onLine) { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_online); + } else { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_offline); + } + itemHolder.childNameView.setText(childData.get(groupPosition).get(childPosition).getPersonName()); + itemHolder.onlineTimeView.setText(childData.get(groupPosition).get(childPosition).getLastTimeFmt()); + return convertView; + } + + //设置子列表是否可选中 + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return true; + } + + private static class GroupViewHolder { + private TextView groupNameView; + } + + private static class ChildViewHolder { + private ImageView personStatusView; + private TextView childNameView; + private TextView onlineTimeView; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java new file mode 100644 index 0000000..6110d6a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java @@ -0,0 +1,216 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class OnlinePersonBean { + + /** + * code : 200.0 + * data : [{"account":"ldadmin","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"2021-02-20","lastTimeFmt":"2021-02-20 17:33:43","name":"路灯管理员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1357146261327441921"},{"account":"ldsczy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所处置员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179797586866178"},{"account":"ldspqy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所派遣员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179555294507010"}] + * message : 请求成功 + * success : true + */ + + private double code; + private String message; + private boolean success; + private List data; + + public double getCode() { + return code; + } + + public void setCode(double code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * account : ldadmin + * deptId : 1344118138553909250 + * deptName : 路灯所 + * deviceName : + * id : + * imei : + * lastTime : 2021-02-20 + * lastTimeFmt : 2021-02-20 17:33:43 + * name : 路灯管理员 + * networkNumber : + * onLine : false + * phone : + * positionLat : + * positionLng : + * targetId : + * userId : 1357146261327441921 + */ + + private String account; + private String deptId; + private String deptName; + private String deviceName; + private String id; + private String imei; + private String lastTime; + private String lastTimeFmt; + private String name; + private String networkNumber; + private boolean onLine; + private String phone; + private String positionLat; + private String positionLng; + private String targetId; + private String userId; + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImei() { + return imei; + } + + public void setImei(String imei) { + this.imei = imei; + } + + public String getLastTime() { + return lastTime; + } + + public void setLastTime(String lastTime) { + this.lastTime = lastTime; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNetworkNumber() { + return networkNumber; + } + + public void setNetworkNumber(String networkNumber) { + this.networkNumber = networkNumber; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPositionLat() { + return positionLat; + } + + public void setPositionLat(String positionLat) { + this.positionLat = positionLat; + } + + public String getPositionLng() { + return positionLng; + } + + public void setPositionLng(String positionLng) { + this.positionLng = positionLng; + } + + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonBean.java b/app/src/main/java/com/casic/dcms/bean/PersonBean.java new file mode 100644 index 0000000..3d33dd4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PersonBean.java @@ -0,0 +1,54 @@ +package com.casic.dcms.bean; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:00 + * @email : 290677893@qq.com + **/ +public class PersonBean { + private String personDept; + private String personName; + private String personPhone; + private String lastTimeFmt; + private boolean onLine; + + public String getPersonDept() { + return personDept; + } + + public void setPersonDept(String personDept) { + this.personDept = personDept; + } + + public String getPersonName() { + return personName; + } + + public void setPersonName(String personName) { + this.personName = personName; + } + + public String getPersonPhone() { + return personPhone; + } + + public void setPersonPhone(String personPhone) { + this.personPhone = personPhone; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java index 28c5abf..553776a 100644 --- a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java @@ -1,6 +1,7 @@ package com.casic.dcms.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -74,6 +75,9 @@ void bindView(CaseListResultBean.DataBean.RowsBean rowsBean) { String eorcName = rowsBean.getEorcName(); + if (TextUtils.isEmpty(eorcName)) { + eorcName = "未知"; + } leftTextView.setText(eorcName.substring(0, 1)); titleView.setText(rowsBean.getCasetypeName()); contentView.setText(rowsBean.getCasetypeDetailName()); diff --git a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java index 058ec63..eae9e88 100644 --- a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java @@ -10,7 +10,7 @@ import androidx.annotation.Nullable; import com.casic.dcms.R; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import java.util.ArrayList; import java.util.List; @@ -23,14 +23,14 @@ public class DeptExpandableAdapter extends BaseExpandableListAdapter { private List groupData = new ArrayList<>(); - private List> childData = new ArrayList<>(); + private List> childData = new ArrayList<>(); private LayoutInflater layoutInflater; public DeptExpandableAdapter(Context mContext) { layoutInflater = LayoutInflater.from(mContext); } - public void setData(@Nullable List groupList, @Nullable List> childList) { + public void setData(@Nullable List groupList, @Nullable List> childList) { groupData.clear(); childData.clear(); if (groupList != null) { diff --git a/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java new file mode 100644 index 0000000..9c4cca5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java @@ -0,0 +1,135 @@ +package com.casic.dcms.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PersonBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:11 + * @email : 290677893@qq.com + **/ +public class OnlinePersonAdapter extends BaseExpandableListAdapter { + + private List groupData = new ArrayList<>(); + private List> childData = new ArrayList<>(); + private LayoutInflater layoutInflater; + + public OnlinePersonAdapter(Context mContext) { + layoutInflater = LayoutInflater.from(mContext); + } + + public void setData(@Nullable List groupList, @Nullable List> childList) { + groupData.clear(); + childData.clear(); + if (groupList != null) { + this.groupData = groupList; + if (childList != null) { + this.childData = childList; + } + } + notifyDataSetChanged(); + } + + @Override + public int getGroupCount() { + return groupData.size(); + } + + @Override + public int getChildrenCount(int groupPosition) { + return childData.get(groupPosition).size(); + } + + @Override + public Object getGroup(int groupPosition) { + return groupData.get(groupPosition); + } + + @Override + public Object getChild(int groupPosition, int childPosition) { + return childData.get(groupPosition).get(childPosition); + } + + @Override + public long getGroupId(int groupPosition) { + return groupPosition; + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return childPosition; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { + GroupViewHolder groupHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_group_list, parent, false); + groupHolder = new GroupViewHolder(); + groupHolder.groupNameView = convertView.findViewById(R.id.groupNameView); + convertView.setTag(groupHolder); + } else { + groupHolder = (GroupViewHolder) convertView.getTag(); + } + groupHolder.groupNameView.setText(groupData.get(groupPosition)); + return convertView; + } + + @Override + public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { + ChildViewHolder itemHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_child_online, parent, false); + itemHolder = new ChildViewHolder(); + itemHolder.personStatusView = convertView.findViewById(R.id.personStatusView); + itemHolder.childNameView = convertView.findViewById(R.id.childNameView); + itemHolder.onlineTimeView = convertView.findViewById(R.id.onlineTimeView); + convertView.setTag(itemHolder); + } else { + itemHolder = (ChildViewHolder) convertView.getTag(); + } + boolean onLine = childData.get(groupPosition).get(childPosition).isOnLine(); + if (onLine) { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_online); + } else { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_offline); + } + itemHolder.childNameView.setText(childData.get(groupPosition).get(childPosition).getPersonName()); + itemHolder.onlineTimeView.setText(childData.get(groupPosition).get(childPosition).getLastTimeFmt()); + return convertView; + } + + //设置子列表是否可选中 + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return true; + } + + private static class GroupViewHolder { + private TextView groupNameView; + } + + private static class ChildViewHolder { + private ImageView personStatusView; + private TextView childNameView; + private TextView onlineTimeView; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java new file mode 100644 index 0000000..6110d6a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java @@ -0,0 +1,216 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class OnlinePersonBean { + + /** + * code : 200.0 + * data : [{"account":"ldadmin","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"2021-02-20","lastTimeFmt":"2021-02-20 17:33:43","name":"路灯管理员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1357146261327441921"},{"account":"ldsczy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所处置员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179797586866178"},{"account":"ldspqy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所派遣员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179555294507010"}] + * message : 请求成功 + * success : true + */ + + private double code; + private String message; + private boolean success; + private List data; + + public double getCode() { + return code; + } + + public void setCode(double code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * account : ldadmin + * deptId : 1344118138553909250 + * deptName : 路灯所 + * deviceName : + * id : + * imei : + * lastTime : 2021-02-20 + * lastTimeFmt : 2021-02-20 17:33:43 + * name : 路灯管理员 + * networkNumber : + * onLine : false + * phone : + * positionLat : + * positionLng : + * targetId : + * userId : 1357146261327441921 + */ + + private String account; + private String deptId; + private String deptName; + private String deviceName; + private String id; + private String imei; + private String lastTime; + private String lastTimeFmt; + private String name; + private String networkNumber; + private boolean onLine; + private String phone; + private String positionLat; + private String positionLng; + private String targetId; + private String userId; + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImei() { + return imei; + } + + public void setImei(String imei) { + this.imei = imei; + } + + public String getLastTime() { + return lastTime; + } + + public void setLastTime(String lastTime) { + this.lastTime = lastTime; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNetworkNumber() { + return networkNumber; + } + + public void setNetworkNumber(String networkNumber) { + this.networkNumber = networkNumber; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPositionLat() { + return positionLat; + } + + public void setPositionLat(String positionLat) { + this.positionLat = positionLat; + } + + public String getPositionLng() { + return positionLng; + } + + public void setPositionLng(String positionLng) { + this.positionLng = positionLng; + } + + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonBean.java b/app/src/main/java/com/casic/dcms/bean/PersonBean.java new file mode 100644 index 0000000..3d33dd4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PersonBean.java @@ -0,0 +1,54 @@ +package com.casic.dcms.bean; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:00 + * @email : 290677893@qq.com + **/ +public class PersonBean { + private String personDept; + private String personName; + private String personPhone; + private String lastTimeFmt; + private boolean onLine; + + public String getPersonDept() { + return personDept; + } + + public void setPersonDept(String personDept) { + this.personDept = personDept; + } + + public String getPersonName() { + return personName; + } + + public void setPersonName(String personName) { + this.personName = personName; + } + + public String getPersonPhone() { + return personPhone; + } + + public void setPersonPhone(String personPhone) { + this.personPhone = personPhone; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java b/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java deleted file mode 100644 index 96f70a4..0000000 --- a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dcms.bean; - -/** - * @author : Pengxh - * @time : 2021/4/15 13:00 - * @email : 290677893@qq.com - **/ -public class PersonPhoneBean { - private String personDept; - private String personName; - private String personPhone; - - public String getPersonDept() { - return personDept; - } - - public void setPersonDept(String personDept) { - this.personDept = personDept; - } - - public String getPersonName() { - return personName; - } - - public void setPersonName(String personName) { - this.personName = personName; - } - - public String getPersonPhone() { - return personPhone; - } - - public void setPersonPhone(String personPhone) { - this.personPhone = personPhone; - } -} diff --git a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java index 28c5abf..553776a 100644 --- a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java @@ -1,6 +1,7 @@ package com.casic.dcms.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -74,6 +75,9 @@ void bindView(CaseListResultBean.DataBean.RowsBean rowsBean) { String eorcName = rowsBean.getEorcName(); + if (TextUtils.isEmpty(eorcName)) { + eorcName = "未知"; + } leftTextView.setText(eorcName.substring(0, 1)); titleView.setText(rowsBean.getCasetypeName()); contentView.setText(rowsBean.getCasetypeDetailName()); diff --git a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java index 058ec63..eae9e88 100644 --- a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java @@ -10,7 +10,7 @@ import androidx.annotation.Nullable; import com.casic.dcms.R; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import java.util.ArrayList; import java.util.List; @@ -23,14 +23,14 @@ public class DeptExpandableAdapter extends BaseExpandableListAdapter { private List groupData = new ArrayList<>(); - private List> childData = new ArrayList<>(); + private List> childData = new ArrayList<>(); private LayoutInflater layoutInflater; public DeptExpandableAdapter(Context mContext) { layoutInflater = LayoutInflater.from(mContext); } - public void setData(@Nullable List groupList, @Nullable List> childList) { + public void setData(@Nullable List groupList, @Nullable List> childList) { groupData.clear(); childData.clear(); if (groupList != null) { diff --git a/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java new file mode 100644 index 0000000..9c4cca5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java @@ -0,0 +1,135 @@ +package com.casic.dcms.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PersonBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:11 + * @email : 290677893@qq.com + **/ +public class OnlinePersonAdapter extends BaseExpandableListAdapter { + + private List groupData = new ArrayList<>(); + private List> childData = new ArrayList<>(); + private LayoutInflater layoutInflater; + + public OnlinePersonAdapter(Context mContext) { + layoutInflater = LayoutInflater.from(mContext); + } + + public void setData(@Nullable List groupList, @Nullable List> childList) { + groupData.clear(); + childData.clear(); + if (groupList != null) { + this.groupData = groupList; + if (childList != null) { + this.childData = childList; + } + } + notifyDataSetChanged(); + } + + @Override + public int getGroupCount() { + return groupData.size(); + } + + @Override + public int getChildrenCount(int groupPosition) { + return childData.get(groupPosition).size(); + } + + @Override + public Object getGroup(int groupPosition) { + return groupData.get(groupPosition); + } + + @Override + public Object getChild(int groupPosition, int childPosition) { + return childData.get(groupPosition).get(childPosition); + } + + @Override + public long getGroupId(int groupPosition) { + return groupPosition; + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return childPosition; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { + GroupViewHolder groupHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_group_list, parent, false); + groupHolder = new GroupViewHolder(); + groupHolder.groupNameView = convertView.findViewById(R.id.groupNameView); + convertView.setTag(groupHolder); + } else { + groupHolder = (GroupViewHolder) convertView.getTag(); + } + groupHolder.groupNameView.setText(groupData.get(groupPosition)); + return convertView; + } + + @Override + public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { + ChildViewHolder itemHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_child_online, parent, false); + itemHolder = new ChildViewHolder(); + itemHolder.personStatusView = convertView.findViewById(R.id.personStatusView); + itemHolder.childNameView = convertView.findViewById(R.id.childNameView); + itemHolder.onlineTimeView = convertView.findViewById(R.id.onlineTimeView); + convertView.setTag(itemHolder); + } else { + itemHolder = (ChildViewHolder) convertView.getTag(); + } + boolean onLine = childData.get(groupPosition).get(childPosition).isOnLine(); + if (onLine) { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_online); + } else { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_offline); + } + itemHolder.childNameView.setText(childData.get(groupPosition).get(childPosition).getPersonName()); + itemHolder.onlineTimeView.setText(childData.get(groupPosition).get(childPosition).getLastTimeFmt()); + return convertView; + } + + //设置子列表是否可选中 + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return true; + } + + private static class GroupViewHolder { + private TextView groupNameView; + } + + private static class ChildViewHolder { + private ImageView personStatusView; + private TextView childNameView; + private TextView onlineTimeView; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java new file mode 100644 index 0000000..6110d6a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java @@ -0,0 +1,216 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class OnlinePersonBean { + + /** + * code : 200.0 + * data : [{"account":"ldadmin","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"2021-02-20","lastTimeFmt":"2021-02-20 17:33:43","name":"路灯管理员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1357146261327441921"},{"account":"ldsczy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所处置员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179797586866178"},{"account":"ldspqy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所派遣员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179555294507010"}] + * message : 请求成功 + * success : true + */ + + private double code; + private String message; + private boolean success; + private List data; + + public double getCode() { + return code; + } + + public void setCode(double code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * account : ldadmin + * deptId : 1344118138553909250 + * deptName : 路灯所 + * deviceName : + * id : + * imei : + * lastTime : 2021-02-20 + * lastTimeFmt : 2021-02-20 17:33:43 + * name : 路灯管理员 + * networkNumber : + * onLine : false + * phone : + * positionLat : + * positionLng : + * targetId : + * userId : 1357146261327441921 + */ + + private String account; + private String deptId; + private String deptName; + private String deviceName; + private String id; + private String imei; + private String lastTime; + private String lastTimeFmt; + private String name; + private String networkNumber; + private boolean onLine; + private String phone; + private String positionLat; + private String positionLng; + private String targetId; + private String userId; + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImei() { + return imei; + } + + public void setImei(String imei) { + this.imei = imei; + } + + public String getLastTime() { + return lastTime; + } + + public void setLastTime(String lastTime) { + this.lastTime = lastTime; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNetworkNumber() { + return networkNumber; + } + + public void setNetworkNumber(String networkNumber) { + this.networkNumber = networkNumber; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPositionLat() { + return positionLat; + } + + public void setPositionLat(String positionLat) { + this.positionLat = positionLat; + } + + public String getPositionLng() { + return positionLng; + } + + public void setPositionLng(String positionLng) { + this.positionLng = positionLng; + } + + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonBean.java b/app/src/main/java/com/casic/dcms/bean/PersonBean.java new file mode 100644 index 0000000..3d33dd4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PersonBean.java @@ -0,0 +1,54 @@ +package com.casic.dcms.bean; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:00 + * @email : 290677893@qq.com + **/ +public class PersonBean { + private String personDept; + private String personName; + private String personPhone; + private String lastTimeFmt; + private boolean onLine; + + public String getPersonDept() { + return personDept; + } + + public void setPersonDept(String personDept) { + this.personDept = personDept; + } + + public String getPersonName() { + return personName; + } + + public void setPersonName(String personName) { + this.personName = personName; + } + + public String getPersonPhone() { + return personPhone; + } + + public void setPersonPhone(String personPhone) { + this.personPhone = personPhone; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java b/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java deleted file mode 100644 index 96f70a4..0000000 --- a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dcms.bean; - -/** - * @author : Pengxh - * @time : 2021/4/15 13:00 - * @email : 290677893@qq.com - **/ -public class PersonPhoneBean { - private String personDept; - private String personName; - private String personPhone; - - public String getPersonDept() { - return personDept; - } - - public void setPersonDept(String personDept) { - this.personDept = personDept; - } - - public String getPersonName() { - return personName; - } - - public void setPersonName(String personName) { - this.personName = personName; - } - - public String getPersonPhone() { - return personPhone; - } - - public void setPersonPhone(String personPhone) { - this.personPhone = personPhone; - } -} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java new file mode 100644 index 0000000..29fbd5d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPersonOnlineModel { + Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine); +} diff --git a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java index 28c5abf..553776a 100644 --- a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java @@ -1,6 +1,7 @@ package com.casic.dcms.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -74,6 +75,9 @@ void bindView(CaseListResultBean.DataBean.RowsBean rowsBean) { String eorcName = rowsBean.getEorcName(); + if (TextUtils.isEmpty(eorcName)) { + eorcName = "未知"; + } leftTextView.setText(eorcName.substring(0, 1)); titleView.setText(rowsBean.getCasetypeName()); contentView.setText(rowsBean.getCasetypeDetailName()); diff --git a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java index 058ec63..eae9e88 100644 --- a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java @@ -10,7 +10,7 @@ import androidx.annotation.Nullable; import com.casic.dcms.R; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import java.util.ArrayList; import java.util.List; @@ -23,14 +23,14 @@ public class DeptExpandableAdapter extends BaseExpandableListAdapter { private List groupData = new ArrayList<>(); - private List> childData = new ArrayList<>(); + private List> childData = new ArrayList<>(); private LayoutInflater layoutInflater; public DeptExpandableAdapter(Context mContext) { layoutInflater = LayoutInflater.from(mContext); } - public void setData(@Nullable List groupList, @Nullable List> childList) { + public void setData(@Nullable List groupList, @Nullable List> childList) { groupData.clear(); childData.clear(); if (groupList != null) { diff --git a/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java new file mode 100644 index 0000000..9c4cca5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java @@ -0,0 +1,135 @@ +package com.casic.dcms.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PersonBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:11 + * @email : 290677893@qq.com + **/ +public class OnlinePersonAdapter extends BaseExpandableListAdapter { + + private List groupData = new ArrayList<>(); + private List> childData = new ArrayList<>(); + private LayoutInflater layoutInflater; + + public OnlinePersonAdapter(Context mContext) { + layoutInflater = LayoutInflater.from(mContext); + } + + public void setData(@Nullable List groupList, @Nullable List> childList) { + groupData.clear(); + childData.clear(); + if (groupList != null) { + this.groupData = groupList; + if (childList != null) { + this.childData = childList; + } + } + notifyDataSetChanged(); + } + + @Override + public int getGroupCount() { + return groupData.size(); + } + + @Override + public int getChildrenCount(int groupPosition) { + return childData.get(groupPosition).size(); + } + + @Override + public Object getGroup(int groupPosition) { + return groupData.get(groupPosition); + } + + @Override + public Object getChild(int groupPosition, int childPosition) { + return childData.get(groupPosition).get(childPosition); + } + + @Override + public long getGroupId(int groupPosition) { + return groupPosition; + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return childPosition; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { + GroupViewHolder groupHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_group_list, parent, false); + groupHolder = new GroupViewHolder(); + groupHolder.groupNameView = convertView.findViewById(R.id.groupNameView); + convertView.setTag(groupHolder); + } else { + groupHolder = (GroupViewHolder) convertView.getTag(); + } + groupHolder.groupNameView.setText(groupData.get(groupPosition)); + return convertView; + } + + @Override + public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { + ChildViewHolder itemHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_child_online, parent, false); + itemHolder = new ChildViewHolder(); + itemHolder.personStatusView = convertView.findViewById(R.id.personStatusView); + itemHolder.childNameView = convertView.findViewById(R.id.childNameView); + itemHolder.onlineTimeView = convertView.findViewById(R.id.onlineTimeView); + convertView.setTag(itemHolder); + } else { + itemHolder = (ChildViewHolder) convertView.getTag(); + } + boolean onLine = childData.get(groupPosition).get(childPosition).isOnLine(); + if (onLine) { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_online); + } else { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_offline); + } + itemHolder.childNameView.setText(childData.get(groupPosition).get(childPosition).getPersonName()); + itemHolder.onlineTimeView.setText(childData.get(groupPosition).get(childPosition).getLastTimeFmt()); + return convertView; + } + + //设置子列表是否可选中 + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return true; + } + + private static class GroupViewHolder { + private TextView groupNameView; + } + + private static class ChildViewHolder { + private ImageView personStatusView; + private TextView childNameView; + private TextView onlineTimeView; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java new file mode 100644 index 0000000..6110d6a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java @@ -0,0 +1,216 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class OnlinePersonBean { + + /** + * code : 200.0 + * data : [{"account":"ldadmin","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"2021-02-20","lastTimeFmt":"2021-02-20 17:33:43","name":"路灯管理员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1357146261327441921"},{"account":"ldsczy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所处置员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179797586866178"},{"account":"ldspqy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所派遣员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179555294507010"}] + * message : 请求成功 + * success : true + */ + + private double code; + private String message; + private boolean success; + private List data; + + public double getCode() { + return code; + } + + public void setCode(double code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * account : ldadmin + * deptId : 1344118138553909250 + * deptName : 路灯所 + * deviceName : + * id : + * imei : + * lastTime : 2021-02-20 + * lastTimeFmt : 2021-02-20 17:33:43 + * name : 路灯管理员 + * networkNumber : + * onLine : false + * phone : + * positionLat : + * positionLng : + * targetId : + * userId : 1357146261327441921 + */ + + private String account; + private String deptId; + private String deptName; + private String deviceName; + private String id; + private String imei; + private String lastTime; + private String lastTimeFmt; + private String name; + private String networkNumber; + private boolean onLine; + private String phone; + private String positionLat; + private String positionLng; + private String targetId; + private String userId; + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImei() { + return imei; + } + + public void setImei(String imei) { + this.imei = imei; + } + + public String getLastTime() { + return lastTime; + } + + public void setLastTime(String lastTime) { + this.lastTime = lastTime; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNetworkNumber() { + return networkNumber; + } + + public void setNetworkNumber(String networkNumber) { + this.networkNumber = networkNumber; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPositionLat() { + return positionLat; + } + + public void setPositionLat(String positionLat) { + this.positionLat = positionLat; + } + + public String getPositionLng() { + return positionLng; + } + + public void setPositionLng(String positionLng) { + this.positionLng = positionLng; + } + + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonBean.java b/app/src/main/java/com/casic/dcms/bean/PersonBean.java new file mode 100644 index 0000000..3d33dd4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PersonBean.java @@ -0,0 +1,54 @@ +package com.casic.dcms.bean; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:00 + * @email : 290677893@qq.com + **/ +public class PersonBean { + private String personDept; + private String personName; + private String personPhone; + private String lastTimeFmt; + private boolean onLine; + + public String getPersonDept() { + return personDept; + } + + public void setPersonDept(String personDept) { + this.personDept = personDept; + } + + public String getPersonName() { + return personName; + } + + public void setPersonName(String personName) { + this.personName = personName; + } + + public String getPersonPhone() { + return personPhone; + } + + public void setPersonPhone(String personPhone) { + this.personPhone = personPhone; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java b/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java deleted file mode 100644 index 96f70a4..0000000 --- a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dcms.bean; - -/** - * @author : Pengxh - * @time : 2021/4/15 13:00 - * @email : 290677893@qq.com - **/ -public class PersonPhoneBean { - private String personDept; - private String personName; - private String personPhone; - - public String getPersonDept() { - return personDept; - } - - public void setPersonDept(String personDept) { - this.personDept = personDept; - } - - public String getPersonName() { - return personName; - } - - public void setPersonName(String personName) { - this.personName = personName; - } - - public String getPersonPhone() { - return personPhone; - } - - public void setPersonPhone(String personPhone) { - this.personPhone = personPhone; - } -} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java new file mode 100644 index 0000000..29fbd5d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPersonOnlineModel { + Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java new file mode 100644 index 0000000..7c82995 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java @@ -0,0 +1,58 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.OnlinePersonBean; +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; + +/** + * @author : Pengxh + * @time : 2021/4/15 11:21 + * @email : 290677893@qq.com + **/ +public class PersonOnlineModelImpl implements IPersonOnlineModel { + + private OnGetOnlinePersonListener listener; + + public PersonOnlineModelImpl(OnGetOnlinePersonListener onlinePersonListener) { + this.listener = onlinePersonListener; + } + + /** + * 数据回调接口 + */ + public interface OnGetOnlinePersonListener { + void onSuccess(OnlinePersonBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine) { + Observable observable = RetrofitServiceManager.getOnlinePersonResult(deptid, roleTips, isOnLine); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (listener != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(OnlinePersonBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java index 28c5abf..553776a 100644 --- a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java @@ -1,6 +1,7 @@ package com.casic.dcms.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -74,6 +75,9 @@ void bindView(CaseListResultBean.DataBean.RowsBean rowsBean) { String eorcName = rowsBean.getEorcName(); + if (TextUtils.isEmpty(eorcName)) { + eorcName = "未知"; + } leftTextView.setText(eorcName.substring(0, 1)); titleView.setText(rowsBean.getCasetypeName()); contentView.setText(rowsBean.getCasetypeDetailName()); diff --git a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java index 058ec63..eae9e88 100644 --- a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java @@ -10,7 +10,7 @@ import androidx.annotation.Nullable; import com.casic.dcms.R; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import java.util.ArrayList; import java.util.List; @@ -23,14 +23,14 @@ public class DeptExpandableAdapter extends BaseExpandableListAdapter { private List groupData = new ArrayList<>(); - private List> childData = new ArrayList<>(); + private List> childData = new ArrayList<>(); private LayoutInflater layoutInflater; public DeptExpandableAdapter(Context mContext) { layoutInflater = LayoutInflater.from(mContext); } - public void setData(@Nullable List groupList, @Nullable List> childList) { + public void setData(@Nullable List groupList, @Nullable List> childList) { groupData.clear(); childData.clear(); if (groupList != null) { diff --git a/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java new file mode 100644 index 0000000..9c4cca5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java @@ -0,0 +1,135 @@ +package com.casic.dcms.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PersonBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:11 + * @email : 290677893@qq.com + **/ +public class OnlinePersonAdapter extends BaseExpandableListAdapter { + + private List groupData = new ArrayList<>(); + private List> childData = new ArrayList<>(); + private LayoutInflater layoutInflater; + + public OnlinePersonAdapter(Context mContext) { + layoutInflater = LayoutInflater.from(mContext); + } + + public void setData(@Nullable List groupList, @Nullable List> childList) { + groupData.clear(); + childData.clear(); + if (groupList != null) { + this.groupData = groupList; + if (childList != null) { + this.childData = childList; + } + } + notifyDataSetChanged(); + } + + @Override + public int getGroupCount() { + return groupData.size(); + } + + @Override + public int getChildrenCount(int groupPosition) { + return childData.get(groupPosition).size(); + } + + @Override + public Object getGroup(int groupPosition) { + return groupData.get(groupPosition); + } + + @Override + public Object getChild(int groupPosition, int childPosition) { + return childData.get(groupPosition).get(childPosition); + } + + @Override + public long getGroupId(int groupPosition) { + return groupPosition; + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return childPosition; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { + GroupViewHolder groupHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_group_list, parent, false); + groupHolder = new GroupViewHolder(); + groupHolder.groupNameView = convertView.findViewById(R.id.groupNameView); + convertView.setTag(groupHolder); + } else { + groupHolder = (GroupViewHolder) convertView.getTag(); + } + groupHolder.groupNameView.setText(groupData.get(groupPosition)); + return convertView; + } + + @Override + public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { + ChildViewHolder itemHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_child_online, parent, false); + itemHolder = new ChildViewHolder(); + itemHolder.personStatusView = convertView.findViewById(R.id.personStatusView); + itemHolder.childNameView = convertView.findViewById(R.id.childNameView); + itemHolder.onlineTimeView = convertView.findViewById(R.id.onlineTimeView); + convertView.setTag(itemHolder); + } else { + itemHolder = (ChildViewHolder) convertView.getTag(); + } + boolean onLine = childData.get(groupPosition).get(childPosition).isOnLine(); + if (onLine) { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_online); + } else { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_offline); + } + itemHolder.childNameView.setText(childData.get(groupPosition).get(childPosition).getPersonName()); + itemHolder.onlineTimeView.setText(childData.get(groupPosition).get(childPosition).getLastTimeFmt()); + return convertView; + } + + //设置子列表是否可选中 + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return true; + } + + private static class GroupViewHolder { + private TextView groupNameView; + } + + private static class ChildViewHolder { + private ImageView personStatusView; + private TextView childNameView; + private TextView onlineTimeView; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java new file mode 100644 index 0000000..6110d6a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java @@ -0,0 +1,216 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class OnlinePersonBean { + + /** + * code : 200.0 + * data : [{"account":"ldadmin","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"2021-02-20","lastTimeFmt":"2021-02-20 17:33:43","name":"路灯管理员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1357146261327441921"},{"account":"ldsczy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所处置员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179797586866178"},{"account":"ldspqy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所派遣员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179555294507010"}] + * message : 请求成功 + * success : true + */ + + private double code; + private String message; + private boolean success; + private List data; + + public double getCode() { + return code; + } + + public void setCode(double code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * account : ldadmin + * deptId : 1344118138553909250 + * deptName : 路灯所 + * deviceName : + * id : + * imei : + * lastTime : 2021-02-20 + * lastTimeFmt : 2021-02-20 17:33:43 + * name : 路灯管理员 + * networkNumber : + * onLine : false + * phone : + * positionLat : + * positionLng : + * targetId : + * userId : 1357146261327441921 + */ + + private String account; + private String deptId; + private String deptName; + private String deviceName; + private String id; + private String imei; + private String lastTime; + private String lastTimeFmt; + private String name; + private String networkNumber; + private boolean onLine; + private String phone; + private String positionLat; + private String positionLng; + private String targetId; + private String userId; + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImei() { + return imei; + } + + public void setImei(String imei) { + this.imei = imei; + } + + public String getLastTime() { + return lastTime; + } + + public void setLastTime(String lastTime) { + this.lastTime = lastTime; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNetworkNumber() { + return networkNumber; + } + + public void setNetworkNumber(String networkNumber) { + this.networkNumber = networkNumber; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPositionLat() { + return positionLat; + } + + public void setPositionLat(String positionLat) { + this.positionLat = positionLat; + } + + public String getPositionLng() { + return positionLng; + } + + public void setPositionLng(String positionLng) { + this.positionLng = positionLng; + } + + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonBean.java b/app/src/main/java/com/casic/dcms/bean/PersonBean.java new file mode 100644 index 0000000..3d33dd4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PersonBean.java @@ -0,0 +1,54 @@ +package com.casic.dcms.bean; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:00 + * @email : 290677893@qq.com + **/ +public class PersonBean { + private String personDept; + private String personName; + private String personPhone; + private String lastTimeFmt; + private boolean onLine; + + public String getPersonDept() { + return personDept; + } + + public void setPersonDept(String personDept) { + this.personDept = personDept; + } + + public String getPersonName() { + return personName; + } + + public void setPersonName(String personName) { + this.personName = personName; + } + + public String getPersonPhone() { + return personPhone; + } + + public void setPersonPhone(String personPhone) { + this.personPhone = personPhone; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java b/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java deleted file mode 100644 index 96f70a4..0000000 --- a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dcms.bean; - -/** - * @author : Pengxh - * @time : 2021/4/15 13:00 - * @email : 290677893@qq.com - **/ -public class PersonPhoneBean { - private String personDept; - private String personName; - private String personPhone; - - public String getPersonDept() { - return personDept; - } - - public void setPersonDept(String personDept) { - this.personDept = personDept; - } - - public String getPersonName() { - return personName; - } - - public void setPersonName(String personName) { - this.personName = personName; - } - - public String getPersonPhone() { - return personPhone; - } - - public void setPersonPhone(String personPhone) { - this.personPhone = personPhone; - } -} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java new file mode 100644 index 0000000..29fbd5d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPersonOnlineModel { + Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java new file mode 100644 index 0000000..7c82995 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java @@ -0,0 +1,58 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.OnlinePersonBean; +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; + +/** + * @author : Pengxh + * @time : 2021/4/15 11:21 + * @email : 290677893@qq.com + **/ +public class PersonOnlineModelImpl implements IPersonOnlineModel { + + private OnGetOnlinePersonListener listener; + + public PersonOnlineModelImpl(OnGetOnlinePersonListener onlinePersonListener) { + this.listener = onlinePersonListener; + } + + /** + * 数据回调接口 + */ + public interface OnGetOnlinePersonListener { + void onSuccess(OnlinePersonBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine) { + Observable observable = RetrofitServiceManager.getOnlinePersonResult(deptid, roleTips, isOnLine); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (listener != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(OnlinePersonBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java new file mode 100644 index 0000000..c51821c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPersonOnlinePresenter { + void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java index 28c5abf..553776a 100644 --- a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java @@ -1,6 +1,7 @@ package com.casic.dcms.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -74,6 +75,9 @@ void bindView(CaseListResultBean.DataBean.RowsBean rowsBean) { String eorcName = rowsBean.getEorcName(); + if (TextUtils.isEmpty(eorcName)) { + eorcName = "未知"; + } leftTextView.setText(eorcName.substring(0, 1)); titleView.setText(rowsBean.getCasetypeName()); contentView.setText(rowsBean.getCasetypeDetailName()); diff --git a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java index 058ec63..eae9e88 100644 --- a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java @@ -10,7 +10,7 @@ import androidx.annotation.Nullable; import com.casic.dcms.R; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import java.util.ArrayList; import java.util.List; @@ -23,14 +23,14 @@ public class DeptExpandableAdapter extends BaseExpandableListAdapter { private List groupData = new ArrayList<>(); - private List> childData = new ArrayList<>(); + private List> childData = new ArrayList<>(); private LayoutInflater layoutInflater; public DeptExpandableAdapter(Context mContext) { layoutInflater = LayoutInflater.from(mContext); } - public void setData(@Nullable List groupList, @Nullable List> childList) { + public void setData(@Nullable List groupList, @Nullable List> childList) { groupData.clear(); childData.clear(); if (groupList != null) { diff --git a/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java new file mode 100644 index 0000000..9c4cca5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java @@ -0,0 +1,135 @@ +package com.casic.dcms.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PersonBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:11 + * @email : 290677893@qq.com + **/ +public class OnlinePersonAdapter extends BaseExpandableListAdapter { + + private List groupData = new ArrayList<>(); + private List> childData = new ArrayList<>(); + private LayoutInflater layoutInflater; + + public OnlinePersonAdapter(Context mContext) { + layoutInflater = LayoutInflater.from(mContext); + } + + public void setData(@Nullable List groupList, @Nullable List> childList) { + groupData.clear(); + childData.clear(); + if (groupList != null) { + this.groupData = groupList; + if (childList != null) { + this.childData = childList; + } + } + notifyDataSetChanged(); + } + + @Override + public int getGroupCount() { + return groupData.size(); + } + + @Override + public int getChildrenCount(int groupPosition) { + return childData.get(groupPosition).size(); + } + + @Override + public Object getGroup(int groupPosition) { + return groupData.get(groupPosition); + } + + @Override + public Object getChild(int groupPosition, int childPosition) { + return childData.get(groupPosition).get(childPosition); + } + + @Override + public long getGroupId(int groupPosition) { + return groupPosition; + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return childPosition; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { + GroupViewHolder groupHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_group_list, parent, false); + groupHolder = new GroupViewHolder(); + groupHolder.groupNameView = convertView.findViewById(R.id.groupNameView); + convertView.setTag(groupHolder); + } else { + groupHolder = (GroupViewHolder) convertView.getTag(); + } + groupHolder.groupNameView.setText(groupData.get(groupPosition)); + return convertView; + } + + @Override + public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { + ChildViewHolder itemHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_child_online, parent, false); + itemHolder = new ChildViewHolder(); + itemHolder.personStatusView = convertView.findViewById(R.id.personStatusView); + itemHolder.childNameView = convertView.findViewById(R.id.childNameView); + itemHolder.onlineTimeView = convertView.findViewById(R.id.onlineTimeView); + convertView.setTag(itemHolder); + } else { + itemHolder = (ChildViewHolder) convertView.getTag(); + } + boolean onLine = childData.get(groupPosition).get(childPosition).isOnLine(); + if (onLine) { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_online); + } else { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_offline); + } + itemHolder.childNameView.setText(childData.get(groupPosition).get(childPosition).getPersonName()); + itemHolder.onlineTimeView.setText(childData.get(groupPosition).get(childPosition).getLastTimeFmt()); + return convertView; + } + + //设置子列表是否可选中 + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return true; + } + + private static class GroupViewHolder { + private TextView groupNameView; + } + + private static class ChildViewHolder { + private ImageView personStatusView; + private TextView childNameView; + private TextView onlineTimeView; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java new file mode 100644 index 0000000..6110d6a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java @@ -0,0 +1,216 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class OnlinePersonBean { + + /** + * code : 200.0 + * data : [{"account":"ldadmin","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"2021-02-20","lastTimeFmt":"2021-02-20 17:33:43","name":"路灯管理员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1357146261327441921"},{"account":"ldsczy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所处置员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179797586866178"},{"account":"ldspqy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所派遣员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179555294507010"}] + * message : 请求成功 + * success : true + */ + + private double code; + private String message; + private boolean success; + private List data; + + public double getCode() { + return code; + } + + public void setCode(double code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * account : ldadmin + * deptId : 1344118138553909250 + * deptName : 路灯所 + * deviceName : + * id : + * imei : + * lastTime : 2021-02-20 + * lastTimeFmt : 2021-02-20 17:33:43 + * name : 路灯管理员 + * networkNumber : + * onLine : false + * phone : + * positionLat : + * positionLng : + * targetId : + * userId : 1357146261327441921 + */ + + private String account; + private String deptId; + private String deptName; + private String deviceName; + private String id; + private String imei; + private String lastTime; + private String lastTimeFmt; + private String name; + private String networkNumber; + private boolean onLine; + private String phone; + private String positionLat; + private String positionLng; + private String targetId; + private String userId; + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImei() { + return imei; + } + + public void setImei(String imei) { + this.imei = imei; + } + + public String getLastTime() { + return lastTime; + } + + public void setLastTime(String lastTime) { + this.lastTime = lastTime; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNetworkNumber() { + return networkNumber; + } + + public void setNetworkNumber(String networkNumber) { + this.networkNumber = networkNumber; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPositionLat() { + return positionLat; + } + + public void setPositionLat(String positionLat) { + this.positionLat = positionLat; + } + + public String getPositionLng() { + return positionLng; + } + + public void setPositionLng(String positionLng) { + this.positionLng = positionLng; + } + + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonBean.java b/app/src/main/java/com/casic/dcms/bean/PersonBean.java new file mode 100644 index 0000000..3d33dd4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PersonBean.java @@ -0,0 +1,54 @@ +package com.casic.dcms.bean; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:00 + * @email : 290677893@qq.com + **/ +public class PersonBean { + private String personDept; + private String personName; + private String personPhone; + private String lastTimeFmt; + private boolean onLine; + + public String getPersonDept() { + return personDept; + } + + public void setPersonDept(String personDept) { + this.personDept = personDept; + } + + public String getPersonName() { + return personName; + } + + public void setPersonName(String personName) { + this.personName = personName; + } + + public String getPersonPhone() { + return personPhone; + } + + public void setPersonPhone(String personPhone) { + this.personPhone = personPhone; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java b/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java deleted file mode 100644 index 96f70a4..0000000 --- a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dcms.bean; - -/** - * @author : Pengxh - * @time : 2021/4/15 13:00 - * @email : 290677893@qq.com - **/ -public class PersonPhoneBean { - private String personDept; - private String personName; - private String personPhone; - - public String getPersonDept() { - return personDept; - } - - public void setPersonDept(String personDept) { - this.personDept = personDept; - } - - public String getPersonName() { - return personName; - } - - public void setPersonName(String personName) { - this.personName = personName; - } - - public String getPersonPhone() { - return personPhone; - } - - public void setPersonPhone(String personPhone) { - this.personPhone = personPhone; - } -} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java new file mode 100644 index 0000000..29fbd5d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPersonOnlineModel { + Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java new file mode 100644 index 0000000..7c82995 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java @@ -0,0 +1,58 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.OnlinePersonBean; +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; + +/** + * @author : Pengxh + * @time : 2021/4/15 11:21 + * @email : 290677893@qq.com + **/ +public class PersonOnlineModelImpl implements IPersonOnlineModel { + + private OnGetOnlinePersonListener listener; + + public PersonOnlineModelImpl(OnGetOnlinePersonListener onlinePersonListener) { + this.listener = onlinePersonListener; + } + + /** + * 数据回调接口 + */ + public interface OnGetOnlinePersonListener { + void onSuccess(OnlinePersonBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine) { + Observable observable = RetrofitServiceManager.getOnlinePersonResult(deptid, roleTips, isOnLine); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (listener != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(OnlinePersonBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java new file mode 100644 index 0000000..c51821c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPersonOnlinePresenter { + void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java new file mode 100644 index 0000000..4932e8f --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.OnlinePersonBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PersonOnlineModelImpl; +import com.casic.dcms.mvp.view.IPersonOnlineView; + +public class PersonOnlinePresenterImpl extends BasePresenter implements IPersonOnlinePresenter, + PersonOnlineModelImpl.OnGetOnlinePersonListener { + + private IPersonOnlineView view; + private PersonOnlineModelImpl model; + + public PersonOnlinePresenterImpl(IPersonOnlineView onlineView) { + this.view = onlineView; + model = new PersonOnlineModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine) { + addSubscription(model.sendRetrofitRequest(deptid, roleTips, isOnLine)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(OnlinePersonBean resultBean) { + view.onlineResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java index 28c5abf..553776a 100644 --- a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java @@ -1,6 +1,7 @@ package com.casic.dcms.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -74,6 +75,9 @@ void bindView(CaseListResultBean.DataBean.RowsBean rowsBean) { String eorcName = rowsBean.getEorcName(); + if (TextUtils.isEmpty(eorcName)) { + eorcName = "未知"; + } leftTextView.setText(eorcName.substring(0, 1)); titleView.setText(rowsBean.getCasetypeName()); contentView.setText(rowsBean.getCasetypeDetailName()); diff --git a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java index 058ec63..eae9e88 100644 --- a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java @@ -10,7 +10,7 @@ import androidx.annotation.Nullable; import com.casic.dcms.R; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import java.util.ArrayList; import java.util.List; @@ -23,14 +23,14 @@ public class DeptExpandableAdapter extends BaseExpandableListAdapter { private List groupData = new ArrayList<>(); - private List> childData = new ArrayList<>(); + private List> childData = new ArrayList<>(); private LayoutInflater layoutInflater; public DeptExpandableAdapter(Context mContext) { layoutInflater = LayoutInflater.from(mContext); } - public void setData(@Nullable List groupList, @Nullable List> childList) { + public void setData(@Nullable List groupList, @Nullable List> childList) { groupData.clear(); childData.clear(); if (groupList != null) { diff --git a/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java new file mode 100644 index 0000000..9c4cca5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java @@ -0,0 +1,135 @@ +package com.casic.dcms.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PersonBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:11 + * @email : 290677893@qq.com + **/ +public class OnlinePersonAdapter extends BaseExpandableListAdapter { + + private List groupData = new ArrayList<>(); + private List> childData = new ArrayList<>(); + private LayoutInflater layoutInflater; + + public OnlinePersonAdapter(Context mContext) { + layoutInflater = LayoutInflater.from(mContext); + } + + public void setData(@Nullable List groupList, @Nullable List> childList) { + groupData.clear(); + childData.clear(); + if (groupList != null) { + this.groupData = groupList; + if (childList != null) { + this.childData = childList; + } + } + notifyDataSetChanged(); + } + + @Override + public int getGroupCount() { + return groupData.size(); + } + + @Override + public int getChildrenCount(int groupPosition) { + return childData.get(groupPosition).size(); + } + + @Override + public Object getGroup(int groupPosition) { + return groupData.get(groupPosition); + } + + @Override + public Object getChild(int groupPosition, int childPosition) { + return childData.get(groupPosition).get(childPosition); + } + + @Override + public long getGroupId(int groupPosition) { + return groupPosition; + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return childPosition; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { + GroupViewHolder groupHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_group_list, parent, false); + groupHolder = new GroupViewHolder(); + groupHolder.groupNameView = convertView.findViewById(R.id.groupNameView); + convertView.setTag(groupHolder); + } else { + groupHolder = (GroupViewHolder) convertView.getTag(); + } + groupHolder.groupNameView.setText(groupData.get(groupPosition)); + return convertView; + } + + @Override + public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { + ChildViewHolder itemHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_child_online, parent, false); + itemHolder = new ChildViewHolder(); + itemHolder.personStatusView = convertView.findViewById(R.id.personStatusView); + itemHolder.childNameView = convertView.findViewById(R.id.childNameView); + itemHolder.onlineTimeView = convertView.findViewById(R.id.onlineTimeView); + convertView.setTag(itemHolder); + } else { + itemHolder = (ChildViewHolder) convertView.getTag(); + } + boolean onLine = childData.get(groupPosition).get(childPosition).isOnLine(); + if (onLine) { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_online); + } else { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_offline); + } + itemHolder.childNameView.setText(childData.get(groupPosition).get(childPosition).getPersonName()); + itemHolder.onlineTimeView.setText(childData.get(groupPosition).get(childPosition).getLastTimeFmt()); + return convertView; + } + + //设置子列表是否可选中 + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return true; + } + + private static class GroupViewHolder { + private TextView groupNameView; + } + + private static class ChildViewHolder { + private ImageView personStatusView; + private TextView childNameView; + private TextView onlineTimeView; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java new file mode 100644 index 0000000..6110d6a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java @@ -0,0 +1,216 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class OnlinePersonBean { + + /** + * code : 200.0 + * data : [{"account":"ldadmin","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"2021-02-20","lastTimeFmt":"2021-02-20 17:33:43","name":"路灯管理员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1357146261327441921"},{"account":"ldsczy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所处置员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179797586866178"},{"account":"ldspqy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所派遣员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179555294507010"}] + * message : 请求成功 + * success : true + */ + + private double code; + private String message; + private boolean success; + private List data; + + public double getCode() { + return code; + } + + public void setCode(double code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * account : ldadmin + * deptId : 1344118138553909250 + * deptName : 路灯所 + * deviceName : + * id : + * imei : + * lastTime : 2021-02-20 + * lastTimeFmt : 2021-02-20 17:33:43 + * name : 路灯管理员 + * networkNumber : + * onLine : false + * phone : + * positionLat : + * positionLng : + * targetId : + * userId : 1357146261327441921 + */ + + private String account; + private String deptId; + private String deptName; + private String deviceName; + private String id; + private String imei; + private String lastTime; + private String lastTimeFmt; + private String name; + private String networkNumber; + private boolean onLine; + private String phone; + private String positionLat; + private String positionLng; + private String targetId; + private String userId; + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImei() { + return imei; + } + + public void setImei(String imei) { + this.imei = imei; + } + + public String getLastTime() { + return lastTime; + } + + public void setLastTime(String lastTime) { + this.lastTime = lastTime; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNetworkNumber() { + return networkNumber; + } + + public void setNetworkNumber(String networkNumber) { + this.networkNumber = networkNumber; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPositionLat() { + return positionLat; + } + + public void setPositionLat(String positionLat) { + this.positionLat = positionLat; + } + + public String getPositionLng() { + return positionLng; + } + + public void setPositionLng(String positionLng) { + this.positionLng = positionLng; + } + + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonBean.java b/app/src/main/java/com/casic/dcms/bean/PersonBean.java new file mode 100644 index 0000000..3d33dd4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PersonBean.java @@ -0,0 +1,54 @@ +package com.casic.dcms.bean; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:00 + * @email : 290677893@qq.com + **/ +public class PersonBean { + private String personDept; + private String personName; + private String personPhone; + private String lastTimeFmt; + private boolean onLine; + + public String getPersonDept() { + return personDept; + } + + public void setPersonDept(String personDept) { + this.personDept = personDept; + } + + public String getPersonName() { + return personName; + } + + public void setPersonName(String personName) { + this.personName = personName; + } + + public String getPersonPhone() { + return personPhone; + } + + public void setPersonPhone(String personPhone) { + this.personPhone = personPhone; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java b/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java deleted file mode 100644 index 96f70a4..0000000 --- a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dcms.bean; - -/** - * @author : Pengxh - * @time : 2021/4/15 13:00 - * @email : 290677893@qq.com - **/ -public class PersonPhoneBean { - private String personDept; - private String personName; - private String personPhone; - - public String getPersonDept() { - return personDept; - } - - public void setPersonDept(String personDept) { - this.personDept = personDept; - } - - public String getPersonName() { - return personName; - } - - public void setPersonName(String personName) { - this.personName = personName; - } - - public String getPersonPhone() { - return personPhone; - } - - public void setPersonPhone(String personPhone) { - this.personPhone = personPhone; - } -} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java new file mode 100644 index 0000000..29fbd5d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPersonOnlineModel { + Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java new file mode 100644 index 0000000..7c82995 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java @@ -0,0 +1,58 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.OnlinePersonBean; +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; + +/** + * @author : Pengxh + * @time : 2021/4/15 11:21 + * @email : 290677893@qq.com + **/ +public class PersonOnlineModelImpl implements IPersonOnlineModel { + + private OnGetOnlinePersonListener listener; + + public PersonOnlineModelImpl(OnGetOnlinePersonListener onlinePersonListener) { + this.listener = onlinePersonListener; + } + + /** + * 数据回调接口 + */ + public interface OnGetOnlinePersonListener { + void onSuccess(OnlinePersonBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine) { + Observable observable = RetrofitServiceManager.getOnlinePersonResult(deptid, roleTips, isOnLine); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (listener != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(OnlinePersonBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java new file mode 100644 index 0000000..c51821c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPersonOnlinePresenter { + void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java new file mode 100644 index 0000000..4932e8f --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.OnlinePersonBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PersonOnlineModelImpl; +import com.casic.dcms.mvp.view.IPersonOnlineView; + +public class PersonOnlinePresenterImpl extends BasePresenter implements IPersonOnlinePresenter, + PersonOnlineModelImpl.OnGetOnlinePersonListener { + + private IPersonOnlineView view; + private PersonOnlineModelImpl model; + + public PersonOnlinePresenterImpl(IPersonOnlineView onlineView) { + this.view = onlineView; + model = new PersonOnlineModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine) { + addSubscription(model.sendRetrofitRequest(deptid, roleTips, isOnLine)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(OnlinePersonBean resultBean) { + view.onlineResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java new file mode 100644 index 0000000..1b2e555 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.OnlinePersonBean; + +public interface IPersonOnlineView { + void onlineResult(OnlinePersonBean result); +} diff --git a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java index 28c5abf..553776a 100644 --- a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java @@ -1,6 +1,7 @@ package com.casic.dcms.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -74,6 +75,9 @@ void bindView(CaseListResultBean.DataBean.RowsBean rowsBean) { String eorcName = rowsBean.getEorcName(); + if (TextUtils.isEmpty(eorcName)) { + eorcName = "未知"; + } leftTextView.setText(eorcName.substring(0, 1)); titleView.setText(rowsBean.getCasetypeName()); contentView.setText(rowsBean.getCasetypeDetailName()); diff --git a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java index 058ec63..eae9e88 100644 --- a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java @@ -10,7 +10,7 @@ import androidx.annotation.Nullable; import com.casic.dcms.R; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import java.util.ArrayList; import java.util.List; @@ -23,14 +23,14 @@ public class DeptExpandableAdapter extends BaseExpandableListAdapter { private List groupData = new ArrayList<>(); - private List> childData = new ArrayList<>(); + private List> childData = new ArrayList<>(); private LayoutInflater layoutInflater; public DeptExpandableAdapter(Context mContext) { layoutInflater = LayoutInflater.from(mContext); } - public void setData(@Nullable List groupList, @Nullable List> childList) { + public void setData(@Nullable List groupList, @Nullable List> childList) { groupData.clear(); childData.clear(); if (groupList != null) { diff --git a/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java new file mode 100644 index 0000000..9c4cca5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java @@ -0,0 +1,135 @@ +package com.casic.dcms.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PersonBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:11 + * @email : 290677893@qq.com + **/ +public class OnlinePersonAdapter extends BaseExpandableListAdapter { + + private List groupData = new ArrayList<>(); + private List> childData = new ArrayList<>(); + private LayoutInflater layoutInflater; + + public OnlinePersonAdapter(Context mContext) { + layoutInflater = LayoutInflater.from(mContext); + } + + public void setData(@Nullable List groupList, @Nullable List> childList) { + groupData.clear(); + childData.clear(); + if (groupList != null) { + this.groupData = groupList; + if (childList != null) { + this.childData = childList; + } + } + notifyDataSetChanged(); + } + + @Override + public int getGroupCount() { + return groupData.size(); + } + + @Override + public int getChildrenCount(int groupPosition) { + return childData.get(groupPosition).size(); + } + + @Override + public Object getGroup(int groupPosition) { + return groupData.get(groupPosition); + } + + @Override + public Object getChild(int groupPosition, int childPosition) { + return childData.get(groupPosition).get(childPosition); + } + + @Override + public long getGroupId(int groupPosition) { + return groupPosition; + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return childPosition; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { + GroupViewHolder groupHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_group_list, parent, false); + groupHolder = new GroupViewHolder(); + groupHolder.groupNameView = convertView.findViewById(R.id.groupNameView); + convertView.setTag(groupHolder); + } else { + groupHolder = (GroupViewHolder) convertView.getTag(); + } + groupHolder.groupNameView.setText(groupData.get(groupPosition)); + return convertView; + } + + @Override + public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { + ChildViewHolder itemHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_child_online, parent, false); + itemHolder = new ChildViewHolder(); + itemHolder.personStatusView = convertView.findViewById(R.id.personStatusView); + itemHolder.childNameView = convertView.findViewById(R.id.childNameView); + itemHolder.onlineTimeView = convertView.findViewById(R.id.onlineTimeView); + convertView.setTag(itemHolder); + } else { + itemHolder = (ChildViewHolder) convertView.getTag(); + } + boolean onLine = childData.get(groupPosition).get(childPosition).isOnLine(); + if (onLine) { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_online); + } else { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_offline); + } + itemHolder.childNameView.setText(childData.get(groupPosition).get(childPosition).getPersonName()); + itemHolder.onlineTimeView.setText(childData.get(groupPosition).get(childPosition).getLastTimeFmt()); + return convertView; + } + + //设置子列表是否可选中 + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return true; + } + + private static class GroupViewHolder { + private TextView groupNameView; + } + + private static class ChildViewHolder { + private ImageView personStatusView; + private TextView childNameView; + private TextView onlineTimeView; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java new file mode 100644 index 0000000..6110d6a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java @@ -0,0 +1,216 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class OnlinePersonBean { + + /** + * code : 200.0 + * data : [{"account":"ldadmin","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"2021-02-20","lastTimeFmt":"2021-02-20 17:33:43","name":"路灯管理员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1357146261327441921"},{"account":"ldsczy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所处置员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179797586866178"},{"account":"ldspqy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所派遣员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179555294507010"}] + * message : 请求成功 + * success : true + */ + + private double code; + private String message; + private boolean success; + private List data; + + public double getCode() { + return code; + } + + public void setCode(double code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * account : ldadmin + * deptId : 1344118138553909250 + * deptName : 路灯所 + * deviceName : + * id : + * imei : + * lastTime : 2021-02-20 + * lastTimeFmt : 2021-02-20 17:33:43 + * name : 路灯管理员 + * networkNumber : + * onLine : false + * phone : + * positionLat : + * positionLng : + * targetId : + * userId : 1357146261327441921 + */ + + private String account; + private String deptId; + private String deptName; + private String deviceName; + private String id; + private String imei; + private String lastTime; + private String lastTimeFmt; + private String name; + private String networkNumber; + private boolean onLine; + private String phone; + private String positionLat; + private String positionLng; + private String targetId; + private String userId; + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImei() { + return imei; + } + + public void setImei(String imei) { + this.imei = imei; + } + + public String getLastTime() { + return lastTime; + } + + public void setLastTime(String lastTime) { + this.lastTime = lastTime; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNetworkNumber() { + return networkNumber; + } + + public void setNetworkNumber(String networkNumber) { + this.networkNumber = networkNumber; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPositionLat() { + return positionLat; + } + + public void setPositionLat(String positionLat) { + this.positionLat = positionLat; + } + + public String getPositionLng() { + return positionLng; + } + + public void setPositionLng(String positionLng) { + this.positionLng = positionLng; + } + + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonBean.java b/app/src/main/java/com/casic/dcms/bean/PersonBean.java new file mode 100644 index 0000000..3d33dd4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PersonBean.java @@ -0,0 +1,54 @@ +package com.casic.dcms.bean; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:00 + * @email : 290677893@qq.com + **/ +public class PersonBean { + private String personDept; + private String personName; + private String personPhone; + private String lastTimeFmt; + private boolean onLine; + + public String getPersonDept() { + return personDept; + } + + public void setPersonDept(String personDept) { + this.personDept = personDept; + } + + public String getPersonName() { + return personName; + } + + public void setPersonName(String personName) { + this.personName = personName; + } + + public String getPersonPhone() { + return personPhone; + } + + public void setPersonPhone(String personPhone) { + this.personPhone = personPhone; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java b/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java deleted file mode 100644 index 96f70a4..0000000 --- a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dcms.bean; - -/** - * @author : Pengxh - * @time : 2021/4/15 13:00 - * @email : 290677893@qq.com - **/ -public class PersonPhoneBean { - private String personDept; - private String personName; - private String personPhone; - - public String getPersonDept() { - return personDept; - } - - public void setPersonDept(String personDept) { - this.personDept = personDept; - } - - public String getPersonName() { - return personName; - } - - public void setPersonName(String personName) { - this.personName = personName; - } - - public String getPersonPhone() { - return personPhone; - } - - public void setPersonPhone(String personPhone) { - this.personPhone = personPhone; - } -} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java new file mode 100644 index 0000000..29fbd5d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPersonOnlineModel { + Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java new file mode 100644 index 0000000..7c82995 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java @@ -0,0 +1,58 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.OnlinePersonBean; +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; + +/** + * @author : Pengxh + * @time : 2021/4/15 11:21 + * @email : 290677893@qq.com + **/ +public class PersonOnlineModelImpl implements IPersonOnlineModel { + + private OnGetOnlinePersonListener listener; + + public PersonOnlineModelImpl(OnGetOnlinePersonListener onlinePersonListener) { + this.listener = onlinePersonListener; + } + + /** + * 数据回调接口 + */ + public interface OnGetOnlinePersonListener { + void onSuccess(OnlinePersonBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine) { + Observable observable = RetrofitServiceManager.getOnlinePersonResult(deptid, roleTips, isOnLine); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (listener != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(OnlinePersonBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java new file mode 100644 index 0000000..c51821c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPersonOnlinePresenter { + void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java new file mode 100644 index 0000000..4932e8f --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.OnlinePersonBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PersonOnlineModelImpl; +import com.casic.dcms.mvp.view.IPersonOnlineView; + +public class PersonOnlinePresenterImpl extends BasePresenter implements IPersonOnlinePresenter, + PersonOnlineModelImpl.OnGetOnlinePersonListener { + + private IPersonOnlineView view; + private PersonOnlineModelImpl model; + + public PersonOnlinePresenterImpl(IPersonOnlineView onlineView) { + this.view = onlineView; + model = new PersonOnlineModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine) { + addSubscription(model.sendRetrofitRequest(deptid, roleTips, isOnLine)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(OnlinePersonBean resultBean) { + view.onlineResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java new file mode 100644 index 0000000..1b2e555 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.OnlinePersonBean; + +public interface IPersonOnlineView { + void onlineResult(OnlinePersonBean result); +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 2e67e25..f365d3d 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -51,7 +51,7 @@ private String startTime; private String endTime; private String eorc; - private int pageIndex = 0; + private int pageIndex = 1; /** * 临时存储网络请求到的数据 */ @@ -87,7 +87,8 @@ endTime = getIntent().getStringExtra("endTime"); eorc = getIntent().getStringExtra("eorc"); //加载第一页 - caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, endTime, eorc, 0); + caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, + endTime, eorc, pageIndex); } @Override @@ -97,7 +98,7 @@ public void onRefresh(@NonNull final RefreshLayout refreshLayout) { isRefresh = true; //刷新之后页码重置 - pageIndex = 0; + pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, endTime, eorc, pageIndex); } diff --git a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java index 28c5abf..553776a 100644 --- a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java @@ -1,6 +1,7 @@ package com.casic.dcms.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -74,6 +75,9 @@ void bindView(CaseListResultBean.DataBean.RowsBean rowsBean) { String eorcName = rowsBean.getEorcName(); + if (TextUtils.isEmpty(eorcName)) { + eorcName = "未知"; + } leftTextView.setText(eorcName.substring(0, 1)); titleView.setText(rowsBean.getCasetypeName()); contentView.setText(rowsBean.getCasetypeDetailName()); diff --git a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java index 058ec63..eae9e88 100644 --- a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java @@ -10,7 +10,7 @@ import androidx.annotation.Nullable; import com.casic.dcms.R; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import java.util.ArrayList; import java.util.List; @@ -23,14 +23,14 @@ public class DeptExpandableAdapter extends BaseExpandableListAdapter { private List groupData = new ArrayList<>(); - private List> childData = new ArrayList<>(); + private List> childData = new ArrayList<>(); private LayoutInflater layoutInflater; public DeptExpandableAdapter(Context mContext) { layoutInflater = LayoutInflater.from(mContext); } - public void setData(@Nullable List groupList, @Nullable List> childList) { + public void setData(@Nullable List groupList, @Nullable List> childList) { groupData.clear(); childData.clear(); if (groupList != null) { diff --git a/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java new file mode 100644 index 0000000..9c4cca5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java @@ -0,0 +1,135 @@ +package com.casic.dcms.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PersonBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:11 + * @email : 290677893@qq.com + **/ +public class OnlinePersonAdapter extends BaseExpandableListAdapter { + + private List groupData = new ArrayList<>(); + private List> childData = new ArrayList<>(); + private LayoutInflater layoutInflater; + + public OnlinePersonAdapter(Context mContext) { + layoutInflater = LayoutInflater.from(mContext); + } + + public void setData(@Nullable List groupList, @Nullable List> childList) { + groupData.clear(); + childData.clear(); + if (groupList != null) { + this.groupData = groupList; + if (childList != null) { + this.childData = childList; + } + } + notifyDataSetChanged(); + } + + @Override + public int getGroupCount() { + return groupData.size(); + } + + @Override + public int getChildrenCount(int groupPosition) { + return childData.get(groupPosition).size(); + } + + @Override + public Object getGroup(int groupPosition) { + return groupData.get(groupPosition); + } + + @Override + public Object getChild(int groupPosition, int childPosition) { + return childData.get(groupPosition).get(childPosition); + } + + @Override + public long getGroupId(int groupPosition) { + return groupPosition; + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return childPosition; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { + GroupViewHolder groupHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_group_list, parent, false); + groupHolder = new GroupViewHolder(); + groupHolder.groupNameView = convertView.findViewById(R.id.groupNameView); + convertView.setTag(groupHolder); + } else { + groupHolder = (GroupViewHolder) convertView.getTag(); + } + groupHolder.groupNameView.setText(groupData.get(groupPosition)); + return convertView; + } + + @Override + public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { + ChildViewHolder itemHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_child_online, parent, false); + itemHolder = new ChildViewHolder(); + itemHolder.personStatusView = convertView.findViewById(R.id.personStatusView); + itemHolder.childNameView = convertView.findViewById(R.id.childNameView); + itemHolder.onlineTimeView = convertView.findViewById(R.id.onlineTimeView); + convertView.setTag(itemHolder); + } else { + itemHolder = (ChildViewHolder) convertView.getTag(); + } + boolean onLine = childData.get(groupPosition).get(childPosition).isOnLine(); + if (onLine) { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_online); + } else { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_offline); + } + itemHolder.childNameView.setText(childData.get(groupPosition).get(childPosition).getPersonName()); + itemHolder.onlineTimeView.setText(childData.get(groupPosition).get(childPosition).getLastTimeFmt()); + return convertView; + } + + //设置子列表是否可选中 + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return true; + } + + private static class GroupViewHolder { + private TextView groupNameView; + } + + private static class ChildViewHolder { + private ImageView personStatusView; + private TextView childNameView; + private TextView onlineTimeView; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java new file mode 100644 index 0000000..6110d6a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java @@ -0,0 +1,216 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class OnlinePersonBean { + + /** + * code : 200.0 + * data : [{"account":"ldadmin","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"2021-02-20","lastTimeFmt":"2021-02-20 17:33:43","name":"路灯管理员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1357146261327441921"},{"account":"ldsczy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所处置员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179797586866178"},{"account":"ldspqy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所派遣员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179555294507010"}] + * message : 请求成功 + * success : true + */ + + private double code; + private String message; + private boolean success; + private List data; + + public double getCode() { + return code; + } + + public void setCode(double code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * account : ldadmin + * deptId : 1344118138553909250 + * deptName : 路灯所 + * deviceName : + * id : + * imei : + * lastTime : 2021-02-20 + * lastTimeFmt : 2021-02-20 17:33:43 + * name : 路灯管理员 + * networkNumber : + * onLine : false + * phone : + * positionLat : + * positionLng : + * targetId : + * userId : 1357146261327441921 + */ + + private String account; + private String deptId; + private String deptName; + private String deviceName; + private String id; + private String imei; + private String lastTime; + private String lastTimeFmt; + private String name; + private String networkNumber; + private boolean onLine; + private String phone; + private String positionLat; + private String positionLng; + private String targetId; + private String userId; + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImei() { + return imei; + } + + public void setImei(String imei) { + this.imei = imei; + } + + public String getLastTime() { + return lastTime; + } + + public void setLastTime(String lastTime) { + this.lastTime = lastTime; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNetworkNumber() { + return networkNumber; + } + + public void setNetworkNumber(String networkNumber) { + this.networkNumber = networkNumber; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPositionLat() { + return positionLat; + } + + public void setPositionLat(String positionLat) { + this.positionLat = positionLat; + } + + public String getPositionLng() { + return positionLng; + } + + public void setPositionLng(String positionLng) { + this.positionLng = positionLng; + } + + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonBean.java b/app/src/main/java/com/casic/dcms/bean/PersonBean.java new file mode 100644 index 0000000..3d33dd4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PersonBean.java @@ -0,0 +1,54 @@ +package com.casic.dcms.bean; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:00 + * @email : 290677893@qq.com + **/ +public class PersonBean { + private String personDept; + private String personName; + private String personPhone; + private String lastTimeFmt; + private boolean onLine; + + public String getPersonDept() { + return personDept; + } + + public void setPersonDept(String personDept) { + this.personDept = personDept; + } + + public String getPersonName() { + return personName; + } + + public void setPersonName(String personName) { + this.personName = personName; + } + + public String getPersonPhone() { + return personPhone; + } + + public void setPersonPhone(String personPhone) { + this.personPhone = personPhone; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java b/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java deleted file mode 100644 index 96f70a4..0000000 --- a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dcms.bean; - -/** - * @author : Pengxh - * @time : 2021/4/15 13:00 - * @email : 290677893@qq.com - **/ -public class PersonPhoneBean { - private String personDept; - private String personName; - private String personPhone; - - public String getPersonDept() { - return personDept; - } - - public void setPersonDept(String personDept) { - this.personDept = personDept; - } - - public String getPersonName() { - return personName; - } - - public void setPersonName(String personName) { - this.personName = personName; - } - - public String getPersonPhone() { - return personPhone; - } - - public void setPersonPhone(String personPhone) { - this.personPhone = personPhone; - } -} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java new file mode 100644 index 0000000..29fbd5d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPersonOnlineModel { + Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java new file mode 100644 index 0000000..7c82995 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java @@ -0,0 +1,58 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.OnlinePersonBean; +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; + +/** + * @author : Pengxh + * @time : 2021/4/15 11:21 + * @email : 290677893@qq.com + **/ +public class PersonOnlineModelImpl implements IPersonOnlineModel { + + private OnGetOnlinePersonListener listener; + + public PersonOnlineModelImpl(OnGetOnlinePersonListener onlinePersonListener) { + this.listener = onlinePersonListener; + } + + /** + * 数据回调接口 + */ + public interface OnGetOnlinePersonListener { + void onSuccess(OnlinePersonBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine) { + Observable observable = RetrofitServiceManager.getOnlinePersonResult(deptid, roleTips, isOnLine); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (listener != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(OnlinePersonBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java new file mode 100644 index 0000000..c51821c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPersonOnlinePresenter { + void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java new file mode 100644 index 0000000..4932e8f --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.OnlinePersonBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PersonOnlineModelImpl; +import com.casic.dcms.mvp.view.IPersonOnlineView; + +public class PersonOnlinePresenterImpl extends BasePresenter implements IPersonOnlinePresenter, + PersonOnlineModelImpl.OnGetOnlinePersonListener { + + private IPersonOnlineView view; + private PersonOnlineModelImpl model; + + public PersonOnlinePresenterImpl(IPersonOnlineView onlineView) { + this.view = onlineView; + model = new PersonOnlineModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine) { + addSubscription(model.sendRetrofitRequest(deptid, roleTips, isOnLine)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(OnlinePersonBean resultBean) { + view.onlineResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java new file mode 100644 index 0000000..1b2e555 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.OnlinePersonBean; + +public interface IPersonOnlineView { + void onlineResult(OnlinePersonBean result); +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 2e67e25..f365d3d 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -51,7 +51,7 @@ private String startTime; private String endTime; private String eorc; - private int pageIndex = 0; + private int pageIndex = 1; /** * 临时存储网络请求到的数据 */ @@ -87,7 +87,8 @@ endTime = getIntent().getStringExtra("endTime"); eorc = getIntent().getStringExtra("eorc"); //加载第一页 - caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, endTime, eorc, 0); + caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, + endTime, eorc, pageIndex); } @Override @@ -97,7 +98,7 @@ public void onRefresh(@NonNull final RefreshLayout refreshLayout) { isRefresh = true; //刷新之后页码重置 - pageIndex = 0; + pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, endTime, eorc, pageIndex); } diff --git a/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java b/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java index 1d742e1..877d23d 100644 --- a/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java @@ -1,10 +1,20 @@ package com.casic.dcms.ui; +import android.view.View; + +import androidx.core.content.ContextCompat; + import com.casic.dcms.R; import com.casic.dcms.base.BaseActivity; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import butterknife.BindView; public class MapWatchViewActivity extends BaseActivity { + @BindView(R.id.watchMapTopLayout) + QMUITopBarLayout watchMapTopLayout; + @Override public int initLayoutView() { return R.layout.activity_map_watch; @@ -12,7 +22,14 @@ @Override protected void setupTopBarLayout() { - + watchMapTopLayout.setTitle("地图查看").setTextColor(ContextCompat.getColor(this, R.color.white)); + watchMapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + watchMapTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); } @Override diff --git a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java index 28c5abf..553776a 100644 --- a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java @@ -1,6 +1,7 @@ package com.casic.dcms.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -74,6 +75,9 @@ void bindView(CaseListResultBean.DataBean.RowsBean rowsBean) { String eorcName = rowsBean.getEorcName(); + if (TextUtils.isEmpty(eorcName)) { + eorcName = "未知"; + } leftTextView.setText(eorcName.substring(0, 1)); titleView.setText(rowsBean.getCasetypeName()); contentView.setText(rowsBean.getCasetypeDetailName()); diff --git a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java index 058ec63..eae9e88 100644 --- a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java @@ -10,7 +10,7 @@ import androidx.annotation.Nullable; import com.casic.dcms.R; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import java.util.ArrayList; import java.util.List; @@ -23,14 +23,14 @@ public class DeptExpandableAdapter extends BaseExpandableListAdapter { private List groupData = new ArrayList<>(); - private List> childData = new ArrayList<>(); + private List> childData = new ArrayList<>(); private LayoutInflater layoutInflater; public DeptExpandableAdapter(Context mContext) { layoutInflater = LayoutInflater.from(mContext); } - public void setData(@Nullable List groupList, @Nullable List> childList) { + public void setData(@Nullable List groupList, @Nullable List> childList) { groupData.clear(); childData.clear(); if (groupList != null) { diff --git a/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java new file mode 100644 index 0000000..9c4cca5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java @@ -0,0 +1,135 @@ +package com.casic.dcms.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PersonBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:11 + * @email : 290677893@qq.com + **/ +public class OnlinePersonAdapter extends BaseExpandableListAdapter { + + private List groupData = new ArrayList<>(); + private List> childData = new ArrayList<>(); + private LayoutInflater layoutInflater; + + public OnlinePersonAdapter(Context mContext) { + layoutInflater = LayoutInflater.from(mContext); + } + + public void setData(@Nullable List groupList, @Nullable List> childList) { + groupData.clear(); + childData.clear(); + if (groupList != null) { + this.groupData = groupList; + if (childList != null) { + this.childData = childList; + } + } + notifyDataSetChanged(); + } + + @Override + public int getGroupCount() { + return groupData.size(); + } + + @Override + public int getChildrenCount(int groupPosition) { + return childData.get(groupPosition).size(); + } + + @Override + public Object getGroup(int groupPosition) { + return groupData.get(groupPosition); + } + + @Override + public Object getChild(int groupPosition, int childPosition) { + return childData.get(groupPosition).get(childPosition); + } + + @Override + public long getGroupId(int groupPosition) { + return groupPosition; + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return childPosition; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { + GroupViewHolder groupHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_group_list, parent, false); + groupHolder = new GroupViewHolder(); + groupHolder.groupNameView = convertView.findViewById(R.id.groupNameView); + convertView.setTag(groupHolder); + } else { + groupHolder = (GroupViewHolder) convertView.getTag(); + } + groupHolder.groupNameView.setText(groupData.get(groupPosition)); + return convertView; + } + + @Override + public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { + ChildViewHolder itemHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_child_online, parent, false); + itemHolder = new ChildViewHolder(); + itemHolder.personStatusView = convertView.findViewById(R.id.personStatusView); + itemHolder.childNameView = convertView.findViewById(R.id.childNameView); + itemHolder.onlineTimeView = convertView.findViewById(R.id.onlineTimeView); + convertView.setTag(itemHolder); + } else { + itemHolder = (ChildViewHolder) convertView.getTag(); + } + boolean onLine = childData.get(groupPosition).get(childPosition).isOnLine(); + if (onLine) { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_online); + } else { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_offline); + } + itemHolder.childNameView.setText(childData.get(groupPosition).get(childPosition).getPersonName()); + itemHolder.onlineTimeView.setText(childData.get(groupPosition).get(childPosition).getLastTimeFmt()); + return convertView; + } + + //设置子列表是否可选中 + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return true; + } + + private static class GroupViewHolder { + private TextView groupNameView; + } + + private static class ChildViewHolder { + private ImageView personStatusView; + private TextView childNameView; + private TextView onlineTimeView; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java new file mode 100644 index 0000000..6110d6a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java @@ -0,0 +1,216 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class OnlinePersonBean { + + /** + * code : 200.0 + * data : [{"account":"ldadmin","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"2021-02-20","lastTimeFmt":"2021-02-20 17:33:43","name":"路灯管理员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1357146261327441921"},{"account":"ldsczy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所处置员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179797586866178"},{"account":"ldspqy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所派遣员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179555294507010"}] + * message : 请求成功 + * success : true + */ + + private double code; + private String message; + private boolean success; + private List data; + + public double getCode() { + return code; + } + + public void setCode(double code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * account : ldadmin + * deptId : 1344118138553909250 + * deptName : 路灯所 + * deviceName : + * id : + * imei : + * lastTime : 2021-02-20 + * lastTimeFmt : 2021-02-20 17:33:43 + * name : 路灯管理员 + * networkNumber : + * onLine : false + * phone : + * positionLat : + * positionLng : + * targetId : + * userId : 1357146261327441921 + */ + + private String account; + private String deptId; + private String deptName; + private String deviceName; + private String id; + private String imei; + private String lastTime; + private String lastTimeFmt; + private String name; + private String networkNumber; + private boolean onLine; + private String phone; + private String positionLat; + private String positionLng; + private String targetId; + private String userId; + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImei() { + return imei; + } + + public void setImei(String imei) { + this.imei = imei; + } + + public String getLastTime() { + return lastTime; + } + + public void setLastTime(String lastTime) { + this.lastTime = lastTime; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNetworkNumber() { + return networkNumber; + } + + public void setNetworkNumber(String networkNumber) { + this.networkNumber = networkNumber; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPositionLat() { + return positionLat; + } + + public void setPositionLat(String positionLat) { + this.positionLat = positionLat; + } + + public String getPositionLng() { + return positionLng; + } + + public void setPositionLng(String positionLng) { + this.positionLng = positionLng; + } + + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonBean.java b/app/src/main/java/com/casic/dcms/bean/PersonBean.java new file mode 100644 index 0000000..3d33dd4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PersonBean.java @@ -0,0 +1,54 @@ +package com.casic.dcms.bean; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:00 + * @email : 290677893@qq.com + **/ +public class PersonBean { + private String personDept; + private String personName; + private String personPhone; + private String lastTimeFmt; + private boolean onLine; + + public String getPersonDept() { + return personDept; + } + + public void setPersonDept(String personDept) { + this.personDept = personDept; + } + + public String getPersonName() { + return personName; + } + + public void setPersonName(String personName) { + this.personName = personName; + } + + public String getPersonPhone() { + return personPhone; + } + + public void setPersonPhone(String personPhone) { + this.personPhone = personPhone; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java b/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java deleted file mode 100644 index 96f70a4..0000000 --- a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dcms.bean; - -/** - * @author : Pengxh - * @time : 2021/4/15 13:00 - * @email : 290677893@qq.com - **/ -public class PersonPhoneBean { - private String personDept; - private String personName; - private String personPhone; - - public String getPersonDept() { - return personDept; - } - - public void setPersonDept(String personDept) { - this.personDept = personDept; - } - - public String getPersonName() { - return personName; - } - - public void setPersonName(String personName) { - this.personName = personName; - } - - public String getPersonPhone() { - return personPhone; - } - - public void setPersonPhone(String personPhone) { - this.personPhone = personPhone; - } -} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java new file mode 100644 index 0000000..29fbd5d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPersonOnlineModel { + Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java new file mode 100644 index 0000000..7c82995 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java @@ -0,0 +1,58 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.OnlinePersonBean; +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; + +/** + * @author : Pengxh + * @time : 2021/4/15 11:21 + * @email : 290677893@qq.com + **/ +public class PersonOnlineModelImpl implements IPersonOnlineModel { + + private OnGetOnlinePersonListener listener; + + public PersonOnlineModelImpl(OnGetOnlinePersonListener onlinePersonListener) { + this.listener = onlinePersonListener; + } + + /** + * 数据回调接口 + */ + public interface OnGetOnlinePersonListener { + void onSuccess(OnlinePersonBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine) { + Observable observable = RetrofitServiceManager.getOnlinePersonResult(deptid, roleTips, isOnLine); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (listener != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(OnlinePersonBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java new file mode 100644 index 0000000..c51821c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPersonOnlinePresenter { + void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java new file mode 100644 index 0000000..4932e8f --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.OnlinePersonBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PersonOnlineModelImpl; +import com.casic.dcms.mvp.view.IPersonOnlineView; + +public class PersonOnlinePresenterImpl extends BasePresenter implements IPersonOnlinePresenter, + PersonOnlineModelImpl.OnGetOnlinePersonListener { + + private IPersonOnlineView view; + private PersonOnlineModelImpl model; + + public PersonOnlinePresenterImpl(IPersonOnlineView onlineView) { + this.view = onlineView; + model = new PersonOnlineModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine) { + addSubscription(model.sendRetrofitRequest(deptid, roleTips, isOnLine)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(OnlinePersonBean resultBean) { + view.onlineResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java new file mode 100644 index 0000000..1b2e555 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.OnlinePersonBean; + +public interface IPersonOnlineView { + void onlineResult(OnlinePersonBean result); +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 2e67e25..f365d3d 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -51,7 +51,7 @@ private String startTime; private String endTime; private String eorc; - private int pageIndex = 0; + private int pageIndex = 1; /** * 临时存储网络请求到的数据 */ @@ -87,7 +87,8 @@ endTime = getIntent().getStringExtra("endTime"); eorc = getIntent().getStringExtra("eorc"); //加载第一页 - caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, endTime, eorc, 0); + caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, + endTime, eorc, pageIndex); } @Override @@ -97,7 +98,7 @@ public void onRefresh(@NonNull final RefreshLayout refreshLayout) { isRefresh = true; //刷新之后页码重置 - pageIndex = 0; + pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, endTime, eorc, pageIndex); } diff --git a/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java b/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java index 1d742e1..877d23d 100644 --- a/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java @@ -1,10 +1,20 @@ package com.casic.dcms.ui; +import android.view.View; + +import androidx.core.content.ContextCompat; + import com.casic.dcms.R; import com.casic.dcms.base.BaseActivity; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import butterknife.BindView; public class MapWatchViewActivity extends BaseActivity { + @BindView(R.id.watchMapTopLayout) + QMUITopBarLayout watchMapTopLayout; + @Override public int initLayoutView() { return R.layout.activity_map_watch; @@ -12,7 +22,14 @@ @Override protected void setupTopBarLayout() { - + watchMapTopLayout.setTitle("地图查看").setTextColor(ContextCompat.getColor(this, R.color.white)); + watchMapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + watchMapTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java index 3f9ba1e..fae1753 100644 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java @@ -1,9 +1,37 @@ package com.casic.dcms.ui; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; +import android.view.View; +import android.widget.ExpandableListView; -public class PersonOnlineActivity extends BaseActivity { +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.OnlinePersonAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.OnlinePersonBean; +import com.casic.dcms.bean.PersonBean; +import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl; +import com.casic.dcms.mvp.view.IPersonOnlineView; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; + +import butterknife.BindView; + +public class PersonOnlineActivity extends BaseActivity implements IPersonOnlineView { + + @BindView(R.id.onlineTopLayout) + QMUITopBarLayout onlineTopLayout; + @BindView(R.id.deptTreeView) + ExpandableListView deptTreeView; + + private PersonOnlinePresenterImpl onlinePresenter; + private HashSet deptSet = new HashSet<>(); + private List deptList = new ArrayList<>();//部门名集合 + private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 + private OnlinePersonAdapter onlinePersonAdapter; @Override public int initLayoutView() { @@ -12,16 +40,67 @@ @Override protected void setupTopBarLayout() { - + onlineTopLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); + onlineTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + onlineTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); } @Override public void initData() { - + onlinePresenter = new PersonOnlinePresenterImpl(this); + onlinePresenter.onReadyRetrofitRequest("", "", ""); + onlinePersonAdapter = new OnlinePersonAdapter(this); } @Override public void initEvent() { } + + @Override + public void onlineResult(OnlinePersonBean resultBean) { + if (resultBean.isSuccess()) { + List dataBeans = resultBean.getData(); + deptList.clear(); + for (OnlinePersonBean.DataBean bean : dataBeans) { + deptSet.add(bean.getDeptName()); + } + //hashSet去重然后转List + deptList = new ArrayList<>(deptSet); + if (deptList.size() > 0) { + deptAndPersons.clear(); + for (String title : deptList) { + List beanList = new ArrayList<>(); + for (OnlinePersonBean.DataBean dataBean : dataBeans) { + if (title.equals(dataBean.getDeptName())) { + PersonBean personBean = new PersonBean(); + personBean.setPersonDept(dataBean.getDeptName()); + personBean.setPersonName(dataBean.getName()); + personBean.setPersonPhone(dataBean.getPhone()); + personBean.setLastTimeFmt(dataBean.getLastTimeFmt()); + personBean.setOnLine(dataBean.isOnLine()); + + beanList.add(personBean); + } + } + deptAndPersons.add(beanList); + } + onlinePersonAdapter.setData(deptList, deptAndPersons); + deptTreeView.setAdapter(onlinePersonAdapter); + } + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (onlinePresenter != null) { + onlinePresenter.disposeRetrofitRequest(); + } + } } diff --git a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java index 28c5abf..553776a 100644 --- a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java @@ -1,6 +1,7 @@ package com.casic.dcms.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -74,6 +75,9 @@ void bindView(CaseListResultBean.DataBean.RowsBean rowsBean) { String eorcName = rowsBean.getEorcName(); + if (TextUtils.isEmpty(eorcName)) { + eorcName = "未知"; + } leftTextView.setText(eorcName.substring(0, 1)); titleView.setText(rowsBean.getCasetypeName()); contentView.setText(rowsBean.getCasetypeDetailName()); diff --git a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java index 058ec63..eae9e88 100644 --- a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java @@ -10,7 +10,7 @@ import androidx.annotation.Nullable; import com.casic.dcms.R; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import java.util.ArrayList; import java.util.List; @@ -23,14 +23,14 @@ public class DeptExpandableAdapter extends BaseExpandableListAdapter { private List groupData = new ArrayList<>(); - private List> childData = new ArrayList<>(); + private List> childData = new ArrayList<>(); private LayoutInflater layoutInflater; public DeptExpandableAdapter(Context mContext) { layoutInflater = LayoutInflater.from(mContext); } - public void setData(@Nullable List groupList, @Nullable List> childList) { + public void setData(@Nullable List groupList, @Nullable List> childList) { groupData.clear(); childData.clear(); if (groupList != null) { diff --git a/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java new file mode 100644 index 0000000..9c4cca5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java @@ -0,0 +1,135 @@ +package com.casic.dcms.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PersonBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:11 + * @email : 290677893@qq.com + **/ +public class OnlinePersonAdapter extends BaseExpandableListAdapter { + + private List groupData = new ArrayList<>(); + private List> childData = new ArrayList<>(); + private LayoutInflater layoutInflater; + + public OnlinePersonAdapter(Context mContext) { + layoutInflater = LayoutInflater.from(mContext); + } + + public void setData(@Nullable List groupList, @Nullable List> childList) { + groupData.clear(); + childData.clear(); + if (groupList != null) { + this.groupData = groupList; + if (childList != null) { + this.childData = childList; + } + } + notifyDataSetChanged(); + } + + @Override + public int getGroupCount() { + return groupData.size(); + } + + @Override + public int getChildrenCount(int groupPosition) { + return childData.get(groupPosition).size(); + } + + @Override + public Object getGroup(int groupPosition) { + return groupData.get(groupPosition); + } + + @Override + public Object getChild(int groupPosition, int childPosition) { + return childData.get(groupPosition).get(childPosition); + } + + @Override + public long getGroupId(int groupPosition) { + return groupPosition; + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return childPosition; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { + GroupViewHolder groupHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_group_list, parent, false); + groupHolder = new GroupViewHolder(); + groupHolder.groupNameView = convertView.findViewById(R.id.groupNameView); + convertView.setTag(groupHolder); + } else { + groupHolder = (GroupViewHolder) convertView.getTag(); + } + groupHolder.groupNameView.setText(groupData.get(groupPosition)); + return convertView; + } + + @Override + public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { + ChildViewHolder itemHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_child_online, parent, false); + itemHolder = new ChildViewHolder(); + itemHolder.personStatusView = convertView.findViewById(R.id.personStatusView); + itemHolder.childNameView = convertView.findViewById(R.id.childNameView); + itemHolder.onlineTimeView = convertView.findViewById(R.id.onlineTimeView); + convertView.setTag(itemHolder); + } else { + itemHolder = (ChildViewHolder) convertView.getTag(); + } + boolean onLine = childData.get(groupPosition).get(childPosition).isOnLine(); + if (onLine) { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_online); + } else { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_offline); + } + itemHolder.childNameView.setText(childData.get(groupPosition).get(childPosition).getPersonName()); + itemHolder.onlineTimeView.setText(childData.get(groupPosition).get(childPosition).getLastTimeFmt()); + return convertView; + } + + //设置子列表是否可选中 + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return true; + } + + private static class GroupViewHolder { + private TextView groupNameView; + } + + private static class ChildViewHolder { + private ImageView personStatusView; + private TextView childNameView; + private TextView onlineTimeView; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java new file mode 100644 index 0000000..6110d6a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java @@ -0,0 +1,216 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class OnlinePersonBean { + + /** + * code : 200.0 + * data : [{"account":"ldadmin","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"2021-02-20","lastTimeFmt":"2021-02-20 17:33:43","name":"路灯管理员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1357146261327441921"},{"account":"ldsczy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所处置员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179797586866178"},{"account":"ldspqy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所派遣员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179555294507010"}] + * message : 请求成功 + * success : true + */ + + private double code; + private String message; + private boolean success; + private List data; + + public double getCode() { + return code; + } + + public void setCode(double code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * account : ldadmin + * deptId : 1344118138553909250 + * deptName : 路灯所 + * deviceName : + * id : + * imei : + * lastTime : 2021-02-20 + * lastTimeFmt : 2021-02-20 17:33:43 + * name : 路灯管理员 + * networkNumber : + * onLine : false + * phone : + * positionLat : + * positionLng : + * targetId : + * userId : 1357146261327441921 + */ + + private String account; + private String deptId; + private String deptName; + private String deviceName; + private String id; + private String imei; + private String lastTime; + private String lastTimeFmt; + private String name; + private String networkNumber; + private boolean onLine; + private String phone; + private String positionLat; + private String positionLng; + private String targetId; + private String userId; + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImei() { + return imei; + } + + public void setImei(String imei) { + this.imei = imei; + } + + public String getLastTime() { + return lastTime; + } + + public void setLastTime(String lastTime) { + this.lastTime = lastTime; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNetworkNumber() { + return networkNumber; + } + + public void setNetworkNumber(String networkNumber) { + this.networkNumber = networkNumber; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPositionLat() { + return positionLat; + } + + public void setPositionLat(String positionLat) { + this.positionLat = positionLat; + } + + public String getPositionLng() { + return positionLng; + } + + public void setPositionLng(String positionLng) { + this.positionLng = positionLng; + } + + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonBean.java b/app/src/main/java/com/casic/dcms/bean/PersonBean.java new file mode 100644 index 0000000..3d33dd4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PersonBean.java @@ -0,0 +1,54 @@ +package com.casic.dcms.bean; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:00 + * @email : 290677893@qq.com + **/ +public class PersonBean { + private String personDept; + private String personName; + private String personPhone; + private String lastTimeFmt; + private boolean onLine; + + public String getPersonDept() { + return personDept; + } + + public void setPersonDept(String personDept) { + this.personDept = personDept; + } + + public String getPersonName() { + return personName; + } + + public void setPersonName(String personName) { + this.personName = personName; + } + + public String getPersonPhone() { + return personPhone; + } + + public void setPersonPhone(String personPhone) { + this.personPhone = personPhone; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java b/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java deleted file mode 100644 index 96f70a4..0000000 --- a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dcms.bean; - -/** - * @author : Pengxh - * @time : 2021/4/15 13:00 - * @email : 290677893@qq.com - **/ -public class PersonPhoneBean { - private String personDept; - private String personName; - private String personPhone; - - public String getPersonDept() { - return personDept; - } - - public void setPersonDept(String personDept) { - this.personDept = personDept; - } - - public String getPersonName() { - return personName; - } - - public void setPersonName(String personName) { - this.personName = personName; - } - - public String getPersonPhone() { - return personPhone; - } - - public void setPersonPhone(String personPhone) { - this.personPhone = personPhone; - } -} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java new file mode 100644 index 0000000..29fbd5d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPersonOnlineModel { + Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java new file mode 100644 index 0000000..7c82995 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java @@ -0,0 +1,58 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.OnlinePersonBean; +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; + +/** + * @author : Pengxh + * @time : 2021/4/15 11:21 + * @email : 290677893@qq.com + **/ +public class PersonOnlineModelImpl implements IPersonOnlineModel { + + private OnGetOnlinePersonListener listener; + + public PersonOnlineModelImpl(OnGetOnlinePersonListener onlinePersonListener) { + this.listener = onlinePersonListener; + } + + /** + * 数据回调接口 + */ + public interface OnGetOnlinePersonListener { + void onSuccess(OnlinePersonBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine) { + Observable observable = RetrofitServiceManager.getOnlinePersonResult(deptid, roleTips, isOnLine); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (listener != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(OnlinePersonBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java new file mode 100644 index 0000000..c51821c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPersonOnlinePresenter { + void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java new file mode 100644 index 0000000..4932e8f --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.OnlinePersonBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PersonOnlineModelImpl; +import com.casic.dcms.mvp.view.IPersonOnlineView; + +public class PersonOnlinePresenterImpl extends BasePresenter implements IPersonOnlinePresenter, + PersonOnlineModelImpl.OnGetOnlinePersonListener { + + private IPersonOnlineView view; + private PersonOnlineModelImpl model; + + public PersonOnlinePresenterImpl(IPersonOnlineView onlineView) { + this.view = onlineView; + model = new PersonOnlineModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine) { + addSubscription(model.sendRetrofitRequest(deptid, roleTips, isOnLine)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(OnlinePersonBean resultBean) { + view.onlineResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java new file mode 100644 index 0000000..1b2e555 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.OnlinePersonBean; + +public interface IPersonOnlineView { + void onlineResult(OnlinePersonBean result); +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 2e67e25..f365d3d 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -51,7 +51,7 @@ private String startTime; private String endTime; private String eorc; - private int pageIndex = 0; + private int pageIndex = 1; /** * 临时存储网络请求到的数据 */ @@ -87,7 +87,8 @@ endTime = getIntent().getStringExtra("endTime"); eorc = getIntent().getStringExtra("eorc"); //加载第一页 - caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, endTime, eorc, 0); + caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, + endTime, eorc, pageIndex); } @Override @@ -97,7 +98,7 @@ public void onRefresh(@NonNull final RefreshLayout refreshLayout) { isRefresh = true; //刷新之后页码重置 - pageIndex = 0; + pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, endTime, eorc, pageIndex); } diff --git a/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java b/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java index 1d742e1..877d23d 100644 --- a/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java @@ -1,10 +1,20 @@ package com.casic.dcms.ui; +import android.view.View; + +import androidx.core.content.ContextCompat; + import com.casic.dcms.R; import com.casic.dcms.base.BaseActivity; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import butterknife.BindView; public class MapWatchViewActivity extends BaseActivity { + @BindView(R.id.watchMapTopLayout) + QMUITopBarLayout watchMapTopLayout; + @Override public int initLayoutView() { return R.layout.activity_map_watch; @@ -12,7 +22,14 @@ @Override protected void setupTopBarLayout() { - + watchMapTopLayout.setTitle("地图查看").setTextColor(ContextCompat.getColor(this, R.color.white)); + watchMapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + watchMapTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java index 3f9ba1e..fae1753 100644 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java @@ -1,9 +1,37 @@ package com.casic.dcms.ui; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; +import android.view.View; +import android.widget.ExpandableListView; -public class PersonOnlineActivity extends BaseActivity { +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.OnlinePersonAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.OnlinePersonBean; +import com.casic.dcms.bean.PersonBean; +import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl; +import com.casic.dcms.mvp.view.IPersonOnlineView; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; + +import butterknife.BindView; + +public class PersonOnlineActivity extends BaseActivity implements IPersonOnlineView { + + @BindView(R.id.onlineTopLayout) + QMUITopBarLayout onlineTopLayout; + @BindView(R.id.deptTreeView) + ExpandableListView deptTreeView; + + private PersonOnlinePresenterImpl onlinePresenter; + private HashSet deptSet = new HashSet<>(); + private List deptList = new ArrayList<>();//部门名集合 + private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 + private OnlinePersonAdapter onlinePersonAdapter; @Override public int initLayoutView() { @@ -12,16 +40,67 @@ @Override protected void setupTopBarLayout() { - + onlineTopLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); + onlineTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + onlineTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); } @Override public void initData() { - + onlinePresenter = new PersonOnlinePresenterImpl(this); + onlinePresenter.onReadyRetrofitRequest("", "", ""); + onlinePersonAdapter = new OnlinePersonAdapter(this); } @Override public void initEvent() { } + + @Override + public void onlineResult(OnlinePersonBean resultBean) { + if (resultBean.isSuccess()) { + List dataBeans = resultBean.getData(); + deptList.clear(); + for (OnlinePersonBean.DataBean bean : dataBeans) { + deptSet.add(bean.getDeptName()); + } + //hashSet去重然后转List + deptList = new ArrayList<>(deptSet); + if (deptList.size() > 0) { + deptAndPersons.clear(); + for (String title : deptList) { + List beanList = new ArrayList<>(); + for (OnlinePersonBean.DataBean dataBean : dataBeans) { + if (title.equals(dataBean.getDeptName())) { + PersonBean personBean = new PersonBean(); + personBean.setPersonDept(dataBean.getDeptName()); + personBean.setPersonName(dataBean.getName()); + personBean.setPersonPhone(dataBean.getPhone()); + personBean.setLastTimeFmt(dataBean.getLastTimeFmt()); + personBean.setOnLine(dataBean.isOnLine()); + + beanList.add(personBean); + } + } + deptAndPersons.add(beanList); + } + onlinePersonAdapter.setData(deptList, deptAndPersons); + deptTreeView.setAdapter(onlinePersonAdapter); + } + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (onlinePresenter != null) { + onlinePresenter.disposeRetrofitRequest(); + } + } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java index 847d5ec..c29046a 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java @@ -11,7 +11,7 @@ import com.casic.dcms.adapter.DeptExpandableAdapter; import com.casic.dcms.base.BaseFragment; import com.casic.dcms.bean.DeptTreeBean; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.mvp.presenter.DeptTreePresenterImpl; import com.casic.dcms.mvp.presenter.PhoneBookPresenterImpl; @@ -36,7 +36,7 @@ private DeptTreePresenterImpl deptTreePresenter; private PhoneBookPresenterImpl phoneBookPresenter; private List deptList = new ArrayList<>();//部门名集合 - private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 + private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 private DeptExpandableAdapter expandableAdapter; @Override @@ -86,15 +86,15 @@ List dataBeans = resultBean.getData(); deptAndPersons.clear(); for (String title : deptList) { - List beanList = new ArrayList<>(); + List beanList = new ArrayList<>(); for (PhoneBookBean.DataBean dataBean : dataBeans) { if (title.equals(dataBean.getDeptName())) { - PersonPhoneBean phoneBean = new PersonPhoneBean(); - phoneBean.setPersonDept(dataBean.getDeptName()); - phoneBean.setPersonName(dataBean.getName()); - phoneBean.setPersonPhone(dataBean.getPhone()); + PersonBean personBean = new PersonBean(); + personBean.setPersonDept(dataBean.getDeptName()); + personBean.setPersonName(dataBean.getName()); + personBean.setPersonPhone(dataBean.getPhone()); - beanList.add(phoneBean); + beanList.add(personBean); } } deptAndPersons.add(beanList); diff --git a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java index 28c5abf..553776a 100644 --- a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java @@ -1,6 +1,7 @@ package com.casic.dcms.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -74,6 +75,9 @@ void bindView(CaseListResultBean.DataBean.RowsBean rowsBean) { String eorcName = rowsBean.getEorcName(); + if (TextUtils.isEmpty(eorcName)) { + eorcName = "未知"; + } leftTextView.setText(eorcName.substring(0, 1)); titleView.setText(rowsBean.getCasetypeName()); contentView.setText(rowsBean.getCasetypeDetailName()); diff --git a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java index 058ec63..eae9e88 100644 --- a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java @@ -10,7 +10,7 @@ import androidx.annotation.Nullable; import com.casic.dcms.R; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import java.util.ArrayList; import java.util.List; @@ -23,14 +23,14 @@ public class DeptExpandableAdapter extends BaseExpandableListAdapter { private List groupData = new ArrayList<>(); - private List> childData = new ArrayList<>(); + private List> childData = new ArrayList<>(); private LayoutInflater layoutInflater; public DeptExpandableAdapter(Context mContext) { layoutInflater = LayoutInflater.from(mContext); } - public void setData(@Nullable List groupList, @Nullable List> childList) { + public void setData(@Nullable List groupList, @Nullable List> childList) { groupData.clear(); childData.clear(); if (groupList != null) { diff --git a/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java new file mode 100644 index 0000000..9c4cca5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java @@ -0,0 +1,135 @@ +package com.casic.dcms.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PersonBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:11 + * @email : 290677893@qq.com + **/ +public class OnlinePersonAdapter extends BaseExpandableListAdapter { + + private List groupData = new ArrayList<>(); + private List> childData = new ArrayList<>(); + private LayoutInflater layoutInflater; + + public OnlinePersonAdapter(Context mContext) { + layoutInflater = LayoutInflater.from(mContext); + } + + public void setData(@Nullable List groupList, @Nullable List> childList) { + groupData.clear(); + childData.clear(); + if (groupList != null) { + this.groupData = groupList; + if (childList != null) { + this.childData = childList; + } + } + notifyDataSetChanged(); + } + + @Override + public int getGroupCount() { + return groupData.size(); + } + + @Override + public int getChildrenCount(int groupPosition) { + return childData.get(groupPosition).size(); + } + + @Override + public Object getGroup(int groupPosition) { + return groupData.get(groupPosition); + } + + @Override + public Object getChild(int groupPosition, int childPosition) { + return childData.get(groupPosition).get(childPosition); + } + + @Override + public long getGroupId(int groupPosition) { + return groupPosition; + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return childPosition; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { + GroupViewHolder groupHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_group_list, parent, false); + groupHolder = new GroupViewHolder(); + groupHolder.groupNameView = convertView.findViewById(R.id.groupNameView); + convertView.setTag(groupHolder); + } else { + groupHolder = (GroupViewHolder) convertView.getTag(); + } + groupHolder.groupNameView.setText(groupData.get(groupPosition)); + return convertView; + } + + @Override + public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { + ChildViewHolder itemHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_child_online, parent, false); + itemHolder = new ChildViewHolder(); + itemHolder.personStatusView = convertView.findViewById(R.id.personStatusView); + itemHolder.childNameView = convertView.findViewById(R.id.childNameView); + itemHolder.onlineTimeView = convertView.findViewById(R.id.onlineTimeView); + convertView.setTag(itemHolder); + } else { + itemHolder = (ChildViewHolder) convertView.getTag(); + } + boolean onLine = childData.get(groupPosition).get(childPosition).isOnLine(); + if (onLine) { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_online); + } else { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_offline); + } + itemHolder.childNameView.setText(childData.get(groupPosition).get(childPosition).getPersonName()); + itemHolder.onlineTimeView.setText(childData.get(groupPosition).get(childPosition).getLastTimeFmt()); + return convertView; + } + + //设置子列表是否可选中 + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return true; + } + + private static class GroupViewHolder { + private TextView groupNameView; + } + + private static class ChildViewHolder { + private ImageView personStatusView; + private TextView childNameView; + private TextView onlineTimeView; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java new file mode 100644 index 0000000..6110d6a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java @@ -0,0 +1,216 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class OnlinePersonBean { + + /** + * code : 200.0 + * data : [{"account":"ldadmin","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"2021-02-20","lastTimeFmt":"2021-02-20 17:33:43","name":"路灯管理员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1357146261327441921"},{"account":"ldsczy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所处置员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179797586866178"},{"account":"ldspqy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所派遣员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179555294507010"}] + * message : 请求成功 + * success : true + */ + + private double code; + private String message; + private boolean success; + private List data; + + public double getCode() { + return code; + } + + public void setCode(double code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * account : ldadmin + * deptId : 1344118138553909250 + * deptName : 路灯所 + * deviceName : + * id : + * imei : + * lastTime : 2021-02-20 + * lastTimeFmt : 2021-02-20 17:33:43 + * name : 路灯管理员 + * networkNumber : + * onLine : false + * phone : + * positionLat : + * positionLng : + * targetId : + * userId : 1357146261327441921 + */ + + private String account; + private String deptId; + private String deptName; + private String deviceName; + private String id; + private String imei; + private String lastTime; + private String lastTimeFmt; + private String name; + private String networkNumber; + private boolean onLine; + private String phone; + private String positionLat; + private String positionLng; + private String targetId; + private String userId; + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImei() { + return imei; + } + + public void setImei(String imei) { + this.imei = imei; + } + + public String getLastTime() { + return lastTime; + } + + public void setLastTime(String lastTime) { + this.lastTime = lastTime; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNetworkNumber() { + return networkNumber; + } + + public void setNetworkNumber(String networkNumber) { + this.networkNumber = networkNumber; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPositionLat() { + return positionLat; + } + + public void setPositionLat(String positionLat) { + this.positionLat = positionLat; + } + + public String getPositionLng() { + return positionLng; + } + + public void setPositionLng(String positionLng) { + this.positionLng = positionLng; + } + + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonBean.java b/app/src/main/java/com/casic/dcms/bean/PersonBean.java new file mode 100644 index 0000000..3d33dd4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PersonBean.java @@ -0,0 +1,54 @@ +package com.casic.dcms.bean; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:00 + * @email : 290677893@qq.com + **/ +public class PersonBean { + private String personDept; + private String personName; + private String personPhone; + private String lastTimeFmt; + private boolean onLine; + + public String getPersonDept() { + return personDept; + } + + public void setPersonDept(String personDept) { + this.personDept = personDept; + } + + public String getPersonName() { + return personName; + } + + public void setPersonName(String personName) { + this.personName = personName; + } + + public String getPersonPhone() { + return personPhone; + } + + public void setPersonPhone(String personPhone) { + this.personPhone = personPhone; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java b/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java deleted file mode 100644 index 96f70a4..0000000 --- a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dcms.bean; - -/** - * @author : Pengxh - * @time : 2021/4/15 13:00 - * @email : 290677893@qq.com - **/ -public class PersonPhoneBean { - private String personDept; - private String personName; - private String personPhone; - - public String getPersonDept() { - return personDept; - } - - public void setPersonDept(String personDept) { - this.personDept = personDept; - } - - public String getPersonName() { - return personName; - } - - public void setPersonName(String personName) { - this.personName = personName; - } - - public String getPersonPhone() { - return personPhone; - } - - public void setPersonPhone(String personPhone) { - this.personPhone = personPhone; - } -} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java new file mode 100644 index 0000000..29fbd5d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPersonOnlineModel { + Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java new file mode 100644 index 0000000..7c82995 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java @@ -0,0 +1,58 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.OnlinePersonBean; +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; + +/** + * @author : Pengxh + * @time : 2021/4/15 11:21 + * @email : 290677893@qq.com + **/ +public class PersonOnlineModelImpl implements IPersonOnlineModel { + + private OnGetOnlinePersonListener listener; + + public PersonOnlineModelImpl(OnGetOnlinePersonListener onlinePersonListener) { + this.listener = onlinePersonListener; + } + + /** + * 数据回调接口 + */ + public interface OnGetOnlinePersonListener { + void onSuccess(OnlinePersonBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine) { + Observable observable = RetrofitServiceManager.getOnlinePersonResult(deptid, roleTips, isOnLine); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (listener != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(OnlinePersonBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java new file mode 100644 index 0000000..c51821c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPersonOnlinePresenter { + void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java new file mode 100644 index 0000000..4932e8f --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.OnlinePersonBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PersonOnlineModelImpl; +import com.casic.dcms.mvp.view.IPersonOnlineView; + +public class PersonOnlinePresenterImpl extends BasePresenter implements IPersonOnlinePresenter, + PersonOnlineModelImpl.OnGetOnlinePersonListener { + + private IPersonOnlineView view; + private PersonOnlineModelImpl model; + + public PersonOnlinePresenterImpl(IPersonOnlineView onlineView) { + this.view = onlineView; + model = new PersonOnlineModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine) { + addSubscription(model.sendRetrofitRequest(deptid, roleTips, isOnLine)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(OnlinePersonBean resultBean) { + view.onlineResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java new file mode 100644 index 0000000..1b2e555 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.OnlinePersonBean; + +public interface IPersonOnlineView { + void onlineResult(OnlinePersonBean result); +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 2e67e25..f365d3d 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -51,7 +51,7 @@ private String startTime; private String endTime; private String eorc; - private int pageIndex = 0; + private int pageIndex = 1; /** * 临时存储网络请求到的数据 */ @@ -87,7 +87,8 @@ endTime = getIntent().getStringExtra("endTime"); eorc = getIntent().getStringExtra("eorc"); //加载第一页 - caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, endTime, eorc, 0); + caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, + endTime, eorc, pageIndex); } @Override @@ -97,7 +98,7 @@ public void onRefresh(@NonNull final RefreshLayout refreshLayout) { isRefresh = true; //刷新之后页码重置 - pageIndex = 0; + pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, endTime, eorc, pageIndex); } diff --git a/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java b/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java index 1d742e1..877d23d 100644 --- a/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java @@ -1,10 +1,20 @@ package com.casic.dcms.ui; +import android.view.View; + +import androidx.core.content.ContextCompat; + import com.casic.dcms.R; import com.casic.dcms.base.BaseActivity; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import butterknife.BindView; public class MapWatchViewActivity extends BaseActivity { + @BindView(R.id.watchMapTopLayout) + QMUITopBarLayout watchMapTopLayout; + @Override public int initLayoutView() { return R.layout.activity_map_watch; @@ -12,7 +22,14 @@ @Override protected void setupTopBarLayout() { - + watchMapTopLayout.setTitle("地图查看").setTextColor(ContextCompat.getColor(this, R.color.white)); + watchMapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + watchMapTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java index 3f9ba1e..fae1753 100644 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java @@ -1,9 +1,37 @@ package com.casic.dcms.ui; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; +import android.view.View; +import android.widget.ExpandableListView; -public class PersonOnlineActivity extends BaseActivity { +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.OnlinePersonAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.OnlinePersonBean; +import com.casic.dcms.bean.PersonBean; +import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl; +import com.casic.dcms.mvp.view.IPersonOnlineView; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; + +import butterknife.BindView; + +public class PersonOnlineActivity extends BaseActivity implements IPersonOnlineView { + + @BindView(R.id.onlineTopLayout) + QMUITopBarLayout onlineTopLayout; + @BindView(R.id.deptTreeView) + ExpandableListView deptTreeView; + + private PersonOnlinePresenterImpl onlinePresenter; + private HashSet deptSet = new HashSet<>(); + private List deptList = new ArrayList<>();//部门名集合 + private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 + private OnlinePersonAdapter onlinePersonAdapter; @Override public int initLayoutView() { @@ -12,16 +40,67 @@ @Override protected void setupTopBarLayout() { - + onlineTopLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); + onlineTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + onlineTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); } @Override public void initData() { - + onlinePresenter = new PersonOnlinePresenterImpl(this); + onlinePresenter.onReadyRetrofitRequest("", "", ""); + onlinePersonAdapter = new OnlinePersonAdapter(this); } @Override public void initEvent() { } + + @Override + public void onlineResult(OnlinePersonBean resultBean) { + if (resultBean.isSuccess()) { + List dataBeans = resultBean.getData(); + deptList.clear(); + for (OnlinePersonBean.DataBean bean : dataBeans) { + deptSet.add(bean.getDeptName()); + } + //hashSet去重然后转List + deptList = new ArrayList<>(deptSet); + if (deptList.size() > 0) { + deptAndPersons.clear(); + for (String title : deptList) { + List beanList = new ArrayList<>(); + for (OnlinePersonBean.DataBean dataBean : dataBeans) { + if (title.equals(dataBean.getDeptName())) { + PersonBean personBean = new PersonBean(); + personBean.setPersonDept(dataBean.getDeptName()); + personBean.setPersonName(dataBean.getName()); + personBean.setPersonPhone(dataBean.getPhone()); + personBean.setLastTimeFmt(dataBean.getLastTimeFmt()); + personBean.setOnLine(dataBean.isOnLine()); + + beanList.add(personBean); + } + } + deptAndPersons.add(beanList); + } + onlinePersonAdapter.setData(deptList, deptAndPersons); + deptTreeView.setAdapter(onlinePersonAdapter); + } + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (onlinePresenter != null) { + onlinePresenter.disposeRetrofitRequest(); + } + } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java index 847d5ec..c29046a 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java @@ -11,7 +11,7 @@ import com.casic.dcms.adapter.DeptExpandableAdapter; import com.casic.dcms.base.BaseFragment; import com.casic.dcms.bean.DeptTreeBean; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.mvp.presenter.DeptTreePresenterImpl; import com.casic.dcms.mvp.presenter.PhoneBookPresenterImpl; @@ -36,7 +36,7 @@ private DeptTreePresenterImpl deptTreePresenter; private PhoneBookPresenterImpl phoneBookPresenter; private List deptList = new ArrayList<>();//部门名集合 - private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 + private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 private DeptExpandableAdapter expandableAdapter; @Override @@ -86,15 +86,15 @@ List dataBeans = resultBean.getData(); deptAndPersons.clear(); for (String title : deptList) { - List beanList = new ArrayList<>(); + List beanList = new ArrayList<>(); for (PhoneBookBean.DataBean dataBean : dataBeans) { if (title.equals(dataBean.getDeptName())) { - PersonPhoneBean phoneBean = new PersonPhoneBean(); - phoneBean.setPersonDept(dataBean.getDeptName()); - phoneBean.setPersonName(dataBean.getName()); - phoneBean.setPersonPhone(dataBean.getPhone()); + PersonBean personBean = new PersonBean(); + personBean.setPersonDept(dataBean.getDeptName()); + personBean.setPersonName(dataBean.getName()); + personBean.setPersonPhone(dataBean.getPhone()); - beanList.add(phoneBean); + beanList.add(personBean); } } deptAndPersons.add(beanList); 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 6db1314..003a919 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 @@ -17,6 +17,7 @@ import com.casic.dcms.bean.EventSourceBean; import com.casic.dcms.bean.LoginOutResultBean; import com.casic.dcms.bean.LoginResultBean; +import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; @@ -318,4 +319,13 @@ @Query("isSupervise") String isSupervise, @Query("limit") int limit, @Query("offset") int offset); + + /** + * 在线人员查询 + */ + @GET("/userDevice/userDeviceOnLine") + Observable obtainOnlinePerson(@Header("token") String token, + @Query("deptid") String deptid, + @Query("roleTips") String roleTips, + @Query("isOnLine") String isOnLine); } diff --git a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java index 28c5abf..553776a 100644 --- a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java @@ -1,6 +1,7 @@ package com.casic.dcms.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -74,6 +75,9 @@ void bindView(CaseListResultBean.DataBean.RowsBean rowsBean) { String eorcName = rowsBean.getEorcName(); + if (TextUtils.isEmpty(eorcName)) { + eorcName = "未知"; + } leftTextView.setText(eorcName.substring(0, 1)); titleView.setText(rowsBean.getCasetypeName()); contentView.setText(rowsBean.getCasetypeDetailName()); diff --git a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java index 058ec63..eae9e88 100644 --- a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java @@ -10,7 +10,7 @@ import androidx.annotation.Nullable; import com.casic.dcms.R; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import java.util.ArrayList; import java.util.List; @@ -23,14 +23,14 @@ public class DeptExpandableAdapter extends BaseExpandableListAdapter { private List groupData = new ArrayList<>(); - private List> childData = new ArrayList<>(); + private List> childData = new ArrayList<>(); private LayoutInflater layoutInflater; public DeptExpandableAdapter(Context mContext) { layoutInflater = LayoutInflater.from(mContext); } - public void setData(@Nullable List groupList, @Nullable List> childList) { + public void setData(@Nullable List groupList, @Nullable List> childList) { groupData.clear(); childData.clear(); if (groupList != null) { diff --git a/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java new file mode 100644 index 0000000..9c4cca5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java @@ -0,0 +1,135 @@ +package com.casic.dcms.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PersonBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:11 + * @email : 290677893@qq.com + **/ +public class OnlinePersonAdapter extends BaseExpandableListAdapter { + + private List groupData = new ArrayList<>(); + private List> childData = new ArrayList<>(); + private LayoutInflater layoutInflater; + + public OnlinePersonAdapter(Context mContext) { + layoutInflater = LayoutInflater.from(mContext); + } + + public void setData(@Nullable List groupList, @Nullable List> childList) { + groupData.clear(); + childData.clear(); + if (groupList != null) { + this.groupData = groupList; + if (childList != null) { + this.childData = childList; + } + } + notifyDataSetChanged(); + } + + @Override + public int getGroupCount() { + return groupData.size(); + } + + @Override + public int getChildrenCount(int groupPosition) { + return childData.get(groupPosition).size(); + } + + @Override + public Object getGroup(int groupPosition) { + return groupData.get(groupPosition); + } + + @Override + public Object getChild(int groupPosition, int childPosition) { + return childData.get(groupPosition).get(childPosition); + } + + @Override + public long getGroupId(int groupPosition) { + return groupPosition; + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return childPosition; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { + GroupViewHolder groupHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_group_list, parent, false); + groupHolder = new GroupViewHolder(); + groupHolder.groupNameView = convertView.findViewById(R.id.groupNameView); + convertView.setTag(groupHolder); + } else { + groupHolder = (GroupViewHolder) convertView.getTag(); + } + groupHolder.groupNameView.setText(groupData.get(groupPosition)); + return convertView; + } + + @Override + public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { + ChildViewHolder itemHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_child_online, parent, false); + itemHolder = new ChildViewHolder(); + itemHolder.personStatusView = convertView.findViewById(R.id.personStatusView); + itemHolder.childNameView = convertView.findViewById(R.id.childNameView); + itemHolder.onlineTimeView = convertView.findViewById(R.id.onlineTimeView); + convertView.setTag(itemHolder); + } else { + itemHolder = (ChildViewHolder) convertView.getTag(); + } + boolean onLine = childData.get(groupPosition).get(childPosition).isOnLine(); + if (onLine) { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_online); + } else { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_offline); + } + itemHolder.childNameView.setText(childData.get(groupPosition).get(childPosition).getPersonName()); + itemHolder.onlineTimeView.setText(childData.get(groupPosition).get(childPosition).getLastTimeFmt()); + return convertView; + } + + //设置子列表是否可选中 + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return true; + } + + private static class GroupViewHolder { + private TextView groupNameView; + } + + private static class ChildViewHolder { + private ImageView personStatusView; + private TextView childNameView; + private TextView onlineTimeView; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java new file mode 100644 index 0000000..6110d6a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java @@ -0,0 +1,216 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class OnlinePersonBean { + + /** + * code : 200.0 + * data : [{"account":"ldadmin","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"2021-02-20","lastTimeFmt":"2021-02-20 17:33:43","name":"路灯管理员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1357146261327441921"},{"account":"ldsczy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所处置员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179797586866178"},{"account":"ldspqy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所派遣员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179555294507010"}] + * message : 请求成功 + * success : true + */ + + private double code; + private String message; + private boolean success; + private List data; + + public double getCode() { + return code; + } + + public void setCode(double code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * account : ldadmin + * deptId : 1344118138553909250 + * deptName : 路灯所 + * deviceName : + * id : + * imei : + * lastTime : 2021-02-20 + * lastTimeFmt : 2021-02-20 17:33:43 + * name : 路灯管理员 + * networkNumber : + * onLine : false + * phone : + * positionLat : + * positionLng : + * targetId : + * userId : 1357146261327441921 + */ + + private String account; + private String deptId; + private String deptName; + private String deviceName; + private String id; + private String imei; + private String lastTime; + private String lastTimeFmt; + private String name; + private String networkNumber; + private boolean onLine; + private String phone; + private String positionLat; + private String positionLng; + private String targetId; + private String userId; + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImei() { + return imei; + } + + public void setImei(String imei) { + this.imei = imei; + } + + public String getLastTime() { + return lastTime; + } + + public void setLastTime(String lastTime) { + this.lastTime = lastTime; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNetworkNumber() { + return networkNumber; + } + + public void setNetworkNumber(String networkNumber) { + this.networkNumber = networkNumber; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPositionLat() { + return positionLat; + } + + public void setPositionLat(String positionLat) { + this.positionLat = positionLat; + } + + public String getPositionLng() { + return positionLng; + } + + public void setPositionLng(String positionLng) { + this.positionLng = positionLng; + } + + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonBean.java b/app/src/main/java/com/casic/dcms/bean/PersonBean.java new file mode 100644 index 0000000..3d33dd4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PersonBean.java @@ -0,0 +1,54 @@ +package com.casic.dcms.bean; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:00 + * @email : 290677893@qq.com + **/ +public class PersonBean { + private String personDept; + private String personName; + private String personPhone; + private String lastTimeFmt; + private boolean onLine; + + public String getPersonDept() { + return personDept; + } + + public void setPersonDept(String personDept) { + this.personDept = personDept; + } + + public String getPersonName() { + return personName; + } + + public void setPersonName(String personName) { + this.personName = personName; + } + + public String getPersonPhone() { + return personPhone; + } + + public void setPersonPhone(String personPhone) { + this.personPhone = personPhone; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java b/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java deleted file mode 100644 index 96f70a4..0000000 --- a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dcms.bean; - -/** - * @author : Pengxh - * @time : 2021/4/15 13:00 - * @email : 290677893@qq.com - **/ -public class PersonPhoneBean { - private String personDept; - private String personName; - private String personPhone; - - public String getPersonDept() { - return personDept; - } - - public void setPersonDept(String personDept) { - this.personDept = personDept; - } - - public String getPersonName() { - return personName; - } - - public void setPersonName(String personName) { - this.personName = personName; - } - - public String getPersonPhone() { - return personPhone; - } - - public void setPersonPhone(String personPhone) { - this.personPhone = personPhone; - } -} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java new file mode 100644 index 0000000..29fbd5d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPersonOnlineModel { + Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java new file mode 100644 index 0000000..7c82995 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java @@ -0,0 +1,58 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.OnlinePersonBean; +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; + +/** + * @author : Pengxh + * @time : 2021/4/15 11:21 + * @email : 290677893@qq.com + **/ +public class PersonOnlineModelImpl implements IPersonOnlineModel { + + private OnGetOnlinePersonListener listener; + + public PersonOnlineModelImpl(OnGetOnlinePersonListener onlinePersonListener) { + this.listener = onlinePersonListener; + } + + /** + * 数据回调接口 + */ + public interface OnGetOnlinePersonListener { + void onSuccess(OnlinePersonBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine) { + Observable observable = RetrofitServiceManager.getOnlinePersonResult(deptid, roleTips, isOnLine); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (listener != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(OnlinePersonBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java new file mode 100644 index 0000000..c51821c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPersonOnlinePresenter { + void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java new file mode 100644 index 0000000..4932e8f --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.OnlinePersonBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PersonOnlineModelImpl; +import com.casic.dcms.mvp.view.IPersonOnlineView; + +public class PersonOnlinePresenterImpl extends BasePresenter implements IPersonOnlinePresenter, + PersonOnlineModelImpl.OnGetOnlinePersonListener { + + private IPersonOnlineView view; + private PersonOnlineModelImpl model; + + public PersonOnlinePresenterImpl(IPersonOnlineView onlineView) { + this.view = onlineView; + model = new PersonOnlineModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine) { + addSubscription(model.sendRetrofitRequest(deptid, roleTips, isOnLine)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(OnlinePersonBean resultBean) { + view.onlineResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java new file mode 100644 index 0000000..1b2e555 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.OnlinePersonBean; + +public interface IPersonOnlineView { + void onlineResult(OnlinePersonBean result); +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 2e67e25..f365d3d 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -51,7 +51,7 @@ private String startTime; private String endTime; private String eorc; - private int pageIndex = 0; + private int pageIndex = 1; /** * 临时存储网络请求到的数据 */ @@ -87,7 +87,8 @@ endTime = getIntent().getStringExtra("endTime"); eorc = getIntent().getStringExtra("eorc"); //加载第一页 - caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, endTime, eorc, 0); + caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, + endTime, eorc, pageIndex); } @Override @@ -97,7 +98,7 @@ public void onRefresh(@NonNull final RefreshLayout refreshLayout) { isRefresh = true; //刷新之后页码重置 - pageIndex = 0; + pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, endTime, eorc, pageIndex); } diff --git a/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java b/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java index 1d742e1..877d23d 100644 --- a/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java @@ -1,10 +1,20 @@ package com.casic.dcms.ui; +import android.view.View; + +import androidx.core.content.ContextCompat; + import com.casic.dcms.R; import com.casic.dcms.base.BaseActivity; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import butterknife.BindView; public class MapWatchViewActivity extends BaseActivity { + @BindView(R.id.watchMapTopLayout) + QMUITopBarLayout watchMapTopLayout; + @Override public int initLayoutView() { return R.layout.activity_map_watch; @@ -12,7 +22,14 @@ @Override protected void setupTopBarLayout() { - + watchMapTopLayout.setTitle("地图查看").setTextColor(ContextCompat.getColor(this, R.color.white)); + watchMapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + watchMapTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java index 3f9ba1e..fae1753 100644 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java @@ -1,9 +1,37 @@ package com.casic.dcms.ui; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; +import android.view.View; +import android.widget.ExpandableListView; -public class PersonOnlineActivity extends BaseActivity { +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.OnlinePersonAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.OnlinePersonBean; +import com.casic.dcms.bean.PersonBean; +import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl; +import com.casic.dcms.mvp.view.IPersonOnlineView; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; + +import butterknife.BindView; + +public class PersonOnlineActivity extends BaseActivity implements IPersonOnlineView { + + @BindView(R.id.onlineTopLayout) + QMUITopBarLayout onlineTopLayout; + @BindView(R.id.deptTreeView) + ExpandableListView deptTreeView; + + private PersonOnlinePresenterImpl onlinePresenter; + private HashSet deptSet = new HashSet<>(); + private List deptList = new ArrayList<>();//部门名集合 + private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 + private OnlinePersonAdapter onlinePersonAdapter; @Override public int initLayoutView() { @@ -12,16 +40,67 @@ @Override protected void setupTopBarLayout() { - + onlineTopLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); + onlineTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + onlineTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); } @Override public void initData() { - + onlinePresenter = new PersonOnlinePresenterImpl(this); + onlinePresenter.onReadyRetrofitRequest("", "", ""); + onlinePersonAdapter = new OnlinePersonAdapter(this); } @Override public void initEvent() { } + + @Override + public void onlineResult(OnlinePersonBean resultBean) { + if (resultBean.isSuccess()) { + List dataBeans = resultBean.getData(); + deptList.clear(); + for (OnlinePersonBean.DataBean bean : dataBeans) { + deptSet.add(bean.getDeptName()); + } + //hashSet去重然后转List + deptList = new ArrayList<>(deptSet); + if (deptList.size() > 0) { + deptAndPersons.clear(); + for (String title : deptList) { + List beanList = new ArrayList<>(); + for (OnlinePersonBean.DataBean dataBean : dataBeans) { + if (title.equals(dataBean.getDeptName())) { + PersonBean personBean = new PersonBean(); + personBean.setPersonDept(dataBean.getDeptName()); + personBean.setPersonName(dataBean.getName()); + personBean.setPersonPhone(dataBean.getPhone()); + personBean.setLastTimeFmt(dataBean.getLastTimeFmt()); + personBean.setOnLine(dataBean.isOnLine()); + + beanList.add(personBean); + } + } + deptAndPersons.add(beanList); + } + onlinePersonAdapter.setData(deptList, deptAndPersons); + deptTreeView.setAdapter(onlinePersonAdapter); + } + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (onlinePresenter != null) { + onlinePresenter.disposeRetrofitRequest(); + } + } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java index 847d5ec..c29046a 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java @@ -11,7 +11,7 @@ import com.casic.dcms.adapter.DeptExpandableAdapter; import com.casic.dcms.base.BaseFragment; import com.casic.dcms.bean.DeptTreeBean; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.mvp.presenter.DeptTreePresenterImpl; import com.casic.dcms.mvp.presenter.PhoneBookPresenterImpl; @@ -36,7 +36,7 @@ private DeptTreePresenterImpl deptTreePresenter; private PhoneBookPresenterImpl phoneBookPresenter; private List deptList = new ArrayList<>();//部门名集合 - private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 + private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 private DeptExpandableAdapter expandableAdapter; @Override @@ -86,15 +86,15 @@ List dataBeans = resultBean.getData(); deptAndPersons.clear(); for (String title : deptList) { - List beanList = new ArrayList<>(); + List beanList = new ArrayList<>(); for (PhoneBookBean.DataBean dataBean : dataBeans) { if (title.equals(dataBean.getDeptName())) { - PersonPhoneBean phoneBean = new PersonPhoneBean(); - phoneBean.setPersonDept(dataBean.getDeptName()); - phoneBean.setPersonName(dataBean.getName()); - phoneBean.setPersonPhone(dataBean.getPhone()); + PersonBean personBean = new PersonBean(); + personBean.setPersonDept(dataBean.getDeptName()); + personBean.setPersonName(dataBean.getName()); + personBean.setPersonPhone(dataBean.getPhone()); - beanList.add(phoneBean); + beanList.add(personBean); } } deptAndPersons.add(beanList); 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 6db1314..003a919 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 @@ -17,6 +17,7 @@ import com.casic.dcms.bean.EventSourceBean; import com.casic.dcms.bean.LoginOutResultBean; import com.casic.dcms.bean.LoginResultBean; +import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; @@ -318,4 +319,13 @@ @Query("isSupervise") String isSupervise, @Query("limit") int limit, @Query("offset") int offset); + + /** + * 在线人员查询 + */ + @GET("/userDevice/userDeviceOnLine") + Observable obtainOnlinePerson(@Header("token") String token, + @Query("deptid") String deptid, + @Query("roleTips") String roleTips, + @Query("isOnLine") String isOnLine); } 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 4643bba..04d4159 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 @@ -19,6 +19,7 @@ import com.casic.dcms.bean.EventSourceBean; import com.casic.dcms.bean.LoginOutResultBean; import com.casic.dcms.bean.LoginResultBean; +import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; @@ -206,12 +207,11 @@ * 根据时间查询案卷列表 */ public static Observable getCaseListResult(String casetypeCode, String casetypeDetailCode, String caseStateId, - String registerTimeBegin, String registerTimeEnd, String eorc, - int offset) { + String registerTimeBegin, String registerTimeEnd, String eorc, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainCaseList(TokenHelper.getToken(), casetypeCode, - casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, 15, offset); + return service.obtainCaseList(TokenHelper.getToken(), casetypeCode, casetypeDetailCode, caseStateId, + registerTimeBegin, registerTimeEnd, eorc, 15, offset); } /** @@ -363,4 +363,13 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainOvertimeCase(TokenHelper.getToken(), isSupervise, 15, offset); } + + /** + * 在线人员查询 + */ + public static Observable getOnlinePersonResult(String deptid, String roleTips, String isOnLine) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainOnlinePerson(TokenHelper.getToken(), deptid, roleTips, isOnLine); + } } diff --git a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java index 28c5abf..553776a 100644 --- a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java @@ -1,6 +1,7 @@ package com.casic.dcms.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -74,6 +75,9 @@ void bindView(CaseListResultBean.DataBean.RowsBean rowsBean) { String eorcName = rowsBean.getEorcName(); + if (TextUtils.isEmpty(eorcName)) { + eorcName = "未知"; + } leftTextView.setText(eorcName.substring(0, 1)); titleView.setText(rowsBean.getCasetypeName()); contentView.setText(rowsBean.getCasetypeDetailName()); diff --git a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java index 058ec63..eae9e88 100644 --- a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java @@ -10,7 +10,7 @@ import androidx.annotation.Nullable; import com.casic.dcms.R; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import java.util.ArrayList; import java.util.List; @@ -23,14 +23,14 @@ public class DeptExpandableAdapter extends BaseExpandableListAdapter { private List groupData = new ArrayList<>(); - private List> childData = new ArrayList<>(); + private List> childData = new ArrayList<>(); private LayoutInflater layoutInflater; public DeptExpandableAdapter(Context mContext) { layoutInflater = LayoutInflater.from(mContext); } - public void setData(@Nullable List groupList, @Nullable List> childList) { + public void setData(@Nullable List groupList, @Nullable List> childList) { groupData.clear(); childData.clear(); if (groupList != null) { diff --git a/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java new file mode 100644 index 0000000..9c4cca5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java @@ -0,0 +1,135 @@ +package com.casic.dcms.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PersonBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:11 + * @email : 290677893@qq.com + **/ +public class OnlinePersonAdapter extends BaseExpandableListAdapter { + + private List groupData = new ArrayList<>(); + private List> childData = new ArrayList<>(); + private LayoutInflater layoutInflater; + + public OnlinePersonAdapter(Context mContext) { + layoutInflater = LayoutInflater.from(mContext); + } + + public void setData(@Nullable List groupList, @Nullable List> childList) { + groupData.clear(); + childData.clear(); + if (groupList != null) { + this.groupData = groupList; + if (childList != null) { + this.childData = childList; + } + } + notifyDataSetChanged(); + } + + @Override + public int getGroupCount() { + return groupData.size(); + } + + @Override + public int getChildrenCount(int groupPosition) { + return childData.get(groupPosition).size(); + } + + @Override + public Object getGroup(int groupPosition) { + return groupData.get(groupPosition); + } + + @Override + public Object getChild(int groupPosition, int childPosition) { + return childData.get(groupPosition).get(childPosition); + } + + @Override + public long getGroupId(int groupPosition) { + return groupPosition; + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return childPosition; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { + GroupViewHolder groupHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_group_list, parent, false); + groupHolder = new GroupViewHolder(); + groupHolder.groupNameView = convertView.findViewById(R.id.groupNameView); + convertView.setTag(groupHolder); + } else { + groupHolder = (GroupViewHolder) convertView.getTag(); + } + groupHolder.groupNameView.setText(groupData.get(groupPosition)); + return convertView; + } + + @Override + public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { + ChildViewHolder itemHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_child_online, parent, false); + itemHolder = new ChildViewHolder(); + itemHolder.personStatusView = convertView.findViewById(R.id.personStatusView); + itemHolder.childNameView = convertView.findViewById(R.id.childNameView); + itemHolder.onlineTimeView = convertView.findViewById(R.id.onlineTimeView); + convertView.setTag(itemHolder); + } else { + itemHolder = (ChildViewHolder) convertView.getTag(); + } + boolean onLine = childData.get(groupPosition).get(childPosition).isOnLine(); + if (onLine) { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_online); + } else { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_offline); + } + itemHolder.childNameView.setText(childData.get(groupPosition).get(childPosition).getPersonName()); + itemHolder.onlineTimeView.setText(childData.get(groupPosition).get(childPosition).getLastTimeFmt()); + return convertView; + } + + //设置子列表是否可选中 + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return true; + } + + private static class GroupViewHolder { + private TextView groupNameView; + } + + private static class ChildViewHolder { + private ImageView personStatusView; + private TextView childNameView; + private TextView onlineTimeView; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java new file mode 100644 index 0000000..6110d6a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java @@ -0,0 +1,216 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class OnlinePersonBean { + + /** + * code : 200.0 + * data : [{"account":"ldadmin","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"2021-02-20","lastTimeFmt":"2021-02-20 17:33:43","name":"路灯管理员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1357146261327441921"},{"account":"ldsczy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所处置员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179797586866178"},{"account":"ldspqy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所派遣员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179555294507010"}] + * message : 请求成功 + * success : true + */ + + private double code; + private String message; + private boolean success; + private List data; + + public double getCode() { + return code; + } + + public void setCode(double code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * account : ldadmin + * deptId : 1344118138553909250 + * deptName : 路灯所 + * deviceName : + * id : + * imei : + * lastTime : 2021-02-20 + * lastTimeFmt : 2021-02-20 17:33:43 + * name : 路灯管理员 + * networkNumber : + * onLine : false + * phone : + * positionLat : + * positionLng : + * targetId : + * userId : 1357146261327441921 + */ + + private String account; + private String deptId; + private String deptName; + private String deviceName; + private String id; + private String imei; + private String lastTime; + private String lastTimeFmt; + private String name; + private String networkNumber; + private boolean onLine; + private String phone; + private String positionLat; + private String positionLng; + private String targetId; + private String userId; + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImei() { + return imei; + } + + public void setImei(String imei) { + this.imei = imei; + } + + public String getLastTime() { + return lastTime; + } + + public void setLastTime(String lastTime) { + this.lastTime = lastTime; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNetworkNumber() { + return networkNumber; + } + + public void setNetworkNumber(String networkNumber) { + this.networkNumber = networkNumber; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPositionLat() { + return positionLat; + } + + public void setPositionLat(String positionLat) { + this.positionLat = positionLat; + } + + public String getPositionLng() { + return positionLng; + } + + public void setPositionLng(String positionLng) { + this.positionLng = positionLng; + } + + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonBean.java b/app/src/main/java/com/casic/dcms/bean/PersonBean.java new file mode 100644 index 0000000..3d33dd4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PersonBean.java @@ -0,0 +1,54 @@ +package com.casic.dcms.bean; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:00 + * @email : 290677893@qq.com + **/ +public class PersonBean { + private String personDept; + private String personName; + private String personPhone; + private String lastTimeFmt; + private boolean onLine; + + public String getPersonDept() { + return personDept; + } + + public void setPersonDept(String personDept) { + this.personDept = personDept; + } + + public String getPersonName() { + return personName; + } + + public void setPersonName(String personName) { + this.personName = personName; + } + + public String getPersonPhone() { + return personPhone; + } + + public void setPersonPhone(String personPhone) { + this.personPhone = personPhone; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java b/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java deleted file mode 100644 index 96f70a4..0000000 --- a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dcms.bean; - -/** - * @author : Pengxh - * @time : 2021/4/15 13:00 - * @email : 290677893@qq.com - **/ -public class PersonPhoneBean { - private String personDept; - private String personName; - private String personPhone; - - public String getPersonDept() { - return personDept; - } - - public void setPersonDept(String personDept) { - this.personDept = personDept; - } - - public String getPersonName() { - return personName; - } - - public void setPersonName(String personName) { - this.personName = personName; - } - - public String getPersonPhone() { - return personPhone; - } - - public void setPersonPhone(String personPhone) { - this.personPhone = personPhone; - } -} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java new file mode 100644 index 0000000..29fbd5d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPersonOnlineModel { + Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java new file mode 100644 index 0000000..7c82995 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java @@ -0,0 +1,58 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.OnlinePersonBean; +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; + +/** + * @author : Pengxh + * @time : 2021/4/15 11:21 + * @email : 290677893@qq.com + **/ +public class PersonOnlineModelImpl implements IPersonOnlineModel { + + private OnGetOnlinePersonListener listener; + + public PersonOnlineModelImpl(OnGetOnlinePersonListener onlinePersonListener) { + this.listener = onlinePersonListener; + } + + /** + * 数据回调接口 + */ + public interface OnGetOnlinePersonListener { + void onSuccess(OnlinePersonBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine) { + Observable observable = RetrofitServiceManager.getOnlinePersonResult(deptid, roleTips, isOnLine); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (listener != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(OnlinePersonBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java new file mode 100644 index 0000000..c51821c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPersonOnlinePresenter { + void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java new file mode 100644 index 0000000..4932e8f --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.OnlinePersonBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PersonOnlineModelImpl; +import com.casic.dcms.mvp.view.IPersonOnlineView; + +public class PersonOnlinePresenterImpl extends BasePresenter implements IPersonOnlinePresenter, + PersonOnlineModelImpl.OnGetOnlinePersonListener { + + private IPersonOnlineView view; + private PersonOnlineModelImpl model; + + public PersonOnlinePresenterImpl(IPersonOnlineView onlineView) { + this.view = onlineView; + model = new PersonOnlineModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine) { + addSubscription(model.sendRetrofitRequest(deptid, roleTips, isOnLine)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(OnlinePersonBean resultBean) { + view.onlineResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java new file mode 100644 index 0000000..1b2e555 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.OnlinePersonBean; + +public interface IPersonOnlineView { + void onlineResult(OnlinePersonBean result); +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 2e67e25..f365d3d 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -51,7 +51,7 @@ private String startTime; private String endTime; private String eorc; - private int pageIndex = 0; + private int pageIndex = 1; /** * 临时存储网络请求到的数据 */ @@ -87,7 +87,8 @@ endTime = getIntent().getStringExtra("endTime"); eorc = getIntent().getStringExtra("eorc"); //加载第一页 - caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, endTime, eorc, 0); + caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, + endTime, eorc, pageIndex); } @Override @@ -97,7 +98,7 @@ public void onRefresh(@NonNull final RefreshLayout refreshLayout) { isRefresh = true; //刷新之后页码重置 - pageIndex = 0; + pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, endTime, eorc, pageIndex); } diff --git a/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java b/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java index 1d742e1..877d23d 100644 --- a/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java @@ -1,10 +1,20 @@ package com.casic.dcms.ui; +import android.view.View; + +import androidx.core.content.ContextCompat; + import com.casic.dcms.R; import com.casic.dcms.base.BaseActivity; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import butterknife.BindView; public class MapWatchViewActivity extends BaseActivity { + @BindView(R.id.watchMapTopLayout) + QMUITopBarLayout watchMapTopLayout; + @Override public int initLayoutView() { return R.layout.activity_map_watch; @@ -12,7 +22,14 @@ @Override protected void setupTopBarLayout() { - + watchMapTopLayout.setTitle("地图查看").setTextColor(ContextCompat.getColor(this, R.color.white)); + watchMapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + watchMapTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java index 3f9ba1e..fae1753 100644 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java @@ -1,9 +1,37 @@ package com.casic.dcms.ui; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; +import android.view.View; +import android.widget.ExpandableListView; -public class PersonOnlineActivity extends BaseActivity { +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.OnlinePersonAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.OnlinePersonBean; +import com.casic.dcms.bean.PersonBean; +import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl; +import com.casic.dcms.mvp.view.IPersonOnlineView; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; + +import butterknife.BindView; + +public class PersonOnlineActivity extends BaseActivity implements IPersonOnlineView { + + @BindView(R.id.onlineTopLayout) + QMUITopBarLayout onlineTopLayout; + @BindView(R.id.deptTreeView) + ExpandableListView deptTreeView; + + private PersonOnlinePresenterImpl onlinePresenter; + private HashSet deptSet = new HashSet<>(); + private List deptList = new ArrayList<>();//部门名集合 + private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 + private OnlinePersonAdapter onlinePersonAdapter; @Override public int initLayoutView() { @@ -12,16 +40,67 @@ @Override protected void setupTopBarLayout() { - + onlineTopLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); + onlineTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + onlineTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); } @Override public void initData() { - + onlinePresenter = new PersonOnlinePresenterImpl(this); + onlinePresenter.onReadyRetrofitRequest("", "", ""); + onlinePersonAdapter = new OnlinePersonAdapter(this); } @Override public void initEvent() { } + + @Override + public void onlineResult(OnlinePersonBean resultBean) { + if (resultBean.isSuccess()) { + List dataBeans = resultBean.getData(); + deptList.clear(); + for (OnlinePersonBean.DataBean bean : dataBeans) { + deptSet.add(bean.getDeptName()); + } + //hashSet去重然后转List + deptList = new ArrayList<>(deptSet); + if (deptList.size() > 0) { + deptAndPersons.clear(); + for (String title : deptList) { + List beanList = new ArrayList<>(); + for (OnlinePersonBean.DataBean dataBean : dataBeans) { + if (title.equals(dataBean.getDeptName())) { + PersonBean personBean = new PersonBean(); + personBean.setPersonDept(dataBean.getDeptName()); + personBean.setPersonName(dataBean.getName()); + personBean.setPersonPhone(dataBean.getPhone()); + personBean.setLastTimeFmt(dataBean.getLastTimeFmt()); + personBean.setOnLine(dataBean.isOnLine()); + + beanList.add(personBean); + } + } + deptAndPersons.add(beanList); + } + onlinePersonAdapter.setData(deptList, deptAndPersons); + deptTreeView.setAdapter(onlinePersonAdapter); + } + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (onlinePresenter != null) { + onlinePresenter.disposeRetrofitRequest(); + } + } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java index 847d5ec..c29046a 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java @@ -11,7 +11,7 @@ import com.casic.dcms.adapter.DeptExpandableAdapter; import com.casic.dcms.base.BaseFragment; import com.casic.dcms.bean.DeptTreeBean; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.mvp.presenter.DeptTreePresenterImpl; import com.casic.dcms.mvp.presenter.PhoneBookPresenterImpl; @@ -36,7 +36,7 @@ private DeptTreePresenterImpl deptTreePresenter; private PhoneBookPresenterImpl phoneBookPresenter; private List deptList = new ArrayList<>();//部门名集合 - private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 + private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 private DeptExpandableAdapter expandableAdapter; @Override @@ -86,15 +86,15 @@ List dataBeans = resultBean.getData(); deptAndPersons.clear(); for (String title : deptList) { - List beanList = new ArrayList<>(); + List beanList = new ArrayList<>(); for (PhoneBookBean.DataBean dataBean : dataBeans) { if (title.equals(dataBean.getDeptName())) { - PersonPhoneBean phoneBean = new PersonPhoneBean(); - phoneBean.setPersonDept(dataBean.getDeptName()); - phoneBean.setPersonName(dataBean.getName()); - phoneBean.setPersonPhone(dataBean.getPhone()); + PersonBean personBean = new PersonBean(); + personBean.setPersonDept(dataBean.getDeptName()); + personBean.setPersonName(dataBean.getName()); + personBean.setPersonPhone(dataBean.getPhone()); - beanList.add(phoneBean); + beanList.add(personBean); } } deptAndPersons.add(beanList); 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 6db1314..003a919 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 @@ -17,6 +17,7 @@ import com.casic.dcms.bean.EventSourceBean; import com.casic.dcms.bean.LoginOutResultBean; import com.casic.dcms.bean.LoginResultBean; +import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; @@ -318,4 +319,13 @@ @Query("isSupervise") String isSupervise, @Query("limit") int limit, @Query("offset") int offset); + + /** + * 在线人员查询 + */ + @GET("/userDevice/userDeviceOnLine") + Observable obtainOnlinePerson(@Header("token") String token, + @Query("deptid") String deptid, + @Query("roleTips") String roleTips, + @Query("isOnLine") String isOnLine); } 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 4643bba..04d4159 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 @@ -19,6 +19,7 @@ import com.casic.dcms.bean.EventSourceBean; import com.casic.dcms.bean.LoginOutResultBean; import com.casic.dcms.bean.LoginResultBean; +import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; @@ -206,12 +207,11 @@ * 根据时间查询案卷列表 */ public static Observable getCaseListResult(String casetypeCode, String casetypeDetailCode, String caseStateId, - String registerTimeBegin, String registerTimeEnd, String eorc, - int offset) { + String registerTimeBegin, String registerTimeEnd, String eorc, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainCaseList(TokenHelper.getToken(), casetypeCode, - casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, 15, offset); + return service.obtainCaseList(TokenHelper.getToken(), casetypeCode, casetypeDetailCode, caseStateId, + registerTimeBegin, registerTimeEnd, eorc, 15, offset); } /** @@ -363,4 +363,13 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainOvertimeCase(TokenHelper.getToken(), isSupervise, 15, offset); } + + /** + * 在线人员查询 + */ + public static Observable getOnlinePersonResult(String deptid, String roleTips, String isOnLine) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainOnlinePerson(TokenHelper.getToken(), deptid, roleTips, isOnLine); + } } diff --git a/app/src/main/res/drawable/ic_offline.xml b/app/src/main/res/drawable/ic_offline.xml new file mode 100644 index 0000000..679e4cf --- /dev/null +++ b/app/src/main/res/drawable/ic_offline.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java index 28c5abf..553776a 100644 --- a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java @@ -1,6 +1,7 @@ package com.casic.dcms.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -74,6 +75,9 @@ void bindView(CaseListResultBean.DataBean.RowsBean rowsBean) { String eorcName = rowsBean.getEorcName(); + if (TextUtils.isEmpty(eorcName)) { + eorcName = "未知"; + } leftTextView.setText(eorcName.substring(0, 1)); titleView.setText(rowsBean.getCasetypeName()); contentView.setText(rowsBean.getCasetypeDetailName()); diff --git a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java index 058ec63..eae9e88 100644 --- a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java @@ -10,7 +10,7 @@ import androidx.annotation.Nullable; import com.casic.dcms.R; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import java.util.ArrayList; import java.util.List; @@ -23,14 +23,14 @@ public class DeptExpandableAdapter extends BaseExpandableListAdapter { private List groupData = new ArrayList<>(); - private List> childData = new ArrayList<>(); + private List> childData = new ArrayList<>(); private LayoutInflater layoutInflater; public DeptExpandableAdapter(Context mContext) { layoutInflater = LayoutInflater.from(mContext); } - public void setData(@Nullable List groupList, @Nullable List> childList) { + public void setData(@Nullable List groupList, @Nullable List> childList) { groupData.clear(); childData.clear(); if (groupList != null) { diff --git a/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java new file mode 100644 index 0000000..9c4cca5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java @@ -0,0 +1,135 @@ +package com.casic.dcms.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PersonBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:11 + * @email : 290677893@qq.com + **/ +public class OnlinePersonAdapter extends BaseExpandableListAdapter { + + private List groupData = new ArrayList<>(); + private List> childData = new ArrayList<>(); + private LayoutInflater layoutInflater; + + public OnlinePersonAdapter(Context mContext) { + layoutInflater = LayoutInflater.from(mContext); + } + + public void setData(@Nullable List groupList, @Nullable List> childList) { + groupData.clear(); + childData.clear(); + if (groupList != null) { + this.groupData = groupList; + if (childList != null) { + this.childData = childList; + } + } + notifyDataSetChanged(); + } + + @Override + public int getGroupCount() { + return groupData.size(); + } + + @Override + public int getChildrenCount(int groupPosition) { + return childData.get(groupPosition).size(); + } + + @Override + public Object getGroup(int groupPosition) { + return groupData.get(groupPosition); + } + + @Override + public Object getChild(int groupPosition, int childPosition) { + return childData.get(groupPosition).get(childPosition); + } + + @Override + public long getGroupId(int groupPosition) { + return groupPosition; + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return childPosition; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { + GroupViewHolder groupHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_group_list, parent, false); + groupHolder = new GroupViewHolder(); + groupHolder.groupNameView = convertView.findViewById(R.id.groupNameView); + convertView.setTag(groupHolder); + } else { + groupHolder = (GroupViewHolder) convertView.getTag(); + } + groupHolder.groupNameView.setText(groupData.get(groupPosition)); + return convertView; + } + + @Override + public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { + ChildViewHolder itemHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_child_online, parent, false); + itemHolder = new ChildViewHolder(); + itemHolder.personStatusView = convertView.findViewById(R.id.personStatusView); + itemHolder.childNameView = convertView.findViewById(R.id.childNameView); + itemHolder.onlineTimeView = convertView.findViewById(R.id.onlineTimeView); + convertView.setTag(itemHolder); + } else { + itemHolder = (ChildViewHolder) convertView.getTag(); + } + boolean onLine = childData.get(groupPosition).get(childPosition).isOnLine(); + if (onLine) { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_online); + } else { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_offline); + } + itemHolder.childNameView.setText(childData.get(groupPosition).get(childPosition).getPersonName()); + itemHolder.onlineTimeView.setText(childData.get(groupPosition).get(childPosition).getLastTimeFmt()); + return convertView; + } + + //设置子列表是否可选中 + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return true; + } + + private static class GroupViewHolder { + private TextView groupNameView; + } + + private static class ChildViewHolder { + private ImageView personStatusView; + private TextView childNameView; + private TextView onlineTimeView; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java new file mode 100644 index 0000000..6110d6a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java @@ -0,0 +1,216 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class OnlinePersonBean { + + /** + * code : 200.0 + * data : [{"account":"ldadmin","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"2021-02-20","lastTimeFmt":"2021-02-20 17:33:43","name":"路灯管理员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1357146261327441921"},{"account":"ldsczy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所处置员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179797586866178"},{"account":"ldspqy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所派遣员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179555294507010"}] + * message : 请求成功 + * success : true + */ + + private double code; + private String message; + private boolean success; + private List data; + + public double getCode() { + return code; + } + + public void setCode(double code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * account : ldadmin + * deptId : 1344118138553909250 + * deptName : 路灯所 + * deviceName : + * id : + * imei : + * lastTime : 2021-02-20 + * lastTimeFmt : 2021-02-20 17:33:43 + * name : 路灯管理员 + * networkNumber : + * onLine : false + * phone : + * positionLat : + * positionLng : + * targetId : + * userId : 1357146261327441921 + */ + + private String account; + private String deptId; + private String deptName; + private String deviceName; + private String id; + private String imei; + private String lastTime; + private String lastTimeFmt; + private String name; + private String networkNumber; + private boolean onLine; + private String phone; + private String positionLat; + private String positionLng; + private String targetId; + private String userId; + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImei() { + return imei; + } + + public void setImei(String imei) { + this.imei = imei; + } + + public String getLastTime() { + return lastTime; + } + + public void setLastTime(String lastTime) { + this.lastTime = lastTime; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNetworkNumber() { + return networkNumber; + } + + public void setNetworkNumber(String networkNumber) { + this.networkNumber = networkNumber; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPositionLat() { + return positionLat; + } + + public void setPositionLat(String positionLat) { + this.positionLat = positionLat; + } + + public String getPositionLng() { + return positionLng; + } + + public void setPositionLng(String positionLng) { + this.positionLng = positionLng; + } + + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonBean.java b/app/src/main/java/com/casic/dcms/bean/PersonBean.java new file mode 100644 index 0000000..3d33dd4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PersonBean.java @@ -0,0 +1,54 @@ +package com.casic.dcms.bean; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:00 + * @email : 290677893@qq.com + **/ +public class PersonBean { + private String personDept; + private String personName; + private String personPhone; + private String lastTimeFmt; + private boolean onLine; + + public String getPersonDept() { + return personDept; + } + + public void setPersonDept(String personDept) { + this.personDept = personDept; + } + + public String getPersonName() { + return personName; + } + + public void setPersonName(String personName) { + this.personName = personName; + } + + public String getPersonPhone() { + return personPhone; + } + + public void setPersonPhone(String personPhone) { + this.personPhone = personPhone; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java b/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java deleted file mode 100644 index 96f70a4..0000000 --- a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dcms.bean; - -/** - * @author : Pengxh - * @time : 2021/4/15 13:00 - * @email : 290677893@qq.com - **/ -public class PersonPhoneBean { - private String personDept; - private String personName; - private String personPhone; - - public String getPersonDept() { - return personDept; - } - - public void setPersonDept(String personDept) { - this.personDept = personDept; - } - - public String getPersonName() { - return personName; - } - - public void setPersonName(String personName) { - this.personName = personName; - } - - public String getPersonPhone() { - return personPhone; - } - - public void setPersonPhone(String personPhone) { - this.personPhone = personPhone; - } -} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java new file mode 100644 index 0000000..29fbd5d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPersonOnlineModel { + Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java new file mode 100644 index 0000000..7c82995 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java @@ -0,0 +1,58 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.OnlinePersonBean; +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; + +/** + * @author : Pengxh + * @time : 2021/4/15 11:21 + * @email : 290677893@qq.com + **/ +public class PersonOnlineModelImpl implements IPersonOnlineModel { + + private OnGetOnlinePersonListener listener; + + public PersonOnlineModelImpl(OnGetOnlinePersonListener onlinePersonListener) { + this.listener = onlinePersonListener; + } + + /** + * 数据回调接口 + */ + public interface OnGetOnlinePersonListener { + void onSuccess(OnlinePersonBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine) { + Observable observable = RetrofitServiceManager.getOnlinePersonResult(deptid, roleTips, isOnLine); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (listener != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(OnlinePersonBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java new file mode 100644 index 0000000..c51821c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPersonOnlinePresenter { + void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java new file mode 100644 index 0000000..4932e8f --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.OnlinePersonBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PersonOnlineModelImpl; +import com.casic.dcms.mvp.view.IPersonOnlineView; + +public class PersonOnlinePresenterImpl extends BasePresenter implements IPersonOnlinePresenter, + PersonOnlineModelImpl.OnGetOnlinePersonListener { + + private IPersonOnlineView view; + private PersonOnlineModelImpl model; + + public PersonOnlinePresenterImpl(IPersonOnlineView onlineView) { + this.view = onlineView; + model = new PersonOnlineModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine) { + addSubscription(model.sendRetrofitRequest(deptid, roleTips, isOnLine)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(OnlinePersonBean resultBean) { + view.onlineResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java new file mode 100644 index 0000000..1b2e555 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.OnlinePersonBean; + +public interface IPersonOnlineView { + void onlineResult(OnlinePersonBean result); +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 2e67e25..f365d3d 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -51,7 +51,7 @@ private String startTime; private String endTime; private String eorc; - private int pageIndex = 0; + private int pageIndex = 1; /** * 临时存储网络请求到的数据 */ @@ -87,7 +87,8 @@ endTime = getIntent().getStringExtra("endTime"); eorc = getIntent().getStringExtra("eorc"); //加载第一页 - caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, endTime, eorc, 0); + caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, + endTime, eorc, pageIndex); } @Override @@ -97,7 +98,7 @@ public void onRefresh(@NonNull final RefreshLayout refreshLayout) { isRefresh = true; //刷新之后页码重置 - pageIndex = 0; + pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, endTime, eorc, pageIndex); } diff --git a/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java b/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java index 1d742e1..877d23d 100644 --- a/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java @@ -1,10 +1,20 @@ package com.casic.dcms.ui; +import android.view.View; + +import androidx.core.content.ContextCompat; + import com.casic.dcms.R; import com.casic.dcms.base.BaseActivity; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import butterknife.BindView; public class MapWatchViewActivity extends BaseActivity { + @BindView(R.id.watchMapTopLayout) + QMUITopBarLayout watchMapTopLayout; + @Override public int initLayoutView() { return R.layout.activity_map_watch; @@ -12,7 +22,14 @@ @Override protected void setupTopBarLayout() { - + watchMapTopLayout.setTitle("地图查看").setTextColor(ContextCompat.getColor(this, R.color.white)); + watchMapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + watchMapTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java index 3f9ba1e..fae1753 100644 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java @@ -1,9 +1,37 @@ package com.casic.dcms.ui; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; +import android.view.View; +import android.widget.ExpandableListView; -public class PersonOnlineActivity extends BaseActivity { +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.OnlinePersonAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.OnlinePersonBean; +import com.casic.dcms.bean.PersonBean; +import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl; +import com.casic.dcms.mvp.view.IPersonOnlineView; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; + +import butterknife.BindView; + +public class PersonOnlineActivity extends BaseActivity implements IPersonOnlineView { + + @BindView(R.id.onlineTopLayout) + QMUITopBarLayout onlineTopLayout; + @BindView(R.id.deptTreeView) + ExpandableListView deptTreeView; + + private PersonOnlinePresenterImpl onlinePresenter; + private HashSet deptSet = new HashSet<>(); + private List deptList = new ArrayList<>();//部门名集合 + private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 + private OnlinePersonAdapter onlinePersonAdapter; @Override public int initLayoutView() { @@ -12,16 +40,67 @@ @Override protected void setupTopBarLayout() { - + onlineTopLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); + onlineTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + onlineTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); } @Override public void initData() { - + onlinePresenter = new PersonOnlinePresenterImpl(this); + onlinePresenter.onReadyRetrofitRequest("", "", ""); + onlinePersonAdapter = new OnlinePersonAdapter(this); } @Override public void initEvent() { } + + @Override + public void onlineResult(OnlinePersonBean resultBean) { + if (resultBean.isSuccess()) { + List dataBeans = resultBean.getData(); + deptList.clear(); + for (OnlinePersonBean.DataBean bean : dataBeans) { + deptSet.add(bean.getDeptName()); + } + //hashSet去重然后转List + deptList = new ArrayList<>(deptSet); + if (deptList.size() > 0) { + deptAndPersons.clear(); + for (String title : deptList) { + List beanList = new ArrayList<>(); + for (OnlinePersonBean.DataBean dataBean : dataBeans) { + if (title.equals(dataBean.getDeptName())) { + PersonBean personBean = new PersonBean(); + personBean.setPersonDept(dataBean.getDeptName()); + personBean.setPersonName(dataBean.getName()); + personBean.setPersonPhone(dataBean.getPhone()); + personBean.setLastTimeFmt(dataBean.getLastTimeFmt()); + personBean.setOnLine(dataBean.isOnLine()); + + beanList.add(personBean); + } + } + deptAndPersons.add(beanList); + } + onlinePersonAdapter.setData(deptList, deptAndPersons); + deptTreeView.setAdapter(onlinePersonAdapter); + } + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (onlinePresenter != null) { + onlinePresenter.disposeRetrofitRequest(); + } + } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java index 847d5ec..c29046a 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java @@ -11,7 +11,7 @@ import com.casic.dcms.adapter.DeptExpandableAdapter; import com.casic.dcms.base.BaseFragment; import com.casic.dcms.bean.DeptTreeBean; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.mvp.presenter.DeptTreePresenterImpl; import com.casic.dcms.mvp.presenter.PhoneBookPresenterImpl; @@ -36,7 +36,7 @@ private DeptTreePresenterImpl deptTreePresenter; private PhoneBookPresenterImpl phoneBookPresenter; private List deptList = new ArrayList<>();//部门名集合 - private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 + private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 private DeptExpandableAdapter expandableAdapter; @Override @@ -86,15 +86,15 @@ List dataBeans = resultBean.getData(); deptAndPersons.clear(); for (String title : deptList) { - List beanList = new ArrayList<>(); + List beanList = new ArrayList<>(); for (PhoneBookBean.DataBean dataBean : dataBeans) { if (title.equals(dataBean.getDeptName())) { - PersonPhoneBean phoneBean = new PersonPhoneBean(); - phoneBean.setPersonDept(dataBean.getDeptName()); - phoneBean.setPersonName(dataBean.getName()); - phoneBean.setPersonPhone(dataBean.getPhone()); + PersonBean personBean = new PersonBean(); + personBean.setPersonDept(dataBean.getDeptName()); + personBean.setPersonName(dataBean.getName()); + personBean.setPersonPhone(dataBean.getPhone()); - beanList.add(phoneBean); + beanList.add(personBean); } } deptAndPersons.add(beanList); 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 6db1314..003a919 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 @@ -17,6 +17,7 @@ import com.casic.dcms.bean.EventSourceBean; import com.casic.dcms.bean.LoginOutResultBean; import com.casic.dcms.bean.LoginResultBean; +import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; @@ -318,4 +319,13 @@ @Query("isSupervise") String isSupervise, @Query("limit") int limit, @Query("offset") int offset); + + /** + * 在线人员查询 + */ + @GET("/userDevice/userDeviceOnLine") + Observable obtainOnlinePerson(@Header("token") String token, + @Query("deptid") String deptid, + @Query("roleTips") String roleTips, + @Query("isOnLine") String isOnLine); } 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 4643bba..04d4159 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 @@ -19,6 +19,7 @@ import com.casic.dcms.bean.EventSourceBean; import com.casic.dcms.bean.LoginOutResultBean; import com.casic.dcms.bean.LoginResultBean; +import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; @@ -206,12 +207,11 @@ * 根据时间查询案卷列表 */ public static Observable getCaseListResult(String casetypeCode, String casetypeDetailCode, String caseStateId, - String registerTimeBegin, String registerTimeEnd, String eorc, - int offset) { + String registerTimeBegin, String registerTimeEnd, String eorc, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainCaseList(TokenHelper.getToken(), casetypeCode, - casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, 15, offset); + return service.obtainCaseList(TokenHelper.getToken(), casetypeCode, casetypeDetailCode, caseStateId, + registerTimeBegin, registerTimeEnd, eorc, 15, offset); } /** @@ -363,4 +363,13 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainOvertimeCase(TokenHelper.getToken(), isSupervise, 15, offset); } + + /** + * 在线人员查询 + */ + public static Observable getOnlinePersonResult(String deptid, String roleTips, String isOnLine) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainOnlinePerson(TokenHelper.getToken(), deptid, roleTips, isOnLine); + } } diff --git a/app/src/main/res/drawable/ic_offline.xml b/app/src/main/res/drawable/ic_offline.xml new file mode 100644 index 0000000..679e4cf --- /dev/null +++ b/app/src/main/res/drawable/ic_offline.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_online.xml b/app/src/main/res/drawable/ic_online.xml new file mode 100644 index 0000000..966167a --- /dev/null +++ b/app/src/main/res/drawable/ic_online.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java index 28c5abf..553776a 100644 --- a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java @@ -1,6 +1,7 @@ package com.casic.dcms.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -74,6 +75,9 @@ void bindView(CaseListResultBean.DataBean.RowsBean rowsBean) { String eorcName = rowsBean.getEorcName(); + if (TextUtils.isEmpty(eorcName)) { + eorcName = "未知"; + } leftTextView.setText(eorcName.substring(0, 1)); titleView.setText(rowsBean.getCasetypeName()); contentView.setText(rowsBean.getCasetypeDetailName()); diff --git a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java index 058ec63..eae9e88 100644 --- a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java @@ -10,7 +10,7 @@ import androidx.annotation.Nullable; import com.casic.dcms.R; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import java.util.ArrayList; import java.util.List; @@ -23,14 +23,14 @@ public class DeptExpandableAdapter extends BaseExpandableListAdapter { private List groupData = new ArrayList<>(); - private List> childData = new ArrayList<>(); + private List> childData = new ArrayList<>(); private LayoutInflater layoutInflater; public DeptExpandableAdapter(Context mContext) { layoutInflater = LayoutInflater.from(mContext); } - public void setData(@Nullable List groupList, @Nullable List> childList) { + public void setData(@Nullable List groupList, @Nullable List> childList) { groupData.clear(); childData.clear(); if (groupList != null) { diff --git a/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java new file mode 100644 index 0000000..9c4cca5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java @@ -0,0 +1,135 @@ +package com.casic.dcms.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PersonBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:11 + * @email : 290677893@qq.com + **/ +public class OnlinePersonAdapter extends BaseExpandableListAdapter { + + private List groupData = new ArrayList<>(); + private List> childData = new ArrayList<>(); + private LayoutInflater layoutInflater; + + public OnlinePersonAdapter(Context mContext) { + layoutInflater = LayoutInflater.from(mContext); + } + + public void setData(@Nullable List groupList, @Nullable List> childList) { + groupData.clear(); + childData.clear(); + if (groupList != null) { + this.groupData = groupList; + if (childList != null) { + this.childData = childList; + } + } + notifyDataSetChanged(); + } + + @Override + public int getGroupCount() { + return groupData.size(); + } + + @Override + public int getChildrenCount(int groupPosition) { + return childData.get(groupPosition).size(); + } + + @Override + public Object getGroup(int groupPosition) { + return groupData.get(groupPosition); + } + + @Override + public Object getChild(int groupPosition, int childPosition) { + return childData.get(groupPosition).get(childPosition); + } + + @Override + public long getGroupId(int groupPosition) { + return groupPosition; + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return childPosition; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { + GroupViewHolder groupHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_group_list, parent, false); + groupHolder = new GroupViewHolder(); + groupHolder.groupNameView = convertView.findViewById(R.id.groupNameView); + convertView.setTag(groupHolder); + } else { + groupHolder = (GroupViewHolder) convertView.getTag(); + } + groupHolder.groupNameView.setText(groupData.get(groupPosition)); + return convertView; + } + + @Override + public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { + ChildViewHolder itemHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_child_online, parent, false); + itemHolder = new ChildViewHolder(); + itemHolder.personStatusView = convertView.findViewById(R.id.personStatusView); + itemHolder.childNameView = convertView.findViewById(R.id.childNameView); + itemHolder.onlineTimeView = convertView.findViewById(R.id.onlineTimeView); + convertView.setTag(itemHolder); + } else { + itemHolder = (ChildViewHolder) convertView.getTag(); + } + boolean onLine = childData.get(groupPosition).get(childPosition).isOnLine(); + if (onLine) { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_online); + } else { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_offline); + } + itemHolder.childNameView.setText(childData.get(groupPosition).get(childPosition).getPersonName()); + itemHolder.onlineTimeView.setText(childData.get(groupPosition).get(childPosition).getLastTimeFmt()); + return convertView; + } + + //设置子列表是否可选中 + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return true; + } + + private static class GroupViewHolder { + private TextView groupNameView; + } + + private static class ChildViewHolder { + private ImageView personStatusView; + private TextView childNameView; + private TextView onlineTimeView; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java new file mode 100644 index 0000000..6110d6a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java @@ -0,0 +1,216 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class OnlinePersonBean { + + /** + * code : 200.0 + * data : [{"account":"ldadmin","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"2021-02-20","lastTimeFmt":"2021-02-20 17:33:43","name":"路灯管理员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1357146261327441921"},{"account":"ldsczy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所处置员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179797586866178"},{"account":"ldspqy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所派遣员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179555294507010"}] + * message : 请求成功 + * success : true + */ + + private double code; + private String message; + private boolean success; + private List data; + + public double getCode() { + return code; + } + + public void setCode(double code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * account : ldadmin + * deptId : 1344118138553909250 + * deptName : 路灯所 + * deviceName : + * id : + * imei : + * lastTime : 2021-02-20 + * lastTimeFmt : 2021-02-20 17:33:43 + * name : 路灯管理员 + * networkNumber : + * onLine : false + * phone : + * positionLat : + * positionLng : + * targetId : + * userId : 1357146261327441921 + */ + + private String account; + private String deptId; + private String deptName; + private String deviceName; + private String id; + private String imei; + private String lastTime; + private String lastTimeFmt; + private String name; + private String networkNumber; + private boolean onLine; + private String phone; + private String positionLat; + private String positionLng; + private String targetId; + private String userId; + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImei() { + return imei; + } + + public void setImei(String imei) { + this.imei = imei; + } + + public String getLastTime() { + return lastTime; + } + + public void setLastTime(String lastTime) { + this.lastTime = lastTime; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNetworkNumber() { + return networkNumber; + } + + public void setNetworkNumber(String networkNumber) { + this.networkNumber = networkNumber; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPositionLat() { + return positionLat; + } + + public void setPositionLat(String positionLat) { + this.positionLat = positionLat; + } + + public String getPositionLng() { + return positionLng; + } + + public void setPositionLng(String positionLng) { + this.positionLng = positionLng; + } + + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonBean.java b/app/src/main/java/com/casic/dcms/bean/PersonBean.java new file mode 100644 index 0000000..3d33dd4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PersonBean.java @@ -0,0 +1,54 @@ +package com.casic.dcms.bean; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:00 + * @email : 290677893@qq.com + **/ +public class PersonBean { + private String personDept; + private String personName; + private String personPhone; + private String lastTimeFmt; + private boolean onLine; + + public String getPersonDept() { + return personDept; + } + + public void setPersonDept(String personDept) { + this.personDept = personDept; + } + + public String getPersonName() { + return personName; + } + + public void setPersonName(String personName) { + this.personName = personName; + } + + public String getPersonPhone() { + return personPhone; + } + + public void setPersonPhone(String personPhone) { + this.personPhone = personPhone; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java b/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java deleted file mode 100644 index 96f70a4..0000000 --- a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dcms.bean; - -/** - * @author : Pengxh - * @time : 2021/4/15 13:00 - * @email : 290677893@qq.com - **/ -public class PersonPhoneBean { - private String personDept; - private String personName; - private String personPhone; - - public String getPersonDept() { - return personDept; - } - - public void setPersonDept(String personDept) { - this.personDept = personDept; - } - - public String getPersonName() { - return personName; - } - - public void setPersonName(String personName) { - this.personName = personName; - } - - public String getPersonPhone() { - return personPhone; - } - - public void setPersonPhone(String personPhone) { - this.personPhone = personPhone; - } -} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java new file mode 100644 index 0000000..29fbd5d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPersonOnlineModel { + Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java new file mode 100644 index 0000000..7c82995 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java @@ -0,0 +1,58 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.OnlinePersonBean; +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; + +/** + * @author : Pengxh + * @time : 2021/4/15 11:21 + * @email : 290677893@qq.com + **/ +public class PersonOnlineModelImpl implements IPersonOnlineModel { + + private OnGetOnlinePersonListener listener; + + public PersonOnlineModelImpl(OnGetOnlinePersonListener onlinePersonListener) { + this.listener = onlinePersonListener; + } + + /** + * 数据回调接口 + */ + public interface OnGetOnlinePersonListener { + void onSuccess(OnlinePersonBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine) { + Observable observable = RetrofitServiceManager.getOnlinePersonResult(deptid, roleTips, isOnLine); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (listener != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(OnlinePersonBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java new file mode 100644 index 0000000..c51821c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPersonOnlinePresenter { + void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java new file mode 100644 index 0000000..4932e8f --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.OnlinePersonBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PersonOnlineModelImpl; +import com.casic.dcms.mvp.view.IPersonOnlineView; + +public class PersonOnlinePresenterImpl extends BasePresenter implements IPersonOnlinePresenter, + PersonOnlineModelImpl.OnGetOnlinePersonListener { + + private IPersonOnlineView view; + private PersonOnlineModelImpl model; + + public PersonOnlinePresenterImpl(IPersonOnlineView onlineView) { + this.view = onlineView; + model = new PersonOnlineModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine) { + addSubscription(model.sendRetrofitRequest(deptid, roleTips, isOnLine)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(OnlinePersonBean resultBean) { + view.onlineResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java new file mode 100644 index 0000000..1b2e555 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.OnlinePersonBean; + +public interface IPersonOnlineView { + void onlineResult(OnlinePersonBean result); +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 2e67e25..f365d3d 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -51,7 +51,7 @@ private String startTime; private String endTime; private String eorc; - private int pageIndex = 0; + private int pageIndex = 1; /** * 临时存储网络请求到的数据 */ @@ -87,7 +87,8 @@ endTime = getIntent().getStringExtra("endTime"); eorc = getIntent().getStringExtra("eorc"); //加载第一页 - caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, endTime, eorc, 0); + caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, + endTime, eorc, pageIndex); } @Override @@ -97,7 +98,7 @@ public void onRefresh(@NonNull final RefreshLayout refreshLayout) { isRefresh = true; //刷新之后页码重置 - pageIndex = 0; + pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, endTime, eorc, pageIndex); } diff --git a/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java b/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java index 1d742e1..877d23d 100644 --- a/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java @@ -1,10 +1,20 @@ package com.casic.dcms.ui; +import android.view.View; + +import androidx.core.content.ContextCompat; + import com.casic.dcms.R; import com.casic.dcms.base.BaseActivity; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import butterknife.BindView; public class MapWatchViewActivity extends BaseActivity { + @BindView(R.id.watchMapTopLayout) + QMUITopBarLayout watchMapTopLayout; + @Override public int initLayoutView() { return R.layout.activity_map_watch; @@ -12,7 +22,14 @@ @Override protected void setupTopBarLayout() { - + watchMapTopLayout.setTitle("地图查看").setTextColor(ContextCompat.getColor(this, R.color.white)); + watchMapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + watchMapTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java index 3f9ba1e..fae1753 100644 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java @@ -1,9 +1,37 @@ package com.casic.dcms.ui; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; +import android.view.View; +import android.widget.ExpandableListView; -public class PersonOnlineActivity extends BaseActivity { +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.OnlinePersonAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.OnlinePersonBean; +import com.casic.dcms.bean.PersonBean; +import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl; +import com.casic.dcms.mvp.view.IPersonOnlineView; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; + +import butterknife.BindView; + +public class PersonOnlineActivity extends BaseActivity implements IPersonOnlineView { + + @BindView(R.id.onlineTopLayout) + QMUITopBarLayout onlineTopLayout; + @BindView(R.id.deptTreeView) + ExpandableListView deptTreeView; + + private PersonOnlinePresenterImpl onlinePresenter; + private HashSet deptSet = new HashSet<>(); + private List deptList = new ArrayList<>();//部门名集合 + private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 + private OnlinePersonAdapter onlinePersonAdapter; @Override public int initLayoutView() { @@ -12,16 +40,67 @@ @Override protected void setupTopBarLayout() { - + onlineTopLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); + onlineTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + onlineTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); } @Override public void initData() { - + onlinePresenter = new PersonOnlinePresenterImpl(this); + onlinePresenter.onReadyRetrofitRequest("", "", ""); + onlinePersonAdapter = new OnlinePersonAdapter(this); } @Override public void initEvent() { } + + @Override + public void onlineResult(OnlinePersonBean resultBean) { + if (resultBean.isSuccess()) { + List dataBeans = resultBean.getData(); + deptList.clear(); + for (OnlinePersonBean.DataBean bean : dataBeans) { + deptSet.add(bean.getDeptName()); + } + //hashSet去重然后转List + deptList = new ArrayList<>(deptSet); + if (deptList.size() > 0) { + deptAndPersons.clear(); + for (String title : deptList) { + List beanList = new ArrayList<>(); + for (OnlinePersonBean.DataBean dataBean : dataBeans) { + if (title.equals(dataBean.getDeptName())) { + PersonBean personBean = new PersonBean(); + personBean.setPersonDept(dataBean.getDeptName()); + personBean.setPersonName(dataBean.getName()); + personBean.setPersonPhone(dataBean.getPhone()); + personBean.setLastTimeFmt(dataBean.getLastTimeFmt()); + personBean.setOnLine(dataBean.isOnLine()); + + beanList.add(personBean); + } + } + deptAndPersons.add(beanList); + } + onlinePersonAdapter.setData(deptList, deptAndPersons); + deptTreeView.setAdapter(onlinePersonAdapter); + } + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (onlinePresenter != null) { + onlinePresenter.disposeRetrofitRequest(); + } + } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java index 847d5ec..c29046a 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java @@ -11,7 +11,7 @@ import com.casic.dcms.adapter.DeptExpandableAdapter; import com.casic.dcms.base.BaseFragment; import com.casic.dcms.bean.DeptTreeBean; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.mvp.presenter.DeptTreePresenterImpl; import com.casic.dcms.mvp.presenter.PhoneBookPresenterImpl; @@ -36,7 +36,7 @@ private DeptTreePresenterImpl deptTreePresenter; private PhoneBookPresenterImpl phoneBookPresenter; private List deptList = new ArrayList<>();//部门名集合 - private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 + private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 private DeptExpandableAdapter expandableAdapter; @Override @@ -86,15 +86,15 @@ List dataBeans = resultBean.getData(); deptAndPersons.clear(); for (String title : deptList) { - List beanList = new ArrayList<>(); + List beanList = new ArrayList<>(); for (PhoneBookBean.DataBean dataBean : dataBeans) { if (title.equals(dataBean.getDeptName())) { - PersonPhoneBean phoneBean = new PersonPhoneBean(); - phoneBean.setPersonDept(dataBean.getDeptName()); - phoneBean.setPersonName(dataBean.getName()); - phoneBean.setPersonPhone(dataBean.getPhone()); + PersonBean personBean = new PersonBean(); + personBean.setPersonDept(dataBean.getDeptName()); + personBean.setPersonName(dataBean.getName()); + personBean.setPersonPhone(dataBean.getPhone()); - beanList.add(phoneBean); + beanList.add(personBean); } } deptAndPersons.add(beanList); 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 6db1314..003a919 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 @@ -17,6 +17,7 @@ import com.casic.dcms.bean.EventSourceBean; import com.casic.dcms.bean.LoginOutResultBean; import com.casic.dcms.bean.LoginResultBean; +import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; @@ -318,4 +319,13 @@ @Query("isSupervise") String isSupervise, @Query("limit") int limit, @Query("offset") int offset); + + /** + * 在线人员查询 + */ + @GET("/userDevice/userDeviceOnLine") + Observable obtainOnlinePerson(@Header("token") String token, + @Query("deptid") String deptid, + @Query("roleTips") String roleTips, + @Query("isOnLine") String isOnLine); } 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 4643bba..04d4159 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 @@ -19,6 +19,7 @@ import com.casic.dcms.bean.EventSourceBean; import com.casic.dcms.bean.LoginOutResultBean; import com.casic.dcms.bean.LoginResultBean; +import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; @@ -206,12 +207,11 @@ * 根据时间查询案卷列表 */ public static Observable getCaseListResult(String casetypeCode, String casetypeDetailCode, String caseStateId, - String registerTimeBegin, String registerTimeEnd, String eorc, - int offset) { + String registerTimeBegin, String registerTimeEnd, String eorc, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainCaseList(TokenHelper.getToken(), casetypeCode, - casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, 15, offset); + return service.obtainCaseList(TokenHelper.getToken(), casetypeCode, casetypeDetailCode, caseStateId, + registerTimeBegin, registerTimeEnd, eorc, 15, offset); } /** @@ -363,4 +363,13 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainOvertimeCase(TokenHelper.getToken(), isSupervise, 15, offset); } + + /** + * 在线人员查询 + */ + public static Observable getOnlinePersonResult(String deptid, String roleTips, String isOnLine) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainOnlinePerson(TokenHelper.getToken(), deptid, roleTips, isOnLine); + } } diff --git a/app/src/main/res/drawable/ic_offline.xml b/app/src/main/res/drawable/ic_offline.xml new file mode 100644 index 0000000..679e4cf --- /dev/null +++ b/app/src/main/res/drawable/ic_offline.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_online.xml b/app/src/main/res/drawable/ic_online.xml new file mode 100644 index 0000000..966167a --- /dev/null +++ b/app/src/main/res/drawable/ic_online.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_map_watch.xml b/app/src/main/res/layout/activity_map_watch.xml index c9edfbd..d612f0c 100644 --- a/app/src/main/res/layout/activity_map_watch.xml +++ b/app/src/main/res/layout/activity_map_watch.xml @@ -4,4 +4,9 @@ android:layout_height="match_parent" android:orientation="vertical"> + \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java index 28c5abf..553776a 100644 --- a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java @@ -1,6 +1,7 @@ package com.casic.dcms.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -74,6 +75,9 @@ void bindView(CaseListResultBean.DataBean.RowsBean rowsBean) { String eorcName = rowsBean.getEorcName(); + if (TextUtils.isEmpty(eorcName)) { + eorcName = "未知"; + } leftTextView.setText(eorcName.substring(0, 1)); titleView.setText(rowsBean.getCasetypeName()); contentView.setText(rowsBean.getCasetypeDetailName()); diff --git a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java index 058ec63..eae9e88 100644 --- a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java @@ -10,7 +10,7 @@ import androidx.annotation.Nullable; import com.casic.dcms.R; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import java.util.ArrayList; import java.util.List; @@ -23,14 +23,14 @@ public class DeptExpandableAdapter extends BaseExpandableListAdapter { private List groupData = new ArrayList<>(); - private List> childData = new ArrayList<>(); + private List> childData = new ArrayList<>(); private LayoutInflater layoutInflater; public DeptExpandableAdapter(Context mContext) { layoutInflater = LayoutInflater.from(mContext); } - public void setData(@Nullable List groupList, @Nullable List> childList) { + public void setData(@Nullable List groupList, @Nullable List> childList) { groupData.clear(); childData.clear(); if (groupList != null) { diff --git a/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java new file mode 100644 index 0000000..9c4cca5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java @@ -0,0 +1,135 @@ +package com.casic.dcms.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PersonBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:11 + * @email : 290677893@qq.com + **/ +public class OnlinePersonAdapter extends BaseExpandableListAdapter { + + private List groupData = new ArrayList<>(); + private List> childData = new ArrayList<>(); + private LayoutInflater layoutInflater; + + public OnlinePersonAdapter(Context mContext) { + layoutInflater = LayoutInflater.from(mContext); + } + + public void setData(@Nullable List groupList, @Nullable List> childList) { + groupData.clear(); + childData.clear(); + if (groupList != null) { + this.groupData = groupList; + if (childList != null) { + this.childData = childList; + } + } + notifyDataSetChanged(); + } + + @Override + public int getGroupCount() { + return groupData.size(); + } + + @Override + public int getChildrenCount(int groupPosition) { + return childData.get(groupPosition).size(); + } + + @Override + public Object getGroup(int groupPosition) { + return groupData.get(groupPosition); + } + + @Override + public Object getChild(int groupPosition, int childPosition) { + return childData.get(groupPosition).get(childPosition); + } + + @Override + public long getGroupId(int groupPosition) { + return groupPosition; + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return childPosition; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { + GroupViewHolder groupHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_group_list, parent, false); + groupHolder = new GroupViewHolder(); + groupHolder.groupNameView = convertView.findViewById(R.id.groupNameView); + convertView.setTag(groupHolder); + } else { + groupHolder = (GroupViewHolder) convertView.getTag(); + } + groupHolder.groupNameView.setText(groupData.get(groupPosition)); + return convertView; + } + + @Override + public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { + ChildViewHolder itemHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_child_online, parent, false); + itemHolder = new ChildViewHolder(); + itemHolder.personStatusView = convertView.findViewById(R.id.personStatusView); + itemHolder.childNameView = convertView.findViewById(R.id.childNameView); + itemHolder.onlineTimeView = convertView.findViewById(R.id.onlineTimeView); + convertView.setTag(itemHolder); + } else { + itemHolder = (ChildViewHolder) convertView.getTag(); + } + boolean onLine = childData.get(groupPosition).get(childPosition).isOnLine(); + if (onLine) { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_online); + } else { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_offline); + } + itemHolder.childNameView.setText(childData.get(groupPosition).get(childPosition).getPersonName()); + itemHolder.onlineTimeView.setText(childData.get(groupPosition).get(childPosition).getLastTimeFmt()); + return convertView; + } + + //设置子列表是否可选中 + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return true; + } + + private static class GroupViewHolder { + private TextView groupNameView; + } + + private static class ChildViewHolder { + private ImageView personStatusView; + private TextView childNameView; + private TextView onlineTimeView; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java new file mode 100644 index 0000000..6110d6a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java @@ -0,0 +1,216 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class OnlinePersonBean { + + /** + * code : 200.0 + * data : [{"account":"ldadmin","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"2021-02-20","lastTimeFmt":"2021-02-20 17:33:43","name":"路灯管理员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1357146261327441921"},{"account":"ldsczy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所处置员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179797586866178"},{"account":"ldspqy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所派遣员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179555294507010"}] + * message : 请求成功 + * success : true + */ + + private double code; + private String message; + private boolean success; + private List data; + + public double getCode() { + return code; + } + + public void setCode(double code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * account : ldadmin + * deptId : 1344118138553909250 + * deptName : 路灯所 + * deviceName : + * id : + * imei : + * lastTime : 2021-02-20 + * lastTimeFmt : 2021-02-20 17:33:43 + * name : 路灯管理员 + * networkNumber : + * onLine : false + * phone : + * positionLat : + * positionLng : + * targetId : + * userId : 1357146261327441921 + */ + + private String account; + private String deptId; + private String deptName; + private String deviceName; + private String id; + private String imei; + private String lastTime; + private String lastTimeFmt; + private String name; + private String networkNumber; + private boolean onLine; + private String phone; + private String positionLat; + private String positionLng; + private String targetId; + private String userId; + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImei() { + return imei; + } + + public void setImei(String imei) { + this.imei = imei; + } + + public String getLastTime() { + return lastTime; + } + + public void setLastTime(String lastTime) { + this.lastTime = lastTime; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNetworkNumber() { + return networkNumber; + } + + public void setNetworkNumber(String networkNumber) { + this.networkNumber = networkNumber; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPositionLat() { + return positionLat; + } + + public void setPositionLat(String positionLat) { + this.positionLat = positionLat; + } + + public String getPositionLng() { + return positionLng; + } + + public void setPositionLng(String positionLng) { + this.positionLng = positionLng; + } + + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonBean.java b/app/src/main/java/com/casic/dcms/bean/PersonBean.java new file mode 100644 index 0000000..3d33dd4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PersonBean.java @@ -0,0 +1,54 @@ +package com.casic.dcms.bean; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:00 + * @email : 290677893@qq.com + **/ +public class PersonBean { + private String personDept; + private String personName; + private String personPhone; + private String lastTimeFmt; + private boolean onLine; + + public String getPersonDept() { + return personDept; + } + + public void setPersonDept(String personDept) { + this.personDept = personDept; + } + + public String getPersonName() { + return personName; + } + + public void setPersonName(String personName) { + this.personName = personName; + } + + public String getPersonPhone() { + return personPhone; + } + + public void setPersonPhone(String personPhone) { + this.personPhone = personPhone; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java b/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java deleted file mode 100644 index 96f70a4..0000000 --- a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dcms.bean; - -/** - * @author : Pengxh - * @time : 2021/4/15 13:00 - * @email : 290677893@qq.com - **/ -public class PersonPhoneBean { - private String personDept; - private String personName; - private String personPhone; - - public String getPersonDept() { - return personDept; - } - - public void setPersonDept(String personDept) { - this.personDept = personDept; - } - - public String getPersonName() { - return personName; - } - - public void setPersonName(String personName) { - this.personName = personName; - } - - public String getPersonPhone() { - return personPhone; - } - - public void setPersonPhone(String personPhone) { - this.personPhone = personPhone; - } -} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java new file mode 100644 index 0000000..29fbd5d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPersonOnlineModel { + Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java new file mode 100644 index 0000000..7c82995 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java @@ -0,0 +1,58 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.OnlinePersonBean; +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; + +/** + * @author : Pengxh + * @time : 2021/4/15 11:21 + * @email : 290677893@qq.com + **/ +public class PersonOnlineModelImpl implements IPersonOnlineModel { + + private OnGetOnlinePersonListener listener; + + public PersonOnlineModelImpl(OnGetOnlinePersonListener onlinePersonListener) { + this.listener = onlinePersonListener; + } + + /** + * 数据回调接口 + */ + public interface OnGetOnlinePersonListener { + void onSuccess(OnlinePersonBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine) { + Observable observable = RetrofitServiceManager.getOnlinePersonResult(deptid, roleTips, isOnLine); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (listener != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(OnlinePersonBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java new file mode 100644 index 0000000..c51821c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPersonOnlinePresenter { + void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java new file mode 100644 index 0000000..4932e8f --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.OnlinePersonBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PersonOnlineModelImpl; +import com.casic.dcms.mvp.view.IPersonOnlineView; + +public class PersonOnlinePresenterImpl extends BasePresenter implements IPersonOnlinePresenter, + PersonOnlineModelImpl.OnGetOnlinePersonListener { + + private IPersonOnlineView view; + private PersonOnlineModelImpl model; + + public PersonOnlinePresenterImpl(IPersonOnlineView onlineView) { + this.view = onlineView; + model = new PersonOnlineModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine) { + addSubscription(model.sendRetrofitRequest(deptid, roleTips, isOnLine)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(OnlinePersonBean resultBean) { + view.onlineResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java new file mode 100644 index 0000000..1b2e555 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.OnlinePersonBean; + +public interface IPersonOnlineView { + void onlineResult(OnlinePersonBean result); +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 2e67e25..f365d3d 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -51,7 +51,7 @@ private String startTime; private String endTime; private String eorc; - private int pageIndex = 0; + private int pageIndex = 1; /** * 临时存储网络请求到的数据 */ @@ -87,7 +87,8 @@ endTime = getIntent().getStringExtra("endTime"); eorc = getIntent().getStringExtra("eorc"); //加载第一页 - caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, endTime, eorc, 0); + caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, + endTime, eorc, pageIndex); } @Override @@ -97,7 +98,7 @@ public void onRefresh(@NonNull final RefreshLayout refreshLayout) { isRefresh = true; //刷新之后页码重置 - pageIndex = 0; + pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, endTime, eorc, pageIndex); } diff --git a/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java b/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java index 1d742e1..877d23d 100644 --- a/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java @@ -1,10 +1,20 @@ package com.casic.dcms.ui; +import android.view.View; + +import androidx.core.content.ContextCompat; + import com.casic.dcms.R; import com.casic.dcms.base.BaseActivity; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import butterknife.BindView; public class MapWatchViewActivity extends BaseActivity { + @BindView(R.id.watchMapTopLayout) + QMUITopBarLayout watchMapTopLayout; + @Override public int initLayoutView() { return R.layout.activity_map_watch; @@ -12,7 +22,14 @@ @Override protected void setupTopBarLayout() { - + watchMapTopLayout.setTitle("地图查看").setTextColor(ContextCompat.getColor(this, R.color.white)); + watchMapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + watchMapTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java index 3f9ba1e..fae1753 100644 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java @@ -1,9 +1,37 @@ package com.casic.dcms.ui; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; +import android.view.View; +import android.widget.ExpandableListView; -public class PersonOnlineActivity extends BaseActivity { +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.OnlinePersonAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.OnlinePersonBean; +import com.casic.dcms.bean.PersonBean; +import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl; +import com.casic.dcms.mvp.view.IPersonOnlineView; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; + +import butterknife.BindView; + +public class PersonOnlineActivity extends BaseActivity implements IPersonOnlineView { + + @BindView(R.id.onlineTopLayout) + QMUITopBarLayout onlineTopLayout; + @BindView(R.id.deptTreeView) + ExpandableListView deptTreeView; + + private PersonOnlinePresenterImpl onlinePresenter; + private HashSet deptSet = new HashSet<>(); + private List deptList = new ArrayList<>();//部门名集合 + private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 + private OnlinePersonAdapter onlinePersonAdapter; @Override public int initLayoutView() { @@ -12,16 +40,67 @@ @Override protected void setupTopBarLayout() { - + onlineTopLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); + onlineTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + onlineTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); } @Override public void initData() { - + onlinePresenter = new PersonOnlinePresenterImpl(this); + onlinePresenter.onReadyRetrofitRequest("", "", ""); + onlinePersonAdapter = new OnlinePersonAdapter(this); } @Override public void initEvent() { } + + @Override + public void onlineResult(OnlinePersonBean resultBean) { + if (resultBean.isSuccess()) { + List dataBeans = resultBean.getData(); + deptList.clear(); + for (OnlinePersonBean.DataBean bean : dataBeans) { + deptSet.add(bean.getDeptName()); + } + //hashSet去重然后转List + deptList = new ArrayList<>(deptSet); + if (deptList.size() > 0) { + deptAndPersons.clear(); + for (String title : deptList) { + List beanList = new ArrayList<>(); + for (OnlinePersonBean.DataBean dataBean : dataBeans) { + if (title.equals(dataBean.getDeptName())) { + PersonBean personBean = new PersonBean(); + personBean.setPersonDept(dataBean.getDeptName()); + personBean.setPersonName(dataBean.getName()); + personBean.setPersonPhone(dataBean.getPhone()); + personBean.setLastTimeFmt(dataBean.getLastTimeFmt()); + personBean.setOnLine(dataBean.isOnLine()); + + beanList.add(personBean); + } + } + deptAndPersons.add(beanList); + } + onlinePersonAdapter.setData(deptList, deptAndPersons); + deptTreeView.setAdapter(onlinePersonAdapter); + } + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (onlinePresenter != null) { + onlinePresenter.disposeRetrofitRequest(); + } + } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java index 847d5ec..c29046a 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java @@ -11,7 +11,7 @@ import com.casic.dcms.adapter.DeptExpandableAdapter; import com.casic.dcms.base.BaseFragment; import com.casic.dcms.bean.DeptTreeBean; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.mvp.presenter.DeptTreePresenterImpl; import com.casic.dcms.mvp.presenter.PhoneBookPresenterImpl; @@ -36,7 +36,7 @@ private DeptTreePresenterImpl deptTreePresenter; private PhoneBookPresenterImpl phoneBookPresenter; private List deptList = new ArrayList<>();//部门名集合 - private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 + private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 private DeptExpandableAdapter expandableAdapter; @Override @@ -86,15 +86,15 @@ List dataBeans = resultBean.getData(); deptAndPersons.clear(); for (String title : deptList) { - List beanList = new ArrayList<>(); + List beanList = new ArrayList<>(); for (PhoneBookBean.DataBean dataBean : dataBeans) { if (title.equals(dataBean.getDeptName())) { - PersonPhoneBean phoneBean = new PersonPhoneBean(); - phoneBean.setPersonDept(dataBean.getDeptName()); - phoneBean.setPersonName(dataBean.getName()); - phoneBean.setPersonPhone(dataBean.getPhone()); + PersonBean personBean = new PersonBean(); + personBean.setPersonDept(dataBean.getDeptName()); + personBean.setPersonName(dataBean.getName()); + personBean.setPersonPhone(dataBean.getPhone()); - beanList.add(phoneBean); + beanList.add(personBean); } } deptAndPersons.add(beanList); 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 6db1314..003a919 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 @@ -17,6 +17,7 @@ import com.casic.dcms.bean.EventSourceBean; import com.casic.dcms.bean.LoginOutResultBean; import com.casic.dcms.bean.LoginResultBean; +import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; @@ -318,4 +319,13 @@ @Query("isSupervise") String isSupervise, @Query("limit") int limit, @Query("offset") int offset); + + /** + * 在线人员查询 + */ + @GET("/userDevice/userDeviceOnLine") + Observable obtainOnlinePerson(@Header("token") String token, + @Query("deptid") String deptid, + @Query("roleTips") String roleTips, + @Query("isOnLine") String isOnLine); } 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 4643bba..04d4159 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 @@ -19,6 +19,7 @@ import com.casic.dcms.bean.EventSourceBean; import com.casic.dcms.bean.LoginOutResultBean; import com.casic.dcms.bean.LoginResultBean; +import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; @@ -206,12 +207,11 @@ * 根据时间查询案卷列表 */ public static Observable getCaseListResult(String casetypeCode, String casetypeDetailCode, String caseStateId, - String registerTimeBegin, String registerTimeEnd, String eorc, - int offset) { + String registerTimeBegin, String registerTimeEnd, String eorc, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainCaseList(TokenHelper.getToken(), casetypeCode, - casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, 15, offset); + return service.obtainCaseList(TokenHelper.getToken(), casetypeCode, casetypeDetailCode, caseStateId, + registerTimeBegin, registerTimeEnd, eorc, 15, offset); } /** @@ -363,4 +363,13 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainOvertimeCase(TokenHelper.getToken(), isSupervise, 15, offset); } + + /** + * 在线人员查询 + */ + public static Observable getOnlinePersonResult(String deptid, String roleTips, String isOnLine) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainOnlinePerson(TokenHelper.getToken(), deptid, roleTips, isOnLine); + } } diff --git a/app/src/main/res/drawable/ic_offline.xml b/app/src/main/res/drawable/ic_offline.xml new file mode 100644 index 0000000..679e4cf --- /dev/null +++ b/app/src/main/res/drawable/ic_offline.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_online.xml b/app/src/main/res/drawable/ic_online.xml new file mode 100644 index 0000000..966167a --- /dev/null +++ b/app/src/main/res/drawable/ic_online.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_map_watch.xml b/app/src/main/res/layout/activity_map_watch.xml index c9edfbd..d612f0c 100644 --- a/app/src/main/res/layout/activity_map_watch.xml +++ b/app/src/main/res/layout/activity_map_watch.xml @@ -4,4 +4,9 @@ android:layout_height="match_parent" android:orientation="vertical"> + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_online.xml b/app/src/main/res/layout/activity_online.xml index c9edfbd..8f63d98 100644 --- a/app/src/main/res/layout/activity_online.xml +++ b/app/src/main/res/layout/activity_online.xml @@ -4,4 +4,14 @@ android:layout_height="match_parent" android:orientation="vertical"> + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java index 28c5abf..553776a 100644 --- a/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/CaseListResultAdapter.java @@ -1,6 +1,7 @@ package com.casic.dcms.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -74,6 +75,9 @@ void bindView(CaseListResultBean.DataBean.RowsBean rowsBean) { String eorcName = rowsBean.getEorcName(); + if (TextUtils.isEmpty(eorcName)) { + eorcName = "未知"; + } leftTextView.setText(eorcName.substring(0, 1)); titleView.setText(rowsBean.getCasetypeName()); contentView.setText(rowsBean.getCasetypeDetailName()); diff --git a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java index 058ec63..eae9e88 100644 --- a/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java +++ b/app/src/main/java/com/casic/dcms/adapter/DeptExpandableAdapter.java @@ -10,7 +10,7 @@ import androidx.annotation.Nullable; import com.casic.dcms.R; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import java.util.ArrayList; import java.util.List; @@ -23,14 +23,14 @@ public class DeptExpandableAdapter extends BaseExpandableListAdapter { private List groupData = new ArrayList<>(); - private List> childData = new ArrayList<>(); + private List> childData = new ArrayList<>(); private LayoutInflater layoutInflater; public DeptExpandableAdapter(Context mContext) { layoutInflater = LayoutInflater.from(mContext); } - public void setData(@Nullable List groupList, @Nullable List> childList) { + public void setData(@Nullable List groupList, @Nullable List> childList) { groupData.clear(); childData.clear(); if (groupList != null) { diff --git a/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java new file mode 100644 index 0000000..9c4cca5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/OnlinePersonAdapter.java @@ -0,0 +1,135 @@ +package com.casic.dcms.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseExpandableListAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PersonBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:11 + * @email : 290677893@qq.com + **/ +public class OnlinePersonAdapter extends BaseExpandableListAdapter { + + private List groupData = new ArrayList<>(); + private List> childData = new ArrayList<>(); + private LayoutInflater layoutInflater; + + public OnlinePersonAdapter(Context mContext) { + layoutInflater = LayoutInflater.from(mContext); + } + + public void setData(@Nullable List groupList, @Nullable List> childList) { + groupData.clear(); + childData.clear(); + if (groupList != null) { + this.groupData = groupList; + if (childList != null) { + this.childData = childList; + } + } + notifyDataSetChanged(); + } + + @Override + public int getGroupCount() { + return groupData.size(); + } + + @Override + public int getChildrenCount(int groupPosition) { + return childData.get(groupPosition).size(); + } + + @Override + public Object getGroup(int groupPosition) { + return groupData.get(groupPosition); + } + + @Override + public Object getChild(int groupPosition, int childPosition) { + return childData.get(groupPosition).get(childPosition); + } + + @Override + public long getGroupId(int groupPosition) { + return groupPosition; + } + + @Override + public long getChildId(int groupPosition, int childPosition) { + return childPosition; + } + + @Override + public boolean hasStableIds() { + return false; + } + + @Override + public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { + GroupViewHolder groupHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_group_list, parent, false); + groupHolder = new GroupViewHolder(); + groupHolder.groupNameView = convertView.findViewById(R.id.groupNameView); + convertView.setTag(groupHolder); + } else { + groupHolder = (GroupViewHolder) convertView.getTag(); + } + groupHolder.groupNameView.setText(groupData.get(groupPosition)); + return convertView; + } + + @Override + public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { + ChildViewHolder itemHolder; + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.item_child_online, parent, false); + itemHolder = new ChildViewHolder(); + itemHolder.personStatusView = convertView.findViewById(R.id.personStatusView); + itemHolder.childNameView = convertView.findViewById(R.id.childNameView); + itemHolder.onlineTimeView = convertView.findViewById(R.id.onlineTimeView); + convertView.setTag(itemHolder); + } else { + itemHolder = (ChildViewHolder) convertView.getTag(); + } + boolean onLine = childData.get(groupPosition).get(childPosition).isOnLine(); + if (onLine) { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_online); + } else { + itemHolder.personStatusView.setBackgroundResource(R.drawable.ic_offline); + } + itemHolder.childNameView.setText(childData.get(groupPosition).get(childPosition).getPersonName()); + itemHolder.onlineTimeView.setText(childData.get(groupPosition).get(childPosition).getLastTimeFmt()); + return convertView; + } + + //设置子列表是否可选中 + @Override + public boolean isChildSelectable(int groupPosition, int childPosition) { + return true; + } + + private static class GroupViewHolder { + private TextView groupNameView; + } + + private static class ChildViewHolder { + private ImageView personStatusView; + private TextView childNameView; + private TextView onlineTimeView; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java new file mode 100644 index 0000000..6110d6a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/OnlinePersonBean.java @@ -0,0 +1,216 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class OnlinePersonBean { + + /** + * code : 200.0 + * data : [{"account":"ldadmin","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"2021-02-20","lastTimeFmt":"2021-02-20 17:33:43","name":"路灯管理员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1357146261327441921"},{"account":"ldsczy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所处置员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179797586866178"},{"account":"ldspqy","deptId":"1344118138553909250","deptName":"路灯所","deviceName":"","id":"","imei":"","lastTime":"","lastTimeFmt":"","name":"路灯所派遣员","networkNumber":"","onLine":false,"phone":"","positionLat":"","positionLng":"","targetId":"","userId":"1344179555294507010"}] + * message : 请求成功 + * success : true + */ + + private double code; + private String message; + private boolean success; + private List data; + + public double getCode() { + return code; + } + + public void setCode(double code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * account : ldadmin + * deptId : 1344118138553909250 + * deptName : 路灯所 + * deviceName : + * id : + * imei : + * lastTime : 2021-02-20 + * lastTimeFmt : 2021-02-20 17:33:43 + * name : 路灯管理员 + * networkNumber : + * onLine : false + * phone : + * positionLat : + * positionLng : + * targetId : + * userId : 1357146261327441921 + */ + + private String account; + private String deptId; + private String deptName; + private String deviceName; + private String id; + private String imei; + private String lastTime; + private String lastTimeFmt; + private String name; + private String networkNumber; + private boolean onLine; + private String phone; + private String positionLat; + private String positionLng; + private String targetId; + private String userId; + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImei() { + return imei; + } + + public void setImei(String imei) { + this.imei = imei; + } + + public String getLastTime() { + return lastTime; + } + + public void setLastTime(String lastTime) { + this.lastTime = lastTime; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNetworkNumber() { + return networkNumber; + } + + public void setNetworkNumber(String networkNumber) { + this.networkNumber = networkNumber; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPositionLat() { + return positionLat; + } + + public void setPositionLat(String positionLat) { + this.positionLat = positionLat; + } + + public String getPositionLng() { + return positionLng; + } + + public void setPositionLng(String positionLng) { + this.positionLng = positionLng; + } + + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonBean.java b/app/src/main/java/com/casic/dcms/bean/PersonBean.java new file mode 100644 index 0000000..3d33dd4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PersonBean.java @@ -0,0 +1,54 @@ +package com.casic.dcms.bean; + +/** + * @author : Pengxh + * @time : 2021/4/15 13:00 + * @email : 290677893@qq.com + **/ +public class PersonBean { + private String personDept; + private String personName; + private String personPhone; + private String lastTimeFmt; + private boolean onLine; + + public String getPersonDept() { + return personDept; + } + + public void setPersonDept(String personDept) { + this.personDept = personDept; + } + + public String getPersonName() { + return personName; + } + + public void setPersonName(String personName) { + this.personName = personName; + } + + public String getPersonPhone() { + return personPhone; + } + + public void setPersonPhone(String personPhone) { + this.personPhone = personPhone; + } + + public String getLastTimeFmt() { + return lastTimeFmt; + } + + public void setLastTimeFmt(String lastTimeFmt) { + this.lastTimeFmt = lastTimeFmt; + } + + public boolean isOnLine() { + return onLine; + } + + public void setOnLine(boolean onLine) { + this.onLine = onLine; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java b/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java deleted file mode 100644 index 96f70a4..0000000 --- a/app/src/main/java/com/casic/dcms/bean/PersonPhoneBean.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.casic.dcms.bean; - -/** - * @author : Pengxh - * @time : 2021/4/15 13:00 - * @email : 290677893@qq.com - **/ -public class PersonPhoneBean { - private String personDept; - private String personName; - private String personPhone; - - public String getPersonDept() { - return personDept; - } - - public void setPersonDept(String personDept) { - this.personDept = personDept; - } - - public String getPersonName() { - return personName; - } - - public void setPersonName(String personName) { - this.personName = personName; - } - - public String getPersonPhone() { - return personPhone; - } - - public void setPersonPhone(String personPhone) { - this.personPhone = personPhone; - } -} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java new file mode 100644 index 0000000..29fbd5d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPersonOnlineModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPersonOnlineModel { + Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java new file mode 100644 index 0000000..7c82995 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PersonOnlineModelImpl.java @@ -0,0 +1,58 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.OnlinePersonBean; +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; + +/** + * @author : Pengxh + * @time : 2021/4/15 11:21 + * @email : 290677893@qq.com + **/ +public class PersonOnlineModelImpl implements IPersonOnlineModel { + + private OnGetOnlinePersonListener listener; + + public PersonOnlineModelImpl(OnGetOnlinePersonListener onlinePersonListener) { + this.listener = onlinePersonListener; + } + + /** + * 数据回调接口 + */ + public interface OnGetOnlinePersonListener { + void onSuccess(OnlinePersonBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(String deptid, String roleTips, String isOnLine) { + Observable observable = RetrofitServiceManager.getOnlinePersonResult(deptid, roleTips, isOnLine); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (listener != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(OnlinePersonBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java new file mode 100644 index 0000000..c51821c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPersonOnlinePresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPersonOnlinePresenter { + void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java new file mode 100644 index 0000000..4932e8f --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PersonOnlinePresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.OnlinePersonBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PersonOnlineModelImpl; +import com.casic.dcms.mvp.view.IPersonOnlineView; + +public class PersonOnlinePresenterImpl extends BasePresenter implements IPersonOnlinePresenter, + PersonOnlineModelImpl.OnGetOnlinePersonListener { + + private IPersonOnlineView view; + private PersonOnlineModelImpl model; + + public PersonOnlinePresenterImpl(IPersonOnlineView onlineView) { + this.view = onlineView; + model = new PersonOnlineModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(String deptid, String roleTips, String isOnLine) { + addSubscription(model.sendRetrofitRequest(deptid, roleTips, isOnLine)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(OnlinePersonBean resultBean) { + view.onlineResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java new file mode 100644 index 0000000..1b2e555 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPersonOnlineView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.OnlinePersonBean; + +public interface IPersonOnlineView { + void onlineResult(OnlinePersonBean result); +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 2e67e25..f365d3d 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -51,7 +51,7 @@ private String startTime; private String endTime; private String eorc; - private int pageIndex = 0; + private int pageIndex = 1; /** * 临时存储网络请求到的数据 */ @@ -87,7 +87,8 @@ endTime = getIntent().getStringExtra("endTime"); eorc = getIntent().getStringExtra("eorc"); //加载第一页 - caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, endTime, eorc, 0); + caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, + endTime, eorc, pageIndex); } @Override @@ -97,7 +98,7 @@ public void onRefresh(@NonNull final RefreshLayout refreshLayout) { isRefresh = true; //刷新之后页码重置 - pageIndex = 0; + pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, statusId, startTime, endTime, eorc, pageIndex); } diff --git a/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java b/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java index 1d742e1..877d23d 100644 --- a/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/MapWatchViewActivity.java @@ -1,10 +1,20 @@ package com.casic.dcms.ui; +import android.view.View; + +import androidx.core.content.ContextCompat; + import com.casic.dcms.R; import com.casic.dcms.base.BaseActivity; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import butterknife.BindView; public class MapWatchViewActivity extends BaseActivity { + @BindView(R.id.watchMapTopLayout) + QMUITopBarLayout watchMapTopLayout; + @Override public int initLayoutView() { return R.layout.activity_map_watch; @@ -12,7 +22,14 @@ @Override protected void setupTopBarLayout() { - + watchMapTopLayout.setTitle("地图查看").setTextColor(ContextCompat.getColor(this, R.color.white)); + watchMapTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + watchMapTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java index 3f9ba1e..fae1753 100644 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java @@ -1,9 +1,37 @@ package com.casic.dcms.ui; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; +import android.view.View; +import android.widget.ExpandableListView; -public class PersonOnlineActivity extends BaseActivity { +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.OnlinePersonAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.OnlinePersonBean; +import com.casic.dcms.bean.PersonBean; +import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl; +import com.casic.dcms.mvp.view.IPersonOnlineView; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; + +import butterknife.BindView; + +public class PersonOnlineActivity extends BaseActivity implements IPersonOnlineView { + + @BindView(R.id.onlineTopLayout) + QMUITopBarLayout onlineTopLayout; + @BindView(R.id.deptTreeView) + ExpandableListView deptTreeView; + + private PersonOnlinePresenterImpl onlinePresenter; + private HashSet deptSet = new HashSet<>(); + private List deptList = new ArrayList<>();//部门名集合 + private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 + private OnlinePersonAdapter onlinePersonAdapter; @Override public int initLayoutView() { @@ -12,16 +40,67 @@ @Override protected void setupTopBarLayout() { - + onlineTopLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); + onlineTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + onlineTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); } @Override public void initData() { - + onlinePresenter = new PersonOnlinePresenterImpl(this); + onlinePresenter.onReadyRetrofitRequest("", "", ""); + onlinePersonAdapter = new OnlinePersonAdapter(this); } @Override public void initEvent() { } + + @Override + public void onlineResult(OnlinePersonBean resultBean) { + if (resultBean.isSuccess()) { + List dataBeans = resultBean.getData(); + deptList.clear(); + for (OnlinePersonBean.DataBean bean : dataBeans) { + deptSet.add(bean.getDeptName()); + } + //hashSet去重然后转List + deptList = new ArrayList<>(deptSet); + if (deptList.size() > 0) { + deptAndPersons.clear(); + for (String title : deptList) { + List beanList = new ArrayList<>(); + for (OnlinePersonBean.DataBean dataBean : dataBeans) { + if (title.equals(dataBean.getDeptName())) { + PersonBean personBean = new PersonBean(); + personBean.setPersonDept(dataBean.getDeptName()); + personBean.setPersonName(dataBean.getName()); + personBean.setPersonPhone(dataBean.getPhone()); + personBean.setLastTimeFmt(dataBean.getLastTimeFmt()); + personBean.setOnLine(dataBean.isOnLine()); + + beanList.add(personBean); + } + } + deptAndPersons.add(beanList); + } + onlinePersonAdapter.setData(deptList, deptAndPersons); + deptTreeView.setAdapter(onlinePersonAdapter); + } + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (onlinePresenter != null) { + onlinePresenter.disposeRetrofitRequest(); + } + } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java index 847d5ec..c29046a 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PhonePageFragment.java @@ -11,7 +11,7 @@ import com.casic.dcms.adapter.DeptExpandableAdapter; import com.casic.dcms.base.BaseFragment; import com.casic.dcms.bean.DeptTreeBean; -import com.casic.dcms.bean.PersonPhoneBean; +import com.casic.dcms.bean.PersonBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.mvp.presenter.DeptTreePresenterImpl; import com.casic.dcms.mvp.presenter.PhoneBookPresenterImpl; @@ -36,7 +36,7 @@ private DeptTreePresenterImpl deptTreePresenter; private PhoneBookPresenterImpl phoneBookPresenter; private List deptList = new ArrayList<>();//部门名集合 - private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 + private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 private DeptExpandableAdapter expandableAdapter; @Override @@ -86,15 +86,15 @@ List dataBeans = resultBean.getData(); deptAndPersons.clear(); for (String title : deptList) { - List beanList = new ArrayList<>(); + List beanList = new ArrayList<>(); for (PhoneBookBean.DataBean dataBean : dataBeans) { if (title.equals(dataBean.getDeptName())) { - PersonPhoneBean phoneBean = new PersonPhoneBean(); - phoneBean.setPersonDept(dataBean.getDeptName()); - phoneBean.setPersonName(dataBean.getName()); - phoneBean.setPersonPhone(dataBean.getPhone()); + PersonBean personBean = new PersonBean(); + personBean.setPersonDept(dataBean.getDeptName()); + personBean.setPersonName(dataBean.getName()); + personBean.setPersonPhone(dataBean.getPhone()); - beanList.add(phoneBean); + beanList.add(personBean); } } deptAndPersons.add(beanList); 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 6db1314..003a919 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 @@ -17,6 +17,7 @@ import com.casic.dcms.bean.EventSourceBean; import com.casic.dcms.bean.LoginOutResultBean; import com.casic.dcms.bean.LoginResultBean; +import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; @@ -318,4 +319,13 @@ @Query("isSupervise") String isSupervise, @Query("limit") int limit, @Query("offset") int offset); + + /** + * 在线人员查询 + */ + @GET("/userDevice/userDeviceOnLine") + Observable obtainOnlinePerson(@Header("token") String token, + @Query("deptid") String deptid, + @Query("roleTips") String roleTips, + @Query("isOnLine") String isOnLine); } 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 4643bba..04d4159 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 @@ -19,6 +19,7 @@ import com.casic.dcms.bean.EventSourceBean; import com.casic.dcms.bean.LoginOutResultBean; import com.casic.dcms.bean.LoginResultBean; +import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; @@ -206,12 +207,11 @@ * 根据时间查询案卷列表 */ public static Observable getCaseListResult(String casetypeCode, String casetypeDetailCode, String caseStateId, - String registerTimeBegin, String registerTimeEnd, String eorc, - int offset) { + String registerTimeBegin, String registerTimeEnd, String eorc, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainCaseList(TokenHelper.getToken(), casetypeCode, - casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, 15, offset); + return service.obtainCaseList(TokenHelper.getToken(), casetypeCode, casetypeDetailCode, caseStateId, + registerTimeBegin, registerTimeEnd, eorc, 15, offset); } /** @@ -363,4 +363,13 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainOvertimeCase(TokenHelper.getToken(), isSupervise, 15, offset); } + + /** + * 在线人员查询 + */ + public static Observable getOnlinePersonResult(String deptid, String roleTips, String isOnLine) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainOnlinePerson(TokenHelper.getToken(), deptid, roleTips, isOnLine); + } } diff --git a/app/src/main/res/drawable/ic_offline.xml b/app/src/main/res/drawable/ic_offline.xml new file mode 100644 index 0000000..679e4cf --- /dev/null +++ b/app/src/main/res/drawable/ic_offline.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_online.xml b/app/src/main/res/drawable/ic_online.xml new file mode 100644 index 0000000..966167a --- /dev/null +++ b/app/src/main/res/drawable/ic_online.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_map_watch.xml b/app/src/main/res/layout/activity_map_watch.xml index c9edfbd..d612f0c 100644 --- a/app/src/main/res/layout/activity_map_watch.xml +++ b/app/src/main/res/layout/activity_map_watch.xml @@ -4,4 +4,9 @@ android:layout_height="match_parent" android:orientation="vertical"> + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_online.xml b/app/src/main/res/layout/activity_online.xml index c9edfbd..8f63d98 100644 --- a/app/src/main/res/layout/activity_online.xml +++ b/app/src/main/res/layout/activity_online.xml @@ -4,4 +4,14 @@ android:layout_height="match_parent" android:orientation="vertical"> + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_child_online.xml b/app/src/main/res/layout/item_child_online.xml new file mode 100644 index 0000000..d6b2238 --- /dev/null +++ b/app/src/main/res/layout/item_child_online.xml @@ -0,0 +1,34 @@ + + + + + + + + + \ No newline at end of file