package com.kakarote.hrm.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.*;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.kakarote.common.entity.UserInfo;
import com.kakarote.common.utils.UserUtil;
import com.kakarote.core.common.Const;
import com.kakarote.core.common.enums.FieldEnum;
import com.kakarote.core.entity.BasePage;
import com.kakarote.core.entity.PageEntity;
import com.kakarote.core.exception.CrmException;
import com.kakarote.core.servlet.BaseServiceImpl;
import com.kakarote.core.utils.BaseUtil;
import com.kakarote.core.utils.ExcelParseUtil;
import com.kakarote.hrm.common.EmployeeHolder;
import com.kakarote.hrm.common.HrmCodeEnum;
import com.kakarote.hrm.constant.*;
import com.kakarote.hrm.entity.BO.*;
import com.kakarote.hrm.entity.PO.*;
import com.kakarote.hrm.entity.VO.*;
import com.kakarote.hrm.mapper.HrmAttendanceClockMapper;
import com.kakarote.hrm.service.*;
import com.kakarote.hrm.utils.AttendUtil;
import com.kakarote.hrm.utils.EmployeeUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAdjusters;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* <p>
* 打卡记录表 服务实现类
* </p>
*
* @author zhangzhiwei
* @since 2020-12-07
*/
@Service
public class HrmAttendanceClockServiceImpl extends BaseServiceImpl<HrmAttendanceClockMapper, HrmAttendanceClock> implements IHrmAttendanceClockService {
@Autowired
private EmployeeUtil employeeUtil;
@Autowired
private IHrmAttendanceGroupService attendanceGroupService;
@Autowired
private IHrmAttendanceShiftService attendanceShiftService;
@Autowired
private IHrmAttendanceLegalHolidaysService attendanceLegalHolidaysService;
@Autowired
private IHrmEmployeeLeaveRecordService leaveRecordService;
@Autowired
private IHrmEmployeeService employeeService;
@Autowired
private IHrmEmployeeOverTimeRecordService employeeOverTimeRecordService;
@Autowired
private IHrmAttendancePointService attendancePointService;
@Autowired
private IHrmAttendanceWifiService attendanceWifiService;
@Autowired
private IHrmAttendanceHistoryShiftService attendanceHistoryShiftService;
@Autowired
private IHrmAttendanceDateShiftService attendanceDateShiftService;
private static final int FOUR = 4;
private static final int TWO = 2;
private static final int THREE = 3;
private static final int ZERO = 0;
private static final int ONE = 1;
private static final int SEVEN = 7;
private static final String START_STATUS = "startStatus";
private static final String END_STATUS = "endStatus";
private static final String START_IS_OUT_CARD = "startIsOutCard";
private static final String END_IS_OUT_CARD = "endIsOutCard";
private static final String NULL = " ";
@Override
public void addOrUpdate(HrmAttendanceClock attendanceClock) {
attendanceClock.setAttendanceTime(LocalDateTime.now());
attendanceClock.setClockEmployeeId(EmployeeHolder.getEmployeeId());
saveOrUpdate(attendanceClock);
}
@Override
public BasePage<QueryAttendancePageVO> queryPageList(QueryAttendancePageBO attendancePageBO) {
Collection<Long> employeeIds = employeeUtil.queryDataAuthEmpIdByMenuId(MenuIdConstant.ATTENDANCE_MENU_ID);
return getBaseMapper().queryPageList(attendancePageBO.parse(), attendancePageBO, employeeIds);
}
@Override
public List<HrmAttendanceClock> queryClockListByTime(LocalDate time, Collection<Long> employeeIds) {
return getBaseMapper().queryClockListByTime(time, employeeIds);
}
@Override
public Set<String> queryClockStatusList(QueryNotesStatusBO queryNotesStatusBO, Collection<Long> employeeIds) {
return getBaseMapper().queryClockStatusList(queryNotesStatusBO, employeeIds);
}
@Override
public BasePage<QueryAttendancePageVO> queryMyPageList(PageEntity pageEntity) {
return getBaseMapper().queryMyPageList(pageEntity.parse(), EmployeeHolder.getEmployeeId());
}
@Override
@Transactional(rollbackFor = Exception.class)
public void setHrmAttendanceClock(SetHrmAttendanceClockB0 attendanceClock) {
if (attendanceClock.getClockStatus() == null) {
attendanceClock.setClockStatus(ClockStatusEnum.NORMAL.getValue());
if (attendanceClock.getClockType().intValue() == ClockType.GO_TO.getValue()) {
if (LocalDateTimeUtil.toEpochMilli(attendanceClock.getClockTime()) > LocalDateTimeUtil.toEpochMilli(attendanceClock.getAttendanceTime())) {
attendanceClock.setClockStatus(ClockStatusEnum.LATE.getValue());
}
} else {
if (LocalDateTimeUtil.toEpochMilli(attendanceClock.getClockTime()) < LocalDateTimeUtil.toEpochMilli(attendanceClock.getAttendanceTime())) {
attendanceClock.setClockStatus(ClockStatusEnum.EARLY.getValue());
}
}
}
HrmAttendanceClock hrmAttendanceClock = BeanUtil.copyProperties(attendanceClock, HrmAttendanceClock.class);
saveOrUpdate(hrmAttendanceClock);
if (attendanceClock.getClockStatus() == SEVEN) {//加班
//查询对应的班次
QueryAttendanceDailyDetailBO queryAttendanceDailyDetailBO = new QueryAttendanceDailyDetailBO();
queryAttendanceDailyDetailBO.setCurrentDate(attendanceClock.getAttendanceTime().toLocalDate());
queryAttendanceDailyDetailBO.setEmployeeId(attendanceClock.getClockEmployeeId());
//查询出今日班次
HrmAttendanceShift hrmAttendanceShift = getHrmAttendanceShift(queryAttendanceDailyDetailBO);
HrmEmployeeOverTimeRecord hrmEmployeeOverTimeRecord = new HrmEmployeeOverTimeRecord();
if (ObjectUtil.equal(hrmAttendanceShift.getShiftType(), ShiftTypeEnum.REST.getValue())) {
hrmEmployeeOverTimeRecord = employeeOverTimeRecordService.lambdaQuery().eq(HrmEmployeeOverTimeRecord::getEmployeeId, attendanceClock.getClockEmployeeId())
.apply("date_format(attendance_time,'%Y-%m-%d') = {0}", LocalDateTimeUtil.format(queryAttendanceDailyDetailBO.getCurrentDate(), DatePattern.NORM_DATE_PATTERN)).orderByDesc(HrmEmployeeOverTimeRecord::getCreateTime).one();
if (ObjectUtil.isNull(hrmEmployeeOverTimeRecord)) {
hrmEmployeeOverTimeRecord = new HrmEmployeeOverTimeRecord();
}
if (attendanceClock.getClockType() == ClockType.GO_TO.getValue()) {
HrmAttendanceClock hrmStartAttendanceClock = lambdaQuery().eq(HrmAttendanceClock::getClockType, ClockType.GO_TO.getValue()).eq(HrmAttendanceClock::getClockEmployeeId, queryAttendanceDailyDetailBO.getEmployeeId())
.apply("date_format(attendance_time,'%Y-%m-%d') = {0}", LocalDateTimeUtil.format(queryAttendanceDailyDetailBO.getCurrentDate(), DatePattern.NORM_DATE_PATTERN)).orderByDesc(HrmAttendanceClock::getCreateTime).one();
hrmEmployeeOverTimeRecord.setEmployeeId(attendanceClock.getClockEmployeeId());
//休息日加班
hrmEmployeeOverTimeRecord.setOverTimeType(TWO);
hrmEmployeeOverTimeRecord.setAttendan
没有合适的资源?快使用搜索试试~ 我知道了~
管理系统系列--悟空HRM人力资源管理系统-提供入职管理、招聘管理、绩效考核管理等一站式人力管理流程.zip
共2000个文件
java:1040个
vue:458个
js:281个
需积分: 5 1 下载量 23 浏览量
2024-02-24
22:40:51
上传
评论
收藏 14.23MB ZIP 举报
温馨提示
管理系统系列--悟空HRM人力资源管理系统-提供入职管理、招聘管理、绩效考核管理等一站式人力管理流程
资源推荐
资源详情
资源评论
收起资源包目录
管理系统系列--悟空HRM人力资源管理系统-提供入职管理、招聘管理、绩效考核管理等一站式人力管理流程.zip (2000个子文件)
chunk-elementUI.a005b77f.css 234KB
app.bbc254b3.css 120KB
animate.css 76KB
chunk-libs.ded559a0.css 55KB
chunk-commons.83a239c7.css 52KB
chunk-47648fd1.7e930f3c.css 47KB
chunk-9094381c.501b37e5.css 32KB
iconfont.css 25KB
iconfont.css 23KB
chunk-1ea8cfbe.b2634365.css 20KB
chunk-2457095a.77e3f190.css 14KB
chunk-dba6e328.c6b04f49.css 14KB
chunk-460a538a.456d381a.css 11KB
chunk-447a76ca.eafaa6c0.css 10KB
chunk-6f0a0dfe.23449328.css 10KB
chunk-75d8970d.8948cd17.css 9KB
chunk-3eeb2b6e.41c567d1.css 9KB
chunk-549f8446.cd775395.css 7KB
chunk-de2c6c54.044191d3.css 6KB
chunk-309991c9.3e969a59.css 6KB
chunk-9f65d612.06bbb939.css 6KB
chunk-2822ae7a.63fc24e5.css 6KB
chunk-3f8baa88.9d8bd7e5.css 6KB
chunk-02f7557c.29a04a6a.css 6KB
chunk-160ff380.e5aba01e.css 5KB
chunk-39cb57cf.bc3a08b6.css 5KB
chunk-96216740.1b7d445f.css 5KB
chunk-1de70272.117ccf87.css 5KB
chunk-30e9b1dc.31e24be3.css 5KB
chunk-257d7556.3d9510b5.css 4KB
chunk-1118dfb8.b45d8c77.css 4KB
chunk-8582c0de.12641ea5.css 4KB
chunk-1838040e.d7a0f5d5.css 4KB
chunk-222d6c6e.9481806a.css 4KB
chunk-5c2a9619.a80f6e1b.css 3KB
chunk-f3f6a638.94c3378e.css 3KB
chunk-8527e680.dd6f327c.css 3KB
index.css 3KB
index.css 3KB
chunk-7fc25c47.dd0ea78c.css 3KB
chunk-e30d9072.1b30c1a2.css 3KB
chunk-1057cac8.d7198532.css 2KB
chunk-0663c224.ae8f7de0.css 2KB
chunk-04a82ecb.ca88073b.css 2KB
tiny-wk-word.css 2KB
tiny-wk-word.css 2KB
chunk-255f33ac.a945c504.css 2KB
chunk-61a44d94.11ac518e.css 1KB
chunk-4fb0e9ba.5f50cb68.css 1KB
chunk-0a78c999.9d289ff7.css 1KB
chunk-0806b5f6.50b32c7f.css 1KB
iconfont.css 1KB
chunk-d783573a.9c201c0b.css 1KB
chunk-80d6958a.81f48a6b.css 1KB
chunk-54a52d3c.5da8c3cc.css 1KB
chunk-424a34d0.9597efec.css 1KB
chunk-01e60543.6baa731e.css 1KB
chunk-c13a8a76.49793c90.css 1KB
chunk-9b948150.10d146f5.css 779B
chunk-68e7a3f6.206c5e6a.css 693B
chunk-4c911482.58a59a5b.css 693B
chunk-45ea2d0e.eb598cfc.css 674B
chunk-05164610.8beaa3c0.css 643B
chunk-10897270.c3f8cc00.css 483B
chunk-4988dab0.ee8d1a0d.css 462B
chunk-6b52fef2.7a6ace62.css 455B
chunk-9dd2429e.b82ce77f.css 446B
chunk-615ef926.72619088.css 412B
tiny-wk-colors.css 335B
tiny-wk-colors.css 335B
tiny-wukong.css 211B
tiny-wukong.css 211B
index.css 59B
tiny-wk-email.css 37B
tiny-wk-email.css 37B
index.html 9KB
index.html 2KB
index.html 2KB
index.html 680B
HrmAttendanceClockServiceImpl.java 129KB
HrmEmployeeServiceImpl.java 102KB
HrmAppraisalEmployeeServiceImpl.java 91KB
HrmAppraisalPlanServiceImpl.java 75KB
OperateLogEntity.java 69KB
EmployeeActionRecordServiceImpl.java 60KB
HrmSalaryMonthRecordServiceImpl.java 58KB
HrmEmployeeFieldServiceImpl.java 55KB
HrmAchievementAppraisalServiceImpl.java 55KB
EsUtil.java 54KB
ExcelParseUtil.java 53KB
HrmAppraisalEmployeeStageServiceImpl.java 48KB
BiTimeUtil.java 45KB
HrmAchievementEmployeeAppraisalServiceImpl.java 43KB
HrmUploadExcelServiceImpl.java 42KB
HrmSalaryArchivesServiceImpl.java 36KB
CandidateActionRecordServiceImpl.java 33KB
HrmAttendanceGroupServiceImpl.java 32KB
HrmDashboardServiceImpl.java 30KB
AdminMessageServiceImpl.java 30KB
HrmEmployeeController.java 26KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
Kwan的解忧杂货铺
- 粉丝: 1w+
- 资源: 3625
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功