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
27a725b9
Commit
27a725b9
authored
Aug 04, 2023
by
廖旭伟
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
考勤汇总
parent
202450cf
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
597 additions
and
4 deletions
+597
-4
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/dao/AttendanceSummaryDao.java
...rtals/xhx/module/attendance/dao/AttendanceSummaryDao.java
+35
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/dao/ibatis/AttendanceSummaryDaoImpl.java
...odule/attendance/dao/ibatis/AttendanceSummaryDaoImpl.java
+43
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/AttendanceSummaryQuery.java
...hx/module/attendance/model/vo/AttendanceSummaryQuery.java
+23
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/ErrorSummaryVo.java
...ortals/xhx/module/attendance/model/vo/ErrorSummaryVo.java
+42
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/LeaveSummaryVo.java
...ortals/xhx/module/attendance/model/vo/LeaveSummaryVo.java
+38
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/VacationBalanceSummaryVo.java
.../module/attendance/model/vo/VacationBalanceSummaryVo.java
+132
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/AttendanceStatService.java
.../xhx/module/attendance/service/AttendanceStatService.java
+7
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceStatServiceImpl.java
...le/attendance/service/impl/AttendanceStatServiceImpl.java
+113
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceStatController.java
...s/xhx/module/attendance/web/AttendanceStatController.java
+77
-4
attendance-performance-manager/src/main/resources/sqlmap/module/attendance/AttendanceSummaryMapper.xml
...rces/sqlmap/module/attendance/AttendanceSummaryMapper.xml
+87
-0
No files found.
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/dao/AttendanceSummaryDao.java
0 → 100644
View file @
27a725b9
package
com.mortals.xhx.module.attendance.dao
;
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
java.util.List
;
/***
* 考勤汇总
*/
public
interface
AttendanceSummaryDao
{
/**
* 汇总当前日期假期余额
* @param query
* @return
*/
List
<
VacationBalanceSummaryVo
>
getVacationBalanceSummary
(
AttendanceSummaryQuery
query
);
/**
* 汇总当前日期请假情况
* @param query
* @return
*/
List
<
LeaveSummaryVo
>
getLeaveSummary
(
AttendanceSummaryQuery
query
);
/**
* 汇总当前日期异常考勤
* @param query
* @return
*/
List
<
ErrorSummaryVo
>
getErrorSummary
(
AttendanceSummaryQuery
query
);
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/dao/ibatis/AttendanceSummaryDaoImpl.java
0 → 100644
View file @
27a725b9
package
com.mortals.xhx.module.attendance.dao.ibatis
;
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.dao.AttendanceSummaryDao
;
import
org.apache.ibatis.session.SqlSessionFactory
;
import
org.mybatis.spring.support.SqlSessionDaoSupport
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@Repository
(
"attendanceSummaryDao"
)
public
class
AttendanceSummaryDaoImpl
extends
SqlSessionDaoSupport
implements
AttendanceSummaryDao
{
protected
String
namespace
=
this
.
getClass
().
getName
();
@Autowired
public
void
setSqlSessionFactory
(
SqlSessionFactory
sqlSessionFactory
)
{
super
.
setSqlSessionFactory
(
sqlSessionFactory
);
}
protected
String
getSqlId
(
String
id
)
{
return
this
.
namespace
+
"."
+
id
;
}
@Override
public
List
<
VacationBalanceSummaryVo
>
getVacationBalanceSummary
(
AttendanceSummaryQuery
query
)
{
return
this
.
getSqlSession
().
selectList
(
this
.
getSqlId
(
"getVacationBalanceSummary"
),
query
);
}
@Override
public
List
<
LeaveSummaryVo
>
getLeaveSummary
(
AttendanceSummaryQuery
query
)
{
return
this
.
getSqlSession
().
selectList
(
this
.
getSqlId
(
"getLeaveSummary"
),
query
);
}
@Override
public
List
<
ErrorSummaryVo
>
getErrorSummary
(
AttendanceSummaryQuery
query
)
{
return
this
.
getSqlSession
().
selectList
(
this
.
getSqlId
(
"getErrorSummary"
),
query
);
}
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/AttendanceSummaryQuery.java
0 → 100644
View file @
27a725b9
package
com.mortals.xhx.module.attendance.model.vo
;
import
lombok.Data
;
/**
* 考勤汇总查询对象
*/
@Data
public
class
AttendanceSummaryQuery
{
/** 汇总日期 yyyy-mm-dd */
private
String
summaryTime
;
private
String
summaryTimeStart
;
private
String
summaryTimeEnd
;
public
AttendanceSummaryQuery
(
String
summaryTime
){
this
.
summaryTime
=
summaryTime
;
}
public
AttendanceSummaryQuery
(){
}
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/ErrorSummaryVo.java
0 → 100644
View file @
27a725b9
package
com.mortals.xhx.module.attendance.model.vo
;
import
lombok.Data
;
/**
* 考勤异常汇总
*/
@Data
public
class
ErrorSummaryVo
{
/**
* 员工ID
*/
private
Long
staffId
;
/**
* 员工姓名
*/
private
String
staffName
;
/**
* 年
*/
private
Integer
year
;
/**
* 月
*/
private
Integer
month
;
/**
* 日
*/
private
Integer
day
;
/**
* 缺卡次数
*/
private
Integer
morningTimes
;
/**
* 考勤汇总-迟到(次)
*/
private
Integer
lateTimes
;
/**
* 考勤汇总-早退(次)
*/
private
Integer
overtimeTimes
;
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/LeaveSummaryVo.java
0 → 100644
View file @
27a725b9
package
com.mortals.xhx.module.attendance.model.vo
;
import
lombok.Data
;
/**
* 请假汇总
*/
@Data
public
class
LeaveSummaryVo
{
/**
* 员工ID
*/
private
Long
staffId
;
/**
* 员工姓名
*/
private
String
staffName
;
/**
* 年
*/
private
Integer
year
;
/**
* 月
*/
private
Integer
month
;
/**
* 日
*/
private
Integer
day
;
/**
* 请假类型(1.事假,2.调休,3.病假,4.年假,5.产假,6.陪产假,7.婚假,8.例假,9.哺乳假,10.丧假,11.回单位,12.因公请假,13.外出勘验,14.值班补班,15.体检,16.隔离,17.因公外出,18.公休,19.育儿假,20.调回单位,21.探亲假)
*/
private
Integer
leaveType
;
/**
* 时长,单位秒
*/
private
Integer
duration
;
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/VacationBalanceSummaryVo.java
0 → 100644
View file @
27a725b9
package
com.mortals.xhx.module.attendance.model.vo
;
import
lombok.Data
;
import
java.math.BigDecimal
;
/**
* 假期余额汇总
*/
@Data
public
class
VacationBalanceSummaryVo
{
/**
* 员工ID
*/
private
Long
staffId
;
/**
* 员工姓名
*/
private
String
staffName
;
/**
* 所属部门
*/
private
Long
deptId
;
/**
* 所属部门名称
*/
private
String
deptName
;
/**
* 工号
*/
private
String
workNum
;
/**
* 联系电话
*/
private
String
phoneNumber
;
/**
* 年
*/
private
Integer
year
;
/**
* 月
*/
private
Integer
month
;
/**
* 日
*/
private
Integer
day
;
/**
* 事假(天)
*/
private
BigDecimal
personalLeaveDays
;
/**
* 调休(天)
*/
private
BigDecimal
compensatedLeaveDays
;
/**
* 病假(天)
*/
private
BigDecimal
sickLeaveDays
;
/**
* 年假(天)
*/
private
BigDecimal
annualLeaveDays
;
/**
* 婚假(天)
*/
private
BigDecimal
marriageLeaveDays
;
/**
* 产假(天)
*/
private
BigDecimal
maternityLeaveDays
;
/**
* 陪产假(天)
*/
private
BigDecimal
paternityLeaveDays
;
/**
* 例假(天)
*/
private
BigDecimal
menstrualLeaveDays
;
/**
* 哺乳假(天)
*/
private
BigDecimal
breastfeedingLeaveDays
;
/**
* 丧假(天)
*/
private
BigDecimal
bereavementLeaveDays
;
/**
* 回单位(天)
*/
private
BigDecimal
backToUnit
;
/**
* 因公请假(天)
*/
private
BigDecimal
onDutyLeave
;
/**
* 外出勘验(天)
*/
private
BigDecimal
outOfOffice
;
/**
* 值班补班(天)
*/
private
BigDecimal
shiftCompensation
;
/**
* 体检(天)
*/
private
BigDecimal
physicalExamination
;
/**
* 隔离(天)
*/
private
BigDecimal
quarantine
;
/**
* 因公外出(与窗口工作无关/天)
*/
private
BigDecimal
businessTrip
;
/**
* 公休(天)
*/
private
BigDecimal
publicHoliday
;
/**
* 育儿假(天)
*/
private
BigDecimal
childRearingLeave
;
/**
* 调回单位(或离职/天)
*/
private
BigDecimal
transferBack
;
/**
* 探亲假(天)
*/
private
BigDecimal
homeLeave
;
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/AttendanceStatService.java
View file @
27a725b9
package
com.mortals.xhx.module.attendance.service
;
package
com.mortals.xhx.module.attendance.service
;
import
com.mortals.framework.service.ICRUDService
;
import
com.mortals.framework.service.ICRUDService
;
import
com.mortals.xhx.module.attendance.model.AttendanceStatEntity
;
import
com.mortals.xhx.module.attendance.model.AttendanceStatEntity
;
import
com.mortals.xhx.module.attendance.model.vo.AttendanceSummaryQuery
;
/**
/**
* AttendanceStatService
* AttendanceStatService
*
*
...
@@ -11,4 +13,9 @@ import com.mortals.xhx.module.attendance.model.AttendanceStatEntity;
...
@@ -11,4 +13,9 @@ import com.mortals.xhx.module.attendance.model.AttendanceStatEntity;
*/
*/
public
interface
AttendanceStatService
extends
ICRUDService
<
AttendanceStatEntity
,
Long
>{
public
interface
AttendanceStatService
extends
ICRUDService
<
AttendanceStatEntity
,
Long
>{
/**
* 生成考勤汇总数据
* @param query
*/
void
doAttendanceSummary
(
AttendanceSummaryQuery
query
);
}
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceStatServiceImpl.java
View file @
27a725b9
package
com.mortals.xhx.module.attendance.service.impl
;
package
com.mortals.xhx.module.attendance.service.impl
;
import
com.mortals.framework.model.PageInfo
;
import
com.mortals.framework.model.PageInfo
;
import
com.mortals.framework.util.DateUtils
;
import
com.mortals.framework.util.StringUtils
;
import
com.mortals.xhx.common.code.LeaveTypeEnum
;
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.AttendanceStaffStatEntity
;
import
com.mortals.xhx.module.attendance.model.AttendanceStaffStatQuery
;
import
com.mortals.xhx.module.attendance.model.AttendanceStaffStatQuery
;
import
com.mortals.xhx.module.attendance.model.AttendanceStatQuery
;
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.AttendanceStaffStatService
;
import
com.mortals.xhx.module.attendance.service.AttendanceStaffStatService
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
com.mortals.framework.service.impl.AbstractCRUDServiceImpl
;
import
com.mortals.framework.service.impl.AbstractCRUDServiceImpl
;
...
@@ -13,6 +25,8 @@ import com.mortals.xhx.module.attendance.dao.AttendanceStatDao;
...
@@ -13,6 +25,8 @@ import com.mortals.xhx.module.attendance.dao.AttendanceStatDao;
import
com.mortals.xhx.module.attendance.model.AttendanceStatEntity
;
import
com.mortals.xhx.module.attendance.model.AttendanceStatEntity
;
import
com.mortals.xhx.module.attendance.service.AttendanceStatService
;
import
com.mortals.xhx.module.attendance.service.AttendanceStatService
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
/**
/**
...
@@ -26,6 +40,8 @@ import java.util.List;
...
@@ -26,6 +40,8 @@ import java.util.List;
public
class
AttendanceStatServiceImpl
extends
AbstractCRUDServiceImpl
<
AttendanceStatDao
,
AttendanceStatEntity
,
Long
>
implements
AttendanceStatService
{
public
class
AttendanceStatServiceImpl
extends
AbstractCRUDServiceImpl
<
AttendanceStatDao
,
AttendanceStatEntity
,
Long
>
implements
AttendanceStatService
{
@Autowired
@Autowired
private
AttendanceStaffStatService
attendanceStaffStatService
;
private
AttendanceStaffStatService
attendanceStaffStatService
;
@Autowired
private
AttendanceSummaryDao
attendanceSummaryDao
;
@Override
@Override
protected
void
findAfter
(
AttendanceStatEntity
entity
,
Context
context
,
List
<
AttendanceStatEntity
>
list
)
throws
AppException
{
protected
void
findAfter
(
AttendanceStatEntity
entity
,
Context
context
,
List
<
AttendanceStatEntity
>
list
)
throws
AppException
{
...
@@ -122,4 +138,101 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
...
@@ -122,4 +138,101 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
});
});
super
.
findAfter
(
params
,
pageInfo
,
context
,
list
);
super
.
findAfter
(
params
,
pageInfo
,
context
,
list
);
}
}
@Override
public
void
doAttendanceSummary
(
AttendanceSummaryQuery
query
)
{
try
{
long
currentTime
=
System
.
currentTimeMillis
();
if
(
query
==
null
)
{
query
=
new
AttendanceSummaryQuery
(
DateUtils
.
getCurrStrDate
());
}
if
(
StringUtils
.
isEmpty
(
query
.
getSummaryTime
()))
{
query
.
setSummaryTime
(
DateUtils
.
getCurrStrDate
());
}
log
.
info
(
"开始汇总["
+
query
.
getSummaryTime
()
+
"]考勤....."
);
//汇总当前日期假期余额
List
<
VacationBalanceSummaryVo
>
vacationBalanceSummaryVoList
=
attendanceSummaryDao
.
getVacationBalanceSummary
(
query
);
if
(
CollectionUtils
.
isNotEmpty
(
vacationBalanceSummaryVoList
))
{
for
(
VacationBalanceSummaryVo
item
:
vacationBalanceSummaryVoList
)
{
AttendanceStatEntity
temp
=
this
.
selectOne
(
new
AttendanceStatQuery
().
staffId
(
item
.
getStaffId
()).
year
(
item
.
getYear
()).
month
(
item
.
getMonth
()).
day
(
item
.
getDay
()));
if
(
temp
==
null
)
{
AttendanceStatEntity
attendanceStatEntity
=
new
AttendanceStatEntity
();
attendanceStatEntity
.
initAttrValue
();
BeanUtils
.
copyProperties
(
item
,
attendanceStatEntity
,
BeanUtil
.
getNullPropertyNames
(
item
));
attendanceStatEntity
.
setCreateTime
(
new
Date
());
attendanceStatEntity
.
setCreateUserId
(
1
l
);
this
.
dao
.
insert
(
attendanceStatEntity
);
}
else
{
BeanUtils
.
copyProperties
(
item
,
temp
,
BeanUtil
.
getNullPropertyNames
(
item
));
this
.
dao
.
update
(
temp
);
}
}
}
log
.
info
(
"完成汇总当前日期假期余额....."
);
//汇总当前日期请假情况
List
<
LeaveSummaryVo
>
leaveSummaryVoList
=
attendanceSummaryDao
.
getLeaveSummary
(
query
);
if
(
CollectionUtils
.
isNotEmpty
(
leaveSummaryVoList
))
{
BigDecimal
hour
=
new
BigDecimal
(
3600
);
for
(
LeaveSummaryVo
item
:
leaveSummaryVoList
)
{
AttendanceStatEntity
temp
=
this
.
selectOne
(
new
AttendanceStatQuery
().
staffId
(
item
.
getStaffId
()).
year
(
item
.
getYear
()).
month
(
item
.
getMonth
()).
day
(
item
.
getDay
()));
if
(
temp
!=
null
)
{
BigDecimal
leaveTime
=
new
BigDecimal
(
item
.
getDuration
()).
divide
(
hour
,
1
,
BigDecimal
.
ROUND_HALF_DOWN
);
LeaveTypeEnum
leaveTypeEnum
=
LeaveTypeEnum
.
getByValue
(
item
.
getLeaveType
());
switch
(
leaveTypeEnum
)
{
case
事假:
temp
.
setPersonalLeave
(
leaveTime
);
break
;
case
调休:
temp
.
setCompensatedLeaveDays
(
leaveTime
);
break
;
case
病假:
temp
.
setSickLeave
(
leaveTime
);
break
;
case
年假:
temp
.
setAnnualLeaveDays
(
leaveTime
);
break
;
case
产假:
temp
.
setMaternityLeave
(
leaveTime
);
break
;
case
陪产假:
temp
.
setPaternityLeaveDays
(
leaveTime
);
break
;
case
婚假:
temp
.
setMarriageLeave
(
leaveTime
);
break
;
case
例假:
temp
.
setMenstrualLeaveDays
(
leaveTime
);
break
;
case
哺乳假:
temp
.
setBreastfeedingLeaveDays
(
leaveTime
);
break
;
case
丧假:
temp
.
setFuneralLeave
(
leaveTime
);
break
;
default
:
temp
.
setPersonalLeave
(
leaveTime
);
break
;
}
this
.
dao
.
update
(
temp
);
}
}
}
log
.
info
(
"完成汇总当前日期请假情况....."
);
//汇总当前日期异常考勤
List
<
ErrorSummaryVo
>
errorSummaryVoList
=
attendanceSummaryDao
.
getErrorSummary
(
query
);
if
(
CollectionUtils
.
isNotEmpty
(
errorSummaryVoList
))
{
for
(
ErrorSummaryVo
item
:
errorSummaryVoList
)
{
AttendanceStatEntity
temp
=
this
.
selectOne
(
new
AttendanceStatQuery
().
staffId
(
item
.
getStaffId
()).
year
(
item
.
getYear
()).
month
(
item
.
getMonth
()).
day
(
item
.
getDay
()));
if
(
temp
!=
null
)
{
BeanUtils
.
copyProperties
(
item
,
temp
,
BeanUtil
.
getNullPropertyNames
(
item
));
this
.
dao
.
update
(
temp
);
}
}
}
log
.
info
(
"完成汇总当前日期异常考勤....."
);
log
.
info
(
"日期:"
+
query
.
getSummaryTime
()
+
",考勤汇总执行完成,耗时:"
+
(
System
.
currentTimeMillis
()
-
currentTime
)
+
"毫秒...."
);
}
catch
(
Exception
e
){
log
.
error
(
"考勤汇总出错"
,
e
);
}
}
}
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceStatController.java
View file @
27a725b9
package
com.mortals.xhx.module.attendance.web
;
package
com.mortals.xhx.module.attendance.web
;
import
com.mortals.framework.annotation.UnAuth
;
import
com.mortals.framework.common.Rest
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.model.PageInfo
;
import
com.mortals.framework.model.Result
;
import
com.mortals.framework.service.ICacheService
;
import
com.mortals.framework.web.BaseCRUDJsonBodyMappingController
;
import
com.mortals.framework.web.BaseCRUDJsonBodyMappingController
;
import
com.mortals.xhx.base.system.param.service.ParamService
;
import
com.mortals.xhx.base.system.param.service.ParamService
;
import
com.mortals.xhx.module.attendance.model.AttendanceClassQuery
;
import
com.mortals.xhx.module.attendance.model.AttendanceClassQuery
;
import
com.mortals.xhx.module.attendance.model.AttendanceGroupQuery
;
import
com.mortals.xhx.module.attendance.model.AttendanceGroupQuery
;
import
com.mortals.xhx.module.attendance.model.vo.AttendanceSummaryQuery
;
import
com.mortals.xhx.module.attendance.service.AttendanceClassService
;
import
com.mortals.xhx.module.attendance.service.AttendanceClassService
;
import
com.mortals.xhx.module.attendance.service.AttendanceGroupService
;
import
com.mortals.xhx.module.attendance.service.AttendanceGroupService
;
import
com.mortals.xhx.module.dept.model.DeptQuery
;
import
com.mortals.xhx.module.dept.model.DeptQuery
;
import
com.mortals.xhx.module.dept.service.DeptService
;
import
com.mortals.xhx.module.dept.service.DeptService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
...
@@ -19,12 +27,14 @@ import com.mortals.xhx.module.attendance.model.AttendanceStatEntity;
...
@@ -19,12 +27,14 @@ import com.mortals.xhx.module.attendance.model.AttendanceStatEntity;
import
com.mortals.xhx.module.attendance.service.AttendanceStatService
;
import
com.mortals.xhx.module.attendance.service.AttendanceStatService
;
import
org.apache.commons.lang3.ArrayUtils
;
import
org.apache.commons.lang3.ArrayUtils
;
import
com.mortals.framework.util.StringUtils
;
import
com.mortals.framework.util.StringUtils
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.time.LocalDate
;
import
java.util.Map
;
import
java.time.format.DateTimeFormatter
;
import
java.util.*
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
java.util.Arrays
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartFile
;
import
static
com
.
mortals
.
framework
.
ap
.
SysConstains
.*;
import
static
com
.
mortals
.
framework
.
ap
.
SysConstains
.*;
...
@@ -48,6 +58,9 @@ public class AttendanceStatController extends BaseCRUDJsonBodyMappingController<
...
@@ -48,6 +58,9 @@ public class AttendanceStatController extends BaseCRUDJsonBodyMappingController<
@Autowired
@Autowired
private
DeptService
deptService
;
private
DeptService
deptService
;
@Autowired
private
ICacheService
cacheService
;
@Autowired
@Autowired
private
AttendanceClassService
attendanceClassService
;
private
AttendanceClassService
attendanceClassService
;
...
@@ -55,6 +68,10 @@ public class AttendanceStatController extends BaseCRUDJsonBodyMappingController<
...
@@ -55,6 +68,10 @@ public class AttendanceStatController extends BaseCRUDJsonBodyMappingController<
super
.
setModuleDesc
(
"考勤汇总信息"
);
super
.
setModuleDesc
(
"考勤汇总信息"
);
}
}
private
ExecutorService
executorService
=
Executors
.
newCachedThreadPool
();
private
static
String
SUMMARY_TASK_KEY
=
"attendanceSummaryTask:run"
;
@Override
@Override
protected
void
init
(
Map
<
String
,
Object
>
model
,
Context
context
)
{
protected
void
init
(
Map
<
String
,
Object
>
model
,
Context
context
)
{
this
.
addDict
(
model
,
"deptId"
,
deptService
.
find
(
new
DeptQuery
()).
stream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getId
().
toString
(),
y
->
y
.
getDeptName
())));
this
.
addDict
(
model
,
"deptId"
,
deptService
.
find
(
new
DeptQuery
()).
stream
().
collect
(
Collectors
.
toMap
(
x
->
x
.
getId
().
toString
(),
y
->
y
.
getDeptName
())));
...
@@ -63,5 +80,61 @@ public class AttendanceStatController extends BaseCRUDJsonBodyMappingController<
...
@@ -63,5 +80,61 @@ public class AttendanceStatController extends BaseCRUDJsonBodyMappingController<
super
.
init
(
model
,
context
);
super
.
init
(
model
,
context
);
}
}
@PostMapping
({
"summary"
})
@UnAuth
public
Rest
<
Object
>
summary
(
@RequestBody
AttendanceSummaryQuery
query
)
{
Rest
<
Object
>
ret
=
new
Rest
();
Map
<
String
,
Object
>
model
=
new
HashMap
();
Context
context
=
this
.
getContext
();
String
busiDesc
=
"执行考勤汇总任务"
;
int
code
=
1
;
try
{
String
verify
=
cacheService
.
get
(
SUMMARY_TASK_KEY
);
if
(
StringUtils
.
isNotEmpty
(
verify
)&&
verify
.
equals
(
"true"
)){
throw
new
AppException
(
"汇总任务正在执行,请勿重复操作"
);
}
executorService
.
submit
(
new
Runnable
()
{
@Override
public
void
run
()
{
cacheService
.
setnx
(
SUMMARY_TASK_KEY
,
"true"
,
3600
);
if
(
StringUtils
.
isNotEmpty
(
query
.
getSummaryTimeStart
())
&&
StringUtils
.
isNotEmpty
(
query
.
getSummaryTimeEnd
())){
List
<
String
>
dateList
=
getDatesBetween
(
query
.
getSummaryTimeStart
(),
query
.
getSummaryTimeEnd
());
for
(
String
day:
dateList
){
AttendanceSummaryQuery
temp
=
new
AttendanceSummaryQuery
(
day
);
service
.
doAttendanceSummary
(
temp
);
}
}
else
{
service
.
doAttendanceSummary
(
query
);
}
}
});
cacheService
.
setnx
(
SUMMARY_TASK_KEY
,
"false"
,
60
);
model
.
put
(
"message_info"
,
"开始执行考勤汇总,请稍后查看"
);
}
catch
(
Exception
var9
)
{
code
=
-
1
;
this
.
doException
(
this
.
request
,
busiDesc
,
model
,
var9
);
}
ret
.
setCode
(
code
);
ret
.
setMsg
(
model
.
get
(
"message_info"
)
==
null
?
""
:
model
.
remove
(
"message_info"
).
toString
());
return
ret
;
}
public
static
List
<
String
>
getDatesBetween
(
String
startDateStr
,
String
endDateStr
)
{
DateTimeFormatter
formatter
=
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd"
);
LocalDate
startDate
=
LocalDate
.
parse
(
startDateStr
,
formatter
);
LocalDate
endDate
=
LocalDate
.
parse
(
endDateStr
,
formatter
);
List
<
String
>
dates
=
new
ArrayList
<>();
//这里是判断开始日期是否在结束日期之后或者=结束日期
while
(
startDate
.
isBefore
(
endDate
)
||
startDate
.
isEqual
(
endDate
))
{
String
add
=
startDate
.
format
(
formatter
);
dates
.
add
(
add
);
startDate
=
startDate
.
plusDays
(
1
);
}
return
dates
;
}
public
static
void
main
(
String
[]
args
){
List
<
String
>
sss
=
getDatesBetween
(
"2023-07-28"
,
"2023-08-04"
);
System
.
out
.
println
(
sss
);
}
}
}
attendance-performance-manager/src/main/resources/sqlmap/module/attendance/AttendanceSummaryMapper.xml
0 → 100644
View file @
27a725b9
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"mybatis-3-mapper.dtd">
<mapper
namespace=
"com.mortals.xhx.module.attendance.dao.ibatis.AttendanceSummaryDaoImpl"
>
<!-- 汇总当前日期假期余额 -->
<select
id=
"getVacationBalanceSummary"
parameterType=
"com.mortals.xhx.module.attendance.model.vo.AttendanceSummaryQuery"
resultType=
"com.mortals.xhx.module.attendance.model.vo.VacationBalanceSummaryVo"
>
SELECT
s.id AS staffId,
s.`name` AS staffName,
s.phoneNumber,
s.workNum,
s.deptId,
s.deptName,
DATE_FORMAT(STR_TO_DATE(#{summaryTime},'%Y-%m-%d'),'%Y') as `year`,
DATE_FORMAT(STR_TO_DATE(#{summaryTime},'%Y-%m-%d'),'%m') as `month`,
DATE_FORMAT(STR_TO_DATE(#{summaryTime},'%Y-%m-%d'),'%d') as `day`,
IFNULL(b.personalLeaveDays,0) as personalLeaveDays,
IFNULL(b.compensatedLeaveDays,0) as compensatedLeaveDays,
IFNULL(b.sickLeaveDays,0) as sickLeaveDays,
IFNULL(b.annualLeaveDays,0) as annualLeaveDays,
IFNULL(b.marriageLeaveDays,0) as marriageLeaveDays,
IFNULL(b.maternityLeaveDays,0) as maternityLeaveDays,
IFNULL(b.paternityLeaveDays,0) as paternityLeaveDays,
IFNULL(b.menstrualLeaveDays,0) as menstrualLeaveDays,
IFNULL(b.breastfeedingLeaveDays,0) as breastfeedingLeaveDays,
IFNULL(b.bereavementLeaveDays,0) as bereavementLeaveDays,
IFNULL(b.backToUnit,0) as backToUnit,
IFNULL(b.onDutyLeave,0) as onDutyLeave,
IFNULL(b.outOfOffice,0) as outOfOffice,
IFNULL(b.shiftCompensation,0) as shiftCompensation,
IFNULL(b.physicalExamination,0) as physicalExamination,
IFNULL(b.quarantine,0) as quarantine,
IFNULL(b.businessTrip,0) as businessTrip,
IFNULL(b.publicHoliday,0) as publicHoliday,
IFNULL(b.childRearingLeave,0) as childRearingLeave,
IFNULL(b.transferBack,0) as transferBack,
IFNULL(b.homeLeave,0) as homeLeave
FROM
mortals_xhx_staff s
LEFT JOIN mortals_xhx_attendance_vacation_balance b ON s.id = b.staffId
</select>
<!-- 汇总当前日期请假情况 -->
<select
id=
"getLeaveSummary"
parameterType=
"com.mortals.xhx.module.attendance.model.vo.AttendanceSummaryQuery"
resultType=
"com.mortals.xhx.module.attendance.model.vo.LeaveSummaryVo"
>
SELECT
leavePersonId AS staffId,
leavePerson AS staffName,
leaveType,
IFNULL(sum(duration),0) as duration,
ANY_VALUE(DATE_FORMAT(STR_TO_DATE(#{summaryTime},'%Y-%m-%d'),'%Y')) as `year`,
ANY_VALUE(DATE_FORMAT(STR_TO_DATE(#{summaryTime},'%Y-%m-%d'),'%m')) as `month`,
ANY_VALUE(DATE_FORMAT(STR_TO_DATE(#{summaryTime},'%Y-%m-%d'),'%d')) as `day`
FROM
mortals_xhx_attendance_leave_record
WHERE
auditResult = 1
AND processStatus = 2
AND STR_TO_DATE(date_format(startTime,'%Y-%m-%d'),'%Y-%m-%d')
<![CDATA[ >= ]]>
STR_TO_DATE(#{summaryTime},'%Y-%m-%d')
AND STR_TO_DATE(date_format(endTime,'%Y-%m-%d'),'%Y-%m-%d')
<![CDATA[ <= ]]>
STR_TO_DATE(#{summaryTime},'%Y-%m-%d')
GROUP BY leavePersonId,leavePerson,leaveType
</select>
<!-- 汇总当前日期异常考勤 -->
<select
id=
"getErrorSummary"
parameterType=
"com.mortals.xhx.module.attendance.model.vo.AttendanceSummaryQuery"
resultType=
"com.mortals.xhx.module.attendance.model.vo.ErrorSummaryVo"
>
select
e.staffId,
e.staffName,
ANY_VALUE(DATE_FORMAT(errorDateTime,'%Y')) as `year`,
ANY_VALUE(DATE_FORMAT(errorDateTime,'%m')) as `month`,
ANY_VALUE(DATE_FORMAT(errorDateTime,'%d')) as `day`,
sum(case errorStatus when 0 then 1 ELSE 0 end) as afternoonTimes,
sum(case errorStatus when 1 then 1 ELSE 0 end) as overtimeTimes,
sum(case errorStatus when 2 then 1 ELSE 0 end) as lateTimes
from
mortals_xhx_attendance_record_error e
where
processStatus = 1
and errorStatus != 4
and e.errorDateTime
<![CDATA[ >= ]]>
STR_TO_DATE(left(concat(#{summaryTime},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
and e.errorDateTime
<![CDATA[ <= ]]>
STR_TO_DATE(left(concat(#{summaryTime},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
group by
e.staffId,
e.staffName
</select>
</mapper>
\ 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