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 | 152 ++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 109 insertions(+), 43 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 8a17a9c..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,17 +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.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; @@ -34,22 +32,103 @@ 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.ONE) - .eq(Order::getIsDelete, 0) - .eq(Order::getType, Constants.ZERO) - .orderByAsc(Order::getTopSort).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) { @@ -62,22 +141,29 @@ Result<Long> result = GaoDeMapUtil.getDistance(orderPosition, longitude + "," + latitude); Long distance = result.getDatas(); // 回收服务信息 - RecoveryServe recoveryServe = recoveryServeService.lambdaQuery().eq(RecoveryServe::getId, order.getServeId()) - .eq(RecoveryServe::getIsDelete, 0).one(); + RecoveryServe recoveryServe = recoveryServeService.lambdaQuery() + .eq(RecoveryServe::getId, order.getServeId()).one(); // vo类信息封装 - OrderListVO orderListVO = new OrderListVO(order.getServeId()); + 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()); - orderListVO.setServePicture(recoveryServe.getCover()); - orderListVO.setServePrice(recoveryServe.getDefaultPrice()); + if (null != recoveryServe) { + orderListVO.setServePicture(recoveryServe.getCover()); + orderListVO.setServePrice(recoveryServe.getDefaultPrice()); + } orderListVO.setUserId(userid); orderListVO.setReservationName(order.getReservationName()); orderListVO.setReservationPhone(order.getReservationPhone()); - orderListVO.setReservationAddress(order.getReservationAddress()); + 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()); @@ -100,32 +186,12 @@ 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()); } } return resultList; - } - - @Override - public Boolean orderTop(Integer orderId, Integer userid) { - // 订单代办列表 - List<Order> orderList = orderService.lambdaQuery().eq(Order::getServerId, userid) - .eq(Order::getState, Constants.ONE) - .eq(Order::getIsDelete, 0) - .eq(Order::getType, Constants.ZERO) - .orderByAsc(Order::getTopSort).list(); - List<Order> orders = orderList.stream().filter(data -> null != data.getTopSort()).collect(Collectors.toList()); - int itemSort = 2; - for (Order order : orders) { - order.setTopSort(itemSort); - itemSort++; - } - return orderService.lambdaUpdate().set(Order::getTopSort, Constants.ONE) - .eq(Order::getServerId, userid) - .eq(Order::getIsDelete, 0).update(); } } -- Gitblit v1.7.1