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
55225d82
Commit
55225d82
authored
Nov 25, 2023
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加海康人员查询接口
parent
a655e1e9
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
157 additions
and
109 deletions
+157
-109
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/staff/model/req/person/PersonReq.java
...tals/xhx/module/hik/staff/model/req/person/PersonReq.java
+2
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/staff/model/rsp/staff/UserInfoSerch.java
...s/xhx/module/hik/staff/model/rsp/staff/UserInfoSerch.java
+4
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/staff/model/rsp/staff/search/PersonInfoExtendsItem.java
...k/staff/model/rsp/staff/search/PersonInfoExtendsItem.java
+8
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/staff/model/rsp/staff/search/RightPlanItem.java
...odule/hik/staff/model/rsp/staff/search/RightPlanItem.java
+9
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/staff/model/rsp/staff/search/UserInfoItem.java
...module/hik/staff/model/rsp/staff/search/UserInfoItem.java
+26
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/staff/model/rsp/staff/search/UserInfoSearch.java
...dule/hik/staff/model/rsp/staff/search/UserInfoSearch.java
+13
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/staff/model/rsp/staff/search/UserSearchInfo.java
...dule/hik/staff/model/rsp/staff/search/UserSearchInfo.java
+8
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/staff/model/rsp/staff/search/Valid.java
...ls/xhx/module/hik/staff/model/rsp/staff/search/Valid.java
+15
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/staff/service/IHikStaffService.java
...ortals/xhx/module/hik/staff/service/IHikStaffService.java
+2
-1
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/staff/service/impl/HikStaffServiceImpl.java
...hx/module/hik/staff/service/impl/HikStaffServiceImpl.java
+70
-108
No files found.
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/staff/model/req/person/PersonReq.java
View file @
55225d82
...
...
@@ -19,4 +19,6 @@ public class PersonReq extends BaseReq implements Serializable {
*/
private
Integer
pageSize
;
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/staff/model/rsp/staff/UserInfoSerch.java
0 → 100644
View file @
55225d82
package
com.mortals.xhx.module.hik.staff.model.rsp.staff
;
public
class
UserInfoSerch
{
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/staff/model/rsp/staff/search/PersonInfoExtendsItem.java
0 → 100644
View file @
55225d82
package
com.mortals.xhx.module.hik.staff.model.rsp.staff.search
;
import
lombok.Data
;
@Data
public
class
PersonInfoExtendsItem
{
private
String
value
;
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/staff/model/rsp/staff/search/RightPlanItem.java
0 → 100644
View file @
55225d82
package
com.mortals.xhx.module.hik.staff.model.rsp.staff.search
;
import
lombok.Data
;
@Data
public
class
RightPlanItem
{
private
String
planTemplateNo
;
private
int
doorNo
;
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/staff/model/rsp/staff/search/UserInfoItem.java
0 → 100644
View file @
55225d82
package
com.mortals.xhx.module.hik.staff.model.rsp.staff.search
;
import
java.util.List
;
import
lombok.Data
;
@Data
public
class
UserInfoItem
{
private
String
doorRight
;
private
int
roomNumber
;
private
String
gender
;
private
int
numOfCard
;
private
String
employeeNo
;
private
List
<
RightPlanItem
>
rightPlan
;
private
boolean
closeDelayEnabled
;
private
String
password
;
private
Valid
valid
;
private
String
belongGroup
;
private
int
maxOpenDoorTime
;
private
int
openDoorTime
;
private
String
name
;
private
int
floorNumber
;
private
List
<
PersonInfoExtendsItem
>
personInfoExtends
;
private
boolean
localUIRight
;
private
String
userType
;
private
int
numOfFace
;
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/staff/model/rsp/staff/search/UserInfoSearch.java
0 → 100644
View file @
55225d82
package
com.mortals.xhx.module.hik.staff.model.rsp.staff.search
;
import
java.util.List
;
import
lombok.Data
;
@Data
public
class
UserInfoSearch
{
private
String
responseStatusStrg
;
private
String
searchID
;
private
List
<
UserInfoItem
>
userInfo
;
private
int
numOfMatches
;
private
int
totalMatches
;
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/staff/model/rsp/staff/search/UserSearchInfo.java
0 → 100644
View file @
55225d82
package
com.mortals.xhx.module.hik.staff.model.rsp.staff.search
;
import
lombok.Data
;
@Data
public
class
UserSearchInfo
{
private
UserInfoSearch
userInfoSearch
;
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/staff/model/rsp/staff/search/Valid.java
0 → 100644
View file @
55225d82
package
com.mortals.xhx.module.hik.staff.model.rsp.staff.search
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
lombok.Data
;
import
java.util.Date
;
@Data
public
class
Valid
{
private
Boolean
enable
;
@JSONField
(
format
=
"yyyy-MM-dd'T'HH:mm:ss"
)
private
Date
beginTime
;
@JSONField
(
format
=
"yyyy-MM-dd'T'HH:mm:ss"
)
private
Date
endTime
;
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/staff/service/IHikStaffService.java
View file @
55225d82
...
...
@@ -5,6 +5,7 @@ import com.mortals.framework.common.Rest;
import
com.mortals.xhx.module.door.model.DoorEntity
;
import
com.mortals.xhx.module.hik.staff.model.req.person.PersonReq
;
import
com.mortals.xhx.module.hik.staff.model.rsp.person.PersonDataInfo
;
import
com.mortals.xhx.module.hik.staff.model.rsp.staff.search.UserSearchInfo
;
/**
* 海康人员接口对接类
...
...
@@ -20,7 +21,7 @@ public interface IHikStaffService {
* @param personReq
* @return
*/
Rest
<
PersonData
Info
>
getPersonList
(
PersonReq
personReq
,
DoorEntity
doorEntity
);
Rest
<
UserSearch
Info
>
getPersonList
(
PersonReq
personReq
,
DoorEntity
doorEntity
);
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/staff/service/impl/HikStaffServiceImpl.java
View file @
55225d82
package
com.mortals.xhx.module.hik.staff.service.impl
;
import
cn.hutool.core.date.DateUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.TypeReference
;
import
com.hikvision.artemis.sdk.ArtemisHttpUtil
;
import
com.hikvision.artemis.sdk.config.ArtemisConfig
;
import
com.mortals.framework.common.Rest
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.xhx.hikdoor.Acs.AcsMain
;
import
com.mortals.xhx.hikdoor.NetSDKDemo.HCNetSDK
;
import
com.mortals.xhx.module.door.model.DoorEntity
;
...
...
@@ -12,12 +14,14 @@ import com.mortals.xhx.module.hik.AbstractHikService;
import
com.mortals.xhx.module.hik.HikApiRest
;
import
com.mortals.xhx.module.hik.staff.model.req.person.PersonReq
;
import
com.mortals.xhx.module.hik.staff.model.rsp.person.PersonDataInfo
;
import
com.mortals.xhx.module.hik.staff.model.rsp.staff.search.UserSearchInfo
;
import
com.mortals.xhx.module.hik.staff.service.IHikStaffService
;
import
com.sun.jna.ptr.IntByReference
;
import
lombok.extern.slf4j.Slf4j
;
import
org.json.JSONObject
;
import
org.springframework.stereotype.Service
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.Map
;
...
...
@@ -33,124 +37,85 @@ public class HikStaffServiceImpl extends AbstractHikService implements IHikStaff
//查询所有人员
@Override
public
Rest
<
PersonDataInfo
>
getPersonList
(
PersonReq
personReq
,
DoorEntity
doorEntity
)
{
public
Rest
<
UserSearchInfo
>
getPersonList
(
PersonReq
personReq
,
DoorEntity
doorEntity
)
{
//todo 新的链接设备
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
());
//字符串拷贝到数组中
ptrByteArray
.
write
();
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
());
}
else
{
//组装查询的JSON报文,这边查询的是所有的人员
JSONObject
jsonObject
=
new
JSONObject
();
JSONObject
jsonSearchCond
=
new
JSONObject
();
//如果需要查询指定的工号人员信息,把下面注释的内容去除掉即可
/* JSONArray EmployeeNoList = new JSONArray();
JSONObject employeeNo1 = new JSONObject();
employeeNo1.put("employeeNo", "12346");
JSONObject employeeNo2 = new JSONObject();
employeeNo2.put("employeeNo", "1000");
EmployeeNoList.put(employeeNo1);
EmployeeNoList.put(employeeNo2);
jsonSearchCond.put("EmployeeNoList", EmployeeNoList);*/
jsonSearchCond
.
put
(
"searchID"
,
"20211126"
);
jsonSearchCond
.
put
(
"searchResultPosition"
,
0
);
jsonSearchCond
.
put
(
"maxResults"
,
150
);
jsonObject
.
put
(
"UserInfoSearchCond"
,
jsonSearchCond
);
String
strInbuff
=
jsonObject
.
toString
();
log
.
info
(
"查询的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
(
1024
*
1024
);
IntByReference
pInt
=
new
IntByReference
(
0
);
while
(
true
){
int
dwState
=
hCNetSDK
.
NET_DVR_SendWithRecvRemoteConfig
(
lHandler
,
ptrInbuff
.
getPointer
(),
strInbuff
.
length
(),
ptrOutuff
.
getPointer
(),
1024
*
1024
,
pInt
);
System
.
out
.
println
(
dwState
);
if
(
dwState
==
-
1
){
System
.
out
.
println
(
"NET_DVR_SendWithRecvRemoteConfig接口调用失败,错误码:"
+
hCNetSDK
.
NET_DVR_GetLastError
());
break
;
}
else
if
(
dwState
==
HCNetSDK
.
NET_SDK_CONFIG_STATUS_NEED_WAIT
)
{
System
.
out
.
println
(
"配置等待"
);
try
{
Thread
.
sleep
(
10
);
}
catch
(
InterruptedException
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
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
{
//组装查询的JSON报文,这边查询的是所有的人员
JSONObject
jsonObject
=
new
JSONObject
();
JSONObject
jsonSearchCond
=
new
JSONObject
();
jsonSearchCond
.
put
(
"searchID"
,
DateUtil
.
format
(
new
Date
(),
"yyyyMMdd"
));
jsonSearchCond
.
put
(
"searchResultPosition"
,
0
);
jsonSearchCond
.
put
(
"maxResults"
,
150
);
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
(
1024
*
1024
);
IntByReference
pInt
=
new
IntByReference
(
0
);
while
(
true
)
{
int
dwState
=
hCNetSDK
.
NET_DVR_SendWithRecvRemoteConfig
(
lHandler
,
ptrInbuff
.
getPointer
(),
strInbuff
.
length
(),
ptrOutuff
.
getPointer
(),
1024
*
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
;
}
continue
;
}
else
if
(
dwState
==
HCNetSDK
.
NET_SDK_CONFIG_STATUS_FAILED
)
{
System
.
out
.
println
(
"查询人员失败"
);
break
;
}
else
if
(
dwState
==
HCNetSDK
.
NET_SDK_CONFIG_STATUS_EXCEPTION
)
{
System
.
out
.
println
(
"查询人员异常"
);
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接口成功"
);
}
else
if
(
dwState
==
HCNetSDK
.
NET_SDK_CONFIG_STATUS_SUCCESS
)
{
ptrOutuff
.
read
();
System
.
out
.
println
(
"查询人员成功, json:"
+
new
String
(
ptrOutuff
.
byValue
).
trim
());
break
;
}
else
if
(
dwState
==
HCNetSDK
.
NET_SDK_CONFIG_STATUS_FINISH
)
{
System
.
out
.
println
(
"获取人员完成"
);
break
;
}
}
if
(!
hCNetSDK
.
NET_DVR_StopRemoteConfig
(
lHandler
)){
System
.
out
.
println
(
"NET_DVR_StopRemoteConfig接口调用失败,错误码:"
+
hCNetSDK
.
NET_DVR_GetLastError
());
}
else
{
System
.
out
.
println
(
"NET_DVR_StopRemoteConfig接口成功"
);
lHandler
=
-
1
;
}
}
ArtemisConfig
config
=
getArtemisConfig
();
String
getCamsApi
=
ARTEMIS_PATH
+
"/api/resource/v1/person/personList"
;
Map
<
String
,
String
>
path
=
new
HashMap
<>(
2
);
path
.
put
(
protocol
,
getCamsApi
);
try
{
String
respJson
=
ArtemisHttpUtil
.
doPostStringArtemis
(
config
,
path
,
JSON
.
toJSONString
(
personReq
),
null
,
null
,
"application/json"
);
log
.
info
(
"person resp=>{}"
,
respJson
);
HikApiRest
<
PersonDataInfo
>
rest
=
JSON
.
parseObject
(
respJson
,
new
TypeReference
<
HikApiRest
<
PersonDataInfo
>>()
{
UserSearchInfo
userSearchInfo
=
JSON
.
parseObject
(
resp
,
new
TypeReference
<
UserSearchInfo
>()
{
});
if
(
"0"
.
equals
(
rest
.
getCode
()))
{
return
Rest
.
ok
(
rest
.
getData
());
}
else
{
log
.
info
(
"person error resp=>{}"
,
respJson
);
return
Rest
.
fail
(
rest
.
getMsg
());
}
return
Rest
.
ok
(
userSearchInfo
);
}
catch
(
Exception
e
)
{
log
.
error
(
"获取人员异常"
,
e
);
return
Rest
.
fail
(
e
.
getMessage
());
...
...
@@ -160,10 +125,7 @@ public class HikStaffServiceImpl extends AbstractHikService implements IHikStaff
@Override
public
Rest
<
PersonDataInfo
>
getAllPersonList
(
DoorEntity
doorEntity
)
{
return
null
;
return
Rest
.
ok
();
}
}
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