Commit f7380496 by huangjinxin

fix:指派插单优化

1 parent e5a113c8
...@@ -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()));
......
...@@ -621,6 +621,10 @@ public class OrderInfoServiceImpl implements OrderInfoService { ...@@ -621,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;
} }
...@@ -687,7 +691,7 @@ public class OrderInfoServiceImpl implements OrderInfoService { ...@@ -687,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!