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();
log.info("考勤计算日期:{} 完成,耗时:{}ms",curDate.toDateStr(), stopWatch.getLastTaskTimeMillis());
} }
stopWatch.stop();
log.info("完成,耗时:{}ms", 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;
} }
...@@ -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