Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
attendance-performance-platform
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵啸非
attendance-performance-platform
Commits
d411ac8e
Commit
d411ac8e
authored
Nov 28, 2023
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加考勤逻辑判断
parent
2005e653
Changes
3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
204 additions
and
101 deletions
+204
-101
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/staff/service/IHikStaffService.java
...ortals/xhx/module/hik/staff/service/IHikStaffService.java
+8
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/staff/service/impl/HikStaffServiceImpl.java
...hx/module/hik/staff/service/impl/HikStaffServiceImpl.java
+84
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/service/impl/StaffServiceImpl.java
...rtals/xhx/module/staff/service/impl/StaffServiceImpl.java
+112
-101
No files found.
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/staff/service/IHikStaffService.java
View file @
d411ac8e
...
...
@@ -23,6 +23,14 @@ public interface IHikStaffService {
Rest
<
UserSearchInfo
>
getPersonList
(
StaffReq
personReq
,
DoorEntity
doorEntity
);
/**
* 获取人员总数接口
*
* @param personReq
* @return
*/
Rest
<
UserSearchInfo
>
getPersonCount
(
StaffReq
personReq
,
DoorEntity
doorEntity
);
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/staff/service/impl/HikStaffServiceImpl.java
View file @
d411ac8e
...
...
@@ -36,6 +36,90 @@ public class HikStaffServiceImpl extends AbstractHikService implements IHikStaff
initLoadSdk
(
hCNetSDK
);
int
userID
=
login
(
hCNetSDK
,
doorEntity
);
HCNetSDK
.
BYTE_ARRAY
ptrByteArray
=
new
HCNetSDK
.
BYTE_ARRAY
(
1024
);
//数组
String
strInBuffer
=
"POST /ISAPI/AccessControl/UserInfo/Search?format=json"
;
System
.
arraycopy
(
strInBuffer
.
getBytes
(),
0
,
ptrByteArray
.
byValue
,
0
,
strInBuffer
.
length
());
//字符串拷贝到数组中
ptrByteArray
.
write
();
String
resp
=
""
;
try
{
int
lHandler
=
hCNetSDK
.
NET_DVR_StartRemoteConfig
(
userID
,
HCNetSDK
.
NET_DVR_JSON_CONFIG
,
ptrByteArray
.
getPointer
(),
strInBuffer
.
length
(),
null
,
null
);
if
(
lHandler
<
0
)
{
log
.
info
(
"SearchUserInfo NET_DVR_StartRemoteConfig 失败,错误码为==>{}"
,
hCNetSDK
.
NET_DVR_GetLastError
());
throw
new
AppException
(
String
.
format
(
"SearchUserInfo NET_DVR_StartRemoteConfig 失败,错误码为==>%s"
,
hCNetSDK
.
NET_DVR_GetLastError
()));
}
else
{
JSONObject
jsonObject
=
new
JSONObject
();
JSONObject
jsonSearchCond
=
new
JSONObject
();
jsonSearchCond
.
put
(
"searchID"
,
DateUtil
.
format
(
new
Date
(),
"yyyyMMdd"
));
jsonSearchCond
.
put
(
"searchResultPosition"
,
personReq
.
getPageNo
()*
personReq
.
getPageSize
());
jsonSearchCond
.
put
(
"maxResults"
,
personReq
.
getPageSize
());
jsonObject
.
put
(
"UserInfoSearchCond"
,
jsonSearchCond
);
String
strInbuff
=
jsonObject
.
toString
();
log
.
info
(
"UserInfo/Search 请求json报文==>{}"
,
strInbuff
);
//把string传递到Byte数组中,后续用.getPointer()方法传入指针地址中。
HCNetSDK
.
BYTE_ARRAY
ptrInbuff
=
new
HCNetSDK
.
BYTE_ARRAY
(
strInbuff
.
length
());
System
.
arraycopy
(
strInbuff
.
getBytes
(),
0
,
ptrInbuff
.
byValue
,
0
,
strInbuff
.
length
());
ptrInbuff
.
write
();
//定义接收结果的结构体
HCNetSDK
.
BYTE_ARRAY
ptrOutuff
=
new
HCNetSDK
.
BYTE_ARRAY
(
1
*
1024
);
IntByReference
pInt
=
new
IntByReference
(
0
);
while
(
true
)
{
int
dwState
=
hCNetSDK
.
NET_DVR_SendWithRecvRemoteConfig
(
lHandler
,
ptrInbuff
.
getPointer
(),
strInbuff
.
length
(),
ptrOutuff
.
getPointer
(),
1
*
1024
,
pInt
);
log
.
info
(
"dwState<=={}"
,
dwState
);
if
(
dwState
==
-
1
)
{
log
.
info
(
"NET_DVR_SendWithRecvRemoteConfig接口调用失败,错误码:{}"
,
hCNetSDK
.
NET_DVR_GetLastError
());
throw
new
AppException
(
String
.
format
(
"NET_DVR_SendWithRecvRemoteConfig接口调用失败,错误码:%s"
,
hCNetSDK
.
NET_DVR_GetLastError
()));
// break;
}
else
if
(
dwState
==
HCNetSDK
.
NET_SDK_CONFIG_STATUS_NEED_WAIT
)
{
log
.
info
(
"配置等待"
);
try
{
Thread
.
sleep
(
10
);
}
catch
(
InterruptedException
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
continue
;
}
else
if
(
dwState
==
HCNetSDK
.
NET_SDK_CONFIG_STATUS_FAILED
)
{
log
.
info
(
"查询人员失败"
);
throw
new
AppException
(
String
.
format
(
"查询人员失败,错误码:%s"
,
HCNetSDK
.
NET_SDK_CONFIG_STATUS_FAILED
));
// break;
}
else
if
(
dwState
==
HCNetSDK
.
NET_SDK_CONFIG_STATUS_EXCEPTION
)
{
log
.
info
(
"查询人员异常"
);
throw
new
AppException
(
String
.
format
(
"查询人员异常,错误码:%s"
,
HCNetSDK
.
NET_SDK_CONFIG_STATUS_EXCEPTION
));
// break;
}
else
if
(
dwState
==
HCNetSDK
.
NET_SDK_CONFIG_STATUS_SUCCESS
)
{
ptrOutuff
.
read
();
resp
=
new
String
(
ptrOutuff
.
byValue
).
trim
();
log
.
info
(
"查询人员成功, json==>{}"
,
resp
);
break
;
}
else
if
(
dwState
==
HCNetSDK
.
NET_SDK_CONFIG_STATUS_FINISH
)
{
log
.
info
(
"获取人员完成"
);
break
;
}
}
if
(!
hCNetSDK
.
NET_DVR_StopRemoteConfig
(
lHandler
))
{
log
.
info
(
"NET_DVR_StopRemoteConfig接口调用失败,错误码==>{}"
,
hCNetSDK
.
NET_DVR_GetLastError
());
throw
new
AppException
(
String
.
format
(
"NET_DVR_StopRemoteConfig接口调用失败,错误码==>{}"
,
hCNetSDK
.
NET_DVR_GetLastError
()));
}
else
{
log
.
info
(
"NET_DVR_StopRemoteConfig接口成功"
);
}
}
UserSearchInfo
userSearchInfo
=
JSON
.
parseObject
(
resp
,
new
TypeReference
<
UserSearchInfo
>()
{
});
return
Rest
.
ok
(
userSearchInfo
);
}
catch
(
Exception
e
)
{
log
.
error
(
"获取人员异常"
,
e
);
return
Rest
.
fail
(
e
.
getMessage
());
}
}
@Override
public
Rest
<
UserSearchInfo
>
getPersonCount
(
StaffReq
personReq
,
DoorEntity
doorEntity
)
{
HCNetSDK
hCNetSDK
=
createSDKInstance
();
initLoadSdk
(
hCNetSDK
);
int
userID
=
login
(
hCNetSDK
,
doorEntity
);
HCNetSDK
.
BYTE_ARRAY
ptrByteArray
=
new
HCNetSDK
.
BYTE_ARRAY
(
1024
);
//数组
String
strInBuffer
=
"POST /ISAPI/AccessControl/UserInfo/Search?format=json"
;
System
.
arraycopy
(
strInBuffer
.
getBytes
(),
0
,
ptrByteArray
.
byValue
,
0
,
strInBuffer
.
length
());
//字符串拷贝到数组中
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/service/impl/StaffServiceImpl.java
View file @
d411ac8e
This diff is collapsed.
Click to expand it.
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