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
494272f1
Commit
494272f1
authored
Dec 28, 2023
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加统计
parent
c6dbaedc
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
189 additions
and
30 deletions
+189
-30
attendance-performance-manager/src/main/java/com/mortals/xhx/base/login/web/LoginController.java
.../java/com/mortals/xhx/base/login/web/LoginController.java
+17
-14
attendance-performance-manager/src/main/java/com/mortals/xhx/common/key/RedisKey.java
...er/src/main/java/com/mortals/xhx/common/key/RedisKey.java
+3
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncDoorsEventAfterTaskImpl.java
.../mortals/xhx/daemon/task/SyncDoorsEventAfterTaskImpl.java
+15
-7
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/AttendanceStatService.java
.../xhx/module/attendance/service/AttendanceStatService.java
+4
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceStatServiceImpl.java
...le/attendance/service/impl/AttendanceStatServiceImpl.java
+150
-9
No files found.
attendance-performance-manager/src/main/java/com/mortals/xhx/base/login/web/LoginController.java
View file @
494272f1
...
...
@@ -190,7 +190,10 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
JSONObject
data
=
new
JSONObject
();
String
token
=
authTokenService
.
getToken
(
request
);
HomeStatInfo
homeStatInfo
=
new
HomeStatInfo
();
HomeStatInfo
homeStatInfo
=
cacheService
.
get
(
RedisKey
.
KEY_HOME_STAT_CACHE
,
HomeStatInfo
.
class
);
/* HomeStatInfo homeStatInfo = new HomeStatInfo();
StaffQuery staffQuery = new StaffQuery();
...
...
@@ -207,8 +210,8 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
homeStatInfo.setTotalDeptNum(totalDeptNum);
AttendanceRecordHikQuery hikQuery = new AttendanceRecordHikQuery();
/* hikQuery.setAttendanceDateStart(DateUtil.beginOfMonth(new Date()).toDateStr());
hikQuery.setAttendanceDateEnd(DateUtil.today()); */
*/
/* hikQuery.setAttendanceDateStart(DateUtil.beginOfMonth(new Date()).toDateStr());
hikQuery.setAttendanceDateEnd(DateUtil.today()); */
/*
hikQuery.setAttendanceDateStart(DateUtil.yesterday().toDateStr());
hikQuery.setAttendanceDateEnd(DateUtil.yesterday().toDateStr());
...
...
@@ -222,17 +225,17 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
//获取当月打卡人数,如果存在
/* Long totalCache = cacheService.hget(RedisKey.KEY_ATTENC_TOTOAL_CACHE, DateUtil.format(new Date(), "yyyy-MM"), Long.class);
*/
/* Long totalCache = cacheService.hget(RedisKey.KEY_ATTENC_TOTOAL_CACHE, DateUtil.format(new Date(), "yyyy-MM"), Long.class);
if (ObjectUtils.isEmpty(totalCache)) {
totalCache = recordHikService.find(hikQuery).parallelStream().map(item -> item.getStaffId()).distinct().count();
cacheService.hset(RedisKey.KEY_ATTENC_TOTOAL_CACHE, DateUtil.format(new Date(), "yyyy-MM"), totalCache);
}*/
}*/
/*
/* Long totalCache = cacheService.hget(RedisKey.KEY_ATTENC_TOTOAL_CACHE, DateUtil.yesterday().toDateStr(), Long.class);
*/
/* Long totalCache = cacheService.hget(RedisKey.KEY_ATTENC_TOTOAL_CACHE, DateUtil.yesterday().toDateStr(), Long.class);
if (ObjectUtils.isEmpty(totalCache)) {
totalCache = recordHikService.find(hikQuery).parallelStream().map(item -> item.getStaffId()).distinct().count();
cacheService.hset(RedisKey.KEY_ATTENC_TOTOAL_CACHE, DateUtil.yesterday().toDateStr(), totalCache);
}*/
}*/
/*
//迟到次数
...
...
@@ -260,14 +263,14 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
.count();
/* AttendanceVacationRecordQuery vacationRecordQuery = new AttendanceVacationRecordQuery();
*/
/* AttendanceVacationRecordQuery vacationRecordQuery = new AttendanceVacationRecordQuery();
vacationRecordQuery.setCreateTimeStart(DateUtil.beginOfMonth(new Date()).toDateStr());
vacationRecordQuery.setCreateTimeEnd(DateUtil.today());
int levealPersonNum = vacationRecordService.count(vacationRecordQuery, getContext());*/
int levealPersonNum = vacationRecordService.count(vacationRecordQuery, getContext());*/
/*
AttendanceLeaveRecordQuery leaveRecordQuery = new AttendanceLeaveRecordQuery();
/* leaveRecordQuery.setCreateTimeStart(DateUtil.beginOfMonth(new Date()).toDateStr());
leaveRecordQuery.setCreateTimeEnd(DateUtil.today());*/
*/
/* leaveRecordQuery.setCreateTimeStart(DateUtil.beginOfMonth(new Date()).toDateStr());
leaveRecordQuery.setCreateTimeEnd(DateUtil.today());*/
/*
leaveRecordQuery.setCreateTimeStart(DateUtil.yesterday().toDateStr());
leaveRecordQuery.setCreateTimeEnd(DateUtil.yesterday().toDateStr());
leaveRecordQuery.setProcessStatus(ProcessStatusEnum.已处理.getValue());
...
...
@@ -275,12 +278,12 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
//总打卡记录
/* long totalAttend = attendanceRecordEntities.parallelStream().flatMap(item -> item.getAttendanceRecordDetailList().parallelStream()).count();
*/
/* long totalAttend = attendanceRecordEntities.parallelStream().flatMap(item -> item.getAttendanceRecordDetailList().parallelStream()).count();
long lackOfCardsAttend = attendanceRecordEntities.parallelStream()
.flatMap(item -> item.getAttendanceRecordDetailList().stream())
.filter(f -> GoWorkResultEnum.缺卡.getValue() == f.getGoWorkResult() || OffWorkResultEnum.缺卡.getValue() == f.getOffWorkResult())
.count();*/
.count();*/
/*
//异常考勤记录
//未考勤
// long noAtt=lackOfCards;
...
...
@@ -298,7 +301,7 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
homeStatInfo.setLatePersonNum(beLate);
homeStatInfo.setLeftEarlyPersonNum(leaveEarly);
homeStatInfo.setMissCardPersonNum(lackOfCards);
homeStatInfo
.
setAttendPersonNum
(
totalAttendPersonNum
);
homeStatInfo.setAttendPersonNum(totalAttendPersonNum);
*/
data
.
put
(
"homeStat"
,
homeStatInfo
);
data
.
put
(
"token"
,
token
);
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/common/key/RedisKey.java
View file @
494272f1
...
...
@@ -26,4 +26,7 @@ public class RedisKey {
/** 考勤统计 **/
public
static
final
String
KEY_ATTENDANCE_STAT_CACHE
=
"attendance:stat"
;
public
static
final
String
KEY_HOME_STAT_CACHE
=
"attendance:home:stat"
;
}
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncDoorsEventAfterTaskImpl.java
View file @
494272f1
...
...
@@ -15,6 +15,7 @@ import com.mortals.xhx.common.code.YesNoEnum;
import
com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity
;
import
com.mortals.xhx.module.attendance.model.AttendanceRecordHikQuery
;
import
com.mortals.xhx.module.attendance.service.AttendanceRecordHikService
;
import
com.mortals.xhx.module.attendance.service.AttendanceStatService
;
import
com.mortals.xhx.module.hik.door.model.req.door.DoorEventReq
;
import
com.mortals.xhx.module.hik.door.model.rsp.door.DoorEventDataInfo
;
import
com.mortals.xhx.module.hik.door.service.IHikDoorService
;
...
...
@@ -46,6 +47,8 @@ public class SyncDoorsEventAfterTaskImpl implements ITaskExcuteService {
@Autowired
private
IHikDoorService
hikDoorService
;
@Autowired
private
AttendanceStatService
attendanceStatService
;
@Override
...
...
@@ -53,16 +56,21 @@ public class SyncDoorsEventAfterTaskImpl implements ITaskExcuteService {
// syncDoorEvents();
//判断时间段 不在时间段的 不做计算
//早上9点 子晚上8点 计算
Date
beginDateTime
=
DateUtil
.
parseDateTime
(
DateUtil
.
today
()+
" 09:00:00"
);
Date
endDateTime
=
DateUtil
.
parseDateTime
(
DateUtil
.
today
()+
" 20:30:00"
);
Date
beginDateTime
=
DateUtil
.
parseDateTime
(
DateUtil
.
today
()
+
" 09:00:00"
);
Date
endDateTime
=
DateUtil
.
parseDateTime
(
DateUtil
.
today
()
+
" 20:30:00"
);
boolean
in
=
DateUtil
.
isIn
(
new
Date
(),
beginDateTime
,
endDateTime
);
if
(
in
)
{
if
(
in
)
{
calculateAttendByDay
();
}
//统计当日
log
.
info
(
"统计当日考勤"
);
attendanceStatService
.
homeStat
(
null
);
log
.
info
(
"统计当日考勤结束"
);
}
private
void
calculateAttendByDay
()
{
Context
context
=
new
Context
();
UserEntity
userEntity
=
new
UserEntity
();
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/AttendanceStatService.java
View file @
494272f1
...
...
@@ -24,4 +24,8 @@ public interface AttendanceStatService extends ICRUDService<AttendanceStatEntity
void
doAttendanceSummary
(
AttendanceSummaryQuery
query
);
Result
<
AttendanceStatEntity
>
findExt
(
AttendanceSummaryQuery
params
,
PageInfo
pageInfo
,
Context
context
)
throws
AppException
;
void
homeStat
(
Context
context
)
throws
AppException
;
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceStatServiceImpl.java
View file @
494272f1
package
com.mortals.xhx.module.attendance.service.impl
;
import
cn.hutool.core.date.DateUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.mortals.framework.model.PageInfo
;
import
com.mortals.framework.model.Result
;
import
com.mortals.framework.service.ICacheService
;
import
com.mortals.framework.util.DateUtils
;
import
com.mortals.framework.util.StringUtils
;
import
com.mortals.xhx.common.code.GoWorkResultEnum
;
import
com.mortals.xhx.common.code.LeaveTypeEnum
;
import
com.mortals.xhx.common.code.OffWorkResultEnum
;
import
com.mortals.xhx.common.code.ProcessStatusEnum
;
import
com.mortals.xhx.common.key.RedisKey
;
import
com.mortals.xhx.common.pdu.HomeStatInfo
;
import
com.mortals.xhx.common.utils.BeanUtil
;
import
com.mortals.xhx.module.attendance.dao.AttendanceSummaryDao
;
import
com.mortals.xhx.module.attendance.model.AttendanceStaffStatEntity
;
import
com.mortals.xhx.module.attendance.model.AttendanceStaffStatQuery
;
import
com.mortals.xhx.module.attendance.model.AttendanceStatQuery
;
import
com.mortals.xhx.module.attendance.model.*
;
import
com.mortals.xhx.module.attendance.model.vo.AttendanceSummaryQuery
;
import
com.mortals.xhx.module.attendance.model.vo.ErrorSummaryVo
;
import
com.mortals.xhx.module.attendance.model.vo.LeaveSummaryVo
;
import
com.mortals.xhx.module.attendance.model.vo.VacationBalanceSummaryVo
;
import
com.mortals.xhx.module.attendance.service.AttendanceLeaveRecordService
;
import
com.mortals.xhx.module.attendance.service.AttendanceRecordService
;
import
com.mortals.xhx.module.attendance.service.AttendanceStaffStatService
;
import
com.mortals.xhx.module.dept.model.DeptQuery
;
import
com.mortals.xhx.module.dept.service.DeptService
;
import
com.mortals.xhx.module.holiday.model.HolidayEntity
;
import
com.mortals.xhx.module.holiday.model.HolidayQuery
;
import
com.mortals.xhx.module.holiday.service.HolidayService
;
import
com.mortals.xhx.module.staff.model.StaffQuery
;
import
com.mortals.xhx.module.staff.service.StaffService
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.cache.CacheProperties
;
import
org.springframework.stereotype.Service
;
import
com.mortals.framework.service.impl.AbstractCRUDServiceImpl
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.model.Context
;
import
com.mortals.xhx.module.attendance.dao.AttendanceStatDao
;
import
com.mortals.xhx.module.attendance.model.AttendanceStatEntity
;
import
com.mortals.xhx.module.attendance.service.AttendanceStatService
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.util.Arrays
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.List
;
...
...
@@ -52,6 +64,19 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
@Autowired
private
HolidayService
holidayService
;
@Autowired
private
StaffService
staffService
;
@Autowired
private
DeptService
deptService
;
@Autowired
private
AttendanceRecordService
recordService
;
@Autowired
private
AttendanceLeaveRecordService
leaveRecordService
;
@Autowired
private
ICacheService
cacheService
;
@Override
protected
void
findAfter
(
AttendanceStatEntity
entity
,
Context
context
,
List
<
AttendanceStatEntity
>
list
)
throws
AppException
{
// DateUtil.parse(entity.getStartTime()).year();
...
...
@@ -169,12 +194,12 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
holidayQuery
.
setStartTimeStart
(
query
.
getSummaryTime
());
holidayQuery
.
setStartTimeEnd
(
query
.
getSummaryTime
());
HolidayEntity
holidayEntity
=
holidayService
.
selectOne
(
holidayQuery
);
if
(
holidayEntity
!=
null
)
{
if
(
holidayEntity
.
getWorkorholiday
()==
0
)
{
if
(
holidayEntity
!=
null
)
{
if
(
holidayEntity
.
getWorkorholiday
()
==
0
)
{
//特定节假日
isReturn
=
true
;
}
}
else
{
}
else
{
//判断是否为周末
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
DateUtils
.
StrToDate
(
query
.
getSummaryTime
()));
...
...
@@ -189,7 +214,7 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
//当天不统计
isReturn
=
true
;
}
if
(
isReturn
)
{
if
(
isReturn
)
{
return
;
}
log
.
info
(
"开始汇总["
+
query
.
getSummaryTime
()
+
"]考勤....."
);
...
...
@@ -231,7 +256,7 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
if
(
temp
!=
null
)
{
BeanUtils
.
copyProperties
(
item
,
temp
,
BeanUtil
.
getNullPropertyNames
(
item
));
temp
.
setGoTimes
(
0
);
//默认只要有异常考勤,当天就不算全勤
if
(
item
.
getMorningTimes
()>
0
)
{
if
(
item
.
getMorningTimes
()
>
0
)
{
temp
.
setNonCompliancePunch
(
new
BigDecimal
(
item
.
getMorningTimes
()));
}
this
.
dao
.
update
(
temp
);
...
...
@@ -432,4 +457,120 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
return
result
;
}
@Override
public
void
homeStat
(
Context
context
)
throws
AppException
{
HomeStatInfo
homeStatInfo
=
new
HomeStatInfo
();
StaffQuery
staffQuery
=
new
StaffQuery
();
staffQuery
.
setStatusNotList
(
Arrays
.
asList
(
3
));
int
totalPersonNum
=
staffService
.
count
(
staffQuery
,
context
);
homeStatInfo
.
setTotalPersonNum
(
totalPersonNum
);
staffQuery
.
setSource
(
1
);
Integer
totalAttendPersonNum
=
staffService
.
count
(
staffQuery
,
context
);
int
totalDeptNum
=
deptService
.
count
(
new
DeptQuery
(),
context
);
homeStatInfo
.
setTotalDeptNum
(
totalDeptNum
);
AttendanceRecordHikQuery
hikQuery
=
new
AttendanceRecordHikQuery
();
/* hikQuery.setAttendanceDateStart(DateUtil.beginOfMonth(new Date()).toDateStr());
hikQuery.setAttendanceDateEnd(DateUtil.today()); */
hikQuery
.
setAttendanceDateStart
(
DateUtil
.
yesterday
().
toDateStr
());
hikQuery
.
setAttendanceDateEnd
(
DateUtil
.
yesterday
().
toDateStr
());
AttendanceRecordQuery
attendanceRecordQuery
=
new
AttendanceRecordQuery
();
// attendanceRecordQuery.setAttendanceDateStart(DateUtil.beginOfMonth(new Date()).toDateStr());
//attendanceRecordQuery.setAttendanceDateEnd(DateUtil.today());
attendanceRecordQuery
.
setAttendanceDateStart
(
DateUtil
.
yesterday
().
toDateStr
());
attendanceRecordQuery
.
setAttendanceDateEnd
(
DateUtil
.
yesterday
().
toDateStr
());
List
<
AttendanceRecordEntity
>
attendanceRecordEntities
=
recordService
.
find
(
attendanceRecordQuery
);
//获取当月打卡人数,如果存在
/* Long totalCache = cacheService.hget(RedisKey.KEY_ATTENC_TOTOAL_CACHE, DateUtil.format(new Date(), "yyyy-MM"), Long.class);
if (ObjectUtils.isEmpty(totalCache)) {
totalCache = recordHikService.find(hikQuery).parallelStream().map(item -> item.getStaffId()).distinct().count();
cacheService.hset(RedisKey.KEY_ATTENC_TOTOAL_CACHE, DateUtil.format(new Date(), "yyyy-MM"), totalCache);
}*/
/* Long totalCache = cacheService.hget(RedisKey.KEY_ATTENC_TOTOAL_CACHE, DateUtil.yesterday().toDateStr(), Long.class);
if (ObjectUtils.isEmpty(totalCache)) {
totalCache = recordHikService.find(hikQuery).parallelStream().map(item -> item.getStaffId()).distinct().count();
cacheService.hset(RedisKey.KEY_ATTENC_TOTOAL_CACHE, DateUtil.yesterday().toDateStr(), totalCache);
}*/
//迟到次数
long
beLate
=
attendanceRecordEntities
.
parallelStream
()
.
flatMap
(
item
->
item
.
getAttendanceRecordDetailList
().
stream
())
.
filter
(
f
->
GoWorkResultEnum
.
迟到
.
getValue
()
==
f
.
getGoWorkResult
()
||
OffWorkResultEnum
.
迟到
.
getValue
()
==
f
.
getOffWorkResult
())
.
map
(
i
->
i
.
getStaffId
())
.
distinct
()
.
count
();
//早退次数
long
leaveEarly
=
attendanceRecordEntities
.
parallelStream
()
.
flatMap
(
item
->
item
.
getAttendanceRecordDetailList
().
stream
())
.
filter
(
f
->
GoWorkResultEnum
.
早退
.
getValue
()
==
f
.
getGoWorkResult
()
||
OffWorkResultEnum
.
早退
.
getValue
()
==
f
.
getOffWorkResult
())
.
map
(
i
->
i
.
getStaffId
())
.
distinct
()
.
count
();
//缺卡次数
long
lackOfCards
=
attendanceRecordEntities
.
parallelStream
()
.
flatMap
(
item
->
item
.
getAttendanceRecordDetailList
().
stream
())
.
filter
(
f
->
GoWorkResultEnum
.
缺卡
.
getValue
()
==
f
.
getGoWorkResult
()
||
OffWorkResultEnum
.
缺卡
.
getValue
()
==
f
.
getOffWorkResult
())
.
map
(
i
->
i
.
getStaffId
())
.
distinct
()
.
count
();
/* AttendanceVacationRecordQuery vacationRecordQuery = new AttendanceVacationRecordQuery();
vacationRecordQuery.setCreateTimeStart(DateUtil.beginOfMonth(new Date()).toDateStr());
vacationRecordQuery.setCreateTimeEnd(DateUtil.today());
int levealPersonNum = vacationRecordService.count(vacationRecordQuery, getContext());*/
AttendanceLeaveRecordQuery
leaveRecordQuery
=
new
AttendanceLeaveRecordQuery
();
/* leaveRecordQuery.setCreateTimeStart(DateUtil.beginOfMonth(new Date()).toDateStr());
leaveRecordQuery.setCreateTimeEnd(DateUtil.today());*/
leaveRecordQuery
.
setCreateTimeStart
(
DateUtil
.
yesterday
().
toDateStr
());
leaveRecordQuery
.
setCreateTimeEnd
(
DateUtil
.
yesterday
().
toDateStr
());
leaveRecordQuery
.
setProcessStatus
(
ProcessStatusEnum
.
已处理
.
getValue
());
int
levealPersonNum
=
leaveRecordService
.
count
(
leaveRecordQuery
,
context
);
//总打卡记录
/* long totalAttend = attendanceRecordEntities.parallelStream().flatMap(item -> item.getAttendanceRecordDetailList().parallelStream()).count();
long lackOfCardsAttend = attendanceRecordEntities.parallelStream()
.flatMap(item -> item.getAttendanceRecordDetailList().stream())
.filter(f -> GoWorkResultEnum.缺卡.getValue() == f.getGoWorkResult() || OffWorkResultEnum.缺卡.getValue() == f.getOffWorkResult())
.count();*/
//异常考勤记录
//未考勤
// long noAtt=lackOfCards;
long
att
=
totalAttendPersonNum
-
lackOfCards
;
// long att = totalAttend - lackOfCardsAttend;
if
(
att
!=
0L
)
{
BigDecimal
bigDecimal
=
new
BigDecimal
(
att
).
divide
(
new
BigDecimal
(
totalAttendPersonNum
),
4
,
BigDecimal
.
ROUND_CEILING
).
multiply
(
new
BigDecimal
(
100
)).
setScale
(
2
,
BigDecimal
.
ROUND_CEILING
);
homeStatInfo
.
setAttendRadio
(
bigDecimal
.
toString
()
+
"%"
);
}
else
{
homeStatInfo
.
setAttendRadio
(
"0%"
);
}
homeStatInfo
.
setLevealPersonNum
(
levealPersonNum
);
homeStatInfo
.
setLatePersonNum
(
beLate
);
homeStatInfo
.
setLeftEarlyPersonNum
(
leaveEarly
);
homeStatInfo
.
setMissCardPersonNum
(
lackOfCards
);
homeStatInfo
.
setAttendPersonNum
(
totalAttendPersonNum
);
cacheService
.
set
(
RedisKey
.
KEY_HOME_STAT_CACHE
,
JSON
.
toJSONString
(
homeStatInfo
));
}
}
\ 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