Spring Data JPA使用QueryDsl自定义返回对象(配合小辣椒使用)

 /**
     * 查询项点的违占比
     *
     * @param param
     * @return
     * @throws Exception
     */
    @Override
    public BaseRecordDTO findRiskWeiZhanBi(SearchParam param) throws Exception {
        Map<String, Object> map = getAllMonth(param);
        Date from = DateUtils.str2day(map.get("min").toString());
        Date to = DateUtils.str2day(map.get("max").toString());

        QBaseRecord baseRecord = QBaseRecord.baseRecord;
        List<Long> list = queryDifferRiskListPage(baseRecord, from, to, param.getStart(), param.getLength());
        BaseRecordDTO baseRecordDTO = new BaseRecordDTO();

        List<String> names = new ArrayList<>();//项点名称
        List<Long> errcounts = new ArrayList<>();//错误数量
        List<Long> totalCounts = new ArrayList<>();//总数量
        List<Double> baiFens = new ArrayList<Double>();//百分比

        QBaseRecord qBaseRecord = QBaseRecord.baseRecord;
        //根据项点id进行查询
      List<RiskTuBiaoFenXiDTO> list1 = jpaQueryFactory.select(
                qBaseRecord.id.count().as("levelCount"),//.as("levelCount")
                qBaseRecord.level,
                qBaseRecord.riskId
        )
                .from(qBaseRecord)
                .where(
                        qBaseRecord.riskId.in(list),
                        qBaseRecord.checkTime.between(from, to)
                )
                .groupBy(
                        qBaseRecord.level,
                        qBaseRecord.riskId
                )
                .fetch()
                .stream()
                .map(tuple -> RiskTuBiaoFenXiDTO.builder()
                        .levelCode(tuple.get(qBaseRecord.level))
                        .levelCount(tuple.get(qBaseRecord.id.count().as("levelCount")))
                        .riskId(tuple.get(qBaseRecord.riskId))
                        .build()
                )
                .collect(Collectors.toList());

 下面是实体

package com.neld.tmss.domain.dto.coverreport;

import lombok.Builder;
import lombok.Data;

@Data
@Builder
public class RiskTuBiaoFenXiDTO {

    private Long levelCount;

    private Integer levelCode;

    private Long riskId;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值