package me.zhengjie.application.admin.job; import cfca.trustsign.common.vo.cs.UploadSignInfoVO; import com.xxl.job.core.context.XxlJobHelper; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.RequiredArgsConstructor; import me.zhengjie.base.config.AppConfigInfo; import me.zhengjie.base.util.CFCACertUtil; import me.zhengjie.base.util.FileUploadUtil; import me.zhengjie.base.util.StatusEnum.StepStatusEnum; import me.zhengjie.dao.mybatis.OrderFileRepository; import me.zhengjie.dao.mybatis.OrderRepository; import me.zhengjie.dao.mybatis.entity.*; import me.zhengjie.dao.mybatis.mapper.NotaryOfficeMapper; import me.zhengjie.dao.mybatis.mapper.OrderFileMapper; import me.zhengjie.dao.mybatis.mapper.SysUserMapper; import me.zhengjie.utils.StringUtils; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Component; import java.io.InputStream; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * 生成公证书定时任务 */ @RequiredArgsConstructor @Component public class GenerateNotarizationJob { private final OrderFileRepository orderFileRepository; private final OrderFileMapper orderFileMapper; private final NotaryOfficeMapper notaryOfficeMapper; private final SysUserMapper userDao; private final OrderRepository orderRepository; /** * 生成签名公证书 */ @XxlJob("generateSignedNotarization") public void generateSignedNotarization(){ XxlJobHelper.log("Generate signed notarization beginning ......"); List orderList = orderRepository.canBeAutoSignedOrder(); if (orderList != null && orderList.size() > 0) { List collection = orderList.stream().map(OrderEntity::getBusinessNo).collect(Collectors.toList()); if(CollectionUtils.isNotEmpty(collection)) { List orderFileList = orderFileRepository.canBeSignedNotarization(collection); for (OrderFileEntity orderFile : orderFileList) { try { if(StringUtils.isEmpty(orderFile.getAxqContractNo())) { signNotarization(orderFile); } if(StringUtils.isEmpty(orderFile.getSignedPdfUrl())) { downloadNotarization(orderFile); } }catch (Exception e){ e.printStackTrace(); XxlJobHelper.log(e.getMessage()); } } } } XxlJobHelper.log("Generate signed notarization endding ......"); } /** * 公证书电子签名 * @param orderFile */ private void signNotarization(OrderFileEntity orderFile) throws Exception{ BorrowerEntity borrower = orderRepository.getBorrowerByBizNo(orderFile.getBusinessNo()); SysUserEntity notaryUser = userDao.selectById(borrower.getNotaryUserId()); NotaryOfficeEntity notaryOffice = notaryOfficeMapper.selectById(notaryUser.getOrgId().split("_")[1]); // UploadSignInfoVO notaryUserInfo = new UploadSignInfoVO(); notaryUserInfo.setUserId(notaryUser.getAxqUserId()); notaryUserInfo.setSealId(notaryUser.getAxqSealId()); notaryUserInfo.setLocation("210.74.41.0"); notaryUserInfo.setAuthorizationTime("20220214171200"); UploadSignInfoVO notaryOfficeInfo = new UploadSignInfoVO(); notaryOfficeInfo.setUserId(notaryOffice.getAxqUserId()); notaryOfficeInfo.setSealId(notaryOffice.getAxqSealId()); notaryOfficeInfo.setLocation("210.74.41.1"); notaryOfficeInfo.setAuthorizationTime("20220214171200"); CFCACertUtil.proxySwitchOn = "dev".equals(AppConfigInfo.APP_ENV_TYPE); String path = orderFile.getPdfUrl(); InputStream inputStream = FileUploadUtil.getInputStream(path); String fileName=FileUploadUtil.getFileName(path); String contractNO = CFCACertUtil.uploadSignContract(notaryUserInfo, notaryOfficeInfo, inputStream,fileName); orderFile.setAxqContractNo(contractNO); // 保存合同编号 inputStream.close(); saveNotarizationInfo(contractNO, orderFile.getId()); } /** * 下载公证书 * @param orderFile */ private void downloadNotarization(OrderFileEntity orderFile) throws Exception { String orderType = StepStatusEnum.getType(orderFile.getContractId()); CFCACertUtil.proxySwitchOn = "dev".equals(AppConfigInfo.APP_ENV_TYPE); String uplaodPath = orderFile.getBusinessNo() + "/" + orderType + "/"; String path = uplaodPath + "notary-signed-" + orderFile.getBusinessNo() + "/"; String filePath = CFCACertUtil.download(path, orderFile.getAxqContractNo()); saveAuthNorizationUrlById(filePath, orderFile.getId()); } /** * 记录合同信息 * * @param id */ private void saveNotarizationInfo(String contractNo, int id) { OrderFileEntity saveOrderFile = new OrderFileEntity(); saveOrderFile.setId(id); saveOrderFile.setAxqContractNo(contractNo); saveOrderFile.setAxqSignedTime(new Date()); saveOrderFile.setUpdateTime(new Date()); saveOrderFile.setUpdaterId(777l); orderFileMapper.updateById(saveOrderFile); } /** * 保存签名文件URL * * @param fileUrl * @param id */ private void saveAuthNorizationUrlById(String fileUrl, int id) { OrderFileEntity saveOrderFile = new OrderFileEntity(); saveOrderFile.setId(id); saveOrderFile.setSignedPdfUrl(fileUrl); saveOrderFile.setUpdaterId(777l); saveOrderFile.setUpdateTime(new Date()); orderFileMapper.updateById(saveOrderFile); } }