Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
StatInfo_1
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
chenyuling
StatInfo_1
Commits
8e25ba8f
Commit
8e25ba8f
authored
Oct 30, 2023
by
chenyuling
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
"将比对id改成转化为名字"
parent
9931be08
Pipeline
#1848
canceled with stages
Changes
17
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
455 additions
and
299 deletions
+455
-299
DePortStatusAdapter.java
...a/com/srthinker/statinfo/adapter/DePortStatusAdapter.java
+62
-0
StatusInfoBean.java
...main/java/com/srthinker/statinfo/bean/StatusInfoBean.java
+71
-0
PersonMgr.java
.../main/java/com/srthinker/statinfo/database/PersonMgr.java
+26
-6
DevicePortCallback.java
...a/com/srthinker/statinfo/listener/DevicePortCallback.java
+5
-0
UpperDevicesPortCallback.java
...ker/statinfo/listener/upper/UpperDevicesPortCallback.java
+7
-0
ApiManager.java
...ain/java/com/srthinker/statinfo/presenter/ApiManager.java
+26
-2
ApiQuest.java
.../main/java/com/srthinker/statinfo/presenter/ApiQuest.java
+22
-1
StatSize.java
.../main/java/com/srthinker/statinfo/presenter/StatSize.java
+2
-2
MainActivity.java
...rc/main/java/com/srthinker/statinfo/uis/MainActivity.java
+35
-7
MyApplication.java
...c/main/java/com/srthinker/statinfo/uis/MyApplication.java
+0
-1
ConfigDlgFragment.java
...om/srthinker/statinfo/uis/fragment/ConfigDlgFragment.java
+1
-1
DePortStatusDlgFragment.java
.../srthinker/statinfo/uis/news/DePortStatusDlgFragment.java
+106
-0
SettingActivity.java
...java/com/srthinker/statinfo/uis/news/SettingActivity.java
+44
-275
EditView.java
...src/main/java/com/srthinker/statinfo/wedget/EditView.java
+11
-1
activity_setting.xml
app/src/main/res/layout/activity_setting.xml
+5
-3
dialog_port_status.xml
app/src/main/res/layout/dialog_port_status.xml
+20
-0
item_port_status.xml
app/src/main/res/layout/item_port_status.xml
+12
-0
No files found.
app/src/main/java/com/srthinker/statinfo/adapter/DePortStatusAdapter.java
0 → 100644
View file @
8e25ba8f
package
com
.
srthinker
.
statinfo
.
adapter
;
import
android.content.Context
;
import
android.view.LayoutInflater
;
import
android.view.ViewGroup
;
import
androidx.annotation.NonNull
;
import
androidx.recyclerview.widget.RecyclerView
;
import
com.srthinker.statinfo.bean.StatusInfoBean
;
import
com.srthinker.statinfo.constant.InOutType
;
import
com.srthinker.statinfo.databinding.ItemPortStatusBinding
;
import
java.util.List
;
public
class
DePortStatusAdapter
extends
RecyclerView
.
Adapter
<
RecyclerView
.
ViewHolder
>
{
private
final
Context
context
;
private
final
List
<
StatusInfoBean
>
statusInfoBeans
;
private
String
deviceType
;
public
DePortStatusAdapter
(
Context
context
,
List
<
StatusInfoBean
>
statusInfoBeans
){
this
.
context
=
context
;
this
.
statusInfoBeans
=
statusInfoBeans
;
}
@NonNull
@Override
public
RecyclerView
.
ViewHolder
onCreateViewHolder
(
@NonNull
ViewGroup
parent
,
int
viewType
)
{
ItemPortStatusBinding
binding
=
ItemPortStatusBinding
.
inflate
(
LayoutInflater
.
from
(
context
),
parent
,
false
);
return
new
ItemHolder
(
binding
);
}
@Override
public
void
onBindViewHolder
(
@NonNull
RecyclerView
.
ViewHolder
holder
,
int
position
)
{
ItemHolder
itemHolder
=
(
ItemHolder
)
holder
;
StatusInfoBean
statusInfoBean
=
statusInfoBeans
.
get
(
position
);
if
(
statusInfoBean
!=
null
)
{
if
(
statusInfoBean
.
getDevice_type
()==
InOutType
.
ENTER_TYPE
){
deviceType
=
"进入的设备--"
;
}
else
if
(
statusInfoBean
.
getDevice_type
()
==
InOutType
.
LEAVE_TYPE
){
deviceType
=
"出去的设备--"
;
}
String
desc
=
statusInfoBean
.
getTime
()+
" "
+
deviceType
+
statusInfoBean
.
getInfo
();
itemHolder
.
mBinding
.
tvStatusInfo
.
setText
(
desc
);
}
}
@Override
public
int
getItemCount
()
{
return
statusInfoBeans
!=
null
&&
statusInfoBeans
.
size
()>
0
?
statusInfoBeans
.
size
():
0
;
}
private
static
class
ItemHolder
extends
RecyclerView
.
ViewHolder
{
private
final
com
.
srthinker
.
statinfo
.
databinding
.
ItemPortStatusBinding
mBinding
;
public
ItemHolder
(
ItemPortStatusBinding
binding
)
{
super
(
binding
.
getRoot
());
mBinding
=
binding
;
}
}
}
app/src/main/java/com/srthinker/statinfo/bean/StatusInfoBean.java
0 → 100644
View file @
8e25ba8f
package
com
.
srthinker
.
statinfo
.
bean
;
import
java.util.Objects
;
public
class
StatusInfoBean
{
private
String
id
;
private
String
info
;
private
String
time
;
private
int
device_type
;
public
StatusInfoBean
(
String
time
,
String
info
,
int
device_type
)
{
this
.
info
=
info
;
this
.
time
=
time
;
this
.
device_type
=
device_type
;
}
public
String
getId
()
{
return
id
;
}
public
void
setId
(
String
id
)
{
this
.
id
=
id
;
}
public
String
getInfo
()
{
return
info
;
}
public
void
setInfo
(
String
info
)
{
this
.
info
=
info
;
}
public
String
getTime
()
{
return
time
;
}
public
void
setTime
(
String
time
)
{
this
.
time
=
time
;
}
public
int
getDevice_type
()
{
return
device_type
;
}
public
void
setDevice_type
(
int
device_type
)
{
this
.
device_type
=
device_type
;
}
@Override
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
return
true
;
if
(
o
==
null
||
getClass
()
!=
o
.
getClass
())
return
false
;
StatusInfoBean
that
=
(
StatusInfoBean
)
o
;
return
device_type
==
that
.
device_type
&&
Objects
.
equals
(
id
,
that
.
id
)
&&
Objects
.
equals
(
info
,
that
.
info
)
&&
Objects
.
equals
(
time
,
that
.
time
);
}
@Override
public
int
hashCode
()
{
return
Objects
.
hash
(
id
,
info
,
time
,
device_type
);
}
@Override
public
String
toString
()
{
return
"StatusInfoBean{"
+
"id='"
+
id
+
'\''
+
", info='"
+
info
+
'\''
+
", time='"
+
time
+
'\''
+
", device_type="
+
device_type
+
'}'
;
}
}
app/src/main/java/com/srthinker/statinfo/database/PersonMgr.java
View file @
8e25ba8f
...
...
@@ -51,25 +51,37 @@ public class PersonMgr {
//如果都有
//给从接口获取新的数据之前有分过组的数据写分组的信息,已经被删除的人员也要删除掉
ArrayList
<
PersonEntity
>
needDelPersons
=
new
ArrayList
<>();
int
equal_name
=
0
;
for
(
PersonEntity
queryPerson
:
queryPersons
)
{
String
queryId
=
queryPerson
.
getId
();
String
query_name
=
queryPerson
.
getPerson_name
();
boolean
isFound
=
false
;
for
(
PersonEntity
newPersonEntity
:
personEntities
)
{
String
newId
=
newPersonEntity
.
getId
();
if
(
TextUtils
.
equals
(
queryId
,
newId
)){
String
newPersonName
=
newPersonEntity
.
getPerson_name
();
/*if (TextUtils.equals(queryId,newId)){
newPersonEntity.setGroup(queryPerson.getGroup());
isFound = true;
break;
}*/
//根据名字进行分组
if
(
TextUtils
.
equals
(
query_name
,
newPersonName
)){
query_name
+=
1
;
newPersonEntity
.
setGroup
(
queryPerson
.
getGroup
());
isFound
=
true
;
break
;
}
}
if
(!
isFound
){
/*
if (!isFound){
needDelPersons.add(queryPerson);
}
}
*/
}
Log
.
i
(
TAG
,
"updatePerson: 和已分配的相同名字的总数="
+
equal_name
);
if
(
personHelper
!=
null
)
{
personHelper
.
delete
(
queryPersons
);
personHelper
.
save
(
personEntities
);
Log
.
i
(
TAG
,
"updatePerson: needDelPersons.size()="
+
needDelPersons
.
size
());
personHelper
.
delete
(
needDelPersons
);
/*
Log.i(TAG, "updatePerson: needDelPersons.size()="+needDelPersons.size());
personHelper.delete(needDelPersons);
*/
}
}
...
...
@@ -111,9 +123,17 @@ public class PersonMgr {
List
<
PersonEntity
>
needUpdate
=
new
ArrayList
<>();
for
(
PersonEntity
personEntity
:
personEntities
)
{
String
personId
=
personEntity
.
getId
();
String
person_name
=
personEntity
.
getPerson_name
();
for
(
PersonEntity
queryPerson
:
queryPersons
)
{
String
queryId
=
queryPerson
.
getId
();
if
(
TextUtils
.
equals
(
personId
,
queryId
)){
String
queryName
=
queryPerson
.
getPerson_name
();
/*if (TextUtils.equals(personId,queryId)){
queryPerson.setGroup(personEntity.getGroup());
needUpdate.add(queryPerson);
break;
}*/
//根据名字进行分组
if
(
TextUtils
.
equals
(
person_name
,
queryName
)){
queryPerson
.
setGroup
(
personEntity
.
getGroup
());
needUpdate
.
add
(
queryPerson
);
break
;
...
...
app/src/main/java/com/srthinker/statinfo/listener/DevicePortCallback.java
0 → 100644
View file @
8e25ba8f
package
com
.
srthinker
.
statinfo
.
listener
;
public
interface
DevicePortCallback
{
void
getDevicePortStatus
(
String
time
,
String
info
);
}
app/src/main/java/com/srthinker/statinfo/listener/upper/UpperDevicesPortCallback.java
0 → 100644
View file @
8e25ba8f
package
com
.
srthinker
.
statinfo
.
listener
.
upper
;
import
com.srthinker.statinfo.bean.StatusInfoBean
;
public
interface
UpperDevicesPortCallback
{
void
onDevicesPort
(
StatusInfoBean
statusInfoBean
);
}
app/src/main/java/com/srthinker/statinfo/presenter/ApiManager.java
View file @
8e25ba8f
...
...
@@ -16,6 +16,7 @@ import com.srthinker.statinfo.api.kuangshi.client.ApiClientException;
import
com.srthinker.statinfo.api.kuangshi.client.DefaultApiClient
;
import
com.srthinker.statinfo.database.entity.PersonEntity
;
import
com.srthinker.statinfo.listener.DeviceCallback
;
import
com.srthinker.statinfo.listener.DevicePortCallback
;
import
com.srthinker.statinfo.listener.QueryPersonCallback
;
import
com.srthinker.statinfo.util.common.DateUtil
;
import
com.srthinker.statinfo.util.common.ThreadPool
;
...
...
@@ -48,6 +49,7 @@ public class ApiManager {
private
PersonApiImpl
personApi
;
private
boolean
lastConnect
=
false
;
private
QueryPersonCallback
queryPersonsCallback
;
private
DevicePortCallback
devicePortCallback
;
public
ApiManager
(
String
username
,
String
password
,
String
serverIp
,
int
type
){
...
...
@@ -74,6 +76,10 @@ public class ApiManager {
this
.
queryPersonsCallback
=
queryPersonsCallback
;
}
public
void
setOnDevicePortCallback
(
DevicePortCallback
devicePortCallback
){
this
.
devicePortCallback
=
devicePortCallback
;
}
public
void
start
(){
isRunning
=
true
;
isFirstStatus
=
true
;
...
...
@@ -100,6 +106,9 @@ public class ApiManager {
//登录出错,打印错误信息
System
.
out
.
println
(
JSONObject
.
toJSONString
(
loginResp
));
if
(
devicePortCallback
!=
null
)
{
devicePortCallback
.
getDevicePortStatus
(
DateUtil
.
getNowDateTimeFormat
(),
JSONObject
.
toJSONString
(
loginResp
));
}
return
;
}
sessionId
=
loginResp
.
getSessionId
();
...
...
@@ -114,13 +123,18 @@ public class ApiManager {
}
}
catch
(
ApiClientException
e2
){
updateLastConnect
(
false
);
if
(
devicePortCallback
!=
null
)
{
devicePortCallback
.
getDevicePortStatus
(
DateUtil
.
getNowDateTimeFormat
(),
"authRunnable:"
+
serverIp
+
"--e2-->"
+
e2
.
getMessage
());
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
updateLastConnect
(
false
);
if
(
devicePortCallback
!=
null
)
{
devicePortCallback
.
getDevicePortStatus
(
DateUtil
.
getNowDateTimeFormat
(),
"authRunnable:"
+
serverIp
+
"--e-->"
+
e
.
getMessage
());
}
Log
.
i
(
TAG
,
"run: authRunnable抛异常:ip="
+
serverIp
);
if
(
isRunning
){
handler
.
postDelayed
(
authThreadRunnable
,
2
000
);
handler
.
postDelayed
(
authThreadRunnable
,
10
000
);
}
}
}
...
...
@@ -229,6 +243,7 @@ public class ApiManager {
PersonEntity
passBean
=
new
PersonEntity
();
passBean
.
setId
(
dataBean
.
getPerson_id
());
passBean
.
setPerson_name
(
dataBean
.
getPerson_name
());
//String id_number = dataBean.getId_number();
String
timestamp
=
dataBean
.
getTimestamp
();
String
timeString
=
DateUtil
.
zoneToDateString
(
timestamp
,
"HH:mm"
);
passBean
.
setTimestamp
(
timeString
);
...
...
@@ -250,9 +265,15 @@ public class ApiManager {
}
}
catch
(
ApiClientException
e2
){
updateLastConnect
(
false
);
if
(
devicePortCallback
!=
null
)
{
devicePortCallback
.
getDevicePortStatus
(
DateUtil
.
getNowDateTimeFormat
(),
"passRecordRunnable:"
+
serverIp
+
"--e2-->"
+
e2
.
getMessage
());
}
}
catch
(
Exception
e
)
{
Log
.
i
(
TAG
,
"run: passRecordRunnable抛异常"
);
updateLastConnect
(
false
);
if
(
devicePortCallback
!=
null
)
{
devicePortCallback
.
getDevicePortStatus
(
DateUtil
.
getNowDateTimeFormat
(),
"passRecordRunnable:"
+
serverIp
+
"--e-->"
+
e
.
getMessage
());
}
e
.
printStackTrace
();
}
...
...
@@ -301,6 +322,9 @@ public class ApiManager {
PersonEntity
personEntity
=
new
PersonEntity
();
personEntity
.
setId
(
personData
.
getId
());
personEntity
.
setPerson_name
(
personData
.
getPerson_name
());
//String id_number = DigestUtils.aesDecrypt(personData.getId_number(), sessionId);
//Log.i(TAG, "queryPerson: id_number="+id_number);
//personEntity.setId_number(id_number);
personEntities
.
add
(
personEntity
);
}
totalPersonLists
.
addAll
(
personEntities
);
...
...
app/src/main/java/com/srthinker/statinfo/presenter/ApiQuest.java
View file @
8e25ba8f
...
...
@@ -5,12 +5,14 @@ import static com.srthinker.statinfo.constant.InOutType.LEAVE_TYPE;
import
android.util.Log
;
import
com.srthinker.statinfo.bean.StatusInfoBean
;
import
com.srthinker.statinfo.database.entity.ConfigEntity
;
import
com.srthinker.statinfo.database.entity.PersonEntity
;
import
com.srthinker.statinfo.database.helper.ConfigHelper
;
import
com.srthinker.statinfo.listener.DeviceCallback
;
import
com.srthinker.statinfo.listener.QueryPersonCallback
;
import
com.srthinker.statinfo.listener.upper.UpperDevicesCallback
;
import
com.srthinker.statinfo.listener.upper.UpperDevicesPortCallback
;
import
com.srthinker.statinfo.util.common.ThreadPool
;
import
java.util.ArrayList
;
...
...
@@ -34,6 +36,7 @@ public class ApiQuest {
private
static
LinkedHashMap
<
String
,
ApiManager
>
enterMgrHashMap
=
new
LinkedHashMap
<>();
private
static
LinkedHashMap
<
String
,
ApiManager
>
leaveMgrHashMap
=
new
LinkedHashMap
<>();
private
String
oneEnterIp
;
private
UpperDevicesPortCallback
upperDevicesPortCallback
;
public
static
ApiQuest
getInstance
(){
if
(
apiQuest
==
null
)
{
...
...
@@ -48,6 +51,10 @@ public class ApiQuest {
this
.
upperDevicesCallback
=
upperDevicesCallback
;
}
public
void
setOnUpperDevicesPortCallback
(
UpperDevicesPortCallback
upperDevicesPortCallback
){
this
.
upperDevicesPortCallback
=
upperDevicesPortCallback
;
}
private
void
initData
(
int
type
){
if
(
type
==
ENTER_TYPE
){
isEnterAllConnect
=
false
;
...
...
@@ -96,6 +103,12 @@ public class ApiQuest {
ApiManager
enterMgr
=
new
ApiManager
(
username
,
password
,
ip
,
ENTER_TYPE
);
enterMgrHashMap
.
put
(
ip
,
enterMgr
);
enterMgr
.
start
();
enterMgr
.
setOnDevicePortCallback
((
time
,
info
)
->
{
StatusInfoBean
statusInfoBean
=
new
StatusInfoBean
(
time
,
info
,
ENTER_TYPE
);
if
(
upperDevicesPortCallback
!=
null
)
{
upperDevicesPortCallback
.
onDevicesPort
(
statusInfoBean
);
}
});
enterMgr
.
setOnDeviceCallback
(
new
DeviceCallback
()
{
@Override
public
void
getPassInfo
(
List
<
PersonEntity
>
passEntities
,
int
type
)
{
...
...
@@ -137,13 +150,14 @@ public class ApiQuest {
isEnterAllConnect
=
true
;
synchronized
(
enterList
){
for
(
ConfigEntity
config
:
enterList
)
{
//Log.i(TAG, "onConnectStatus: 数据库里面的数据:ip="+config.getServerIp()+",isConnect="+config.isConnect());
//Log.i(TAG, "onConnectStatus: 数据库里面的数据:ip="+config.getServerIp()+",isConnect="+config.isConnect()
+",id="+config.getId()+",type="+config.getType()
);
boolean
connect
=
config
.
isConnect
();
if
(!
connect
){
isEnterAllConnect
=
false
;
break
;
}
}
//Log.i(TAG, "onConnectStatus: isEnterAllConnect="+isEnterAllConnect);
if
(
upperDevicesCallback
!=
null
)
{
upperDevicesCallback
.
onAllConnectStatus
(
isEnterAllConnect
,
type
);
}
...
...
@@ -165,6 +179,12 @@ public class ApiQuest {
ApiManager
leaveMgr
=
new
ApiManager
(
username
,
password
,
ip
,
LEAVE_TYPE
);
leaveMgrHashMap
.
put
(
ip
,
leaveMgr
);
leaveMgr
.
start
();
leaveMgr
.
setOnDevicePortCallback
((
time
,
info
)
->
{
StatusInfoBean
statusInfoBean
=
new
StatusInfoBean
(
time
,
info
,
LEAVE_TYPE
);
if
(
upperDevicesPortCallback
!=
null
)
{
upperDevicesPortCallback
.
onDevicesPort
(
statusInfoBean
);
}
});
leaveMgr
.
setOnDeviceCallback
(
new
DeviceCallback
()
{
@Override
public
void
getPassInfo
(
List
<
PersonEntity
>
passEntities
,
int
type
)
{
...
...
@@ -236,6 +256,7 @@ public class ApiQuest {
}
public
boolean
queryPersons
(
QueryPersonCallback
callback
){
Log
.
i
(
TAG
,
"queryPersons: enterMgrHashMap.size="
+
enterMgrHashMap
.
size
());
if
(
enterMgrHashMap
.
size
()>
0
){
ApiManager
oneEnterMgr
=
enterMgrHashMap
.
get
(
oneEnterIp
);
if
(
oneEnterMgr
!=
null
)
{
...
...
app/src/main/java/com/srthinker/statinfo/presenter/StatSize.java
View file @
8e25ba8f
...
...
@@ -6,14 +6,14 @@ import java.util.ArrayList;
import
java.util.List
;
public
class
StatSize
{
//
id
和时间相同的进行去重过滤
//
名字
和时间相同的进行去重过滤
public
static
List
<
PersonEntity
>
filterList
(
List
<
PersonEntity
>
personEntityList
){
List
<
PersonEntity
>
filterPersonList
=
new
ArrayList
<>();
if
(
personEntityList
!=
null
)
{
for
(
PersonEntity
personEntity
:
personEntityList
)
{
boolean
shouldAdd
=
true
;
for
(
PersonEntity
entity
:
filterPersonList
)
{
if
(
equals
(
personEntity
.
get
Id
(),
entity
.
getId
())&&
equals
(
personEntity
.
getTimestamp
(),
entity
.
getTimestamp
())){
if
(
equals
(
personEntity
.
get
Person_name
(),
entity
.
getPerson_name
())&&
equals
(
personEntity
.
getTimestamp
(),
entity
.
getTimestamp
())){
shouldAdd
=
false
;
break
;
}
...
...
app/src/main/java/com/srthinker/statinfo/uis/MainActivity.java
View file @
8e25ba8f
...
...
@@ -22,6 +22,7 @@ import androidx.recyclerview.widget.RecyclerView;
import
com.srthinker.statinfo.adapter.GroupShowAdapter
;
import
com.srthinker.statinfo.bean.Group2Bean
;
import
com.srthinker.statinfo.bean.StatusInfoBean
;
import
com.srthinker.statinfo.constant.GroupConst
;
import
com.srthinker.statinfo.database.entity.ConfigEntity
;
import
com.srthinker.statinfo.database.entity.PersonEntity
;
...
...
@@ -31,6 +32,7 @@ import com.srthinker.statinfo.databinding.ActivityNewMainBinding;
import
com.srthinker.statinfo.download.upper.DownloadViewModel
;
import
com.srthinker.statinfo.download.upper.UpperDownloadCallback
;
import
com.srthinker.statinfo.listener.upper.UpperDevicesCallback
;
import
com.srthinker.statinfo.listener.upper.UpperDevicesPortCallback
;
import
com.srthinker.statinfo.presenter.ApiQuest
;
import
com.srthinker.statinfo.presenter.StatSize
;
import
com.srthinker.statinfo.uis.news.SettingActivity
;
...
...
@@ -52,7 +54,7 @@ import java.util.HashMap;
import
java.util.List
;
import
java.util.Map
;
public
class
MainActivity
extends
BaseActivity
implements
NetworkIPMonitor
.
OnIPChangeCallback
,
UpperDevicesCallback
,
MDownloadCallBack
,
UpperDownloadCallback
{
public
class
MainActivity
extends
BaseActivity
implements
NetworkIPMonitor
.
OnIPChangeCallback
,
UpperDevicesCallback
,
MDownloadCallBack
,
UpperDownloadCallback
,
UpperDevicesPortCallback
{
private
static
final
String
TAG
=
"NewMainActivity"
;
private
com
.
srthinker
.
statinfo
.
databinding
.
ActivityNewMainBinding
mBinding
;
...
...
@@ -104,6 +106,7 @@ public class MainActivity extends BaseActivity implements NetworkIPMonitor.OnIPC
Intent
intent
=
new
Intent
(
this
,
SettingActivity
.
class
);
startActivity
(
intent
);
});
mLoadDialog
=
new
LoadDialog
(
this
);
//1.0.2版本把这个漏了
}
/*private void initGroup() {
...
...
@@ -186,6 +189,7 @@ public class MainActivity extends BaseActivity implements NetworkIPMonitor.OnIPC
Log
.
i
(
TAG
,
"onDestroy: Main--destroy"
);
networkIPMonitor
.
stopMonitoring
();
ApiQuest
.
getInstance
().
stopApi
();
clearStatusInfoBeans
();
super
.
onDestroy
();
}
...
...
@@ -199,15 +203,22 @@ public class MainActivity extends BaseActivity implements NetworkIPMonitor.OnIPC
private
void
questApi
()
{
List
<
ConfigEntity
>
enterConfigList
=
ConfigHelper
.
getInstance
().
queryByType
(
ENTER_TYPE
);
ApiQuest
.
getInstance
().
startApi
(
enterConfigList
,
ENTER_TYPE
);
ApiQuest
.
getInstance
().
setOnUpperDevicesCallback
(
this
);
List
<
ConfigEntity
>
leaveConfigList
=
ConfigHelper
.
getInstance
().
queryByType
(
LEAVE_TYPE
);
ApiQuest
.
getInstance
().
startApi
(
leaveConfigList
,
LEAVE_TYPE
);
ApiQuest
.
getInstance
().
setOnUpperDevicesCallback
(
this
);
ApiQuest
.
getInstance
().
setOnUpperDevicesPortCallback
(
this
);
}
@Override
public
void
OnIPLost
(
String
error
)
{
ApiQuest
.
getInstance
().
stopApi
();
//修改状态
List
<
ConfigEntity
>
configEntities
=
ConfigHelper
.
getInstance
().
queryAll
();
for
(
ConfigEntity
configEntity
:
configEntities
)
{
configEntity
.
setConnect
(
false
);
//更新ip接口状态
ConfigHelper
.
getInstance
().
update
(
configEntity
);
}
}
@Override
...
...
@@ -219,21 +230,22 @@ public class MainActivity extends BaseActivity implements NetworkIPMonitor.OnIPC
@Override
public
void
onAllConnectStatus
(
boolean
hasConnect
,
int
type
)
{
HashMap
<
String
,
Boolean
>
devicesConnect
=
MyApplication
.
getInstance
().
devicesConnect
;
/*
HashMap<String, Boolean> devicesConnect = MyApplication.getInstance().devicesConnect;
if (type==ENTER_TYPE){
devicesConnect.put("enter_connect",hasConnect);
// SharedUtil.getInstance(this).writeShared("enter_connect",hasConnect);
}else if (type==LEAVE_TYPE){
// SharedUtil.getInstance(this).writeShared("leave_connect",hasConnect);
devicesConnect.put("leave_connect",hasConnect);
}
}
*/
}
private
void
updatePassInfo
(
List
<
PersonEntity
>
passEntities
,
int
type
)
{
Log
.
i
(
TAG
,
"updatePassInfo: 获取的总数="
+
passEntities
.
size
());
/*for (PersonEntity passEntity : passEntities) {
Log
.
i
(
TAG
,
"updatePassInfo: 进还是出="
+
type
);
for
(
PersonEntity
passEntity
:
passEntities
)
{
Log
.
i
(
TAG
,
"updatePassInfo: 获取到的name="
+
passEntity
.
getPerson_name
());
}
*/
}
if
(
type
==
ENTER_TYPE
){
if
(
passEntities
!=
null
)
{
int
size
=
passEntities
.
size
();
...
...
@@ -312,10 +324,13 @@ public class MainActivity extends BaseActivity implements NetworkIPMonitor.OnIPC
}
for
(
PersonEntity
personEntity
:
personEntityList
)
{
String
personId
=
personEntity
.
getId
();
String
personName
=
personEntity
.
getPerson_name
();
for
(
PersonEntity
queryPerson
:
mQueryPersonList
)
{
String
queryId
=
queryPerson
.
getId
();
String
queryName
=
queryPerson
.
getPerson_name
();
int
group
=
queryPerson
.
getGroup
();
if
(
TextUtils
.
equals
(
personId
,
queryId
)&&
groupSizeHashMap
.
containsKey
(
group
)){
//改成对比名字
if
(
TextUtils
.
equals
(
personName
,
queryName
)&&
groupSizeHashMap
.
containsKey
(
group
)){
int
totalSize
=
groupSizeHashMap
.
get
(
group
);
groupSizeHashMap
.
put
(
group
,
totalSize
+
1
);
}
...
...
@@ -467,4 +482,17 @@ public class MainActivity extends BaseActivity implements NetworkIPMonitor.OnIPC
}
});
}
public
List
<
StatusInfoBean
>
statusInfoBeans
=
new
ArrayList
<>();
@Override
public
void
onDevicesPort
(
StatusInfoBean
statusInfoBean
)
{
//Log.i(TAG, "onDevicesPort: statusInfoBean="+statusInfoBean.toString());
statusInfoBeans
.
add
(
0
,
statusInfoBean
);
SharedUtil
.
getInstance
(
this
).
writeShared
(
"statusInfoBeans"
,
statusInfoBeans
);
}
private
void
clearStatusInfoBeans
(){
statusInfoBeans
.
clear
();
SharedUtil
.
getInstance
(
this
).
writeShared
(
"statusInfoBeans"
,
statusInfoBeans
);
}
}
\ No newline at end of file
app/src/main/java/com/srthinker/statinfo/uis/MyApplication.java
View file @
8e25ba8f
...
...
@@ -10,7 +10,6 @@ public class MyApplication extends Application {
private
static
MyApplication
application
;
//声明一个公共的变量,存储网络状态
public
HashMap
<
String
,
Boolean
>
devicesConnect
=
new
HashMap
<>();
// 1秒钟后重启应用
private
int
time
=
1000
;
...
...
app/src/main/java/com/srthinker/statinfo/uis/fragment/ConfigDlgFragment.java
View file @
8e25ba8f
...
...
@@ -291,7 +291,7 @@ public class ConfigDlgFragment extends DialogFragment {
Window
window
=
getDialog
().
getWindow
();
window
.
setBackgroundDrawable
(
new
ColorDrawable
(
Color
.
TRANSPARENT
));
//window.setLayout(Utils.dip2px(context,280),ViewGroup.LayoutParams.WRAP_CONTENT);
window
.
setLayout
(
Utils
.
dip2px
(
context
,
28
0
),
(
int
)
(
Utils
.
getScreenHeight
(
context
)*
0.6
));
window
.
setLayout
(
Utils
.
dip2px
(
context
,
32
0
),
(
int
)
(
Utils
.
getScreenHeight
(
context
)*
0.6
));
window
.
setGravity
(
Gravity
.
CENTER
);
KeyBoardUtil
.
initSoftInputListener
(
getDialog
());
}
...
...
app/src/main/java/com/srthinker/statinfo/uis/news/DePortStatusDlgFragment.java
0 → 100644
View file @
8e25ba8f
package
com
.
srthinker
.
statinfo
.
uis
.
news
;
import
android.content.Context
;
import
android.graphics.Color
;
import
android.graphics.drawable.ColorDrawable
;
import
android.os.Bundle
;
import
android.os.Handler
;
import
android.util.Log
;
import
android.view.Gravity
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.Window
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
androidx.fragment.app.DialogFragment
;
import
androidx.fragment.app.FragmentActivity
;
import
androidx.recyclerview.widget.LinearLayoutManager
;
import
com.srthinker.statinfo.adapter.DePortStatusAdapter
;
import
com.srthinker.statinfo.bean.StatusInfoBean
;
import
com.srthinker.statinfo.databinding.DialogPortStatusBinding
;
import
com.srthinker.statinfo.util.common.KeyBoardUtil
;
import
com.srthinker.statinfo.util.common.SharedUtil
;
import
com.srthinker.statinfo.util.common.Utils
;
import
java.util.List
;
public
class
DePortStatusDlgFragment
extends
DialogFragment
{
private
Context
context
;
private
com
.
srthinker
.
statinfo
.
databinding
.
DialogPortStatusBinding
mBinding
;
private
FragmentActivity
activity
;
private
DePortStatusAdapter
adapter
;
private
static
final
String
TAG
=
"dpsDlaFragment"
;
@Nullable
@Override
public
View
onCreateView
(
@NonNull
LayoutInflater
inflater
,
@Nullable
ViewGroup
container
,
@Nullable
Bundle
savedInstanceState
)
{
context
=
getContext
();
activity
=
getActivity
();
mBinding
=
DialogPortStatusBinding
.
inflate
(
inflater
,
container
,
false
);
initData
();
initView
();
return
mBinding
.
getRoot
();
}
private
void
initData
()
{
deHandler
.
post
(
DePortStatusRunnable
);
}
private
void
initView
()
{
mBinding
.
ivClose
.
setOnClickListener
(
v
->{
dismiss
();
});
LinearLayoutManager
layoutManager
=
new
LinearLayoutManager
(
context
);
mBinding
.
rvPortStatus
.
setLayoutManager
(
layoutManager
);
adapter
=
new
DePortStatusAdapter
(
context
,
statusInfoBeans
);
mBinding
.
rvPortStatus
.
setAdapter
(
adapter
);
}
@Override
public
void
onResume
()
{
super
.
onResume
();
initWindow
();
}
private
void
initWindow
()
{
Window
window
=
getDialog
().
getWindow
();
window
.
setBackgroundDrawable
(
new
ColorDrawable
(
Color
.
TRANSPARENT
));
//window.setLayout(Utils.dip2px(context,280),ViewGroup.LayoutParams.WRAP_CONTENT);
window
.
setLayout
((
int
)
(
Utils
.
getScreenWidth
(
context
)*
0.7
),
(
int
)
(
Utils
.
getScreenHeight
(
context
)*
0.6
));
window
.
setGravity
(
Gravity
.
CENTER
);
KeyBoardUtil
.
initSoftInputListener
(
getDialog
());
}
private
Handler
deHandler
=
new
Handler
();
private
List
<
StatusInfoBean
>
statusInfoBeans
;
private
Runnable
DePortStatusRunnable
=
new
Runnable
(){
@Override
public
void
run
()
{
statusInfoBeans
=
SharedUtil
.
getInstance
(
context
).
readSharedList
(
"statusInfoBeans"
,
StatusInfoBean
.
class
,
null
);
for
(
StatusInfoBean
statusInfoBean
:
statusInfoBeans
)
{
Log
.
i
(
TAG
,
"run: statusInfoBean="
+
statusInfoBean
.
toString
());
}
updateStatus
();
deHandler
.
postDelayed
(
this
,
1000
);
}
};
private
void
updateStatus
()
{
activity
.
runOnUiThread
(()
->
{
if
(
adapter
!=
null
)
{
adapter
.
notifyDataSetChanged
();
}
});
}
@Override
public
void
onDestroyView
()
{
deHandler
.
removeCallbacks
(
DePortStatusRunnable
);
super
.
onDestroyView
();
}
}
app/src/main/java/com/srthinker/statinfo/uis/news/SettingActivity.java
View file @
8e25ba8f
...
...
@@ -2,25 +2,12 @@ package com.srthinker.statinfo.uis.news;
import
static
com
.
srthinker
.
statinfo
.
constant
.
Const
.
DEVICE_SN
;
import
static
com
.
srthinker
.
statinfo
.
constant
.
Const
.
DEVICE_TYPE
;
import
static
com
.
srthinker
.
statinfo
.
constant
.
GroupConst
.
BUILD
;
import
static
com
.
srthinker
.
statinfo
.
constant
.
GroupConst
.
BUILD_ID
;
import
static
com
.
srthinker
.
statinfo
.
constant
.
GroupConst
.
OUTRIGGER
;
import
static
com
.
srthinker
.
statinfo
.
constant
.
GroupConst
.
OUTRIGGER_ID
;
import
static
com
.
srthinker
.
statinfo
.
constant
.
GroupConst
.
SUPERVISOR
;
import
static
com
.
srthinker
.
statinfo
.
constant
.
GroupConst
.
SUPERVISOR_ID
;
import
static
com
.
srthinker
.
statinfo
.
constant
.
GroupConst
.
WATERPROOF
;
import
static
com
.
srthinker
.
statinfo
.
constant
.
GroupConst
.
WATERPROOF_ID
;
import
static
com
.
srthinker
.
statinfo
.
constant
.
InOutType
.
ENTER_TYPE
;
import
static
com
.
srthinker
.
statinfo
.
constant
.
InOutType
.
LEAVE_TYPE
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.os.Environment
;
import
android.text.TextUtils
;
import
android.util.Log
;
import
android.view.View
;
import
androidx.annotation.NonNull
;
import
com.srthinker.statinfo.database.PersonMgr
;
import
com.srthinker.statinfo.database.entity.ConfigEntity
;
...
...
@@ -30,33 +17,23 @@ import com.srthinker.statinfo.listener.ConfigCallback;
import
com.srthinker.statinfo.listener.QueryPersonCallback
;
import
com.srthinker.statinfo.listener.upper.UpperDevicesCallback
;
import
com.srthinker.statinfo.presenter.ApiQuest
;
import
com.srthinker.statinfo.presenter.StatSize
;
import
com.srthinker.statinfo.uis.BaseActivity
;
import
com.srthinker.statinfo.uis.GroupActivity
;
import
com.srthinker.statinfo.uis.MyApplication
;
import
com.srthinker.statinfo.uis.fragment.ConfigDlgFragment
;
import
com.srthinker.statinfo.util.common.ClickUtil
;
import
com.srthinker.statinfo.util.common.SharedUtil
;
import
com.srthinker.statinfo.util.common.Utils
;
import
com.srthinker.statinfo.util.other.NetworkIPMonitor
;
import
com.srthinker.statinfo.wedget.LoadDialog
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
public
class
SettingActivity
extends
BaseActivity
implements
ConfigCallback
,
QueryPersonCallback
,
UpperDevicesCallback
{
public
class
SettingActivity
extends
BaseActivity
implements
ConfigCallback
,
QueryPersonCallback
,
UpperDevicesCallback
,
NetworkIPMonitor
.
OnIPChangeCallback
{
private
static
final
String
TAG
=
"SettingActivity"
;
private
com
.
srthinker
.
statinfo
.
databinding
.
ActivitySettingBinding
mBinding
;
private
List
<
PersonEntity
>
enterBeans
;
private
List
<
PersonEntity
>
leaveBeans
;
private
NetworkIPMonitor
networkIPMonitor
;
private
String
installPath
=
""
;
private
LoadDialog
mLoadDialog
;
//private String savePath = "/sdcard/update/StatInfo.apk";
//getFilesDir() + "/update", "StatInfo.apk"
private
String
savePath
=
Environment
.
getExternalStorageDirectory
().
getPath
()
+
"/update"
;
private
int
lastEnterSize
=
0
;
private
int
lastLeaveSize
=
0
;
private
int
lastPresentSize
=
0
;
...
...
@@ -68,6 +45,9 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Que
private
boolean
leave_connect
;
private
boolean
enter_connect
;
private
boolean
isModified
=
false
;
// 设置标志位表示有进行了修改
private
String
deviceDesc
;
private
NetworkIPMonitor
networkIPMonitor
;
private
String
networkChange
;
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
...
...
@@ -83,21 +63,18 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Que
protected
void
initData
()
{
Log
.
i
(
TAG
,
"initData: Setting-init"
);
SharedUtil
.
getInstance
(
this
).
writeShared
(
"isModified"
,
isModified
);
/*networkIPMonitor = new NetworkIPMonitor(this);
enterBeans = new ArrayList<>();
leaveBeans = new ArrayList<>();
networkIPMonitor
=
new
NetworkIPMonitor
(
this
);
networkIPMonitor
.
startMonitoring
();
networkIPMonitor.setOnIPChangeCallback(this);
*/
networkIPMonitor
.
setOnIPChangeCallback
(
this
);
}
@Override
protected
void
initView
()
{
//mLoadDialog = LoadDialog.getInstance(this);
mLoadDialog
=
new
LoadDialog
(
this
);
//Log.i(TAG, "initView: deviceSn="+deviceSn+"V"+ Utils.getVersionName(this));
mBinding
.
tvDeviceDesc
.
setText
(
DEVICE_TYPE
+
" "
+
DEVICE_SN
+
" V"
+
Utils
.
getVersionName
(
this
));
deviceDesc
=
"设备型号: "
+
DEVICE_TYPE
+
"\n\n"
+
"设备SN: "
+
DEVICE_SN
+
"\n\n设备版本: V"
+
Utils
.
getVersionName
(
this
)+
"\n\n"
;
mBinding
.
tvDeviceDesc
.
setText
(
deviceDesc
+
"网络未连接"
);
//getResp();
mBinding
.
tvEnterText
.
setOnClickListener
(
v
->{
showConfigDialog
(
ENTER_TYPE
);
...
...
@@ -109,7 +86,7 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Que
boolean
isQueryPersons
=
ApiQuest
.
getInstance
().
queryPersons
(
this
);
//Log.i(TAG, "initView: isQueryPersons="+isQueryPersons);
if
(!
isQueryPersons
)
{
showTips
(
"请
先配置设备信息
"
);
showTips
(
"请
检查配置信息和检查网络
"
);
}
else
{
ClickUtil
.
disableClick
(
mBinding
.
btnGroupDetail
);
}
...
...
@@ -117,6 +94,9 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Que
mBinding
.
ivBack
.
setOnClickListener
(
v
->{
onBackPressed
();
});
/* mBinding.tvDeviceConfig.setOnClickListener(v->{
showPortDialog();
});*/
}
private
void
showConfigDialog
(
int
type
)
{
...
...
@@ -130,12 +110,19 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Que
configDlgFragment
.
setCancelable
(
false
);
}
private
void
showPortDialog
(){
DePortStatusDlgFragment
dePortStatusDlgFragment
=
new
DePortStatusDlgFragment
();
if
(
dePortStatusDlgFragment
.
isResumed
()){
return
;
}
dePortStatusDlgFragment
.
showNow
(
getSupportFragmentManager
(),
dePortStatusDlgFragment
.
getClass
().
getSimpleName
());
}
@Override
protected
void
onResume
()
{
super
.
onResume
();
updateDeviceConnect
();
//
updateDeviceConnect();
/*//获取最新的人员信息列表
mQueryPersonList = PersonHelper.getInstance().queryAll();
//更新分组情况
...
...
@@ -145,12 +132,12 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Que
// detectUpgrade(); //检测版本升级
}
private
void
updateDeviceConnect
()
{
/*
private void updateDeviceConnect() {
HashMap<String, Boolean> devicesConnect = MyApplication.getInstance().devicesConnect;
enter_connect = devicesConnect.getOrDefault("enter_connect",false);
leave_connect = devicesConnect.getOrDefault("leave_connect",false);
/*enter_connect = SharedUtil.getInstance(this).readShared("enter_connect", false);
leave_connect = SharedUtil.getInstance(this).readShared("leave_connect", false);*/
*/
/*enter_connect = SharedUtil.getInstance(this).readShared("enter_connect", false);
leave_connect = SharedUtil.getInstance(this).readShared("leave_connect", false);*/
/*
if (enter_connect){
mBinding.tvEnterError.setVisibility(View.GONE);
}else{
...
...
@@ -161,251 +148,17 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Que
}else{
mBinding.tvLeaveError.setVisibility(View.VISIBLE);
}
}
}
*/
@Override
protected
void
onDestroy
()
{
networkIPMonitor
.
stopMonitoring
();
super
.
onDestroy
();
}
/* @Override
public void checkResult(boolean needUpdate, boolean canInstall, UpdateInfo onlineInfo) {
if (needUpdate){
if (onlineInfo!=null){
Log.i(TAG, "checkResult: onlineInfo="+ GsonUtil.toJsonString(onlineInfo));
//Environment.getExternalStorageDirectory().getPath()=/storage/emulated/0
//getFilesDir()=installPath=/data/user/0/com.srthinker.statinfo/files
//String installPath = getFilesDir() + "/" + "StatInfo.apk";
//boolean isCreate = FileUtil.createFile(getFilesDir() + "/update", "StatInfo.apk");
FileUtil.deleteFile(savePath+ File.separator+"StatInfo.apk");
boolean isCreate = FileUtil.createFile( savePath+File.separator, "StatInfo.apk");
if (isCreate){
//installPath = getFilesDir()+"/update/StatInfo.apk";
installPath = savePath+File.separator+"StatInfo.apk";
DownloadViewModel downloadViewModel = new DownloadViewModel(this);
downloadViewModel.initData();
downloadViewModel.startDownload(onlineInfo.getDownloadUrl(),installPath);
downloadViewModel.setOnUpperDownloadCallback(this);
}
}
}
}
@Override
public void onProgress(String progress, String filePath) {
runOnUiThread(()->{
//Log.i(TAG, "onProgress: progress="+progress);
String desc = "下载更新中..."+progress;
if (mLoadDialog != null) {
mLoadDialog.setContent(desc);
mLoadDialog.showDialog();
}
});
}
@Override
public void onResult(int downStatus, String filePath) {
runOnUiThread(()->{
if (downStatus == DOWN_START){
String desc = "准备下载更新";
if (mLoadDialog != null) {
mLoadDialog.setContent(desc);
mLoadDialog.showDialog();
}
} else if (downStatus== DOWN_FINISH){
//安装更新
//Log.i(TAG, "onResult:进来多少次");
//showTips("更新版本,将进行安装");
String desc = "进行安装,请稍等";
if (mLoadDialog != null) {
mLoadDialog.setContent(desc);
mLoadDialog.showDialog();
}
//Utils.installApp(getApplicationContext(),new File(installPath));
//有静默安装的话需要开新线程,不然前面的弹框不进行显示
ThreadPool.getInstance().getThreadPoolExecutor().execute(() -> {
boolean restricted = Utils.isRootPermissionRestricted();
if (!restricted){
Utils.clientInstall(installPath, SettingActivity.this,".uis.MainActivity");
}else{
Utils.installApp(getApplicationContext(),new File(installPath));
}
runOnUiThread(()->{
if (mLoadDialog != null) {
mLoadDialog.dismissDialog();
mLoadDialog=null;
}
});
});
}else if (downStatus==DOWN_ERROR){
showTips("下载更新失败");
FileUtil.deleteFile(installPath);
}
});
}*/
private
void
updatePassInfo
(
List
<
PersonEntity
>
passEntities
,
int
type
)
{
Log
.
i
(
TAG
,
"updatePassInfo: 获取的总数="
+
passEntities
.
size
());
/*for (PersonEntity passEntity : passEntities) {
Log.i(TAG, "updatePassInfo: 获取到的name="+passEntity.getPerson_name());
}*/
if
(
type
==
ENTER_TYPE
){
if
(
passEntities
!=
null
)
{
int
size
=
passEntities
.
size
();
if
(
size
!=
lastEnterSize
){
/*//更新进出情况
//enterBeans = passEntities; 全局变量直接赋值会出现问题
enterBeans.clear();
enterBeans.addAll(passEntities);
enterAdapter.setDataList(passEntities);
//更新人员情况(是否要根据id去重)
if (NEED_NO_REPET) {
List<PersonEntity> enterListNo = StatSize.filterList(passEntities);
lastEnterSize = enterListNo.size();
}else{
lastEnterSize = size;
}
lastPresentSize = lastEnterSize-lastLeaveSize;
mBinding.nvEnter.setNumber(lastEnterSize);
mBinding.nvLeave.setNumber(lastLeaveSize);
mBinding.nvPresent.setNumber(lastPresentSize);*/
enterBeans
.
clear
();
enterBeans
.
addAll
(
passEntities
);
lastEnterSize
=
size
;
//更新分组情况(是否要根据id去重)
groupEnterHashMap
=
getGroupSizeHashMap
(
passEntities
);
updatePresentSize
(
groupEnterHashMap
,
groupLeaveHashMap
);
}
}
}
else
if
(
type
==
LEAVE_TYPE
){
//leaveBeans = passEntities;
if
(
passEntities
!=
null
)
{
int
size
=
passEntities
.
size
();
//进出有变化时才更新
if
(
size
!=
lastLeaveSize
){
/*leaveBeans.clear();
leaveBeans.addAll(passEntities);
//更新进出情况
leaveAdapter.setDataList(passEntities);
//更新人员情况(是否要根据id去重)
if (NEED_NO_REPET) {
List<PersonEntity> leaveListNo = StatSize.filterList(passEntities);
lastLeaveSize = leaveListNo.size();
}else{
lastLeaveSize = size;
}
lastPresentSize = lastEnterSize-lastLeaveSize;
mBinding.nvEnter.setNumber(lastEnterSize);
mBinding.nvLeave.setNumber(lastLeaveSize);
mBinding.nvPresent.setNumber(lastPresentSize);*/
leaveBeans
.
clear
();
leaveBeans
.
addAll
(
passEntities
);
lastLeaveSize
=
size
;
//更新分组情况(是否要根据id去重)
groupLeaveHashMap
=
getGroupSizeHashMap
(
passEntities
);
updatePresentSize
(
groupEnterHashMap
,
groupLeaveHashMap
);
}
}
}
}
@NonNull
private
HashMap
<
Integer
,
Integer
>
getGroupSizeHashMap
(
List
<
PersonEntity
>
personEntityList
)
{
HashMap
<
Integer
,
Integer
>
groupSizeHashMap
=
new
HashMap
<>();
if
(
NEED_NO_REPET
)
{
personEntityList
=
StatSize
.
filterList
(
personEntityList
);
}
if
(
mQueryPersonList
!=
null
)
{
for
(
PersonEntity
entity
:
mQueryPersonList
)
{
int
group
=
entity
.
getGroup
();
if
(!
groupSizeHashMap
.
containsKey
(
group
)){
groupSizeHashMap
.
put
(
group
,
0
);
}
}
for
(
PersonEntity
personEntity
:
personEntityList
)
{
String
personId
=
personEntity
.
getId
();
for
(
PersonEntity
queryPerson
:
mQueryPersonList
)
{
String
queryId
=
queryPerson
.
getId
();
int
group
=
queryPerson
.
getGroup
();
if
(
TextUtils
.
equals
(
personId
,
queryId
)&&
groupSizeHashMap
.
containsKey
(
group
)){
int
totalSize
=
groupSizeHashMap
.
get
(
group
);
groupSizeHashMap
.
put
(
group
,
totalSize
+
1
);
}
}
}
}
return
groupSizeHashMap
;
}
private
void
updatePresentSize
(
HashMap
<
Integer
,
Integer
>
groupEnterHashMap
,
HashMap
<
Integer
,
Integer
>
groupLeaveHashMap
){
groupPresentHashMap
=
new
HashMap
<>();
if
(
mQueryPersonList
!=
null
)
{
for
(
PersonEntity
entity
:
mQueryPersonList
)
{
int
group
=
entity
.
getGroup
();
if
(!
groupPresentHashMap
.
containsKey
(
group
))
{
groupPresentHashMap
.
put
(
group
,
0
);
}
}
}
//更新分组情况
if
(
groupEnterHashMap
!=
null
)
{
for
(
Map
.
Entry
<
Integer
,
Integer
>
enterEntry
:
groupEnterHashMap
.
entrySet
())
{
int
group
=
enterEntry
.
getKey
();
int
enterSize
=
enterEntry
.
getValue
();
groupPresentHashMap
.
put
(
group
,
enterSize
);
}
}
if
(
groupLeaveHashMap
!=
null
)
{
for
(
Map
.
Entry
<
Integer
,
Integer
>
leaveEntry
:
groupLeaveHashMap
.
entrySet
())
{
int
group
=
leaveEntry
.
getKey
();
int
leaveSize
=
leaveEntry
.
getValue
();
groupPresentHashMap
.
put
(
group
,
groupPresentHashMap
.
get
(
group
)-
leaveSize
);
}
}
//如果只有一个人,从一个组换到另一个组,之前的数据没有清空,需要先进行清空,置空为0
SharedUtil
.
getInstance
(
this
).
writeShared
(
WATERPROOF
,
0
);
SharedUtil
.
getInstance
(
this
).
writeShared
(
OUTRIGGER
,
0
);
SharedUtil
.
getInstance
(
this
).
writeShared
(
BUILD
,
0
);
SharedUtil
.
getInstance
(
this
).
writeShared
(
SUPERVISOR
,
0
);
for
(
Map
.
Entry
<
Integer
,
Integer
>
presentEntry
:
groupPresentHashMap
.
entrySet
())
{
int
group
=
presentEntry
.
getKey
();
int
presentSize
=
presentEntry
.
getValue
();
Log
.
i
(
TAG
,
"updatePresentSize: group="
+
group
+
",presentSize="
+
presentSize
);
switch
(
group
){
case
WATERPROOF_ID:
SharedUtil
.
getInstance
(
this
).
writeShared
(
WATERPROOF
,
presentSize
);
break
;
case
OUTRIGGER_ID:
SharedUtil
.
getInstance
(
this
).
writeShared
(
OUTRIGGER
,
presentSize
);
break
;
case
BUILD_ID:
SharedUtil
.
getInstance
(
this
).
writeShared
(
BUILD
,
presentSize
);
break
;
case
SUPERVISOR_ID:
SharedUtil
.
getInstance
(
this
).
writeShared
(
SUPERVISOR
,
presentSize
);
break
;
}
}
//要更新演示页面的分组请求
/*ArrayList<GroupBean> groupBeans = updateGroup();
if (groupAdapter != null) {
groupAdapter.setDataList(groupBeans);
}*/
}
@Override
public
void
onQueryStatus
(
String
desc
,
boolean
status
)
{
runOnUiThread
(()->{
...
...
@@ -439,7 +192,7 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Que
isModified
=
true
;
SharedUtil
.
getInstance
(
this
).
writeShared
(
"isModified"
,
isModified
);
//更新连接状态
updateDeviceConnect
();
//
updateDeviceConnect();
}
@Override
...
...
@@ -451,7 +204,8 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Que
@Override
public
void
onAllConnectStatus
(
boolean
hasConnect
,
int
type
)
{
Log
.
i
(
TAG
,
"onAllConnectStatus: 接收到的连接状态 hasConnect="
+
hasConnect
);
//有个问题只有进行配置了这里才返回,还是不写这里,要看连接情况直接看连接的ip
/*Log.i(TAG, "onAllConnectStatus: 接收到的连接状态 hasConnect="+hasConnect);
Log.i(TAG, "onAllConnectStatus: type="+type);
runOnUiThread(()->{
HashMap<String, Boolean> devicesConnect = MyApplication.getInstance().devicesConnect;
...
...
@@ -473,8 +227,23 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Que
mBinding.tvLeaveError.setVisibility(View.GONE);
}
}
});
});
*/
}
@Override
public
void
OnIPChange
(
String
ipAddress
,
String
networkType
)
{
networkChange
=
"连接的网络IP: "
+
ipAddress
;
runOnUiThread
(()
->
{
mBinding
.
tvDeviceDesc
.
setText
(
deviceDesc
+
networkChange
);
});
}
@Override
public
void
OnIPLost
(
String
error
)
{
networkChange
=
"网络未连接"
;
runOnUiThread
(()
->
{
mBinding
.
tvDeviceDesc
.
setText
(
deviceDesc
+
networkChange
);
});
}
}
\ No newline at end of file
app/src/main/java/com/srthinker/statinfo/wedget/EditView.java
View file @
8e25ba8f
...
...
@@ -2,6 +2,7 @@ package com.srthinker.statinfo.wedget;
import
android.content.Context
;
import
android.util.AttributeSet
;
import
android.util.TypedValue
;
import
android.view.LayoutInflater
;
import
android.widget.LinearLayout
;
...
...
@@ -31,8 +32,17 @@ public class EditView extends LinearLayout {
}
public
void
initItem
(
String
title
,
String
hint
){
/*mBinding.tvTitle.setText(title);
mBinding.etContent.setHint(hint);*/
initItem
(
title
,
hint
,
18
);
}
public
void
initItem
(
String
title
,
String
hint
,
float
textSize
){
mBinding
.
tvTitle
.
setText
(
title
);
mBinding
.
etContent
.
setHint
(
hint
);
mBinding
.
tvTitle
.
setTextSize
(
TypedValue
.
COMPLEX_UNIT_SP
,
textSize
);
mBinding
.
etContent
.
setTextSize
(
TypedValue
.
COMPLEX_UNIT_SP
,
textSize
);
mBinding
.
tvStatus
.
setTextSize
(
TypedValue
.
COMPLEX_UNIT_SP
,
textSize
);
}
public
void
setContent
(
String
content
){
...
...
@@ -54,7 +64,7 @@ public class EditView extends LinearLayout {
}
public
String
getContent
(){
return
mBinding
.
etContent
.
getText
().
toString
();
return
mBinding
.
etContent
.
getText
().
toString
()
.
trim
()
;
}
public
void
setInputType
(
int
type
){
...
...
app/src/main/res/layout/activity_setting.xml
View file @
8e25ba8f
...
...
@@ -23,6 +23,7 @@
android:padding=
"15dp"
android:orientation=
"vertical"
>
<TextView
android:id=
"@+id/tv_device_config"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:textColor=
"@color/white"
...
...
@@ -56,7 +57,7 @@
android:textSize=
"@dimen/text_12_5"
android:layout_toRightOf=
"@+id/tv_enter_text"
android:layout_alignBottom=
"@+id/tv_enter_text"
android:visibility=
"
visibl
e"
android:visibility=
"
gon
e"
android:layout_marginLeft=
"5dp"
/>
<TextView
android:id=
"@+id/tv_leave_text"
...
...
@@ -77,7 +78,7 @@
android:textSize=
"@dimen/text_12_5"
android:layout_toLeftOf=
"@+id/tv_leave_text"
android:layout_alignBottom=
"@+id/tv_leave_text"
android:visibility=
"
visibl
e"
android:visibility=
"
gon
e"
android:layout_marginRight=
"5dp"
/>
</RelativeLayout>
...
...
@@ -91,6 +92,7 @@
android:layout_marginTop=
"15dp"
android:orientation=
"vertical"
>
<TextView
android:id=
"@+id/tv_person_config"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:textColor=
"@color/white"
...
...
@@ -141,7 +143,7 @@
android:gravity=
"left|center"
android:layout_marginTop=
"17dp"
android:textColor=
"@color/white"
android:textSize=
"@dimen/text_1
0
"
/>
android:textSize=
"@dimen/text_1
2_5
"
/>
</LinearLayout>
...
...
app/src/main/res/layout/dialog_port_status.xml
0 → 100644
View file @
8e25ba8f
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
android:background=
"@color/black"
>
<ImageView
android:id=
"@+id/iv_close"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:src=
"@mipmap/ic_close"
android:padding=
"10dp"
android:layout_gravity=
"right"
/>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_port_status"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_margin=
"10dp"
/>
</LinearLayout>
\ No newline at end of file
app/src/main/res/layout/item_port_status.xml
0 → 100644
View file @
8e25ba8f
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"horizontal"
>
<TextView
android:id=
"@+id/tv_status_info"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:textSize=
"25sp"
android:textColor=
"@color/red"
/>
</LinearLayout>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment