From a56f15be83daed94c10e8be6b8167fd10d2fe8a6 Mon Sep 17 00:00:00 2001 From: zy_Java <654600784@qq.com> Date: Mon, 30 Aug 2021 17:38:11 +0800 Subject: [PATCH] =?UTF-8?q?20210830=E6=89=93=E5=8D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/bean/dto/CClockingInDto.java | 9 +++- .../common/service/ClockingInService.java | 47 +++++++++++++++++++ .../ccsens/common/util/CommonCodeError.java | 2 + 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/common/src/main/java/com/ccsens/common/bean/dto/CClockingInDto.java b/common/src/main/java/com/ccsens/common/bean/dto/CClockingInDto.java index e7df6eb8..30955715 100644 --- a/common/src/main/java/com/ccsens/common/bean/dto/CClockingInDto.java +++ b/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-晚)") diff --git a/common/src/main/java/com/ccsens/common/service/ClockingInService.java b/common/src/main/java/com/ccsens/common/service/ClockingInService.java index 6680fdae..a8c9327b 100644 --- a/common/src/main/java/com/ccsens/common/service/ClockingInService.java +++ b/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 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); + } } diff --git a/common/src/main/java/com/ccsens/common/util/CommonCodeError.java b/common/src/main/java/com/ccsens/common/util/CommonCodeError.java index 48fd4b03..c485cef2 100644 --- a/common/src/main/java/com/ccsens/common/util/CommonCodeError.java +++ b/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); }