| | |
| | | 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; |
| | |
| | | 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) { |
| | |
| | | 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()); |
| | |
| | | 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(); |
| | | } |
| | | |
| | | } |