Commit 1d05a2b0 authored by 赵啸非's avatar 赵啸非

整理代码

parent 294bdfc7
package com.mortals.xhx.module.attendance.service; package com.mortals.xhx.module.attendance.service;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICRUDService; import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.attendance.dao.AttendanceRecordErrorDao;
import com.mortals.xhx.module.attendance.model.AttendanceRecordErrorEntity; import com.mortals.xhx.module.attendance.model.AttendanceRecordErrorEntity;
import com.mortals.xhx.module.attendance.model.AttendanceRecordErrorQuery; import com.mortals.xhx.module.attendance.model.AttendanceRecordErrorQuery;
import com.mortals.xhx.module.attendance.model.vo.ErrorSummaryVo; import com.mortals.xhx.module.attendance.model.vo.ErrorSummaryVo;
import com.mortals.xhx.module.perform.dao.PerformErrorMessageDao;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
/** /**
* AttendanceRecordErrorService * AttendanceRecordErrorService
* * <p>
* 考勤打卡记录异常信息 service接口 * 考勤打卡记录异常信息 service接口
* *
* @author zxfei * @author zxfei
* @date 2023-04-08 * @date 2023-04-08
*/ */
public interface AttendanceRecordErrorService extends ICRUDService<AttendanceRecordErrorEntity,Long>{ public interface AttendanceRecordErrorService extends ICRUDService<AttendanceRecordErrorEntity, Long> {
AttendanceRecordErrorDao getDao();
/*** /***
* 考勤异常确认前检测,如果当天有请假记录则返回false * 考勤异常确认前检测,如果当天有请假记录则返回false
...@@ -27,18 +33,21 @@ public interface AttendanceRecordErrorService extends ICRUDService<AttendanceRec ...@@ -27,18 +33,21 @@ public interface AttendanceRecordErrorService extends ICRUDService<AttendanceRec
/** /**
* 自动处理异常考勤记录 * 自动处理异常考勤记录
*
* @param date * @param date
*/ */
void doAutoProcess(Date date); void doAutoProcess(Date date);
/** /**
* 按时间从新生成已处理的考勤绩效核查数据 * 按时间从新生成已处理的考勤绩效核查数据
*
* @param query * @param query
*/ */
void doReprocess(AttendanceRecordErrorQuery query, Context context); void doReprocess(AttendanceRecordErrorQuery query, Context context);
/** /**
* 统计每月异常次数top10 * 统计每月异常次数top10
*
* @param query * @param query
* @return * @return
*/ */
......
...@@ -244,6 +244,13 @@ public class AttendanceRecordErrorServiceImpl extends AbstractCRUDServiceImpl<At ...@@ -244,6 +244,13 @@ public class AttendanceRecordErrorServiceImpl extends AbstractCRUDServiceImpl<At
AttendanceRecordErrorQuery errorQuery = new AttendanceRecordErrorQuery(); AttendanceRecordErrorQuery errorQuery = new AttendanceRecordErrorQuery();
errorQuery.setIdList(Arrays.asList(ids)); errorQuery.setIdList(Arrays.asList(ids));
List<AttendanceRecordErrorEntity> delErrorList = this.find(errorQuery, context); List<AttendanceRecordErrorEntity> delErrorList = this.find(errorQuery, context);
/* //改造循环查询
List<Long> staffIdList = delErrorList.stream().map(i -> i.getStaffId()).distinct().collect(Collectors.toList());
PerformAttendRecordQuery query = new PerformAttendRecordQuery();
query.setStaffIdList(staffIdList);
query.setRuleIdNotList(Arrays.asList(9L));*/
for (AttendanceRecordErrorEntity attendanceRecordErrorEntity : delErrorList) { for (AttendanceRecordErrorEntity attendanceRecordErrorEntity : delErrorList) {
PerformAttendRecordQuery query = new PerformAttendRecordQuery(); PerformAttendRecordQuery query = new PerformAttendRecordQuery();
query.setStaffId(attendanceRecordErrorEntity.getStaffId()); query.setStaffId(attendanceRecordErrorEntity.getStaffId());
......
...@@ -6,12 +6,19 @@ import cn.hutool.core.date.DateUtil; ...@@ -6,12 +6,19 @@ import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.model.OrderCol; import com.mortals.framework.model.OrderCol;
import com.mortals.framework.util.ThreadPool;
import com.mortals.xhx.common.code.*; import com.mortals.xhx.common.code.*;
import com.mortals.xhx.module.attendance.model.*; import com.mortals.xhx.module.attendance.model.*;
import com.mortals.xhx.module.attendance.service.*; import com.mortals.xhx.module.attendance.service.*;
import com.mortals.xhx.module.check.model.CheckAttendRecordEntity;
import com.mortals.xhx.module.check.model.CheckAttendRecordQuery;
import com.mortals.xhx.module.check.service.CheckAttendRecordService;
import com.mortals.xhx.module.holiday.model.HolidayEntity; import com.mortals.xhx.module.holiday.model.HolidayEntity;
import com.mortals.xhx.module.holiday.model.HolidayQuery; import com.mortals.xhx.module.holiday.model.HolidayQuery;
import com.mortals.xhx.module.holiday.service.HolidayService; import com.mortals.xhx.module.holiday.service.HolidayService;
import com.mortals.xhx.module.perform.model.PerformAttendRecordEntity;
import com.mortals.xhx.module.perform.model.PerformAttendRecordQuery;
import com.mortals.xhx.module.perform.service.PerformAttendRecordService;
import com.mortals.xhx.utils.SpringUtils; import com.mortals.xhx.utils.SpringUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
...@@ -41,11 +48,18 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract { ...@@ -41,11 +48,18 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
private CommonData commonData; private CommonData commonData;
private PerformAttendRecordService performAttendRecordService;
private CheckAttendRecordService checkAttendRecordService;
public FixWorkOtherAttendance(int type) { public FixWorkOtherAttendance(int type) {
super(type); super(type);
this.attendanceGroupFixedworkService = SpringUtils.getBean(AttendanceGroupFixedworkService.class); this.attendanceGroupFixedworkService = SpringUtils.getBean(AttendanceGroupFixedworkService.class);
this.errorService = SpringUtils.getBean(AttendanceRecordErrorService.class); this.errorService = SpringUtils.getBean(AttendanceRecordErrorService.class);
this.attendanceLeaveRecordService = SpringUtils.getBean(AttendanceLeaveRecordService.class); this.attendanceLeaveRecordService = SpringUtils.getBean(AttendanceLeaveRecordService.class);
this.performAttendRecordService = SpringUtils.getBean(PerformAttendRecordService.class);
this.checkAttendRecordService = SpringUtils.getBean(CheckAttendRecordService.class);
} }
@Override @Override
...@@ -433,8 +447,8 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract { ...@@ -433,8 +447,8 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
} }
//删除当前员工当日未处理的异常后,重新添加 处理的 不做删除 //删除当前员工当日未处理的异常后,重新添加 处理的 不做删除
//deleteErrorRecord(dateStr, attendanceRecordEntity.getStaffId(), context); //deleteErrorRecord(dateStr, attendanceRecordEntity.getStaffId(), context);
//todo 缓存方式删除优化 //todo 级联删除优化
deleteErrorRecordCache(attendanceRecordEntity.getStaffId(), context); 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());
...@@ -464,20 +478,74 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract { ...@@ -464,20 +478,74 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
private void deleteErrorRecordCache(Long staffId, Context context) { private void deleteErrorRecordCache(Long staffId, Context context) {
//删除当前员工当日未处理的异常后,重新添加 //删除当前员工当日未处理的异常后,重新添加
List<AttendanceRecordErrorEntity> attendanceRecordErrorEntities = commonData.getErrorGroupStaffMap().get(staffId); List<AttendanceRecordErrorEntity> attendanceRecordErrorEntities = commonData.getErrorGroupStaffMap().getOrDefault(staffId, new ArrayList<>(0));
if (!ObjectUtils.isEmpty(attendanceRecordErrorEntities)) {
Long[] errorIds = attendanceRecordErrorEntities.stream() List<AttendanceRecordErrorEntity> delErrorList = attendanceRecordErrorEntities.stream()
.filter(f -> YesNoEnum.NO.getValue() == f.getProcessStatus()) .filter(f -> YesNoEnum.NO.getValue() == f.getProcessStatus())
.map(i -> i.getId()).toArray(Long[]::new); .collect(Collectors.toList());
if (!ObjectUtils.isEmpty(errorIds)) { Long[] errorIds = delErrorList.stream().map(i -> i.getId()).toArray(Long[]::new);
//log.info("删除 {} 人员:{} 异常记录:{}",dateStr,staffId, JSON.toJSONString(attendanceRecordErrorEntities)); if (!ObjectUtils.isEmpty(errorIds)) {
StopWatch stopWatch = new StopWatch(); //log.info("删除 {} 人员:{} 异常记录:{}",dateStr,staffId, JSON.toJSONString(attendanceRecordErrorEntities));
stopWatch.start("删除异常记录耗时"); StopWatch stopWatch = new StopWatch();
errorService.remove(errorIds, context); stopWatch.start("删除异常记录耗时");
stopWatch.stop(); //todo 耗时长,删除优化
log.info("删除异常记录耗时:{}ms", stopWatch.getLastTaskTimeMillis()); //errorService
//线程池去删除异常记录
Runnable runnable = new Runnable() {
@Override
public void run() {
errorService.remove(errorIds, context);
}
};
ThreadPool.getInstance().execute(runnable);
// errorService.getDao().delete(errorIds);
/*
for (AttendanceRecordErrorEntity attendanceRecordErrorEntity : delErrorList) {
PerformAttendRecordQuery query = new PerformAttendRecordQuery();
query.setStaffId(attendanceRecordErrorEntity.getStaffId());
query.setErrorTime(attendanceRecordErrorEntity.getErrorDateTime());
query.setRuleIdNotList(Arrays.asList(9L));
List<PerformAttendRecordEntity> delAttendRecords = performAttendRecordService.find(query, context);
if (!ObjectUtils.isEmpty(delAttendRecords)) {
Long[] delIds = delAttendRecords.stream().map(i -> i.getId()).toArray(Long[]::new);
performAttendRecordService.remove(delIds, context);
}
} }
*/
/* PerformAttendRecordQuery query = new PerformAttendRecordQuery();
query.setIdList(Arrays.asList(ids));
List<PerformAttendRecordEntity> performAttendRecordEntities = this.find(query, context);
if (!ObjectUtils.isEmpty(performAttendRecordEntities)) {
Long[] delIds = performAttendRecordEntities.stream().map(i -> i.getId()).toArray(Long[]::new);
if (!ObjectUtils.isEmpty(delIds)) {
CheckAttendRecordQuery checkAttendRecordQuery = new CheckAttendRecordQuery();
checkAttendRecordQuery.setRecordIdList(Arrays.asList(delIds));
List<CheckAttendRecordEntity> checkAttendRecordEntities = checkAttendRecordService.find(checkAttendRecordQuery, context);
if (!ObjectUtils.isEmpty(checkAttendRecordEntities)) {
Long[] checkIds = checkAttendRecordEntities.stream().map(i -> i.getId()).toArray(Long[]::new);
checkAttendRecordService.remove(checkIds, context);
// log.info("删除考勤核查记录成功,size:{}",checkIds.length);
}
}
}*/
//删除关联的绩效记录
//删除关联的考勤记录
stopWatch.stop();
log.info("删除异常记录耗时:{}ms", stopWatch.getLastTaskTimeMillis());
} }
} }
private void checkAndSaveCache(Context context, List<AttendanceRecordErrorEntity> attendanceRecordErrorEntities, AttendanceRecordErrorEntity errorEntity) { private void checkAndSaveCache(Context context, List<AttendanceRecordErrorEntity> attendanceRecordErrorEntities, AttendanceRecordErrorEntity errorEntity) {
......
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