选装售后
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

AflOrderInfoServiceImpl.java 9.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. package com.qtzl.alterSales.manager.service;
  2. import cn.com.taiji.common.manager.net.http.ServiceHandleException;
  3. import cn.com.taiji.common.pub.CollectionTools;
  4. import cn.hutool.core.bean.BeanUtil;
  5. import cn.hutool.core.util.DesensitizedUtil;
  6. import com.google.common.collect.Lists;
  7. import com.qtzl.alterSales.dao.entity.second.AflOrderInfo;
  8. import com.qtzl.alterSales.dao.repo.jpa.second.AflOrderInfoRepo;
  9. import com.qtzl.alterSales.manager.model.protocol.UcServiceError;
  10. import com.qtzl.alterSales.manager.model.protocol.sales.AflOrderInfoFindPageViewRequest;
  11. import com.qtzl.alterSales.manager.model.protocol.sales.AflOrderInfoFindPageViewResponse;
  12. import com.qtzl.alterSales.manager.service.third.ConstantConfig;
  13. import com.qtzl.alterSales.manager.service.third.FmsService;
  14. import com.qtzl.alterSales.manager.tools.ExcelUtils;
  15. import com.qtzl.alterSales.manager.vo.AflOrderInfoVo;
  16. import org.apache.commons.lang3.StringUtils;
  17. import org.slf4j.Logger;
  18. import org.springframework.data.domain.Page;
  19. import org.springframework.data.domain.PageRequest;
  20. import org.springframework.data.domain.Sort;
  21. import org.springframework.stereotype.Service;
  22. import javax.annotation.Resource;
  23. import javax.persistence.criteria.CriteriaBuilder;
  24. import javax.persistence.criteria.Predicate;
  25. import javax.persistence.criteria.Root;
  26. import java.io.File;
  27. import java.util.List;
  28. import java.util.stream.Collectors;
  29. @Service
  30. public class AflOrderInfoServiceImpl implements AflOrderInfoService{
  31. @Resource
  32. AflOrderInfoRepo aflOrderInfoRepo;
  33. @Resource
  34. FmsService fmsService;
  35. @Resource
  36. ConstantConfig constantConfig;
  37. @Override
  38. public AflOrderInfo findById(String id) throws ServiceHandleException {
  39. if (StringUtils.isEmpty(id)) {
  40. throw UcServiceError.BUSINESS_VALIDATE_ERR.toHandleException("请选择订单信息编号");
  41. }
  42. AflOrderInfo aflOrderInfo = aflOrderInfoRepo.findById(id).orElse(null);
  43. if (null == aflOrderInfo) {
  44. throw UcServiceError.BUSINESS_VALIDATE_ERR.toHandleException("该编号订单信息不存在");
  45. }
  46. return aflOrderInfo;
  47. }
  48. @Override
  49. public String export(AflOrderInfoFindPageViewRequest request, Logger logger) throws ServiceHandleException {
  50. String pathFile =null;
  51. try {
  52. long count = count(request);
  53. if (count>10000){
  54. throw UcServiceError.BUSINESS_VALIDATE_ERR.toHandleException("订单信息管理导出失败,数据大于10000,禁止导出");
  55. }
  56. List<AflOrderInfo> aflOrderInfos= selectList(request);
  57. List<AflOrderInfoVo> aflOrderInfoVos = getAflOrderInfoVos(aflOrderInfos);
  58. if (aflOrderInfoVos==null||aflOrderInfoVos.size()==0) {
  59. pathFile = ExcelUtils.export(null, "订单信息",constantConfig.getFilePath() ,null, AflOrderInfoVo.class);
  60. } else {
  61. pathFile = ExcelUtils.export(null, "订单信息",constantConfig.getFilePath(), aflOrderInfoVos, AflOrderInfoVo.class);
  62. }
  63. if (StringUtils.isEmpty(pathFile)){
  64. throw UcServiceError.BUSINESS_VALIDATE_ERR.toHandleException("订单信息管理导出失败");
  65. }
  66. String s = null;
  67. try {
  68. s = fmsService.uploadFile(constantConfig.getUploadFile(),pathFile, 90000);
  69. } catch (ServiceHandleException e) {
  70. logger.error("选装-订单信息管理导出失败:{}", e.getMessage());
  71. throw UcServiceError.BUSINESS_VALIDATE_ERR.toHandleException(e.getMessage());
  72. }
  73. if (StringUtils.isEmpty(s)){
  74. throw UcServiceError.BUSINESS_VALIDATE_ERR.toHandleException("订单信息管理导出失败");
  75. }
  76. return s;
  77. } catch (Exception e) {
  78. if (e instanceof ServiceHandleException) {
  79. throw e;
  80. }
  81. logger.error("选装-订单信息管理导出失败:{}", e.getMessage());
  82. throw UcServiceError.BUSINESS_VALIDATE_ERR.toHandleException("订单信息管理导出失败");
  83. }finally {
  84. File file = null;
  85. try {
  86. file = new File(pathFile);
  87. } catch (Exception e) {
  88. }
  89. if (file!=null){
  90. file.delete();
  91. }
  92. }
  93. }
  94. @Override
  95. public String select(AflOrderInfoFindPageViewRequest request) throws ServiceHandleException {
  96. try {
  97. Page<AflOrderInfo> page = selectPage(request);
  98. return toResponse(page,request).toJson();
  99. } catch (Exception e) {
  100. if (e instanceof ServiceHandleException) {
  101. throw e;
  102. }
  103. throw UcServiceError.BUSINESS_VALIDATE_ERR.toHandleException("查询订单记录管理失败,"+ e.getMessage());
  104. }
  105. }
  106. private long count(AflOrderInfoFindPageViewRequest request) {
  107. return aflOrderInfoRepo.count(((root, query, cb) -> {
  108. List<Predicate> list = Lists.newArrayList();
  109. getList(list,request,cb,root);
  110. Predicate[] p = new Predicate[list.size()];
  111. return cb.and(list.toArray(p));
  112. }));
  113. }
  114. private List<AflOrderInfo> selectList(AflOrderInfoFindPageViewRequest request) {
  115. return aflOrderInfoRepo.findAll(((root, query, cb) -> {
  116. List<Predicate> list = Lists.newArrayList();
  117. getList(list,request,cb,root);
  118. Predicate[] p = new Predicate[list.size()];
  119. return cb.and(list.toArray(p));
  120. }), Sort.by(Sort.Direction.DESC, "createTime"));
  121. }
  122. private AflOrderInfoFindPageViewResponse toResponse(Page<AflOrderInfo> page, AflOrderInfoFindPageViewRequest request) {
  123. final AflOrderInfoFindPageViewResponse response = new AflOrderInfoFindPageViewResponse();
  124. response.setCurrentPage(request.getPageNo());
  125. response.setPageSize(request.getPageSize());
  126. response.setPageCount(page.getTotalPages());
  127. response.setTotalCount(page.getTotalElements());
  128. if (CollectionTools.isEmpty(page.getContent())) {
  129. response.setData(Lists.newArrayList());
  130. return response;
  131. }
  132. List<AflOrderInfoVo> formVoList = getAflOrderInfoVos(page.getContent());
  133. response.setData(formVoList);
  134. return response;
  135. }
  136. private Page<AflOrderInfo> selectPage(AflOrderInfoFindPageViewRequest request) throws ServiceHandleException {
  137. if (request.getPageSize() > 100) {
  138. throw UcServiceError.BUSINESS_VALIDATE_ERR.toHandleException("请求每页数量过大 " + request.getPageSize());
  139. }
  140. return aflOrderInfoRepo.findAll(((root, query, cb) -> {
  141. List<Predicate> list = Lists.newArrayList();
  142. getList(list,request,cb,root);
  143. Predicate[] p = new Predicate[list.size()];
  144. return cb.and(list.toArray(p));
  145. }), PageRequest.of(request.getPageNo() - 1, request.getPageSize(),
  146. Sort.by(Sort.Direction.DESC, "createTime")));
  147. }
  148. private List<AflOrderInfoVo> getAflOrderInfoVos(List<AflOrderInfo> aflOrderInfos){
  149. List<AflOrderInfoVo> aflActivationInfoVos = aflOrderInfos.stream().map(this::toVo).collect(Collectors.toList());
  150. return aflActivationInfoVos;
  151. }
  152. private AflOrderInfoVo toVo(AflOrderInfo aflOrderInfo) {
  153. AflOrderInfoVo aflOrderInfoVo = new AflOrderInfoVo();
  154. BeanUtil.copyProperties(aflOrderInfo, aflOrderInfoVo);
  155. if (!StringUtils.isEmpty(aflOrderInfoVo.getMobile())&&aflOrderInfoVo.getMobile().length()==11){
  156. aflOrderInfoVo.setMobile(DesensitizedUtil.mobilePhone(aflOrderInfoVo.getMobile()));
  157. }
  158. if (!StringUtils.isEmpty(aflOrderInfoVo.getIdNum())&&aflOrderInfoVo.getIdNum().length()==18){
  159. aflOrderInfoVo.setIdNum(DesensitizedUtil.idCardNum(aflOrderInfoVo.getIdNum(), 0, 4));
  160. }
  161. aflOrderInfoVo.setPatternOpenId(aflOrderInfo.getOpenId());
  162. return aflOrderInfoVo;
  163. }
  164. private void getList(List list, AflOrderInfoFindPageViewRequest request, CriteriaBuilder cb, Root<AflOrderInfo> root){
  165. if (!StringUtils.isEmpty(request.getPlateNum())) {
  166. list.add(cb.equal(root.<String>get("plateNum"), request.getPlateNum()));
  167. }
  168. if (request.getPlateColor()!=null) {
  169. list.add(cb.equal(root.<Integer>get("plateColor"), request.getPlateColor()));
  170. }
  171. if (!StringUtils.isEmpty(request.getOrderNo())) {
  172. list.add(cb.equal(root.<String>get("orderNo"), request.getOrderNo()));
  173. }
  174. if (!StringUtils.isEmpty(request.getPatternOpenId())) {
  175. list.add(cb.equal(root.<String>get("openId"), request.getPatternOpenId()));
  176. }
  177. if (!StringUtils.isEmpty(request.getIdNum())) {
  178. list.add(cb.equal(root.<String>get("idNum"), request.getIdNum()));
  179. }
  180. if (!StringUtils.isEmpty(request.getVehicleId())) {
  181. list.add(cb.equal(root.<String>get("vehicleId"), request.getVehicleId()));
  182. }
  183. if (request.getIsPay()!=null) {
  184. list.add(cb.equal(root.<Integer>get("isPay"), request.getIsPay()));
  185. }
  186. }
  187. }