Commit d4203aaa by 王力

Merge branch 'dev_orderlist0717' into 'develop'

Dev orderlist0717

See merge request !248
2 parents feafc23e f62d0c20
...@@ -21,15 +21,34 @@ public class DispatchEngineerOrderListResp { ...@@ -21,15 +21,34 @@ public class DispatchEngineerOrderListResp {
@Data @Data
public static class OrderInfo{ public static class OrderInfo{
private boolean weight; private boolean weight;
private String orderId;
private String description; private String description;
private String intentionTime; private String brand;
private Integer duration; private String type;
private String skill; private String skill;
private String category; private String typeCategory;
private String orderId; private String skillCategory;
private String customerName; private String faultDescribe;
private String remark; private String applyNote;
private Integer duration;
private String province;
private String city;
private String county;
private String address;
private String name;
private String phone;
private String expectTimeDesc;
private String source;
private String appointmentStatus;
private String appointmentType;
private String createTime;
private String orderStatus; private String orderStatus;
private String orderStatusDesc; private String orderStatusDesc;
private String groupTag;
private Integer groupWeight;
private String intentionTime; // 待删除 TODO
private String customerName; // 待删除 TODO
private String category; // 待删除 TODO
private String remark; // 待删除 TODO
} }
} }
...@@ -11,15 +11,32 @@ public class DispatchOrderListResp { ...@@ -11,15 +11,32 @@ public class DispatchOrderListResp {
@Data @Data
public static class Order{ public static class Order{
private boolean weight; private boolean weight;
private String orderId;
private String description; private String description;
private String intentionTime; private String brand;
private Integer duration; private String type;
private String skill; private String skill;
private String category; private String typeCategory;
private String orderId; private String skillCategory;
private String customerName; private String faultDescribe;
private String remark; private String applyNote;
private Integer duration;
private String province;
private String city;
private String county;
private String address;
private String name;
private String phone;
private String expectTimeDesc;
private String source;
private String appointmentStatus;
private String appointmentType;
private String createTime;
private String groupTag; private String groupTag;
private Integer groupWeight; private Integer groupWeight;
private String intentionTime; // 待删除 TODO
private String customerName; // 待删除 TODO
private String category; // 待删除 TODO
private String remark; // 待删除 TODO
} }
} }
...@@ -55,8 +55,8 @@ public class DispatchServiceImpl implements DispatchService { ...@@ -55,8 +55,8 @@ public class DispatchServiceImpl implements DispatchService {
@Override @Override
public Result<?> getDispatchOrderList(DispatchOrderListReq reqDTO) { public Result<?> getDispatchOrderList(DispatchOrderListReq reqDTO) {
// 获取技能需要时间列表 // 获取技能信息
HashMap<String, Integer> skillTakeTime = this.querySkillTakeTime(); HashMap<String, SkillInfo> skillInfo = this.querySkillInfo();
// 获取工单列表 // 获取工单列表
List<OrderRequest> orders = this.queryOrderRequests(reqDTO); List<OrderRequest> orders = this.queryOrderRequests(reqDTO);
...@@ -67,27 +67,51 @@ public class DispatchServiceImpl implements DispatchService { ...@@ -67,27 +67,51 @@ public class DispatchServiceImpl implements DispatchService {
List<DispatchOrderListResp.Order> items = new ArrayList<>(); List<DispatchOrderListResp.Order> items = new ArrayList<>();
for (OrderRequest o : orders) { for (OrderRequest o : orders) {
DispatchOrderListResp.Order item = new DispatchOrderListResp.Order(); DispatchOrderListResp.Order item = new DispatchOrderListResp.Order();
item.setOrderId(o.getOrderId()); item.setOrderId(o.getOrderId());
item.setCategory(String.format("%s-%s", o.getType(), o.getBrand())); item.setDescription(String.format("%s:%s-%s-%s\n%s:%s-%s-%s", o.getOrderId(), o.getBrand(), o.getType(),
o.getSkill(), o.getName(), o.getCity(), o.getCounty(), o.getAddress()));
item.setBrand(o.getBrand());
item.setType(o.getType());
item.setSkill(o.getSkill()); item.setSkill(o.getSkill());
item.setRemark(o.getApplyNote()); item.setFaultDescribe(o.getFaultDescribe());
item.setCustomerName(o.getName());
String description = String.format("%s:%s%s-%s\n%s:%s-%s-%s", o.getOrderId(), o.getSkill(),
o.getType(), o.getBrand(), o.getName(), o.getCity(), o.getCounty(), o.getAddress());
item.setDescription(description);
String key = String.format("%s%s%s", o.getBrand(), o.getType(), o.getSkill()); String key = String.format("%s%s%s", o.getBrand(), o.getType(), o.getSkill());
item.setDuration(skillTakeTime.getOrDefault(key, 30)); SkillInfo skill = skillInfo.get(key);
if (skill != null) {
String time = TimeUtils.timestamp2DateTime(o.getExpectTimeBegin(), "HH:mm"); item.setDuration(skill.getTakeTime());
String timeSlot = this.parseTimeSlot(o.getExpectTimeBegin()); item.setSkillCategory(skill.getSkillCategory());
item.setIntentionTime(String.format("%s/%s", time, timeSlot)); item.setTypeCategory(skill.getTypeCategory());
}
item.setName(o.getName());
item.setPhone(o.getPhone());
item.setCity(o.getCity());
item.setAddress(o.getAddress());
item.setProvince(o.getProvince());
item.setCity(o.getCity());
item.setCounty(o.getCounty());
item.setAddress(o.getAddress());
item.setName(o.getName());
item.setPhone(o.getPhone());
item.setExpectTimeDesc(o.getExpectTimeDesc());
item.setSource(o.getSource());
item.setAppointmentStatus(o.getAppointmentStatus());
item.setAppointmentType(o.getAppointmentMethod());
item.setCreateTime(TimeUtils.IsoTimestamp2DateTime(o.getCreateTime()));
String[] tags = gt.getGroupTag(o).split("#"); String[] tags = gt.getGroupTag(o).split("#");
item.setGroupTag(tags[0]); // 设置tag名称 item.setGroupTag(tags[0]); // 设置tag名称
item.setGroupWeight(Integer.parseInt(tags[1])); // 设置tag权重 item.setGroupWeight(Integer.parseInt(tags[1])); // 设置tag权重
// 暂时兼容待删除 TODO
String time = TimeUtils.timestamp2DateTime(o.getExpectTimeBegin(), "HH:mm");
String timeSlot = this.parseTimeSlot(o.getExpectTimeBegin());
item.setIntentionTime(String.format("%s/%s", time, timeSlot));
item.setCustomerName(o.getName());
item.setRemark(o.getApplyNote());
item.setCategory(String.format("%s-%s", o.getType(), o.getBrand()));
items.add(item); items.add(item);
} }
...@@ -103,6 +127,8 @@ public class DispatchServiceImpl implements DispatchService { ...@@ -103,6 +127,8 @@ public class DispatchServiceImpl implements DispatchService {
// 获取技能耗时 // 获取技能耗时
HashMap<String, Integer> skillTakeTime = this.querySkillTakeTime(); HashMap<String, Integer> skillTakeTime = this.querySkillTakeTime();
// 获取技能信息
HashMap<String, SkillInfo> skillInfo = this.querySkillInfo();
// 获取groupIds // 获取groupIds
List<String> groupIds = this.queryOrgGroupIds(reqDTO.getLevelType(), reqDTO.getLevelValue(), reqDTO.getBranchIds(), List<String> groupIds = this.queryOrgGroupIds(reqDTO.getLevelType(), reqDTO.getLevelValue(), reqDTO.getBranchIds(),
...@@ -140,7 +166,7 @@ public class DispatchServiceImpl implements DispatchService { ...@@ -140,7 +166,7 @@ public class DispatchServiceImpl implements DispatchService {
// 获取服务单/工单列表 // 获取服务单/工单列表
Map<String, List<OrderRequest>> orders = new HashMap<>(); Map<String, List<OrderRequest>> orders = new HashMap<>();
if(!orderIds.isEmpty()) { if (!orderIds.isEmpty()) {
orders = orderRequestMPDao.selectByOrderIds(new ArrayList<>(orderIds)).stream().collect( orders = orderRequestMPDao.selectByOrderIds(new ArrayList<>(orderIds)).stream().collect(
Collectors.groupingBy(OrderRequest::getOrderId)); Collectors.groupingBy(OrderRequest::getOrderId));
} }
...@@ -155,28 +181,51 @@ public class DispatchServiceImpl implements DispatchService { ...@@ -155,28 +181,51 @@ public class DispatchServiceImpl implements DispatchService {
List<OrderAppointment> records = engineerOrders.getOrDefault(e.getEngineerCode(), new ArrayList<>()); List<OrderAppointment> records = engineerOrders.getOrDefault(e.getEngineerCode(), new ArrayList<>());
for (OrderAppointment r : records) { for (OrderAppointment r : records) {
// 获取对应的工单信息 // 获取对应的工单信息
if (ListUtils.isEmpty(orders.get(r.getOrderId()))){ if (ListUtils.isEmpty(orders.get(r.getOrderId()))) {
continue; continue;
} }
OrderRequest o = orders.get(r.getOrderId()).get(0); OrderRequest o = orders.get(r.getOrderId()).get(0);
DispatchEngineerOrderListResp.OrderInfo item = new DispatchEngineerOrderListResp.OrderInfo(); DispatchEngineerOrderListResp.OrderInfo item = new DispatchEngineerOrderListResp.OrderInfo();
item.setOrderId(r.getOrderId()); item.setOrderId(o.getOrderId());
item.setCategory(String.format("%s-%s", o.getType(), o.getBrand())); item.setDescription(String.format("%s:%s-%s-%s\n%s:%s-%s-%s", o.getOrderId(), o.getBrand(), o.getType(),
o.getSkill(), o.getName(), o.getCity(), o.getCounty(), o.getAddress()));
item.setBrand(o.getBrand());
item.setType(o.getType());
item.setSkill(o.getSkill()); item.setSkill(o.getSkill());
item.setRemark(o.getApplyNote()); item.setFaultDescribe(o.getFaultDescribe());
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()); String key = String.format("%s%s%s", o.getBrand(), o.getType(), o.getSkill());
item.setDuration(skillTakeTime.getOrDefault(key, 30)); SkillInfo skill = skillInfo.get(key);
if (skill != null) {
item.setDuration(skill.getTakeTime());
item.setSkillCategory(skill.getSkillCategory());
item.setTypeCategory(skill.getTypeCategory());
}
item.setName(o.getName());
item.setPhone(o.getPhone());
item.setCity(o.getCity());
item.setAddress(o.getAddress());
item.setProvince(o.getProvince());
item.setCity(o.getCity());
item.setCounty(o.getCounty());
item.setAddress(o.getAddress());
item.setName(o.getName());
item.setPhone(o.getPhone());
item.setExpectTimeDesc(o.getExpectTimeDesc());
item.setSource(o.getSource());
item.setAppointmentStatus(o.getAppointmentStatus());
item.setAppointmentType(o.getAppointmentMethod());
item.setOrderStatus(r.getStatus()); // 预约单状态
item.setOrderStatusDesc(r.getStatus()); // 预约单状态描述, TODO
item.setCreateTime(TimeUtils.IsoTimestamp2DateTime(o.getCreateTime()));
// 暂时兼容待删除 TODO
item.setCategory(String.format("%s-%s", o.getType(), o.getBrand()));
item.setRemark(o.getApplyNote());
item.setCustomerName(o.getName());
String time = TimeUtils.timestamp2DateTime(r.getExpectStartTime(), "HH:mm"); String time = TimeUtils.timestamp2DateTime(r.getExpectStartTime(), "HH:mm");
String timeSlot = this.parseTimeSlot(r.getExpectStartTime()); String timeSlot = this.parseTimeSlot(r.getExpectStartTime());
item.setIntentionTime(String.format("%s/%s", time, timeSlot)); item.setIntentionTime(String.format("%s/%s", time, timeSlot));
...@@ -289,9 +338,9 @@ public class DispatchServiceImpl implements DispatchService { ...@@ -289,9 +338,9 @@ public class DispatchServiceImpl implements DispatchService {
lqw.in(ListUtils.isNotEmpty(reqDTO.getTeamIds()), OrderRequest::getOrgTeamId, reqDTO.getTeamIds()); lqw.in(ListUtils.isNotEmpty(reqDTO.getTeamIds()), OrderRequest::getOrgTeamId, reqDTO.getTeamIds());
lqw.in(ListUtils.isNotEmpty(reqDTO.getAppointmentType()), OrderRequest::getAppointmentMethod, reqDTO.getAppointmentType()); lqw.in(ListUtils.isNotEmpty(reqDTO.getAppointmentType()), OrderRequest::getAppointmentMethod, reqDTO.getAppointmentType());
if(ListUtils.isNotEmpty(reqDTO.getPriorities())) { if (ListUtils.isNotEmpty(reqDTO.getPriorities())) {
List<Integer> p = reqDTO.getPriorities(); List<Integer> p = reqDTO.getPriorities();
if(p.contains(0) && p.contains(1)) { if (p.contains(0) && p.contains(1)) {
lqw.ge(OrderRequest::getPriority, 1); lqw.ge(OrderRequest::getPriority, 1);
} else if (p.contains(0) && !p.contains(1)) { } else if (p.contains(0) && !p.contains(1)) {
lqw.le(OrderRequest::getPriority, 1); lqw.le(OrderRequest::getPriority, 1);
...@@ -312,7 +361,7 @@ public class DispatchServiceImpl implements DispatchService { ...@@ -312,7 +361,7 @@ public class DispatchServiceImpl implements DispatchService {
lqw.exists(sql); lqw.exists(sql);
} }
if(ListUtils.isNotEmpty(reqDTO.getEngineerCodes())) { if (ListUtils.isNotEmpty(reqDTO.getEngineerCodes())) {
String engineerCodes = "'" + String.join("','", reqDTO.getEngineerCodes()) + "'"; String engineerCodes = "'" + String.join("','", reqDTO.getEngineerCodes()) + "'";
String sql = String.format("select 1 from order_appointment oa where oa.order_id = order_request.order_id and oa.dt = order_request.dt and oa.engineer_code in (%s)", engineerCodes); String sql = String.format("select 1 from order_appointment oa where oa.order_id = order_request.order_id and oa.dt = order_request.dt and oa.engineer_code in (%s)", engineerCodes);
lqw.exists(sql); lqw.exists(sql);
...@@ -381,12 +430,22 @@ public class DispatchServiceImpl implements DispatchService { ...@@ -381,12 +430,22 @@ public class DispatchServiceImpl implements DispatchService {
HashMap<String, Integer> map = new HashMap<>(); HashMap<String, Integer> map = new HashMap<>();
List<SkillInfo> records = skillInfoMPDao.selectList(null); List<SkillInfo> records = skillInfoMPDao.selectList(null);
for (SkillInfo r : records) { for (SkillInfo r : records) {
String key = String.format("%s%s%sd", r.getBrand(), r.getType(), r.getSkill()); String key = String.format("%s%s%s", r.getBrand(), r.getType(), r.getSkill());
map.put(key, r.getTakeTime()); map.put(key, r.getTakeTime());
} }
return map; return map;
} }
private HashMap<String, SkillInfo> querySkillInfo() {
HashMap<String, SkillInfo> map = new HashMap<>();
List<SkillInfo> records = skillInfoMPDao.selectList(null);
for (SkillInfo r : records) {
String key = String.format("%s%s%s", r.getBrand(), r.getType(), r.getSkill());
map.put(key, r);
}
return map;
}
private HashMap<String, CapacityEngineerStat> queryCapacityEngineerStat(List<String> engineerCodes, String date) { private HashMap<String, CapacityEngineerStat> queryCapacityEngineerStat(List<String> engineerCodes, String date) {
LambdaQueryWrapper<CapacityEngineerStat> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<CapacityEngineerStat> lqw = new LambdaQueryWrapper<>();
lqw.eq(CapacityEngineerStat::getWorkday, date); lqw.eq(CapacityEngineerStat::getWorkday, date);
......
...@@ -59,9 +59,9 @@ public class OrderServiceListServiceImpl implements OrderServiceListService { ...@@ -59,9 +59,9 @@ public class OrderServiceListServiceImpl implements OrderServiceListService {
lqw.in(ListUtils.isNotEmpty(reqDTO.getAppointmentType()), OrderRequest::getAppointmentMethod, reqDTO.getAppointmentType()); lqw.in(ListUtils.isNotEmpty(reqDTO.getAppointmentType()), OrderRequest::getAppointmentMethod, reqDTO.getAppointmentType());
lqw.in(ListUtils.isNotEmpty(reqDTO.getAppointmentStatus()), OrderRequest::getAppointmentStatus, reqDTO.getAppointmentStatus()); lqw.in(ListUtils.isNotEmpty(reqDTO.getAppointmentStatus()), OrderRequest::getAppointmentStatus, reqDTO.getAppointmentStatus());
if(ListUtils.isNotEmpty(reqDTO.getPriorities())) { if (ListUtils.isNotEmpty(reqDTO.getPriorities())) {
List<Integer> p = reqDTO.getPriorities(); List<Integer> p = reqDTO.getPriorities();
if(p.contains(0) && p.contains(1)) { if (p.contains(0) && p.contains(1)) {
lqw.ge(OrderRequest::getPriority, 1); lqw.ge(OrderRequest::getPriority, 1);
} else if (p.contains(0) && !p.contains(1)) { } else if (p.contains(0) && !p.contains(1)) {
lqw.le(OrderRequest::getPriority, 1); lqw.le(OrderRequest::getPriority, 1);
...@@ -115,11 +115,11 @@ public class OrderServiceListServiceImpl implements OrderServiceListService { ...@@ -115,11 +115,11 @@ public class OrderServiceListServiceImpl implements OrderServiceListService {
record.setOrderId(o.getOrderId()); record.setOrderId(o.getOrderId());
record.setType(o.getType()); record.setType(o.getType());
record.setBrand(o.getBrand()); record.setBrand(o.getBrand());
record.setFaultDescribe(o.getFaultDescribe());
record.setSkill(o.getSkill()); record.setSkill(o.getSkill());
record.setFaultDescribe(o.getFaultDescribe());
record.setName(o.getName()); record.setName(o.getName());
record.setPhone(o.getPhone()); record.setPhone(o.getPhone());
record.setAddress(String.format("%s-%s-%s", o.getCity(), o.getCounty(),o.getAddress())); record.setAddress(String.format("%s-%s-%s", o.getCity(), o.getCounty(), o.getAddress()));
record.setX(o.getX()); record.setX(o.getX());
record.setY(o.getY()); record.setY(o.getY());
record.setSource(o.getSource()); record.setSource(o.getSource());
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!