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

整理代码

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