Commit a0ecc3f4 by wangli

新增服务端列表实现

1 parent 0a6fc1ce
package com.alibaba.cloud.integration.order.config;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MPConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
}
\ No newline at end of file
package com.alibaba.cloud.integration.order.controller;
import com.alibaba.cloud.integration.common.BusinessException;
import com.alibaba.cloud.integration.common.Result;
import com.alibaba.cloud.integration.order.dto.OrderServiceListReq;
import com.alibaba.cloud.integration.order.service.OrderServiceList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* @author wangl@zjhuixinyun.com
*/
@RestController
public class OrderServiceListController {
@Autowired
private OrderServiceList orderServiceList;
@GetMapping("/order/service/list")
public Result<?> GetOrderServiceList(@RequestParam OrderServiceListReq req) {
Result<?> res = null;
try {
res = orderServiceList.GetOrderServiceList(req);
}
catch (BusinessException e) {
return Result.failed(e.getMessage());
}
return res;
}
}
package com.alibaba.cloud.integration.order.dao;
import com.alibaba.cloud.integration.order.entity.OrderAppointment;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface OrderAppointmentDao extends BaseMapper<OrderAppointment> {
}
package com.alibaba.cloud.integration.order.dao;
import com.alibaba.cloud.integration.order.entity.OrderService;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface OrderServiceDao extends BaseMapper<OrderService> {
}
package com.alibaba.cloud.integration.order.dto;
import lombok.Data;
@Data
public class OrderServiceList {
private String orderId;
private String type;
private String brand;
private String skill;
private String faultDescribe;
private String name;
private String phone;
private String address;
private String x;
private String y;
private String expectTimeBegin;
private String expectTimeEnd;
private String source;
private String description;
private String orgBranchName;
private Integer engineerNum;
private String engineerNames;
private String appointmentTime;
private String appointmentStatus;
private String appointmentType;
private String createTime;
}
package com.alibaba.cloud.integration.order.dto;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode
public class OrderServiceListReq {
private String startDate;
private String endDate;
private long page;
private long size;
private String sort;
private String appointmentType;
private String appointmentStatus;
private String type;
private String brand;
private String skill;
}
\ No newline at end of file
package com.alibaba.cloud.integration.order.dto;
import lombok.Data;
import java.util.List;
@Data
public class OrderServiceListResp {
private long total;
private long pages;
private long pageCurrent;
private long pageSize;
private List<OrderServiceList> content;
}
package com.alibaba.cloud.integration.order.entity;
import lombok.Data;
import java.sql.Timestamp;
@Data
public class OrderAppointment {
private Integer id;
private String orderId;
private String suborderId;
private String mainSub;
private Integer engineer_id;
private String engineerName;
private String engineerPhone;
private String engineerAge;
private String engineerGroupId;
private String engineerGroupName;
private String isWorkshop;
private Timestamp expectTime;
private Timestamp actualTime;
private Timestamp startTime;
private Timestamp endTime;
private String status;
private String memo;
private Timestamp createTime;
private Timestamp updateTime;
}
package com.alibaba.cloud.integration.order.entity;
import lombok.Data;
import java.sql.Timestamp;
@Data
public class OrderService {
private Integer id;
private String orderId;
private String name;
private String phone;
private String address;
private String x;
private String y;
private String province;
private String city;
private String county;
private String categoryId;
private String brand;
private String type;
private String skill;
private String applyNote;
private String faultDescribe;
private Timestamp expectTimeBegin;
private Timestamp expectTimeEnd;
private String expectTimeDesc;
private String source;
private String priority;
private String areaId;
private String orderTags;
private String tags;
private String status;
private String statusAppointment;
private String orgClusterId;
private String orgClusterName;
private String orgBranchId;
private String orgBranchName;
private String orgGroupId;
private String orgGroupName;
private String orgTeamId;
private String orgTeamName;
private String description;
private Timestamp createTime;
private Timestamp updateTime;
}
package com.alibaba.cloud.integration.order.service;
import com.alibaba.cloud.integration.common.BusinessException;
import com.alibaba.cloud.integration.common.Result;
import com.alibaba.cloud.integration.order.dto.OrderServiceListReq;
import com.alibaba.cloud.integration.order.dto.OrderServiceListResp;
public interface OrderServiceList {
Result<OrderServiceListResp> GetOrderServiceList(OrderServiceListReq req) throws BusinessException;
}
package com.alibaba.cloud.integration.order.service.impl;
import com.alibaba.cloud.integration.common.BusinessException;
import com.alibaba.cloud.integration.common.Result;
import com.alibaba.cloud.integration.order.dao.OrderAppointmentDao;
import com.alibaba.cloud.integration.order.dao.OrderServiceDao;
import com.alibaba.cloud.integration.order.dto.OrderServiceList;
import com.alibaba.cloud.integration.order.dto.OrderServiceListReq;
import com.alibaba.cloud.integration.order.dto.OrderServiceListResp;
import com.alibaba.cloud.integration.order.entity.OrderAppointment;
import com.alibaba.cloud.integration.order.entity.OrderService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.sql.Timestamp;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class OrderServiceListImpl {
@Autowired
private OrderServiceDao orderServiceDao;
@Autowired
private OrderAppointmentDao orderAppointmentDao;
@Transactional
public Result<OrderServiceListResp> GetOrderServiceList(OrderServiceListReq req) throws BusinessException {
//分页
IPage<OrderService> page = new Page(req.getPage(), req.getSize());
LambdaQueryWrapper<OrderService> lqw = new LambdaQueryWrapper<>();
lqw.ge(OrderService::getExpectTimeBegin, this.GetTimestampFromDate(req.getStartDate())); //预约开始日期
lqw.le(OrderService::getExpectTimeBegin, this.GetTimestampFromDate(req.getEndDate())); //预约结束日期
lqw.eq(Strings.isNotEmpty(req.getAppointmentStatus()), OrderService::getStatusAppointment, req.getAppointmentStatus()); //指派状态
lqw.eq(Strings.isNotEmpty(req.getType()), OrderService::getType, req.getType()); //设备类型
lqw.eq(Strings.isNotEmpty(req.getBrand()), OrderService::getBrand, req.getBrand()); //品牌
lqw.eq(Strings.isNotEmpty(req.getSkill()), OrderService::getSkill, req.getSkill()); //技能
// 查询工单表列表
orderServiceDao.selectPage(page, lqw);
List<OrderService> records = page.getRecords();
//获取工单订单号列表
List<String> orderIds = new ArrayList<>();
for(OrderService r: records) {
orderIds.add(r.getOrderId());
}
// 获取指派订单列表
HashMap<String, List<OrderAppointment>> appointOrders = this.PackOrderAppointment(this.GetOrderAppointment(orderIds));
List<OrderAppointment> appoint;
List<OrderServiceList> content = new ArrayList<>();
for (OrderService o: records) {
OrderServiceList record = new OrderServiceList();
appoint = appointOrders.getOrDefault(o.getOrderId(), List.of());
record.setOrderId(o.getOrderId());
record.setType(o.getType());
record.setBrand(o.getBrand());
record.setFaultDescribe(o.getFaultDescribe());
record.setSkill(o.getSkill());
record.setName(o.getName());
record.setPhone(o.getPhone());
record.setAddress(o.getAddress());
record.setX(o.getX());
record.setY(o.getY());
record.setSource(o.getSource());
record.setDescription(o.getDescription());
record.setOrgBranchName(o.getOrgBranchName());
record.setEngineerNum(this.getEngNum(appoint)); //工程师数量
record.setEngineerNames(this.getEngNames(appoint)); //工程师姓名列表
content.add(record);
}
// 组装
OrderServiceListResp res = new OrderServiceListResp();
res.setTotal(page.getTotal());
res.setPages(page.getPages());
res.setPageCurrent(page.getCurrent());
res.setPageSize(page.getSize());
res.setContent(content);
return Result.success(res);
}
public List<OrderAppointment> GetOrderAppointment(List<String> orderIds) {
// 获取指派单列表
LambdaQueryWrapper<OrderAppointment> lqw = new LambdaQueryWrapper<>();
lqw.in(OrderAppointment::getOrderId, orderIds);
return orderAppointmentDao.selectList(lqw);
}
public HashMap<String, List<OrderAppointment>> PackOrderAppointment(List<OrderAppointment> orders){
HashMap<String, List<OrderAppointment>> map = new HashMap<>();
// 根据订单ID-子订单降序排序
Comparator<OrderAppointment> byOrderIdDesc = Comparator.comparing(OrderAppointment::getOrderId, String.CASE_INSENSITIVE_ORDER).reversed();
Comparator<OrderAppointment> bySuborderIdDesc = Comparator.comparing(OrderAppointment::getSuborderId, String.CASE_INSENSITIVE_ORDER).reversed();
Comparator<OrderAppointment> comp = byOrderIdDesc.thenComparing(bySuborderIdDesc);
List<OrderAppointment> results = orders.stream().sorted(comp).collect(Collectors.toList());
Set<String> set = new HashSet<>();
for(OrderAppointment o: results){
set.add(o.getOrderId());
}
for (String s: set){
map.put(s, new ArrayList<OrderAppointment>());
}
// 根据订单ID-子订单分组, 只取一组子订单分组
String flagOrderId = "";
String flagSuborderId = "";
for (OrderAppointment o: results) {
}
// TODO
return map;
}
private Integer getEngNum(List<OrderAppointment> orders){
/*获取工程师数量*/
return orders.size();
}
private String getEngNames(List<OrderAppointment> orders) {
/*获取工程师姓名列表*/
List<String> names = new ArrayList<>();
for (OrderAppointment o: orders) {
names.add(o.getEngineerName());
}
return String.join("、", names);
}
public Timestamp GetTimestampFromDate(String date){
return Timestamp.valueOf(date + " 00:00:00");
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!