Commit b946d519 by 刘鑫

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

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