Commit 97ae2ca4 authored by 廖旭伟's avatar 廖旭伟

考勤汇总任务优化

parent 55415e8b
......@@ -42,6 +42,7 @@ public class AttendanceSummaryTaskImpl implements ITaskExcuteService {
query.setSummaryTimeEnd(DateUtils.getStrDate(now.getTime()));
now.add(Calendar.DAY_OF_MONTH, -19);
query.setSummaryTimeStart(DateUtils.getStrDate(now.getTime()));
log.info("考勤汇总时间:"+DateUtils.getDateTime(now.getTime(),"yyyy-MM-dd HH:mm:ss"));
//重新汇总最近20天的考勤数据
cacheService.lpush(KEY_ATTENDANCE_STAT_CACHE,query);
}
......
......@@ -40,10 +40,7 @@ import org.springframework.util.ObjectUtils;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.*;
/**
* AttendanceStatService
......@@ -221,6 +218,8 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
//汇总当前日期假期余额
List<VacationBalanceSummaryVo> vacationBalanceSummaryVoList = attendanceSummaryDao.getVacationBalanceSummary(query);
if (CollectionUtils.isNotEmpty(vacationBalanceSummaryVoList)) {
List<AttendanceStatEntity> insertList = new ArrayList<>();
List<AttendanceStatEntity> updateList = new ArrayList<>();
for (VacationBalanceSummaryVo item : vacationBalanceSummaryVoList) {
if(item.getStatus() == StaffSatusEnum.离职.getValue()){
//离职状态时判断当前汇总日期是否在离职后
......@@ -251,19 +250,27 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
attendanceStatEntity.setCreateTime(new Date());
attendanceStatEntity.setCreateUserId(1l);
attendanceStatEntity.setGoTimes(1); //默认当天全勤
this.dao.insert(attendanceStatEntity);
//this.dao.insert(attendanceStatEntity);
insertList.add(attendanceStatEntity);
} else {
//BeanUtils.copyProperties(item, temp, BeanUtil.getNullPropertyNames(item));
temp.setUpdateTime(new Date());
this.dao.update(temp);
//temp.setUpdateTime(new Date());
//this.dao.update(temp);
//updateList.add(temp);
}
}
if(insertList.size()>0){
this.dao.insertBatch(insertList);
}
}
log.info("完成汇总当前日期假期余额.....");
//汇总当前日期异常考勤
List<ErrorSummaryVo> errorSummaryVoList = attendanceSummaryDao.getErrorSummary(query);
if (CollectionUtils.isNotEmpty(errorSummaryVoList)) {
List<AttendanceStatEntity> updateList = new ArrayList<>();
List<AttendanceStaffStatEntity> addStaffStat = new ArrayList<>();
List<AttendanceStaffStatEntity> updateStaffStat = new ArrayList<>();
for (ErrorSummaryVo item : errorSummaryVoList) {
if(item.getStatus() == StaffSatusEnum.离职.getValue()){
//离职状态时判断当前汇总日期是否在离职后
......@@ -285,7 +292,8 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
if (item.getMorningTimes() > 0) {
temp.setNonCompliancePunch(new BigDecimal(item.getMorningTimes()));
}
this.dao.update(temp);
//this.dao.update(temp);
updateList.add(temp);
}
String attendanceSummary = "";
if (item.getMorningTimes() > 0) {
......@@ -322,18 +330,32 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
if (staffStatTemp != null) {
staffStat.setId(staffStatTemp.getId());
staffStat.setUpdateTime(new Date());
attendanceStaffStatService.update(staffStat);
//attendanceStaffStatService.update(staffStat);
updateStaffStat.add(staffStat);
} else {
staffStat.setCreateTime(DateUtils.StrToDate(query.getSummaryTime()));
staffStat.setCreateUserId(1l);
attendanceStaffStatService.save(staffStat);
//attendanceStaffStatService.save(staffStat);
addStaffStat.add(staffStat);
}
}
if(updateList.size()>0){
this.dao.updateBatch(updateList);
}
if(addStaffStat.size()>0){
attendanceStaffStatService.save(addStaffStat);
}
if(updateStaffStat.size()>0){
attendanceStaffStatService.update(updateStaffStat);
}
}
log.info("完成汇总当前日期异常考勤.....");
//汇总当前日期请假情况
List<LeaveSummaryVo> leaveSummaryVoList = attendanceSummaryDao.getLeaveSummary(query);
if (CollectionUtils.isNotEmpty(leaveSummaryVoList)) {
List<AttendanceStatEntity> updateList = new ArrayList<>();
List<AttendanceStaffStatEntity> addStaffStat = new ArrayList<>();
List<AttendanceStaffStatEntity> updateStaffStat = new ArrayList<>();
BigDecimal day = new BigDecimal(3600 * 8); //一天按8小时折算
BigDecimal oneDay = new BigDecimal(1);
for (LeaveSummaryVo item : leaveSummaryVoList) {
......@@ -453,7 +475,8 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
temp.setOtherDays(leaveTime);
break;
}
this.dao.update(temp);
//this.dao.update(temp);
updateList.add(temp);
}
AttendanceStaffStatEntity staffStat = new AttendanceStaffStatEntity();
......@@ -464,13 +487,24 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
if (staffStatTemp != null) {
staffStat.setId(staffStatTemp.getId());
staffStat.setUpdateTime(new Date());
attendanceStaffStatService.update(staffStat);
//attendanceStaffStatService.update(staffStat);
updateStaffStat.add(staffStat);
} else {
staffStat.setCreateTime(DateUtils.StrToDate(query.getSummaryTime()));
staffStat.setCreateUserId(1l);
attendanceStaffStatService.save(staffStat);
//attendanceStaffStatService.save(staffStat);
addStaffStat.add(staffStat);
}
}
if(updateList.size()>0){
this.dao.updateBatch(updateList);
}
if(addStaffStat.size()>0){
attendanceStaffStatService.save(addStaffStat);
}
if(updateStaffStat.size()>0){
attendanceStaffStatService.update(updateStaffStat);
}
}
log.info("完成汇总当前日期请假情况.....");
log.info("日期:" + query.getSummaryTime() + ",考勤汇总执行完成,耗时:" + (System.currentTimeMillis() - currentTime) + "毫秒....");
......
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