Min 11 månader sedan
förälder
incheckning
a7eb250b4f

+ 57 - 18
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserWithBeisenController.java

@@ -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)){
@@ -247,7 +252,9 @@ public class UserWithBeisenController {
 //                                        if(max.get().isAfter(LocalTime.parse("18:00:00",df4))){
 //                                            timeDurantion=timeDurantion.minusMinutes(30);
 //                                        }
-                                        long l = timeDurantion.toMinutes() / 60;
+                                        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 {
@@ -266,11 +273,15 @@ public class UserWithBeisenController {
 //                                    if(stop.toLocalTime().isAfter(LocalTime.parse("18:00:00",df4))){
 //                                        duration=duration.minusMinutes(30);
 //                                    }
-                                    long l = duration.toMinutes() / 60;
+                                    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("18:00:00", df4), max.get());
-                                        long l1 = timeDurantion.toMinutes() / 60;
+                                        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 {
@@ -293,7 +304,9 @@ public class UserWithBeisenController {
 //                                        if(max.get().isAfter(LocalTime.parse("18:00:00",df4))){
 //                                            timeDurantion=timeDurantion.minusMinutes(30);
 //                                        }
-                                        long l = timeDurantion.toMinutes() / 60;
+                                        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 {
@@ -313,11 +326,15 @@ public class UserWithBeisenController {
 //                                    if(stop.toLocalTime().isAfter(LocalTime.parse("18:00:00",df4))){
 //                                        duration=duration.minusMinutes(30);
 //                                    }
-                                    long l = duration.toMinutes() / 60;
+                                    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("18:00:00", df4), max.get());
-                                        long l1 = timeDurantion.toMinutes() / 60;
+                                        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());
                             }
                         }
                         //处理修改
@@ -510,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) {
                     //存在开始日期为当前日期的数据以及结束日期为当天日期的数据 分开计算
@@ -529,7 +553,10 @@ public class UserWithBeisenController {
 //                                if(max.isAfter(LocalTime.parse("18:00:00",df4))){
 //                                    timeDurantion=timeDurantion.minusMinutes(30);
 //                                }
-                                long l = timeDurantion.toMinutes() / 60;
+                                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 {
@@ -548,11 +575,15 @@ public class UserWithBeisenController {
 //                            if(stop.toLocalTime().isAfter(LocalTime.parse("18:00:00",df4))){
 //                                duration=duration.minusMinutes(30);
 //                            }
-                            long l = duration.toMinutes() / 60;
+                            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("18:00:00", df4), max);
-                                long l1 = timeDurantion.toMinutes() / 60;
+                                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 {
@@ -575,7 +606,9 @@ public class UserWithBeisenController {
 //                                if(max.isAfter(LocalTime.parse("18:00:00",df4))){
 //                                    timeDurantion=timeDurantion.minusMinutes(30);
 //                                }
-                                long l = timeDurantion.toMinutes() / 60;
+                                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 {
@@ -595,11 +628,15 @@ public class UserWithBeisenController {
 //                            if(stop.toLocalTime().isAfter(LocalTime.parse("18:00:00",df4))){
 //                                duration=duration.minusMinutes(30);
 //                            }
-                            long l = duration.toMinutes() / 60;
+                            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("18:00:00", df4), max);
-                                long l1 = timeDurantion.toMinutes() / 60;
+                                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 {
@@ -614,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());
                     }
                 }
                 //处理修改

+ 28 - 9
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -2180,7 +2180,12 @@ public class TimingTask {
                         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)){
@@ -2198,7 +2203,9 @@ public class TimingTask {
 //                                        if(max.get().isAfter(LocalTime.parse("18:00:00",df4))){
 //                                            timeDurantion.minusMinutes(30);
 //                                        }
-                                        long l = timeDurantion.toMinutes() / 60;
+                                        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 {
@@ -2217,11 +2224,15 @@ public class TimingTask {
 //                                    if(stop.toLocalTime().isAfter(LocalTime.parse("18:00:00",df4))){
 //                                        duration.minusMinutes(30);
 //                                    }
-                                    long l = duration.toMinutes() / 60;
+                                    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("18:00:00", df4), max.get());
-                                        long l1 = timeDurantion.toMinutes() / 60;
+                                        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 {
@@ -2244,7 +2255,9 @@ public class TimingTask {
 //                                        if(max.get().isAfter(LocalTime.parse("18:00:00",df4))){
 //                                            timeDurantion.minusMinutes(30);
 //                                        }
-                                        long l = timeDurantion.toMinutes() / 60;
+                                        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 {
@@ -2264,11 +2277,15 @@ public class TimingTask {
 //                                    if(stop.toLocalTime().isAfter(LocalTime.parse("18:00:00",df4))){
 //                                        duration.minusMinutes(30);
 //                                    }
-                                    long l = duration.toMinutes() / 60;
+                                    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("18:00:00", df4), max.get());
-                                        long l1 = timeDurantion.toMinutes() / 60;
+                                        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 {
@@ -2283,10 +2300,12 @@ public class TimingTask {
                             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());
                             }
                         }
                         List<JSONObject> vacationList = vacationStream.filter(a ->{