LoanServiceImpl.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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.stereotype.Service;
  13. import org.springframework.util.ObjectUtils;
  14. import java.time.LocalDateTime;
  15. import java.time.format.DateTimeFormatter;
  16. import java.util.ArrayList;
  17. import java.util.Collections;
  18. import java.util.List;
  19. import java.util.Map;
  20. @Service
  21. public class LoanServiceImpl implements LoanService {
  22. private final CustomerOtherService customerOtherService;
  23. private final LoanRepository loanRepository;
  24. private final CustomerService customerService;
  25. private final DocumentService documentService;
  26. private final CollateralService collateralService;
  27. private final ContractService contractService;
  28. private final StepService stepService;
  29. private final ContractAndCollateralService contractAndCollateralService;
  30. @Autowired
  31. public LoanServiceImpl(LoanRepository loanRepository, CustomerOtherService customerOtherService,CustomerService customerRepository ,
  32. DocumentService documentService, CollateralService collateralService, ContractService contractService,
  33. StepService stepService, ContractAndCollateralService contractAndCollateralService) {
  34. this.loanRepository = loanRepository;
  35. this.customerOtherService = customerOtherService;
  36. this.customerService = customerRepository;
  37. this.documentService = documentService;
  38. this.collateralService = collateralService;
  39. this.contractService = contractService;
  40. this.stepService = stepService;
  41. this.contractAndCollateralService = contractAndCollateralService;
  42. }
  43. @Override
  44. public List<LoanCaseVO> findLoanCaseByIsComplete(Boolean isComplete, boolean isDelete) {
  45. return BeanUtil.copyToList(loanRepository.findByIsCompleteAndIsDelete(isComplete,isDelete), LoanCaseVO.class);
  46. }
  47. @Override
  48. public LoanCaseVO addLoanCaseByCustomerId(Long customerId) {
  49. LoanCase loanCase = new LoanCase();
  50. loanCase.setCustomerId(customerId);
  51. loanCase.setIsComplete(false);
  52. loanCase.setCreateTime(LocalDateTime.now()
  53. .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
  54. loanCase.setUpdateTime(LocalDateTime.now()
  55. .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
  56. loanCase.setIsDelete(false);
  57. return BeanUtil.copyProperties(loanRepository.save(loanCase), LoanCaseVO.class);
  58. }
  59. @Override
  60. public void updateLoanCaseById(LoanCaseDTO loanCaseDTO, Long caseId) {
  61. LoanCase loanCase = BeanUtil.copyProperties(loanCaseDTO, LoanCase.class);
  62. loanCase.setIsComplete(false);
  63. loanCase.setUpdateTime(LocalDateTime.now()
  64. .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
  65. loanRepository.updateLoanCaseById(loanCase,caseId);
  66. }
  67. @Override
  68. public LoanCaseVO findLoanCaseDetailsById(Long caseId) {
  69. //1.获取业务信息
  70. LoanCase loanCase = loanRepository.findLoanCaseById(caseId, false);
  71. LoanCaseVO loanCaseVO = BeanUtil.copyProperties(loanCase, LoanCaseVO.class);
  72. //2.获取客户信息
  73. loanCaseVO.setCustomer(customerService.findByCustomerIdAndIsDelete(loanCase.getCustomerId(),false));
  74. //3.获取合同信息
  75. List<ContractVO> contracts = contractService.findContractByCaseId(caseId);
  76. loanCaseVO.setContracts(contracts);
  77. //4.获取押品信息
  78. List<CollateralVO> collaterals = collateralService.findByCaseId(caseId);
  79. loanCaseVO.setCollateral(collaterals);
  80. //5.获取合同押品关联信息
  81. List<ContractAndCollateral> contractAndCollaterals = contractAndCollateralService.findContractAndCollateralByCaseId(caseId);
  82. List<Map<Long,List<Long>>> relations = new ArrayList<>();
  83. Map<Long,List<Long>> relation = new java.util.HashMap<>();
  84. List<Long> collateralIds = new ArrayList<>();
  85. for(int i=0 ,j=0; i < contractAndCollaterals.size() && j < contracts.size(); i++) {
  86. if (contractAndCollaterals.get(i).getContractId().equals(contracts.get(j).getId())) {
  87. collateralIds.add(contractAndCollaterals.get(i).getCollateralId());
  88. }else{
  89. relation.put(contracts.get(j).getId(),collateralIds);
  90. relations.add(relation);
  91. j++;
  92. relation = new java.util.HashMap<>();
  93. collateralIds = new ArrayList<>();
  94. i--;
  95. }
  96. }
  97. loanCaseVO.setCollateralAndContract(relations);
  98. //5.获取其它客户信息
  99. List<CustomersOtherVO> customersOtherVOS = customerOtherService.findByCaseId(caseId);
  100. for (int i =0;i< customersOtherVOS.size();i++){
  101. if(i==0)
  102. loanCaseVO.setCustomers1(customersOtherVOS.get(i));
  103. else
  104. loanCaseVO.setCustomers2(customersOtherVOS.get(i));
  105. }
  106. //6.获取附件信息
  107. loanCaseVO.setDocuments(BeanUtil.copyToList(documentService.findByCaseId(caseId), DocumentVO.class));
  108. // //7.获取步骤信息
  109. // loanCaseVO.setSteps(stepService.getStepByCaseId(caseId));
  110. return loanCaseVO;
  111. }
  112. @Override
  113. public LoanCaseVO findLoanCaseByIdAndIsDelete(Long caseId, boolean isDelete) {
  114. return BeanUtil.copyProperties(loanRepository.findLoanCaseById(caseId, isDelete), LoanCaseVO.class);
  115. }
  116. @Override
  117. public void updateUpdatetimeByIdAndIsDeleted(Long id,boolean isDelete){
  118. loanRepository.updateUpdatetimeByIdAndIsDeleted(id,false, LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
  119. }
  120. @Override
  121. public void logic_delete(Long id){
  122. loanRepository.logic_delete(id, true, LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
  123. }
  124. }