xuhy
2024-10-30 660f4451c140a9da1f4bb92721a403b128dbdaf7
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TDataStatisticsController.java
@@ -109,6 +109,7 @@
    @PostMapping(value = "/profitDetails")
    public AjaxResult<ProfitDetailsVO> profitDetails(@RequestBody ProfitDetailsQuery query) {
        Long objectId = tokenService.getLoginUser().getObjectId();
        Integer roleType = tokenService.getLoginUser().getRoleType();
        query.setShopId(objectId);
        if(StringUtils.isEmpty(query.getStartTime()) && StringUtils.isEmpty(query.getEndTime())){
            if(Objects.nonNull(query.getTimeType())){
@@ -140,13 +141,20 @@
                query.setEndTime(DateUtils.localDateTimeToDate(endTime));
            }
        }
        return AjaxResult.success(orderMealService.profitDetails(query));
        ProfitDetailsVO profitDetailsVO;
        if(roleType.equals(2)){
            profitDetailsVO = orderMealService.profitDetails(query);
        }else {
            profitDetailsVO = orderSaleService.profitDetails(query);
        }
        return AjaxResult.success(profitDetailsVO);
    }
    @ApiOperation( value = "盈利明细导出")
    @PostMapping(value = "/profitDetailsExport")
    public void profitDetailsExport(@RequestBody ProfitDetailsQuery query) {
        Long objectId = tokenService.getLoginUser().getObjectId();
        Integer roleType = tokenService.getLoginUser().getRoleType();
        query.setShopId(objectId);
        if(StringUtils.isEmpty(query.getStartTime()) && StringUtils.isEmpty(query.getEndTime())){
@@ -179,7 +187,12 @@
                query.setEndTime(DateUtils.localDateTimeToDate(endTime));
            }
        }
        List<GoodsProfitVO> list  = orderMealService.profitDetailsExport(query);
        List<GoodsProfitVO> list;
        if(roleType.equals(2)){
            list  = orderMealService.profitDetailsExport(query);
        }else {
            list  = orderSaleService.profitDetailsExport(query);
        }
        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), GoodsProfitVO.class, list);
        HttpServletResponse response = WebUtils.response();
        response.setContentType("application/vnd.ms-excel");
@@ -256,38 +269,35 @@
        Integer roleType = tokenService.getLoginUser().getRoleType();
        Long objectId = tokenService.getLoginUser().getObjectId();
        query.setShopId(objectId);
        if(StringUtils.isEmpty(query.getStartTime()) && StringUtils.isEmpty(query.getEndTime())){
            if(Objects.isNull(query.getTimeType())){
                query.setTimeType(3);
            }
            LocalDateTime startTime = null;
            LocalDateTime endTime = null;
            switch (query.getTimeType()){
                case 1:
                    // 今日
                    startTime = DateUtils.getDayStart(LocalDateTime.now());
                    endTime = DateUtils.getDayEnd(LocalDateTime.now());
                    break;
                case 2:
                    // 昨日
                    startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(1));
                    endTime = DateUtils.getDayEnd(LocalDateTime.now().minusDays(1));
                    break;
                case 3:
                    // 近7天
                    startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(7));
                    endTime = DateUtils.getDayEnd(LocalDateTime.now());
                    break;
                case 4:
                    // 近30天
                    startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(30));
                    endTime = DateUtils.getDayEnd(LocalDateTime.now());
                    break;
            }
            query.setStartTime(DateUtils.localDateTimeToDate(startTime));
            query.setEndTime(DateUtils.localDateTimeToDate(endTime));
        LocalDateTime startTime = null;
        LocalDateTime endTime = null;
        switch (query.getTimeType()){
            case 1:
                // 今日
                startTime = DateUtils.getDayStart(LocalDateTime.now());
                endTime = DateUtils.getDayEnd(LocalDateTime.now());
                break;
            case 2:
                // 昨日
                startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(1));
                endTime = DateUtils.getDayEnd(LocalDateTime.now().minusDays(1));
                break;
            case 3:
                // 近7天
                startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(7));
                endTime = DateUtils.getDayEnd(LocalDateTime.now());
                break;
            case 4:
                // 近30天
                startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(30));
                endTime = DateUtils.getDayEnd(LocalDateTime.now());
                break;
        }
        query.setStartTime(DateUtils.localDateTimeToDate(startTime));
        query.setEndTime(DateUtils.localDateTimeToDate(endTime));
        List<OrderTrendsVO> orderTrendsVOS;
        if(roleType == 2){
            orderTrendsVOS = orderMealService.orderingTrends(query);
@@ -342,9 +352,10 @@
        List<PersonnelStatisticsVO> personnelStatisticsVOS = orderMealService.personnelStatistics(query);
        personnelStatisticsAndSumVO.setPersonnelStatisticsVOS(personnelStatisticsVOS);
        if(!CollectionUtils.isEmpty(personnelStatisticsVOS)){
            personnelStatisticsAndSumVO.setPersonCountSum(personnelStatisticsVOS.stream().filter(e->e.getPersonCount() != null).mapToInt(PersonnelStatisticsVO::getPersonCount).sum());
            int sum = personnelStatisticsVOS.stream().filter(e -> e.getPersonCount() != null).mapToInt(PersonnelStatisticsVO::getPersonCount).sum();
            personnelStatisticsAndSumVO.setPersonCountSum(sum);
            // 计算列表中平均金额乘以人数的总和
            personnelStatisticsAndSumVO.setTotalMoney(personnelStatisticsVOS.stream().filter(e->e.getPersonCount() != null).mapToDouble(personnelStatisticsVO -> personnelStatisticsVO.getAvgAmount().doubleValue() * personnelStatisticsVO.getPersonCount()).sum());
            personnelStatisticsAndSumVO.setTotalMoney(personnelStatisticsVOS.stream().filter(e->e.getPersonCount() != null).mapToDouble(personnelStatisticsVO -> (personnelStatisticsVO.getAvgAmount().doubleValue() * personnelStatisticsVO.getPersonCount()) / sum).sum());
        }
        return AjaxResult.success(personnelStatisticsAndSumVO);
    }