Commit 479f71df authored by 廖旭伟's avatar 廖旭伟

修改汇总异常考勤的bug

parent 61667eab
package com.mortals.xhx.module.attendance.model.vo;
import com.mortals.framework.annotation.Excel;
import lombok.Data;
import java.util.Date;
/**
* 请假汇总
*/
......@@ -35,4 +38,12 @@ public class LeaveSummaryVo {
* 时长,单位秒
*/
private Integer duration;
/**
* 开始时间
*/
private Date startTime;
/**
* 结束时间
*/
private Date endTime;
}
......@@ -27,6 +27,7 @@ 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.Calendar;
import java.util.Date;
import java.util.List;
......@@ -185,12 +186,32 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
//汇总当前日期请假情况
List<LeaveSummaryVo> leaveSummaryVoList = attendanceSummaryDao.getLeaveSummary(query);
if (CollectionUtils.isNotEmpty(leaveSummaryVoList)) {
BigDecimal hour = new BigDecimal(3600);
BigDecimal day = new BigDecimal(3600*24);
BigDecimal oneDay = new BigDecimal(1);
for (LeaveSummaryVo item : leaveSummaryVoList) {
String attendanceSummary = "";
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);
BigDecimal leaveTime = new BigDecimal(item.getDuration()).divide(day, 1, BigDecimal.ROUND_HALF_DOWN);
String endStr = DateUtils.getStrDate(item.getEndTime());
String dayStr = query.getSummaryTime();
if(endStr.equals(dayStr)){
if(leaveTime.compareTo(oneDay)>=0){
// 整数部分
BigDecimal integerPart = leaveTime.setScale(0, RoundingMode.DOWN);
// 小数部分
BigDecimal fractionalPart = leaveTime.subtract(integerPart);
if(fractionalPart.compareTo(new BigDecimal(0))==0){
leaveTime = oneDay;
}else {
leaveTime = fractionalPart;
}
}
}else {
if(leaveTime.compareTo(oneDay)>=0){
leaveTime=oneDay;
}
}
temp.setGoTimes(0); //默认只要有请假,当天就不算全勤
LeaveTypeEnum leaveTypeEnum = LeaveTypeEnum.getByValue(item.getLeaveType());
if(leaveTypeEnum == null){
......@@ -245,7 +266,7 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
staffStat.setUpdateTime(new Date());
attendanceStaffStatService.update(staffStat);
}else {
staffStat.setCreateTime(new Date());
staffStat.setCreateTime(DateUtils.StrToDate(query.getSummaryTime()));
staffStat.setCreateUserId(1l);
attendanceStaffStatService.save(staffStat);
}
......@@ -282,7 +303,7 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
staffStat.setUpdateTime(new Date());
attendanceStaffStatService.update(staffStat);
}else {
staffStat.setCreateTime(new Date());
staffStat.setCreateTime(DateUtils.StrToDate(query.getSummaryTime()));
staffStat.setCreateUserId(1l);
attendanceStaffStatService.save(staffStat);
}
......@@ -326,4 +347,5 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
}
return result;
}
}
\ No newline at end of file
......@@ -50,7 +50,9 @@
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`
ANY_VALUE(DATE_FORMAT(STR_TO_DATE(#{summaryTime},'%Y-%m-%d'),'%d')) as `day`,
ANY_VALUE(startTime) as startTime,
ANY_VALUE(endTime) as endTime
FROM
mortals_xhx_attendance_leave_record
WHERE
......
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