| | |
| | | import com.ruoyi.errand.object.dto.sys.AddCourierDTO; |
| | | import com.ruoyi.errand.object.dto.sys.CourierPageListDTO; |
| | | import com.ruoyi.errand.object.dto.sys.EditCourierDTO; |
| | | import com.ruoyi.errand.object.vo.app.CompleteOrderDTO; |
| | | import com.ruoyi.errand.object.vo.app.CourierInfoVO; |
| | | import com.ruoyi.errand.object.vo.app.CourierOrderListVO; |
| | | import com.ruoyi.errand.object.vo.app.CourierStatisticsVO; |
| | | import com.ruoyi.errand.object.vo.app.*; |
| | | import com.ruoyi.errand.object.vo.sys.AllCourierListVO; |
| | | import com.ruoyi.errand.object.vo.sys.AppUserPageListVO; |
| | | import com.ruoyi.errand.object.vo.sys.CourierPageListVO; |
| | |
| | | import java.time.LocalDateTime; |
| | | import java.time.LocalTime; |
| | | import java.time.temporal.TemporalAdjusters; |
| | | import java.util.Arrays; |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Service |
| | |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public WorkNumberVO getWorkNumber() { |
| | | AppUser appuser = (AppUser) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); |
| | | if (appuser.getCourierId()==null){ |
| | | throw new ServiceException("您还不是跑腿员"); |
| | | } |
| | | CommunityCourier communityCourier = communityCourierMapper.selectOne(new LambdaUpdateWrapper<CommunityCourier>() |
| | | .eq(CommunityCourier::getCourierId, appuser.getCourierId())); |
| | | if(communityCourier==null){ |
| | | throw new ServiceException("您未绑定小区"); |
| | | } |
| | | //查询订单 |
| | | List<Order> orderList = orderMapper.selectList(new LambdaQueryWrapper<Order>() |
| | | .eq(Order::getCourierId, communityCourier.getCourierId()) |
| | | .eq(Order::getDelFlag, DelFlagConstant.UNDELETE) |
| | | .eq(Order::getPayStatus,2) |
| | | ); |
| | | Map<Integer, List<Order>> orderStatusMap = orderList.stream().collect(Collectors.groupingBy(Order::getOrderStatus)); |
| | | Integer totalNum=orderList.size(); |
| | | Integer inProgressNumber = orderStatusMap.getOrDefault(2, Collections.emptyList()).size(); |
| | | Integer completedNumber = orderStatusMap.getOrDefault(4, Collections.emptyList()).size(); |
| | | completedNumber += orderStatusMap.getOrDefault(5, Collections.emptyList()).size(); |
| | | |
| | | //待接单 |
| | | Integer waitNumber = Math.toIntExact(orderMapper.selectCount( |
| | | new LambdaQueryWrapper<Order>() |
| | | .eq(Order::getDelFlag, 0) |
| | | .eq(Order::getOrderStatus, 1) |
| | | .eq(Order::getPayStatus, 2) |
| | | .eq(Order::getCommunityId, communityCourier.getCommunityId()) |
| | | )); |
| | | totalNum += waitNumber; |
| | | |
| | | WorkNumberVO workNumberVO = new WorkNumberVO(); |
| | | workNumberVO.setTotalNumber(totalNum); |
| | | workNumberVO.setCompletedNumber(completedNumber); |
| | | workNumberVO.setInProgressNumber(inProgressNumber); |
| | | workNumberVO.setWaitNumber(waitNumber); |
| | | return workNumberVO; |
| | | } |
| | | |
| | | private static long countByTimeRange(List<Order> orderList, LocalDateTime start, LocalDateTime end) { |
| | | return orderList.stream() |
| | | .filter(order -> order.getReceivingTime() != null) // 过滤空时间 |