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

考勤汇总任务优化

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