Commit 310c1191 by 刘鑫

Merge branch 'develop-16542' into 'develop'

工作队策略字段更新 日历日程操作交叉提示信息更新

See merge request !356
2 parents 75fb4d9d 6e6625a0
......@@ -7,7 +7,7 @@ public class BusinessTeamConfigSubmitDTO {
/**
* 网点指派策略
*/
private String assiginStrategy;
private String assignStrategy;
/**
* cutoff时间
*/
......
......@@ -57,6 +57,16 @@ public interface CapacityQueryService {
*/
CapacityQueryDTO.Segment queryEngineerCapacity(String engineerCode, LocalDate date);
/**
* 查询指定日期内的容量
*
* @param engineerCode 工程师编码
* @param startDate 开始日期
* @param endDate 结束日期
* @return 日期内工程师的容量信息
*/
CapacityQueryDTO.PersonalResult queryEngineerCapacity(String engineerCode, LocalDate startDate, LocalDate endDate);
/**
* 查询单个工程师指定日期时间段内的的容量状态
......
......@@ -327,8 +327,8 @@ public class BusinessTeamServiceImpl implements BusinessTeamService {
if (req.getNextScheduleInterval() != null) {
entity.setIntervalScheduleNext(Integer.valueOf(req.getNextScheduleInterval()));
}
if (req.getAssiginStrategy() != null) {
entity.setStrategyAppointment(req.getAssiginStrategy());
if (req.getAssignStrategy() != null) {
entity.setStrategyAppointment(req.getAssignStrategy());
}
if (req.getScheduleStrategy() != null) {
entity.setStrategySchedule(req.getScheduleStrategy());
......
......@@ -218,6 +218,11 @@ public class CapacityQueryServiceImpl implements CapacityQueryService {
return null;
}
@Override
public CapacityQueryDTO.PersonalResult queryEngineerCapacity(String engineerCode, LocalDate startDate, LocalDate endDate) {
//
return null;
}
@Override
public CapacityQueryDTO.Segment queryEngineerCapacity(String engineerCode, CapacityQueryDTO.Service service,
......@@ -345,20 +350,24 @@ public class CapacityQueryServiceImpl implements CapacityQueryService {
allEngineerTimeSlice.addAll(engineerTimeSlice);
}
//计算所有工程师半天类型容量
List<CapacityQueryDTO.Segment> engineerHalfDay = CapacityUtils.getEngineerTypeDay(halfDayTypeTimeSlice,
allEngineerTimeSlice, currentDate, totalTakeTime);
List<CapacityQueryDTO.Segment> objects = new ArrayList<>();
if (CollectionUtils.isNotEmpty(halfDayTypeTimeSlice)) {
List<CapacityQueryDTO.Segment> engineerHalfDay = CapacityUtils.getEngineerTypeDay(halfDayTypeTimeSlice,
allEngineerTimeSlice, currentDate, totalTakeTime);
objects.addAll(engineerHalfDay);
}
//计算所有工程师全天天类型容量
List<CapacityQueryDTO.Segment> engineerAllDay = CapacityUtils.getEngineerTypeDay(allDayTypeTimeSlice,
allEngineerTimeSlice, currentDate, totalTakeTime);
if (CollectionUtils.isNotEmpty(allDayTypeTimeSlice)) {
List<CapacityQueryDTO.Segment> engineerAllDay = CapacityUtils.getEngineerTypeDay(allDayTypeTimeSlice,
allEngineerTimeSlice, currentDate, totalTakeTime);
objects.addAll(engineerAllDay);
}
//计算所有工程师时间段类型容量
/*List<CapacityQueryDTO.Segment> timeSliceTwoHour = CapacityUtils.getEngineerTypeDay(timeSliceEntities,
allEngineerTimeSlice, currentDate, totalTakeTime);*/
/*objects.addAll(timeSliceTwoHour);*/
CapacityQueryDTO.Data data = new CapacityQueryDTO.Data();
data.setDate(DateUtil.toDate(currentDate));
List<CapacityQueryDTO.Segment> objects = new ArrayList<>();
objects.addAll(engineerHalfDay);
objects.addAll(engineerAllDay);
/*objects.addAll(timeSliceTwoHour);*/
data.setSegments(objects);
return data;
}
......
......@@ -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!