Commit 55415e8b authored by 廖旭伟's avatar 廖旭伟

考勤汇总时不统计已离职的员工

parent 992a5e30
...@@ -2,6 +2,8 @@ package com.mortals.xhx.module.attendance.model.vo; ...@@ -2,6 +2,8 @@ package com.mortals.xhx.module.attendance.model.vo;
import lombok.Data; import lombok.Data;
import java.util.Date;
/** /**
* 考勤异常汇总 * 考勤异常汇总
*/ */
...@@ -40,4 +42,12 @@ public class ErrorSummaryVo { ...@@ -40,4 +42,12 @@ public class ErrorSummaryVo {
* 考勤汇总-早退(次) * 考勤汇总-早退(次)
*/ */
private Integer overtimeTimes; private Integer overtimeTimes;
/**
* 员工状态(1.正式,2.试用,3.离职)
*/
private Integer status;
/**
* 离职时间
*/
private Date leaveDate;
} }
...@@ -46,4 +46,12 @@ public class LeaveSummaryVo { ...@@ -46,4 +46,12 @@ public class LeaveSummaryVo {
* 结束时间 * 结束时间
*/ */
private Date endTime; private Date endTime;
/**
* 员工状态(1.正式,2.试用,3.离职)
*/
private Integer status;
/**
* 离职时间
*/
private Date leaveDate;
} }
...@@ -3,6 +3,7 @@ package com.mortals.xhx.module.attendance.model.vo; ...@@ -3,6 +3,7 @@ package com.mortals.xhx.module.attendance.model.vo;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
/** /**
* 假期余额汇总 * 假期余额汇总
...@@ -129,4 +130,12 @@ public class VacationBalanceSummaryVo { ...@@ -129,4 +130,12 @@ public class VacationBalanceSummaryVo {
* 探亲假(天) * 探亲假(天)
*/ */
private BigDecimal homeLeave; private BigDecimal homeLeave;
/**
* 员工状态(1.正式,2.试用,3.离职)
*/
private Integer status;
/**
* 离职时间
*/
private Date leaveDate;
} }
...@@ -8,10 +8,7 @@ import com.mortals.framework.model.Result; ...@@ -8,10 +8,7 @@ import com.mortals.framework.model.Result;
import com.mortals.framework.service.ICacheService; import com.mortals.framework.service.ICacheService;
import com.mortals.framework.util.DateUtils; import com.mortals.framework.util.DateUtils;
import com.mortals.framework.util.StringUtils; import com.mortals.framework.util.StringUtils;
import com.mortals.xhx.common.code.GoWorkResultEnum; import com.mortals.xhx.common.code.*;
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.key.RedisKey;
import com.mortals.xhx.common.pdu.HomeStatInfo; import com.mortals.xhx.common.pdu.HomeStatInfo;
import com.mortals.xhx.common.utils.BeanUtil; import com.mortals.xhx.common.utils.BeanUtil;
...@@ -225,6 +222,19 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc ...@@ -225,6 +222,19 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
List<VacationBalanceSummaryVo> vacationBalanceSummaryVoList = attendanceSummaryDao.getVacationBalanceSummary(query); List<VacationBalanceSummaryVo> vacationBalanceSummaryVoList = attendanceSummaryDao.getVacationBalanceSummary(query);
if (CollectionUtils.isNotEmpty(vacationBalanceSummaryVoList)) { if (CollectionUtils.isNotEmpty(vacationBalanceSummaryVoList)) {
for (VacationBalanceSummaryVo item : vacationBalanceSummaryVoList) { for (VacationBalanceSummaryVo item : vacationBalanceSummaryVoList) {
if(item.getStatus() == StaffSatusEnum.离职.getValue()){
//离职状态时判断当前汇总日期是否在离职后
if(item.getLeaveDate()!=null){
String leaveDateStr = DateUtils.getStrDate(item.getLeaveDate());
if(DateUtils.StrToDate(leaveDateStr).compareTo(DateUtils.StrToDate(query.getSummaryTime())) < 0){
//离职日期在统计日期之前不统计
continue;
}
}else {
//没有离职日期也不统计
continue;
}
}
AttendanceStatEntity temp = this.selectOne(new AttendanceStatQuery().staffId(item.getStaffId()).year(item.getYear()).month(item.getMonth()).day(item.getDay())); AttendanceStatEntity temp = this.selectOne(new AttendanceStatQuery().staffId(item.getStaffId()).year(item.getYear()).month(item.getMonth()).day(item.getDay()));
if (temp == null) { if (temp == null) {
AttendanceStatEntity attendanceStatEntity = new AttendanceStatEntity(); AttendanceStatEntity attendanceStatEntity = new AttendanceStatEntity();
...@@ -255,6 +265,19 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc ...@@ -255,6 +265,19 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
List<ErrorSummaryVo> errorSummaryVoList = attendanceSummaryDao.getErrorSummary(query); List<ErrorSummaryVo> errorSummaryVoList = attendanceSummaryDao.getErrorSummary(query);
if (CollectionUtils.isNotEmpty(errorSummaryVoList)) { if (CollectionUtils.isNotEmpty(errorSummaryVoList)) {
for (ErrorSummaryVo item : errorSummaryVoList) { for (ErrorSummaryVo item : errorSummaryVoList) {
if(item.getStatus() == StaffSatusEnum.离职.getValue()){
//离职状态时判断当前汇总日期是否在离职后
if(item.getLeaveDate()!=null){
String leaveDateStr = DateUtils.getStrDate(item.getLeaveDate());
if(DateUtils.StrToDate(leaveDateStr).compareTo(DateUtils.StrToDate(query.getSummaryTime())) < 0){
//离职日期在统计日期之前不统计
continue;
}
}else {
//没有离职日期也不统计
continue;
}
}
AttendanceStatEntity temp = this.selectOne(new AttendanceStatQuery().staffId(item.getStaffId()).year(item.getYear()).month(item.getMonth()).day(item.getDay())); AttendanceStatEntity temp = this.selectOne(new AttendanceStatQuery().staffId(item.getStaffId()).year(item.getYear()).month(item.getMonth()).day(item.getDay()));
if (temp != null) { if (temp != null) {
BeanUtils.copyProperties(item, temp, BeanUtil.getNullPropertyNames(item)); BeanUtils.copyProperties(item, temp, BeanUtil.getNullPropertyNames(item));
...@@ -314,6 +337,19 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc ...@@ -314,6 +337,19 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
BigDecimal day = new BigDecimal(3600 * 8); //一天按8小时折算 BigDecimal day = new BigDecimal(3600 * 8); //一天按8小时折算
BigDecimal oneDay = new BigDecimal(1); BigDecimal oneDay = new BigDecimal(1);
for (LeaveSummaryVo item : leaveSummaryVoList) { for (LeaveSummaryVo item : leaveSummaryVoList) {
if(item.getStatus() == StaffSatusEnum.离职.getValue()){
//离职状态时判断当前汇总日期是否在离职后
if(item.getLeaveDate()!=null){
String leaveDateStr = DateUtils.getStrDate(item.getLeaveDate());
if(DateUtils.StrToDate(leaveDateStr).compareTo(DateUtils.StrToDate(query.getSummaryTime())) < 0){
//离职日期在统计日期之前不统计
continue;
}
}else {
//没有离职日期也不统计
continue;
}
}
String attendanceSummary = ""; String attendanceSummary = "";
AttendanceStatEntity temp = this.selectOne(new AttendanceStatQuery().staffId(item.getStaffId()).year(item.getYear()).month(item.getMonth()).day(item.getDay())); AttendanceStatEntity temp = this.selectOne(new AttendanceStatQuery().staffId(item.getStaffId()).year(item.getYear()).month(item.getMonth()).day(item.getDay()));
if (temp != null) { if (temp != null) {
......
...@@ -12,6 +12,8 @@ ...@@ -12,6 +12,8 @@
s.workNum, s.workNum,
s.deptId, s.deptId,
s.deptName, s.deptName,
s.`status`,
s.leaveDate,
DATE_FORMAT(STR_TO_DATE(#{summaryTime},'%Y-%m-%d'),'%Y') as `year`, 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'),'%m') as `month`,
DATE_FORMAT(STR_TO_DATE(#{summaryTime},'%Y-%m-%d'),'%d') as `day`, DATE_FORMAT(STR_TO_DATE(#{summaryTime},'%Y-%m-%d'),'%d') as `day`,
...@@ -46,24 +48,26 @@ ...@@ -46,24 +48,26 @@
<!-- 汇总当前日期请假情况 --> <!-- 汇总当前日期请假情况 -->
<select id="getLeaveSummary" parameterType="com.mortals.xhx.module.attendance.model.vo.AttendanceSummaryQuery" resultType="com.mortals.xhx.module.attendance.model.vo.LeaveSummaryVo"> <select id="getLeaveSummary" parameterType="com.mortals.xhx.module.attendance.model.vo.AttendanceSummaryQuery" resultType="com.mortals.xhx.module.attendance.model.vo.LeaveSummaryVo">
SELECT SELECT
leavePersonId AS staffId, r.leavePersonId AS staffId,
leavePerson AS staffName, r.leavePerson AS staffName,
leaveType, ANY_VALUE(s.`status`) as `status`,
IFNULL(sum(duration),0) as duration, ANY_VALUE(s.leaveDate) as leaveDate,
r.leaveType,
IFNULL(sum(r.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'),'%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'),'%m')) as `month`,
ANY_VALUE(DATE_FORMAT(STR_TO_DATE(#{summaryTime},'%Y-%m-%d'),'%d')) as `day`, ANY_VALUE(DATE_FORMAT(STR_TO_DATE(#{summaryTime},'%Y-%m-%d'),'%d')) as `day`,
ANY_VALUE(startTime) as startTime, ANY_VALUE(r.startTime) as startTime,
ANY_VALUE(endTime) as endTime ANY_VALUE(r.endTime) as endTime
FROM FROM
mortals_xhx_attendance_leave_record mortals_xhx_attendance_leave_record r INNER JOIN mortals_xhx_staff s ON r.leavePersonId = s.id
WHERE WHERE
auditResult = 1 r.auditResult = 1
AND processStatus = 2 AND r.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(r.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') AND STR_TO_DATE(date_format(r.endTime,'%Y-%m-%d'),'%Y-%m-%d') <![CDATA[ >= ]]> STR_TO_DATE(#{summaryTime},'%Y-%m-%d')
<if test="staffId != null and staffId!=''"> AND leavePersonId = #{staffId}</if> <if test="staffId != null and staffId!=''"> AND leavePersonId = #{staffId}</if>
GROUP BY leavePersonId,leavePerson,leaveType GROUP BY r.leavePersonId,r.leavePerson,r.leaveType
</select> </select>
...@@ -72,6 +76,8 @@ ...@@ -72,6 +76,8 @@
select select
e.staffId, e.staffId,
e.staffName, e.staffName,
ANY_VALUE(s.`status`) as `status`,
ANY_VALUE(s.leaveDate) as leaveDate,
ANY_VALUE(DATE_FORMAT(errorDateTime,'%Y')) as `year`, ANY_VALUE(DATE_FORMAT(errorDateTime,'%Y')) as `year`,
ANY_VALUE(DATE_FORMAT(errorDateTime,'%m')) as `month`, ANY_VALUE(DATE_FORMAT(errorDateTime,'%m')) as `month`,
ANY_VALUE(DATE_FORMAT(errorDateTime,'%d')) as `day`, ANY_VALUE(DATE_FORMAT(errorDateTime,'%d')) as `day`,
...@@ -80,7 +86,7 @@ ...@@ -80,7 +86,7 @@
sum(case processResult when 1 then 1 ELSE 0 end) as overtimeTimes, sum(case processResult when 1 then 1 ELSE 0 end) as overtimeTimes,
sum(case processResult when 2 then 1 ELSE 0 end) as lateTimes sum(case processResult when 2 then 1 ELSE 0 end) as lateTimes
from from
mortals_xhx_attendance_record_error e mortals_xhx_attendance_record_error e INNER JOIN mortals_xhx_staff s ON e.staffId = s.id
where where
processResult != 4 processResult != 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},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment