|
@@ -229,7 +229,12 @@ public class UserWithBeisenController {
|
|
|
List<JSONObject> overTimeList = overTimeStream.filter(a -> a.getString("StaffId").equals(beisen.get().getUserId())
|
|
|
&& (a.getIntValue("ApproveStatus") == 2||a.getIntValue("ApproveStatus") == 1)).collect(Collectors.toList());
|
|
|
//加班数据可能存在结束日期是当前日期的情况的情况
|
|
|
- BigDecimal overTimeBigDecimal = new BigDecimal(0);
|
|
|
+ BigDecimal overTimeBigDecimal;
|
|
|
+ if(workDay){
|
|
|
+ overTimeBigDecimal = new BigDecimal(0);
|
|
|
+ }else {
|
|
|
+ overTimeBigDecimal = new BigDecimal(8);
|
|
|
+ }
|
|
|
for (JSONObject o : overTimeList) {
|
|
|
//存在开始日期为当前日期的数据以及结束日期为当天日期的数据 分开计算
|
|
|
if(LocalDateTime.parse(o.getString("StartDate"),df1).toLocalDate().isEqual(localDate)){
|
|
@@ -238,16 +243,18 @@ public class UserWithBeisenController {
|
|
|
//开始日期和结束日期是相同的情况 说明是加班区间只存在于当天的情况
|
|
|
if(max.get().isAfter(LocalTime.parse("19:00:00",df4))){
|
|
|
//判断打卡时间是不是大于19:00 大于才算加班 通过打卡计算加班时长 与加班单作比较 取小
|
|
|
- Duration timeDurantion = Duration.between(LocalTime.parse("19:00:00", df4), max.get());
|
|
|
- //如果结束时间大于13:00
|
|
|
- if(max.get().isAfter(LocalTime.parse("13:00:00",df4))){
|
|
|
- timeDurantion.minusHours(1);
|
|
|
- }
|
|
|
- //如果结束时间大于18:00
|
|
|
- if(max.get().isAfter(LocalTime.parse("18:00:00",df4))){
|
|
|
- timeDurantion.minusMinutes(30);
|
|
|
- }
|
|
|
- long l = timeDurantion.toMinutes() / 60;
|
|
|
+ Duration timeDurantion = Duration.between(LocalTime.parse("18:00:00", df4), max.get());
|
|
|
+// //如果结束时间大于13:00
|
|
|
+// if(max.get().isAfter(LocalTime.parse("13:00:00",df4))){
|
|
|
+// timeDurantion=timeDurantion.minusHours(1);
|
|
|
+// }
|
|
|
+// //如果结束时间大于18:00
|
|
|
+// if(max.get().isAfter(LocalTime.parse("18:00:00",df4))){
|
|
|
+// timeDurantion=timeDurantion.minusMinutes(30);
|
|
|
+// }
|
|
|
+ BigDecimal decimal = new BigDecimal(timeDurantion.toMinutes());
|
|
|
+ decimal=decimal.divide(new BigDecimal(60),1,RoundingMode.HALF_UP);
|
|
|
+ double l = decimal.doubleValue();
|
|
|
if(l<o.getDouble("OverTimeDuration")){
|
|
|
overTimeBigDecimal=overTimeBigDecimal.add(new BigDecimal(l));
|
|
|
}else {
|
|
@@ -259,18 +266,22 @@ public class UserWithBeisenController {
|
|
|
LocalDateTime start = LocalDateTime.parse(o.getString("StartDate"), df1);
|
|
|
LocalDateTime stop = start.toLocalDate().atTime(LocalTime.MAX);
|
|
|
Duration duration = Duration.between(start, stop);
|
|
|
- if(stop.toLocalTime().isAfter(LocalTime.parse("13:00:00",df4))){
|
|
|
- duration.minusHours(1);
|
|
|
- }
|
|
|
- //如果结束时间大于18:00
|
|
|
- if(stop.toLocalTime().isAfter(LocalTime.parse("18:00:00",df4))){
|
|
|
- duration.minusMinutes(30);
|
|
|
- }
|
|
|
- long l = duration.toMinutes() / 60;
|
|
|
+// if(stop.toLocalTime().isAfter(LocalTime.parse("13:00:00",df4))){
|
|
|
+// duration=duration.minusHours(1);
|
|
|
+// }
|
|
|
+// //如果结束时间大于18:00
|
|
|
+// if(stop.toLocalTime().isAfter(LocalTime.parse("18:00:00",df4))){
|
|
|
+// duration=duration.minusMinutes(30);
|
|
|
+// }
|
|
|
+ BigDecimal decimal = new BigDecimal(duration.toMinutes());
|
|
|
+ decimal=decimal.divide(new BigDecimal(60),1,RoundingMode.HALF_UP);
|
|
|
+ double l = decimal.doubleValue();
|
|
|
if(max.get().isAfter(LocalTime.parse("19:00:00",df4))){
|
|
|
//判断打卡时间是不是大于19:00 通过打卡计算加班时长 与加班单作比较 取小
|
|
|
- Duration timeDurantion = Duration.between(LocalTime.parse("19:00:00", df4), max.get());
|
|
|
- long l1 = timeDurantion.toMinutes() / 60;
|
|
|
+ Duration timeDurantion = Duration.between(LocalTime.parse("18:00:00", df4), max.get());
|
|
|
+ BigDecimal decimal1 = new BigDecimal(timeDurantion.toMinutes());
|
|
|
+ decimal1=decimal1.divide(new BigDecimal(60),1,RoundingMode.HALF_UP);
|
|
|
+ double l1 = decimal1.doubleValue();
|
|
|
if(l1<l){
|
|
|
overTimeBigDecimal=overTimeBigDecimal.add(new BigDecimal(l1));
|
|
|
}else {
|
|
@@ -284,16 +295,18 @@ public class UserWithBeisenController {
|
|
|
//开始日期和结束日期是相同的情况 说明是加班区间只存在于当天的情况
|
|
|
if(max.get().isAfter(LocalTime.parse("19:00:00",df4))){
|
|
|
//判断打卡时间是不是大于19:00 通过打卡计算加班时长 与加班单作比较 取小
|
|
|
- Duration timeDurantion = Duration.between(LocalTime.parse("19:00:00", df4), max.get());
|
|
|
- //如果结束时间大于13:00
|
|
|
- if(max.get().isAfter(LocalTime.parse("13:00:00",df4))){
|
|
|
- timeDurantion.minusHours(1);
|
|
|
- }
|
|
|
- //如果结束时间大于18:00
|
|
|
- if(max.get().isAfter(LocalTime.parse("18:00:00",df4))){
|
|
|
- timeDurantion.minusMinutes(30);
|
|
|
- }
|
|
|
- long l = timeDurantion.toMinutes() / 60;
|
|
|
+ Duration timeDurantion = Duration.between(LocalTime.parse("18:00:00", df4), max.get());
|
|
|
+// //如果结束时间大于13:00
|
|
|
+// if(max.get().isAfter(LocalTime.parse("13:00:00",df4))){
|
|
|
+// timeDurantion=timeDurantion.minusHours(1);
|
|
|
+// }
|
|
|
+// //如果结束时间大于18:00
|
|
|
+// if(max.get().isAfter(LocalTime.parse("18:00:00",df4))){
|
|
|
+// timeDurantion=timeDurantion.minusMinutes(30);
|
|
|
+// }
|
|
|
+ BigDecimal decimal = new BigDecimal(timeDurantion.toMinutes());
|
|
|
+ decimal=decimal.divide(new BigDecimal(60),1,RoundingMode.HALF_UP);
|
|
|
+ double l = decimal.doubleValue();
|
|
|
if(l<o.getDouble("OverTimeDuration")){
|
|
|
overTimeBigDecimal=overTimeBigDecimal.add(new BigDecimal(l));
|
|
|
}else {
|
|
@@ -305,19 +318,23 @@ public class UserWithBeisenController {
|
|
|
LocalDateTime stop = LocalDateTime.parse(o.getString("StopDate"), df1);
|
|
|
LocalDateTime start = stop.toLocalDate().atTime(LocalTime.MIN);
|
|
|
Duration duration = Duration.between(start, stop);
|
|
|
- //如果结束时间大于13:00
|
|
|
- if(stop.toLocalTime().isAfter(LocalTime.parse("13:00:00",df4))){
|
|
|
- duration.minusHours(1);
|
|
|
- }
|
|
|
- //如果结束时间大于18:00
|
|
|
- if(stop.toLocalTime().isAfter(LocalTime.parse("18:00:00",df4))){
|
|
|
- duration.minusMinutes(30);
|
|
|
- }
|
|
|
- long l = duration.toMinutes() / 60;
|
|
|
+// //如果结束时间大于13:00
|
|
|
+// if(stop.toLocalTime().isAfter(LocalTime.parse("13:00:00",df4))){
|
|
|
+// duration=duration.minusHours(1);
|
|
|
+// }
|
|
|
+// //如果结束时间大于18:00
|
|
|
+// if(stop.toLocalTime().isAfter(LocalTime.parse("18:00:00",df4))){
|
|
|
+// duration=duration.minusMinutes(30);
|
|
|
+// }
|
|
|
+ BigDecimal decimal = new BigDecimal(duration.toMinutes());
|
|
|
+ decimal=decimal.divide(new BigDecimal(60),1,RoundingMode.HALF_UP);
|
|
|
+ double l = decimal.doubleValue();
|
|
|
if(max.get().isAfter(LocalTime.parse("19:00:00",df4))){
|
|
|
//判断打卡时间是不是大于19:00 通过打卡计算加班时长 与加班单作比较 取小
|
|
|
- Duration timeDurantion = Duration.between(LocalTime.parse("19:00:00", df4), max.get());
|
|
|
- long l1 = timeDurantion.toMinutes() / 60;
|
|
|
+ Duration timeDurantion = Duration.between(LocalTime.parse("18:00:00", df4), max.get());
|
|
|
+ BigDecimal decimal1 = new BigDecimal(timeDurantion.toMinutes());
|
|
|
+ decimal1=decimal1.divide(new BigDecimal(60),1,RoundingMode.HALF_UP);
|
|
|
+ double l1 = decimal1.doubleValue();
|
|
|
if(l1<l){
|
|
|
overTimeBigDecimal=overTimeBigDecimal.add(new BigDecimal(l1));
|
|
|
}else {
|
|
@@ -332,10 +349,12 @@ public class UserWithBeisenController {
|
|
|
workTime= workTime+overTimeBigDecimal.doubleValue();
|
|
|
}else {
|
|
|
//非工作日加班 根据实际打卡时长 比较 加班单时长
|
|
|
- if((between.toMinutes()/60)>overTimeBigDecimal.doubleValue()){
|
|
|
+ BigDecimal decimal = new BigDecimal(between.toMinutes());
|
|
|
+ decimal=decimal.divide(new BigDecimal(60),1,RoundingMode.HALF_UP);
|
|
|
+ if((decimal.doubleValue())>overTimeBigDecimal.doubleValue()){
|
|
|
workTime= workTime+overTimeBigDecimal.doubleValue();
|
|
|
}else {
|
|
|
- workTime= workTime+(between.toMinutes()/60);
|
|
|
+ workTime= workTime+(decimal.doubleValue());
|
|
|
}
|
|
|
}
|
|
|
//处理修改
|
|
@@ -428,10 +447,9 @@ public class UserWithBeisenController {
|
|
|
leaveSheet.setStatus(jsonObject.getString("ApproveStatus").equals("通过")?0:jsonObject.getString("Reason").equals("审批中")?1:2);
|
|
|
leaveSheet.setProcinstId(jsonObject.getString("VacationId"));
|
|
|
LeaveSheet one = leaveSheetService.getOne(new LambdaQueryWrapper<LeaveSheet>().eq(LeaveSheet::getProcinstId,leaveSheet.getProcinstId()).eq(LeaveSheet::getOwnerId, first.get().getId()).eq(LeaveSheet::getStartDate, leaveSheet.getStartDate()).eq(LeaveSheet::getEndDate, endDate));
|
|
|
- if(one!=null){
|
|
|
- leaveSheet.setId(one.getId());
|
|
|
+ if(one==null){
|
|
|
+ leaveSheetList.add(leaveSheet);
|
|
|
}
|
|
|
- leaveSheetList.add(leaveSheet);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -511,7 +529,12 @@ public class UserWithBeisenController {
|
|
|
List<JSONObject> overTimeList = overTimeStream.filter(a -> a.getString("StaffId").equals(beisen.get().getUserId())
|
|
|
&& (a.getIntValue("ApproveStatus") == 2||a.getIntValue("ApproveStatus") == 1)).collect(Collectors.toList());
|
|
|
//加班数据可能存在结束日期是当前日期的情况的情况
|
|
|
- BigDecimal overTimeBigDecimal = new BigDecimal(0);
|
|
|
+ BigDecimal overTimeBigDecimal;
|
|
|
+ if(workDay){
|
|
|
+ overTimeBigDecimal = new BigDecimal(0);
|
|
|
+ }else {
|
|
|
+ overTimeBigDecimal = new BigDecimal(8);
|
|
|
+ }
|
|
|
LocalDate localDate = LocalDate.parse(createDate, df);
|
|
|
for (JSONObject o : overTimeList) {
|
|
|
//存在开始日期为当前日期的数据以及结束日期为当天日期的数据 分开计算
|
|
@@ -521,16 +544,19 @@ public class UserWithBeisenController {
|
|
|
//开始日期和结束日期是相同的情况 说明是加班区间只存在于当天的情况
|
|
|
if(max.isAfter(LocalTime.parse("19:00:00",df4))){
|
|
|
//判断打卡时间是不是大于19:00 大于才算加班 通过打卡计算加班时长 与加班单作比较 取小
|
|
|
- Duration timeDurantion = Duration.between(LocalTime.parse("19:00:00", df4), max);
|
|
|
- //如果结束时间大于13:00
|
|
|
- if(max.isAfter(LocalTime.parse("13:00:00",df4))){
|
|
|
- timeDurantion.minusHours(1);
|
|
|
- }
|
|
|
- //如果结束时间大于18:00
|
|
|
- if(max.isAfter(LocalTime.parse("18:00:00",df4))){
|
|
|
- timeDurantion.minusMinutes(30);
|
|
|
- }
|
|
|
- long l = timeDurantion.toMinutes() / 60;
|
|
|
+ Duration timeDurantion = Duration.between(LocalTime.parse("18:00:00", df4), max);
|
|
|
+// //如果结束时间大于13:00
|
|
|
+// if(max.isAfter(LocalTime.parse("13:00:00",df4))){
|
|
|
+// timeDurantion=timeDurantion.minusHours(1);
|
|
|
+// }
|
|
|
+// //如果结束时间大于18:00
|
|
|
+// if(max.isAfter(LocalTime.parse("18:00:00",df4))){
|
|
|
+// timeDurantion=timeDurantion.minusMinutes(30);
|
|
|
+// }
|
|
|
+ System.out.println(timeDurantion.toMinutes());
|
|
|
+ BigDecimal decimal = new BigDecimal(timeDurantion.toMinutes());
|
|
|
+ decimal=decimal.divide(new BigDecimal(60),1,RoundingMode.HALF_UP);
|
|
|
+ double l = decimal.doubleValue();
|
|
|
if(l<o.getDouble("OverTimeDuration")){
|
|
|
overTimeBigDecimal=overTimeBigDecimal.add(new BigDecimal(l));
|
|
|
}else {
|
|
@@ -542,18 +568,22 @@ public class UserWithBeisenController {
|
|
|
LocalDateTime start = LocalDateTime.parse(o.getString("StartDate"), df1);
|
|
|
LocalDateTime stop = start.toLocalDate().atTime(LocalTime.MAX);
|
|
|
Duration duration = Duration.between(start, stop);
|
|
|
- if(stop.toLocalTime().isAfter(LocalTime.parse("13:00:00",df4))){
|
|
|
- duration.minusHours(1);
|
|
|
- }
|
|
|
- //如果结束时间大于18:00
|
|
|
- if(stop.toLocalTime().isAfter(LocalTime.parse("18:00:00",df4))){
|
|
|
- duration.minusMinutes(30);
|
|
|
- }
|
|
|
- long l = duration.toMinutes() / 60;
|
|
|
+// if(stop.toLocalTime().isAfter(LocalTime.parse("13:00:00",df4))){
|
|
|
+// duration=duration.minusHours(1);
|
|
|
+// }
|
|
|
+// //如果结束时间大于18:00
|
|
|
+// if(stop.toLocalTime().isAfter(LocalTime.parse("18:00:00",df4))){
|
|
|
+// duration=duration.minusMinutes(30);
|
|
|
+// }
|
|
|
+ BigDecimal decimal = new BigDecimal(duration.toMinutes());
|
|
|
+ decimal=decimal.divide(new BigDecimal(60),1,RoundingMode.HALF_UP);
|
|
|
+ double l = decimal.doubleValue();
|
|
|
if(max.isAfter(LocalTime.parse("19:00:00",df4))){
|
|
|
//判断打卡时间是不是大于19:00 通过打卡计算加班时长 与加班单作比较 取小
|
|
|
- Duration timeDurantion = Duration.between(LocalTime.parse("19:00:00", df4), max);
|
|
|
- long l1 = timeDurantion.toMinutes() / 60;
|
|
|
+ Duration timeDurantion = Duration.between(LocalTime.parse("18:00:00", df4), max);
|
|
|
+ BigDecimal decimal1 = new BigDecimal(timeDurantion.toMinutes());
|
|
|
+ decimal1=decimal1.divide(new BigDecimal(60),1,RoundingMode.HALF_UP);
|
|
|
+ double l1 = decimal1.doubleValue();
|
|
|
if(l1<l){
|
|
|
overTimeBigDecimal=overTimeBigDecimal.add(new BigDecimal(l1));
|
|
|
}else {
|
|
@@ -567,16 +597,18 @@ public class UserWithBeisenController {
|
|
|
//开始日期和结束日期是相同的情况 说明是加班区间只存在于当天的情况
|
|
|
if(max.isAfter(LocalTime.parse("19:00:00",df4))){
|
|
|
//判断打卡时间是不是大于19:00 通过打卡计算加班时长 与加班单作比较 取小
|
|
|
- Duration timeDurantion = Duration.between(LocalTime.parse("19:00:00", df4), max);
|
|
|
- //如果结束时间大于13:00
|
|
|
- if(max.isAfter(LocalTime.parse("13:00:00",df4))){
|
|
|
- timeDurantion.minusHours(1);
|
|
|
- }
|
|
|
- //如果结束时间大于18:00
|
|
|
- if(max.isAfter(LocalTime.parse("18:00:00",df4))){
|
|
|
- timeDurantion.minusMinutes(30);
|
|
|
- }
|
|
|
- long l = timeDurantion.toMinutes() / 60;
|
|
|
+ Duration timeDurantion = Duration.between(LocalTime.parse("18:00:00", df4), max);
|
|
|
+// //如果结束时间大于13:00
|
|
|
+// if(max.isAfter(LocalTime.parse("13:00:00",df4))){
|
|
|
+// timeDurantion=timeDurantion.minusHours(1);
|
|
|
+// }
|
|
|
+// //如果结束时间大于18:00
|
|
|
+// if(max.isAfter(LocalTime.parse("18:00:00",df4))){
|
|
|
+// timeDurantion=timeDurantion.minusMinutes(30);
|
|
|
+// }
|
|
|
+ BigDecimal decimal = new BigDecimal(timeDurantion.toMinutes());
|
|
|
+ decimal=decimal.divide(new BigDecimal(60),1,RoundingMode.HALF_UP);
|
|
|
+ double l = decimal.doubleValue();
|
|
|
if(l<o.getDouble("OverTimeDuration")){
|
|
|
overTimeBigDecimal=overTimeBigDecimal.add(new BigDecimal(l));
|
|
|
}else {
|
|
@@ -588,19 +620,23 @@ public class UserWithBeisenController {
|
|
|
LocalDateTime stop = LocalDateTime.parse(o.getString("StopDate"), df1);
|
|
|
LocalDateTime start = stop.toLocalDate().atTime(LocalTime.MIN);
|
|
|
Duration duration = Duration.between(start, stop);
|
|
|
- //如果结束时间大于13:00
|
|
|
- if(stop.toLocalTime().isAfter(LocalTime.parse("13:00:00",df4))){
|
|
|
- duration.minusHours(1);
|
|
|
- }
|
|
|
- //如果结束时间大于18:00
|
|
|
- if(stop.toLocalTime().isAfter(LocalTime.parse("18:00:00",df4))){
|
|
|
- duration.minusMinutes(30);
|
|
|
- }
|
|
|
- long l = duration.toMinutes() / 60;
|
|
|
+// //如果结束时间大于13:00
|
|
|
+// if(stop.toLocalTime().isAfter(LocalTime.parse("13:00:00",df4))){
|
|
|
+// duration=duration.minusHours(1);
|
|
|
+// }
|
|
|
+// //如果结束时间大于18:00
|
|
|
+// if(stop.toLocalTime().isAfter(LocalTime.parse("18:00:00",df4))){
|
|
|
+// duration=duration.minusMinutes(30);
|
|
|
+// }
|
|
|
+ BigDecimal decimal = new BigDecimal(duration.toMinutes());
|
|
|
+ decimal=decimal.divide(new BigDecimal(60),1,RoundingMode.HALF_UP);
|
|
|
+ double l = decimal.doubleValue();
|
|
|
if(max.isAfter(LocalTime.parse("19:00:00",df4))){
|
|
|
//判断打卡时间是不是大于19:00 通过打卡计算加班时长 与加班单作比较 取小
|
|
|
- Duration timeDurantion = Duration.between(LocalTime.parse("19:00:00", df4), max);
|
|
|
- long l1 = timeDurantion.toMinutes() / 60;
|
|
|
+ Duration timeDurantion = Duration.between(LocalTime.parse("18:00:00", df4), max);
|
|
|
+ BigDecimal decimal1 = new BigDecimal(timeDurantion.toMinutes());
|
|
|
+ decimal1=decimal1.divide(new BigDecimal(60),1,RoundingMode.HALF_UP);
|
|
|
+ double l1 = decimal1.doubleValue();
|
|
|
if(l1<l){
|
|
|
overTimeBigDecimal=overTimeBigDecimal.add(new BigDecimal(l1));
|
|
|
}else {
|
|
@@ -615,10 +651,12 @@ public class UserWithBeisenController {
|
|
|
workTime= workTime+overTimeBigDecimal.doubleValue();
|
|
|
}else {
|
|
|
//非工作日加班 根据实际打卡时长 比较 加班单时长
|
|
|
- if((between.toMinutes()/60)>overTimeBigDecimal.doubleValue()){
|
|
|
+ BigDecimal decimal = new BigDecimal(between.toMinutes());
|
|
|
+ decimal=decimal.divide(new BigDecimal(60),1,RoundingMode.HALF_UP);
|
|
|
+ if((decimal.doubleValue())>overTimeBigDecimal.doubleValue()){
|
|
|
workTime= workTime+overTimeBigDecimal.doubleValue();
|
|
|
}else {
|
|
|
- workTime= workTime+(between.toMinutes()/60);
|
|
|
+ workTime= workTime+(decimal.doubleValue());
|
|
|
}
|
|
|
}
|
|
|
//处理修改
|