|
@@ -473,18 +473,50 @@ public class LeaveSheetServiceImpl extends ServiceImpl<LeaveSheetMapper, LeaveSh
|
|
|
|
|
|
@Override
|
|
|
public HttpRespMsg getOTAvaiDays(String userId) {
|
|
|
- //非驳回和撤回状态的都要统计进去
|
|
|
- List<LeaveSheet> list = leaveSheetMapper.selectList(new QueryWrapper<LeaveSheet>().eq("owner_id", userId).eq("leave_type", exLeaveDay).ne("status", 2).ne("status", 3));
|
|
|
- double alreadyHours = list.stream().mapToDouble(LeaveSheet::getTimeHours).sum();
|
|
|
- double overtime = reportMapper.getMyOvertime(userId);
|
|
|
- double leftHours = overtime - alreadyHours;
|
|
|
- if (leftHours < 0) {
|
|
|
- leftHours = 0;
|
|
|
- }
|
|
|
- float allDayHours = timeTypeMapper.selectById(userMapper.selectById(userId).getCompanyId()).getAllday();
|
|
|
- double d = leftHours/allDayHours;
|
|
|
HttpRespMsg msg = new HttpRespMsg();
|
|
|
- msg.data = d;
|
|
|
+ String startDate = null;
|
|
|
+ User user = userMapper.selectById(userId);
|
|
|
+
|
|
|
+ if (user.getCompanyId() == 7) {
|
|
|
+ //火石闪信,从2023年8月1日开始计算加班工时
|
|
|
+ startDate = "2023-08-01";
|
|
|
+ //获取startDate之前的,2023年的全部非工作日加班
|
|
|
+ String firstDay = "2023-01-01";
|
|
|
+ String endDate = startDate;
|
|
|
+ List<String> allHolidays = WorkDayCalculateUtils.getAllHolidays(firstDay, endDate);
|
|
|
+ double beforeHours = 0;
|
|
|
+ if (allHolidays.size() > 0) {
|
|
|
+ List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().select("IFNULL(sum(overtime_hours),0) as working_time").in("create_date", allHolidays).eq("creator_id", userId));
|
|
|
+ double sum = reportList.stream().mapToDouble(Report::getWorkingTime).sum();
|
|
|
+ beforeHours = sum;
|
|
|
+ }
|
|
|
+
|
|
|
+ //只统计2023年1月1日之后的调休假
|
|
|
+ List<LeaveSheet> list = leaveSheetMapper.selectList(new QueryWrapper<LeaveSheet>()
|
|
|
+ .eq("owner_id", userId).eq("leave_type", exLeaveDay).ne("status", 2).ne("status", 3).ge("start_date", firstDay));
|
|
|
+ double alreadyHours = list.stream().mapToDouble(LeaveSheet::getTimeHours).sum();
|
|
|
+ double overtime = reportMapper.getMyOvertime(userId, startDate);
|
|
|
+ double leftHours = beforeHours + overtime - alreadyHours;
|
|
|
+ if (leftHours < 0) {
|
|
|
+ leftHours = 0;
|
|
|
+ }
|
|
|
+ float allDayHours = timeTypeMapper.selectById(userMapper.selectById(userId).getCompanyId()).getAllday();
|
|
|
+ double d = leftHours/allDayHours;
|
|
|
+ msg.data = d;
|
|
|
+ } else {
|
|
|
+ //非驳回和撤回状态的都要统计进去
|
|
|
+ List<LeaveSheet> list = leaveSheetMapper.selectList(new QueryWrapper<LeaveSheet>().eq("owner_id", userId).eq("leave_type", exLeaveDay).ne("status", 2).ne("status", 3));
|
|
|
+ double alreadyHours = list.stream().mapToDouble(LeaveSheet::getTimeHours).sum();
|
|
|
+ double overtime = reportMapper.getMyOvertime(userId, startDate);
|
|
|
+ double leftHours = overtime - alreadyHours;
|
|
|
+ if (leftHours < 0) {
|
|
|
+ leftHours = 0;
|
|
|
+ }
|
|
|
+ float allDayHours = timeTypeMapper.selectById(userMapper.selectById(userId).getCompanyId()).getAllday();
|
|
|
+ double d = leftHours/allDayHours;
|
|
|
+ msg.data = d;
|
|
|
+ }
|
|
|
+
|
|
|
return msg;
|
|
|
}
|
|
|
|