选装售后
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.

FssPaccountFinalbillServiceImpl.java 5.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package com.qtzl.alterSales.manager.service;
  2. import cn.com.taiji.common.manager.net.http.ServiceHandleException;
  3. import cn.com.taiji.common.model.dao.Pagination;
  4. import cn.com.taiji.common.pub.BeanTools;
  5. import cn.hutool.core.bean.BeanUtil;
  6. import com.google.common.collect.Lists;
  7. import com.qtzl.alterSales.dao.repo.jpa.primary.FssPaccountFinalbillRepo;
  8. import com.qtzl.alterSales.dao.repo.jpa.second.AflPaccountReceivableBillRepo;
  9. import com.qtzl.alterSales.manager.model.protocol.UcServiceError;
  10. import com.qtzl.alterSales.manager.model.protocol.sales.FssPaccountFinalbillFindCountRequest;
  11. import com.qtzl.alterSales.manager.model.protocol.sales.FssPaccountFinalbillFindCountResponse;
  12. import com.qtzl.alterSales.manager.model.protocol.sales.FssPaccountFinalbillFindPageRequest;
  13. import com.qtzl.alterSales.manager.vo.AflPaccountReceivableBillVo;
  14. import com.qtzl.alterSales.manager.vo.FssPaccountFinalbillVo;
  15. import org.apache.commons.lang3.StringUtils;
  16. import org.slf4j.Logger;
  17. import org.slf4j.LoggerFactory;
  18. import org.springframework.stereotype.Service;
  19. import javax.annotation.Resource;
  20. import javax.persistence.criteria.Predicate;
  21. import java.text.ParseException;
  22. import java.text.SimpleDateFormat;
  23. import java.util.ArrayList;
  24. import java.util.Date;
  25. import java.util.List;
  26. import java.util.stream.Collectors;
  27. /**
  28. * @author zhangxin
  29. */
  30. @Service
  31. public class FssPaccountFinalbillServiceImpl implements FssPaccountFinalbillService{
  32. private static final Logger log = LoggerFactory.getLogger(FssPaccountFinalbillServiceImpl.class);
  33. @Resource
  34. FssPaccountFinalbillRepo fssPaccountFinalbillRepo;
  35. @Resource
  36. AflPaccountReceivableBillRepo aflPaccountReceivableBillRepo;
  37. @Override
  38. public FssPaccountFinalbillFindCountResponse findByNaturalDateCount(FssPaccountFinalbillFindCountRequest request) throws ServiceHandleException {
  39. Pagination pagination = select(request);
  40. return toResponse(pagination);
  41. }
  42. private FssPaccountFinalbillFindCountResponse toResponse(Pagination pagination) {
  43. final FssPaccountFinalbillFindCountResponse response = new FssPaccountFinalbillFindCountResponse();
  44. BeanTools.copyProperties(pagination, response);
  45. if (pagination.getResult()==null||pagination.getResult().size()<1) {
  46. return response;
  47. }
  48. List<FssPaccountFinalbillVo> collect = pagination.getResult(AflPaccountReceivableBillVo.class).stream().map(this::toVo).collect(Collectors.toList());
  49. response.setData(collect);
  50. return response;
  51. }
  52. private Pagination select(FssPaccountFinalbillFindCountRequest request) throws ServiceHandleException {
  53. if (request.getPageSize() > 100) {
  54. throw UcServiceError.BUSINESS_VALIDATE_ERR.toHandleException("请求每页数量过大 " + request.getPageSize());
  55. }
  56. if (!StringUtils.isEmpty(request.getNaturalDate())){
  57. long count = count(request);
  58. if (count<1){
  59. Pagination pagination = new Pagination();
  60. pagination.setPageSize(request.getPageSize());
  61. pagination.setResult(new ArrayList<FssPaccountFinalbillVo>());
  62. return pagination;
  63. }
  64. }
  65. FssPaccountFinalbillFindPageRequest queryRequest = new FssPaccountFinalbillFindPageRequest();
  66. BeanUtil.copyProperties(request, queryRequest);
  67. if (!StringUtils.isEmpty(request.getNaturalDate())){
  68. Integer accountDate = getAccountDate(request.getNaturalDate());
  69. queryRequest.setAccountDate(accountDate);
  70. }
  71. return aflPaccountReceivableBillRepo.page(queryRequest);
  72. }
  73. private long count(FssPaccountFinalbillFindCountRequest request) throws ServiceHandleException {
  74. Integer accountDate = getAccountDate(request.getNaturalDate());
  75. return aflPaccountReceivableBillRepo.count(((root, query, cb) -> {
  76. List<Predicate> list = Lists.newArrayList();
  77. if (accountDate!=null) {
  78. list.add(cb.equal(root.<Integer>get("accountDate"), accountDate));
  79. }
  80. Predicate[] p = new Predicate[list.size()];
  81. return cb.and(list.toArray(p));
  82. }));
  83. }
  84. private FssPaccountFinalbillVo toVo(AflPaccountReceivableBillVo aflPaccountReceivableBillVo) {
  85. FssPaccountFinalbillVo fssPaccountFinalbillVo = new FssPaccountFinalbillVo();
  86. BeanUtil.copyProperties(aflPaccountReceivableBillVo,fssPaccountFinalbillVo);
  87. String payDate = getPayDate(aflPaccountReceivableBillVo.getAccountDate().toString());
  88. log.info("时间类型转换中:"+payDate);
  89. fssPaccountFinalbillVo.setNaturalDate(payDate);
  90. return fssPaccountFinalbillVo;
  91. }
  92. private String getPayDate(String payDate){
  93. log.info("时间类型转换中:"+payDate);
  94. SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
  95. formatter.setLenient(false);
  96. Date newDate=null;
  97. try {
  98. newDate= formatter.parse(payDate);
  99. } catch (ParseException e) {
  100. log.error("时间类型转换失败:"+payDate);
  101. return payDate;
  102. }
  103. formatter = new SimpleDateFormat("yyyy-MM-dd");
  104. String format = formatter.format(newDate);
  105. log.info("时间类型转换成功:"+format);
  106. return format;
  107. }
  108. private Integer getAccountDate(String accountDate){
  109. Integer newAccountDate = null;
  110. try {
  111. String accountDateInt = accountDate.replaceAll("-", "");
  112. newAccountDate = Integer.parseInt(accountDateInt);
  113. } catch (Exception e) {
  114. log.error("数据类型转换失败");
  115. }
  116. return newAccountDate;
  117. }
  118. }