Commit 2d879f6c authored by 赵啸非's avatar 赵啸非

优化考勤计算

parent ae73ba81
...@@ -75,13 +75,13 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte ...@@ -75,13 +75,13 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
@Override @Override
public void addAttendanceRecord(AttendanceRecordHikEntity hikEntity, Context context) throws Exception { public void addAttendanceRecord(AttendanceRecordHikEntity hikEntity, Context context) throws Exception {
List<AttendanceRecordHikEntity> hikEntityList = new ArrayList<>(); List<AttendanceRecordHikEntity> hikEntityList = new ArrayList<>();
addAttendanceOtherRecordList(hikEntityList, context); addAttendanceOtherRecordList(hikEntityList, hikEntity, context);
} }
@Override @Override
public void addAttendanceRecordByQuery(AttendanceRecordHikEntity attendanceRecordHikQuery, Context context) throws Exception { public void addAttendanceRecordByQuery(AttendanceRecordHikEntity attendanceRecordHikQuery, Context context) throws Exception {
List<AttendanceRecordHikEntity> hikEntityList = attendanceRecordHikService.find(attendanceRecordHikQuery); List<AttendanceRecordHikEntity> hikEntityList = attendanceRecordHikService.find(attendanceRecordHikQuery);
addAttendanceOtherRecordList(hikEntityList, context); addAttendanceOtherRecordList(hikEntityList, attendanceRecordHikQuery, context);
} }
@Override @Override
...@@ -99,7 +99,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte ...@@ -99,7 +99,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
} }
return item; return item;
}).filter(f -> f != null).collect(Collectors.toList()); }).filter(f -> f != null).collect(Collectors.toList());
addAttendanceOtherRecordList(hikEntityList, context); addAttendanceOtherRecordList(hikEntityList, attendanceRecordHikQuery, context);
} }
private Boolean checkWorkByHoliday(String dateStr) { private Boolean checkWorkByHoliday(String dateStr) {
...@@ -135,7 +135,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte ...@@ -135,7 +135,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
} }
public void addAttendanceOtherRecordList(List<AttendanceRecordHikEntity> hikEntityList, Context context) throws Exception { public void addAttendanceOtherRecordList(List<AttendanceRecordHikEntity> hikEntityList, AttendanceRecordHikEntity attendanceRecordHikQuery, Context context) throws Exception {
List<AttendanceRecordHikEntity> collect = hikEntityList.stream().sorted(Comparator.comparing(AttendanceRecordHikEntity::getAttendanceDate)).collect(Collectors.toList()); List<AttendanceRecordHikEntity> collect = hikEntityList.stream().sorted(Comparator.comparing(AttendanceRecordHikEntity::getAttendanceDate)).collect(Collectors.toList());
Map<Long, List<AttendanceRecordHikEntity>> listMap = collect.stream().collect(Collectors.groupingBy(AttendanceRecordHikEntity::getStaffId)); Map<Long, List<AttendanceRecordHikEntity>> listMap = collect.stream().collect(Collectors.groupingBy(AttendanceRecordHikEntity::getStaffId));
...@@ -146,10 +146,19 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte ...@@ -146,10 +146,19 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
Map<Long, AttendanceClassDetailEntity> classDetailEntityMap = attendanceClassDetailService.find(new AttendanceClassDetailQuery()).parallelStream().collect(Collectors.toMap(x -> x.getId(), y -> y, (o, n) -> n)); Map<Long, AttendanceClassDetailEntity> classDetailEntityMap = attendanceClassDetailService.find(new AttendanceClassDetailQuery()).parallelStream().collect(Collectors.toMap(x -> x.getId(), y -> y, (o, n) -> n));
Map<Long, List<AttendanceGroupFixedworkSpecialEntity>> fixedSpecialGroupMap = specialService.find(new AttendanceGroupFixedworkSpecialEntity()).parallelStream().collect(Collectors.groupingBy(x -> x.getFixedWorkId())); Map<Long, List<AttendanceGroupFixedworkSpecialEntity>> fixedSpecialGroupMap = specialService.find(new AttendanceGroupFixedworkSpecialEntity()).parallelStream().collect(Collectors.groupingBy(x -> x.getFixedWorkId()));
String attendanceDateStart = attendanceRecordHikQuery.getAttendanceDateStart();
String attendanceDateEnd = attendanceRecordHikQuery.getAttendanceDateEnd();
AttendanceRecordQuery query = new AttendanceRecordQuery();
query.setAttendanceDateStart(attendanceDateStart);
query.setAttendanceDateEnd(attendanceDateEnd);
Map<Long, AttendanceRecordEntity> staffRecordMap = attendanceRecordService.find(query).parallelStream().collect(Collectors.toMap(x -> x.getStaffId(), y -> y, (o, n) -> n));
/* AttendanceLeaveRecordQuery leaveRecordQuery = new AttendanceLeaveRecordQuery(); /* AttendanceLeaveRecordQuery leaveRecordQuery = new AttendanceLeaveRecordQuery();
leaveRecordQuery.setAuditResultList(Arrays.asList(1, 4)); leaveRecordQuery.setAuditResultList(Arrays.asList(1, 4));
Map<Long, List<AttendanceLeaveRecordEntity>> leaveRecordGroupMap = attendanceLeaveRecordService.find(leaveRecordQuery).parallelStream().collect(Collectors.groupingBy(x -> x.getLeavePersonId())); Map<Long, List<AttendanceLeaveRecordEntity>> leaveRecordGroupMap = attendanceLeaveRecordService.find(leaveRecordQuery).parallelStream().collect(Collectors.groupingBy(x -> x.getLeavePersonId()));
*/ */
//获取日期
for (Map.Entry<Long, List<AttendanceRecordHikEntity>> itemEntry : listMap.entrySet()) { for (Map.Entry<Long, List<AttendanceRecordHikEntity>> itemEntry : listMap.entrySet()) {
//按人员 todo 改为多线程并行计算 //按人员 todo 改为多线程并行计算
...@@ -215,7 +224,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte ...@@ -215,7 +224,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
commonData.setRecordHikEntities(recordHikEntities); commonData.setRecordHikEntities(recordHikEntities);
commonData.setFixedSpecialGroupMap(fixedSpecialGroupMap); commonData.setFixedSpecialGroupMap(fixedSpecialGroupMap);
commonData.setClassDetailEntityMap(classDetailEntityMap); commonData.setClassDetailEntityMap(classDetailEntityMap);
// commonData.setLeaveRecordGroupMap(leaveRecordGroupMap); // commonData.setLeaveRecordGroupMap(leaveRecordGroupMap);
workAbstract.doHandleWork(commonData); workAbstract.doHandleWork(commonData);
} }
...@@ -226,7 +235,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte ...@@ -226,7 +235,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
//多考勤组 todo 暂时和单一覆盖 //多考勤组 todo 暂时和单一覆盖
//checkAttendGroupByOne(attendanceRecordEntity, detailEntityList, attendanceDate, groupStaffEntity, context); //checkAttendGroupByOne(attendanceRecordEntity, detailEntityList, attendanceDate, groupStaffEntity, context);
//查询考勤组 //查询考勤组
// AttendanceGroupEntity attendanceGroupEntity = attendanceGroupService.get(groupStaffEntity.getGroupId(), context); // AttendanceGroupEntity attendanceGroupEntity = attendanceGroupService.get(groupStaffEntity.getGroupId(), context);
AttendanceGroupEntity attendanceGroupEntity = groupMap.get(groupStaffEntity.getGroupId()); AttendanceGroupEntity attendanceGroupEntity = groupMap.get(groupStaffEntity.getGroupId());
attendanceRecordEntity.setAttendanceGroupId(attendanceGroupEntity == null ? 0L : attendanceGroupEntity.getId()); attendanceRecordEntity.setAttendanceGroupId(attendanceGroupEntity == null ? 0L : attendanceGroupEntity.getId());
...@@ -245,7 +254,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte ...@@ -245,7 +254,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
commonData.setRecordHikEntities(recordHikEntities); commonData.setRecordHikEntities(recordHikEntities);
commonData.setFixedSpecialGroupMap(fixedSpecialGroupMap); commonData.setFixedSpecialGroupMap(fixedSpecialGroupMap);
commonData.setClassDetailEntityMap(classDetailEntityMap); commonData.setClassDetailEntityMap(classDetailEntityMap);
// commonData.setLeaveRecordGroupMap(leaveRecordGroupMap); // commonData.setLeaveRecordGroupMap(leaveRecordGroupMap);
workAbstract.doHandleWork(commonData); workAbstract.doHandleWork(commonData);
} }
} }
...@@ -276,12 +285,13 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte ...@@ -276,12 +285,13 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
attendanceRecordEntity.setAttendType("现场打卡"); attendanceRecordEntity.setAttendType("现场打卡");
//判断是否存在记录 如果存在 则更新 维度 staffId attendanceDate shiftsId attendanceGroupId //判断是否存在记录 如果存在 则更新 维度 staffId attendanceDate shiftsId attendanceGroupId
AttendanceRecordQuery query = new AttendanceRecordQuery(); /* AttendanceRecordQuery query = new AttendanceRecordQuery();
query.setStaffId(attendanceRecordEntity.getStaffId()); query.setStaffId(attendanceRecordEntity.getStaffId());
query.setAttendanceDateStart(dateStr); query.setAttendanceDateStart(dateStr);
query.setAttendanceDateEnd(dateStr); query.setAttendanceDateEnd(dateStr);
AttendanceRecordEntity recordEntity = attendanceRecordService.selectOne(query); AttendanceRecordEntity recordEntity = attendanceRecordService.selectOne(query);*/
AttendanceRecordEntity recordEntity = staffRecordMap.get(attendanceRecordEntity.getStaffId());
if (!ObjectUtils.isEmpty(recordEntity)) { if (!ObjectUtils.isEmpty(recordEntity)) {
attendanceRecordEntity.setId(recordEntity.getId()); attendanceRecordEntity.setId(recordEntity.getId());
attendanceRecordEntity.setUpdateTime(new Date()); attendanceRecordEntity.setUpdateTime(new Date());
...@@ -293,6 +303,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte ...@@ -293,6 +303,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
} }
} }
if (!ObjectUtils.isEmpty(saveList)) { if (!ObjectUtils.isEmpty(saveList)) {
log.info("新增考勤记录数:" + saveList.size());
attendanceRecordService.save(saveList); attendanceRecordService.save(saveList);
/* for (AttendanceRecordEntity attendanceRecordEntity : saveList) { /* for (AttendanceRecordEntity attendanceRecordEntity : saveList) {
attendanceRecordService.save(attendanceRecordEntity, context); attendanceRecordService.save(attendanceRecordEntity, context);
...@@ -300,6 +311,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte ...@@ -300,6 +311,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
} }
if (!ObjectUtils.isEmpty(updateList)) { if (!ObjectUtils.isEmpty(updateList)) {
log.info("更新考勤记录数:" + updateList.size());
attendanceRecordService.update(updateList); attendanceRecordService.update(updateList);
/* for (AttendanceRecordEntity attendanceRecordEntity : updateList) { /* for (AttendanceRecordEntity attendanceRecordEntity : updateList) {
attendanceRecordService.update(attendanceRecordEntity, context); attendanceRecordService.update(attendanceRecordEntity, context);
...@@ -308,7 +320,6 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte ...@@ -308,7 +320,6 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
} }
} }
......
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