Commit 7695c7fe authored by 赵啸非's avatar 赵啸非

Merge remote-tracking branch 'origin/master'

parents 97add7b4 98be2744
......@@ -187,7 +187,7 @@ public class AttendanceStatEntity extends AttendanceStatVo {
/**
* 考勤汇总-溜班(次)
*/
@Excel(name = "考勤汇总-溜班")
@Excel(name = "考勤汇总-溜班/早退")
private Integer overtimeTimes;
/**
* 考勤汇总-空岗
......
......@@ -184,7 +184,7 @@ public class AttendanceLeaveRecordServiceImpl extends AbstractCRUDServiceImpl<At
AttendanceSummaryQuery query = new AttendanceSummaryQuery();
query.setSummaryTimeEnd(DateUtils.getStrDate(entity.getEndTime()));
query.setSummaryTimeStart(DateUtils.getStrDate(entity.getStartTime()));
query.setStaffId(entity.getStaffId());
query.setStaffId(entity.getLeavePersonId());
cacheService.lpush(KEY_ATTENDANCE_STAT_CACHE, query);
/* AddAttendThread addAttendThread = new AddAttendThread(hikService, attendanceRecordHikQuery, context);
ThreadPool.getInstance().execute(addAttendThread);*/
......
......@@ -240,20 +240,30 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
staffStatDelete.setStaffId(query.getStaffId());
}
attendanceStaffStatService.remove(staffStatDelete,null);
Map<Long,AttendanceStatEntity> statMap = new HashMap<>();
Map<Long,AttendanceStaffStatEntity> staffStatMap = new HashMap<>();
//汇总当前日期假期余额
List<VacationBalanceSummaryVo> vacationBalanceSummaryVoList = attendanceSummaryDao.getVacationBalanceSummary(query);
if (CollectionUtils.isNotEmpty(vacationBalanceSummaryVoList)) {
log.info("考勤人数:"+vacationBalanceSummaryVoList.size());
List<AttendanceStatEntity> insertList = new ArrayList<>();
List<AttendanceStatEntity> updateList = new ArrayList<>();
List<AttendanceStaffStatEntity> addStaffStat = new ArrayList<>();
List<AttendanceStaffStatEntity> updateStaffStat = new ArrayList<>();
List<Long> staffIdList = vacationBalanceSummaryVoList.stream().map(VacationBalanceSummaryVo::getStaffId).collect(Collectors.toList());
AttendanceRecordQuery attendanceRecordQuery = new AttendanceRecordQuery();
attendanceRecordQuery.setAttendanceDateStart(query.getSummaryTime());
attendanceRecordQuery.setAttendanceDateEnd(query.getSummaryTime());
attendanceRecordQuery.setStaffIdList(staffIdList);
List<AttendanceRecordEntity> attendanceRecordList = recordService.find(attendanceRecordQuery);
List<Long> recordList = attendanceRecordList.stream().map(AttendanceRecordEntity::getId).collect(Collectors.toList());
Map<Long, AttendanceRecordEntity> staffRecordMap = attendanceRecordList.parallelStream().collect(Collectors.toMap(x -> x.getStaffId(), z -> z, (o, n) -> n));
Map<Long, AttendanceRecordEntity> staffRecordMap = recordService.find(attendanceRecordQuery).parallelStream().collect(Collectors.toMap(x -> x.getStaffId(), z -> z, (o, n) -> n));
AttendanceRecordDetailQuery detailQuery = new AttendanceRecordDetailQuery();
if(CollectionUtils.isEmpty(recordList)){
recordList.add(0l);
}
detailQuery.setRecordIdList(recordList);
List<AttendanceRecordDetailEntity> detailEntities = attendanceRecordDetailService.find(detailQuery);
Map<Long,List<AttendanceRecordDetailEntity>> detailGroup = detailEntities.stream().collect(Collectors.groupingBy(AttendanceRecordDetailEntity::getRecordId));
for (VacationBalanceSummaryVo item : vacationBalanceSummaryVoList) {
String entryDateStr = DateUtils.getStrDate(item.getEntryDate());
......@@ -276,8 +286,6 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
// }
}
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();
attendanceStatEntity.setStaffId(item.getStaffId());
......@@ -294,80 +302,27 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
attendanceStatEntity.setCreateTime(new Date());
attendanceStatEntity.setCreateUserId(1l);
attendanceStatEntity.setGoTimes(1); //默认当天全勤
//this.dao.insert(attendanceStatEntity);
insertList.add(attendanceStatEntity);
} else {
//BeanUtils.copyProperties(item, temp, BeanUtil.getNullPropertyNames(item));
//temp.setUpdateTime(new Date());
//this.dao.update(temp);
AttendanceStatEntity attendanceStatEntity = new AttendanceStatEntity();
attendanceStatEntity.initAttrValue();
attendanceStatEntity.setStaffId(item.getStaffId());
attendanceStatEntity.setStaffName(item.getStaffName());
attendanceStatEntity.setDeptId(item.getDeptId());
attendanceStatEntity.setDeptName(item.getDeptName());
attendanceStatEntity.setSalaId(item.getSalaId());
attendanceStatEntity.setSalaName(item.getSalaName());
attendanceStatEntity.setPhoneNumer(item.getPhoneNumber());
attendanceStatEntity.setYear(item.getYear());
attendanceStatEntity.setMonth(item.getMonth());
attendanceStatEntity.setDay(item.getDay());
attendanceStatEntity.setGoTimes(1); //默认当天全勤
attendanceStatEntity.setId(temp.getId());
attendanceStatEntity.setUpdateTime(new Date());
updateList.add(attendanceStatEntity);
}
statMap.put(attendanceStatEntity.getStaffId(),attendanceStatEntity);
AttendanceStaffStatEntity staffStat = new AttendanceStaffStatEntity();
staffStat.initAttrValue();
BeanUtils.copyProperties(item, staffStat, BeanUtil.getNullPropertyNames(item));
staffStat.setAttendanceSummary("正常");
//todo 保存详细json信息到remark
/* AttendanceRecordQuery attendanceRecordQuery = new AttendanceRecordQuery();
attendanceRecordQuery.setStaffId(item.getStaffId());
attendanceRecordQuery.setAttendanceDateStart(query.getSummaryTime());
attendanceRecordQuery.setAttendanceDateEnd(query.getSummaryTime());
AttendanceRecordEntity recordEntity = recordService.selectOne(attendanceRecordQuery);*/
AttendanceRecordEntity recordEntity = staffRecordMap.get(item.getStaffId());
if(!ObjectUtils.isEmpty(recordEntity)){
AttendanceRecordQuery detailQuery = new AttendanceRecordQuery();
detailQuery.setStaffId(item.getStaffId());
detailQuery.setId(recordEntity.getId());
//log.info("staffId:{},date:{}",staffStat.getStaffId(),date);
detailQuery.setAttendanceDateStart(query.getSummaryTime());
detailQuery.setAttendanceDateEnd(query.getSummaryTime());
List<AttendanceRecordDetailEntity> detailEntities = attendanceRecordDetailService.getListByWhere(detailQuery);
if (!ObjectUtils.isEmpty(detailEntities)) {
List<AttendanceRecordDetailEntity> recordDetailEntities = detailGroup.get(recordEntity.getId());
if (!ObjectUtils.isEmpty(recordDetailEntities)) {
//log.info("detailEntities size:{}",detailEntities.size());
staffStat.setRemark(JSON.toJSONString(detailEntities));
staffStat.setRemark(JSON.toJSONString(recordDetailEntities));
}
}
AttendanceStaffStatEntity staffStatTemp = attendanceStaffStatService.selectOne(new AttendanceStaffStatQuery().staffId(item.getStaffId()).year(item.getYear()).month(item.getMonth()).day(item.getDay()));
if (staffStatTemp != null) {
staffStat.setId(staffStatTemp.getId());
staffStat.setUpdateTime(new Date());
updateStaffStat.add(staffStat);
} else {
staffStat.setCreateTime(DateUtils.StrToDate(query.getSummaryTime()));
staffStat.setUpdateTime(new Date());
staffStat.setCreateUserId(1l);
addStaffStat.add(staffStat);
}
}
if(insertList.size()>0){
this.dao.insertBatch(insertList);
}
if(updateList.size()>0){
this.dao.updateBatch(updateList);
}
if(addStaffStat.size()>0){
attendanceStaffStatService.save(addStaffStat);
}
if(updateStaffStat.size()>0){
attendanceStaffStatService.update(updateStaffStat);
staffStatMap.put(staffStat.getStaffId(),staffStat);
}
}
//log.info("完成汇总当前日期假期余额.....");
......@@ -376,9 +331,6 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
if (CollectionUtils.isNotEmpty(errorSummaryVoList)) {
log.info("考勤异常查询条件:"+JSON.toJSONString(query));
log.info("当前日期考勤异常人数"+errorSummaryVoList.size());
List<AttendanceStatEntity> updateList = new ArrayList<>();
List<AttendanceStaffStatEntity> addStaffStat = new ArrayList<>();
List<AttendanceStaffStatEntity> updateStaffStat = new ArrayList<>();
for (ErrorSummaryVo item : errorSummaryVoList) {
if(item.getStatus() == StaffSatusEnum.离职.getValue()){
continue;
......@@ -394,19 +346,14 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
// continue;
// }
}
AttendanceStatEntity temp = this.selectOne(new AttendanceStatQuery().staffId(item.getStaffId()).year(item.getYear()).month(item.getMonth()).day(item.getDay()));
String staffName ="";
AttendanceStatEntity temp = statMap.get(item.getStaffId());
if (temp != null) {
staffName = temp.getStaffName();
BeanUtils.copyProperties(item, temp, BeanUtil.getNullPropertyNames(item));
temp.setGoTimes(0); //默认只要有异常考勤,当天就不算全勤
if (item.getMorningTimes() > 0) {
temp.setNonCompliancePunch(new BigDecimal(item.getMorningTimes()));
}
//this.dao.update(temp);
temp.setStaffName(staffName);
temp.setUpdateTime(new Date());
updateList.add(temp);
statMap.put(temp.getStaffId(),temp);
}
String attendanceSummary = "";
int normal = 4; //正常次数
......@@ -430,73 +377,24 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
attendanceSummary += "事假全天*" + item.getLeaveDay() + "次;";
normal = 0;
}
AttendanceStaffStatEntity staffStat = new AttendanceStaffStatEntity();
staffStat.initAttrValue();
BeanUtils.copyProperties(item, staffStat, BeanUtil.getNullPropertyNames(item));
if(normal>0){
attendanceSummary = "正常*"+ normal + "次;" + attendanceSummary;
}
AttendanceStaffStatEntity staffStat = staffStatMap.get(item.getStaffId());
if(staffStat!=null){
staffStat.setAttendanceSummary(attendanceSummary);
if (!ObjectUtils.isEmpty(attendanceSummary)) {
//todo 保存详细json信息到remark
//格式化年月日
String date = staffStat.getYear() + "-" + StrUtil.padPre(staffStat.getMonth() + "", 2, "0")+ "-" + StrUtil.padPre(staffStat.getDay() + "", 2, "0");
AttendanceRecordQuery attendanceRecordQuery = new AttendanceRecordQuery();
attendanceRecordQuery.setStaffId(staffStat.getStaffId());
attendanceRecordQuery.setAttendanceDateStart(date);
attendanceRecordQuery.setAttendanceDateEnd(date);
AttendanceRecordEntity recordEntity = recordService.selectOne(attendanceRecordQuery);
if(!ObjectUtils.isEmpty(recordEntity)){
AttendanceRecordQuery detailQuery = new AttendanceRecordQuery();
detailQuery.setStaffId(staffStat.getStaffId());
detailQuery.setId(recordEntity.getId());
//log.info("staffId:{},date:{}",staffStat.getStaffId(),date);
detailQuery.setAttendanceDateStart(date);
detailQuery.setAttendanceDateEnd(date);
List<AttendanceRecordDetailEntity> detailEntities = attendanceRecordDetailService.getListByWhere(detailQuery);
if (!ObjectUtils.isEmpty(detailEntities)) {
//log.info("detailEntities size:{}",detailEntities.size());
staffStat.setRemark(JSON.toJSONString(detailEntities));
}
}
}
staffStat.setStaffName(staffName);
AttendanceStaffStatEntity staffStatTemp = attendanceStaffStatService.selectOne(new AttendanceStaffStatQuery().staffId(item.getStaffId()).year(item.getYear()).month(item.getMonth()).day(item.getDay()));
if (staffStatTemp != null) {
staffStat.setId(staffStatTemp.getId());
staffStat.setUpdateTime(new Date());
//attendanceStaffStatService.update(staffStat);
//log.info(JSON.toJSONString(staffStat));
updateStaffStat.add(staffStat);
} else {
staffStat.setCreateTime(DateUtils.StrToDate(query.getSummaryTime()));
staffStat.setCreateUserId(1l);
//attendanceStaffStatService.save(staffStat);
//log.info(JSON.toJSONString(staffStat));
addStaffStat.add(staffStat);
staffStatMap.put(staffStat.getStaffId(),staffStat);
}
}
if(updateList.size()>0){
this.dao.updateBatch(updateList);
}
if(addStaffStat.size()>0){
attendanceStaffStatService.save(addStaffStat);
//log.info("attendanceStaffStatService新增数据:"+u);
}
if(updateStaffStat.size()>0){
attendanceStaffStatService.update(updateStaffStat);
//log.info("attendanceStaffStatService更新数据:"+u);
}
}
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) {
......@@ -515,10 +413,8 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
// }
}
String attendanceSummary = "";
AttendanceStatEntity temp = this.selectOne(new AttendanceStatQuery().staffId(item.getStaffId()).year(item.getYear()).month(item.getMonth()).day(item.getDay()));
String staffName ="";
AttendanceStatEntity temp = statMap.get(item.getStaffId());
if (temp != null) {
staffName = temp.getStaffName();
BigDecimal leaveTime = new BigDecimal(item.getDuration()).divide(day, 1, BigDecimal.ROUND_HALF_DOWN);
String endStr = DateUtils.getStrDate(item.getEndTime());
String dayStr = query.getSummaryTime();
......@@ -624,44 +520,32 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
break;
}
//this.dao.update(temp);
temp.setStaffName(staffName);
temp.setUpdateTime(new Date());
updateList.add(temp);
statMap.put(temp.getStaffId(),temp);
}
AttendanceStaffStatEntity staffStat = new AttendanceStaffStatEntity();
staffStat.initAttrValue();
BeanUtils.copyProperties(item, staffStat, BeanUtil.getNullPropertyNames(item));
AttendanceStaffStatEntity staffStatTemp = attendanceStaffStatService.selectOne(new AttendanceStaffStatQuery().staffId(item.getStaffId()).year(item.getYear()).month(item.getMonth()).day(item.getDay()));
staffStat.setStaffName(staffName);
AttendanceStaffStatEntity staffStatTemp = staffStatMap.get(item.getStaffId());
if (staffStatTemp != null) {
staffStat.setId(staffStatTemp.getId());
staffStat.setUpdateTime(new Date());
if(staffStatTemp.getAttendanceSummary().equals("正常")){
staffStat.setAttendanceSummary(attendanceSummary);
staffStatTemp.setAttendanceSummary(attendanceSummary);
}else {
staffStat.setAttendanceSummary(staffStatTemp.getAttendanceSummary() + attendanceSummary);
}
staffStat.setRemark(staffStatTemp.getRemark());
updateStaffStat.add(staffStat);
} else {
staffStat.setCreateTime(DateUtils.StrToDate(query.getSummaryTime()));
staffStat.setCreateUserId(1l);
staffStat.setAttendanceSummary(attendanceSummary);
addStaffStat.add(staffStat);
staffStatTemp.setAttendanceSummary(staffStatTemp.getAttendanceSummary() + attendanceSummary);
}
staffStatMap.put(staffStatTemp.getStaffId(),staffStatTemp);
}
if(updateList.size()>0){
this.dao.updateBatch(updateList);
}
if(addStaffStat.size()>0){
attendanceStaffStatService.save(addStaffStat);
}
if(updateStaffStat.size()>0){
attendanceStaffStatService.update(updateStaffStat);
log.info("完成汇总当前日期请假情况.....");
if(statMap.size()>0){
List<AttendanceStatEntity> insertList = new ArrayList<>(statMap.values());
this.dao.insertBatch(insertList);
}
if(staffStatMap.size()>0){
List<AttendanceStaffStatEntity> addStaffStat = new ArrayList<>(staffStatMap.values());
//List<AttendanceStaffStatEntity> addStaffStat = staffStatMap.values().stream().collect(Collectors.toList());
attendanceStaffStatService.save(addStaffStat);
}
log.info("完成汇总当前日期请假情况.....");
cacheService.set(ATTENDANCE_STAT_TIME, DateUtils.getCurrStrDateTime());
log.info("日期:" + query.getSummaryTime() + ",考勤汇总执行完成,耗时:" + (System.currentTimeMillis() - currentTime) + "毫秒....");
} catch (Exception e) {
......@@ -669,6 +553,7 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
}
}
@Override
public Result<AttendanceStatEntity> findExt(AttendanceSummaryQuery params, PageInfo pageInfo, Context context) throws AppException {
if (params == null) {
......@@ -804,8 +689,4 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
cacheService.set(RedisKey.KEY_HOME_STAT_CACHE, JSON.toJSONString(homeStatInfo));
}
public static void main(String[] args) {
String ss = "2024-08-01";
System.out.println(ss.substring(0,7));
}
}
\ No newline at end of file
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