package com.ruoyi.wisdomarbitrate.utils; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.ruoyi.common.constant.CaseApplicationConstants; import com.ruoyi.common.constant.FileTransformation; import com.ruoyi.common.core.domain.entity.EsignHttpResponse; import com.ruoyi.common.exception.EsignDemoException; import com.ruoyi.common.utils.SealUtil; import com.ruoyi.common.utils.file.SaaSAPIFileUtils; import com.ruoyi.wisdomarbitrate.domain.*; import com.ruoyi.wisdomarbitrate.mapper.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.io.File; import java.io.IOException; import java.time.LocalDate; import java.util.Date; import java.util.List; import java.util.UUID; @Component public class FixSelectFlowDetailUtils { @Autowired private CaseApplicationMapper caseApplicationMapper; @Autowired private SealSignRecordMapper sealSignRecordMapper; @Autowired private CaseAttachMapper caseAttachMapper; @Autowired private DeptIdentifyMapper deptIdentifyMapper; @Autowired private SealManageMapper sealManageMapper; /* 定时查询签署流程详情 */ //@Scheduled(cron = "0/10 * * * * ?") @Transactional public void fixExecuteSelectFlowDetailUtils() { Gson gson = new Gson(); SealSignRecord sealSignRecordselect = new SealSignRecord(); // sealSignRecordselect.setSignFlowStatus(1); List sealSignRecords = sealSignRecordMapper.selectSealSignRecordbyStat(sealSignRecordselect); try { if (sealSignRecords != null && sealSignRecords.size() > 0) { for (int i = 0; i < sealSignRecords.size(); i++) { SealSignRecord sealSignRecord = sealSignRecords.get(i); EsignHttpResponse signFlowDetail = SignAward.signFlowDetail(sealSignRecord); JsonObject signFlowDetailJsonObject = gson.fromJson(signFlowDetail.getBody(), JsonObject.class); JsonObject flowDetailData = signFlowDetailJsonObject.getAsJsonObject("data"); JsonArray signersArray = flowDetailData.get("signers").getAsJsonArray(); Integer psnsignStatus = null; Integer orgsignStatus = null; for (int j = 0; j < signersArray.size(); j++) { JsonObject signerObject = (JsonObject) signersArray.get(j); if (!(signerObject.get("psnSigner").toString()).equals("null")) { JsonObject psnSignerData = signerObject.getAsJsonObject("psnSigner"); if (psnSignerData != null) { psnsignStatus = signerObject.get("signStatus").getAsInt(); } } if (!(signerObject.get("orgSigner").toString()).equals("null")) { JsonObject orgSignerData = signerObject.getAsJsonObject("orgSigner"); if (orgSignerData != null) { orgsignStatus = signerObject.get("signStatus").getAsInt(); } } } if ((psnsignStatus.intValue() == 2) && (orgsignStatus.intValue() == 1)) { //更新立案申请状态为待用印 CaseApplication caseApplication = new CaseApplication(); caseApplication.setId(sealSignRecord.getCaseAppliId()); CaseApplication caseApplicationselect = caseApplicationMapper.selectCaseApplication(caseApplication); if (caseApplicationselect != null) { if ((caseApplicationselect.getCaseStatus() != null) && (caseApplicationselect.getCaseStatus().intValue() == CaseApplicationConstants.SIGN_ARBITRATION)) { caseApplication.setCaseStatus(CaseApplicationConstants.ARBITRATED_SEAL); caseApplicationMapper.submitCaseApplication(caseApplication); //修改"签署用印记录表"的状态为待用印 sealSignRecord.setSignFlowStatus(2); sealSignRecordMapper.updataSealSignRecord(sealSignRecord); } } } if ((psnsignStatus.intValue() == 2) && (orgsignStatus.intValue() == 2)) { //更新立案申请状态为待送达 CaseApplication caseApplication = new CaseApplication(); caseApplication.setId(sealSignRecord.getCaseAppliId()); CaseApplication caseApplicationselect = caseApplicationMapper.selectCaseApplication(caseApplication); if (caseApplicationselect != null) { if ((caseApplicationselect.getCaseStatus() != null) && (caseApplicationselect.getCaseStatus().intValue() == CaseApplicationConstants.ARBITRATED_SEAL)) { caseApplication.setCaseStatus(CaseApplicationConstants.ARBITRATION_DELIVERY); //下载审核完成的裁决书, String signFlowId = sealSignRecord.getSignFlowid(); EsignHttpResponse fileDownload = SaaSAPIFileUtils.fileDownloadUrl(signFlowId); JsonObject fileDownloadJsonObject = gson.fromJson(fileDownload.getBody(), JsonObject.class); JsonObject fileDownloadData = fileDownloadJsonObject.getAsJsonObject("data"); JsonArray filesArray = fileDownloadData.get("files").getAsJsonArray(); if (filesArray != null && filesArray.size() > 0) { JsonObject fileObject = (JsonObject) filesArray.get(0); String fileDownloadUrl = fileObject.get("downloadUrl").toString(); //修改"签署用印记录表"的状态为签署完成 sealSignRecord.setSignFlowStatus(3); sealSignRecord.setFileDownloadUrl(fileDownloadUrl.substring(1, fileDownloadUrl.length() - 1)); sealSignRecordMapper.updataSealSignRecord(sealSignRecord); String filearbitraUrl = fileDownloadUrl.substring(1, fileDownloadUrl.length() - 1); caseApplication.setFilearbitraUrl(filearbitraUrl); caseApplicationMapper.submitCaseApplication(caseApplication); LocalDate now = LocalDate.now(); String year = Integer.toString(now.getYear()); String month = String.format("%02d", now.getMonthValue()); String day = String.format("%02d", now.getDayOfMonth()); String saveFolderPath = "/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day; String fileName = UUID.randomUUID().toString().replace("-", "") + ".pdf"; String saveName = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName; String savePath = "/home/ruoyi/uploadPath/upload/"; // 创建日期目录 File saveFolder = new File(saveFolderPath); if (!saveFolder.exists()) { saveFolder.mkdirs(); } String resultFilePath = saveFolderPath + "/" + fileName; File resultFilePathFile = new File(resultFilePath); if (!resultFilePathFile.exists()) { resultFilePathFile.createNewFile(); } String fileDownloadUrlnew = fileDownloadUrl.substring(1, fileDownloadUrl.length() - 1); boolean downLoadFile = FileTransformation.downLoadFileByUrl(fileDownloadUrlnew, resultFilePath); if (downLoadFile) { Long caseAppliId = sealSignRecord.getCaseAppliId(); CaseAttach caseAttach = new CaseAttach(); caseAttach.setCaseAppliId(caseAppliId); caseAttach.setAnnexType(3); caseAttach.setAnnexPath(savePath); caseAttach.setAnnexName(saveName); caseAttachMapper.updateCaseAttachBycaseid(caseAttach); } } } } } } } } catch (EsignDemoException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 定时查询企业认证状态 * * @throws Exception */ //@Scheduled(cron = "*/30 * * * * *") @Transactional public void fixExecuteSelectDeptIndentifyUtils() throws Exception { Gson gson = new Gson(); DeptIdentify deptIdentify = new DeptIdentify(); deptIdentify.setIdentifyStatus(0); List deptIdentifysnew = deptIdentifyMapper.selectDeptIdentify(deptIdentify); if (deptIdentifysnew != null && deptIdentifysnew.size() > 0) { for (int i = 0; i < deptIdentifysnew.size(); i++) { DeptIdentify deptIdentify1 = deptIdentifysnew.get(i); String authFlowId = deptIdentify1.getAuthFlowId(); if (authFlowId != null) { EsignHttpResponse identifyInfo = SignAward.getDeptIdentifyInfo(deptIdentify1); JsonObject identifyInfoJsonObject = gson.fromJson(identifyInfo.getBody(), JsonObject.class); int code = identifyInfoJsonObject.get("code").getAsInt(); if (code == 0) { JsonObject identifyInfoData = identifyInfoJsonObject.getAsJsonObject("data"); int realnameStatus = identifyInfoData.get("realnameStatus").getAsInt(); if (realnameStatus == 1) { String orgId = identifyInfoData.get("orgId").getAsString(); //查询企业内部印章 EsignHttpResponse response = SignAward.deptIdentifySealList(orgId); JsonObject jsonObject = gson.fromJson(response.getBody(), JsonObject.class); int code1 = jsonObject.get("code").getAsInt(); if (code1 == 0) { JsonObject data = jsonObject.getAsJsonObject("data"); JsonArray seals = data.get("seals").getAsJsonArray(); if (seals.size() > 0) { for (int j = 0; j < seals.size(); j++) { //保存印章信息到数据库 JsonObject asJsonObject = seals.get(j).getAsJsonObject(); SealManage sealManage = new SealManage(); String sealName = asJsonObject.get("sealName").toString(); String sealId = asJsonObject.get("sealId").toString(); String url = asJsonObject.get("sealImageDownloadUrl").toString(); LocalDate now = LocalDate.now(); String year = Integer.toString(now.getYear()); String month = String.format("%02d", now.getMonthValue()); String day = String.format("%02d", now.getDayOfMonth()); String saveFolderPath = "/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day; String fileName = UUID.randomUUID().toString().replace("-", "") + ".jpg"; String saveName = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName; String savePath = "/home/ruoyi/uploadPath/upload/"; // 创建日期目录 File saveFolder = new File(saveFolderPath); if (!saveFolder.exists()) { saveFolder.mkdirs(); } String resultFilePath = saveFolderPath + "/" + fileName; File resultFilePathFile = new File(resultFilePath); if (!resultFilePathFile.exists()) { resultFilePathFile.createNewFile(); } String fileDownloadUrlnew = url.substring(1, url.length() - 1); boolean downLoadFile = FileTransformation.downLoadFileByUrl(fileDownloadUrlnew, resultFilePath); if (downLoadFile) { CaseAttach caseAttach = new CaseAttach(); caseAttach.setAnnexType(10); //10代表印章图片 caseAttach.setAnnexPath(savePath); caseAttach.setAnnexName(saveName); int i1 = caseAttachMapper.save(caseAttach); if (i1 > 0) { //将印章信息保存到公章管理表里 String sealName1 = sealName.substring(1, sealName.length() - 1); String sealId1 = sealId.substring(1, sealId.length() - 1); Integer annexId1 = caseAttach.getAnnexId(); sealManage.setAnnexId(annexId1); sealManage.setSealId(sealId1); sealManage.setSealName(sealName1); sealManage.setIdentifyId(deptIdentify1.getId()); sealManage.setSealStatus(1); sealManage.setIsUse(1); sealManageMapper.insertSealManage(sealManage); } } } } } //将orgId保存到数据库里 deptIdentify1.setOrgId(orgId); deptIdentify1.setIdentifyStatus(1); deptIdentify1.setIsUse(0); //默认机构为未启用 int row = deptIdentifyMapper.updateDeptIdentify(deptIdentify1); } } } } } } /** * 定时查询印章审核状态 */ @Scheduled(cron = "0/30 * * * * ?") @Transactional public void searchForInstitutionalSeal() { try { SealManage sealManage = new SealManage(); sealManage.setSealStatus(0); List sealManageList = sealManageMapper.selectSealList(sealManage); if (sealManageList != null && sealManageList.size() > 0) { for (SealManage sealManage1 : sealManageList) { //查询企业内部印章 Integer annexId = sealManage1.getAnnexId(); String sealId = sealManage1.getSealId(); DeptIdentify deptIdentify = new DeptIdentify(); deptIdentify.setId(sealManage1.getIdentifyId()); List deptIdentifies = deptIdentifyMapper.selectDeptIdentify(deptIdentify); if (deptIdentifies != null && deptIdentifies.size() > 0) { DeptIdentify deptIdentify1 = deptIdentifies.get(0); String orgId = deptIdentify1.getOrgId(); if (orgId == null) { continue; } if (annexId == null) { //说明之前没有下载过 EsignHttpResponse response = SignAward.getOrgSeal(orgId, sealId); JSONObject jsonObject = JSONObject.parseObject(response.getBody()); int code = jsonObject.getIntValue("code"); if (code == 0) { JSONObject data = jsonObject.getJSONObject("data"); int sealStatus = data.getIntValue("sealStatus"); if (sealStatus == 1) {//印章状态 1已启用,2待审核,3审核不通过,4 挂起 //已启用证明审核通过,下载到数据库 String sealImageDownloadUrl = data.getString("sealImageDownloadUrl"); LocalDate now = LocalDate.now(); String year = Integer.toString(now.getYear()); String month = String.format("%02d", now.getMonthValue()); String day = String.format("%02d", now.getDayOfMonth()); String saveFolderPath = "/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day; String fileName = UUID.randomUUID().toString().replace("-", "") + ".pdf"; String saveName = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName; String savePath = "/home/ruoyi/uploadPath/upload/"; // 创建日期目录 File saveFolder = new File(saveFolderPath); if (!saveFolder.exists()) { saveFolder.mkdirs(); } String resultFilePath = saveFolderPath + "/" + fileName; File resultFilePathFile = new File(resultFilePath); if (!resultFilePathFile.exists()) { resultFilePathFile.createNewFile(); } boolean downLoadFile = FileTransformation.downLoadFileByUrl(sealImageDownloadUrl, resultFilePath); if (downLoadFile) { CaseAttach caseAttach = new CaseAttach(); caseAttach.setAnnexType(10); //10代表印章图片 caseAttach.setAnnexPath(savePath); caseAttach.setAnnexName(saveName); int i1 = caseAttachMapper.save(caseAttach); if (i1 > 0) { //将附件id保存到公章管理表里 Integer annexId1 = caseAttach.getAnnexId(); sealManage1.setAnnexId(annexId1); sealManage1.setSealStatus(1); sealManage1.setIsUse(1); //默认使用状态都是未启用 sealManageMapper.updateSealManage(sealManage1); } } } } } } } } } catch (EsignDemoException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }