LoanServiceImpl.java 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. package com.loan.system.service.Impl;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import com.loan.system.domain.dto.CustomersOtherDTO;
  4. import com.loan.system.domain.dto.LoanCaseDTO;
  5. import com.loan.system.domain.entity.*;
  6. import com.loan.system.domain.vo.*;
  7. import com.loan.system.repository.CustomerOtherRepository;
  8. import com.loan.system.repository.CustomerRepository;
  9. import com.loan.system.repository.LoanRepository;
  10. import com.loan.system.service.*;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.data.domain.Page;
  13. import org.springframework.data.domain.PageRequest;
  14. import org.springframework.data.domain.Pageable;
  15. import org.springframework.stereotype.Service;
  16. import org.springframework.util.ObjectUtils;
  17. import java.time.LocalDateTime;
  18. import java.time.format.DateTimeFormatter;
  19. import java.util.ArrayList;
  20. import java.util.Collections;
  21. import java.util.List;
  22. import java.util.Map;
  23. @Service
  24. public class LoanServiceImpl implements LoanService {
  25. private final CustomerOtherService customerOtherService;
  26. private final LoanRepository loanRepository;
  27. private final CustomerService customerService;
  28. private final DocumentService documentService;
  29. private final CollateralService collateralService;
  30. private final ContractService contractService;
  31. private final StepService stepService;
  32. private final ContractAndCollateralService contractAndCollateralService;
  33. private final RecommenderService recommender;
  34. @Autowired
  35. public LoanServiceImpl(LoanRepository loanRepository, CustomerOtherService customerOtherService,CustomerService customerRepository ,
  36. DocumentService documentService, CollateralService collateralService, ContractService contractService,
  37. StepService stepService, ContractAndCollateralService contractAndCollateralService, RecommenderService recommender) {
  38. this.loanRepository = loanRepository;
  39. this.customerOtherService = customerOtherService;
  40. this.customerService = customerRepository;
  41. this.documentService = documentService;
  42. this.collateralService = collateralService;
  43. this.contractService = contractService;
  44. this.stepService = stepService;
  45. this.contractAndCollateralService = contractAndCollateralService;
  46. this.recommender = recommender;
  47. }
  48. @Override
  49. public List<LoanCaseVO> findLoanCaseByIsComplete(Integer pageNum,Integer pageSize,Boolean isComplete, boolean isDelete) {
  50. Pageable pageable = PageRequest.of(pageNum, pageSize);
  51. Page<LoanCase> loanCases = loanRepository.findByIsCompleteAndIsDelete(isComplete, isDelete,pageable);
  52. List<LoanCaseVO> loanCaseVO = new ArrayList<>();
  53. for (LoanCase loanCase1 : loanCases.getContent()) {
  54. Long customerId = loanCase1.getCustomerId();
  55. CustomerVO customer = customerService.findByCustomerIdAndIsDelete(customerId,false);
  56. LoanCaseVO loanCaseVO1 = BeanUtil.copyProperties(loanCase1, LoanCaseVO.class);
  57. loanCaseVO1.setCustomer(customer);
  58. loanCaseVO.add(loanCaseVO1);
  59. }
  60. return loanCaseVO;
  61. }
  62. @Override
  63. public LoanCaseVO addLoanCaseByCustomerId(Long customerId) {
  64. LoanCase loanCase = new LoanCase();
  65. loanCase.setCustomerId(customerId);
  66. loanCase.setIsComplete(false);
  67. loanCase.setCreateTime(LocalDateTime.now()
  68. .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
  69. loanCase.setUpdateTime(LocalDateTime.now()
  70. .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
  71. loanCase.setIsDelete(false);
  72. return BeanUtil.copyProperties(loanRepository.save(loanCase), LoanCaseVO.class);
  73. }
  74. @Override
  75. public void updateLoanCaseById(LoanCaseDTO loanCaseDTO, Long caseId) {
  76. LoanCase loanCase = BeanUtil.copyProperties(loanCaseDTO, LoanCase.class);
  77. loanCase.setIsComplete(false);
  78. loanCase.setUpdateTime(LocalDateTime.now()
  79. .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
  80. loanRepository.updateLoanCaseById(loanCase,caseId);
  81. }
  82. @Override
  83. public LoanCaseVO findLoanCaseDetailsById(Long caseId) {
  84. //1.获取业务信息
  85. LoanCase loanCase = loanRepository.findLoanCaseById(caseId, false);
  86. LoanCaseVO loanCaseVO = BeanUtil.copyProperties(loanCase, LoanCaseVO.class);
  87. //2.获取客户信息
  88. loanCaseVO.setCustomer(customerService.findByCustomerIdAndIsDelete(loanCase.getCustomerId(),false));
  89. //3.获取合同信息
  90. List<ContractVO> contracts = contractService.findContractByCaseId(caseId);
  91. loanCaseVO.setContracts(contracts);
  92. //4.获取押品信息
  93. List<CollateralVO> collaterals = collateralService.findByCaseId(caseId);
  94. loanCaseVO.setCollateral(collaterals);
  95. //5.获取合同押品关联信息
  96. List<ContractAndCollateral> contractAndCollaterals = contractAndCollateralService.findContractAndCollateralByCaseId(caseId);
  97. List<Map<Long,List<Long>>> relations = new ArrayList<>();
  98. Map<Long,List<Long>> relation = new java.util.HashMap<>();
  99. List<Long> collateralIds = new ArrayList<>();
  100. int j=0;
  101. for(int i=0; i < contractAndCollaterals.size() && j < contracts.size(); i++) {
  102. if (contractAndCollaterals.get(i).getContractId().equals(contracts.get(j).getId())) {
  103. collateralIds.add(contractAndCollaterals.get(i).getCollateralId());
  104. }else {
  105. relation.put(contracts.get(j).getId(),collateralIds);
  106. relations.add(relation);
  107. j++;
  108. relation = new java.util.HashMap<>();
  109. collateralIds = new ArrayList<>();
  110. i--;
  111. loanCaseVO.setCollateralAndContract(relations);
  112. }
  113. }
  114. if(j < contracts.size()){
  115. relation.put(contracts.get(j).getId(),collateralIds);
  116. relations.add(relation);
  117. loanCaseVO.setCollateralAndContract(relations);
  118. }
  119. //5.获取其它客户信息
  120. List<CustomersOtherVO> customersOtherVOS = customerOtherService.findByCaseId(caseId);
  121. for (int i =0;i< customersOtherVOS.size();i++){
  122. if(i==0)
  123. loanCaseVO.setCustomers1(customersOtherVOS.get(i));
  124. else
  125. loanCaseVO.setCustomers2(customersOtherVOS.get(i));
  126. }
  127. //6.获取附件信息
  128. loanCaseVO.setDocuments(BeanUtil.copyToList(documentService.findByCaseId(caseId), DocumentVO.class));
  129. // //7.获取步骤信息
  130. // loanCaseVO.setSteps(stepService.getStepByCaseId(caseId));
  131. //7.获取推荐人
  132. loanCaseVO.setRecommender(BeanUtil.copyProperties(recommender.getRecommenderById(loanCase.getRecommenderId()), BizRecommenderVO.class));
  133. return loanCaseVO;
  134. }
  135. @Override
  136. public LoanCaseVO findLoanCaseByIdAndIsDelete(Long caseId, boolean isDelete) {
  137. return BeanUtil.copyProperties(loanRepository.findLoanCaseById(caseId, isDelete), LoanCaseVO.class);
  138. }
  139. @Override
  140. public void updateUpdatetimeByIdAndIsDeleted(Long id,boolean isDelete){
  141. loanRepository.updateUpdatetimeByIdAndIsDeleted(id,false, LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
  142. }
  143. @Override
  144. public void logic_delete(Long id){
  145. loanRepository.logic_delete(id, true, LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
  146. }
  147. @Override
  148. public LoanCaseSimpleVO findLoanCaseSimpleByIdAndIsDelete(Long caseId, boolean isDelete) {
  149. return BeanUtil.copyProperties(loanRepository.findLoanCaseById(caseId, isDelete),LoanCaseSimpleVO.class);
  150. }
  151. @Override
  152. public Boolean existsByIdAndIsDelete(Long caseId) {
  153. return loanRepository.existsByIdAndIsDelete(caseId, false);
  154. }
  155. }