package com.qtzl.alterSales.manager.handler; import cn.com.taiji.common.manager.net.http.ServiceHandleException; import com.google.common.collect.Lists; import com.qtzl.alterSales.dao.entity.second.AflVehicleTransferInfo; import com.qtzl.alterSales.dao.repo.jpa.second.AflVehicleTransferInfoRepo; import com.qtzl.alterSales.manager.abstracts.AbstractAfterSalesManager; import com.qtzl.alterSales.manager.model.protocol.UcServiceError; import com.qtzl.alterSales.manager.model.protocol.sales.AflVehicleScrapInfoPageRequest; import com.qtzl.alterSales.manager.model.protocol.sales.AflVehicleTransferInfoPageResponse; import com.qtzl.alterSales.manager.service.AfterSalesCmd; import com.txffp.api.core.manager.comm.annotation.ApiHandler; import org.apache.commons.lang3.StringUtils; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.persistence.criteria.Predicate; import java.time.LocalDateTime; import java.util.List; import java.util.stream.Collectors; /** * 车辆过户管理分页查询; * @author : zhangxin * @date : 2024-6-12 */ @Service @ApiHandler public class AflVehicleTransferInfoFindPageHandler extends AbstractAfterSalesManager { @Resource AflVehicleTransferInfoRepo aflVehicleTransferInfoRepo; public AflVehicleTransferInfoFindPageHandler() { super(AfterSalesCmd.FINDPAGEVEHICLETRANSFER, AflVehicleScrapInfoPageRequest.class); } @Override public String handleInternal(String filename, AflVehicleScrapInfoPageRequest request) throws ServiceHandleException { try { Page page = select(request); return toResponse(page, request).toJson(); } catch (Exception e) { if (e instanceof ServiceHandleException) { throw e; } logger.error("选装-查询车辆过户管理失败:{}", e.getMessage()); throw UcServiceError.BUSINESS_VALIDATE_ERR.toHandleException("查询车辆过户管理失败"); } } private AflVehicleTransferInfoPageResponse toResponse(Page page, AflVehicleScrapInfoPageRequest request) { final AflVehicleTransferInfoPageResponse response = new AflVehicleTransferInfoPageResponse(); response.setCurrentPage(request.getPageNo()); response.setPageSize(request.getPageSize()); response.setPageCount(page.getTotalPages()); response.setTotalCount(page.getTotalElements()); if (isEmpty(page.getContent())) { response.setData(Lists.newArrayList()); return response; } List formVoList = page.getContent().stream().collect(Collectors.toList()); response.setData(formVoList); return response; } private Page select(AflVehicleScrapInfoPageRequest request) throws ServiceHandleException { if (request.getPageSize() > 100) { throw UcServiceError.BUSINESS_VALIDATE_ERR.toHandleException("请求每页数量过大 " + request.getPageSize()); } return aflVehicleTransferInfoRepo.findAll(((root, query, cb) -> { List list = Lists.newArrayList(); if (!StringUtils.isEmpty(request.getAccountId())) { list.add(cb.equal(root.get("accountId"), request.getAccountId())); } if (!StringUtils.isEmpty(request.getPlateNum())) { list.add(cb.equal(root.get("plateNum"), request.getPlateNum())); } if (request.getPlateColor()!=null) { list.add(cb.equal(root.get("plateColor"), request.getPlateColor())); } if (request.getInsertTimeEnd()!=null) { list.add(cb.lessThanOrEqualTo(root.get("insertTime"), request.getInsertTimeEnd())); } if (request.getInsertTimeStart()!=null) { list.add(cb.greaterThanOrEqualTo(root.get("insertTime"), request.getInsertTimeStart())); } Predicate[] p = new Predicate[list.size()]; return cb.and(list.toArray(p)); }), PageRequest.of(request.getPageNo() - 1, request.getPageSize(), Sort.by(Sort.Direction.DESC, "insertTime"))); } }