GenerateNotarizationJob.java 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. package me.zhengjie.application.admin.job;
  2. import cfca.trustsign.common.vo.cs.UploadSignInfoVO;
  3. import com.xxl.job.core.context.XxlJobHelper;
  4. import com.xxl.job.core.handler.annotation.XxlJob;
  5. import lombok.RequiredArgsConstructor;
  6. import me.zhengjie.base.config.AppConfigInfo;
  7. import me.zhengjie.base.util.CFCACertUtil;
  8. import me.zhengjie.base.util.FileUploadUtil;
  9. import me.zhengjie.base.util.StatusEnum.StepStatusEnum;
  10. import me.zhengjie.dao.mybatis.OrderFileRepository;
  11. import me.zhengjie.dao.mybatis.OrderRepository;
  12. import me.zhengjie.dao.mybatis.entity.*;
  13. import me.zhengjie.dao.mybatis.mapper.NotaryOfficeMapper;
  14. import me.zhengjie.dao.mybatis.mapper.OrderFileMapper;
  15. import me.zhengjie.dao.mybatis.mapper.SysUserMapper;
  16. import me.zhengjie.utils.StringUtils;
  17. import org.apache.commons.collections.CollectionUtils;
  18. import org.springframework.stereotype.Component;
  19. import java.io.InputStream;
  20. import java.util.Date;
  21. import java.util.List;
  22. import java.util.stream.Collectors;
  23. /**
  24. * 生成公证书定时任务
  25. */
  26. @RequiredArgsConstructor
  27. @Component
  28. public class GenerateNotarizationJob {
  29. private final OrderFileRepository orderFileRepository;
  30. private final OrderFileMapper orderFileMapper;
  31. private final NotaryOfficeMapper notaryOfficeMapper;
  32. private final SysUserMapper userDao;
  33. private final OrderRepository orderRepository;
  34. /**
  35. * 生成签名公证书
  36. */
  37. @XxlJob("generateSignedNotarization")
  38. public void generateSignedNotarization(){
  39. XxlJobHelper.log("Generate signed notarization beginning ......");
  40. List<OrderEntity> orderList = orderRepository.canBeAutoSignedOrder();
  41. if (orderList != null && orderList.size() > 0) {
  42. List<String> collection = orderList.stream().map(OrderEntity::getBusinessNo).collect(Collectors.toList());
  43. if(CollectionUtils.isNotEmpty(collection)) {
  44. List<OrderFileEntity> orderFileList = orderFileRepository.canBeSignedNotarization(collection);
  45. for (OrderFileEntity orderFile : orderFileList) {
  46. try {
  47. if(StringUtils.isEmpty(orderFile.getAxqContractNo())) {
  48. signNotarization(orderFile);
  49. }
  50. if(StringUtils.isEmpty(orderFile.getSignedPdfUrl())) {
  51. downloadNotarization(orderFile);
  52. }
  53. }catch (Exception e){
  54. e.printStackTrace();
  55. XxlJobHelper.log(e.getMessage());
  56. }
  57. }
  58. }
  59. }
  60. XxlJobHelper.log("Generate signed notarization endding ......");
  61. }
  62. /**
  63. * 公证书电子签名
  64. * @param orderFile
  65. */
  66. private void signNotarization(OrderFileEntity orderFile) throws Exception{
  67. BorrowerEntity borrower = orderRepository.getBorrowerByBizNo(orderFile.getBusinessNo());
  68. SysUserEntity notaryUser = userDao.selectById(borrower.getNotaryUserId());
  69. NotaryOfficeEntity notaryOffice = notaryOfficeMapper.selectById(notaryUser.getOrgId().split("_")[1]);
  70. //
  71. UploadSignInfoVO notaryUserInfo = new UploadSignInfoVO();
  72. notaryUserInfo.setUserId(notaryUser.getAxqUserId());
  73. notaryUserInfo.setSealId(notaryUser.getAxqSealId());
  74. notaryUserInfo.setLocation("210.74.41.0");
  75. notaryUserInfo.setAuthorizationTime("20220214171200");
  76. UploadSignInfoVO notaryOfficeInfo = new UploadSignInfoVO();
  77. notaryOfficeInfo.setUserId(notaryOffice.getAxqUserId());
  78. notaryOfficeInfo.setSealId(notaryOffice.getAxqSealId());
  79. notaryOfficeInfo.setLocation("210.74.41.1");
  80. notaryOfficeInfo.setAuthorizationTime("20220214171200");
  81. CFCACertUtil.proxySwitchOn = "dev".equals(AppConfigInfo.APP_ENV_TYPE);
  82. String path = orderFile.getPdfUrl();
  83. InputStream inputStream = FileUploadUtil.getInputStream(path);
  84. String fileName=FileUploadUtil.getFileName(path);
  85. String contractNO = CFCACertUtil.uploadSignContract(notaryUserInfo, notaryOfficeInfo, inputStream,fileName);
  86. orderFile.setAxqContractNo(contractNO);
  87. // 保存合同编号
  88. inputStream.close();
  89. saveNotarizationInfo(contractNO, orderFile.getId());
  90. }
  91. /**
  92. * 下载公证书
  93. * @param orderFile
  94. */
  95. private void downloadNotarization(OrderFileEntity orderFile) throws Exception {
  96. String orderType = StepStatusEnum.getType(orderFile.getContractId());
  97. CFCACertUtil.proxySwitchOn = "dev".equals(AppConfigInfo.APP_ENV_TYPE);
  98. String uplaodPath = orderFile.getBusinessNo() + "/" + orderType + "/";
  99. String path = uplaodPath + "notary-signed-" + orderFile.getBusinessNo() + "/";
  100. String filePath = CFCACertUtil.download(path, orderFile.getAxqContractNo());
  101. saveAuthNorizationUrlById(filePath, orderFile.getId());
  102. }
  103. /**
  104. * 记录合同信息
  105. *
  106. * @param id
  107. */
  108. private void saveNotarizationInfo(String contractNo, int id) {
  109. OrderFileEntity saveOrderFile = new OrderFileEntity();
  110. saveOrderFile.setId(id);
  111. saveOrderFile.setAxqContractNo(contractNo);
  112. saveOrderFile.setAxqSignedTime(new Date());
  113. saveOrderFile.setUpdateTime(new Date());
  114. saveOrderFile.setUpdaterId(777l);
  115. orderFileMapper.updateById(saveOrderFile);
  116. }
  117. /**
  118. * 保存签名文件URL
  119. *
  120. * @param fileUrl
  121. * @param id
  122. */
  123. private void saveAuthNorizationUrlById(String fileUrl, int id) {
  124. OrderFileEntity saveOrderFile = new OrderFileEntity();
  125. saveOrderFile.setId(id);
  126. saveOrderFile.setSignedPdfUrl(fileUrl);
  127. saveOrderFile.setUpdaterId(777l);
  128. saveOrderFile.setUpdateTime(new Date());
  129. orderFileMapper.updateById(saveOrderFile);
  130. }
  131. }