|
|
@@ -1248,7 +1248,6 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
|
|
|
}
|
|
|
LocalDate minDate = distinctReportList.stream().min(Comparator.comparing(Report::getCreateDate)).get().getCreateDate();
|
|
|
LocalDate maxDate = distinctReportList.stream().max(Comparator.comparing(Report::getCreateDate)).get().getCreateDate();
|
|
|
-
|
|
|
List<Report> sumReportList = reportMapper.selectList(new QueryWrapper<Report>()
|
|
|
.select("creator_id,create_date, sum(overtime_hours) as overtime_hours")
|
|
|
.in("creator_id", distinctUserIds).between("create_date", minDate, maxDate).ne("state", 2).groupBy("creator_id,create_date"));//驳回的不算
|
|
|
@@ -1260,6 +1259,7 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
|
|
|
LocalDate date = item.getCreateDate();
|
|
|
//查询日报的合计加班时长
|
|
|
double reportOvertime = sumReportList.stream().filter(r -> r.getCreatorId().equals(userId) && r.getCreateDate().equals(date)).findFirst().map(Report::getOvertimeHours).orElse(0.0);
|
|
|
+
|
|
|
User user = userList.stream().filter(u -> u.getId().equals(userId)).findFirst().orElse(null);
|
|
|
UserCorpwxTime userCorpwxTime = userCorpwxTimes.stream().filter(u -> u.getCorpwxUserid().equals(user.getCorpwxUserid()) && u.getCreateDate().equals(date)).findFirst().orElse(null);
|
|
|
if (userCorpwxTime != null) {
|
|
|
@@ -1356,14 +1356,14 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
|
|
|
allowance.setStartTime(startTime);
|
|
|
allowance.setEndTime(endTime);
|
|
|
String startTimeTxt = userCorpwxTime.getStartTime();
|
|
|
- String endTimeTxt = userCorpwxTime.getEndTime();
|
|
|
+ String endTimeTxt = endTimeStr.startsWith("次日")?endTimeStr.replace("次日",""):endTimeStr;
|
|
|
BigDecimal bigDecimal = new BigDecimal(Duration.between(startTime,endTime).toMinutes());
|
|
|
bigDecimal = bigDecimal.divide(BigDecimal.valueOf(60),1,BigDecimal.ROUND_HALF_UP);//按小时为单位
|
|
|
double standWorkHours = 8.0;
|
|
|
double onDutyTime = bigDecimal.doubleValue();
|
|
|
allowance.setOnDutyHours(onDutyTime);
|
|
|
double time = onDutyTime;
|
|
|
- if (startTimeTxt.compareTo(baseMorningEnd) <= 0 && endTimeTxt.compareTo(baseAfternoonStart) >= 0) {
|
|
|
+ if (startTimeTxt.compareTo(baseMorningEnd) <= 0 && (endTimeTxt.compareTo(baseAfternoonStart) >= 0 || isNextDay)) {
|
|
|
//重新计算实际工作工时时长,需要减去中间午休时间
|
|
|
time = time - restTime;
|
|
|
System.out.println("午休时间:" + restTime + ", 减去后,工作时长=" + time);
|