REQ-3581: 下载合同
This commit is contained in:
parent
f6a1937025
commit
d9f155b9fe
@ -16,6 +16,7 @@ import cn.axzo.nanopart.ess.api.request.GetSignUrlRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.RemoveSealAuthorizationRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.RemoveSealPersonRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.RevokeContractRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.SaveContractSnapshotRequest;
|
||||
import cn.axzo.nanopart.ess.api.response.CreateConsoleLoginUrlResponse;
|
||||
import cn.axzo.nanopart.ess.api.response.CreateContractByFileResponse;
|
||||
import cn.axzo.nanopart.ess.api.response.DownloadSingedContractPdfResponse;
|
||||
@ -115,12 +116,19 @@ public interface EssApi {
|
||||
@RequestBody @Valid GetSignUrlRequest request);
|
||||
|
||||
/**
|
||||
* 下载合同PDF. 下载链接有效期为5分钟
|
||||
* 获取合同PDF文件地址. 下载链接有效期为5分钟
|
||||
*/
|
||||
@PostMapping("api/ess/getContractPDFUrl")
|
||||
ApiResult<DownloadSingedContractPdfResponse> getContractPDFUrl(
|
||||
@RequestBody @Valid DownloadSingedContractPdfRequest request);
|
||||
|
||||
/**
|
||||
* 从腾讯电子签下载合同PDF文件
|
||||
*/
|
||||
@PostMapping("api/ess/saveContractSnapshot")
|
||||
ApiResult<Void> saveContractSnapshot(
|
||||
@RequestBody @Valid SaveContractSnapshotRequest request);
|
||||
|
||||
/**
|
||||
* 撤销合同
|
||||
*/
|
||||
|
||||
@ -0,0 +1,20 @@
|
||||
package cn.axzo.nanopart.ess.api.request;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter @Getter
|
||||
public class SaveContractSnapshotRequest {
|
||||
|
||||
/**
|
||||
* 合同id
|
||||
*/
|
||||
@NotBlank(message = "essContractId不能为空")
|
||||
private String essContractId;
|
||||
|
||||
}
|
||||
@ -75,4 +75,12 @@ public class EssContractDao extends ServiceImpl<EssContractMapper, EssContract>
|
||||
.update();
|
||||
}
|
||||
|
||||
public void updateExt(EssContract contract) {
|
||||
if (contract.getRecordExt() == null)
|
||||
return;
|
||||
lambdaUpdate()
|
||||
.eq(EssContract::getId, contract.getId())
|
||||
.set(EssContract::getRecordExt, JSON.toJSONString(contract.getRecordExt()))
|
||||
.update();
|
||||
}
|
||||
}
|
||||
@ -103,6 +103,12 @@ public class EssContract extends BaseEntity<EssContract> {
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private RecordExt recordExt;
|
||||
|
||||
public RecordExt getOrCreateExt() {
|
||||
if (recordExt == null)
|
||||
recordExt = new RecordExt();
|
||||
return recordExt;
|
||||
}
|
||||
|
||||
public Assignment getOrCreateAssignment() {
|
||||
if (assignment == null)
|
||||
assignment = new Assignment();
|
||||
@ -142,6 +148,10 @@ public class EssContract extends BaseEntity<EssContract> {
|
||||
return approvers.stream().allMatch(Approver::isSignPersonPresent);
|
||||
}
|
||||
|
||||
public boolean downloadContract() {
|
||||
return isFinalState() || getOrCreateExt().isDownloadContract();
|
||||
}
|
||||
|
||||
public boolean isFinalState() {
|
||||
return state.isFinalState();
|
||||
}
|
||||
@ -158,6 +168,7 @@ public class EssContract extends BaseEntity<EssContract> {
|
||||
@Setter
|
||||
@Getter
|
||||
public static class RecordExt {
|
||||
private boolean downloadContract;
|
||||
}
|
||||
|
||||
// @formatter:off
|
||||
|
||||
@ -22,7 +22,6 @@ import cn.axzo.nanopart.ess.server.entity.EssSeal;
|
||||
import cn.axzo.nanopart.ess.server.entity.EssSealPerson;
|
||||
import cn.axzo.nanopart.ess.server.ess.domain.OrgAndPerson;
|
||||
import cn.axzo.nanopart.ess.server.ess.domain.SealAndPerson;
|
||||
import cn.axzo.nanopart.ess.server.ess.support.EssProps;
|
||||
import cn.axzo.nanopart.ess.server.ess.support.EssSupport;
|
||||
import cn.axzo.nanopart.ess.server.ess.support.OssService;
|
||||
import cn.axzo.nanopart.ess.server.utils.BizAssertions;
|
||||
@ -32,6 +31,7 @@ import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.support.TransactionTemplate;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
@ -52,10 +52,10 @@ public class EssService {
|
||||
private final EssSealPersonDao essSealPersonDao;
|
||||
private final EssContractDao essContractDao;
|
||||
private final EssPersonDao essPersonDao;
|
||||
private final EssProps essProps;
|
||||
private final OssService ossService;
|
||||
private final EssLogDao essLogDao;
|
||||
private final EssSupport essSupport;
|
||||
private final TransactionTemplate transactionTemplate;
|
||||
|
||||
public String createConsoleLoginUrl(CreateConsoleLoginUrlRequest request) {
|
||||
essLogDao.logRequest("createConsoleLoginUrl", request.getPersonId(), request);
|
||||
@ -158,6 +158,16 @@ public class EssService {
|
||||
return getContractPDFUrlFromEss(contract);
|
||||
}
|
||||
|
||||
public void saveContractSnapshot(String essContractId) {
|
||||
EssContract c = transactionTemplate.execute(unused -> {
|
||||
EssContract contract = essContractDao.getOrThrow(essContractId);
|
||||
contract.getRecordExt().setDownloadContract(true);
|
||||
essContractDao.updateExt(contract);
|
||||
return contract;
|
||||
});
|
||||
maybeUploadContractToOss(c);
|
||||
}
|
||||
|
||||
public String getContractPDFUrlFromEss(EssContract contract) {
|
||||
EssPerson creator = orgManager.getSuperAdminOrThrow(contract.getCreatorOuId());
|
||||
return essClient.getContractPDFUrl(creator, contract.getEssContractId());
|
||||
|
||||
@ -19,6 +19,7 @@ import cn.axzo.nanopart.ess.api.request.GetSignUrlRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.RemoveSealAuthorizationRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.RemoveSealPersonRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.RevokeContractRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.SaveContractSnapshotRequest;
|
||||
import cn.axzo.nanopart.ess.api.response.CreateConsoleLoginUrlResponse;
|
||||
import cn.axzo.nanopart.ess.api.response.CreateContractByFileResponse;
|
||||
import cn.axzo.nanopart.ess.api.response.DownloadSingedContractPdfResponse;
|
||||
@ -125,6 +126,12 @@ class ApiController implements EssApi {
|
||||
return ApiResult.ok(response);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<Void> saveContractSnapshot(SaveContractSnapshotRequest request) {
|
||||
essService.saveContractSnapshot(request.getEssContractId());
|
||||
return ApiResult.ok();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<Void> revokeContract(RevokeContractRequest request) {
|
||||
contractManager.revokeContract(request);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user