Commit 27449693 authored by 赵啸非's avatar 赵啸非

整理代码

parent 4df6a9b2
......@@ -111,6 +111,12 @@ 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, List<AttendanceGroupFixedworkSpecialEntity>> fixedSpecialGroupMap = specialService.find(new AttendanceGroupFixedworkSpecialEntity()).parallelStream().collect(Collectors.groupingBy(x -> x.getFixedWorkId()));
//获取当日未处理异常记录
AttendanceRecordErrorQuery attendanceRecordErrorQuery = new AttendanceRecordErrorQuery();
attendanceRecordErrorQuery.setErrorDateTimeStart(attendanceRecordHikQuery.getAttendanceDateStart());
attendanceRecordErrorQuery.setErrorDateTimeEnd(attendanceRecordErrorQuery.getActualAttendanceDateTimeEnd());
Map<Long, List<AttendanceRecordErrorEntity>> errorGroupStaffMap = errorService.find(attendanceRecordErrorQuery).parallelStream().collect(Collectors.groupingBy(x -> x.getStaffId()));
String attendanceDateStart = attendanceRecordHikQuery.getAttendanceDateStart();
String attendanceDateEnd = attendanceRecordHikQuery.getAttendanceDateEnd();
......@@ -179,6 +185,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
commonData.setRecordHikEntities(recordHikEntities);
commonData.setFixedSpecialGroupMap(fixedSpecialGroupMap);
commonData.setClassDetailEntityMap(classDetailEntityMap);
commonData.setErrorGroupStaffMap(errorGroupStaffMap);
workAbstract.doHandleWork(commonData);
}
//如果考勤人员信息list长度大于1 则该考勤人员有多个考勤组.
......@@ -204,6 +211,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
commonData.setRecordHikEntities(recordHikEntities);
commonData.setFixedSpecialGroupMap(fixedSpecialGroupMap);
commonData.setClassDetailEntityMap(classDetailEntityMap);
commonData.setErrorGroupStaffMap(errorGroupStaffMap);
workAbstract.doHandleWork(commonData);
}
}
......
......@@ -41,6 +41,8 @@ public class CommonData {
private Map<Long, List<AttendanceGroupFixedworkSpecialEntity>> fixedSpecialGroupMap;
private Map<Long, List<AttendanceRecordErrorEntity>> errorGroupStaffMap;
// private Map<Long, List<AttendanceLeaveRecordEntity>> leaveRecordGroupMap;
......
......@@ -39,6 +39,8 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
private Map<Long, AttendanceClassDetailEntity> classDetailEntityMap;
private CommonData commonData;
public FixWorkOtherAttendance(int type) {
super(type);
this.attendanceGroupFixedworkService = SpringUtils.getBean(AttendanceGroupFixedworkService.class);
......@@ -57,6 +59,7 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
@Override
public void doHandleWork(CommonData commonData) {
this.commonData = commonData;
AttendanceGroupFixedworkEntity attendanceGroupFixedworkEntity = attendanceGroupFixedworkService.selectOne(new AttendanceGroupFixedworkQuery()
.groupId(commonData.getAttendanceGroupEntity().getId()));
Map<Long, AttendanceClassEntity> classEntityMap = commonData.getClassEntityMap();
......@@ -287,7 +290,7 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
}
}
//生成异常记录
StopWatch stopWatch =new StopWatch();
StopWatch stopWatch = new StopWatch();
stopWatch.start("生成异常记录耗时");
genErrorAttendRecord(commonData.getContext(), commonData.getDateStr(), commonData.getAttendanceRecordEntity(), commonData.getDetailEntityList());
stopWatch.stop();
......@@ -354,21 +357,6 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
}
}
private void deleteErrorRecord(String dateStr, Long staffId, Context context) {
//删除当前员工当日未处理的异常后,重新添加
AttendanceRecordErrorQuery errorQuery = new AttendanceRecordErrorQuery();
errorQuery.setErrorDateTimeStart(dateStr);
errorQuery.setErrorDateTimeEnd(dateStr);
errorQuery.setStaffId(staffId);
errorQuery.setProcessStatus(YesNoEnum.NO.getValue());
List<AttendanceRecordErrorEntity> attendanceRecordErrorEntities = errorService.find(errorQuery);
Long[] errorIds = attendanceRecordErrorEntities.stream().map(i -> i.getId()).toArray(Long[]::new);
if (!ObjectUtils.isEmpty(errorIds)) {
//log.info("删除 {} 人员:{} 异常记录:{}",dateStr,staffId, JSON.toJSONString(attendanceRecordErrorEntities));
errorService.remove(errorIds, context);
}
}
public void genErrorAttendRecord(Context context, String dateStr, AttendanceRecordEntity attendanceRecordEntity, List<AttendanceRecordDetailEntity> detailEntityList) {
//处理异常打卡,所以异常打卡的 都新增一条记录
......@@ -444,27 +432,70 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
}
}
//删除当前员工当日未处理的异常后,重新添加 处理的 不做删除
deleteErrorRecord(dateStr, attendanceRecordEntity.getStaffId(), context);
AttendanceRecordErrorQuery errorQuery;
//deleteErrorRecord(dateStr, attendanceRecordEntity.getStaffId(), context);
//todo 缓存方式删除优化
deleteErrorRecordCache(attendanceRecordEntity.getStaffId(), context);
if (!ObjectUtils.isEmpty(errorEntityList)) {
//过滤异常列表中存在相同的记录
errorEntityList = errorEntityList.stream().distinct().collect(Collectors.toList());
for (AttendanceRecordErrorEntity errorEntity : errorEntityList) {
//查看是否存在相同的异常记录,如果存在 则不添加
errorQuery = new AttendanceRecordErrorQuery();
errorQuery.setErrorDateTime(errorEntity.getErrorDateTime());
errorQuery.setStaffId(errorEntity.getStaffId());
errorQuery.setShiftsId(errorEntity.getShiftsId());
errorQuery.setProcessStatus(YesNoEnum.YES.getValue());
AttendanceRecordErrorEntity attendanceRecordErrorEntity = errorService.selectOne(errorQuery, context);
if (ObjectUtils.isEmpty(attendanceRecordErrorEntity)) {
errorService.save(errorEntity, context);
}
//查看是否存在相同的异常记录,如果存在 则不添加 todo 非数据库查询方式判断优化
List<AttendanceRecordErrorEntity> attendanceRecordErrorEntities = commonData.getErrorGroupStaffMap().get(attendanceRecordEntity.getStaffId());
checkAndSaveCache(context,attendanceRecordErrorEntities,errorEntity);
// checkAndSave(context, errorEntity);
}
}
}
private void deleteErrorRecord(String dateStr, Long staffId, Context context) {
//删除当前员工当日未处理的异常后,重新添加
AttendanceRecordErrorQuery errorQuery = new AttendanceRecordErrorQuery();
errorQuery.setErrorDateTimeStart(dateStr);
errorQuery.setErrorDateTimeEnd(dateStr);
errorQuery.setStaffId(staffId);
errorQuery.setProcessStatus(YesNoEnum.NO.getValue());
List<AttendanceRecordErrorEntity> attendanceRecordErrorEntities = errorService.find(errorQuery);
Long[] errorIds = attendanceRecordErrorEntities.stream().map(i -> i.getId()).toArray(Long[]::new);
if (!ObjectUtils.isEmpty(errorIds)) {
//log.info("删除 {} 人员:{} 异常记录:{}",dateStr,staffId, JSON.toJSONString(attendanceRecordErrorEntities));
errorService.remove(errorIds, context);
}
}
private void deleteErrorRecordCache(Long staffId, Context context) {
//删除当前员工当日未处理的异常后,重新添加
List<AttendanceRecordErrorEntity> attendanceRecordErrorEntities = commonData.getErrorGroupStaffMap().get(staffId);
Long[] errorIds = attendanceRecordErrorEntities.stream()
.filter(f -> YesNoEnum.NO.getValue() == f.getProcessStatus())
.map(i -> i.getId()).toArray(Long[]::new);
if (!ObjectUtils.isEmpty(errorIds)) {
//log.info("删除 {} 人员:{} 异常记录:{}",dateStr,staffId, JSON.toJSONString(attendanceRecordErrorEntities));
errorService.remove(errorIds, context);
}
}
private void checkAndSaveCache(Context context, List<AttendanceRecordErrorEntity> attendanceRecordErrorEntities, AttendanceRecordErrorEntity errorEntity) {
AttendanceRecordErrorEntity attendanceRecordErrorEntity = attendanceRecordErrorEntities.stream()
.filter(f -> errorEntity.getErrorDateTime().getTime() == f.getErrorDateTime().getTime())
.filter(f -> errorEntity.getShiftsId().equals(f.getShiftsId()))
.filter(f -> YesNoEnum.YES.getValue() == f.getProcessStatus()).findAny().orElseGet(() -> null);
if (ObjectUtils.isEmpty(attendanceRecordErrorEntity)) {
errorService.save(errorEntity, context);
}
}
private void checkAndSave(Context context, AttendanceRecordErrorEntity errorEntity) {
AttendanceRecordErrorQuery errorQuery;
errorQuery = new AttendanceRecordErrorQuery();
errorQuery.setErrorDateTime(errorEntity.getErrorDateTime());
errorQuery.setStaffId(errorEntity.getStaffId());
errorQuery.setShiftsId(errorEntity.getShiftsId());
errorQuery.setProcessStatus(YesNoEnum.YES.getValue());
AttendanceRecordErrorEntity attendanceRecordErrorEntity = errorService.selectOne(errorQuery, context);
if (ObjectUtils.isEmpty(attendanceRecordErrorEntity)) {
errorService.save(errorEntity, context);
}
}
public static void main(String[] args) {
......
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