package com.qtzl.alterSales.manager.handler; import cn.com.taiji.common.manager.net.http.ServiceHandleException; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.DesensitizedUtil; import com.google.common.collect.Lists; import com.qtzl.alterSales.dao.entity.second.AflCenterUserInfo; import com.qtzl.alterSales.dao.repo.jpa.second.AflCenterUserInfoRepo; import com.qtzl.alterSales.manager.abstracts.AbstractAfterSalesManager; import com.qtzl.alterSales.manager.model.protocol.UcServiceError; import com.qtzl.alterSales.manager.model.protocol.sales.AflCenterUserInfoFindPageViewRequest; import com.qtzl.alterSales.manager.model.protocol.sales.AflCenterUserInfoFindPageViewResponse; import com.qtzl.alterSales.manager.service.AfterSalesCmd; import com.qtzl.alterSales.manager.vo.AflCenterUserInfoVo; 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; /** *账户管理查询 */ @Service @ApiHandler public class AflCenterUserInfoFindPageHandler extends AbstractAfterSalesManager { @Resource private AflCenterUserInfoRepo aflCenterUserInfoRepo; public AflCenterUserInfoFindPageHandler() { super(AfterSalesCmd.FINDPAGECENTERUSERINFO, AflCenterUserInfoFindPageViewRequest.class); } @Override public String handleInternal(String filename, AflCenterUserInfoFindPageViewRequest 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 AflCenterUserInfoFindPageViewResponse toResponse(Page page, AflCenterUserInfoFindPageViewRequest request) { final AflCenterUserInfoFindPageViewResponse response = new AflCenterUserInfoFindPageViewResponse(); 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().map(this::toVo).collect(Collectors.toList()); response.setData(formVoList); return response; } private Page select(AflCenterUserInfoFindPageViewRequest request) throws ServiceHandleException { if (request.getPageSize() > 100) { throw UcServiceError.BUSINESS_VALIDATE_ERR.toHandleException("请求每页数量过大 " + request.getPageSize()); } return aflCenterUserInfoRepo.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.getName())) { list.add(cb.like(root.get("name"), "%"+request.getName()+"%")); } if (!StringUtils.isEmpty(request.getAccountType())) { list.add(cb.equal(root.get("accountType"), request.getAccountType())); } if (!StringUtils.isEmpty(request.getIdType())) { list.add(cb.equal(root.get("idType"), request.getIdType())); } if (!StringUtils.isEmpty(request.getIdNum())) { list.add(cb.equal(root.get("idNum"), request.getIdNum())); } if (!StringUtils.isEmpty(request.getMobile())) { list.add(cb.equal(root.get("mobile"), request.getMobile())); } if (!StringUtils.isEmpty(request.getAgentName())) { list.add(cb.like(root.get("agentName"), "%"+request.getAgentName()+"%")); } if (!StringUtils.isEmpty(request.getAgentIdType())) { list.add(cb.equal(root.get("agentIdType"), request.getAgentIdType())); } if (!StringUtils.isEmpty(request.getAgentIdNum())) { list.add(cb.equal(root.get("agentIdNum"), request.getAgentIdNum())); } if (!StringUtils.isEmpty(request.getStatus())) { list.add(cb.equal(root.get("status"), request.getStatus())); } if (request.getInsertTimeStart() != null) { list.add(cb.greaterThanOrEqualTo(root.get("insertTime"), request.getInsertTimeStart())); } if (request.getInsertTimeEnd() != null) { list.add(cb.lessThanOrEqualTo(root.get("insertTime"), request.getInsertTimeEnd())); } 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", "id"))); } private AflCenterUserInfoVo toVo(AflCenterUserInfo aflCenterUserInfo) { AflCenterUserInfoVo aflCenterUserInfoVo = new AflCenterUserInfoVo(); BeanUtil.copyProperties(aflCenterUserInfo, aflCenterUserInfoVo); if (!StringUtils.isEmpty(aflCenterUserInfoVo.getIdNum())&&aflCenterUserInfoVo.getIdNum().length()==18){ aflCenterUserInfoVo.setIdNum(DesensitizedUtil.idCardNum(aflCenterUserInfoVo.getIdNum(), 3, 4)); } if (!StringUtils.isEmpty(aflCenterUserInfoVo.getMobile())&&aflCenterUserInfoVo.getMobile().length()==11){ aflCenterUserInfoVo.setMobile(DesensitizedUtil.mobilePhone(aflCenterUserInfoVo.getMobile())); } return aflCenterUserInfoVo; } }