|
@@ -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;
|
|
|
}
|