huliguo
8 天以前 594cfe56c8713b78e12894f6281923684385f927
pt-errand/src/main/java/com/ruoyi/errand/service/impl/CourierServiceImpl.java
@@ -17,10 +17,7 @@
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;
@@ -40,10 +37,7 @@
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
@@ -458,6 +452,47 @@
    }
    @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) // 过滤空时间