Commit cdad1494 by Ren Ping

Merge remote-tracking branch 'origin/develop' into develop

2 parents a0eb8c12 f7380496
...@@ -8,7 +8,9 @@ public enum ServiceStatusEnum { ...@@ -8,7 +8,9 @@ public enum ServiceStatusEnum {
STARTED("STARTED", "已开始"), STARTED("STARTED", "已开始"),
CANCELED("CANCELED", "已取消"), CANCELED("CANCELED", "已取消"),
FINISHED("FINISHED", "已完成"), FINISHED("FINISHED", "已完成"),
UNFINISHED("UNFINISHED", "已上门未完成"); //已超时
UNFINISHED("UNFINISHED", "已上门未完成"),
DELAY("DELAY", "已延误");
private final String code; private final String code;
......
...@@ -20,6 +20,7 @@ import com.dituhui.pea.order.service.DispatchService; ...@@ -20,6 +20,7 @@ import com.dituhui.pea.order.service.DispatchService;
import com.dituhui.pea.order.service.EngineerCalendarService; import com.dituhui.pea.order.service.EngineerCalendarService;
import com.dituhui.pea.order.service.OrderInfoService; import com.dituhui.pea.order.service.OrderInfoService;
import com.dituhui.pea.order.utils.CommonUtil; import com.dituhui.pea.order.utils.CommonUtil;
import com.dituhui.pea.order.utils.OrderUtil;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
...@@ -293,7 +294,7 @@ public class DispatchServiceImpl implements DispatchService { ...@@ -293,7 +294,7 @@ public class DispatchServiceImpl implements DispatchService {
item.setAppointmentType(o.getAppointmentMethod()); item.setAppointmentType(o.getAppointmentMethod());
item.setAppointmentStatus(o.getAppointmentStatus()); item.setAppointmentStatus(o.getAppointmentStatus());
item.setOrderStatus(o.getOrderStatus()); // 订单状态 item.setOrderStatus(o.getOrderStatus()); // 订单状态
item.setServiceStatus(o.getServiceStatus()); item.setServiceStatus(OrderUtil.handleServiceStatus(o));
item.setOrderStatusDesc(OrderStatusEnum.valueOf(o.getOrderStatus()).getDescription()); item.setOrderStatusDesc(OrderStatusEnum.valueOf(o.getOrderStatus()).getDescription());
item.setCreateTime(TimeUtils.IsoLocalDateTime2String(o.getCreateTime())); item.setCreateTime(TimeUtils.IsoLocalDateTime2String(o.getCreateTime()));
......
...@@ -73,7 +73,7 @@ public class EngineerGanttServiceImpl implements EngineerGanttService { ...@@ -73,7 +73,7 @@ public class EngineerGanttServiceImpl implements EngineerGanttService {
EngineersGanttDTO.Slot slot = new EngineersGanttDTO.Slot(); EngineersGanttDTO.Slot slot = new EngineersGanttDTO.Slot();
// todo 需要根据订单时间和状态,采用expectXXXX或者actualXXXX // todo 需要根据订单时间和状态,采用expectXXXX或者actualXXXX
slot.setOrderId(order.getOrderId()); slot.setOrderId(order.getOrderId());
slot.setServiceStatus(order.getServiceStatus()); slot.setServiceStatus(OrderUtil.handleServiceStatus(order));
String startServiceStr = null; String startServiceStr = null;
if (checkOrderIsFinish(order.getServiceStatus())) { if (checkOrderIsFinish(order.getServiceStatus())) {
slot.setBtime(ObjectUtil.isNull(order.getActualStartTime()) ? null : getHourMinute(order.getActualStartTime())); slot.setBtime(ObjectUtil.isNull(order.getActualStartTime()) ? null : getHourMinute(order.getActualStartTime()));
......
...@@ -483,7 +483,7 @@ public class OrderInfoServiceImpl implements OrderInfoService { ...@@ -483,7 +483,7 @@ public class OrderInfoServiceImpl implements OrderInfoService {
// 没有单直接返回 // 没有单直接返回
if (CollectionUtils.isEmpty(engineerOrders)) { if (CollectionUtils.isEmpty(engineerOrders)) {
Result handleLeaveTimeResult = handleLeaveTime(engineerLeaveTimeSlice, insertOrder.getExpectTimeBegin(), insertOrder.getExpectTimeEnd(), skillInfo.getTakeTime(), true, insertOrder); Result handleLeaveTimeResult = handleLeaveTime(engineerLeaveTimeSlice, insertOrder.getExpectTimeBegin(), insertOrder.getExpectTimeEnd(), skillInfo.getTakeTime(), true, insertOrder);
if (!handleLeaveTimeResult.getCode().equals(StatusCodeEnum.SUCCESS)) { if (!handleLeaveTimeResult.getCode().equals(ResultEnum.SUCCESS.getCode())) {
return Result.failed(insertOrder); return Result.failed(insertOrder);
} }
LocalDateTime planStartTime = (LocalDateTime) handleLeaveTimeResult.getResult(); LocalDateTime planStartTime = (LocalDateTime) handleLeaveTimeResult.getResult();
...@@ -513,7 +513,7 @@ public class OrderInfoServiceImpl implements OrderInfoService { ...@@ -513,7 +513,7 @@ public class OrderInfoServiceImpl implements OrderInfoService {
// 没有单直接返回 // 没有单直接返回
if (CollectionUtils.isEmpty(orderSegments)) { if (CollectionUtils.isEmpty(orderSegments)) {
Result handleLeaveTimeResult = handleLeaveTime(engineerLeaveTimeSlice, insertOrder.getExpectTimeBegin(), insertOrder.getExpectTimeEnd(), skillInfo.getTakeTime(), true, insertOrder); Result handleLeaveTimeResult = handleLeaveTime(engineerLeaveTimeSlice, insertOrder.getExpectTimeBegin(), insertOrder.getExpectTimeEnd(), skillInfo.getTakeTime(), true, insertOrder);
if (!handleLeaveTimeResult.getCode().equals(StatusCodeEnum.SUCCESS)) { if (!handleLeaveTimeResult.getCode().equals(ResultEnum.SUCCESS)) {
return Result.failed(insertOrder); return Result.failed(insertOrder);
} }
LocalDateTime planStartTime = (LocalDateTime) handleLeaveTimeResult.getResult(); LocalDateTime planStartTime = (LocalDateTime) handleLeaveTimeResult.getResult();
...@@ -586,6 +586,15 @@ public class OrderInfoServiceImpl implements OrderInfoService { ...@@ -586,6 +586,15 @@ public class OrderInfoServiceImpl implements OrderInfoService {
} }
LocalDateTime planStartTime = (LocalDateTime) handleLeaveTimeResult.getResult(); LocalDateTime planStartTime = (LocalDateTime) handleLeaveTimeResult.getResult();
if (orderSegment.getEnd().plusMinutes(roadTime).compareTo(planStartTime) <= 0) { if (orderSegment.getEnd().plusMinutes(roadTime).compareTo(planStartTime) <= 0) {
//下一单为待插入订单且为最后一单直接返回
if (i == orderSegments.size() - 2) {
insertOrder.setTakeTime(skillInfo.getTakeTime());
insertOrder.setPlanStartTime(planStartTime);
insertOrder.setPlanEndTime(planStartTime.plusMinutes(skillInfo.getTakeTime()));
insertOrder.setArriveElapsed(roadTime);
insertOrder.setArriveDistance(BigDecimal.valueOf(distanceDTO.getDis() * 1000).intValue());
return Result.success(insertOrder);
}
OrderInfoEntity nestOrder = orderInfoDao.getByOrderId(nestOrderSegment.getOrderId()); OrderInfoEntity nestOrder = orderInfoDao.getByOrderId(nestOrderSegment.getOrderId());
nestOrder.setArriveElapsed(roadTime); nestOrder.setArriveElapsed(roadTime);
nestOrder.setArriveDistance(BigDecimal.valueOf(distanceDTO.getDis() * 1000).intValue()); nestOrder.setArriveDistance(BigDecimal.valueOf(distanceDTO.getDis() * 1000).intValue());
...@@ -612,6 +621,10 @@ public class OrderInfoServiceImpl implements OrderInfoService { ...@@ -612,6 +621,10 @@ public class OrderInfoServiceImpl implements OrderInfoService {
nestOrder.setPlanStartTime(nestOrder.getPlanStartTime().plusMinutes(minutes)); nestOrder.setPlanStartTime(nestOrder.getPlanStartTime().plusMinutes(minutes));
nestOrder.setPlanEndTime(nestOrder.getPlanEndTime().plusMinutes(minutes)); nestOrder.setPlanEndTime(nestOrder.getPlanEndTime().plusMinutes(minutes));
orderInfoDao.save(nestOrder); orderInfoDao.save(nestOrder);
//下一单为待插入订单且为最后一单直接返回
if (i == orderSegments.size() - 2) {
return Result.success(insertOrder);
}
moveTime = (int) minutes; moveTime = (int) minutes;
isMove = true; isMove = true;
} }
...@@ -678,7 +691,7 @@ public class OrderInfoServiceImpl implements OrderInfoService { ...@@ -678,7 +691,7 @@ public class OrderInfoServiceImpl implements OrderInfoService {
return Result.success(expectTimeBegin); return Result.success(expectTimeBegin);
} }
// 请假时间内则顺延 // 请假时间内则顺延
if (expectTimeBegin.compareTo(occupyInfoDetail.getBeginTime()) >= 0 || expectTimeBegin.compareTo(occupyInfoDetail.getEndTime()) <= 0) { if (expectTimeBegin.compareTo(occupyInfoDetail.getBeginTime()) >= 0 && expectTimeBegin.compareTo(occupyInfoDetail.getEndTime()) <= 0) {
return Result.success(occupyInfoDetail.getEndTime()); return Result.success(occupyInfoDetail.getEndTime());
} }
if (expectTimeEnd.compareTo(occupyInfoDetail.getEndTime().plusMinutes(takeTime)) >= 0) { if (expectTimeEnd.compareTo(occupyInfoDetail.getEndTime().plusMinutes(takeTime)) >= 0) {
......
package com.dituhui.pea.order.utils; package com.dituhui.pea.order.utils;
import cn.hutool.core.util.ObjectUtil;
import com.dituhui.pea.order.entity.OrderInfoEntity; import com.dituhui.pea.order.entity.OrderInfoEntity;
import com.dituhui.pea.order.enums.OrderPeaTagsEnum; import com.dituhui.pea.order.enums.OrderPeaTagsEnum;
import com.dituhui.pea.order.enums.ServiceStatusEnum;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
...@@ -40,6 +43,57 @@ public class OrderUtil { ...@@ -40,6 +43,57 @@ public class OrderUtil {
/** /**
* 处理工单状态,主要处理以延迟和已超时
*
* @param order
* @return
*/
public static String handleServiceStatus(OrderInfoEntity order) {
if (isDelay(order)) {
return ServiceStatusEnum.DELAY.getCode();
}
if (isOvertime(order)) {
return ServiceStatusEnum.UNFINISHED.getCode();
}
return order.getServiceStatus();
}
/**
* 判断订单是否是延迟订单
*
* @param order
* @return
*/
public static Boolean isDelay(OrderInfoEntity order) {
if (!order.getServiceStatus().equals(ServiceStatusEnum.INIT.getCode()) && !order.getServiceStatus().equals(ServiceStatusEnum.CONTACTED.getCode())) {
return false;
}
if (order.getExpectTimeBegin().plusMinutes(10).isBefore(LocalDateTime.now())) {
return true;
}
return false;
}
/**
* 判断订单是否是延迟订单
*
* @param order
* @return
*/
public static Boolean isOvertime(OrderInfoEntity order) {
if (!order.getServiceStatus().equals(ServiceStatusEnum.STARTED.getCode()) || ObjectUtil.isNotNull(order.getActualEndTime())) {
return false;
}
if (order.getPlanEndTime().plusMinutes(10).isBefore(LocalDateTime.now())) {
return true;
}
return false;
}
/**
* 分单,超派,特殊时间等处理工单指派工程师,网点等数据 * 分单,超派,特殊时间等处理工单指派工程师,网点等数据
* *
* @param order * @param order
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!