Commit e2c8ee1c by 刘鑫

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

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