yusm hace 1 semana
padre
commit
587ecc5b12

+ 57 - 9
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/AttendanceStaffServiceImpl.java

@@ -107,15 +107,28 @@ public class AttendanceStaffServiceImpl extends ServiceImpl<AttendanceStaffMappe
                         //请假
                         if (applyForm.getType()==3){
                             //请假8小时
-                            if (applyForm.getSumTime().compareTo(BigDecimal.valueOf(8))>=0
-                                    ||(applyForm.getSumTime().compareTo(BigDecimal.valueOf(8)) < 0 &&applyForm.getStartTime().equals(LocalDateTime.of(date, LocalTime.of(8, 0))))    //请早上的假
-                                    ||(applyForm.getSumTime().compareTo(BigDecimal.valueOf(8)) < 0 &&applyForm.getEndTime().equals(LocalDateTime.of(date, LocalTime.of(17, 0))))   //请下午的假
-                            ){
+                            if (applyForm.getSumTime().compareTo(BigDecimal.valueOf(8))>=0){
                                 staff.setClockStartTime(LocalDateTime.of(date, LocalTime.of(8, 0)));
                                 staff.setClockEndTime(LocalDateTime.of(date, LocalTime.of(17, 0)));
                                 staff.setWorkHour(BigDecimal.valueOf(8));
                                 staff.setAttendanceType(QING_JIA);
                                 staff.setAttendanceTypeName(applyForm.getApplyBillName());
+
+                                addList.add(staff);
+                                continue;
+                            } else if (applyForm.getSumTime().compareTo(BigDecimal.valueOf(8)) < 0) {
+                                Attendance a1 = new Attendance();
+                                Attendance a2 = new Attendance();
+
+                                a1.setClockTime(applyForm.getStartTime());
+                                attendances.add(a1);
+
+                                a2.setClockTime(applyForm.getEndTime());
+                                attendances.add(a2);
+
+                                attendances = attendances.stream()
+                                        .sorted(Comparator.comparing(Attendance::getClockTime))
+                                        .collect(Collectors.toList());
                             }
                         }
 
@@ -137,6 +150,8 @@ public class AttendanceStaffServiceImpl extends ServiceImpl<AttendanceStaffMappe
                                 staff.setAttendanceType(JIA_BAN);
                                 staff.setAttendanceTypeName("加班");
                             }
+                            addList.add(staff);
+                            continue;
                         }
 
                         //提前下班申请
@@ -158,6 +173,22 @@ public class AttendanceStaffServiceImpl extends ServiceImpl<AttendanceStaffMappe
                                 staff.setAttendanceType(TI_QIAN_XIA_BAN);
                                 staff.setAttendanceTypeName("提前下班");
                             }
+                            //白班异常1提前下班
+                            else if(applyForm.getEndTime().toLocalTime().equals(LocalTime.of(18, 0))){
+                                staff.setClockStartTime(LocalDateTime.of(date, LocalTime.of(9, 0)));
+                                staff.setClockEndTime(LocalDateTime.of(date, LocalTime.of(18, 0)));
+                                staff.setWorkHour(BigDecimal.valueOf(8).subtract(applyForm.getSumTime()));
+                                staff.setAttendanceType(TI_QIAN_XIA_BAN);
+                                staff.setAttendanceTypeName("提前下班");
+                            }
+                            //白班异常2提前下班
+                            else if(applyForm.getEndTime().toLocalTime().equals(LocalTime.of(19, 0))){
+                                staff.setClockStartTime(LocalDateTime.of(date, LocalTime.of(10, 0)));
+                                staff.setClockEndTime(LocalDateTime.of(date, LocalTime.of(19, 0)));
+                                staff.setWorkHour(BigDecimal.valueOf(8).subtract(applyForm.getSumTime()));
+                                staff.setAttendanceType(TI_QIAN_XIA_BAN);
+                                staff.setAttendanceTypeName("提前下班");
+                            }
                             //中班提前下班
                             else if(applyForm.getEndTime().toLocalTime().equals(LocalTime.of(21, 0))){
                                 staff.setClockStartTime(LocalDateTime.of(date, LocalTime.of(13, 0)));
@@ -181,9 +212,25 @@ public class AttendanceStaffServiceImpl extends ServiceImpl<AttendanceStaffMappe
                                 staff.setAttendanceType(TI_QIAN_XIA_BAN);
                                 staff.setAttendanceTypeName("提前下班");
                             }
+                            //异常小夜班提前下班
+                            else if(applyForm.getEndTime().toLocalTime().equals(LocalTime.of(22, 0))){
+                                staff.setClockStartTime(LocalDateTime.of(date, LocalTime.of(14, 0)));
+                                staff.setClockEndTime(LocalDateTime.of(date, LocalTime.of(22, 0)));
+                                staff.setWorkHour(BigDecimal.valueOf(8).subtract(applyForm.getSumTime()));
+                                staff.setAttendanceType(TI_QIAN_XIA_BAN);
+                                staff.setAttendanceTypeName("提前下班");
+                            }
+                            else if(applyForm.getEndTime().toLocalTime().equals(LocalTime.of(23, 0))){
+                                staff.setClockStartTime(LocalDateTime.of(date, LocalTime.of(15, 0)));
+                                staff.setClockEndTime(LocalDateTime.of(date, LocalTime.of(23, 0)));
+                                staff.setWorkHour(BigDecimal.valueOf(8).subtract(applyForm.getSumTime()));
+                                staff.setAttendanceType(TI_QIAN_XIA_BAN);
+                                staff.setAttendanceTypeName("提前下班");
+                            }
+                            addList.add(staff);
+                            continue;
                         }
-                        addList.add(staff);
-                        continue;
+
                     }
                     else if (first.isPresent()&&first.get().getType()==6) {
                         List<ApplyForm> collect = applyFormList.stream().filter(a -> !a.getStartTime().toLocalDate().isAfter(date)
@@ -896,12 +943,13 @@ public class AttendanceStaffServiceImpl extends ServiceImpl<AttendanceStaffMappe
                         HashMap<String, Object> map = new HashMap<>();
                         map.put("res", stringBuilder.toString());
                         map.put("color","#F56C6C");
-                        for (HashMap<String, Object> hashMap : maplist) {
+                        /*for (HashMap<String, Object> hashMap : maplist) {
                             hashMap.put("res","正常");
-                        }
+                        }*/
                         maplist.add(1,map);
                     }
-                }else {
+                }
+                else {
                     if (!applyFormList.isEmpty()){
                         StringBuilder stringBuilder = new StringBuilder();
                         for (ApplyForm applyForm : applyFormList) {