浏览代码

月度工时表

cs 2 年之前
父节点
当前提交
89fbff6c36

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

@@ -7270,29 +7270,27 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 //计算算请假时间
                 map.put("standardHours",standardHours);
                 map.put("workingTime",map.get("workingTime")==null?0:map.get("workingTime"));
-                float leaveTime = 0;
                 List<LeaveSheet> leaveSheets = leaveSheetMapper.selectLeave(map.get("userId").toString(),startDate,endDate);
+                float leaveTime = 0;
                 for (LeaveSheet leaveSheet : leaveSheets) {
                     //当请假时间在当前月内的
                     if ((leaveSheet.getStartDate().isEqual(localStartDate) || leaveSheet.getStartDate().isAfter(localStartDate)) && (leaveSheet.getEndDate().isEqual(localEndDate) || leaveSheet.getEndDate().isBefore(localEndDate))){
                         leaveTime+=leaveSheet.getTimeHours();
                     }else{
-                        float LeaveDay = leaveSheet.getStartDate().toEpochDay() - leaveSheet.getStartDate().toEpochDay();
+                        float LeaveDay = leaveSheet.getEndDate().toEpochDay() - leaveSheet.getStartDate().toEpochDay() + 1;
                         Float timeHours = leaveSheet.getTimeHours();
                         //请假时间首尾跨月
                         if(leaveSheet.getStartDate().isBefore(localStartDate) && leaveSheet.getEndDate().isAfter(localEndDate)){
-                            float sDifDay = leaveSheet.getStartDate().toEpochDay() - localStartDate.toEpochDay();
-                            float eDifDay = localEndDate.toEpochDay() - leaveSheet.getEndDate().toEpochDay();
-                            leaveTime+= standardHours + timeHours*(sDifDay/LeaveDay) + timeHours*(eDifDay/LeaveDay);
+                            leaveTime+= standardHours;
                         }else {
                             //当请假时间开始时间跨月
                             if (leaveSheet.getStartDate().isBefore(localStartDate)){
                                 //平均计算
-                                float DifDay = leaveSheet.getStartDate().toEpochDay() - localStartDate.toEpochDay();
+                                float DifDay = localStartDate.toEpochDay() - leaveSheet.getStartDate().toEpochDay();
                                 leaveTime+= timeHours*(DifDay/LeaveDay);
                             }else {
                                 //当请假时间结束时间跨月
-                                float DifDay = localEndDate.toEpochDay() - leaveSheet.getEndDate().toEpochDay();
+                                float DifDay = leaveSheet.getEndDate().toEpochDay() - localEndDate.toEpochDay();
                                 leaveTime+= timeHours*(DifDay/LeaveDay);
                             }
                         }

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -264,7 +264,8 @@ public class TimingTask {
                 int timeType = Integer.parseInt(String.valueOf(map.get("timeType")));
                 leaveSheet.setTimeType(timeType);
                if (timeType == 0){
-                   leaveSheet.setTimeHours((Float) map.get("timeDays")*8);
+                   TimeType allDay = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", user.getCompanyId()));
+                   leaveSheet.setTimeHours((Float) map.get("timeDays")*allDay.getAllday());
                }else {
                    leaveSheet.setTimeHours((Float) map.get("timeHours"));
                }

+ 2 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/LeaveSheetMapper.xml

@@ -51,8 +51,7 @@
     <!-- 查询某段时间内的请假列表 -->
     <select id="selectLeave" resultType="com.management.platform.entity.LeaveSheet">
         select * from leave_sheet
-        where owner_id = #{userId} and leave_sheet.status=0 and
-        (leave_sheet.start_date &gt;=#{endDate} and leave_sheet.start_date &lt;=#{startDate}) or
-        (leave_sheet.end_date &gt;=#{startDate} and leave_sheet.end_date &lt;=#{endDate}))
+        where owner_id = #{userId} and leave_sheet.status=0
+        and leave_sheet.start_date &lt;=#{endDate} and leave_sheet.end_date &gt;=#{startDate}
     </select>
 </mapper>