Commit 8b0d63ed authored by 赵啸非's avatar 赵啸非

修改考勤汇总

parent 4ab7b745
package com.mortals.xhx.daemon.task;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.PageUtil;
import cn.hutool.core.util.StrUtil;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ITask;
import com.mortals.framework.service.ITaskExcuteService;
import com.mortals.framework.util.DateUtils;
import com.mortals.xhx.base.system.user.model.UserEntity;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity;
import com.mortals.xhx.module.attendance.model.AttendanceRecordHikQuery;
import com.mortals.xhx.module.attendance.service.AttendanceRecordHikService;
import com.mortals.xhx.module.hik.door.model.req.door.DoorEventReq;
import com.mortals.xhx.module.hik.door.model.rsp.door.DoorEventDataInfo;
import com.mortals.xhx.module.hik.door.service.IHikDoorService;
import com.mortals.xhx.module.staff.model.StaffEntity;
import com.mortals.xhx.module.staff.service.StaffService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 同步获取下午海康门禁事件
*/
@Slf4j
@Service("SyncDoorsEventAfterTask")
public class SyncDoorsEventAfterTaskImpl implements ITaskExcuteService {
@Autowired
private AttendanceRecordHikService recordHikService;
@Autowired
private StaffService staffService;
@Autowired
private IHikDoorService hikDoorService;
@Override
public void excuteTask(ITask task) throws AppException {
syncDoorEvents();
calculateAttendByDay();
}
private void calculateAttendByDay() {
Context context = new Context();
UserEntity userEntity = new UserEntity();
userEntity.setCreateUserId(1L);
userEntity.setCreateUserName("system");
userEntity.setCreateTime(new Date());
context.setUser(userEntity);
AttendanceRecordHikQuery recordHikEntity = new AttendanceRecordHikQuery();
// Date todayStart = DateUtil.offsetHour(new Date(), -5).toJdkDate();
// recordHikEntity.setAttendanceDateStart(DateUtils.getCurrStrDate());
recordHikEntity.setAttendanceDateStart(DateUtil.offsetHour(new Date(), -5).toString());
recordHikEntity.setAttendanceDateEnd(DateUtils.getCurrStrDate());
try {
recordHikService.addAttendanceRecordByQuery(recordHikEntity, context);
} catch (Exception e) {
log.error("计算考勤异常", e);
}
}
private void syncDoorEvents() {
DoorEventReq doorEventReq = new DoorEventReq();
List<Integer> eventTypes = new ArrayList<>();
eventTypes.add(196885);
eventTypes.add(196887);
eventTypes.add(196893);
eventTypes.add(196888);
eventTypes.add(196889);
eventTypes.add(196890);
eventTypes.add(196891);
doorEventReq.setEventTypes(eventTypes);
// 获取当天的开始时间
Date todayStart = DateUtil.offsetHour(new Date(), -5).toJdkDate();
// Date todayStart = DateUtil.beginOfDay(new Date());
// 获取当天的结束时间
Date todayEnd = DateUtil.endOfDay(new Date());
doorEventReq.setStartTime(todayStart);
doorEventReq.setEndTime(todayEnd);
doorEventReq.setPageNo(1);
doorEventReq.setPageSize(1);
Rest<DoorEventDataInfo> doorEventsRest = hikDoorService.getDoorEvents(doorEventReq);
log.info("doorEventsRest:{} msg:{}", doorEventsRest.getCode(), doorEventsRest.getMsg());
if (doorEventsRest.getCode() == YesNoEnum.YES.getValue()) {
//分页获取考勤数据
Integer total = doorEventsRest.getData().getTotal();
int pageCount = PageUtil.totalPage(total, 1000);
for (int i = 1; i <= pageCount; i++) {
doorEventReq.setPageNo(i);
doorEventReq.setPageSize(1000);
doorEventsRest = hikDoorService.getDoorEvents(doorEventReq);
log.info("doorEventsRest:{} msg:{},page:{}", doorEventsRest.getCode(), doorEventsRest.getMsg(), doorEventReq.getPageNo());
getDoorEvents(doorEventsRest);
}
}
}
private void getDoorEvents(Rest<DoorEventDataInfo> doorEventsRest) {
//同步当前考勤数据
List<AttendanceRecordHikEntity> attRecords = doorEventsRest.getData().getList().stream().map(item -> {
AttendanceRecordHikEntity recordHikEntity = new AttendanceRecordHikEntity();
recordHikEntity.initAttrValue();
StaffEntity staffCache = staffService.getExtCache(StrUtil.padPre(item.getJobNo(), 8, "0"));
if (ObjectUtils.isEmpty(staffCache)) {
log.info("staff is null !staffCode:{}", item.getJobNo());
return null;
}
recordHikEntity.setStaffId(staffCache.getId());
recordHikEntity.setStaffName(staffCache.getName());
recordHikEntity.setWorkNum(staffCache.getWorkNum());
recordHikEntity.setDeptId(staffCache.getDeptId());
recordHikEntity.setDeptName(staffCache.getDeptName());
recordHikEntity.setPositionId(staffCache.getPositionId());
recordHikEntity.setPositionName(staffCache.getPositionName());
recordHikEntity.setAttendanceDate(item.getEventTime());
recordHikEntity.setAttendanceAddress(item.getDoorName());
recordHikEntity.setEventSource("门禁点");
recordHikEntity.setRemark(item.getEventId());
recordHikEntity.setCreateTime(new Date());
recordHikEntity.setCreateUserName("系统管理员");
recordHikEntity.setCreateUserId(1L);
return recordHikEntity;
}).filter(f -> f != null).collect(Collectors.toList());
log.info("attRecords size:{}", attRecords.size());
List<String> eventIds = attRecords.parallelStream().filter(f -> !ObjectUtils.isEmpty(f) && !ObjectUtils.isEmpty(f.getRemark())).map(i -> i.getRemark()).collect(Collectors.toList());
//查询当天考勤记录是否有重复的 有的 则不添加
AttendanceRecordHikQuery recordHikQuery = new AttendanceRecordHikQuery();
recordHikQuery.setAttendanceDateStart(DateUtil.format(DateUtil.beginOfDay(new Date()), "yyyy-MM-dd"));
recordHikQuery.setAttendanceDateEnd(DateUtil.format(DateUtil.beginOfDay(new Date()), "yyyy-MM-dd"));
recordHikQuery.setRemarkList(eventIds);
Set<String> eventIdSet = recordHikService.find(recordHikQuery).parallelStream().map(i -> i.getRemark()).collect(Collectors.toSet());
//去重 时分秒打卡的 也要去掉重复。
List<AttendanceRecordHikEntity> saveRecordList = attRecords.stream().filter(f -> !eventIdSet.contains(f.getRemark())).collect(Collectors.toList());
if (!ObjectUtils.isEmpty(saveRecordList)) {
//单个插入 去掉重复时间段的打卡记录
for (AttendanceRecordHikEntity recordHikEntity : saveRecordList) {
try {
recordHikService.save(recordHikEntity);
} catch (Exception e) {
log.error("基础考勤数据保存异常", e.getMessage());
}
}
// recordHikService.save(saveRecordList);
}
log.info("saveRecordList size:{}", saveRecordList.size());
}
@Override
public void stopTask(ITask task) throws AppException {
}
}
package com.mortals.xhx.daemon.task; package com.mortals.xhx.daemon.task;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.PageUtil; import cn.hutool.core.util.PageUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
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;
...@@ -23,12 +20,10 @@ import com.mortals.xhx.module.hik.door.service.IHikDoorService; ...@@ -23,12 +20,10 @@ import com.mortals.xhx.module.hik.door.service.IHikDoorService;
import com.mortals.xhx.module.staff.model.StaffEntity; import com.mortals.xhx.module.staff.model.StaffEntity;
import com.mortals.xhx.module.staff.service.StaffService; import com.mortals.xhx.module.staff.service.StaffService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import java.time.Year;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -73,7 +68,7 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService { ...@@ -73,7 +68,7 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
recordHikEntity.setAttendanceDateStart(DateUtil.offsetHour(new Date(), -5).toString()); recordHikEntity.setAttendanceDateStart(DateUtil.offsetHour(new Date(), -5).toString());
recordHikEntity.setAttendanceDateEnd(DateUtils.getCurrStrDate()); recordHikEntity.setAttendanceDateEnd(DateUtils.getCurrStrDate());
try { try {
recordHikService.addAttendanceRecord(recordHikEntity, context); recordHikService.addAttendanceRecordByQuery(recordHikEntity, context);
} catch (Exception e) { } catch (Exception e) {
log.error("计算考勤异常", e); log.error("计算考勤异常", e);
} }
...@@ -123,7 +118,7 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService { ...@@ -123,7 +118,7 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
recordHikEntity.initAttrValue(); recordHikEntity.initAttrValue();
StaffEntity staffCache = staffService.getExtCache(StrUtil.padPre(item.getJobNo(), 8, "0")); StaffEntity staffCache = staffService.getExtCache(StrUtil.padPre(item.getJobNo(), 8, "0"));
if (ObjectUtils.isEmpty(staffCache)) { if (ObjectUtils.isEmpty(staffCache)) {
log.info("staff is null !staffCode:{}",item.getJobNo()); log.info("staff is null !staffCode:{}", item.getJobNo());
return null; return null;
} }
...@@ -140,13 +135,11 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService { ...@@ -140,13 +135,11 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
recordHikEntity.setEventSource("门禁点"); recordHikEntity.setEventSource("门禁点");
recordHikEntity.setRemark(item.getEventId()); recordHikEntity.setRemark(item.getEventId());
recordHikEntity.setCreateTime(new Date()); recordHikEntity.setCreateTime(new Date());
recordHikEntity.setCreateUserName("system"); recordHikEntity.setCreateUserName("系统管理员");
recordHikEntity.setCreateUserId(1L); recordHikEntity.setCreateUserId(1L);
return recordHikEntity; return recordHikEntity;
}).filter(f->f!=null).collect(Collectors.toList()); }).filter(f -> f != null).collect(Collectors.toList());
log.info("attRecords size:{}", attRecords.size()); log.info("attRecords size:{}", attRecords.size());
List<String> eventIds = attRecords.parallelStream().filter(f -> !ObjectUtils.isEmpty(f) && !ObjectUtils.isEmpty(f.getRemark())).map(i -> i.getRemark()).collect(Collectors.toList()); List<String> eventIds = attRecords.parallelStream().filter(f -> !ObjectUtils.isEmpty(f) && !ObjectUtils.isEmpty(f.getRemark())).map(i -> i.getRemark()).collect(Collectors.toList());
//查询当天考勤记录是否有重复的 有的 则不添加 //查询当天考勤记录是否有重复的 有的 则不添加
...@@ -156,9 +149,18 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService { ...@@ -156,9 +149,18 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
recordHikQuery.setRemarkList(eventIds); recordHikQuery.setRemarkList(eventIds);
Set<String> eventIdSet = recordHikService.find(recordHikQuery).parallelStream().map(i -> i.getRemark()).collect(Collectors.toSet()); Set<String> eventIdSet = recordHikService.find(recordHikQuery).parallelStream().map(i -> i.getRemark()).collect(Collectors.toSet());
//去重 时分秒打卡的 也要去掉重复。
List<AttendanceRecordHikEntity> saveRecordList = attRecords.stream().filter(f -> !eventIdSet.contains(f.getRemark())).collect(Collectors.toList()); List<AttendanceRecordHikEntity> saveRecordList = attRecords.stream().filter(f -> !eventIdSet.contains(f.getRemark())).collect(Collectors.toList());
if (!ObjectUtils.isEmpty(saveRecordList)) { if (!ObjectUtils.isEmpty(saveRecordList)) {
recordHikService.save(saveRecordList); //单个插入 去掉重复时间段的打卡记录
for (AttendanceRecordHikEntity recordHikEntity : saveRecordList) {
try {
recordHikService.save(recordHikEntity);
} catch (Exception e) {
log.error("基础考勤数据保存异常", e.getMessage());
}
}
// recordHikService.save(saveRecordList);
} }
log.info("saveRecordList size:{}", saveRecordList.size()); log.info("saveRecordList size:{}", saveRecordList.size());
} }
...@@ -168,20 +170,4 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService { ...@@ -168,20 +170,4 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
public void stopTask(ITask task) throws AppException { public void stopTask(ITask task) throws AppException {
} }
public static void main(String[] args) {
// 获取当前时间的小时数
int hour = DateUtil.hour(new Date(), true);
// 获取当前时间所在小时的开始时间和结束时间
Date startTime = DateUtil.beginOfHour(new Date());
Date endTime = DateUtil.endOfHour(new Date());
// 格式化时间为指定格式
String startTimeStr = DateUtil.format(startTime, "yyyy-MM-dd HH:00:00");
String endTimeStr = DateUtil.format(endTime, "yyyy-MM-dd HH:59:59");
// 输出结果
System.out.println("当前时间所在小时的开始时间:" + startTimeStr);
System.out.println("当前时间所在小时的结束时间:" + endTimeStr);
}
} }
package com.mortals.xhx.module.attendance.model; package com.mortals.xhx.module.attendance.model;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.ArrayList; import java.util.ArrayList;
import cn.hutool.core.date.DateUtil;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel; import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong; import com.mortals.framework.model.BaseEntityLong;
...@@ -29,6 +32,7 @@ public class AttendanceStatEntity extends AttendanceStatVo { ...@@ -29,6 +32,7 @@ public class AttendanceStatEntity extends AttendanceStatVo {
/** /**
* 员工姓名 * 员工姓名
*/ */
@Excel(name = "员工姓名")
private String staffName; private String staffName;
/** /**
* 所属部门 * 所属部门
...@@ -37,6 +41,7 @@ public class AttendanceStatEntity extends AttendanceStatVo { ...@@ -37,6 +41,7 @@ public class AttendanceStatEntity extends AttendanceStatVo {
/** /**
* 所属部门名称 * 所属部门名称
*/ */
@Excel(name = "部门名称")
private String deptName; private String deptName;
/** /**
* 回单位(天) * 回单位(天)
...@@ -312,11 +317,11 @@ public class AttendanceStatEntity extends AttendanceStatVo { ...@@ -312,11 +317,11 @@ public class AttendanceStatEntity extends AttendanceStatVo {
this.earlyLeaveMeeting = BigDecimal.valueOf(0); this.earlyLeaveMeeting = BigDecimal.valueOf(0);
this.year = -1; this.year = DateUtil.year(new Date());
this.month = -1; this.month = DateUtil.month(new Date())+1;
this.day = -1; this.day = DateUtil.dayOfMonth(new Date());
this.remark = ""; this.remark = "";
...@@ -338,4 +343,8 @@ public class AttendanceStatEntity extends AttendanceStatVo { ...@@ -338,4 +343,8 @@ public class AttendanceStatEntity extends AttendanceStatVo {
this.afternoonTimes = 0; this.afternoonTimes = 0;
} }
public static void main(String[] args) {
System.out.println(DateUtil.dayOfMonth(new Date()));
}
} }
\ No newline at end of file
...@@ -4,6 +4,8 @@ import com.mortals.framework.service.ICRUDService; ...@@ -4,6 +4,8 @@ import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.attendance.dao.AttendanceRecordHikDao; import com.mortals.xhx.module.attendance.dao.AttendanceRecordHikDao;
import com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity; import com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity;
import java.util.List;
/** /**
* AttendanceRecordHikService * AttendanceRecordHikService
* *
...@@ -17,9 +19,26 @@ public interface AttendanceRecordHikService extends ICRUDService<AttendanceRecor ...@@ -17,9 +19,26 @@ public interface AttendanceRecordHikService extends ICRUDService<AttendanceRecor
AttendanceRecordHikDao getDao(); AttendanceRecordHikDao getDao();
/** /**
* 将原始数据导入打卡记录表 * 根据查询条件生成打卡记录
* @param entity * @param attendanceRecordHikQuery
*/
void addAttendanceRecordByQuery(AttendanceRecordHikEntity attendanceRecordHikQuery, Context context) throws Exception;
/**
* 根据查询条件生成打卡记录
* @param hikEntity
*/ */
void addAttendanceRecord(AttendanceRecordHikEntity entity, Context context) throws Exception; void addAttendanceRecord(AttendanceRecordHikEntity hikEntity, Context context) throws Exception;
/**
* 根据查原始记录列表生成打卡记录
* @param hikEntityList
*/
void addAttendanceRecordList(List<AttendanceRecordHikEntity> hikEntityList, Context context) throws Exception;
} }
...@@ -6,6 +6,7 @@ import com.mortals.framework.service.IUser; ...@@ -6,6 +6,7 @@ import com.mortals.framework.service.IUser;
import com.mortals.framework.util.StringUtils; import com.mortals.framework.util.StringUtils;
import com.mortals.xhx.base.system.upload.service.UploadService; import com.mortals.xhx.base.system.upload.service.UploadService;
import com.mortals.xhx.common.code.*; import com.mortals.xhx.common.code.*;
import com.mortals.xhx.common.utils.BeanUtil;
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.dept.service.DeptService; import com.mortals.xhx.module.dept.service.DeptService;
...@@ -14,6 +15,7 @@ import com.mortals.xhx.module.staff.model.StaffQuery; ...@@ -14,6 +15,7 @@ import com.mortals.xhx.module.staff.model.StaffQuery;
import com.mortals.xhx.module.staff.service.StaffService; import com.mortals.xhx.module.staff.service.StaffService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.time.DateUtils; import org.apache.commons.lang.time.DateUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
...@@ -60,16 +62,200 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte ...@@ -60,16 +62,200 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
@Autowired @Autowired
private AttendanceRecordErrorService errorService; private AttendanceRecordErrorService errorService;
@Override @Override
public void addAttendanceRecord(AttendanceRecordHikEntity entity, Context context) throws Exception { public void addAttendanceRecord(AttendanceRecordHikEntity hikEntity, Context context) throws Exception {
List<AttendanceRecordHikEntity> hikEntityList = new ArrayList<>();
addAttendanceRecordList(hikEntityList, context);
}
@Override
public void addAttendanceRecordByQuery(AttendanceRecordHikEntity attendanceRecordHikQuery, Context context) throws Exception {
List<AttendanceRecordHikEntity> hikEntityList = attendanceRecordHikService.find(attendanceRecordHikQuery);
addAttendanceRecordList(hikEntityList, context);
}
List<AttendanceRecordHikEntity> hikEntityList = attendanceRecordHikService.find(entity); public void addAttendanceRecordList(List<AttendanceRecordHikEntity> hikEntityList, Context context) throws Exception {
//对考勤数据根据考勤时间进行排序 //对考勤数据根据考勤时间进行排序
List<AttendanceRecordHikEntity> collect = hikEntityList.stream().sorted(Comparator.comparing(AttendanceRecordHikEntity::getAttendanceDate)).collect(Collectors.toList()); List<AttendanceRecordHikEntity> collect = hikEntityList.stream().sorted(Comparator.comparing(AttendanceRecordHikEntity::getAttendanceDate)).collect(Collectors.toList());
//根据工号对考勤数据进行分组 //根据工号对考勤数据进行分组
Map<String, List<AttendanceRecordHikEntity>> listMap = collect.stream().collect(Collectors.groupingBy(AttendanceRecordHikEntity::getWorkNum)); Map<String, List<AttendanceRecordHikEntity>> listMap = collect.stream().collect(Collectors.groupingBy(AttendanceRecordHikEntity::getWorkNum));
//Map<String, Map<String, List<AttendanceRecordHikEntity>>> groupMap = collect.stream().collect(Collectors.groupingBy(AttendanceRecordHikEntity::getWorkNum, Collectors.groupingBy(x -> com.mortals.framework.util.DateUtils.getDateTimeStr(x.getAttendanceDate(), "yyyy-MM-dd")))); //Map<String, Map<String, List<AttendanceRecordHikEntity>>> groupMap = collect.stream().collect(Collectors.groupingBy(AttendanceRecordHikEntity::getWorkNum, Collectors.groupingBy(x -> com.mortals.framework.util.DateUtils.getDateTimeStr(x.getAttendanceDate(), "yyyy-MM-dd"))));
//map遍历.先把所有键取出来 for (Map.Entry<String, List<AttendanceRecordHikEntity>> itemEntry : listMap.entrySet()) {
String workNum = itemEntry.getKey();
List<AttendanceRecordHikEntity> recordHikEntityList = itemEntry.getValue();
//对按照工号分组了的数据recordHikEntityList进行时间分组
// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
Map<String, List<AttendanceRecordHikEntity>> dateRecordMap = recordHikEntityList.stream().collect(Collectors.groupingBy(hikEntity -> DateUtil.formatDate(hikEntity.getAttendanceDate())));
for (Map.Entry<String, List<AttendanceRecordHikEntity>> dateEntry : dateRecordMap.entrySet()) {
String dateStr = dateEntry.getKey();
List<AttendanceRecordHikEntity> attendanceRecordHikEntities = dateEntry.getValue();
//对相同工号的人员进行遍历判断考勤规则
AttendanceRecordEntity attendanceRecordEntity = new AttendanceRecordEntity();
attendanceRecordEntity.initAttrValue();
List<AttendanceRecordDetailEntity> detailEntityList = new ArrayList<>();
for (AttendanceRecordHikEntity item : attendanceRecordHikEntities) {
//对主表的对象进行赋值
attendanceRecordEntity.setStaffId(item.getStaffId());
attendanceRecordEntity.setStaffName(item.getStaffName());
attendanceRecordEntity.setDeptId(item.getDeptId());
attendanceRecordEntity.setDeptName(item.getDeptName());
attendanceRecordEntity.setPositionId(item.getPositionId());
attendanceRecordEntity.setPositionName(item.getPositionName());
attendanceRecordEntity.setWorkNum(item.getWorkNum());
attendanceRecordEntity.setAttendanceDate(item.getAttendanceDate());
attendanceRecordEntity.setCreateTime(new Date());
attendanceRecordEntity.setCreateUserId(this.getContextUserId(context));
//获取考勤打卡时间
Date attendanceDate = item.getAttendanceDate();
//通过工号查询员工信息
StaffEntity staffEntity = staffService.getExtCache(StrUtil.padPre(item.getWorkNum(), 8, "0"));
if (ObjectUtils.isEmpty(staffEntity)) {
log.info("staffEntity is null ,workNum:{}", StrUtil.padPre(item.getWorkNum(), 8, "0"));
continue;
}
//通过员工id查询考勤组人员信息
List<AttendanceGroupStaffEntity> attendanceGroupStaffEntities = attendanceGroupStaffService.find(new AttendanceGroupStaffQuery().staffId(staffEntity.getId()));
//查询该考勤人员,如果查出来的考勤人员信息list长度为1 则该考勤人员只有一个考勤组
if (!ObjectUtils.isEmpty(attendanceGroupStaffEntities) && attendanceGroupStaffEntities.size() == 1)
checkAttendGroupByOne(attendanceRecordEntity, detailEntityList, attendanceDate, attendanceGroupStaffEntities.get(0), context);
//如果考勤人员信息list长度大于1 则该考勤人员有多个考勤组.
if (StringUtils.isNotNull(attendanceGroupStaffEntities) && attendanceGroupStaffEntities.size() > 1) {
for (AttendanceGroupStaffEntity groupStaffEntity : attendanceGroupStaffEntities) {
//多考勤组 todo 暂时和单一覆盖
checkAttendGroupByOne(attendanceRecordEntity, detailEntityList, attendanceDate, groupStaffEntity, context);
}
}
}
//处理异常打卡,所以异常打卡的 都新增一条记录
List<AttendanceRecordErrorEntity> errorEntityList = new ArrayList<>();
for (AttendanceRecordDetailEntity recordDetailEntity : detailEntityList) {
//SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//SimpleDateFormat sdft = new SimpleDateFormat("HH:mm:ss");
Integer goWorkResult = recordDetailEntity.getGoWorkResult();
Integer offWorkResult = recordDetailEntity.getOffWorkResult();
//判断上班
if (GoWorkResultEnum.正常.getValue() != goWorkResult) {
AttendanceRecordErrorEntity errorEntity = new AttendanceRecordErrorEntity();
BeanUtils.copyProperties(attendanceRecordEntity, errorEntity, new String[]{"id"});
Date goWorkDate = attendanceClassDetailService.selectOne(new AttendanceClassDetailQuery().id(recordDetailEntity.getShiftsId())).getGoWorkDate();
errorEntity.setGoOffDateTime(goWorkDate);
if (!ObjectUtils.isEmpty(recordDetailEntity.getGoWorkDate())) {
errorEntity.setErrorDateTime(recordDetailEntity.getGoWorkDate());
errorEntity.setActualAttendanceDateTime(recordDetailEntity.getGoWorkDate());
} else {
errorEntity.setErrorDateTime(goWorkDate);
}
if (GoWorkResultEnum.早退.getValue() == recordDetailEntity.getGoWorkResult()) {
errorEntity.setErrorStatus(ErrorStatusEnum.早退.getValue());
}
if (GoWorkResultEnum.迟到.getValue() == recordDetailEntity.getGoWorkResult()) {
errorEntity.setErrorStatus(ErrorStatusEnum.迟到.getValue());
}
if (GoWorkResultEnum.缺卡.getValue() == recordDetailEntity.getGoWorkResult()) {
errorEntity.setErrorStatus(ErrorStatusEnum.缺卡.getValue());
}
errorEntity.setProcessStatus(YesNoEnum.NO.getValue());
errorEntity.setCreateTime(new Date());
errorEntity.setCreateUserId(this.getContextUserId(context));
errorEntityList.add(errorEntity);
}
//判断下班
if (OffWorkResultEnum.正常.getValue() != offWorkResult) {
AttendanceRecordErrorEntity errorEntity = new AttendanceRecordErrorEntity();
errorEntity.initAttrValue();
BeanUtils.copyProperties(attendanceRecordEntity, errorEntity, new String[]{"id"});
Date offWorkDate = attendanceClassDetailService.selectOne(new AttendanceClassDetailQuery().id(recordDetailEntity.getShiftsId())).getOffWorkDate();
errorEntity.setGoOffDateTime(offWorkDate);
if (!ObjectUtils.isEmpty(recordDetailEntity.getGoWorkDate())) {
errorEntity.setErrorDateTime(recordDetailEntity.getGoWorkDate());
errorEntity.setActualAttendanceDateTime(recordDetailEntity.getGoWorkDate());
} else {
errorEntity.setErrorDateTime(offWorkDate);
}
if (OffWorkResultEnum.缺卡.getValue() == recordDetailEntity.getOffWorkResult()) {
errorEntity.setErrorStatus(ErrorStatusEnum.缺卡.getValue());
}
if (OffWorkResultEnum.早退.getValue() == recordDetailEntity.getOffWorkResult()) {
errorEntity.setErrorStatus(ErrorStatusEnum.早退.getValue());
}
if (OffWorkResultEnum.迟到.getValue() == recordDetailEntity.getOffWorkResult()) {
errorEntity.setErrorStatus(ErrorStatusEnum.迟到.getValue());
}
errorEntity.setProcessStatus(YesNoEnum.NO.getValue());
errorEntity.setCreateTime(new Date());
errorEntity.setCreateUserId(this.getContextUserId(context));
errorEntityList.add(errorEntity);
}
}
if (!ObjectUtils.isEmpty(detailEntityList)) {
if (!ObjectUtils.isEmpty(detailEntityList)) {
errorService.save(errorEntityList, context);
}
attendanceRecordEntity.setShiftsName(detailEntityList.get(0).getShiftsName());
attendanceRecordEntity.setShiftsId(detailEntityList.get(0).getShiftsId());
attendanceRecordEntity.setAttendanceRecordDetailList(detailEntityList);
//判断签到 只要存在一次正常打卡详细记录 就判断签到
for (AttendanceRecordDetailEntity detailEntity : detailEntityList) {
if (GoWorkResultEnum.正常.getValue() == detailEntity.getGoWorkResult() || GoWorkResultEnum.迟到.getValue() == detailEntity.getOffWorkResult()) {
attendanceRecordEntity.setSignInResult(YesNoEnum.YES.getValue());
break;
}
}
for (AttendanceRecordDetailEntity detailEntity : detailEntityList) {
if (OffWorkResultEnum.正常.getValue() == detailEntity.getOffWorkResult() || OffWorkResultEnum.早退.getValue() == detailEntity.getOffWorkResult()) {
attendanceRecordEntity.setSignOutResult(YesNoEnum.YES.getValue());
break;
}
}
for (AttendanceRecordDetailEntity detailEntity : detailEntityList) {
if (OffWorkResultEnum.缺卡.getValue() == detailEntity.getOffWorkResult()) {
attendanceRecordEntity.setPunchResult(YesNoEnum.NO.getValue());
break;
}
if (OffWorkResultEnum.缺卡.getValue() == detailEntity.getOffWorkResult()) {
attendanceRecordEntity.setPunchResult(YesNoEnum.NO.getValue());
break;
}
}
if (YesNoEnum.YES.getValue() == attendanceRecordEntity.getSignInResult() && YesNoEnum.YES.getValue() == attendanceRecordEntity.getSignOutResult()) {
attendanceRecordEntity.setPunchResult(YesNoEnum.YES.getValue());
}
attendanceRecordEntity.setAttendType("现场打卡");
//判断是否存在记录 如果存在 则更新 维度 staffId attendanceDate shiftsId attendanceGroupId
AttendanceRecordQuery query = new AttendanceRecordQuery();
query.setStaffId(attendanceRecordEntity.getStaffId());
query.setShiftsId(attendanceRecordEntity.getShiftsId());
query.setAttendanceGroupId(attendanceRecordEntity.getAttendanceGroupId());
query.setAttendanceDate(attendanceRecordEntity.getAttendanceDate());
AttendanceRecordEntity recordEntity = attendanceRecordService.selectOne(query);
if (!ObjectUtils.isEmpty(recordEntity)) {
attendanceRecordEntity.setId(recordEntity.getId());
attendanceRecordEntity.setUpdateTime(new Date());
attendanceRecordEntity.setUpdateUserId(this.getContextUserId(context));
attendanceRecordService.update(attendanceRecordEntity, context);
} else {
attendanceRecordService.save(attendanceRecordEntity, context);
}
}
}
}
/* //map遍历.先把所有键取出来
Set<String> workNumSet = listMap.keySet(); Set<String> workNumSet = listMap.keySet();
//根据键取出value //根据键取出value
for (String workNum : workNumSet) { for (String workNum : workNumSet) {
...@@ -119,7 +305,6 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte ...@@ -119,7 +305,6 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
AttendanceGroupEntity attendanceGroupEntity = attendanceGroupService.selectOne(attendanceGroupQuery.id(attendanceGroupStaffEntities.get(0).getGroupId())); AttendanceGroupEntity attendanceGroupEntity = attendanceGroupService.selectOne(attendanceGroupQuery.id(attendanceGroupStaffEntities.get(0).getGroupId()));
attendanceRecordEntity.setAttendanceGroupId(attendanceGroupEntity.getId()); attendanceRecordEntity.setAttendanceGroupId(attendanceGroupEntity.getId());
attendanceRecordEntity.setAttendanceGroupName(attendanceGroupEntity.getGroupName()); attendanceRecordEntity.setAttendanceGroupName(attendanceGroupEntity.getGroupName());
//log.info("attendanceGroupEntity.getId()=={}", attendanceGroupEntity.getId()); //log.info("attendanceGroupEntity.getId()=={}", attendanceGroupEntity.getId());
//查询考勤组详细信息获取班次 //查询考勤组详细信息获取班次
AttendanceGroupFixedworkEntity attendanceGroupFixedworkEntity = attendanceGroupFixedworkService.selectOne(new AttendanceGroupFixedworkQuery() AttendanceGroupFixedworkEntity attendanceGroupFixedworkEntity = attendanceGroupFixedworkService.selectOne(new AttendanceGroupFixedworkQuery()
...@@ -455,17 +640,117 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte ...@@ -455,17 +640,117 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
attendanceRecordService.save(attendanceRecordEntity, context); attendanceRecordService.save(attendanceRecordEntity, context);
} }
} }
}
}*/
} }
private void checkAttendGroupByOne(AttendanceRecordEntity attendanceRecordEntity, List<AttendanceRecordDetailEntity> detailEntityList, Date attendanceDate, AttendanceGroupStaffEntity attendanceGroupStaffEntity, Context context) {
//查询考勤组
AttendanceGroupEntity attendanceGroupEntity = attendanceGroupService.get(attendanceGroupStaffEntity.getGroupId(), context);
attendanceRecordEntity.setAttendanceGroupId(attendanceGroupEntity == null ? 0L : attendanceGroupEntity.getId());
attendanceRecordEntity.setAttendanceGroupName(attendanceGroupEntity == null ? "" : attendanceGroupEntity.getGroupName());
//查询考勤组详细信息获取班次
AttendanceGroupFixedworkEntity attendanceGroupFixedworkEntity = attendanceGroupFixedworkService.selectOne(new AttendanceGroupFixedworkQuery()
.groupId(attendanceGroupEntity.getId()));
//判断当前考勤日期为周几
String week = this.getWeek(attendanceDate);
//log.info("week:{}", week);
//通过考勤日期的星期拿到班次id.
if (ObjectUtils.isEmpty(attendanceGroupFixedworkEntity)) {
log.info("attendanceGroupFixedworkEntity is null ! groupId:{}", attendanceGroupEntity.getId());
return;
}
Long weekClassId = this.getWeekClassId(attendanceGroupFixedworkEntity, week);
//log.info("weekClassId:{}", weekClassId);
//weekClassId为-1 则不在考勤
if (weekClassId == -1L) {
//跳过本次循环
return;
}
//获取班次信息
AttendanceClassEntity attendanceClassEntity = attendanceClassService.get(weekClassId);
if (ObjectUtils.isEmpty(attendanceClassEntity)) {
log.info("attendanceClassEntity is null ,weekClassId:{}", weekClassId);
return;
}
//获取班次详细信息
List<AttendanceClassDetailEntity> attendanceClassDetailEntities = attendanceClassDetailService.find(new AttendanceClassDetailQuery().classId(attendanceClassEntity.getId()));
Integer orderNum = 0;
//构造数据
if (ObjectUtils.isEmpty(detailEntityList)) {
for (AttendanceClassDetailEntity classDetailEntity : attendanceClassDetailEntities) {
orderNum++;
AttendanceRecordDetailEntity recordDetailEntity = new AttendanceRecordDetailEntity();
recordDetailEntity.setShiftsId(classDetailEntity.getId());
recordDetailEntity.setShiftsName(classDetailEntity.getClassName());
recordDetailEntity.setGoWorkResult(GoWorkResultEnum.缺卡.getValue());
recordDetailEntity.setOffWorkResult(GoWorkResultEnum.缺卡.getValue());
recordDetailEntity.setOrderNum(orderNum);
detailEntityList.add(recordDetailEntity);
}
}
for (AttendanceClassDetailEntity classDetail : attendanceClassDetailEntities) {
//计算区间范围
//上班打卡前时间
Date goWorkDateBefore = DateUtil.offsetMinute(classDetail.getGoWorkDate(), -classDetail.getGoWorkDateBefore());
//上班打卡后时间
Date goWorkDateAfter = DateUtil.offsetMinute(classDetail.getGoWorkDate(), classDetail.getGoWorkDateAfter());
// 下班打卡前时间
Date offWorkDateBefore = DateUtil.offsetMinute(classDetail.getOffWorkDate(), -classDetail.getOffWorkDateBefore());
//下班打卡后时间
Date offWorkDateAfter = DateUtil.offsetMinute(classDetail.getOffWorkDate(), classDetail.getOffWorkDateAfter());
//判断考勤时间是否在上班打卡区间内 true 在 false 不在
boolean goInTime = DateUtil.isIn(attendanceDate, goWorkDateBefore, goWorkDateAfter);
//判断考勤时间是否在下班打卡区间内
boolean offInTime = DateUtil.isIn(attendanceDate, offWorkDateBefore, offWorkDateAfter);
if (goInTime == false && offInTime == false) {
log.info("考勤时间不在上班区间与下班区间中,不做处理!attendDate:{}", DateUtil.formatDateTime(attendanceDate));
continue;
}
if (goInTime) {
//如果是上班打卡区间范围,判断是否迟到
boolean inTime = DateUtil.isIn(attendanceDate, goWorkDateBefore, classDetail.getGoWorkDate());
if (inTime) {
for (AttendanceRecordDetailEntity attendanceRecordDetailEntity : detailEntityList) {
if (attendanceRecordDetailEntity.getShiftsId() == classDetail.getClassId()) {
attendanceRecordDetailEntity.setGoWorkResult(GoWorkResultEnum.正常.getValue());
attendanceRecordDetailEntity.setGoWorkDate(attendanceDate);
}
}
} else {
for (AttendanceRecordDetailEntity attendanceRecordDetailEntity : detailEntityList) {
if (attendanceRecordDetailEntity.getShiftsId() == classDetail.getClassId()) {
attendanceRecordDetailEntity.setGoWorkResult(GoWorkResultEnum.迟到.getValue());
attendanceRecordDetailEntity.setGoWorkDate(attendanceDate);
}
}
}
}
if (offInTime) {
boolean inTime = DateUtil.isIn(attendanceDate, classDetail.getOffWorkDate(), offWorkDateAfter);
if (inTime) {
for (AttendanceRecordDetailEntity attendanceRecordDetailEntity : detailEntityList) {
if (attendanceRecordDetailEntity.getShiftsId().longValue() == classDetail.getId().longValue()) {
attendanceRecordDetailEntity.setGoWorkResult(GoWorkResultEnum.正常.getValue());
attendanceRecordDetailEntity.setGoWorkDate(attendanceDate);
}
}
} else {
for (AttendanceRecordDetailEntity attendanceRecordDetailEntity : detailEntityList) {
if (attendanceRecordDetailEntity.getShiftsId().longValue() == classDetail.getId().longValue()) {
attendanceRecordDetailEntity.setOffWorkResult(GoWorkResultEnum.早退.getValue());
attendanceRecordDetailEntity.setOffWorkDate(attendanceDate);
}
}
}
}
} }
} }
public String getWeek(Date date) {
public String getWeek(Date date) {
// Get the day of the week (1 = Sunday, 2 = Monday, ..., 7 = Saturday) // Get the day of the week (1 = Sunday, 2 = Monday, ..., 7 = Saturday)
int dayOfWeek = DateUtil.dayOfWeek(date); int dayOfWeek = DateUtil.dayOfWeek(date);
// Map the numeric day of the week to its corresponding Chinese name // Map the numeric day of the week to its corresponding Chinese name
String[] dayOfWeekNames = new String[]{ String[] dayOfWeekNames = new String[]{
"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"
...@@ -473,73 +758,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte ...@@ -473,73 +758,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
// Get the Chinese name of the day of the week // Get the Chinese name of the day of the week
String dayOfWeekName = dayOfWeekNames[dayOfWeek - 1]; String dayOfWeekName = dayOfWeekNames[dayOfWeek - 1];
return dayOfWeekName; return dayOfWeekName;
//
// SimpleDateFormat sdf = new SimpleDateFormat("EEEE");
// String week = sdf.format(date);
// return week;
}
/**
* 获取通过星期获取班次id 如果返参为-1 则不在考勤
*
* @return
*/
/* public Long getWeekClassId(AttendanceGroupFixedworkEntity attendanceGroupFixedworkEntity, String week) {
Long weekClassId = 0L;
switch (week) {
case "星期一":
if (attendanceGroupFixedworkEntity.getMonday() == 0) {
weekClassId = -1L;
return weekClassId;
}
weekClassId = attendanceGroupFixedworkEntity.getMondayClassId();
break;
case "星期二":
if (attendanceGroupFixedworkEntity.getTuesday() == 0) {
weekClassId = -1L;
return weekClassId;
} }
weekClassId = attendanceGroupFixedworkEntity.getTuesdayClassId();
break;
case "星期三":
if (attendanceGroupFixedworkEntity.getWednesday() == 0) {
weekClassId = -1L;
return weekClassId;
}
weekClassId = attendanceGroupFixedworkEntity.getWednesdayClassId();
break;
case "星期四":
if (attendanceGroupFixedworkEntity.getThursday() == 0) {
weekClassId = -1L;
return weekClassId;
}
weekClassId = attendanceGroupFixedworkEntity.getThursdayClassId();
break;
case "星期五":
if (attendanceGroupFixedworkEntity.getFriday() == 0) {
weekClassId = -1L;
return weekClassId;
}
weekClassId = attendanceGroupFixedworkEntity.getFridayClassId();
break;
case "星期六":
if (attendanceGroupFixedworkEntity.getSaturday() == 0) {
weekClassId = -1L;
return weekClassId;
}
weekClassId = attendanceGroupFixedworkEntity.getSaturdayClassId();
break;
case "星期日":
if (attendanceGroupFixedworkEntity.getSunday() == 0) {
weekClassId = -1L;
return weekClassId;
}
weekClassId = attendanceGroupFixedworkEntity.getSundayClassId();
break;
}
return weekClassId;
}*/
/** /**
* 获取通过星期获取班次id 如果返参为-1 则不在考勤 * 获取通过星期获取班次id 如果返参为-1 则不在考勤
......
...@@ -127,7 +127,7 @@ public class AttendanceRecordHikController extends BaseCRUDJsonBodyMappingContro ...@@ -127,7 +127,7 @@ public class AttendanceRecordHikController extends BaseCRUDJsonBodyMappingContro
if (ObjectUtils.isEmpty(hikEntity.getAttendanceDateStart())) { if (ObjectUtils.isEmpty(hikEntity.getAttendanceDateStart())) {
throw new AppException("请选择开始日期"); throw new AppException("请选择开始日期");
} }
hikService.addAttendanceRecord(hikEntity, getContext()); 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) {
......
package com.mortals.xhx.module.dept.model; package com.mortals.xhx.module.dept.model;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.Date;
import java.util.ArrayList; import cn.hutool.core.date.DateUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel; import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.dept.model.vo.DeptPerformStatVo; import com.mortals.xhx.module.dept.model.vo.DeptPerformStatVo;
import lombok.Data; import lombok.Data;
/** /**
* 部门绩效分数统计实体对象 * 部门绩效分数统计实体对象
* *
* @author zxfei * @author zxfei
* @date 2023-07-14 * @date 2023-07-20
*/ */
@Data @Data
public class DeptPerformStatEntity extends DeptPerformStatVo { public class DeptPerformStatEntity extends DeptPerformStatVo {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -165,10 +163,10 @@ public class DeptPerformStatEntity extends DeptPerformStatVo { ...@@ -165,10 +163,10 @@ public class DeptPerformStatEntity extends DeptPerformStatVo {
this.remark = ""; this.remark = "";
this.year = -1; this.year = DateUtil.year(new Date());
this.month = -1; this.month = DateUtil.month(new Date())+1;
this.day = -1; this.day = DateUtil.dayOfMonth(new Date());
} }
} }
\ No newline at end of file
...@@ -12,6 +12,8 @@ import com.mortals.xhx.base.system.param.service.ParamService; ...@@ -12,6 +12,8 @@ import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.base.system.user.model.UserQuery; import com.mortals.xhx.base.system.user.model.UserQuery;
import com.mortals.xhx.base.system.user.service.UserService; import com.mortals.xhx.base.system.user.service.UserService;
import com.mortals.xhx.common.code.*; import com.mortals.xhx.common.code.*;
import com.mortals.xhx.module.dept.model.DeptQuery;
import com.mortals.xhx.module.dept.service.DeptService;
import com.mortals.xhx.module.perform.model.PerformRulesQuery; import com.mortals.xhx.module.perform.model.PerformRulesQuery;
import com.mortals.xhx.module.perform.model.vo.AppealInfo; import com.mortals.xhx.module.perform.model.vo.AppealInfo;
import com.mortals.xhx.module.perform.model.vo.AppealSummaryQuery; import com.mortals.xhx.module.perform.model.vo.AppealSummaryQuery;
...@@ -65,6 +67,8 @@ public class PerformAttendAppealController extends BaseCRUDJsonBodyMappingContro ...@@ -65,6 +67,8 @@ public class PerformAttendAppealController extends BaseCRUDJsonBodyMappingContro
private UserService userService; private UserService userService;
@Autowired @Autowired
private PerformRulesService rulesService; private PerformRulesService rulesService;
@Autowired
private DeptService deptService;
public PerformAttendAppealController() { public PerformAttendAppealController() {
...@@ -84,8 +88,9 @@ public class PerformAttendAppealController extends BaseCRUDJsonBodyMappingContro ...@@ -84,8 +88,9 @@ public class PerformAttendAppealController extends BaseCRUDJsonBodyMappingContro
this.addDict(model, "reviewResult", paramService.getParamBySecondOrganize("PerformAttendAppeal", "reviewResult")); this.addDict(model, "reviewResult", paramService.getParamBySecondOrganize("PerformAttendAppeal", "reviewResult"));
this.addDict(model, "reviewSource", paramService.getParamBySecondOrganize("PerformAttendAppeal", "reviewSource")); this.addDict(model, "reviewSource", paramService.getParamBySecondOrganize("PerformAttendAppeal", "reviewSource"));
this.addDict(model, "irregularType", IrregularTypeEnum.getEnumMap()); this.addDict(model, "irregularType", IrregularTypeEnum.getEnumMap());
this.addDict(model, "irregularOtherType", IrregularOtherTypeEnum.getEnumMap()); this.addDict(model, "irregularOtherType", IrregularOtherTypeEnum.getEnumMap());
this.addDict(model, "deptId", deptService.find(new DeptQuery()).stream().collect(Collectors.toMap(x -> x.getId().toString(), y -> y.getDeptName())));
super.init(model, context); super.init(model, context);
} }
......
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