Commit f6e0b73c by wangli

修改

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