QuYueTing hace 2 días
padre
commit
42c51a44e1

+ 12 - 8
fhKeeper/formulahousekeeper/collectdata/src/main/java/com/management/collectdata/controller/DataCollectController.java

@@ -343,20 +343,23 @@ 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")));
+
+                    LeaveSheet leaveSheet = null;
                     if (pageBO.getJobNumber() != null) {
                         //用户单独刷新某天的
                         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);
-                            userFvTime.setStartTime(leaveSheet.getEndTime());
+                            leaveSheet = sheetList.get(0);
                         }
                     }
                     String startTime = resultSet.getString("come1");
-                    //如果有请假的结束时间,并且比打卡时间要晚,以请假结束时间作为上班时间
-                    if (userFvTime.getStartTime() != null && userFvTime.getStartTime().compareTo(startTime) > 0) {
-                        startTime = userFvTime.getStartTime();
+                    //如果有请假时间,并且打卡时间在请假时间范围内,以请假结束时间作为打卡上班时间
+                    if (leaveSheet != null) {
+                        //获取请假的最晚时间点作为考勤开始时间
+                        if (startTime.compareTo(leaveSheet.getBeginTime()) > 0 && startTime.compareTo(leaveSheet.getEndTime()) < 0) {
+                            startTime = leaveSheet.getEndTime();
+                        }
                     }
                     //从9:05开始计算,小于9:05的以9:00为准,向上取30分钟, 比如9:09,就转换为9:30
                     if (startTime.compareTo("09:05") <= 0) {
@@ -403,9 +406,10 @@ public class DataCollectController {
                     for (LeaveSheet leaveSheet : leaveSheetList) {
                         List<UserFvTime> userFvTimeList = resList.stream().filter(userFvTime -> leaveSheet.getStartDate().isEqual(userFvTime.getWorkDate()) && leaveSheet.getOwnerId().equals(userFvTime.getUserId())).collect(Collectors.toList());
                         if (userFvTimeList != null && userFvTimeList.size() > 0) {
-                            //有记录的话,更新考勤开始时间
+                            //如果有请假时间,并且打卡时间在请假时间范围内,以请假结束时间作为打卡上班时间
                             UserFvTime userFvTime = userFvTimeList.get(0);
-                            if (userFvTime.getStartTime() == null || userFvTime.getStartTime().compareTo(leaveSheet.getEndTime()) < 0) {
+                            if (userFvTime.getStartTime() == null ||
+                                    (userFvTime.getStartTime().compareTo(leaveSheet.getEndTime()) < 0 && userFvTime.getStartTime().compareTo(leaveSheet.getBeginTime()) > 0)) {
                                 userFvTime.setStartTime(leaveSheet.getEndTime());
                                 userFvTime.setWorkHours(calculateWorkHoursFromTime(userFvTime));
                             }

+ 17 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserDingdingTimeController.java

@@ -3,8 +3,12 @@ package com.management.platform.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.management.platform.entity.CompanyDingding;
+import com.management.platform.entity.User;
 import com.management.platform.entity.UserDingdingTime;
+import com.management.platform.mapper.CompanyDingdingMapper;
 import com.management.platform.mapper.UserDingdingTimeMapper;
+import com.management.platform.mapper.UserMapper;
 import com.management.platform.util.HttpRespMsg;
 import org.springframework.web.bind.annotation.RequestMapping;
 
@@ -28,6 +32,10 @@ public class UserDingdingTimeController {
 
     @Resource
     private UserDingdingTimeMapper userDingdingTimeMapper;
+    @Resource
+    private UserMapper userMapper;
+    @Resource
+    private CompanyDingdingMapper companyDingdingMapper;
 
     @RequestMapping("/getUserCardTime")
     public HttpRespMsg getUserCardTime(String userId, String date) {
@@ -70,7 +78,15 @@ public class UserDingdingTimeController {
 
         QueryWrapper<UserDingdingTime> queryWrapper = new QueryWrapper<UserDingdingTime>().eq("user_id", dingdingTime.getUserId())
                 .eq("work_date", dingdingTime.getWorkDate()).eq("company_id", dingdingTime.getCompanyId());
-        userDingdingTimeMapper.update(dingdingTime,queryWrapper);
+        if (userDingdingTimeMapper.selectCount(queryWrapper) == 0) {
+            User user = userMapper.selectById(dingdingTime.getUserId());
+            dingdingTime.setDingdingUserid(user.getDingdingUserid());
+            CompanyDingding companyDingding = companyDingdingMapper.selectOne(new QueryWrapper<CompanyDingding>().eq("company_id", dingdingTime.getCompanyId()));
+            dingdingTime.setDingdingCorpid(companyDingding.getCorpid());
+            userDingdingTimeMapper.insert(dingdingTime);
+        } else {
+            userDingdingTimeMapper.update(dingdingTime,queryWrapper);
+        }
         msg.data = userDingdingTimeMapper.selectOne(queryWrapper);
         return msg;
     }

+ 4 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ExcelParserService.java

@@ -220,14 +220,11 @@ public class ExcelParserService {
         double minPart = hours - (int)hours;
 
         //按0.5小时对齐
-        if (!onlyReduceRestTime) {
-            if (minPart > 0 && minPart < 0.5) {
-                minPart = 0;
-            } else if (minPart > 0.5) {
-                minPart = 0.5;
-            }
+        if (minPart > 0 && minPart < 0.5) {
+            minPart = 0;
+        } else if (minPart > 0.5) {
+            minPart = 0.5;
         }
-
         hours = (int)hours + minPart;
         //四舍五入到小数点后一位
         BigDecimal bigDecimal = new BigDecimal(hours);

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -8773,13 +8773,13 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 //        headList.add("项目编号");
 //        headList.add("项目名称");
 //        headList.add("分组名称");
+        //        headList.add("分组参与人");
 //        headList.add("分组负责人");
-//        headList.add("分组参与人");
         headList.add(MessageUtils.message("entry.projectId"));
         headList.add(MessageUtils.message("entry.projectName"));
         headList.add(MessageUtils.message("entry.groupName"));
-        headList.add(MessageUtils.message("entry.groupCharge"));
         headList.add(MessageUtils.message("entry.groupPar"));
+        headList.add(MessageUtils.message("entry.groupCharge"));
         allList.add(headList);
         for (HashMap<String, Object> map : list) {
             List<String> item = new ArrayList<>();

+ 1 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserFvTimeServiceImpl.java

@@ -101,9 +101,7 @@ public class UserFvTimeServiceImpl extends ServiceImpl<UserFvTimeMapper, UserFvT
                         List<UserFvTime> dataList = listResponse.getBody();
                         if(org.apache.commons.collections.CollectionUtils.isNotEmpty(dataList)){
                             for (UserFvTime userFvTime : dataList) {
-                                if(StringUtils.isBlank(userFvTime.getProcinstId())){
-                                    System.out.println(userFvTime);
-                                }
+//                                System.out.println("用户: " + userFvTime.getUserId()+", "+userFvTime.getWorkDate() + ": "+userFvTime.getStartTime()+"==="+userFvTime.getEndTime());
                                 User tmp = userMap.get(userFvTime.getUserId());
                                 if(null == tmp){
                                     System.out.println("缺失id=== "+userFvTime.getUserId()+",缺失名字=== "+userFvTime.getName());

+ 8 - 3
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/AttendanceServiceImpl.java

@@ -282,8 +282,10 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
 //                    System.out.println("原来时长为:"+applyForm.getSumTime());
 //                }
                 //只计算工作日
-                int workDays = WorkDayCalculateUtils.getWorkDaysCountInRange(formatter2.format(applyForm.getStartTime()), formatter2.format(applyForm.getEndTime()), 0);
-                applyForm.setSumTime((BigDecimal.valueOf(workDays).multiply(BigDecimal.valueOf(8))));
+                if (applyForm.getSumTime().compareTo(new BigDecimal(8.0)) > 0) {
+                    int workDays = WorkDayCalculateUtils.getWorkDaysCountInRange(formatter2.format(applyForm.getStartTime()), formatter2.format(applyForm.getEndTime()), 0);
+                    applyForm.setSumTime((BigDecimal.valueOf(workDays).multiply(BigDecimal.valueOf(8))));
+                }
 //                if (applyForm.getApplyId().equals("LEW1157")) {
 //                    System.out.println("调整后时长为:"+applyForm.getSumTime());
 //                }
@@ -347,6 +349,9 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
                 }
                 LocalDateTime clockEndTime = staff.getClockEndTime();
                 LocalTime startTime = clockStartTime.toLocalTime();
+                if (clockEndTime == null) {
+                    continue;
+                }
                 LocalTime endTime = clockEndTime.toLocalTime();
                 if (type == JIA_BAN) {
                     //加班处理
@@ -584,7 +589,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
             strings.add(countLess+"");
             strings.add(countMore+"");
             List<ApplyForm> fixDakaCollection = applyFormList.stream().filter(a -> a.getType() == 6&&a.getApplyId().equals(u.getJobNumber())).collect(Collectors.toList());
-            List<AttendanceStaff> unDaKacollect = staffCollect.stream().filter(s -> s.getClockStartTime() == null && s.getClockEndTime() == null).collect(Collectors.toList());
+            List<AttendanceStaff> unDaKacollect = staffCollect.stream().filter(s -> s.getClockStartTime() == null || s.getClockEndTime() == null).collect(Collectors.toList());
             unDaKacollect = unDaKacollect.stream().filter(un->!fixDakaCollection.stream().anyMatch(fix->fix.getStartTime().toLocalDate().equals(un.getClockDate()))).collect(Collectors.toList());
             strings.add(unDaKacollect.size()+"");