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

整理代码

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