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
Show 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 {
...
@@ -23,6 +23,14 @@ public interface IHikStaffService {
Rest
<
UserSearchInfo
>
getPersonList
(
StaffReq
personReq
,
DoorEntity
doorEntity
);
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
...
@@ -36,6 +36,90 @@ public class HikStaffServiceImpl extends AbstractHikService implements IHikStaff
initLoadSdk
(
hCNetSDK
);
initLoadSdk
(
hCNetSDK
);
int
userID
=
login
(
hCNetSDK
,
doorEntity
);
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
);
//数组
HCNetSDK
.
BYTE_ARRAY
ptrByteArray
=
new
HCNetSDK
.
BYTE_ARRAY
(
1024
);
//数组
String
strInBuffer
=
"POST /ISAPI/AccessControl/UserInfo/Search?format=json"
;
String
strInBuffer
=
"POST /ISAPI/AccessControl/UserInfo/Search?format=json"
;
System
.
arraycopy
(
strInBuffer
.
getBytes
(),
0
,
ptrByteArray
.
byValue
,
0
,
strInBuffer
.
length
());
//字符串拷贝到数组中
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
...
@@ -148,8 +148,17 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta
...
@@ -148,8 +148,17 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta
List
<
DoorEntity
>
doorEntities
=
doorService
.
find
(
new
DoorQuery
());
List
<
DoorEntity
>
doorEntities
=
doorService
.
find
(
new
DoorQuery
());
for
(
DoorEntity
doorEntity
:
doorEntities
)
{
for
(
DoorEntity
doorEntity
:
doorEntities
)
{
StaffReq
staffReq
=
new
StaffReq
();
StaffReq
staffReq
=
new
StaffReq
();
Rest
<
UserSearchInfo
>
rest
=
hikStaffService
.
getPersonList
(
staffReq
,
doorEntity
);
Rest
<
UserSearchInfo
>
personCountRest
=
hikStaffService
.
getPersonCount
(
staffReq
,
doorEntity
);
if
(
rest
.
getCode
()==
YesNoEnum
.
YES
.
getValue
()){
if
(
personCountRest
.
getCode
()
==
YesNoEnum
.
YES
.
getValue
())
{
int
totalNum
=
personCountRest
.
getData
().
getUserInfoSearch
().
getTotalMatches
();
int
size
=
30
;
int
pages
=
totalNum
/
size
;
for
(
int
i
=
0
;
i
<=
pages
;
i
++)
{
StaffReq
searchReq
=
new
StaffReq
();
searchReq
.
setPageNo
(
i
);
searchReq
.
setPageSize
(
size
);
Rest
<
UserSearchInfo
>
rest
=
hikStaffService
.
getPersonList
(
searchReq
,
doorEntity
);
if
(
rest
.
getCode
()
==
YesNoEnum
.
YES
.
getValue
())
{
//做差集 更新本地用户为离职员工
//做差集 更新本地用户为离职员工
StaffQuery
staffQuery
=
new
StaffQuery
();
StaffQuery
staffQuery
=
new
StaffQuery
();
...
@@ -181,7 +190,7 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta
...
@@ -181,7 +190,7 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta
}
}
staffEntity
.
setName
(
userInfoItem
.
getName
());
staffEntity
.
setName
(
userInfoItem
.
getName
());
staffEntity
.
setDeptName
(
userInfoItem
.
getBelongGroup
());
staffEntity
.
setDeptName
(
userInfoItem
.
getBelongGroup
());
staffEntity
.
setGender
(
"male"
.
equals
(
userInfoItem
.
getGender
())?
1
:
2
);
staffEntity
.
setGender
(
"male"
.
equals
(
userInfoItem
.
getGender
())
?
1
:
2
);
staffEntity
.
setWorkNum
(
userInfoItem
.
getEmployeeNo
());
staffEntity
.
setWorkNum
(
userInfoItem
.
getEmployeeNo
());
staffEntity
.
setCreateUserId
(
1L
);
staffEntity
.
setCreateUserId
(
1L
);
staffEntity
.
setCreateTime
(
new
Date
());
staffEntity
.
setCreateTime
(
new
Date
());
...
@@ -194,7 +203,7 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta
...
@@ -194,7 +203,7 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta
}
}
staffEntity
.
setName
(
userInfoItem
.
getName
());
staffEntity
.
setName
(
userInfoItem
.
getName
());
staffEntity
.
setDeptName
(
userInfoItem
.
getBelongGroup
());
staffEntity
.
setDeptName
(
userInfoItem
.
getBelongGroup
());
staffEntity
.
setGender
(
"male"
.
equals
(
userInfoItem
.
getGender
())?
1
:
2
);
staffEntity
.
setGender
(
"male"
.
equals
(
userInfoItem
.
getGender
())
?
1
:
2
);
staffEntity
.
setWorkNum
(
userInfoItem
.
getEmployeeNo
());
staffEntity
.
setWorkNum
(
userInfoItem
.
getEmployeeNo
());
staffEntity
.
setUpdateUserId
(
1L
);
staffEntity
.
setUpdateUserId
(
1L
);
staffEntity
.
setUpdateTime
(
new
Date
());
staffEntity
.
setUpdateTime
(
new
Date
());
...
@@ -249,15 +258,17 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta
...
@@ -249,15 +258,17 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta
// if (!ObjectUtils.isEmpty(attendanceGroupStaffEntities)) {
// if (!ObjectUtils.isEmpty(attendanceGroupStaffEntities)) {
// attendanceGroupStaffService.removeList(attendanceGroupStaffEntities,context);
// attendanceGroupStaffService.removeList(attendanceGroupStaffEntities,context);
// }
// }
Long
[]
groudStaffIds
=
attendanceGroupStaffService
.
find
(
new
AttendanceGroupStaffQuery
().
staffId
(
staff
.
getId
())).
stream
().
map
(
i
->
i
.
getId
()).
toArray
(
Long
[]::
new
);
Long
[]
groudStaffIds
=
attendanceGroupStaffService
.
find
(
new
AttendanceGroupStaffQuery
().
staffId
(
staff
.
getId
())).
stream
().
map
(
m
->
m
.
getId
()).
toArray
(
Long
[]::
new
);
if
(!
ObjectUtils
.
isEmpty
(
groudStaffIds
))
{
if
(!
ObjectUtils
.
isEmpty
(
groudStaffIds
))
{
attendanceGroupStaffService
.
remove
(
groudStaffIds
,
null
);
attendanceGroupStaffService
.
remove
(
groudStaffIds
,
null
);
}
}
}
}
});
});
}
}
}
}
else
{
}
}
else
{
}
}
...
...
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