Files
Arbitrate-Backend/ruoyi-system/src/main/java/com/ruoyi/wisdomarbitrate/utils/FixSelectFlowDetailUtils.java
T

289 lines
16 KiB
Java
Raw Normal View History

2023-10-12 17:20:40 +08:00
package com.ruoyi.wisdomarbitrate.utils;
2023-11-09 17:34:12 +08:00
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
2023-10-12 17:20:40 +08:00
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.ruoyi.common.constant.CaseApplicationConstants;
2023-10-15 10:16:48 +08:00
import com.ruoyi.common.constant.FileTransformation;
2023-10-12 17:20:40 +08:00
import com.ruoyi.common.core.domain.entity.EsignHttpResponse;
import com.ruoyi.common.exception.EsignDemoException;
2023-11-08 17:47:59 +08:00
import com.ruoyi.common.utils.SealUtil;
2023-10-13 14:05:12 +08:00
import com.ruoyi.common.utils.file.SaaSAPIFileUtils;
2023-10-12 17:20:40 +08:00
import com.ruoyi.wisdomarbitrate.domain.CaseApplication;
2023-10-15 10:16:48 +08:00
import com.ruoyi.wisdomarbitrate.domain.CaseAttach;
2023-10-30 20:06:38 +08:00
import com.ruoyi.wisdomarbitrate.domain.DeptIdentify;
2023-10-13 10:57:45 +08:00
import com.ruoyi.wisdomarbitrate.domain.SealSignRecord;
2023-10-12 17:20:40 +08:00
import com.ruoyi.wisdomarbitrate.mapper.CaseApplicationMapper;
2023-10-15 10:16:48 +08:00
import com.ruoyi.wisdomarbitrate.mapper.CaseAttachMapper;
2023-10-30 20:06:38 +08:00
import com.ruoyi.wisdomarbitrate.mapper.DeptIdentifyMapper;
2023-10-13 10:57:45 +08:00
import com.ruoyi.wisdomarbitrate.mapper.SealSignRecordMapper;
2023-10-12 17:20:40 +08:00
import org.springframework.beans.factory.annotation.Autowired;
2023-10-13 10:57:45 +08:00
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
2023-10-15 15:53:37 +08:00
import org.springframework.transaction.annotation.Transactional;
2023-10-12 17:20:40 +08:00
2023-11-04 18:32:21 +08:00
import java.io.File;
import java.io.IOException;
2023-10-15 10:16:48 +08:00
import java.time.LocalDate;
2023-10-13 10:57:45 +08:00
import java.util.List;
2023-10-15 10:16:48 +08:00
import java.util.UUID;
2023-10-13 10:57:45 +08:00
@Component
2023-10-12 17:20:40 +08:00
public class FixSelectFlowDetailUtils {
@Autowired
private CaseApplicationMapper caseApplicationMapper;
2023-10-13 10:57:45 +08:00
@Autowired
private SealSignRecordMapper sealSignRecordMapper;
2023-10-15 10:16:48 +08:00
@Autowired
private CaseAttachMapper caseAttachMapper;
2023-10-30 20:06:38 +08:00
@Autowired
private DeptIdentifyMapper deptIdentifyMapper;
2023-10-12 17:20:40 +08:00
2023-11-03 17:02:23 +08:00
@Scheduled(cron = "0/10 * * * * ?")
2023-10-15 15:53:37 +08:00
@Transactional
2023-11-09 17:34:12 +08:00
public void fixExecuteSelectFlowDetailUtils() {
2023-10-12 17:20:40 +08:00
Gson gson = new Gson();
2023-10-13 10:57:45 +08:00
SealSignRecord sealSignRecordselect = new SealSignRecord();
2023-11-03 20:05:12 +08:00
// sealSignRecordselect.setSignFlowStatus(1);
2023-10-13 10:57:45 +08:00
List<SealSignRecord> sealSignRecords = sealSignRecordMapper.selectSealSignRecordbyStat(sealSignRecordselect);
2023-10-12 17:20:40 +08:00
2023-11-03 17:02:23 +08:00
try {
2023-11-09 17:34:12 +08:00
if (sealSignRecords != null && sealSignRecords.size() > 0) {
2023-11-03 17:02:23 +08:00
for (int i = 0; i < sealSignRecords.size(); i++) {
SealSignRecord sealSignRecord = sealSignRecords.get(i);
EsignHttpResponse signFlowDetail = SignAward.signFlowDetail(sealSignRecord);
2023-11-09 17:34:12 +08:00
JsonObject signFlowDetailJsonObject = gson.fromJson(signFlowDetail.getBody(), JsonObject.class);
2023-11-03 17:02:23 +08:00
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++) {
2023-11-09 17:34:12 +08:00
JsonObject signerObject = (JsonObject) signersArray.get(j);
2023-11-02 11:08:45 +08:00
2023-11-09 17:34:12 +08:00
if (!(signerObject.get("psnSigner").toString()).equals("null")) {
2023-11-03 17:02:23 +08:00
JsonObject psnSignerData = signerObject.getAsJsonObject("psnSigner");
2023-11-09 17:34:12 +08:00
if (psnSignerData != null) {
2023-11-03 17:02:23 +08:00
psnsignStatus = signerObject.get("signStatus").getAsInt();
}
}
2023-11-09 17:34:12 +08:00
if (!(signerObject.get("orgSigner").toString()).equals("null")) {
2023-11-03 17:02:23 +08:00
JsonObject orgSignerData = signerObject.getAsJsonObject("orgSigner");
2023-11-09 17:34:12 +08:00
if (orgSignerData != null) {
2023-11-03 17:02:23 +08:00
orgsignStatus = signerObject.get("signStatus").getAsInt();
2023-11-01 14:15:21 +08:00
}
2023-10-13 14:05:12 +08:00
}
2023-11-01 13:59:47 +08:00
2023-11-03 17:02:23 +08:00
}
2023-11-09 17:34:12 +08:00
if ((psnsignStatus.intValue() == 2) && (orgsignStatus.intValue() == 1)) {
2023-11-03 17:02:23 +08:00
//更新立案申请状态为待用印
CaseApplication caseApplication = new CaseApplication();
caseApplication.setId(sealSignRecord.getCaseAppliId());
CaseApplication caseApplicationselect = caseApplicationMapper.selectCaseApplication(caseApplication);
2023-11-09 17:34:12 +08:00
if (caseApplicationselect != null) {
if ((caseApplicationselect.getCaseStatus() != null) && (caseApplicationselect.getCaseStatus().intValue() == CaseApplicationConstants.SIGN_ARBITRATION)) {
2023-11-03 17:02:23 +08:00
caseApplication.setCaseStatus(CaseApplicationConstants.ARBITRATED_SEAL);
caseApplicationMapper.submitCaseApplication(caseApplication);
//修改"签署用印记录表"的状态为待用印
sealSignRecord.setSignFlowStatus(2);
sealSignRecordMapper.updataSealSignRecord(sealSignRecord);
}
}
}
2023-11-09 17:34:12 +08:00
if ((psnsignStatus.intValue() == 2) && (orgsignStatus.intValue() == 2)) {
2023-11-03 17:02:23 +08:00
//更新立案申请状态为待送达
CaseApplication caseApplication = new CaseApplication();
caseApplication.setId(sealSignRecord.getCaseAppliId());
CaseApplication caseApplicationselect = caseApplicationMapper.selectCaseApplication(caseApplication);
2023-11-09 17:34:12 +08:00
if (caseApplicationselect != null) {
if ((caseApplicationselect.getCaseStatus() != null) && (caseApplicationselect.getCaseStatus().intValue() == CaseApplicationConstants.ARBITRATED_SEAL)) {
2023-11-03 17:02:23 +08:00
caseApplication.setCaseStatus(CaseApplicationConstants.ARBITRATION_DELIVERY);
//下载审核完成的裁决书,
String signFlowId = sealSignRecord.getSignFlowid();
EsignHttpResponse fileDownload = SaaSAPIFileUtils.fileDownloadUrl(signFlowId);
2023-11-09 17:34:12 +08:00
JsonObject fileDownloadJsonObject = gson.fromJson(fileDownload.getBody(), JsonObject.class);
2023-11-03 17:02:23 +08:00
JsonObject fileDownloadData = fileDownloadJsonObject.getAsJsonObject("data");
JsonArray filesArray = fileDownloadData.get("files").getAsJsonArray();
2023-11-09 17:34:12 +08:00
if (filesArray != null && filesArray.size() > 0) {
JsonObject fileObject = (JsonObject) filesArray.get(0);
2023-11-03 17:02:23 +08:00
String fileDownloadUrl = fileObject.get("downloadUrl").toString();
//修改"签署用印记录表"的状态为签署完成
sealSignRecord.setSignFlowStatus(3);
2023-11-09 17:34:12 +08:00
sealSignRecord.setFileDownloadUrl(fileDownloadUrl.substring(1, fileDownloadUrl.length() - 1));
2023-11-03 17:02:23 +08:00
sealSignRecordMapper.updataSealSignRecord(sealSignRecord);
2023-11-09 17:34:12 +08:00
String filearbitraUrl = fileDownloadUrl.substring(1, fileDownloadUrl.length() - 1);
2023-11-03 17:02:23 +08:00
caseApplication.setFilearbitraUrl(filearbitraUrl);
caseApplicationMapper.submitCaseApplication(caseApplication);
2023-11-04 18:32:21 +08:00
LocalDate now = LocalDate.now();
2023-11-03 17:02:23 +08:00
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;
2023-11-04 18:32:21 +08:00
String savePath = "/home/ruoyi/uploadPath/upload/";
// 创建日期目录
File saveFolder = new File(saveFolderPath);
if (!saveFolder.exists()) {
saveFolder.mkdirs();
}
2023-11-03 17:02:23 +08:00
String resultFilePath = saveFolderPath + "/" + fileName;
2023-11-09 17:34:12 +08:00
File resultFilePathFile = new File(resultFilePath);
2023-11-04 18:32:21 +08:00
if (!resultFilePathFile.exists()) {
resultFilePathFile.createNewFile();
}
2023-11-09 17:34:12 +08:00
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);
}
2023-11-03 17:02:23 +08:00
}
}
}
}
2023-10-13 10:57:45 +08:00
}
2023-11-03 17:02:23 +08:00
2023-10-12 17:20:40 +08:00
}
2023-11-03 17:02:23 +08:00
} catch (EsignDemoException e) {
e.printStackTrace();
2023-11-09 17:34:12 +08:00
} catch (IOException e) {
2023-11-04 18:32:21 +08:00
e.printStackTrace();
2023-10-12 17:20:40 +08:00
}
}
2023-11-03 17:02:23 +08:00
@Scheduled(cron = "0/30 * * * * ?")
2023-10-30 20:06:38 +08:00
@Transactional
public void fixExecuteSelectDeptIndentifyUtils() throws EsignDemoException {
Gson gson = new Gson();
DeptIdentify deptIdentify = new DeptIdentify();
deptIdentify.setIdentifyStatus(0);
List<DeptIdentify> deptIdentifysnew = deptIdentifyMapper.selectDeptIdentifylist(deptIdentify);
2023-11-09 17:34:12 +08:00
if (deptIdentifysnew != null && deptIdentifysnew.size() > 0) {
2023-10-30 20:06:38 +08:00
for (int i = 0; i < deptIdentifysnew.size(); i++) {
EsignHttpResponse identifyInfo = SignAward.getDeptIdentifyInfo(deptIdentifysnew.get(i));
JsonObject identifyInfoJsonObject = gson.fromJson(identifyInfo.getBody(), JsonObject.class);
JsonObject identifyInfoData = identifyInfoJsonObject.getAsJsonObject("data");
int realnameStatus = identifyInfoData.get("realnameStatus").getAsInt();
2023-11-09 17:34:12 +08:00
if (realnameStatus == 1) {
2023-11-08 17:47:59 +08:00
String orgId = identifyInfoData.get("orgId").getAsString();
2023-10-30 20:06:38 +08:00
EsignHttpResponse identifyInfo1 = SignAward.deptIdentifySealList(orgId);
2023-11-08 17:47:59 +08:00
//将orgId保存到数据库里
DeptIdentify deptIdentifynew = deptIdentifysnew.get(i);
deptIdentifynew.setOrgId(orgId);
2023-10-30 20:06:38 +08:00
JsonObject identifyInfoJsonObject1 = gson.fromJson(identifyInfo1.getBody(), JsonObject.class);
JsonObject identifyInfoData1 = identifyInfoJsonObject1.getAsJsonObject("data");
JsonArray sealArray = identifyInfoData1.get("seals").getAsJsonArray();
String sealNames = "";
2023-11-09 17:34:12 +08:00
if (sealArray.size() > 0) {
2023-10-30 20:06:38 +08:00
for (int j = 0; j < sealArray.size(); j++) {
2023-11-09 17:34:12 +08:00
JsonObject sealObject = (JsonObject) sealArray.get(j);
2023-10-30 20:06:38 +08:00
String sealName = sealObject.get("sealName").toString();
2023-11-09 17:34:12 +08:00
String sealNamenew = sealName.substring(1, sealName.length() - 1);
sealNames += sealNamenew + ",";
2023-10-30 20:06:38 +08:00
}
}
2023-11-09 17:34:12 +08:00
String sealName = sealNames.substring(0, sealNames.length() - 1);
2023-10-30 20:06:38 +08:00
deptIdentifynew.setIdentifyStatus(1);
deptIdentifynew.setSealName(sealName);
int row = deptIdentifyMapper.updateDeptIdentify(deptIdentifynew);
}
}
}
}
2023-11-09 17:34:12 +08:00
/**
* 定时查询企业内部印章审核状态
*
* @throws EsignDemoException
*/
@Scheduled(cron = "0/30 * * * * ?")
@Transactional
public void searchForInstitutionalSeal() {
try {
DeptIdentify deptIdentify = new DeptIdentify();
deptIdentify.setIsUse(0);
List<DeptIdentify> deptIdentifies = deptIdentifyMapper.selectDeptIdentifylist(deptIdentify);
if (deptIdentifies != null && deptIdentifies.size() > 0) {
for (DeptIdentify identify : deptIdentifies) {
//查询企业内部印章
Integer annexId = identify.getAnnexId();
if (annexId == null){
//说明之前没有下载过
EsignHttpResponse response = SignAward.orgOwnSealList(identify);
JSONObject jsonObject = JSONObject.parseObject(response.getBody());
JSONObject data = jsonObject.getJSONObject("data");
JSONArray seals = data.getJSONArray("seals");
for (int i = 0; i < seals.size(); i++){
JSONObject seal = seals.getJSONObject(i);
int statusDescription = seal.getIntValue("statusDescription");
if (statusDescription==1){//印章状态 1已启用,2待审核,3审核不通过,4 挂起
//已启用证明审核通过,下载到数据库
String sealImageDownloadUrl = seal.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);
caseAttach.setSealStatus(1); //1代表印章启用
int i1 = caseAttachMapper.save(caseAttach);
if (i1>0){
//将附件id保存到公章管理表里
Integer annexId1 = caseAttach.getAnnexId();
identify.setAnnexId(annexId1);
deptIdentifyMapper.updateDeptIdentify(identify);
}
}
}
}
}
}
}
} catch (EsignDemoException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
2023-10-12 17:20:40 +08:00
}
2023-11-09 17:34:12 +08:00