Ver Fonte

泓浒考勤和半天请假校验,以请假结束时间作为考勤开始时间。

QuYueTing há 1 mês atrás
pai
commit
c331e861fb

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

@@ -24,6 +24,7 @@ import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @RequestMapping("/dataCollect")
 @RestController
@@ -344,7 +345,8 @@ public class DataCollectController {
                     userFvTime.setWorkDate(null==resultSet.getDate("attendance_date")?null:LocalDate.parse(sdfYmd.format(resultSet.getDate("attendance_date")), DateTimeFormatter.ofPattern("yyyy-MM-dd")));
                     if (pageBO.getJobNumber() != null) {
                         //用户单独刷新某天的
-                        List<LeaveSheet> sheetList = getUserDayLeaveSheet(sdfYmd.format(resultSet.getDate("attendance_date")), pageBO.getJobNumber());
+                        String date = sdfYmd.format(resultSet.getDate("attendance_date"));
+                        List<LeaveSheet> sheetList = getLeaveSheetInRange(date, date, pageBO.getJobNumber());
                         if (sheetList != null && sheetList.size() > 0) {
                             //获取请假的最晚时间点作为考勤开始时间
                             LeaveSheet leaveSheet = sheetList.get(0);
@@ -393,6 +395,24 @@ public class DataCollectController {
                     resList.add(userFvTime);
                 }
             }
+
+            if (pageBO.getJobNumber() == null) {
+                //取请假的记录,合并处理考勤开始时间
+                List<LeaveSheet> leaveSheetList = getLeaveSheetInRange(pageBO.getStartDate(), pageBO.getEndDate(), null);
+                if (leaveSheetList != null && leaveSheetList.size() > 0) {
+                    for (LeaveSheet leaveSheet : leaveSheetList) {
+                        List<UserFvTime> userFvTimeList = resList.stream().filter(userFvTime -> leaveSheet.getStartDate().isEqual(userFvTime.getWorkDate())).collect(Collectors.toList());
+                        if (userFvTimeList != null && userFvTimeList.size() > 0) {
+                            //有记录的话,更新考勤开始时间
+                            UserFvTime userFvTime = userFvTimeList.get(0);
+                            if (userFvTime.getStartTime() == null || userFvTime.getStartTime().compareTo(leaveSheet.getEndTime()) < 0) {
+                                userFvTime.setStartTime(leaveSheet.getEndTime());
+                                userFvTime.setWorkHours(calculateWorkHoursFromTime(userFvTime));
+                            }
+                        }
+                    }
+                }
+            }
         } catch (SQLException e) {
             System.err.println("数据库操作错误: " + e.getMessage());
         }
@@ -531,7 +551,7 @@ public class DataCollectController {
         return resList;
     }
 
-    private List<LeaveSheet> getUserDayLeaveSheet(String date, String empNo) {
+    private List<LeaveSheet> getLeaveSheetInRange(String startDate, String endDate, String empNo) {
         String sqlQuery = "select distinct ahlo.id,ahlo.company_id,ahlo.emp_no,ahlo.emp_name " +
                 " ,ahlo.begin_date,ahlo.end_date,ahlo.begin_time,ahlo.end_time,ahlo.leave_category_name " +
                 " ,ahlo.audit_status,ahlo.reason, eic.emp_no as operator_id " +
@@ -539,13 +559,20 @@ public class DataCollectController {
                 " from att_holiday_leave_order ahlo " +
                 " left join emp_info eie on ahlo.emp_origin_id = eie.origin_id " +
                 " left join emp_info eic on ahlo.create_id = eic.origin_id " +
-                " where ahlo.audit_status = 3 and ahlo.is_delete = 0 and ahlo.create_date = ? and ahlo.emp_no = ? and ahlo.end_time is not null order by ahlo.end_time desc limit 1";
+                " where ahlo.audit_status = 3 and ahlo.is_delete = 0 and ahlo.end_time is not null and ahlo.total_day > 0 and ahlo.total_day < 1 and date_format(ahlo.begin_date,'%Y-%m-%d') between ? and ?";
+        if (empNo != null) {
+            sqlQuery += "and ahlo.emp_no = ?";
+        }
+        sqlQuery += " order by ahlo.end_time desc";
         SimpleDateFormat sdfYmd = new SimpleDateFormat("yyyy-MM-dd");
         List<LeaveSheet> resList = new ArrayList<>();
         try (Connection connection = mysqlDataSource.getConnection()) {
             PreparedStatement queryStmt = connection.prepareStatement(sqlQuery);
-            queryStmt.setString(1, date);
-            queryStmt.setString(2, empNo);
+            queryStmt.setString(1, startDate);
+            queryStmt.setString(2, endDate);
+            if (empNo != null) {
+                queryStmt.setString(3, empNo);
+            }
             try (ResultSet resultSet = queryStmt.executeQuery()) {
                 while (resultSet.next()) {
                     LeaveSheet leaveSheet = new LeaveSheet();

+ 0 - 46
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/DataCollectTask.java

@@ -154,53 +154,7 @@ public class DataCollectTask {
 
                 }
             }
-
         }
-
-//        List<TisTimeVO> timeVOList = fmwDetailMapper.getTisTimeByDateYm(specialCompanyId,dateStr);
-//        List<TisTimeVO> timeVOList =  reportMapper.getTisTimeByDate(specialCompanyId,dateStr);
-
-//        for (TisTimeVO tisTimeVO : timeVOList) {
-//            String sqlQuery = "select top 1 iRealCOID from ca_batchmap where cMOCode = ? and iMOSubSN = ? ";
-//            try (Connection connection = sqlServerDataSource.getConnection()) {
-//                PreparedStatement queryStmt = connection.prepareStatement(sqlQuery);
-//                queryStmt.setString(1,tisTimeVO.getOrderId());
-//                queryStmt.setInt(2,tisTimeVO.getLine());
-//                ResultSet queryRs = queryStmt.executeQuery();
-//                if (queryRs.next()) {
-//                    tisTimeVO.setCoId(queryRs.getString("iRealCOID"));
-//
-//                }
-//            } catch (SQLException e) {
-//                System.err.println("数据库操作错误: " + e.getMessage());
-//            }
-//        }
-
-//        for (TisTimeVO tisTimeVO : timeVOList) {
-//            String sqlQuery = "select top 1 iRealCOID from ca_batchmap where cMOCode = ? and iMOSubSN = ? ";
-//            try (Connection connection = sqlServerDataSource.getConnection()) {
-//                PreparedStatement queryStmt = connection.prepareStatement(sqlQuery);
-//                queryStmt.setString(1,tisTimeVO.getOrderId());
-//                queryStmt.setInt(2,tisTimeVO.getLine());
-//                ResultSet queryRs = queryStmt.executeQuery();
-//                if (queryRs.next()) {
-//                    String iRealCOID = queryRs.getString("iRealCOID");
-//                    String sqlInsert = "insert into CA_DayTiS(cPPID,iRealWkt,dDate) values(?,?,?)";
-//                    PreparedStatement insertStmt = connection.prepareStatement(sqlInsert);
-//                    insertStmt.setString(1,iRealCOID);
-//                    insertStmt.setBigDecimal(2,tisTimeVO.getWorkTime());
-//                    insertStmt.setString(3,dateStr);
-//                    int i = insertStmt.executeUpdate();
-//                    if(i>0){
-//                        System.out.println("执行成功");
-//                    }else{
-//                        System.out.println(iRealCOID+"执行失败");
-//                    }
-//                }
-//            } catch (SQLException e) {
-//                System.err.println("数据库操作错误: " + e.getMessage());
-//            }
-//        }
     }