Browse Source

20210830打卡

tall3
zy_Java 4 years ago
parent
commit
a56f15be83
  1. 9
      common/src/main/java/com/ccsens/common/bean/dto/CClockingInDto.java
  2. 47
      common/src/main/java/com/ccsens/common/service/ClockingInService.java
  3. 2
      common/src/main/java/com/ccsens/common/util/CommonCodeError.java

9
common/src/main/java/com/ccsens/common/bean/dto/CClockingInDto.java

@ -1,10 +1,12 @@
package com.ccsens.common.bean.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
/**
@ -32,10 +34,13 @@ public class CClockingInDto {
public static class PunchTheClock{
@ApiModelProperty("记录id(没有则不传)")
private Long id;
@ApiModelProperty("打卡时间")
private Long dateTime;
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty("打卡日期")
private Date dateTime;
@NotNull(message = "成员id不能为空")
@ApiModelProperty("考勤信息中的成员id")
private Long memberId;
@NotNull(message = "审核员id不能为空")
@ApiModelProperty("审核员id")
private Long checkerId;
@ApiModelProperty("打卡类型(0-早,1-晚)")

47
common/src/main/java/com/ccsens/common/service/ClockingInService.java

@ -3,6 +3,7 @@ package com.ccsens.common.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.ObjectUtil;
import com.ccsens.common.bean.dto.CClockingInDto;
import com.ccsens.common.bean.po.ProClockingIn;
@ -10,12 +11,16 @@ import com.ccsens.common.bean.po.ProMember;
import com.ccsens.common.bean.vo.CClockingInVo;
import com.ccsens.common.persist.dao.ProClockingInDao;
import com.ccsens.common.persist.dao.ProMemberDao;
import com.ccsens.common.util.CommonCodeError;
import com.ccsens.util.exception.BaseException;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@ -29,6 +34,8 @@ public class ClockingInService implements IClockingInService {
private ProMemberDao memberDao;
@Resource
private ProClockingInDao clockingInDao;
@Resource
private Snowflake snowflake;
@Override
public List<CClockingInVo.ClockingInInfo> queryClockingIn(CClockingInDto.QueryClockingIn params, Long userId) {
@ -91,6 +98,46 @@ public class ClockingInService implements IClockingInService {
@Override
public void punchTheClock(CClockingInDto.PunchTheClock params, Long userId) {
//判断选择打卡的成员和当前用户是否匹配
ProMember proMember = memberDao.selectByPrimaryKey(params.getMemberId());
if(ObjectUtil.isNull(proMember) || proMember.getUserId().equals(userId)){
throw new BaseException(CommonCodeError.MEMBER_NOT_MINE);
}
//验证打卡日期是否是今天
DateFormat df = new SimpleDateFormat("yy-MM-dd");
String format = df.format(new Date());
log.info("获取今天的日期:{}",format);
if(!format.equalsIgnoreCase(params.getDateTime().toString())){
throw new BaseException(CommonCodeError.DATE_ERROR);
}
//判断是否有打卡记录
if(ObjectUtil.isNotNull(params.getId())){
//如果有记录则查找记录并修改
ProClockingIn proClockingIn = clockingInDao.selectByPrimaryKey(params.getId());
if(params.getClockType() == 0 && proClockingIn.getMorningStatus() == 0){
proClockingIn.setMorning(System.currentTimeMillis());
proClockingIn.setMorningStatus((byte) 1);
}else if(params.getClockType() == 1 && proClockingIn.getNightStatus() == 0){
proClockingIn.setNight(System.currentTimeMillis());
proClockingIn.setNightStatus((byte) 1);
}
proClockingIn.setCheckerId(params.getCheckerId());
clockingInDao.updateByPrimaryKeySelective(proClockingIn);
}else {
//如果没有记录,则添加一条新的记录
ProClockingIn proClockingIn = new ProClockingIn();
proClockingIn.setId(snowflake.nextId());
proClockingIn.setMemberId(params.getMemberId());
proClockingIn.setCheckerId(params.getCheckerId());
if(params.getClockType() == 0){
proClockingIn.setMorning(System.currentTimeMillis());
proClockingIn.setMorningStatus((byte) 1);
}else if(params.getClockType() == 1){
proClockingIn.setNight(System.currentTimeMillis());
proClockingIn.setNightStatus((byte) 1);
}
clockingInDao.insertSelective(proClockingIn);
}
}

2
common/src/main/java/com/ccsens/common/util/CommonCodeError.java

@ -18,5 +18,7 @@ public class CommonCodeError extends CodeError {
public static final Code SHARE_URL_ERROR = new Code(8,"分享链接错误", true);
public static final Code CHECKER_DONT_NULL = new Code(9,"检查人不能为空", true);
public static final Code NO_POWER = new Code(10,"没有权限", true);
public static final Code MEMBER_NOT_MINE = new Code(11,"只能给自己打卡", true);
public static final Code DATE_ERROR = new Code(12,"请选择正确的打卡日期", true);
}

Loading…
Cancel
Save