cs il y a 2 ans
Parent
commit
2ef3679db7

+ 46 - 37
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -5758,6 +5758,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         //需要补的时间
         double fillTime = monthVO.getStandardHours() - monthVO.getWorkingTime() - monthVO.getLeaveTime();
         User user = userMapper.selectById(monthVO.getUserId());
+        TimeType timeType = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", user.getCompanyId()));
         yearMonth = yearMonth;
         LocalDate time = LocalDate.parse(yearMonth, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
         LocalDate startDate = time.with(TemporalAdjusters.firstDayOfMonth());
@@ -5777,10 +5778,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         String workEndTime = "";
         if (startAndEndTime.size() != 0){
             Map<String, Object> startAndEndTimeMap = startAndEndTime.get(0);
-            workStartTime = startAndEndTimeMap.get("startTime").toString();
-            workEndTime = startAndEndTimeMap.get("endTime").toString();
-        }else {
-            return msg;
+            workStartTime = startAndEndTimeMap.get("startTime")==null?"":startAndEndTimeMap.get("startTime").toString();
+            workEndTime = startAndEndTimeMap.get("endTime")==null?"":startAndEndTimeMap.get("endTime").toString();
         }
         List<TimeAutoExclude> timeAutoExclude = timeAutoExcludeMapper.selectList(new QueryWrapper<TimeAutoExclude>().eq("company_id", user.getCompanyId()));
         //遍历工作日
@@ -5799,6 +5798,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 }
                 //如果该日工作时长没有填满
                 if (workTime < monthVO.getAllday()){
+                    //改日可补时长
+                    Double fillHour = monthVO.getAllday() - workTime;
                     Report reportItem = new Report();
                     reportItem.setCreatorId(user.getId());
                     reportItem.setProjectId(Integer.valueOf(projectId.get(0)));
@@ -5813,48 +5814,56 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     reportItem.setCompanyId(user.getCompanyId());
                     reportItem.setProjectAuditorId(request.getHeader("token"));
                     reportItem.setDeptId(user.getDepartmentId());
+                    reportItem.setReportTimeType(timeType.getType());
                     if (workTime == 0){
                         reportItem.setWorkingTime(monthVO.getAllday());
+                        if (reportItem.getReportTimeType().equals(2)){
+                            reportItem.setStartTime(workStartTime);
+                            reportItem.setEndTime(workEndTime);
+                        }
                     }else {
-                        //获取日报的最小开始时间和最大结束时间
-                        List<String> endTime = report.stream().map(m -> m.get("endTime").toString()).collect(Collectors.toList());
-                        String eTime = endTime.get(0);
-                        for (String s : endTime) {
-                            if (s.compareTo(eTime) < 0){
-                                eTime = s;
+                        if (reportItem.getReportTimeType().equals(2)){
+                            //获取日报的最小开始时间和最大结束时间
+                            List<String> endTime = report.stream().map(m -> m.get("endTime")==null?"12:00":m.get("endTime").toString()).collect(Collectors.toList());
+                            String eTime = endTime.get(0);
+                            for (String s : endTime) {
+                                if (s.compareTo(eTime) < 0){
+                                    eTime = s;
+                                }
                             }
-                        }
-                        reportItem.setStartTime(eTime);
-                        if (eTime.compareTo(workEndTime) < 0){
-                            reportItem.setEndTime(workEndTime);
+                            reportItem.setStartTime(eTime);
+                            reportItem.setEndTime("23:50");
                         }else {
-                            reportItem.setEndTime("22:00");
+                            reportItem.setWorkingTime(fillHour);
                         }
-                        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
-                        try {
-                            long t = sdf.parse(reportItem.getEndTime()).getTime() - sdf.parse(reportItem.getStartTime()).getTime();
-                            int excludeTime = 0;
-                            if (timeAutoExclude.size() > 0) {
-                                for (TimeAutoExclude exclude : timeAutoExclude) {
-                                    if (!(exclude.getEndTime().compareTo(reportItem.getStartTime()) < 0 || exclude.getStartTime().compareTo(reportItem.getEndTime()) > 0)) {
-                                        //有交叉的情况,结束时间取较早的,开始时间取较晚的
-                                        String mEndTime = exclude.getEndTime().compareTo(reportItem.getEndTime()) <0 ? exclude.getEndTime() : reportItem.getEndTime();
-                                        String mStartTime = exclude.getStartTime().compareTo(reportItem.getStartTime()) > 0 ? exclude.getStartTime() : reportItem.getStartTime();
-                                        //落在休息时间范围内,需要计算去掉的时间
-                                        long subtractTime = sdf.parse(mEndTime).getTime() - sdf.parse(mStartTime).getTime();
-                                        excludeTime += subtractTime;
+
+                        if (reportItem.getReportTimeType() == 2){
+                            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
+                            try {
+                                long t = sdf.parse(reportItem.getEndTime()).getTime() - sdf.parse(reportItem.getStartTime()).getTime();
+                                int excludeTime = 0;
+                                if (timeAutoExclude.size() > 0) {
+                                    for (TimeAutoExclude exclude : timeAutoExclude) {
+                                        if (!(exclude.getEndTime().compareTo(reportItem.getStartTime()) < 0 || exclude.getStartTime().compareTo(reportItem.getEndTime()) > 0)) {
+                                            //有交叉的情况,结束时间取较早的,开始时间取较晚的
+                                            String mEndTime = exclude.getEndTime().compareTo(reportItem.getEndTime()) <0 ? exclude.getEndTime() : reportItem.getEndTime();
+                                            String mStartTime = exclude.getStartTime().compareTo(reportItem.getStartTime()) > 0 ? exclude.getStartTime() : reportItem.getStartTime();
+                                            //落在休息时间范围内,需要计算去掉的时间
+                                            long subtractTime = sdf.parse(mEndTime).getTime() - sdf.parse(mStartTime).getTime();
+                                            excludeTime += subtractTime;
+                                        }
                                     }
                                 }
-                            }
-                            if (excludeTime > 0) {
-                                t -= excludeTime;//去掉休息时间
-                            }
+                                if (excludeTime > 0) {
+                                    t -= excludeTime;//去掉休息时间
+                                }
 
-                            int minutes = (int)t/1000/60;
-                            double hours = minutes*1.0f/60;
-                            reportItem.setWorkingTime(hours);
-                        }catch (ParseException e) {
-                            e.printStackTrace();
+                                int minutes = (int)t/1000/60;
+                                double hours = minutes*1.0f/60;
+                                reportItem.setWorkingTime(hours);
+                            }catch (ParseException e) {
+                                e.printStackTrace();
+                            }
                         }
                     }
                     reports.add(reportItem);