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