Commit e33c618f by 王力

Merge branch 'feature_mvp616_wangl' into 'develop'

Feature mvp616 wangl

See merge request !76
2 parents 50a8782b 56a5f37b
package com.alibaba.cloud.integration.order.dto;
import lombok.Data;
import java.util.List;
@Data
public class DispatchEngineerOrderListResp {
private List<EngineerInfo> engineers;
@Data
public static class EngineerInfo{
private String engineerCode;
private String engineerName;
private String capacity;
private String capacityStatus;
private String certificate;
private List<OrderInfo> orders;
}
@Data
public static class OrderInfo{
private boolean weight;
private String description;
private String intentionTime;
private Integer duration;
private String skill;
private String category;
private String orderId;
private String customerName;
private String remark;
private String orderStatus;
private String orderStatusDesc;
}
}
...@@ -5,7 +5,7 @@ import java.sql.Timestamp; ...@@ -5,7 +5,7 @@ import java.sql.Timestamp;
@Data @Data
public class OrderRequest { public class OrderRequest {
private long id; private String id;
private String orderId; private String orderId;
private String name; private String name;
private String phone; private String phone;
......
...@@ -2,6 +2,7 @@ package com.alibaba.cloud.integration.order.service.impl; ...@@ -2,6 +2,7 @@ package com.alibaba.cloud.integration.order.service.impl;
import com.alibaba.cloud.integration.common.Result; import com.alibaba.cloud.integration.common.Result;
import com.alibaba.cloud.integration.order.dao.*; import com.alibaba.cloud.integration.order.dao.*;
import com.alibaba.cloud.integration.order.dto.DispatchEngineerOrderListResp;
import com.alibaba.cloud.integration.order.dto.DispatchOrderListResp; import com.alibaba.cloud.integration.order.dto.DispatchOrderListResp;
import com.alibaba.cloud.integration.order.entity.*; import com.alibaba.cloud.integration.order.entity.*;
import com.alibaba.cloud.integration.order.service.DispatchService; import com.alibaba.cloud.integration.order.service.DispatchService;
...@@ -12,10 +13,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -12,10 +13,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
interface GroupTag { interface GroupTag {
...@@ -91,6 +89,10 @@ public class DispatchServiceImpl implements DispatchService { ...@@ -91,6 +89,10 @@ public class DispatchServiceImpl implements DispatchService {
@Transactional @Transactional
@Override @Override
public Result<?> getDispatchEngineerOrderList(String levelType, List<String> levelIds, String date) { public Result<?> getDispatchEngineerOrderList(String levelType, List<String> levelIds, String date) {
// 获取技能耗时
HashMap<String, Integer> skillTakeTime = this.querySkillTakeTime();
// 获取groupIds // 获取groupIds
List<String> groupIds = this.queryOrgGroupIds(levelType, levelIds); List<String> groupIds = this.queryOrgGroupIds(levelType, levelIds);
...@@ -100,17 +102,57 @@ public class DispatchServiceImpl implements DispatchService { ...@@ -100,17 +102,57 @@ public class DispatchServiceImpl implements DispatchService {
// 获取engineerCodes // 获取engineerCodes
List<String> engineerCodes = engineers.stream().map(EngineerInfo::getEngineerCode).collect(Collectors.toList()); List<String> engineerCodes = engineers.stream().map(EngineerInfo::getEngineerCode).collect(Collectors.toList());
// 获取技术员订单ID列表 // 获取技术员订单ID列表HashMap<engineerCode, List<orderId>>
HashMap<String, List<String>> engineerOrders = this.queryEngineerOrderIds(engineerCodes, date); Map<String, List<OrderAppointment>> engineerOrders = this.queryEngineerOrders(engineerCodes, date);
// 获取订单列表 // 获取订单ID
List<String> orderIds = new ArrayList<>(); Set<String> orderIds = new HashSet<>();
for(String k: engineerOrders.keySet()){
for(OrderAppointment o: engineerOrders.get(k)) {
orderIds.add(o.getOrderId());
}
}
// 获取订单列表 // 获取订单列表
List<OrderRequest> orders = this.queryOrderRequestByOrderIds(orderIds); Map<String, List<OrderRequest>> orders = this.queryOrderRequestByOrderIds(new ArrayList<>(orderIds)).stream().collect(
Collectors.groupingBy(OrderRequest::getOrderId));
List<DispatchEngineerOrderListResp.EngineerInfo> egs = new ArrayList<>();
for (EngineerInfo e : engineers) { for (EngineerInfo e : engineers) {
DispatchEngineerOrderListResp.EngineerInfo eg = new DispatchEngineerOrderListResp.EngineerInfo();
eg.setEngineerCode(e.getEngineerCode());
eg.setEngineerName(e.getName());
eg.setCapacity("");
eg.setCapacityStatus("");
eg.setCertificate(e.getCredentials());
List<DispatchEngineerOrderListResp.OrderInfo> items = new ArrayList<>();
for(OrderAppointment r: engineerOrders.get(e.getEngineerCode())) {
DispatchEngineerOrderListResp.OrderInfo item = new DispatchEngineerOrderListResp.OrderInfo();
// 获取订单信息
OrderRequest o = orders.get(r.getEngineerCode()).get(0);
item.setOrderId(r.getOrderId());
item.setCategory(String.format("%s-%s", o.getType(), o.getBrand()));
item.setSkill(o.getSkill());
item.setRemark(o.getApplyNote());
item.setCustomerName(o.getName());
item.setOrderStatus(r.getStatus()); // 预约单状态
item.setOrderStatusDesc(r.getStatus()); // 预约单状态描述, TODO
String description = String.format("%s:%s%s-%s\n%s:%s", o.getOrderId(), o.getSkill(),
o.getType(), o.getBrand(), o.getName(), o.getAddress());
item.setDescription(description);
String key = String.format("%s%s%s", o.getBrand(), o.getType(), o.getSkill());
item.setDuration(skillTakeTime.getOrDefault(key, 30));
String time = this.timestamp2Datetime(o.getExpectTimeBegin(), "HH:mm");
String timeSlot = this.parseTimeSlot(o.getExpectTimeBegin());
item.setIntentionTime(String.format("%s/%s", time, timeSlot));
items.add(item);
}
} }
return null; return null;
...@@ -147,10 +189,10 @@ public class DispatchServiceImpl implements DispatchService { ...@@ -147,10 +189,10 @@ public class DispatchServiceImpl implements DispatchService {
return orderRequestMPDao.selectList(lqw); return orderRequestMPDao.selectList(lqw);
} }
private HashMap<String, List<String>> queryEngineerOrderIds(List<String> engineerCodes, String date) { private Map<String, List<OrderAppointment>> queryEngineerOrders(List<String> engineerCodes, String date) {
// 获取工程师服务单列表 // 获取工程师服务单列表
HashMap<String, List<String>> map = new HashMap<>(); Map<String, List<OrderAppointment>> map = new HashMap<>();
LambdaQueryWrapper<OrderAppointment> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<OrderAppointment> lqw = new LambdaQueryWrapper<>();
lqw.in(OrderAppointment::getEngineerCode, engineerCodes); lqw.in(OrderAppointment::getEngineerCode, engineerCodes);
...@@ -158,17 +200,12 @@ public class DispatchServiceImpl implements DispatchService { ...@@ -158,17 +200,12 @@ public class DispatchServiceImpl implements DispatchService {
lqw.le(OrderAppointment::getExpectTime, this.getTimestampFromDate(date, "23:59:59")); lqw.le(OrderAppointment::getExpectTime, this.getTimestampFromDate(date, "23:59:59"));
lqw.select(OrderAppointment::getEngineerCode, OrderAppointment::getOrderId); lqw.select(OrderAppointment::getEngineerCode, OrderAppointment::getOrderId);
lqw.orderByAsc(OrderAppointment::getEngineerCode);
lqw.orderByAsc(OrderAppointment::getExpectTime);
List<OrderAppointment> records = orderAppointmentMPDao.selectList(lqw); List<OrderAppointment> records = orderAppointmentMPDao.selectList(lqw);
Map<String, List<OrderAppointment>> gg = records.stream().collect(Collectors.groupingBy(OrderAppointment::getEngineerCode)); return records.stream().collect(Collectors.groupingBy(OrderAppointment::getEngineerCode));
for (String engineerCode : gg.keySet()) {
List<String> orderIds = new ArrayList<>();
for (OrderAppointment o : gg.get(engineerCode)) {
orderIds.add(o.getOrderId());
}
map.put(engineerCode, orderIds);
}
return map;
} }
private List<EngineerInfo> queryEngineers(List<String> groupIds) { private List<EngineerInfo> queryEngineers(List<String> groupIds) {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!