From ecca9ab70a9a87bcb60977c92fbf81053b8fc1bb Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期三, 04 九月 2024 09:17:55 +0800 Subject: [PATCH] 新增优化 --- ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/impl/MasterWorkerServiceImpl.java | 151 ++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 133 insertions(+), 18 deletions(-) diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/impl/MasterWorkerServiceImpl.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/impl/MasterWorkerServiceImpl.java index 0abdc49..61fbf3f 100644 --- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/impl/MasterWorkerServiceImpl.java +++ b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/service/impl/MasterWorkerServiceImpl.java @@ -1,18 +1,15 @@ package com.ruoyi.worker.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.domain.Result; import com.ruoyi.common.core.utils.GaoDeMapUtil; -import com.ruoyi.common.core.utils.bean.BeanUtils; +import com.ruoyi.order.api.entity.Order; +import com.ruoyi.order.api.feignClient.OrderClient; import com.ruoyi.worker.entity.MasterWorker; -import com.ruoyi.worker.entity.Order; import com.ruoyi.worker.entity.RecoveryServe; import com.ruoyi.worker.mapper.MasterWorkerMapper; import com.ruoyi.worker.service.MasterWorkerService; -import com.ruoyi.worker.service.OrderService; import com.ruoyi.worker.service.RecoveryServeService; -import com.ruoyi.worker.vo.OrderCountVO; import com.ruoyi.worker.vo.OrderListVO; import com.ruoyi.worker.vo.OrderNotHandleVO; import org.springframework.stereotype.Service; @@ -35,32 +32,151 @@ public class MasterWorkerServiceImpl extends ServiceImpl<MasterWorkerMapper, MasterWorker> implements MasterWorkerService { @Resource - private OrderService orderService; - @Resource private RecoveryServeService recoveryServeService; - - @Override - public OrderCountVO orderCount(Integer id) { - return baseMapper.orderCount(id); - } + @Resource + private OrderClient orderClient; @Override public List<OrderListVO> orderNotHandle(Integer userid, String longitude, String latitude) { - List<Order> orderList = orderService.lambdaQuery().eq(Order::getServerId, userid).eq(Order::getState, Constants.TWO) - .eq(Order::getIsDelete, 0).eq(Order::getType, Constants.ZERO).list(); + List<Order> orderList = orderClient.orderNotHandle(userid).getData(); + // 根据经纬度距离封装 + List<OrderNotHandleVO> list = new ArrayList<>(); + boolean item = false; + for (Order order : orderList) { + if (null != order.getTopSort()) { + item = true; + break; + } + } + for (Order order : orderList) { + // 用户下单经纬度 + Double orderLongitude = order.getLongitude(); + Double orderLatitude = order.getLatitude(); + Integer topSort = order.getTopSort(); + String orderPosition = orderLongitude + "," + orderLatitude; + // 根据经纬度计算与师傅的距离 + Result<Long> result = GaoDeMapUtil.getDistance(orderPosition, longitude + "," + latitude); + Long distance = result.getDatas(); + // 回收服务信息 + RecoveryServe recoveryServe = recoveryServeService.lambdaQuery() + .eq(RecoveryServe::getId, order.getServeId()).one(); + // vo类信息封装 + OrderListVO orderListVO = new OrderListVO(); + orderListVO.setOrderId(order.getId()); + orderListVO.setOrderNumber(order.getOrderNumber()); + orderListVO.setSiteId(order.getSiteId()); + orderListVO.setSiteName(order.getSiteName()); + orderListVO.setServeId(order.getServeId()); + orderListVO.setServeName(order.getServeName()); + if (null != recoveryServe) { + orderListVO.setServePicture(recoveryServe.getCover()); + orderListVO.setServePrice(recoveryServe.getDefaultPrice()); + } + orderListVO.setUserId(userid); + orderListVO.setReservationName(order.getReservationName()); + orderListVO.setReservationPhone(order.getReservationPhone()); + if (order.getAddress()!=null) { + orderListVO.setReservationAddress(order.getReservationAddress() + order.getAddress()); + }else { + orderListVO.setReservationAddress(order.getReservationAddress()); + + } + orderListVO.setTime(order.getTime()); + orderListVO.setServerId(order.getServerId()); + orderListVO.setServerName(order.getServerName()); + orderListVO.setServerPhone(order.getServerPhone()); + orderListVO.setReservationRemark(order.getReservationRemark()); + orderListVO.setOrderMoney(order.getOrderMoney()); + orderListVO.setState(order.getState()); + orderListVO.setAcceptTime(order.getAcceptTime()); + orderListVO.setArriveTime(order.getArriveTime()); + orderListVO.setType(order.getType()); + orderListVO.setLongitude(order.getLongitude()); + orderListVO.setLatitude(order.getLatitude()); + orderListVO.setTopSort(topSort); + orderListVO.setFake(order.getFake()==null?0:order.getFake()); + OrderNotHandleVO vo = new OrderNotHandleVO(distance, orderListVO); + list.add(vo); + } + List<OrderNotHandleVO> newList = new ArrayList<>(); + if (item) { + // 已置顶订单 + List<OrderNotHandleVO> topSortNotNull = list.stream() + .filter(data -> data.getOrderList().getTopSort() != null).collect(Collectors.toList()); + newList.addAll(topSortNotNull); + // 未置顶订单,根据距离由近到远排序 + List<OrderNotHandleVO> topSortNull = list.stream() + .filter(data -> data.getOrderList().getTopSort() == null).collect(Collectors.toList()); + topSortNull.sort(Comparator.comparing(OrderNotHandleVO::getDistance)); + newList.addAll(topSortNull); + return newList.stream().map(OrderNotHandleVO::getOrderList).collect(Collectors.toList()); + } else { + // 根据距离排序 + list.sort(Comparator.comparing(OrderNotHandleVO::getDistance)); + List<OrderListVO> resultList = list.stream().map(OrderNotHandleVO::getOrderList).collect(Collectors.toList()); + for (OrderListVO orderListVO : resultList) { + Integer serveId = orderListVO.getServeId(); + // 回收服务信息 + RecoveryServe recoveryServe = recoveryServeService.lambdaQuery().eq(RecoveryServe::getId, serveId).one(); + if (null != recoveryServe) { + orderListVO.setServePicture(recoveryServe.getCover()); + } + } + return resultList; + } + } + + @Override + public List<OrderListVO> orderMapMode(Integer userid, String longitude, String latitude) { + List<Order> orderList = orderClient.orderNotHandle(userid).getData(); // 根据经纬度距离封装 List<OrderNotHandleVO> list = new ArrayList<>(); for (Order order : orderList) { // 用户下单经纬度 Double orderLongitude = order.getLongitude(); Double orderLatitude = order.getLatitude(); + Integer topSort = order.getTopSort(); String orderPosition = orderLongitude + "," + orderLatitude; // 根据经纬度计算与师傅的距离 Result<Long> result = GaoDeMapUtil.getDistance(orderPosition, longitude + "," + latitude); Long distance = result.getDatas(); + // 回收服务信息 + RecoveryServe recoveryServe = recoveryServeService.lambdaQuery() + .eq(RecoveryServe::getId, order.getServeId()).one(); // vo类信息封装 - OrderListVO orderListVO = new OrderListVO(order.getServeId()); - BeanUtils.copyProperties(orderListVO, orderListVO); + OrderListVO orderListVO = new OrderListVO(); + orderListVO.setOrderId(order.getId()); + orderListVO.setOrderNumber(order.getOrderNumber()); + orderListVO.setSiteId(order.getSiteId()); + orderListVO.setSiteName(order.getSiteName()); + orderListVO.setServeId(order.getServeId()); + orderListVO.setServeName(order.getServeName()); + if (null != recoveryServe) { + orderListVO.setServePicture(recoveryServe.getCover()); + orderListVO.setServePrice(recoveryServe.getDefaultPrice()); + } + orderListVO.setUserId(userid); + orderListVO.setReservationName(order.getReservationName()); + orderListVO.setReservationPhone(order.getReservationPhone()); + if (order.getAddress()!=null) { + orderListVO.setReservationAddress(order.getReservationAddress() + order.getAddress()); + }else { + orderListVO.setReservationAddress(order.getReservationAddress()); + + } + orderListVO.setTime(order.getTime()); + orderListVO.setServerId(order.getServerId()); + orderListVO.setServerName(order.getServerName()); + orderListVO.setServerPhone(order.getServerPhone()); + orderListVO.setReservationRemark(order.getReservationRemark()); + orderListVO.setOrderMoney(order.getOrderMoney()); + orderListVO.setState(order.getState()); + orderListVO.setAcceptTime(order.getAcceptTime()); + orderListVO.setArriveTime(order.getArriveTime()); + orderListVO.setType(order.getType()); + orderListVO.setLongitude(order.getLongitude()); + orderListVO.setLatitude(order.getLatitude()); + orderListVO.setTopSort(topSort); OrderNotHandleVO vo = new OrderNotHandleVO(distance, orderListVO); list.add(vo); } @@ -70,8 +186,7 @@ for (OrderListVO orderListVO : resultList) { Integer serveId = orderListVO.getServeId(); // 回收服务信息 - RecoveryServe recoveryServe = recoveryServeService.lambdaQuery().eq(RecoveryServe::getId, serveId) - .eq(RecoveryServe::getIsDelete, 0).one(); + RecoveryServe recoveryServe = recoveryServeService.lambdaQuery().eq(RecoveryServe::getId, serveId).one(); if (null != recoveryServe) { orderListVO.setServePicture(recoveryServe.getCover()); } -- Gitblit v1.7.1