Przeglądaj źródła

请假或出差结束后,延时时间+1分钟,避免当前时间与结束时间重合。

tomatozq 3 lat temu
rodzic
commit
1cd6a6f44e

+ 1 - 1
common/src/main/java/com/jpsoft/shinestar/modules/base/service/impl/BusinessOutServiceImpl.java

@@ -375,7 +375,7 @@ public class BusinessOutServiceImpl implements BusinessOutService {
                     personInfoService.update(personInfo);
                 } else {
                     //如果出差结束时间>当前时间,则延时修改状态
-                    long millisecond = DateUtil.betweenMs(now, businessOut.getEndTime());
+                    long millisecond = DateUtil.betweenMs(now, businessOut.getEndTime())+60000;
 
                     log.warn("创建延时队列修改工作状态,id:" + businessOut.getId());
 

+ 15 - 8
common/src/main/java/com/jpsoft/shinestar/modules/business/service/impl/RequestForLeaveInfoServiceImpl.java

@@ -638,12 +638,15 @@ public class RequestForLeaveInfoServiceImpl implements RequestForLeaveInfoServic
 
 		Date start =  requestForLeaveInfo.getStartTime();
 		Date end = requestForLeaveInfo.getEndTime();
+		Date now = new Date();
+
 
-		if (start.compareTo(new Date()) <=0){
-			if (end.compareTo(new Date()) >0){
+		if (start.compareTo(now) <=0){
+			//start<=now<=end
+			if (end.compareTo(now) >0){
 				personInfo.setWorkStatus("4");
 				personInfoService.update(personInfo);
-				Long millisecond  = DateUtil.betweenMs(DateUtil.date(),end);
+				Long millisecond  = DateUtil.betweenMs(DateUtil.date(),end) + 60000;
 
 				rabbitTemplate.convertAndSend("requestForLeaveDelayExchange", "submit",
 						requestForLeaveInfo.getId(), (message)->{
@@ -652,21 +655,25 @@ public class RequestForLeaveInfoServiceImpl implements RequestForLeaveInfoServic
 						});
 			}
 
-			if (end.compareTo(new Date()) <=0){
+			//now>=end
+			if (end.compareTo(now) <=0){
 				personInfo.setWorkStatus("1");
 				personInfoService.update(personInfo);
 			}
 		}
 
-		if (start.compareTo(new Date()) >0){
+		//start>now
+		if (start.compareTo(now) >0){
 			Long millisecond  = DateUtil.betweenMs(DateUtil.date(),start);
 
+			//请假开始后设置状态为请假
 			rabbitTemplate.convertAndSend("requestForLeaveDelayExchange", "submit",
 					requestForLeaveInfo.getId(), (message)->{
 						message.getMessageProperties().setHeader("x-delay",millisecond);
 						return message;
 					});
 
+			//请假结束后设置状态为工作
 			Long millisecond2  = DateUtil.betweenMs(DateUtil.date(),end)+60000;
 			rabbitTemplate.convertAndSend("requestForLeaveDelayExchange", "submit",
 					requestForLeaveInfo.getId(), (message)->{
@@ -675,9 +682,9 @@ public class RequestForLeaveInfoServiceImpl implements RequestForLeaveInfoServic
 					});
 		}
 
-		Date now = new Date();
-
-		if (requestForLeaveInfo.getStartTime().before(now)) {
+		//start<now
+		if (start.before(now)) {
+			//补请假则更新考勤记录
 			UpdatePersonAttendanceDTO updatePersonAttendanceDTO = new UpdatePersonAttendanceDTO(
 					personInfo.getId(), requestForLeaveInfo.getStartTime(),requestForLeaveInfo.getEndTime());