Commit 77fdd2e0 authored by 赵啸非's avatar 赵啸非

优化考勤计算

parent 03cb182b
...@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateTime; ...@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.model.OrderCol;
import com.mortals.framework.service.ICacheService; import com.mortals.framework.service.ICacheService;
import com.mortals.framework.util.DateUtils; import com.mortals.framework.util.DateUtils;
import com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity; import com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity;
...@@ -15,6 +16,8 @@ import lombok.extern.slf4j.Slf4j; ...@@ -15,6 +16,8 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.util.StopWatch; import org.springframework.util.StopWatch;
import java.util.Arrays;
import static com.mortals.xhx.common.key.RedisKey.KEY_ATTENDANCE_STAT_CACHE; import static com.mortals.xhx.common.key.RedisKey.KEY_ATTENDANCE_STAT_CACHE;
...@@ -53,16 +56,16 @@ public class AddAttendThread implements Runnable { ...@@ -53,16 +56,16 @@ public class AddAttendThread implements Runnable {
Long compare = DateUtil.between(attendEnd, attendStart, DateUnit.DAY); Long compare = DateUtil.between(attendEnd, attendStart, DateUnit.DAY);
StopWatch stopWatch = new StopWatch("stopwatch attend"); StopWatch stopWatch = new StopWatch("stopwatch attend");
log.info("考勤计算天数区间:{}", compare); log.info("考勤计算天数区间:{}", compare);
stopWatch.start("执行本地方法");
for (int i = 0; i <= compare.intValue(); i++) { for (int i = 0; i <= compare.intValue(); i++) {
stopWatch.start("执行本地方法");
DateTime curDate = DateUtil.offsetDay(attendStart, i); DateTime curDate = DateUtil.offsetDay(attendStart, i);
log.info("考勤计算日期:{}", curDate.toDateStr());
hikEntity.setAttendanceDateStart(curDate.toDateStr()); hikEntity.setAttendanceDateStart(curDate.toDateStr());
hikEntity.setAttendanceDateEnd(curDate.toDateStr()); hikEntity.setAttendanceDateEnd(curDate.toDateStr());
hikEntity.setOrderColList(Arrays.asList(new OrderCol("attendanceDate")));
hikService.addAttendanceRecordByQuery(hikEntity, context); hikService.addAttendanceRecordByQuery(hikEntity, context);
}
stopWatch.stop(); stopWatch.stop();
log.info("完成,耗时:{}ms", stopWatch.getLastTaskTimeMillis()); log.info("考勤计算日期:{} 完成,耗时:{}ms",curDate.toDateStr(), stopWatch.getLastTaskTimeMillis());
}
//生成汇总信息 //生成汇总信息
log.info("生成考勤汇总消息开始。。。"); log.info("生成考勤汇总消息开始。。。");
AttendanceSummaryQuery query = new AttendanceSummaryQuery(); AttendanceSummaryQuery query = new AttendanceSummaryQuery();
......
...@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSON; ...@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSON;
import com.mortals.framework.common.Rest; import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.model.OrderCol;
import com.mortals.framework.service.ICacheService; import com.mortals.framework.service.ICacheService;
import com.mortals.framework.service.ITask; import com.mortals.framework.service.ITask;
import com.mortals.framework.service.ITaskExcuteService; import com.mortals.framework.service.ITaskExcuteService;
...@@ -31,10 +32,7 @@ import org.springframework.beans.factory.annotation.Value; ...@@ -31,10 +32,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import java.util.ArrayList; import java.util.*;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.mortals.xhx.common.key.RedisKey.KEY_ATTENDANCE_STAT_CACHE; import static com.mortals.xhx.common.key.RedisKey.KEY_ATTENDANCE_STAT_CACHE;
...@@ -102,6 +100,7 @@ public class SyncDoorsEventAfterTaskImpl implements ITaskExcuteService { ...@@ -102,6 +100,7 @@ public class SyncDoorsEventAfterTaskImpl implements ITaskExcuteService {
AttendanceRecordHikQuery recordHikQuery = new AttendanceRecordHikQuery(); AttendanceRecordHikQuery recordHikQuery = new AttendanceRecordHikQuery();
recordHikQuery.setAttendanceDateStart(DateUtil.today()); recordHikQuery.setAttendanceDateStart(DateUtil.today());
recordHikQuery.setAttendanceDateEnd(DateUtil.today()); recordHikQuery.setAttendanceDateEnd(DateUtil.today());
recordHikQuery.setOrderColList(Arrays.asList(new OrderCol("attendanceDate")));
try { try {
recordHikService.addAttendanceRecordByQuery(recordHikQuery, context); recordHikService.addAttendanceRecordByQuery(recordHikQuery, context);
} catch (Exception e) { } catch (Exception e) {
......
...@@ -66,6 +66,10 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte ...@@ -66,6 +66,10 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
private IHikDoorService hikDoorService; private IHikDoorService hikDoorService;
@Autowired @Autowired
private AttendanceClassService attendanceClassService; private AttendanceClassService attendanceClassService;
@Autowired
private AttendanceGroupFixedworkSpecialService specialService;
@Autowired
private AttendanceLeaveRecordService attendanceLeaveRecordService;
@Override @Override
...@@ -140,6 +144,13 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte ...@@ -140,6 +144,13 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
Map<Long, List<AttendanceGroupStaffEntity>> groupStaffMap = attendanceGroupStaffService.find(new AttendanceGroupStaffQuery()).parallelStream().collect(Collectors.groupingBy(x -> x.getStaffId())); Map<Long, List<AttendanceGroupStaffEntity>> groupStaffMap = attendanceGroupStaffService.find(new AttendanceGroupStaffQuery()).parallelStream().collect(Collectors.groupingBy(x -> x.getStaffId()));
Map<Long, AttendanceGroupEntity> groupMap = attendanceGroupService.find(new AttendanceGroupQuery()).parallelStream().collect(Collectors.toMap(x -> x.getId(), y -> y, (o, n) -> n)); Map<Long, AttendanceGroupEntity> groupMap = attendanceGroupService.find(new AttendanceGroupQuery()).parallelStream().collect(Collectors.toMap(x -> x.getId(), y -> y, (o, n) -> n));
Map<Long, AttendanceClassEntity> classEntityMap = attendanceClassService.find(new AttendanceClassQuery()).parallelStream().collect(Collectors.toMap(x -> x.getId(), y -> y, (o, n) -> n)); Map<Long, AttendanceClassEntity> classEntityMap = attendanceClassService.find(new AttendanceClassQuery()).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()));
AttendanceLeaveRecordQuery leaveRecordQuery = new AttendanceLeaveRecordQuery();
leaveRecordQuery.setAuditResultList(Arrays.asList(1, 4));
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()) {
//按人员 //按人员
...@@ -200,6 +211,9 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte ...@@ -200,6 +211,9 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
commonData.setStaffId(attendanceRecordEntity.getStaffId()); commonData.setStaffId(attendanceRecordEntity.getStaffId());
commonData.setDateStr(dateStr); commonData.setDateStr(dateStr);
commonData.setClassEntityMap(classEntityMap); commonData.setClassEntityMap(classEntityMap);
commonData.setRecordHikEntities(recordHikEntities);
commonData.setFixedSpecialGroupMap(fixedSpecialGroupMap);
commonData.setClassDetailEntityMap(classDetailEntityMap);
workAbstract.doHandleWork(commonData); workAbstract.doHandleWork(commonData);
} }
...@@ -226,6 +240,9 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte ...@@ -226,6 +240,9 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
commonData.setStaffId(attendanceRecordEntity.getStaffId()); commonData.setStaffId(attendanceRecordEntity.getStaffId());
commonData.setDateStr(dateStr); commonData.setDateStr(dateStr);
commonData.setClassEntityMap(classEntityMap); commonData.setClassEntityMap(classEntityMap);
commonData.setRecordHikEntities(recordHikEntities);
commonData.setFixedSpecialGroupMap(fixedSpecialGroupMap);
commonData.setClassDetailEntityMap(classDetailEntityMap);
workAbstract.doHandleWork(commonData); workAbstract.doHandleWork(commonData);
} }
} }
......
...@@ -2,10 +2,7 @@ package com.mortals.xhx.module.attendance.service.work; ...@@ -2,10 +2,7 @@ package com.mortals.xhx.module.attendance.service.work;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.xhx.module.attendance.model.AttendanceClassEntity; import com.mortals.xhx.module.attendance.model.*;
import com.mortals.xhx.module.attendance.model.AttendanceGroupEntity;
import com.mortals.xhx.module.attendance.model.AttendanceRecordDetailEntity;
import com.mortals.xhx.module.attendance.model.AttendanceRecordEntity;
import lombok.Data; import lombok.Data;
import java.util.Date; import java.util.Date;
...@@ -37,5 +34,11 @@ public class CommonData { ...@@ -37,5 +34,11 @@ public class CommonData {
private Map<Long, AttendanceClassEntity> classEntityMap; private Map<Long, AttendanceClassEntity> classEntityMap;
private List<AttendanceRecordHikEntity> recordHikEntities;
private Map<Long, AttendanceClassDetailEntity> classDetailEntityMap;
private Map<Long, List<AttendanceGroupFixedworkSpecialEntity>> fixedSpecialGroupMap;
} }
...@@ -52,6 +52,8 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract { ...@@ -52,6 +52,8 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
private AttendanceRecordDetailService attendanceRecordDetailService; private AttendanceRecordDetailService attendanceRecordDetailService;
private Map<Long, AttendanceClassDetailEntity> classDetailEntityMap ;
public FixWorkOtherAttendance(int type) { public FixWorkOtherAttendance(int type) {
super(type); super(type);
this.attendanceGroupFixedworkService = SpringUtils.getBean(AttendanceGroupFixedworkService.class); this.attendanceGroupFixedworkService = SpringUtils.getBean(AttendanceGroupFixedworkService.class);
...@@ -81,6 +83,8 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract { ...@@ -81,6 +83,8 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
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();
Map<Long, List<AttendanceGroupFixedworkSpecialEntity>> fixedSpecialGroupMap = commonData.getFixedSpecialGroupMap();
this.classDetailEntityMap = commonData.getClassDetailEntityMap();
if (ObjectUtils.isEmpty(attendanceGroupFixedworkEntity)) { if (ObjectUtils.isEmpty(attendanceGroupFixedworkEntity)) {
log.info("attendanceGroupFixedworkEntity is null ! groupId:{}", commonData.getAttendanceGroupEntity().getId()); log.info("attendanceGroupFixedworkEntity is null ! groupId:{}", commonData.getAttendanceGroupEntity().getId());
return; return;
...@@ -99,9 +103,9 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract { ...@@ -99,9 +103,9 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
if (!checkWorkByHoliday) { if (!checkWorkByHoliday) {
// log.info("当前日期不在考勤时间范围内,不做处理!"); // log.info("当前日期不在考勤时间范围内,不做处理!");
return; return;
}else{ } else {
//工作日要上班 获取配置的周六 周日班次 默认周一 //工作日要上班 获取配置的周六 周日班次 默认周一
weekClassId=this.getWeekClassId(attendanceGroupFixedworkEntity, "星期一"); weekClassId = this.getWeekClassId(attendanceGroupFixedworkEntity, "星期一");
} }
} else { } else {
if (checkHolidayByWorkDay) { if (checkHolidayByWorkDay) {
...@@ -114,11 +118,6 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract { ...@@ -114,11 +118,6 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
AttendanceLeaveRecordQuery leaveRecordQuery = new AttendanceLeaveRecordQuery(); AttendanceLeaveRecordQuery leaveRecordQuery = new AttendanceLeaveRecordQuery();
leaveRecordQuery.setLeavePersonId(commonData.getStaffId()); leaveRecordQuery.setLeavePersonId(commonData.getStaffId());
leaveRecordQuery.setAuditResultList(Arrays.asList(1, 4)); leaveRecordQuery.setAuditResultList(Arrays.asList(1, 4));
// leaveRecordQuery.setAuditResult(AuditStatusEnum.通过.getValue());
// leaveRecordQuery.setEndTimeEnd(commonData.getDateStr());
// leaveRecordQuery.setStartTimeStart(commonData.getDateStr());
// leaveRecordQuery.setStartTimeEnd(commonData.getDateStr());
boolean isLeave = false; boolean isLeave = false;
List<AttendanceLeaveRecordEntity> leaveRecordEntities = attendanceLeaveRecordService.find(leaveRecordQuery); List<AttendanceLeaveRecordEntity> leaveRecordEntities = attendanceLeaveRecordService.find(leaveRecordQuery);
...@@ -167,7 +166,8 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract { ...@@ -167,7 +166,8 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
}*/ }*/
//特殊日期考勤配置 //特殊日期考勤配置
List<AttendanceGroupFixedworkSpecialEntity> specialEntities = specialService.find(new AttendanceGroupFixedworkSpecialQuery().fixedWorkId(attendanceGroupFixedworkEntity.getId())); //List<AttendanceGroupFixedworkSpecialEntity> specialEntities = specialService.find(new AttendanceGroupFixedworkSpecialQuery().fixedWorkId(attendanceGroupFixedworkEntity.getId()));
List<AttendanceGroupFixedworkSpecialEntity> specialEntities = fixedSpecialGroupMap.get(attendanceGroupFixedworkEntity.getId());
if (!ObjectUtils.isEmpty(specialEntities)) { if (!ObjectUtils.isEmpty(specialEntities)) {
//分组 需要考勤与不需要考勤 //分组 需要考勤与不需要考勤
Map<Boolean, List<AttendanceGroupFixedworkSpecialEntity>> collect = specialEntities.stream().collect(Collectors.partitioningBy(item -> item.getMust() == MustEnum..getValue())); Map<Boolean, List<AttendanceGroupFixedworkSpecialEntity>> collect = specialEntities.stream().collect(Collectors.partitioningBy(item -> item.getMust() == MustEnum..getValue()));
...@@ -224,12 +224,16 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract { ...@@ -224,12 +224,16 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
} }
//查询当天,该人员的考勤记录 //查询当天,该人员的考勤记录
AttendanceRecordHikQuery recordHikQuery = new AttendanceRecordHikQuery(); /* AttendanceRecordHikQuery recordHikQuery = new AttendanceRecordHikQuery();
recordHikQuery.setAttendanceDateStart(commonData.getDateStr()); recordHikQuery.setAttendanceDateStart(commonData.getDateStr());
recordHikQuery.setAttendanceDateEnd(commonData.getDateStr()); recordHikQuery.setAttendanceDateEnd(commonData.getDateStr());
recordHikQuery.setStaffId(commonData.getStaffId()); recordHikQuery.setStaffId(commonData.getStaffId());
recordHikQuery.setOrderColList(Arrays.asList(new OrderCol("attendanceDate"))); recordHikQuery.setOrderColList(Arrays.asList(new OrderCol("attendanceDate")));
List<AttendanceRecordHikEntity> recordHikEntities = recordHikService.find(recordHikQuery); List<AttendanceRecordHikEntity> recordHikEntities = recordHikService.find(recordHikQuery);*/
List<AttendanceRecordHikEntity> recordHikEntities = commonData.getRecordHikEntities();
List<AttendanceClassDetailEntity> attendanceClassDetailEntities = attendanceClassEntity.getAttendanceClassDetailList(); List<AttendanceClassDetailEntity> attendanceClassDetailEntities = attendanceClassEntity.getAttendanceClassDetailList();
Integer orderNum = 0; Integer orderNum = 0;
...@@ -256,13 +260,13 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract { ...@@ -256,13 +260,13 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
for (AttendanceClassDetailEntity classDetail : attendanceClassDetailEntities) { for (AttendanceClassDetailEntity classDetail : attendanceClassDetailEntities) {
//计算区间范围 //计算区间范围
//上班打卡前时间 //上班打卡前时间
Date goWorkDateBefore = DateUtil.offsetMinute(classDetail.getGoWorkDate(), -classDetail.getGoWorkDateBefore()-1); Date goWorkDateBefore = DateUtil.offsetMinute(classDetail.getGoWorkDate(), -classDetail.getGoWorkDateBefore() - 1);
//上班打卡后时间 //上班打卡后时间
Date goWorkDateAfter = DateUtil.offsetMinute(classDetail.getGoWorkDate(), classDetail.getGoWorkDateAfter()+1); Date goWorkDateAfter = DateUtil.offsetMinute(classDetail.getGoWorkDate(), classDetail.getGoWorkDateAfter() + 1);
// 下班打卡前时间 // 下班打卡前时间
Date offWorkDateBefore = DateUtil.offsetMinute(classDetail.getOffWorkDate(), -classDetail.getOffWorkDateBefore()-1); Date offWorkDateBefore = DateUtil.offsetMinute(classDetail.getOffWorkDate(), -classDetail.getOffWorkDateBefore() - 1);
//下班打卡后时间,默认偏移多一分钟 //下班打卡后时间,默认偏移多一分钟
Date offWorkDateAfter = DateUtil.offsetMinute(classDetail.getOffWorkDate(), classDetail.getOffWorkDateAfter()+1); Date offWorkDateAfter = DateUtil.offsetMinute(classDetail.getOffWorkDate(), classDetail.getOffWorkDateAfter() + 1);
//判断考勤时间是否在上班打卡区间内 true 在 false 不在 格式化时间 //判断考勤时间是否在上班打卡区间内 true 在 false 不在 格式化时间
//String currDate = DateUtil.formatTime(attendanceDate); //String currDate = DateUtil.formatTime(attendanceDate);
Date curDateTime = DateUtil.parseTime(DateUtil.formatTime(attendanceDate)); Date curDateTime = DateUtil.parseTime(DateUtil.formatTime(attendanceDate));
...@@ -334,7 +338,8 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract { ...@@ -334,7 +338,8 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
} }
} }
AttendanceClassDetailEntity attendanceClassDetailEntity = attendanceClassDetailService.get(commonData.getDetailEntityList().get(0).getShiftsId()); // AttendanceClassDetailEntity attendanceClassDetailEntity = attendanceClassDetailService.get(commonData.getDetailEntityList().get(0).getShiftsId());
AttendanceClassDetailEntity attendanceClassDetailEntity = classDetailEntityMap.get(commonData.getDetailEntityList().get(0).getShiftsId());
commonData.getAttendanceRecordEntity().setClassId(attendanceClassDetailEntity == null ? 0L : attendanceClassDetailEntity.getClassId()); commonData.getAttendanceRecordEntity().setClassId(attendanceClassDetailEntity == null ? 0L : attendanceClassDetailEntity.getClassId());
commonData.getAttendanceRecordEntity().setClassName(attendanceClassDetailEntity == null ? "" : attendanceClassDetailEntity.getClassName()); commonData.getAttendanceRecordEntity().setClassName(attendanceClassDetailEntity == null ? "" : attendanceClassDetailEntity.getClassName());
} }
...@@ -351,20 +356,18 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract { ...@@ -351,20 +356,18 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
long betweened = DateUtil.between(DateUtil.parseDate(commonData.getDateStr()), leaveRecord.getEndTime(), DateUnit.DAY); long betweened = DateUtil.between(DateUtil.parseDate(commonData.getDateStr()), leaveRecord.getEndTime(), DateUnit.DAY);
if (betweened > 0) { if (betweened > 0) {
//全天 //全天
calLeaveDate(commonData, DateUtil.parseDateTime(commonData.getDateStr()+" 00:00:00"),DateUtil.parseDateTime(commonData.getDateStr()+" 23:59:59")); calLeaveDate(commonData, DateUtil.parseDateTime(commonData.getDateStr() + " 00:00:00"), DateUtil.parseDateTime(commonData.getDateStr() + " 23:59:59"));
} else if (betweened == 0) { } else if (betweened == 0) {
//最后一天 //最后一天
calLeaveDate(commonData, DateUtil.parseDateTime(commonData.getDateStr()+" 00:00:00"),leaveRecord.getEndTime()); calLeaveDate(commonData, DateUtil.parseDateTime(commonData.getDateStr() + " 00:00:00"), leaveRecord.getEndTime());
} }
} else if (between == 0) { } else if (between == 0) {
calLeaveDate(commonData, leaveRecord.getStartTime(),leaveRecord.getEndTime()); calLeaveDate(commonData, leaveRecord.getStartTime(), leaveRecord.getEndTime());
} else { } else {
//错误 //错误
} }
} }
} }
//生成异常记录 //生成异常记录
...@@ -374,6 +377,7 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract { ...@@ -374,6 +377,7 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
/** /**
* 计算异常 * 计算异常
*
* @param commonData * @param commonData
* @param startLeaveTime * @param startLeaveTime
* @param endLeaveTime * @param endLeaveTime
...@@ -394,9 +398,9 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract { ...@@ -394,9 +398,9 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
if (GoWorkResultEnum.请假.getValue() < goWorkResult) { if (GoWorkResultEnum.请假.getValue() < goWorkResult) {
//判断 异常记录是否在请假时间段内 //判断 异常记录是否在请假时间段内
// DateUtil.between() // DateUtil.between()
if(ObjectUtils.isEmpty(goWorkDate)){ if (ObjectUtils.isEmpty(goWorkDate)) {
detail.setGoWorkResult(GoWorkResultEnum.请假.getValue()); detail.setGoWorkResult(GoWorkResultEnum.请假.getValue());
}else{ } else {
boolean in = DateUtil.isIn(goWorkDate, startLeaveTime, endLeaveTime); boolean in = DateUtil.isIn(goWorkDate, startLeaveTime, endLeaveTime);
if (in) { if (in) {
detail.setGoWorkResult(GoWorkResultEnum.请假.getValue()); detail.setGoWorkResult(GoWorkResultEnum.请假.getValue());
...@@ -407,9 +411,9 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract { ...@@ -407,9 +411,9 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
if (GoWorkResultEnum.请假.getValue() < offWorkResult) { if (GoWorkResultEnum.请假.getValue() < offWorkResult) {
//判断 异常记录是否在请假时间段内 //判断 异常记录是否在请假时间段内
// DateUtil.between() // DateUtil.between()
if(ObjectUtils.isEmpty(offWorkDate)){ if (ObjectUtils.isEmpty(offWorkDate)) {
detail.setOffWorkResult(GoWorkResultEnum.请假.getValue()); detail.setOffWorkResult(GoWorkResultEnum.请假.getValue());
}else{ } else {
boolean in = DateUtil.isIn(offWorkDate, startLeaveTime, endLeaveTime); boolean in = DateUtil.isIn(offWorkDate, startLeaveTime, endLeaveTime);
if (in) { if (in) {
detail.setOffWorkResult(GoWorkResultEnum.请假.getValue()); detail.setOffWorkResult(GoWorkResultEnum.请假.getValue());
...@@ -436,13 +440,14 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract { ...@@ -436,13 +440,14 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
public void genErrorAttendRecord(Context context, String dateStr, AttendanceRecordEntity attendanceRecordEntity, List<AttendanceRecordDetailEntity> detailEntityList) { public void genErrorAttendRecord(Context context, String dateStr, AttendanceRecordEntity attendanceRecordEntity, List<AttendanceRecordDetailEntity> detailEntityList) {
//处理异常打卡,所以异常打卡的 都新增一条记录 //处理异常打卡,所以异常打卡的 都新增一条记录
List<AttendanceRecordErrorEntity> errorEntityList = new ArrayList<>(); List<AttendanceRecordErrorEntity> errorEntityList = new ArrayList<>();
List<AttendanceRecordErrorEntity> errorSwitchNormalList = new ArrayList<>(); // Map<Long, AttendanceClassDetailEntity> classDetailEntityMap = attendanceClassDetailService.find(new AttendanceClassDetailQuery()).stream().collect(Collectors.toMap(x -> x.getId(), y -> y, (o, n) -> n));
for (AttendanceRecordDetailEntity recordDetailEntity : detailEntityList) { for (AttendanceRecordDetailEntity recordDetailEntity : detailEntityList) {
Integer goWorkResult = recordDetailEntity.getGoWorkResult(); Integer goWorkResult = recordDetailEntity.getGoWorkResult();
Integer offWorkResult = recordDetailEntity.getOffWorkResult(); Integer offWorkResult = recordDetailEntity.getOffWorkResult();
//判断是否是离职员工 如果是 则不添加 //判断是否是离职员工 如果是 则不添加
//判断上班 //判断上班
AttendanceClassDetailEntity attendanceClassDetailEntity = attendanceClassDetailService.get(recordDetailEntity.getShiftsId()); // AttendanceClassDetailEntity attendanceClassDetailEntity = attendanceClassDetailService.get(recordDetailEntity.getShiftsId());
AttendanceClassDetailEntity attendanceClassDetailEntity = classDetailEntityMap.get(recordDetailEntity.getShiftsId());
if (ObjectUtils.isEmpty(attendanceClassDetailEntity)) continue; if (ObjectUtils.isEmpty(attendanceClassDetailEntity)) continue;
//判断上班 //判断上班
if (GoWorkResultEnum.请假.getValue() < goWorkResult) { if (GoWorkResultEnum.请假.getValue() < goWorkResult) {
...@@ -514,12 +519,11 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract { ...@@ -514,12 +519,11 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
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) {
//查看是否存在相同的异常记录,如果存在 则不添加 //查看是否存在相同的异常记录,如果存在 则不添加
errorQuery = new AttendanceRecordErrorQuery(); errorQuery = new AttendanceRecordErrorQuery();
errorQuery.setShiftsId(errorEntity.getShiftsId());
errorQuery.setGoOffDateTime(errorEntity.getErrorDateTime()); errorQuery.setGoOffDateTime(errorEntity.getErrorDateTime());
errorQuery.setStaffId(errorEntity.getStaffId()); errorQuery.setStaffId(errorEntity.getStaffId());
errorQuery.setShiftsId(errorEntity.getShiftsId()); errorQuery.setShiftsId(errorEntity.getShiftsId());
...@@ -594,7 +598,7 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract { ...@@ -594,7 +598,7 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
System.out.println(in);*/ System.out.println(in);*/
System.out.println( GoWorkResultEnum.getEnumMap().keySet()); System.out.println(GoWorkResultEnum.getEnumMap().keySet());
} }
......
...@@ -161,7 +161,6 @@ public class AttendanceRecordHikController extends BaseCRUDJsonBodyMappingContro ...@@ -161,7 +161,6 @@ public class AttendanceRecordHikController extends BaseCRUDJsonBodyMappingContro
} }
AddAttendThread addAttendThread = new AddAttendThread(hikService, hikEntity, getContext()); AddAttendThread addAttendThread = new AddAttendThread(hikService, hikEntity, getContext());
ThreadPool.getInstance().execute(addAttendThread); ThreadPool.getInstance().execute(addAttendThread);
//hikService.addAttendanceRecordByQuery(hikEntity, getContext());
model.put("message_info", busiDesc + "成功"); model.put("message_info", busiDesc + "成功");
this.recordSysLog(this.request, busiDesc + " 【成功】"); this.recordSysLog(this.request, busiDesc + " 【成功】");
} catch (Exception e) { } catch (Exception e) {
......
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