Bläddra i källkod

[task-4205]子排班考勤功能开发/打卡接口开发

gaozl 11 månader sedan
förälder
incheckning
bb9961aae2

+ 24 - 5
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/components/employee/domain/AttendanceDetail.java

@@ -4,6 +4,7 @@ package com.lc.ibps.components.employee.domain;
 import javax.annotation.Resource;
 
 import com.lc.ibps.base.core.constants.StringPool;
+import com.lc.ibps.base.web.context.ContextUtil;
 import org.springframework.context.annotation.Scope;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.stereotype.Service;
@@ -71,6 +72,9 @@ public class AttendanceDetail extends AbstractDomain<String, AttendanceDetailPo>
 		if(BeanUtils.isEmpty(attendanceDetailPo)){
 			throw new Exception("考勤不存在!");
 		}
+		if(!attendanceDetailPo.getYongHuId().equals(ContextUtil.getCurrentUserId())){
+			throw new Exception("不能打其他人的卡,请登录本人账号打卡");
+		}
 		String end = attendanceDetailPo.getBanCiJieShu()+":00";
 		String start = attendanceDetailPo.getBanCiKaiShi()+":59";
 		LocalDateTime endTime = LocalDateTime.parse(end, DATETIME_FORMATTER);
@@ -78,8 +82,15 @@ public class AttendanceDetail extends AbstractDomain<String, AttendanceDetailPo>
 		LocalDateTime now = LocalDateTime.now();
 		if (!now.isAfter(endTime)) {
 			// 上班打卡
+			String today = LocalDateTime.now().format(DateTimeFormatter.ofPattern(StringPool.DATE_FORMAT_DATE));
+			if(!attendanceDetailPo.getRiQi().equals(today)){
+				throw new Exception("考勤对应的打卡日期是"+attendanceDetailPo.getRiQi()+",只能打当天的班次卡,请核对打卡日期");
+			}
+			if(BeanUtils.isNotEmpty(attendanceDetailPo.getDaKaShiJian1())){
+				throw new Exception("该班次已经打过卡了,请勿重复打卡!");
+			}
 			attendanceDetailPo.setDaKaShiJian1(now.format(DATETIME_FORMATTER));
-			if (!startTime.isAfter(now)){
+			if (!now.isAfter(startTime)){
 				attendanceDetailPo.setZhuangTai1("正常");
 			}else {
 				attendanceDetailPo.setZhuangTai1("异常");
@@ -93,17 +104,25 @@ public class AttendanceDetail extends AbstractDomain<String, AttendanceDetailPo>
 			Duration duration = Duration.between(now, endTime);
 			attendanceDetailPo.setJiaBanShiChang(Math.max(duration.toMinutes(),0));
 
-			LocalDateTime daKaShiJian = LocalDateTime.parse(attendanceDetailPo.getDaKaShiJian1(), DATETIME_FORMATTER);
-			Duration gongZuoShiChang = Duration.between(daKaShiJian, now);
-			attendanceDetailPo.setGongZuoShiChan(Math.abs(gongZuoShiChang.toMinutes()));
+			if (BeanUtils.isNotEmpty(attendanceDetailPo.getZhuangTai1())){
+				LocalDateTime daKaShiJian = LocalDateTime.parse(attendanceDetailPo.getDaKaShiJian1(), DATETIME_FORMATTER);
+				Duration gongZuoShiChang = Duration.between(daKaShiJian, now);
+				attendanceDetailPo.setGongZuoShiChan(Math.abs(gongZuoShiChang.toMinutes()));
+			}
 
-			if (attendanceDetailPo.getDaKaShiJian1().equals("正常") && attendanceDetailPo.getDaKaShiJian2().equals("正常")){
+			if (BeanUtils.isNotEmpty(attendanceDetailPo.getZhuangTai1()) && BeanUtils.isNotEmpty(attendanceDetailPo.getZhuangTai2())
+					&& attendanceDetailPo.getZhuangTai1().equals("正常") && attendanceDetailPo.getZhuangTai2().equals("正常")){
 				attendanceDetailPo.setKaoQinZhuangTa("正常");
 			}else {
 				attendanceDetailPo.setKaoQinZhuangTa("异常");
 			}
 		}
+		if (BeanUtils.isEmpty(attendanceDetailPo.getDaKaCiShu())){
+			attendanceDetailPo.setDaKaCiShu(0L);
+		}
 		attendanceDetailPo.setDaKaCiShu(attendanceDetailPo.getDaKaCiShu()+1);
+		AttendanceDetail domain = attendanceDetailRepository.newInstance();
+		domain.save(attendanceDetailPo);
 	}
 	
 }