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.AflPlateChange; import com.qtzl.alterSales.dao.repo.jpa.second.AflPlateChangeRepo; import com.qtzl.alterSales.manager.abstracts.AbstractAfterSalesManager; import com.qtzl.alterSales.manager.model.protocol.UcServiceError; import com.qtzl.alterSales.manager.model.protocol.sales.AflPlateChangeQueryRequest; import com.qtzl.alterSales.manager.model.protocol.sales.AflPlateChangeQueryResponse; 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.util.ArrayList; import java.util.List; @Service @ApiHandler public class AflPlateChangeQueryHandler extends AbstractAfterSalesManager { @Resource AflPlateChangeRepo aflPlateChangeRepo; public AflPlateChangeQueryHandler() { super(AfterSalesCmd.PLATECHANGEQUERY, AflPlateChangeQueryRequest.class); } @Override public String handleInternal(String filename, AflPlateChangeQueryRequest request) throws Exception { 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 AflPlateChangeQueryResponse toResponse(Page page, AflPlateChangeQueryRequest request) { final AflPlateChangeQueryResponse response = new AflPlateChangeQueryResponse(); 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 = new ArrayList<>(page.getContent()); response.setData(formVoList); return response; } private Page select(AflPlateChangeQueryRequest request) throws ServiceHandleException { if (request.getPageSize() > 100) { throw UcServiceError.BUSINESS_VALIDATE_ERR.toHandleException("请求每页数量过大 " + request.getPageSize()); } return aflPlateChangeRepo.findAll(((root, query, cb) -> { List list = Lists.newArrayList(); 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.getAgentId() != null) { list.add(cb.equal(root.get("agentId"), request.getAgentId())); } if (request.getAfterPlateNum() != null) { list.add(cb.equal(root.get("afterPlateNum"), request.getAfterPlateNum())); } if (request.getAfterPlateColor() != null) { list.add(cb.equal(root.get("afterPlateColor"), request.getAfterPlateColor())); } 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"))); } }