Преглед на файлове

修改考勤处理方式

QuYueTing преди 6 дни
родител
ревизия
f4b886ab8f

+ 38 - 5
fhKeeper/formulahousekeeper/collectdata/src/main/java/com/management/collectdata/controller/DataCollectController.java

@@ -362,8 +362,37 @@ public class DataCollectController {
                     userFvTime.setProcinstId(resultSet.getString("id"));
                     userFvTime.setUserId(resultSet.getString("emp_no"));
                     userFvTime.setWorkDate(null==resultSet.getDate("attendance_date")?null:LocalDate.parse(sdfYmd.format(resultSet.getDate("attendance_date")), DateTimeFormatter.ofPattern("yyyy-MM-dd")));
-                    userFvTime.setStartTime(resultSet.getString("come1"));
-                    userFvTime.setEndTime(resultSet.getString("go1"));
+                    String startTime = resultSet.getString("come1");
+                    //从9:00开始计算,小于9:00的以9:00为准,向上取30分钟, 比如9:09,就转换为9:30
+                    if (startTime.compareTo("09:00") < 0) {
+                        startTime = "09:00";
+                    }
+                    String[] startTimeArr = startTime.split(":");
+                    int hour = Integer.parseInt(startTimeArr[0]);
+                    int minute = Integer.parseInt(startTimeArr[1]);
+                    if (minute > 0) {
+                        if (minute <= 30) {
+                            minute = 30;
+                        } else {
+                            hour += 1;
+                            minute = 0;
+                        }
+                    }
+
+                    startTime = formatTime(hour, minute);
+
+                    String endTime = resultSet.getString("go1");
+                    String[] endTimeArr = endTime.split(":");
+                    hour = Integer.parseInt(endTimeArr[0]);
+                    minute = Integer.parseInt(endTimeArr[1]);
+                    if (minute < 30) {
+                        minute = 0;
+                    } else {
+                        minute = 30;
+                    }
+                    endTime = formatTime(hour, minute);
+                    userFvTime.setStartTime(startTime);
+                    userFvTime.setEndTime(endTime);
                     userFvTime.setWorkHours(calculateWorkHoursFromTime(userFvTime));
                     userFvTime.setOverTimeSeconds(null==resultSet.getBigDecimal("worktime_total_hour")?null:resultSet.getBigDecimal("worktime_total_hour").setScale(1,RoundingMode.HALF_UP)
                             .multiply(new BigDecimal("3600")).longValue());
@@ -378,6 +407,13 @@ public class DataCollectController {
         return resList;
     }
 
+    String formatTime(int hour, int minute) {
+        //格式化一下为HH:mm
+        DateTimeFormatter df = DateTimeFormatter.ofPattern("HH:mm");
+        LocalTime localTime = LocalDateTime.now().withHour(hour).withMinute(minute).withSecond(0).withNano(0).toLocalTime();
+        return localTime.format(df);
+    }
+
     private float calculateWorkHoursFromTime(UserFvTime userFvTime) {
         String baseMorningEnd = "12:00";
         String baseAfternoonStart = "13:00";
@@ -401,9 +437,6 @@ public class DataCollectController {
         double time = bigDecimal.doubleValue();
         if (time < 0) {
             time = 0;
-        } else {
-            BigDecimal decimal = new BigDecimal(time);
-            time = decimal.setScale(0, BigDecimal.ROUND_HALF_UP).doubleValue();
         }
         return (float)time;
     }