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
59872705
Commit
59872705
authored
Jul 04, 2023
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改用户同步逻辑
parent
bc54dbb7
Changes
16
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
418 additions
and
163 deletions
+418
-163
attendance-performance-manager/pom.xml
attendance-performance-manager/pom.xml
+7
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/dingtalk/api/TalkApiController.java
...com/mortals/xhx/busiz/dingtalk/api/TalkApiController.java
+70
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/dingtalk/config/TalkConfiguration.java
.../mortals/xhx/busiz/dingtalk/config/TalkConfiguration.java
+73
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/dingtalk/req/DingTalkBaseReq.java
...a/com/mortals/xhx/busiz/dingtalk/req/DingTalkBaseReq.java
+13
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/common/code/StaffSatusEnum.java
...main/java/com/mortals/xhx/common/code/StaffSatusEnum.java
+68
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncDoorsEventTaskImpl.java
...a/com/mortals/xhx/daemon/task/SyncDoorsEventTaskImpl.java
+6
-3
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncUserTaskImpl.java
...in/java/com/mortals/xhx/daemon/task/SyncUserTaskImpl.java
+18
-32
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/AttendanceRecordHikService.java
...module/attendance/service/AttendanceRecordHikService.java
+1
-1
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceRecordHikServiceImpl.java
...tendance/service/impl/AttendanceRecordHikServiceImpl.java
+74
-76
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceRecordServiceImpl.java
.../attendance/service/impl/AttendanceRecordServiceImpl.java
+19
-22
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/door/service/impl/HikDoorServiceImpl.java
.../xhx/module/hik/door/service/impl/HikDoorServiceImpl.java
+1
-1
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/person/model/rsp/person/PersonInfo.java
...ls/xhx/module/hik/person/model/rsp/person/PersonInfo.java
+5
-7
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/person/service/impl/HikPersonServiceImpl.java
.../module/hik/person/service/impl/HikPersonServiceImpl.java
+1
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/service/impl/StaffServiceImpl.java
...rtals/xhx/module/staff/service/impl/StaffServiceImpl.java
+24
-18
attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/web/StaffController.java
...ava/com/mortals/xhx/module/staff/web/StaffController.java
+0
-3
attendance-performance-manager/src/test/java/Sample.java
attendance-performance-manager/src/test/java/Sample.java
+38
-0
No files found.
attendance-performance-manager/pom.xml
View file @
59872705
...
...
@@ -141,6 +141,13 @@
<!-- <systemPath>${project.basedir}/src/main/resources/lib/artemis-http-client-1.1.8.jar</systemPath>-->
</dependency>
<!--dingdingtalk sdk-->
<dependency>
<groupId>
com.aliyun
</groupId>
<artifactId>
dingtalk
</artifactId>
<version>
2.0.19
</version>
</dependency>
<dependency>
<groupId>
junit
</groupId>
<artifactId>
junit
</artifactId>
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/dingtalk/api/TalkApiController.java
0 → 100644
View file @
59872705
package
com.mortals.xhx.busiz.dingtalk.api
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.fasterxml.jackson.databind.annotation.JsonSerialize
;
import
com.mortals.framework.common.Rest
;
import
com.mortals.xhx.busiz.dingtalk.config.TalkConfiguration
;
import
com.mortals.xhx.busiz.dingtalk.req.DingTalkBaseReq
;
import
com.mortals.xhx.common.code.YesNoEnum
;
import
com.mortals.xhx.common.pdu.ApiRespPdu
;
import
lombok.extern.apachecommons.CommonsLog
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* 钉钉相关外部接口
*
* @Author:
*/
@RestController
@Slf4j
public
class
TalkApiController
{
@Autowired
private
TalkConfiguration
talkConfiguration
;
/**
* 获取token
*
* @return
*/
@PostMapping
(
"/dingtalk/gettoken"
)
public
Rest
<
String
>
getToken
(
@RequestBody
DingTalkBaseReq
dingTalkBaseReq
)
{
log
.
info
(
"收到【getToken】请求【请求体】--> {}"
,
JSON
.
toJSONString
(
dingTalkBaseReq
));
try
{
// DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
// OapiGettokenRequest req = new OapiGettokenRequest();
// req.setHttpMethod("GET");
// OapiGettokenResponse rsp = client.execute(req);
/* DingTalkClient client = new DefaultDingTalkClient(talkConfiguration.getGetTokneUrl());
OapiGettokenRequest req = new OapiGettokenRequest();
req.setAppkey(apiKey);
req.setAppsecret(appsecret);
req.setHttpMethod("GET");
OapiGettokenResponse rsp = client.execute(req);
log.info("gettoken rsp:" + rsp.getBody());
if (rsp.getErrcode() == 0) {
apiRespPdu.setData(rsp.getAccessToken());
} else {
throw new AppException(String.format("errorCode:%s,errorMsg:%s", rsp.getErrcode(), rsp.getErrmsg()));
}
*/
}
catch
(
Exception
e
)
{
log
.
error
(
"异常"
,
e
);
return
Rest
.
fail
(
e
.
getMessage
());
}
return
Rest
.
ok
();
}
}
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/dingtalk/config/TalkConfiguration.java
0 → 100644
View file @
59872705
package
com.mortals.xhx.busiz.dingtalk.config
;
import
lombok.Data
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Configuration
;
/**
* 钉钉配置
*
* @Author: ZXF
*/
@Data
@Configuration
public
class
TalkConfiguration
{
/**
* AgentId
*/
@Value
(
"${dingtalk.agentId:''}"
)
private
String
getAgentId
;
/**
* getToken
*/
@Value
(
"${dingtalk.gettoken:''}"
)
private
String
getTokneUrl
;
/**
* getbymobile
*/
@Value
(
"${dingtalk.getbymobile:''}"
)
private
String
getbymobile
;
/**
* getDeptbyUser
*/
@Value
(
"${dingtalk.getDeptbyUser:''}"
)
private
String
getDeptbyUser
;
/**
* workCreate
*/
@Value
(
"${dingtalk.workCreate:''}"
)
private
String
workCreate
;
/**
* processCode
*/
@Value
(
"${dingtalk.processCode:''}"
)
private
String
processCode
;
/**
* aesToken
*/
@Value
(
"${dingtalk.aesToken:''}"
)
private
String
aesToken
;
/**
* aseKey
*/
@Value
(
"${dingtalk.aesKey:''}"
)
private
String
aesKey
;
/**
* ownerKey
*/
@Value
(
"${dingtalk.ownerKey:''}"
)
private
String
ownerKey
;
}
attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/dingtalk/req/DingTalkBaseReq.java
0 → 100644
View file @
59872705
package
com.mortals.xhx.busiz.dingtalk.req
;
import
lombok.Data
;
import
org.springframework.web.bind.annotation.RequestParam
;
@Data
public
class
DingTalkBaseReq
{
private
String
apiKey
;
private
String
appsecret
;
}
attendance-performance-manager/src/main/java/com/mortals/xhx/common/code/StaffSatusEnum.java
0 → 100644
View file @
59872705
package
com.mortals.xhx.common.code
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
/**
* 员工状态
* @author
*
*/
public
enum
StaffSatusEnum
{
正式
(
1
,
"正式"
),
试用
(
2
,
"试用"
),
离职
(
3
,
"离职"
),
;
private
int
value
;
private
String
desc
;
StaffSatusEnum
(
int
value
,
String
desc
)
{
this
.
value
=
value
;
this
.
desc
=
desc
;
}
public
int
getValue
()
{
return
this
.
value
;
}
public
String
getDesc
()
{
return
desc
;
}
public
static
StaffSatusEnum
getByValue
(
int
value
)
{
for
(
StaffSatusEnum
examStatus
:
StaffSatusEnum
.
values
())
{
if
(
examStatus
.
getValue
()
==
value
)
{
return
examStatus
;
}
}
return
null
;
}
/**
* 获取Map集合
* @param eItem 不包含项
* @return
*/
public
static
Map
<
String
,
String
>
getEnumMap
(
int
...
eItem
)
{
Map
<
String
,
String
>
resultMap
=
new
LinkedHashMap
<
String
,
String
>();
for
(
StaffSatusEnum
item
:
StaffSatusEnum
.
values
())
{
try
{
boolean
hasE
=
false
;
for
(
int
e
:
eItem
){
if
(
item
.
getValue
()==
e
){
hasE
=
true
;
break
;
}
}
if
(!
hasE
){
resultMap
.
put
(
item
.
getValue
()+
""
,
item
.
getDesc
());
}
}
catch
(
Exception
ex
){
}
}
return
resultMap
;
}
}
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncDoorsEventTaskImpl.java
View file @
59872705
...
...
@@ -116,7 +116,10 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
AttendanceRecordHikEntity
recordHikEntity
=
new
AttendanceRecordHikEntity
();
recordHikEntity
.
initAttrValue
();
StaffEntity
staffCache
=
staffService
.
getExtCache
(
item
.
getJobNo
());
if
(
ObjectUtils
.
isEmpty
(
staffCache
))
return
null
;
if
(
ObjectUtils
.
isEmpty
(
staffCache
))
{
log
.
info
(
"staff is null !staffCode:{}"
,
item
.
getJobNo
());
return
null
;
}
recordHikEntity
.
setStaffId
(
staffCache
.
getId
());
recordHikEntity
.
setStaffName
(
staffCache
.
getName
());
...
...
@@ -134,11 +137,11 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
recordHikEntity
.
setCreateUserName
(
"system"
);
recordHikEntity
.
setCreateUserId
(
1L
);
return
recordHikEntity
;
}).
collect
(
Collectors
.
toList
());
}).
filter
(
f
->
f
!=
null
).
collect
(
Collectors
.
toList
());
log
.
info
(
"attRecords size:{}"
,
attRecords
.
size
());
List
<
String
>
eventIds
=
attRecords
.
parallelStream
().
filter
(
f
->!
ObjectUtils
.
isEmpty
(
f
)&&
!
ObjectUtils
.
isEmpty
(
f
.
getRemark
())).
map
(
i
->
i
.
getRemark
()).
collect
(
Collectors
.
toList
());
List
<
String
>
eventIds
=
attRecords
.
parallelStream
().
filter
(
f
->
!
ObjectUtils
.
isEmpty
(
f
)
&&
!
ObjectUtils
.
isEmpty
(
f
.
getRemark
())).
map
(
i
->
i
.
getRemark
()).
collect
(
Collectors
.
toList
());
//查询当天考勤记录是否有重复的 有的 则不添加
AttendanceRecordHikQuery
recordHikQuery
=
new
AttendanceRecordHikQuery
();
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncUserTaskImpl.java
View file @
59872705
...
...
@@ -54,18 +54,11 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
@Autowired
private
StaffService
staffService
;
@Autowired
private
DeptDao
deptDao
;
@Autowired
private
DeptService
deptService
;
@Autowired
private
StaffService
service
;
@Autowired
private
AttendanceStatService
attendanceStatService
;
...
...
@@ -79,12 +72,10 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
public
void
excuteTask
(
ITask
task
)
throws
AppException
{
log
.
info
(
"同步用户--部门"
);
try
{
//同步部门
syncDepts
();
//同步员工
syncPersons
();
}
catch
(
Exception
e
)
{
log
.
error
(
"同步人事异常"
,
e
);
}
...
...
@@ -100,21 +91,21 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
for
(
PersonInfo
personInfo
:
personInfoList
)
{
StaffEntity
staffEntity
=
staffService
.
getExtCache
(
personInfo
.
getJobNo
());
DeptEntity
deptEntity
=
deptService
.
selectOne
(
new
DeptQuery
().
deptCode
(
personInfo
.
getOrgIndexCode
()));
AttendanceVacationBalanceEntity
balanceEntity
=
balanceService
.
selectOne
(
new
AttendanceVacationBalanceQuery
().
staffId
(
staffEntity
.
getId
()));
AttendanceStatEntity
statEntity
=
attendanceStatService
.
selectOne
(
new
AttendanceStatQuery
().
staffId
(
staffEntity
.
getId
()));
//
AttendanceVacationBalanceEntity balanceEntity = balanceService.selectOne(new AttendanceVacationBalanceQuery().staffId(staffEntity.getId()));
//
AttendanceStatEntity statEntity = attendanceStatService.selectOne(new AttendanceStatQuery().staffId(staffEntity.getId()));
//判断本地数据是否为空
if
(
ObjectUtils
.
isEmpty
(
staffEntity
))
{
//新增员工信息
staffEntity
=
new
StaffEntity
();
staffEntity
.
initAttrValue
();
if
(
ObjectUtils
.
isEmpty
(
deptEntity
))
{
if
(
!
ObjectUtils
.
isEmpty
(
deptEntity
))
{
staffEntity
.
setDeptId
(
deptEntity
.
getId
());
}
staffEntity
.
setName
(
personInfo
.
getPersonName
());
staffEntity
.
setRemarkId
(
personInfo
.
getPersonId
());
staffEntity
.
setPicUri
(
personInfo
.
getPersonPhoto
().
getPicUri
());
staffEntity
.
setServerIndexCode
(
personInfo
.
getPersonPhoto
().
getServerIndexCode
());
staffEntity
.
setDeptName
(
personInfo
.
getOrg
Path
Name
());
staffEntity
.
setDeptName
(
personInfo
.
getOrgName
());
staffEntity
.
setGender
(
personInfo
.
getGender
());
staffEntity
.
setWorkNum
(
personInfo
.
getJobNo
());
staffEntity
.
setPhoneNumber
(
personInfo
.
getPhoneNo
());
...
...
@@ -122,6 +113,18 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
staffEntity
.
setCreateTime
(
new
Date
());
service
.
save
(
staffEntity
);
AttendanceVacationBalanceEntity
balanceEntity
=
new
AttendanceVacationBalanceEntity
();
balanceEntity
.
initAttrValue
();
balanceEntity
.
setStaffId
(
staffEntity
.
getId
());
balanceEntity
.
setStaffName
(
staffEntity
.
getName
());
balanceEntity
.
setDeptId
(
staffEntity
.
getDeptId
());
balanceEntity
.
setDeptName
(
staffEntity
.
getDeptName
());
balanceEntity
.
setCreateUserId
(
1L
);
balanceEntity
.
setCreateTime
(
new
Date
());
balanceService
.
save
(
balanceEntity
);
//AttendanceVacationBalanceEntity balanceEntity = balanceService.selectOne(new AttendanceVacationBalanceQuery().staffId(staffEntity.getId()));
AttendanceStatEntity
attendanceStatEntity
=
new
AttendanceStatEntity
();
attendanceStatEntity
.
initAttrValue
();
attendanceStatEntity
.
setStaffId
(
staffEntity
.
getId
());
...
...
@@ -153,17 +156,6 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
attendanceStatEntity
.
setHomeLeave
(
balanceEntity
.
getHomeLeave
());
attendanceStatEntity
.
setPersonalLeave
(
balanceEntity
.
getPersonalLeaveDays
());
attendanceStatService
.
save
(
attendanceStatEntity
);
AttendanceVacationBalanceEntity
attendanceVacationBalanceEntity
=
new
AttendanceVacationBalanceEntity
();
attendanceVacationBalanceEntity
.
initAttrValue
();
attendanceVacationBalanceEntity
.
setStaffId
(
staffEntity
.
getId
());
attendanceVacationBalanceEntity
.
setStaffName
(
staffEntity
.
getName
());
attendanceVacationBalanceEntity
.
setDeptId
(
deptEntity
.
getId
());
attendanceVacationBalanceEntity
.
setDeptName
(
deptEntity
.
getDeptName
());
attendanceVacationBalanceEntity
.
setCreateTime
(
new
Date
());
attendanceVacationBalanceEntity
.
setCreateUserId
(
1L
);
balanceService
.
save
(
attendanceVacationBalanceEntity
);
//统计各级部门员工数量 todo 优化统计
String
ancestor
=
deptEntity
.
getAncestors
().
split
(
","
,
2
)[
1
];
String
[]
ancestors
=
ancestor
.
split
(
","
);
...
...
@@ -174,24 +166,22 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
deptService
.
update
(
deptEntity2
);
}
}
}
else
{
//更新
if
(
ObjectUtils
.
isEmpty
(
deptEntity
))
{
if
(
!
ObjectUtils
.
isEmpty
(
deptEntity
))
{
staffEntity
.
setDeptId
(
deptEntity
.
getId
());
}
staffEntity
.
setName
(
personInfo
.
getPersonName
());
staffEntity
.
setRemarkId
(
personInfo
.
getPersonId
());
staffEntity
.
setPicUri
(
personInfo
.
getPersonPhoto
().
getPicUri
());
staffEntity
.
setServerIndexCode
(
personInfo
.
getPersonPhoto
().
getServerIndexCode
());
staffEntity
.
setDeptName
(
personInfo
.
getOrg
Path
Name
());
staffEntity
.
setDeptName
(
personInfo
.
getOrgName
());
staffEntity
.
setGender
(
personInfo
.
getGender
());
staffEntity
.
setWorkNum
(
personInfo
.
getJobNo
());
staffEntity
.
setPhoneNumber
(
personInfo
.
getPhoneNo
());
staffEntity
.
setUpdateUserId
(
1L
);
staffEntity
.
setUpdateTime
(
new
Date
());
service
.
update
(
staffEntity
);
//统计各级部门员工数量
String
ancestor
=
deptEntity
.
getAncestors
().
split
(
","
,
2
)[
1
];
String
[]
ancestors
=
ancestor
.
split
(
","
);
...
...
@@ -247,12 +237,8 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
}
}
}
@Override
public
void
stopTask
(
ITask
task
)
throws
AppException
{
}
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/AttendanceRecordHikService.java
View file @
59872705
...
...
@@ -17,6 +17,6 @@ public interface AttendanceRecordHikService extends ICRUDService<AttendanceRecor
* 将原始数据导入打卡记录表
* @param entity
*/
public
void
addAttendanceRecord
(
AttendanceRecordHikEntity
entity
,
Context
context
)
throws
Exception
;
void
addAttendanceRecord
(
AttendanceRecordHikEntity
entity
,
Context
context
)
throws
Exception
;
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceRecordHikServiceImpl.java
View file @
59872705
This diff is collapsed.
Click to expand it.
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceRecordServiceImpl.java
View file @
59872705
package
com.mortals.xhx.module.attendance.service.impl
;
import
com.mortals.framework.model.PageInfo
;
import
org.springframework.stereotype.Service
;
import
com.mortals.framework.service.impl.AbstractCRUDServiceImpl
;
...
...
@@ -12,18 +13,19 @@ import com.mortals.xhx.module.attendance.model.AttendanceRecordDetailEntity;
import
com.mortals.xhx.module.attendance.model.AttendanceRecordDetailQuery
;
import
com.mortals.xhx.module.attendance.service.AttendanceRecordDetailService
;
import
org.springframework.util.ObjectUtils
;
import
java.util.Date
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* AttendanceRecordService
* 考勤打卡记录信息 service实现
*
* @author zxfei
* @date 2023-04-07
*/
* AttendanceRecordService
* 考勤打卡记录信息 service实现
*
* @author zxfei
* @date 2023-04-07
*/
@Service
(
"attendanceRecordService"
)
public
class
AttendanceRecordServiceImpl
extends
AbstractCRUDServiceImpl
<
AttendanceRecordDao
,
AttendanceRecordEntity
,
Long
>
implements
AttendanceRecordService
{
@Autowired
...
...
@@ -32,12 +34,10 @@ public class AttendanceRecordServiceImpl extends AbstractCRUDServiceImpl<Attenda
@Override
protected
void
findAfter
(
AttendanceRecordEntity
params
,
PageInfo
pageInfo
,
Context
context
,
List
<
AttendanceRecordEntity
>
list
)
throws
AppException
{
list
.
stream
().
map
(
item
->{
//chax
list
.
stream
().
map
(
item
->
{
List
<
AttendanceRecordDetailEntity
>
attendanceRecordDetailEntities
=
attendanceRecordDetailService
.
find
(
new
AttendanceRecordDetailQuery
().
recordId
(
item
.
getId
()));
item
.
setAttendanceRecordDetailList
(
attendanceRecordDetailEntities
);
return
item
;
return
item
;
}).
collect
(
Collectors
.
toList
());
...
...
@@ -46,11 +46,10 @@ public class AttendanceRecordServiceImpl extends AbstractCRUDServiceImpl<Attenda
@Override
protected
void
saveAfter
(
AttendanceRecordEntity
entity
,
Context
context
)
throws
AppException
{
if
(!
ObjectUtils
.
isEmpty
(
entity
.
getAttendanceRecordDetailList
()))
{
entity
.
getAttendanceRecordDetailList
().
stream
().
peek
(
item
->
{
if
(!
ObjectUtils
.
isEmpty
(
entity
.
getAttendanceRecordDetailList
()))
{
entity
.
getAttendanceRecordDetailList
().
stream
().
peek
(
item
->
{
item
.
setRecordId
(
entity
.
getId
());
item
.
setCreateUser
(
context
==
null
?
"admin"
:
context
.
getUser
().
getLoginName
());
item
.
setCreateUserId
(
context
==
null
?
1L
:
context
.
getUser
().
getId
());
item
.
setCreateUserId
(
this
.
getContextUserId
(
context
));
item
.
setCreateTime
(
new
Date
());
}).
count
();
attendanceRecordDetailService
.
save
(
entity
.
getAttendanceRecordDetailList
());
...
...
@@ -60,16 +59,14 @@ public class AttendanceRecordServiceImpl extends AbstractCRUDServiceImpl<Attenda
@Override
protected
void
updateAfter
(
AttendanceRecordEntity
entity
,
Context
context
)
throws
AppException
{
if
(!
ObjectUtils
.
isEmpty
(
entity
.
getAttendanceRecordDetailList
()))
{
if
(!
ObjectUtils
.
isEmpty
(
entity
.
getAttendanceRecordDetailList
()))
{
Long
[]
attendanceRecordDetailIds
=
attendanceRecordDetailService
.
find
(
new
AttendanceRecordDetailQuery
().
recordId
(
entity
.
getId
())).
stream
().
map
(
AttendanceRecordDetailEntity:
:
getId
).
toArray
(
Long
[]::
new
);
attendanceRecordDetailService
.
remove
(
attendanceRecordDetailIds
,
context
);
entity
.
getAttendanceRecordDetailList
().
stream
().
peek
(
item
->{
attendanceRecordDetailService
.
remove
(
attendanceRecordDetailIds
,
context
);
entity
.
getAttendanceRecordDetailList
().
stream
().
peek
(
item
->
{
item
.
setRecordId
(
entity
.
getId
());
item
.
setCreateUser
(
context
==
null
?
"admin"
:
context
.
getUser
().
getLoginName
());
item
.
setCreateUserId
(
context
==
null
?
1L
:
context
.
getUser
().
getId
());
item
.
setCreateUserId
(
this
.
getContextUserId
(
context
));
item
.
setCreateTime
(
new
Date
());
item
.
setUpdateUser
(
context
==
null
?
"admin"
:
context
.
getUser
().
getLoginName
());
item
.
setUpdateUserId
(
context
==
null
?
1L
:
context
.
getUser
().
getId
());
item
.
setUpdateUserId
(
this
.
getContextUserId
(
context
));
item
.
setUpdateTime
(
new
Date
());
}).
count
();
attendanceRecordDetailService
.
save
(
entity
.
getAttendanceRecordDetailList
());
...
...
@@ -80,7 +77,7 @@ public class AttendanceRecordServiceImpl extends AbstractCRUDServiceImpl<Attenda
@Override
protected
void
removeAfter
(
Long
[]
ids
,
Context
context
,
int
result
)
throws
AppException
{
List
<
AttendanceRecordDetailEntity
>
attendanceRecordDetaillist
=
attendanceRecordDetailService
.
find
(
new
AttendanceRecordDetailQuery
().
recordIdList
(
Arrays
.
asList
(
ids
)));
attendanceRecordDetailService
.
removeList
(
attendanceRecordDetaillist
,
context
);
attendanceRecordDetailService
.
removeList
(
attendanceRecordDetaillist
,
context
);
super
.
removeAfter
(
ids
,
context
,
result
);
}
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/door/service/impl/HikDoorServiceImpl.java
View file @
59872705
...
...
@@ -36,7 +36,7 @@ public class HikDoorServiceImpl extends AbstractHikService implements IHikDoorSe
try
{
log
.
info
(
"door events req=>{}"
,
JSON
.
toJSONString
(
doorEventReq
));
String
respJson
=
ArtemisHttpUtil
.
doPostStringArtemis
(
config
,
path
,
JSON
.
toJSONString
(
doorEventReq
),
null
,
null
,
"application/json"
);
//
log.info("door events error resp=>{}", respJson);
//
log.info("door events error resp=>{}", respJson);
HikApiRest
<
DoorEventDataInfo
>
rest
=
JSON
.
parseObject
(
respJson
,
new
TypeReference
<
HikApiRest
<
DoorEventDataInfo
>>()
{
});
log
.
info
(
"door events resp=>{}"
,
rest
.
getCode
());
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/person/model/rsp/person/PersonInfo.java
View file @
59872705
...
...
@@ -7,19 +7,17 @@ import java.util.Date;
@Data
public
class
PersonInfo
{
private
String
personId
;
private
String
personName
;
private
int
gender
;
private
String
orgPath
;
private
String
orgPathName
;
private
String
orgIndexCode
;
private
String
orgName
;
private
int
certificateType
;
private
String
certificateNo
;
@JSONField
(
format
=
"yyyy-MM-dd'T'HH:mm:ssXXX"
)
private
Date
updateTime
;
private
String
certificateNo
;
private
String
phoneNo
;
private
String
personName
;
private
PersonPhoto
personPhoto
;
@JSONField
(
format
=
"yyyy-MM-dd'T'HH:mm:ssXXX"
)
private
Date
createTime
;
private
String
jobNo
;
private
String
personId
;
private
int
certificateType
;
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/hik/person/service/impl/HikPersonServiceImpl.java
View file @
59872705
...
...
@@ -36,6 +36,7 @@ public class HikPersonServiceImpl extends AbstractHikService implements IHikPers
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
>>()
{
});
if
(
"0"
.
equals
(
rest
.
getCode
()))
{
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/service/impl/StaffServiceImpl.java
View file @
59872705
package
com.mortals.xhx.module.staff.service.impl
;
import
com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl
;
import
com.mortals.xhx.common.code.StaffSatusEnum
;
import
com.mortals.xhx.common.code.StaffTypeEnum
;
import
com.mortals.xhx.common.code.StatusEnum
;
import
com.mortals.xhx.module.staff.dao.StaffDao
;
import
com.mortals.xhx.module.staff.dao.ibatis.StaffDaoImpl
;
import
com.mortals.xhx.module.staff.dao.ibatis.StaffLeaveDaoImpl
;
import
com.mortals.xhx.module.staff.model.StaffEntity
;
import
com.mortals.xhx.module.staff.model.StaffQuery
;
import
com.mortals.xhx.module.staff.model.vo.StaffInfoVo
;
import
com.mortals.xhx.module.staff.service.StaffService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* StaffService
...
...
@@ -22,14 +29,6 @@ import java.util.List;
@Service
(
"staffService"
)
public
class
StaffServiceImpl
extends
AbstractCRUDCacheServiceImpl
<
StaffDao
,
StaffEntity
,
Long
>
implements
StaffService
{
@Autowired
private
StaffDaoImpl
staffDao
;
@Autowired
private
StaffLeaveDaoImpl
staffLeaveDao
;
@Override
protected
String
getExtKey
(
StaffEntity
data
)
{
//工号作为redis 扩展key
...
...
@@ -40,26 +39,33 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta
public
StaffInfoVo
queryAll
()
{
StaffInfoVo
staffInfoVo
=
new
StaffInfoVo
();
//在职
staffInfoVo
.
setInWorkStaff
(
staffDao
.
queryInWork
());
StaffQuery
staffQuery
=
new
StaffQuery
();
staffQuery
.
setStatusList
(
Arrays
.
asList
(
StaffSatusEnum
.
正式
.
getValue
(),
StaffSatusEnum
.
试用
.
getValue
()));
List
<
StaffEntity
>
staffEntities
=
this
.
find
(
staffQuery
);
staffInfoVo
.
setInWorkStaff
(
staffEntities
.
size
());
//全职
staffInfoVo
.
setFullStaff
(
staffDao
.
queryFull
());
//正式
staffInfoVo
.
setFormalStaff
(
staffDao
.
queryFormal
());
Map
<
Integer
,
Long
>
collect
=
staffEntities
.
stream
().
collect
(
Collectors
.
groupingBy
(
x
->
x
.
getStaffType
(),
Collectors
.
counting
()));
staffInfoVo
.
setFullStaff
(
collect
.
getOrDefault
(
StaffTypeEnum
.
全职
.
getValue
(),
0L
).
intValue
());
//实习
staffInfoVo
.
setPricateStaff
(
collect
.
getOrDefault
(
StaffTypeEnum
.
实习
.
getValue
(),
0L
).
intValue
());
//兼职
staffInfoVo
.
setConcurrentlyStaff
(
staffDao
.
queryConcurrently
());
staffInfoVo
.
setConcurrentlyStaff
(
collect
.
getOrDefault
(
StaffTypeEnum
.
兼职
.
getValue
(),
0L
).
intValue
());
//试用
staffInfoVo
.
setOnTrialStaff
(
staffDao
.
queryOnTrial
());
//
实习
staffInfoVo
.
set
PricateStaff
(
staffDao
.
queryPricat
e
());
staffInfoVo
.
setOnTrialStaff
(
this
.
find
(
new
StaffQuery
().
status
(
StaffSatusEnum
.
试用
.
getValue
())).
size
());
//
正式
staffInfoVo
.
set
FormalStaff
(
this
.
find
(
new
StaffQuery
().
status
(
StaffSatusEnum
.
正式
.
getValue
())).
siz
e
());
//待离职
staffInfoVo
.
setResignationStaff
(
staffLeaveDao
.
queryResignation
());
staffInfoVo
.
setResignationStaff
(
this
.
find
(
new
StaffQuery
().
status
(
StaffSatusEnum
.
离职
.
getValue
())).
size
());
return
staffInfoVo
;
}
@Override
public
int
queryAllPerson
()
{
return
staffDao
.
queryInWork
();
StaffQuery
staffQuery
=
new
StaffQuery
();
staffQuery
.
setStatusList
(
Arrays
.
asList
(
StaffSatusEnum
.
正式
.
getValue
(),
StaffSatusEnum
.
试用
.
getValue
()));
List
<
StaffEntity
>
staffEntities
=
this
.
find
(
staffQuery
);
return
staffEntities
.
size
();
}
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/web/StaffController.java
View file @
59872705
...
...
@@ -76,7 +76,6 @@ public class StaffController extends BaseCRUDJsonBodyMappingController<StaffServ
//todo 员工统计信息
List
<
HolidayListVo
>
holidayListVos
=
new
ArrayList
<>();
HolidayListVo
vo
=
new
HolidayListVo
();
StaffEntity
staffEntity
=
this
.
service
.
get
(
id
);
vo
.
setWorkName
(
staffEntity
.
getName
());
vo
.
setWorkStatus
(
String
.
valueOf
(
staffEntity
.
getStatus
()));
...
...
@@ -96,9 +95,7 @@ public class StaffController extends BaseCRUDJsonBodyMappingController<StaffServ
vo
.
setPaternityLeaveDay
(
"10"
);
holidayListVos
.
add
(
vo
);
entity
.
setHolidayLists
(
holidayListVos
);
// StaffEntity cache = this.service.getCache(entity.getWorkNum());
return
super
.
infoAfter
(
id
,
model
,
entity
,
context
);
}
...
...
attendance-performance-manager/src/test/java/Sample.java
0 → 100644
View file @
59872705
// This file is auto-generated, don't edit it. Thanks.
import
com.aliyun.tea.*
;
public
class
Sample
{
/**
* 使用 Token 初始化账号Client
* @return Client
* @throws Exception
*/
public
static
com
.
aliyun
.
dingtalkoauth2_1_0
.
Client
createClient
()
throws
Exception
{
com
.
aliyun
.
teaopenapi
.
models
.
Config
config
=
new
com
.
aliyun
.
teaopenapi
.
models
.
Config
();
config
.
protocol
=
"https"
;
config
.
regionId
=
"central"
;
return
new
com
.
aliyun
.
dingtalkoauth2_1_0
.
Client
(
config
);
}
public
static
void
main
(
String
[]
args_
)
throws
Exception
{
java
.
util
.
List
<
String
>
args
=
java
.
util
.
Arrays
.
asList
(
args_
);
com
.
aliyun
.
dingtalkoauth2_1_0
.
Client
client
=
Sample
.
createClient
();
com
.
aliyun
.
dingtalkoauth2_1_0
.
models
.
GetAccessTokenRequest
getAccessTokenRequest
=
new
com
.
aliyun
.
dingtalkoauth2_1_0
.
models
.
GetAccessTokenRequest
();
try
{
client
.
getAccessToken
(
getAccessTokenRequest
);
}
catch
(
TeaException
err
)
{
if
(!
com
.
aliyun
.
teautil
.
Common
.
empty
(
err
.
code
)
&&
!
com
.
aliyun
.
teautil
.
Common
.
empty
(
err
.
message
))
{
// err 中含有 code 和 message 属性,可帮助开发定位问题
}
}
catch
(
Exception
_err
)
{
TeaException
err
=
new
TeaException
(
_err
.
getMessage
(),
_err
);
if
(!
com
.
aliyun
.
teautil
.
Common
.
empty
(
err
.
code
)
&&
!
com
.
aliyun
.
teautil
.
Common
.
empty
(
err
.
message
))
{
// err 中含有 code 和 message 属性,可帮助开发定位问题
}
}
}
}
\ 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