Commit e2c8ee1c by 刘鑫

feat(工作日历):工作日历新增是否全天字段-变更

1 parent 2fd37c17
......@@ -24,6 +24,10 @@ public class CalendarDetailDTO {
private String phone;
private String planId;
private String remark;
/**
* 是否全天
*/
private Boolean wholeDay;
private String type;
private String typeName;
......
......@@ -6,6 +6,12 @@ public class CalendarUpdateDTO {
@lombok.Data
public static class Request {
/**
* 日程是否是全天
*/
@NotBlank(message = "请指定日程是否是全天")
private Boolean wholeDay;
@NotBlank
private String startTime;
@NotBlank
......
......@@ -18,6 +18,12 @@ public class CapacityEngineerCalendarEntity {
@Column(nullable = false)
private String workday;
/**
* 事件日程是否是全天类型
*/
@Column(name = "whole_day", nullable = false)
private Boolean wholeDay;
@Column(name = "engineer_code", nullable = false, columnDefinition = "varchar(50) default '0'")
private String engineerCode;
......
......@@ -156,6 +156,7 @@ public class EngineerCalendarServiceImpl implements EngineerCalendarService {
rs.setStartTime(DateUtils.formatDateTime(entity.getStartTime()));
rs.setEndTime(DateUtils.formatDateTime(entity.getEndTime()));
rs.setRemark(entity.getMemo());
rs.setWholeDay(entity.getWholeDay());
// todo 操作员
rs.setOperator(entity.getOperatorName());
return Result.success(rs);
......@@ -169,7 +170,9 @@ public class EngineerCalendarServiceImpl implements EngineerCalendarService {
if (entity == null) {
return Result.failed("日历配置信息不存在");
}
// todo 业务检查,暂时只需要检查日期时间必须为将来; 后面还需要检查配置项是否与其他配置项在时间上有交叉
// 日程所属工程师
final String engineerCode = entity.getEngineerCode();
// 业务检查,暂时只需要检查日期时间必须为将来; 后面还需要检查配置项是否与其他配置项在时间上有交叉
LocalDateTime time1 = DateUtils.localDateTimeFromStr(reqDTO.getStartTime());
LocalDateTime time2 = DateUtils.localDateTimeFromStr(reqDTO.getEndTime());
if (time1.isAfter(time2)) {
......@@ -178,6 +181,14 @@ public class EngineerCalendarServiceImpl implements EngineerCalendarService {
if (time1.isBefore(LocalDateTime.now()) || time2.isBefore(LocalDateTime.now())) {
return Result.failed("只能更新未来时间");
}
Optional<CheckTime> checkTimeOptional = checkTimesHasOverlap(time1.toLocalDate(), engineerCode, time1, time2);
if (checkTimeOptional.isPresent()) {
CheckTime checkTime = checkTimeOptional.get();
throw new BusinessException("工号为" + engineerCode + "的工程师在"
+ checkTime.getStartTime() + "到"
+ checkTime.getEndTime() + "区间已有日程安排");
}
entity.setWholeDay(reqDTO.getWholeDay());
entity.setStartTime(time1);
entity.setEndTime(time2);
entity.setMemo(reqDTO.getRemark());
......@@ -229,7 +240,7 @@ public class EngineerCalendarServiceImpl implements EngineerCalendarService {
endTime = String.format("%s %s:00", endTime, config.getWorkOff());
}
if ("none".equals(repeatType)) {
addOneEngineerPlan(userId, engineerCode, type, beginTime, endTime, remark);
addOneEngineerPlan(userId, engineerCode, type, beginTime, endTime, remark, isAllday);
} else {
LocalDate beginDate = DateUtils.localDateFromStr(beginTime);
LocalDate endDate = DateUtils.localDateFromStr(repeatEndDate);
......@@ -242,7 +253,7 @@ public class EngineerCalendarServiceImpl implements EngineerCalendarService {
long days = beginDate.until(current, ChronoUnit.DAYS);
beginTime = DateUtils.formatDateTime(DateUtils.localDateTimeFromStr(finalBeginTime).plusDays(days));
endTime = DateUtils.formatDateTime(DateUtils.localDateTimeFromStr(finalEndTime).plusDays(days));
addOneEngineerPlan(userId, engineerCode, type, beginTime, endTime, remark);
addOneEngineerPlan(userId, engineerCode, type, beginTime, endTime, remark, isAllday);
current = getNextDate(current, repeatType);
}
}
......@@ -276,7 +287,8 @@ public class EngineerCalendarServiceImpl implements EngineerCalendarService {
return current;
}
private void addOneEngineerPlan(String userId, String engineerCode, String type, String beginTime, String endTime, String remark) {
private void addOneEngineerPlan(String userId, String engineerCode, String type, String beginTime, String endTime, String remark,
Boolean allDay) {
// 一个工程师、一条配置处理;可能一条会跨多天,需要分别补充处理
log.info("addOneEngineerPlan ==> [engineerCode:{}][beginTime:{}]", engineerCode, beginTime);
String userName = user.getUserInfo(userId).getResult().getAccount();
......@@ -305,6 +317,7 @@ public class EngineerCalendarServiceImpl implements EngineerCalendarService {
e.setStartTime(startTime);
e.setEndTime(endTime1);
e.setWorkday(DateUtils.formatDate(beginDate));
e.setWholeDay(allDay);
e.setMemo(remark);
//
e.setOperatorId(userId);
......@@ -355,6 +368,7 @@ public class EngineerCalendarServiceImpl implements EngineerCalendarService {
e.setOperatorId(userId);
e.setOperatorName(userName);
all.add(e);
e.setWholeDay(allDay);
// 按日迭代
current = current.plusDays(1);
}
......
......@@ -364,6 +364,9 @@ public class OrderAssignImpl implements OrderAssign {
double orderLongitude = Double.parseDouble(order.getX());
double orderLatitude = Double.parseDouble(order.getY());
//TODO 排除当天已经请假或者休息的人员
//均计算距离
List<TempEngineer> result = engineerCodes1.stream()
.map(engineerCode -> {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!