Commit 5c2ce90c authored by 赵啸非's avatar 赵啸非

修改考勤汇总查询

parent 5021366a
package com.mortals.xhx.base.framework.exception;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpStatus;
import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.exception.AppException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.exception.AppException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 统一异常处理
*/
@ControllerAdvice
@Slf4j
public class ExceptionHandle {
private final static Logger log = LoggerFactory.getLogger(ExceptionHandle.class);
@Autowired
private HttpServletRequest request;
@Autowired
private HttpServletResponse response;
public static final String KEY_RESULT_CODE = "code";
public static final String KEY_RESULT_MSG = "msg";
public static final String KEY_RESULT_DATA = "data";
public static final int VALUE_RESULT_FAILURE = -1;
public static final String KEY_RESULT_CODE = "code";
public static final String KEY_RESULT_MSG = "msg";
public static final String KEY_RESULT_DATA = "data";
public static final int VALUE_RESULT_FAILURE = -1;
@ExceptionHandler(value = Exception.class)
@ResponseBody
public String handle(Exception e) {
JSONObject ret = new JSONObject();
ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
if (e instanceof AppException) {
StackTraceElement stack = e.getStackTrace()[0];
log.error("[business error]=========stack message[{}],[{},method:{},line{}][{}]", e.getMessage(),
stack.getClassName(), stack.getMethodName(), stack.getLineNumber(), e.getClass().getName());
AppException ex = (AppException) e;
ret.put(KEY_RESULT_MSG, ex.getMessage());
} else {
log.error("[system error]", e);
ret.put(KEY_RESULT_MSG, "unknown exception!");
}
return ret.toJSONString();
}
@ExceptionHandler(value = Exception.class)
@ResponseBody
public String handle(Exception e) {
JSONObject ret = new JSONObject();
ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
if (e instanceof AppException) {
StackTraceElement stack = e.getStackTrace()[0];
log.error("[business error]=========stack message[{}],[{},method:{},line{}][{}]", e.getMessage(),
stack.getClassName(), stack.getMethodName(), stack.getLineNumber(), e.getClass().getName());
AppException ex = (AppException) e;
ret.put(KEY_RESULT_MSG, ex.getMessage());
}
if (e instanceof HttpMessageNotReadableException) {
log.error("[system error]", e);
response.setStatus(HttpStatus.HTTP_BAD_REQUEST);
ret.put(KEY_RESULT_MSG, "参数错误,"+ StrUtil.subBefore(e.getMessage(), ";", false));
} else {
log.error("[system error]", e);
response.setStatus(HttpStatus.HTTP_INTERNAL_ERROR);
ret.put(KEY_RESULT_MSG, "未知错误!" + e.getMessage());
}
return ret.toJSONString();
}
}
......@@ -52,7 +52,7 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
private AttendanceRecordDetailService attendanceRecordDetailService;
private Map<Long, AttendanceClassDetailEntity> classDetailEntityMap ;
private Map<Long, AttendanceClassDetailEntity> classDetailEntityMap;
public FixWorkOtherAttendance(int type) {
super(type);
......@@ -75,7 +75,6 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
@Override
void initData() {
}
@Override
......@@ -85,9 +84,6 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
Map<Long, AttendanceClassEntity> classEntityMap = commonData.getClassEntityMap();
Map<Long, List<AttendanceGroupFixedworkSpecialEntity>> fixedSpecialGroupMap = commonData.getFixedSpecialGroupMap();
this.classDetailEntityMap = commonData.getClassDetailEntityMap();
// Map<Long, List<AttendanceLeaveRecordEntity>> leaveRecordGroupMap = commonData.getLeaveRecordGroupMap();
if (ObjectUtils.isEmpty(attendanceGroupFixedworkEntity)) {
log.info("attendanceGroupFixedworkEntity is null ! groupId:{}", commonData.getAttendanceGroupEntity().getId());
return;
......@@ -116,15 +112,12 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
return;
}
}
//判断当天是否请假 请假分为多个区间段与请假类型。
AttendanceLeaveRecordQuery leaveRecordQuery = new AttendanceLeaveRecordQuery();
leaveRecordQuery.setLeavePersonId(commonData.getStaffId());
leaveRecordQuery.setAuditResultList(Arrays.asList(1, 4));
boolean isLeave = false;
List<AttendanceLeaveRecordEntity> leaveRecordEntities = attendanceLeaveRecordService.find(leaveRecordQuery);
//List<AttendanceLeaveRecordEntity> leaveRecordEntities = leaveRecordGroupMap.get(commonData.getStaffId());
List<AttendanceLeaveRecordEntity> leaveRecords = null;
if (!ObjectUtils.isEmpty(leaveRecordEntities)) {
//判断当日日期中 是否有请假记录
......@@ -143,34 +136,7 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
isLeave = true;
}
}
/*AttendanceLeaveRecordEntity attendanceLeaveRecordEntity = attendanceLeaveRecordService.selectOne(leaveRecordQuery);
if (!ObjectUtils.isEmpty(attendanceLeaveRecordEntity)) {
// log.info("当天员工请假,不做考勤处理!staffId:{},name:{}", commonData.getStaffId(), attendanceLeaveRecordEntity.getLeavePerson());
//删除当日考勤记录与详细
AttendanceRecordQuery attendanceRecordQuery = new AttendanceRecordQuery();
attendanceRecordQuery.setStaffId(commonData.getStaffId());
attendanceRecordQuery.setAttendanceDateStart(commonData.getDateStr());
attendanceRecordQuery.setAttendanceDateEnd(commonData.getDateStr());
List<AttendanceRecordEntity> attendanceRecordEntities = attendanceRecordService.find(attendanceRecordQuery);
if (!ObjectUtils.isEmpty(attendanceRecordEntities)) {
//删除
Long[] delIds = attendanceRecordEntities.stream().map(AttendanceRecordEntity::getId).toArray(Long[]::new);
attendanceRecordService.remove(delIds, commonData.getContext());
AttendanceRecordDetailQuery detailQuery = new AttendanceRecordDetailQuery();
detailQuery.setRecordIdList(Arrays.asList(delIds));
List<AttendanceRecordDetailEntity> detailEntities = attendanceRecordDetailService.find(detailQuery);
if (!ObjectUtils.isEmpty(detailEntities)) {
attendanceRecordDetailService.remove(detailEntities.stream().map(AttendanceRecordDetailEntity::getId).toArray(Long[]::new), commonData.getContext());
}
}
//删除当天该员工的异常记录与打卡考勤记录
deleteErrorRecord(commonData.getDateStr(), commonData.getStaffId(), commonData.getContext());
return;
}*/
//特殊日期考勤配置
//List<AttendanceGroupFixedworkSpecialEntity> specialEntities = specialService.find(new AttendanceGroupFixedworkSpecialQuery().fixedWorkId(attendanceGroupFixedworkEntity.getId()));
List<AttendanceGroupFixedworkSpecialEntity> specialEntities = fixedSpecialGroupMap.get(attendanceGroupFixedworkEntity.getId());
if (!ObjectUtils.isEmpty(specialEntities)) {
//分组 需要考勤与不需要考勤
......@@ -226,18 +192,7 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
log.info("attendanceClassEntity is null ,weekClassId:{}", weekClassId);
return;
}
//查询当天,该人员的考勤记录
/* AttendanceRecordHikQuery recordHikQuery = new AttendanceRecordHikQuery();
recordHikQuery.setAttendanceDateStart(commonData.getDateStr());
recordHikQuery.setAttendanceDateEnd(commonData.getDateStr());
recordHikQuery.setStaffId(commonData.getStaffId());
recordHikQuery.setOrderColList(Arrays.asList(new OrderCol("attendanceDate")));
List<AttendanceRecordHikEntity> recordHikEntities = recordHikService.find(recordHikQuery);*/
List<AttendanceRecordHikEntity> recordHikEntities = commonData.getRecordHikEntities();
List<AttendanceClassDetailEntity> attendanceClassDetailEntities = attendanceClassEntity.getAttendanceClassDetailList();
Integer orderNum = 0;
......@@ -248,9 +203,7 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
recordDetailEntity.setShiftsName(classDetailEntity.getClassName());
recordDetailEntity.setGoWorkResult(GoWorkResultEnum.缺卡.getValue());
//recordDetailEntity.setGoWorkDate(DateUtil.parse(commonData.getDateStr() + " " + DateUtil.formatTime(classDetailEntity.getGoWorkDate())));
recordDetailEntity.setOffWorkResult(GoWorkResultEnum.缺卡.getValue());
//recordDetailEntity.setOffWorkDate(DateUtil.parse(commonData.getDateStr() + " " + DateUtil.formatTime(classDetailEntity.getOffWorkDate())));
recordDetailEntity.setOrderNum(orderNum);
commonData.getDetailEntityList().add(recordDetailEntity);
}
......@@ -340,9 +293,7 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
}
}
// 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().setClassName(attendanceClassDetailEntity == null ? "" : attendanceClassDetailEntity.getClassName());
}
......@@ -372,7 +323,6 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
}
}
}
//生成异常记录
genErrorAttendRecord(commonData.getContext(), commonData.getDateStr(), commonData.getAttendanceRecordEntity(), commonData.getDetailEntityList());
......@@ -387,8 +337,6 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
*/
private void calLeaveDate(CommonData commonData, Date startLeaveTime, Date endLeaveTime) {
//当日 请假开始时间
/* Date startLeaveTime = leaveRecord.getStartTime();
Date endLeaveTime = leaveRecord.getEndTime();*/
//修改当日记录集
List<AttendanceRecordDetailEntity> detailEntityList = commonData.getDetailEntityList();
......@@ -405,15 +353,13 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
//goWorkDate为空 缺卡状态
Date goWorkDate1 = attendanceClassDetailEntity.getGoWorkDate();
if(attendanceClassDetailEntity.getGoWorkDateAfter()>0){
goWorkDate1=DateUtil.offsetMinute(goWorkDate1, attendanceClassDetailEntity.getGoWorkDateAfter());
if (attendanceClassDetailEntity.getGoWorkDateAfter() > 0) {
goWorkDate1 = DateUtil.offsetMinute(goWorkDate1, attendanceClassDetailEntity.getGoWorkDateAfter());
}
//判断请假区间是否在上班区间内 如果在 则设置为请假 格式化时间范围
boolean in = DateUtil.isIn(goWorkDate1, DateUtil.parse(DateUtil.format(startLeaveTime, "HH:mm:ss"), "HH:mm:ss"),
DateUtil.parse(DateUtil.format(endLeaveTime, "HH:mm:ss"), "HH:mm:ss"));
if(in){
if (in) {
detail.setGoWorkResult(GoWorkResultEnum.请假.getValue());
}
......@@ -424,15 +370,14 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
}
}
}
if (GoWorkResultEnum.请假.getValue() < offWorkResult) {
//判断 异常记录是否在请假时间段内
// DateUtil.between()
if (ObjectUtils.isEmpty(offWorkDate)) {
Date offWorkDate1 = attendanceClassDetailEntity.getOffWorkDate();
if(attendanceClassDetailEntity.getOffWorkDateBefore()>0){
offWorkDate1=DateUtil.offsetMinute(offWorkDate1, -attendanceClassDetailEntity.getOffWorkDateBefore());
if (attendanceClassDetailEntity.getOffWorkDateBefore() > 0) {
offWorkDate1 = DateUtil.offsetMinute(offWorkDate1, -attendanceClassDetailEntity.getOffWorkDateBefore());
}
boolean in = DateUtil.isIn(offWorkDate1, DateUtil.parse(DateUtil.format(startLeaveTime, "HH:mm:ss"), "HH:mm:ss"),
......@@ -460,7 +405,7 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
List<AttendanceRecordErrorEntity> attendanceRecordErrorEntities = errorService.find(errorQuery);
Long[] errorIds = attendanceRecordErrorEntities.stream().map(i -> i.getId()).toArray(Long[]::new);
if (!ObjectUtils.isEmpty(errorIds)) {
log.info("删除 {} 人员:{} 异常记录:{}",dateStr,staffId, JSON.toJSONString(attendanceRecordErrorEntities));
//log.info("删除 {} 人员:{} 异常记录:{}",dateStr,staffId, JSON.toJSONString(attendanceRecordErrorEntities));
errorService.remove(errorIds, context);
}
}
......@@ -469,13 +414,11 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
public void genErrorAttendRecord(Context context, String dateStr, AttendanceRecordEntity attendanceRecordEntity, List<AttendanceRecordDetailEntity> detailEntityList) {
//处理异常打卡,所以异常打卡的 都新增一条记录
List<AttendanceRecordErrorEntity> errorEntityList = 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) {
Integer goWorkResult = recordDetailEntity.getGoWorkResult();
Integer offWorkResult = recordDetailEntity.getOffWorkResult();
//判断是否是离职员工 如果是 则不添加
//判断上班
// AttendanceClassDetailEntity attendanceClassDetailEntity = attendanceClassDetailService.get(recordDetailEntity.getShiftsId());
AttendanceClassDetailEntity attendanceClassDetailEntity = classDetailEntityMap.get(recordDetailEntity.getShiftsId());
if (ObjectUtils.isEmpty(attendanceClassDetailEntity)) continue;
//判断上班
......@@ -483,7 +426,6 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
AttendanceRecordErrorEntity errorEntity = new AttendanceRecordErrorEntity();
errorEntity.initAttrValue();
BeanUtils.copyProperties(attendanceRecordEntity, errorEntity, new String[]{"id"});
errorEntity.setShiftsId(recordDetailEntity.getShiftsId());
errorEntity.setShiftsName(recordDetailEntity.getShiftsName());
errorEntity.setProcessStatus(YesNoEnum.NO.getValue());
......@@ -545,11 +487,9 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
//删除当前员工当日未处理的异常后,重新添加 处理的 不做删除
deleteErrorRecord(dateStr, attendanceRecordEntity.getStaffId(), context);
AttendanceRecordErrorQuery errorQuery;
if (!ObjectUtils.isEmpty(errorEntityList)) {
//过滤异常列表中存在相同的记录
errorEntityList = errorEntityList.stream().distinct().collect(Collectors.toList());
for (AttendanceRecordErrorEntity errorEntity : errorEntityList) {
//查看是否存在相同的异常记录,如果存在 则不添加
errorQuery = new AttendanceRecordErrorQuery();
......@@ -557,20 +497,16 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
errorQuery.setStaffId(errorEntity.getStaffId());
errorQuery.setShiftsId(errorEntity.getShiftsId());
errorQuery.setProcessStatus(YesNoEnum.YES.getValue());
AttendanceRecordErrorEntity attendanceRecordErrorEntity = errorService.selectOne(errorQuery, context);
if (ObjectUtils.isEmpty(attendanceRecordErrorEntity)) {
errorService.save(errorEntity, context);
}else {
} else {
//log.info("异常记录已存在,不添加");
}
}
}
}
private Boolean checkWorkByHoliday(String date) {
Boolean bool = false;
HolidayQuery holidayQuery = new HolidayQuery();
......@@ -612,9 +548,6 @@ public class FixWorkOtherAttendance extends AttendanceWorkAbstract {
long between = DateUtil.between(DateUtil.parseDate(date), DateUtil.parseDate(endDate), DateUnit.DAY);
System.out.println(between);
String curDateStr = "2024-01-05";
DateTime dateTime = DateUtil.parseDate(curDateStr);
DateTime start = DateUtil.parseDate("2024-01-05 18:45:15");
......
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