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
15d2a115
Commit
15d2a115
authored
Mar 18, 2024
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加适配直连考勤机定时任务代码
parent
c993d21a
Changes
12
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
1387 additions
and
997 deletions
+1387
-997
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncRegisterUserPicTaskImpl.java
.../mortals/xhx/daemon/task/SyncRegisterUserPicTaskImpl.java
+18
-5
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncUserTaskImpl.java
...in/java/com/mortals/xhx/daemon/task/SyncUserTaskImpl.java
+51
-36
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dept/service/DeptService.java
...java/com/mortals/xhx/module/dept/service/DeptService.java
+8
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dept/service/impl/DeptServiceImpl.java
...mortals/xhx/module/dept/service/impl/DeptServiceImpl.java
+8
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/door/model/DoorEntity.java
...in/java/com/mortals/xhx/module/door/model/DoorEntity.java
+48
-25
attendance-performance-manager/src/main/java/com/mortals/xhx/module/door/model/DoorQuery.java
...ain/java/com/mortals/xhx/module/door/model/DoorQuery.java
+576
-408
attendance-performance-manager/src/main/java/com/mortals/xhx/module/door/service/impl/DoorServiceImpl.java
...mortals/xhx/module/door/service/impl/DoorServiceImpl.java
+0
-5
attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/service/StaffService.java
...va/com/mortals/xhx/module/staff/service/StaffService.java
+6
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/service/impl/StaffServiceImpl.java
...rtals/xhx/module/staff/service/impl/StaffServiceImpl.java
+75
-45
attendance-performance-manager/src/main/resources/sqlmap/module/door/DoorMapper.xml
...ager/src/main/resources/sqlmap/module/door/DoorMapper.xml
+569
-449
db/add.sql
db/add.sql
+28
-24
doc/考勤绩效管理系统.docx
doc/考勤绩效管理系统.docx
+0
-0
No files found.
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncRegisterUserPicTaskImpl.java
View file @
15d2a115
package
com.mortals.xhx.daemon.task
;
import
cn.hutool.http.HttpUtil
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.service.ITask
;
import
com.mortals.framework.service.ITaskExcuteService
;
import
com.mortals.framework.utils.ServletUtils
;
import
com.mortals.xhx.base.system.upload.service.UploadService
;
import
com.mortals.xhx.module.door.model.DoorEntity
;
import
com.mortals.xhx.module.door.model.DoorQuery
;
import
com.mortals.xhx.module.door.service.DoorService
;
import
com.mortals.xhx.module.hik.face.model.req.img.ImgReq
;
import
com.mortals.xhx.module.hik.face.service.IHikFaceService
;
import
com.mortals.xhx.module.staff.model.StaffEntity
;
import
com.mortals.xhx.module.staff.model.StaffQuery
;
import
com.mortals.xhx.module.staff.service.StaffService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.checkerframework.checker.units.qual.A
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.ByteArrayInputStream
;
import
java.io.InputStream
;
import
java.util.List
;
import
java.util.stream.Collectors
;
...
...
@@ -38,11 +38,25 @@ public class SyncRegisterUserPicTaskImpl implements ITaskExcuteService {
@Autowired
private
StaffService
staffService
;
@Value
(
"${hik.host:}"
)
protected
String
hikhost
;
@Autowired
private
DoorService
doorService
;
@Override
public
void
excuteTask
(
ITask
task
)
throws
AppException
{
log
.
info
(
"同步员工照片任务"
);
syncRegisterUsersPhotos
();
if
(!
ObjectUtils
.
isEmpty
(
hikhost
))
{
staffService
.
syncRegisterUsersPhotos
();
}
else
{
List
<
DoorEntity
>
doorEntities
=
doorService
.
find
(
new
DoorQuery
());
for
(
DoorEntity
doorEntity
:
doorEntities
)
{
//todo 直连设备
}
}
// syncRegisterUsersPhotos();
log
.
info
(
"同步员工任务照片完成"
);
}
...
...
@@ -53,7 +67,6 @@ public class SyncRegisterUserPicTaskImpl implements ITaskExcuteService {
.
filter
(
item
->
ObjectUtils
.
isEmpty
(
item
.
getPhotoPath
()))
.
filter
(
item
->
!
ObjectUtils
.
isEmpty
(
item
.
getPicUri
())).
collect
(
Collectors
.
toList
());
for
(
StaffEntity
staff
:
staffList
)
{
ImgReq
imgReq
=
new
ImgReq
();
imgReq
.
setServerIndexCode
(
staff
.
getServerIndexCode
());
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncUserTaskImpl.java
View file @
15d2a115
...
...
@@ -23,6 +23,7 @@ import com.mortals.xhx.module.staff.service.StaffLeaveService;
import
com.mortals.xhx.module.staff.service.StaffService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.ObjectUtils
;
...
...
@@ -47,53 +48,67 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
private
IHikPersonService
hikPersonService
;
@Autowired
private
IDingPersonService
dingPersonService
;
@Value
(
"${hik.host:}"
)
protected
String
hikhost
;
@Override
public
void
excuteTask
(
ITask
task
)
throws
AppException
{
try
{
log
.
info
(
"同步部门"
);
deptService
.
syncDept
(
null
);
log
.
info
(
"同步用户"
);
staffService
.
syncPersons
(
null
);
log
.
info
(
"同步钉钉usreId"
);
try
{
List
<
UserEntity
>
userList
=
userService
.
getCacheList
().
stream
()
.
filter
(
f
->
!
ObjectUtils
.
isEmpty
(
f
.
getCustomerId
()))
.
filter
(
f
->
ObjectUtils
.
isEmpty
(
f
.
getDingUserId
())).
collect
(
Collectors
.
toList
());
List
<
UserEntity
>
updateUserList
=
userList
.
stream
().
map
(
item
->
{
UserEntity
userEntity
=
new
UserEntity
();
userEntity
.
setId
(
item
.
getId
());
String
mobile
=
""
;
StaffEntity
staffCache
=
staffService
.
getCache
(
item
.
getCustomerId
().
toString
());
if
(!
ObjectUtils
.
isEmpty
(
staffCache
)
&&
!
ObjectUtils
.
isEmpty
(
staffCache
.
getPhoneNumber
()))
{
mobile
=
staffCache
.
getPhoneNumber
();
if
(
ObjectUtils
.
isEmpty
(
item
.
getMobile
()))
{
userEntity
.
setMobile
(
mobile
);
if
(!
ObjectUtils
.
isEmpty
(
hikhost
))
{
log
.
info
(
"同步部门"
);
deptService
.
syncDept
(
null
);
log
.
info
(
"同步用户"
);
staffService
.
syncPersons
(
null
);
log
.
info
(
"同步钉钉usreId"
);
try
{
List
<
UserEntity
>
userList
=
userService
.
getCacheList
().
stream
()
.
filter
(
f
->
!
ObjectUtils
.
isEmpty
(
f
.
getCustomerId
()))
.
filter
(
f
->
ObjectUtils
.
isEmpty
(
f
.
getDingUserId
())).
collect
(
Collectors
.
toList
());
List
<
UserEntity
>
updateUserList
=
userList
.
stream
().
map
(
item
->
{
UserEntity
userEntity
=
new
UserEntity
();
userEntity
.
setId
(
item
.
getId
());
String
mobile
=
""
;
StaffEntity
staffCache
=
staffService
.
getCache
(
item
.
getCustomerId
().
toString
());
if
(!
ObjectUtils
.
isEmpty
(
staffCache
)
&&
!
ObjectUtils
.
isEmpty
(
staffCache
.
getPhoneNumber
()))
{
mobile
=
staffCache
.
getPhoneNumber
();
if
(
ObjectUtils
.
isEmpty
(
item
.
getMobile
()))
{
userEntity
.
setMobile
(
mobile
);
}
}
}
if
(!
ObjectUtils
.
isEmpty
(
mobile
))
{
Rest
<
String
>
personByMobile
=
dingPersonService
.
getPersonByMobile
(
mobile
);
if
(!
ObjectUtils
.
isEmpty
(
personByMobile
)
&&
YesNoEnum
.
YES
.
getValue
()
==
personByMobile
.
getCode
()
&&
!
ObjectUtils
.
isEmpty
(
personByMobile
.
getData
()))
{
userEntity
.
setDingUserId
(
personByMobile
.
getData
());
if
(!
ObjectUtils
.
isEmpty
(
mobile
))
{
Rest
<
String
>
personByMobile
=
dingPersonService
.
getPersonByMobile
(
mobile
);
if
(!
ObjectUtils
.
isEmpty
(
personByMobile
)
&&
YesNoEnum
.
YES
.
getValue
()
==
personByMobile
.
getCode
()
&&
!
ObjectUtils
.
isEmpty
(
personByMobile
.
getData
()))
{
userEntity
.
setDingUserId
(
personByMobile
.
getData
());
}
}
}
userEntity
.
setUpdateTime
(
new
Date
());
userEntity
.
setUpdateUserId
(
1L
);
return
userEntity
;
}).
filter
(
f
->
!
ObjectUtils
.
isEmpty
(
f
.
getDingUserId
())).
collect
(
Collectors
.
toList
());
userEntity
.
setUpdateTime
(
new
Date
());
userEntity
.
setUpdateUserId
(
1L
);
return
userEntity
;
}).
filter
(
f
->
!
ObjectUtils
.
isEmpty
(
f
.
getDingUserId
())).
collect
(
Collectors
.
toList
());
if
(!
ObjectUtils
.
isEmpty
(
updateUserList
))
{
log
.
info
(
"更新用户钉钉id信息数量:{}"
,
updateUserList
.
size
());
userService
.
getUserDao
().
updateBatch
(
updateUserList
);
if
(!
ObjectUtils
.
isEmpty
(
updateUserList
))
{
log
.
info
(
"更新用户钉钉id信息数量:{}"
,
updateUserList
.
size
());
userService
.
getUserDao
().
updateBatch
(
updateUserList
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"同步钉钉usreId失败"
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"同步钉钉usreId失败"
);
}
else
{
//todo 设备直连
deptService
.
syncDeptByDevice
(
null
);
staffService
.
syncPersonsByDevices
(
null
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"同步人事异常"
,
e
);
}
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dept/service/DeptService.java
View file @
15d2a115
...
...
@@ -91,4 +91,12 @@ public interface DeptService extends ICRUDService<DeptEntity, Long> {
*/
Rest
<
String
>
syncDept
(
Context
context
);
/**
* 通过设备同步部门信息
* @param context
* @return
*/
Rest
<
String
>
syncDeptByDevice
(
Context
context
);
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dept/service/impl/DeptServiceImpl.java
View file @
15d2a115
...
...
@@ -341,4 +341,12 @@ public class DeptServiceImpl extends AbstractCRUDServiceImpl<DeptDao, DeptEntity
return
Rest
.
ok
();
}
@Override
public
Rest
<
String
>
syncDeptByDevice
(
Context
context
)
{
//todo
return
Rest
.
ok
();
}
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/door/model/DoorEntity.java
View file @
15d2a115
package
com.mortals.xhx.module.door.model
;
import
java.util.List
;
import
java.util.ArrayList
;
import
java.math.BigDecimal
;
import
cn.hutool.core.date.DateUtil
;
import
java.util.Date
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.mortals.framework.annotation.Excel
;
import
com.mortals.framework.model.BaseEntityLong
;
import
com.mortals.xhx.module.door.model.vo.DoorVo
;
import
lombok.Data
;
/**
* 门禁设备实体对象
*
* @author zxfei
* @date 2023-11-22
*/
* 门禁设备实体对象
*
* @author zxfei
* @date 2024-03-18
*/
@Data
public
class
DoorEntity
extends
DoorVo
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 设备名称
*/
* 设备名称
*/
private
String
deviceName
;
/**
* 设备编码
*/
* 设备编码
*/
private
String
deviceCode
;
/**
* Ip地址
*/
* Ip地址
*/
private
String
ip
;
/**
* 端口
*/
* 端口
*/
private
Integer
port
;
/**
* 用户名
*/
* 用户名
*/
private
String
username
;
/**
* 密码
*/
* 密码
*/
private
String
password
;
/**
* 所属部门id
*/
private
String
deptId
;
/**
* 所属部门名称
*/
private
String
deptName
;
/**
* 备注
*/
private
String
remark
;
@Override
public
int
hashCode
()
{
return
this
.
getId
().
hashCode
();
return
this
.
getId
().
hashCode
();
}
@Override
public
boolean
equals
(
Object
obj
)
{
...
...
@@ -45,18 +65,21 @@ public class DoorEntity extends DoorVo {
if
(
obj
instanceof
DoorEntity
)
{
DoorEntity
tmp
=
(
DoorEntity
)
obj
;
if
(
this
.
getId
()
==
tmp
.
getId
())
{
return
true
;
return
true
;
}
}
return
false
;
}
public
void
initAttrValue
(){
this
.
deviceName
=
""
;
this
.
deviceCode
=
""
;
this
.
ip
=
""
;
this
.
port
=
0
;
this
.
username
=
""
;
this
.
password
=
""
;
this
.
deviceName
=
""
;
this
.
deviceCode
=
""
;
this
.
ip
=
""
;
this
.
port
=
0
;
this
.
username
=
""
;
this
.
password
=
""
;
this
.
deptId
=
""
;
this
.
deptName
=
""
;
this
.
remark
=
""
;
}
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/door/model/DoorQuery.java
View file @
15d2a115
This diff is collapsed.
Click to expand it.
attendance-performance-manager/src/main/java/com/mortals/xhx/module/door/service/impl/DoorServiceImpl.java
View file @
15d2a115
...
...
@@ -51,11 +51,6 @@ public class DoorServiceImpl extends AbstractCRUDServiceImpl<DoorDao, DoorEntity
@Autowired
private
IHikDoorService
hikDoorService
;
private
Integer
day
;
@Autowired
private
ICacheService
cacheService
;
@Override
public
Rest
<
Void
>
syncDoorDeviceEvents
(
DoorEntity
doorEntity
,
HikDoorEventReq
hikDoorEventReq
)
{
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/service/StaffService.java
View file @
15d2a115
...
...
@@ -53,4 +53,10 @@ public interface StaffService extends ICRUDCacheService<StaffEntity,Long> {
*/
void
doUpdateSala
();
/**
* 通过海康云同步用户 照片
* @return
*/
Rest
<
Void
>
syncRegisterUsersPhotos
();
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/service/impl/StaffServiceImpl.java
View file @
15d2a115
This diff is collapsed.
Click to expand it.
attendance-performance-manager/src/main/resources/sqlmap/module/door/DoorMapper.xml
View file @
15d2a115
This diff is collapsed.
Click to expand it.
db/add.sql
View file @
15d2a115
...
...
@@ -1175,29 +1175,6 @@ ADD COLUMN `salaId` bigint(20) COMMENT '所属大厅' AFTER `deptName`,
ADD
COLUMN
`salaName`
varchar
(
128
)
COMMENT
'所属大厅名称'
AFTER
`salaId`
;
-- ----------------------------
2024
-
02
-
29
-- ----------------------------
-- ----------------------------
-- 门禁设备表
-- ----------------------------
DROP
TABLE
IF
EXISTS
`mortals_xhx_door`
;
CREATE
TABLE
mortals_xhx_door
(
`id`
bigint
(
20
)
AUTO_INCREMENT
COMMENT
'序号,主键,自增长'
,
`deviceName`
varchar
(
64
)
COMMENT
'设备名称'
,
`deviceCode`
varchar
(
64
)
COMMENT
'设备编码'
,
`ip`
varchar
(
64
)
COMMENT
'Ip地址'
,
`port`
int
(
9
)
COMMENT
'端口'
,
`username`
varchar
(
64
)
COMMENT
'用户名'
,
`password`
varchar
(
64
)
COMMENT
'密码'
,
`createTime`
datetime
COMMENT
'创建时间'
,
`createUserId`
bigint
(
20
)
COMMENT
'创建用户'
,
`updateUserId`
bigint
(
20
)
COMMENT
'更新用户'
,
`updateTime`
datetime
COMMENT
'修改时间'
,
PRIMARY
KEY
(
`id`
)
,
KEY
`deviceCode`
(
`deviceCode`
)
USING
BTREE
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
COMMENT
=
'门禁设备'
;
-- ------------------
-- 2024-03-12
-- 绩效表增加人员大厅字段
...
...
@@ -1270,4 +1247,31 @@ ALTER TABLE `mortals_xhx_staff_perform_stat`
ALTER
TABLE
`mortals_xhx_staff_perform_summary`
ADD
COLUMN
`salaId`
bigint
(
20
)
DEFAULT
NULL
COMMENT
'所属大厅'
AFTER
`deptName`
,
ADD
COLUMN
`salaName`
varchar
(
128
)
DEFAULT
NULL
COMMENT
'所属大厅名称'
AFTER
`salaId`
;
\ No newline at end of file
ADD
COLUMN
`salaName`
varchar
(
128
)
DEFAULT
NULL
COMMENT
'所属大厅名称'
AFTER
`salaId`
;
-- ----------------------------
2024
-
03
-
18
-- ----------------------------
-- ----------------------------
-- 门禁设备表
-- ----------------------------
DROP
TABLE
IF
EXISTS
`mortals_xhx_door`
;
CREATE
TABLE
mortals_xhx_door
(
`id`
bigint
(
20
)
AUTO_INCREMENT
COMMENT
'序号,主键,自增长'
,
`deviceName`
varchar
(
64
)
COMMENT
'设备名称'
,
`deviceCode`
varchar
(
64
)
COMMENT
'设备编码'
,
`ip`
varchar
(
64
)
COMMENT
'Ip地址'
,
`port`
int
(
9
)
COMMENT
'端口'
,
`username`
varchar
(
64
)
COMMENT
'用户名'
,
`password`
varchar
(
64
)
COMMENT
'密码'
,
`createTime`
datetime
COMMENT
'创建时间'
,
`createUserId`
bigint
(
20
)
COMMENT
'创建用户'
,
`updateUserId`
bigint
(
20
)
COMMENT
'更新用户'
,
`updateTime`
datetime
COMMENT
'修改时间'
,
`deptId`
bigint
(
20
)
COMMENT
'所属部门id'
,
`deptName`
varchar
(
64
)
COMMENT
'所属部门名称'
,
`remark`
varchar
(
256
)
COMMENT
'备注'
,
PRIMARY
KEY
(
`id`
)
,
KEY
`deviceCode`
(
`deviceCode`
)
USING
BTREE
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
COMMENT
=
'门禁设备'
;
doc/考勤绩效管理系统.docx
View file @
15d2a115
No preview for this file type
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