Commit f6e0b73c by wangli

修改

1 parent f63fd4fd
......@@ -43,6 +43,9 @@ public class DispatchServiceImpl implements DispatchService {
private OrderInfoMPDao orderInfoMPDao;
@Autowired
private OrderInfoDao orderInfoDao;
@Autowired
private OrgTeamDao orgTeamDao;
@Autowired
......@@ -154,7 +157,7 @@ public class DispatchServiceImpl implements DispatchService {
List<String> engineerCodes = engineers.stream().map(EngineerInfo::getEngineerCode).collect(Collectors.toList());
// 获取技术员已指派单列表
Map<String, List<OrderInfo>> engineerOrders = this.queryEngineerOrders(engineerCodes, date);
Map<String, List<OrderInfoEntity>> engineerOrders = this.queryEngineerOrders(engineerCodes, date);
// 获取技术员的容量
HashMap<String, CapacityEngineerStatEntity> engineerCap = this.queryCapacityEngineerStat(engineerCodes, reqDTO.getDate());
......@@ -166,8 +169,8 @@ public class DispatchServiceImpl implements DispatchService {
List<DispatchEngineerOrderListResp.OrderInfo> items = new ArrayList<>();
// 技术员已指派的订单列表
List<OrderInfo> records = engineerOrders.getOrDefault(e.getEngineerCode(), new ArrayList<>());
for (OrderInfo o : records) {
List<OrderInfoEntity> records = engineerOrders.getOrDefault(e.getEngineerCode(), new ArrayList<>());
for (OrderInfoEntity o : records) {
DispatchEngineerOrderListResp.OrderInfo item = new DispatchEngineerOrderListResp.OrderInfo();
item.setOrderId(o.getOrderId());
......@@ -198,7 +201,7 @@ public class DispatchServiceImpl implements DispatchService {
item.setName(o.getName());
item.setPhone(o.getPhone());
String time = TimeUtils.timestamp2DateTime(o.getPlanStartTime(), "HH:mm");
String time = TimeUtils.localDateTime2String(o.getPlanStartTime(), "HH:mm");
String timeSlot = this.parseTimeSlot(o.getPlanStartTime());
item.setExpectTimeDesc(String.format("%s/%s", time, timeSlot));
......@@ -209,7 +212,7 @@ public class DispatchServiceImpl implements DispatchService {
item.setOrderStatus(o.getOrderStatus()); // 订单状态
item.setServiceStatus(o.getServiceStatus());
item.setOrderStatusDesc(OrderStatus.valueOf(o.getOrderStatus()).getDescription());
item.setCreateTime(TimeUtils.IsoTimestamp2DateTime(o.getCreateTime()));
item.setCreateTime(TimeUtils.IsoLocalDateTime2String(o.getCreateTime()));
items.add(item);
}
......@@ -252,22 +255,17 @@ public class DispatchServiceImpl implements DispatchService {
if (engineer == null) {
throw new BusinessException("技术员不存在");
}
LambdaQueryWrapper<OrderInfo> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(OrderInfo::getDt, localDate);
wrapper.in(OrderInfo::getOrderId, orderIds);
List<OrderInfo> orders = orderInfoMPDao.selectList(wrapper);
List<OrderInfoEntity> orders = orderInfoDao.findByDtAndEngineerCodeIn(localDate, orderIds);
if (ListUtils.isEmpty(orders)) {
throw new BusinessException("订单不存在");
}
// 已经指派的订单
LambdaQueryWrapper<OrderInfo> lqw = new LambdaQueryWrapper<>();
lqw.eq(OrderInfo::getEngineerCode, engineerCode);
lqw.eq(OrderInfo::getDt, date);
lqw.orderByAsc(OrderInfo::getPlanStartTime);
List<OrderInfo> orderAppointments = orderInfoMPDao.selectList(lqw);
List<OrderInfoEntity> engineerOrders = orderInfoDao.findByDtAndEngineerCode(localDate, engineerCode);
engineerOrders.sort(Comparator.comparing(OrderInfoEntity::getPlanStartTime)); // 按照planStartTime排序
List<OrderInfoEntity> orderAppointments = engineerOrders.stream()
.filter(o -> o.getOrderStatus().equals("NORMAL"))
.collect(Collectors.toList()); // 过滤,只有NORMAL订单才需要处理,取消订单不需要处理
// TODO,临时处理方案,后续调用派单引擎处理
OrderRequestScheduler scheduler = new OrderRequestScheduler();
......@@ -348,7 +346,7 @@ public class DispatchServiceImpl implements DispatchService {
return orderInfoMPDao.selectList(lqw);
}
private Map<String, List<OrderInfo>> queryEngineerOrders(List<String> engineerCodes, LocalDate date) {
private Map<String, List<OrderInfoEntity>> queryEngineerOrders(List<String> engineerCodes, LocalDate date) {
// 获取工程师服务单列表
Map<String, List<OrderInfo>> map = new HashMap<>();
......@@ -358,11 +356,15 @@ public class DispatchServiceImpl implements DispatchService {
lqw.in(OrderInfo::getAppointmentStatus, List.of("VIRTUAL", "PRE", "CONFIRM"));
lqw.in(OrderInfo::getEngineerCode, engineerCodes);
lqw.orderByAsc(OrderInfo::getEngineerCode);
lqw.orderByAsc(OrderInfo::getPlanStartTime);
List<OrderInfo> records = orderInfoMPDao.selectList(lqw);
return records.stream().collect(Collectors.groupingBy(OrderInfo::getEngineerCode));
List<OrderInfoEntity> records = orderInfoDao.findByDtAndEngineerCodeIn(date, engineerCodes);
// 排序
records.sort(Comparator.comparing(OrderInfoEntity::getEngineerCode));
records.sort(Comparator.comparing(OrderInfoEntity::getPlanStartTime));
//过滤
List<OrderInfoEntity> orders = records.stream()
.filter(r -> !r.getAppointmentStatus().equals("INIT"))
.collect(Collectors.toList());
return orders.stream().collect(Collectors.groupingBy(OrderInfoEntity::getEngineerCode));
}
......@@ -445,8 +447,8 @@ public class DispatchServiceImpl implements DispatchService {
return map;
}
private String parseTimeSlot(Timestamp t) {
String h = TimeUtils.timestamp2DateTime(t, "HH");
private String parseTimeSlot(LocalDateTime t) {
String h = TimeUtils.localDateTime2String(t, "HH");
Integer hour = Integer.parseInt(h);
if (hour <= 12) {
return "上午";
......@@ -570,18 +572,18 @@ class LineSegmentScheduler {
class OrderRequestScheduler {
public List<LineSegment> scheduler(List<OrderInfo> orderRequests, List<OrderInfo> orderAppointments) {
public List<LineSegment> scheduler(List<OrderInfoEntity> orderRequests, List<OrderInfoEntity> orderAppointments) {
List<LineSegment> used = new ArrayList<>();
for (OrderInfo o : orderAppointments) {
for (OrderInfoEntity o : orderAppointments) {
LineSegment s = new LineSegment(o.getOrderId(),
this.Timestamp2LinePoint(o.getPlanStartTime()),
this.Timestamp2LinePoint(o.getPlanEndTime()));
this.localTime2LinePoint(o.getPlanStartTime()),
this.localTime2LinePoint(o.getPlanEndTime()));
used.add(s);
}
List<Line> newTasks = new ArrayList<>();
for (OrderInfo o : orderRequests) {
for (OrderInfoEntity o : orderRequests) {
if (!o.getAppointmentStatus().equals("NOT_ASSIGNED")) {
continue;
}
......@@ -598,8 +600,7 @@ class OrderRequestScheduler {
return scheduler.scheduleLineSegments(used, newTasks);
}
public int Timestamp2LinePoint(Timestamp t) {
LocalDateTime datetime = t.toLocalDateTime();
public int localTime2LinePoint(LocalDateTime datetime) {
return datetime.getHour() * 60 + datetime.getMinute();
}
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!