Commit b946d519 by 刘鑫

fix(工作日历): 日程修订提示信息修订

1 parent 3b086a3c
......@@ -34,6 +34,9 @@ import com.dituhui.pea.order.service.EngineerCalendarService;
import com.dituhui.pea.user.IUser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
......@@ -56,6 +59,7 @@ import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
......@@ -273,10 +277,12 @@ public class EngineerCalendarServiceImpl implements EngineerCalendarService {
if (beginDate.isEqual(endDate)) {
LocalDateTime startTime = DateUtils.localDateTimeFromStr(beginTime);
LocalDateTime endTime1 = DateUtils.localDateTimeFromStr(endTime);
if (checkTimesHasOverlap(endDate, engineerCode, startTime, endTime1)) {
Optional<CheckTime> checkTimeOptional = checkTimesHasOverlap(endDate, engineerCode, startTime, endTime1);
if (checkTimeOptional.isPresent()) {
CheckTime checkTime = checkTimeOptional.get();
throw new BusinessException("工号为" + engineerCode + "的工程师在"
+ DateTimeUtil.DATETIME_FORMAT_NON_SECONDS.format(startTime) + "到"
+ DateTimeUtil.DATETIME_FORMAT_NON_SECONDS.format(endTime1) + "区间已有日程安排");
+ checkTime.getStartTime() + "到"
+ checkTime.getEndTime() + "区间已有日程安排");
}
// 设定的是同一天,简单处理
CapacityEngineerCalendarEntity e = new CapacityEngineerCalendarEntity();
......@@ -326,10 +332,12 @@ public class EngineerCalendarServiceImpl implements EngineerCalendarService {
e.setEndTime(DateUtils.localDateTimeFromStr(etime));
}
//校验是否有当天时间段的记录
if (checkTimesHasOverlap(current, engineerCode, e.getStartTime(), e.getEndTime())) {
Optional<CheckTime> checkTimeOptional = checkTimesHasOverlap(current, engineerCode, e.getStartTime(), e.getEndTime());
if (checkTimeOptional.isPresent()) {
CheckTime checkTime = checkTimeOptional.get();
throw new BusinessException("工号为" + engineerCode + "的工程师在"
+ DateTimeUtil.DATETIME_FORMAT_NON_SECONDS.format(e.getStartTime()) + "到"
+ DateTimeUtil.DATETIME_FORMAT_NON_SECONDS.format(e.getStartTime()) + "区间已有日程安排");
+ checkTime.getStartTime() + "到"
+ checkTime.getEndTime() + "区间已有日程安排");
}
e.setWorkday(DateUtils.formatDate(current));
......@@ -343,20 +351,31 @@ public class EngineerCalendarServiceImpl implements EngineerCalendarService {
capacityEngineerCalendarDao.saveAll(all);
}
private boolean checkTimesHasOverlap(LocalDate date,
String engineerCode, LocalDateTime dynaStartTime, LocalDateTime dynaEndTime) {
private Optional<CheckTime> checkTimesHasOverlap(LocalDate date,
String engineerCode, LocalDateTime dynaStartTime, LocalDateTime dynaEndTime) {
//获取指定日期的工作人员日历
List<CapacityEngineerCalendarEntity> calendar = capacityEngineerCalendarDao.findCalendarByWorkdayAndEngineerCode(DateTimeUtil.formatDate(date), engineerCode);
if (CollectionUtils.isEmpty(calendar)) {
return false;
return Optional.empty();
}
//进行时间交集检查, 如果有交集返回 true 无则返回
return calendar.stream()
.anyMatch(t -> {
.filter(t -> {
LocalDateTime fixedStartTime = t.getStartTime();
LocalDateTime fixedEndTime = t.getEndTime();
return DateUtil.checkTimesHasOverlap(dynaStartTime, dynaEndTime, fixedStartTime, fixedEndTime);
});
})
.map(t -> new CheckTime(DateTimeUtil.DATETIME_FORMAT_NON_SECONDS.format(t.getStartTime()),
DateTimeUtil.DATETIME_FORMAT_NON_SECONDS.format(t.getEndTime())))
.findAny();
}
@Setter
@Getter
@AllArgsConstructor
class CheckTime {
private String startTime;
private String endTime;
}
@Override
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!