REQ-3581: 备份
This commit is contained in:
parent
e1015bebc2
commit
ea9fde568e
@ -7,6 +7,7 @@ import cn.axzo.nanopart.ess.api.request.AddSealPersonsRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.CreateConsoleLoginUrlRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.CreateContractRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.DownloadSingedContractPdfRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.GetContractDetailRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.GetContractSignUrlRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.GetEmbedWebUrlRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.GetPersonAuthStateRequest;
|
||||
@ -18,6 +19,7 @@ import cn.axzo.nanopart.ess.api.request.RevokeContractRequest;
|
||||
import cn.axzo.nanopart.ess.api.response.CreateConsoleLoginUrlResponse;
|
||||
import cn.axzo.nanopart.ess.api.response.CreateContractResponse;
|
||||
import cn.axzo.nanopart.ess.api.response.DownloadSingedContractPdfResponse;
|
||||
import cn.axzo.nanopart.ess.api.response.GetContractDetailResponse;
|
||||
import cn.axzo.nanopart.ess.api.response.GetContractSignUrlResponse;
|
||||
import cn.axzo.nanopart.ess.api.response.GetEmbedWebUrlResponse;
|
||||
import cn.axzo.nanopart.ess.api.response.GetPersonAuthStateResponse;
|
||||
@ -126,4 +128,11 @@ public interface EssApi {
|
||||
ApiResult<Void> revokeContract(
|
||||
@RequestBody @Valid RevokeContractRequest request);
|
||||
|
||||
/**
|
||||
* 获取合同详情
|
||||
*/
|
||||
@PostMapping("api/ess/getContractDetail")
|
||||
ApiResult<GetContractDetailResponse> getContractDetail(
|
||||
@RequestBody @Valid GetContractDetailRequest request);
|
||||
|
||||
}
|
||||
@ -0,0 +1,20 @@
|
||||
package cn.axzo.nanopart.ess.api.domain;
|
||||
|
||||
import cn.axzo.nanopart.ess.api.enums.EssContractApproveState;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class EssApproverDetail {
|
||||
private Long ouId;
|
||||
private Long personId;
|
||||
private EssContractApproveState state;
|
||||
private long signOrder;
|
||||
private long approveTime;
|
||||
private String message;
|
||||
private long approverDeadline;
|
||||
}
|
||||
@ -1,9 +1,11 @@
|
||||
package cn.axzo.nanopart.ess.api.mq;
|
||||
package cn.axzo.nanopart.ess.api.domain;
|
||||
|
||||
import cn.axzo.nanopart.ess.api.enums.EssContractState;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@ -44,11 +46,16 @@ public class EssContractInfo {
|
||||
/**
|
||||
* 腾讯电子签的资源id
|
||||
*/
|
||||
private String essFieldId;
|
||||
private List<String> essFieldIds;
|
||||
|
||||
/**
|
||||
* 合同状态. INIT: 合同创建, PART: 合同签署中, ALL: 合同签署完成, REJECT: 合同拒签, CANCEL: 合同撤回, WILLEXPIRE: 合同即将过期, DEADLINE: 合同流签(合同过期), RELIEVED: 解除协议(已解除), INVALID: 合同已失效, EXCEPTION: 合同异常
|
||||
*/
|
||||
private EssContractState state;
|
||||
|
||||
/**
|
||||
* 签署情况
|
||||
*/
|
||||
private List<EssApproverDetail> approverDetails;
|
||||
|
||||
}
|
||||
@ -1,5 +1,6 @@
|
||||
package cn.axzo.nanopart.ess.api.mq;
|
||||
|
||||
import cn.axzo.nanopart.ess.api.domain.EssContractInfo;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
|
||||
@ -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 GetContractDetailRequest {
|
||||
|
||||
/**
|
||||
* 合同id
|
||||
*/
|
||||
@NotBlank(message = "essContractId不能为空")
|
||||
private String essContractId;
|
||||
|
||||
}
|
||||
@ -0,0 +1,18 @@
|
||||
package cn.axzo.nanopart.ess.api.response;
|
||||
|
||||
import cn.axzo.nanopart.ess.api.domain.EssContractInfo;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter @Getter
|
||||
public class GetContractDetailResponse {
|
||||
|
||||
/**
|
||||
* 合同信息
|
||||
*/
|
||||
private EssContractInfo contract;
|
||||
|
||||
}
|
||||
@ -2,7 +2,7 @@ package cn.axzo.nanopart.ess.server.dao;
|
||||
|
||||
import cn.axzo.nanopart.ess.api.enums.EssContractState;
|
||||
import cn.axzo.nanopart.ess.server.entity.EssContract;
|
||||
import cn.axzo.nanopart.ess.server.entity.EssContract.ApproverDetail;
|
||||
import cn.axzo.nanopart.ess.api.domain.EssApproverDetail;
|
||||
import cn.axzo.nanopart.ess.server.mapper.EssContractMapper;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
@ -31,7 +31,7 @@ public class EssContractDao extends ServiceImpl<EssContractMapper, EssContract>
|
||||
.update();
|
||||
}
|
||||
|
||||
public void updateState(String essContractId, EssContractState state, List<ApproverDetail> details) {
|
||||
public void updateState(String essContractId, EssContractState state, List<EssApproverDetail> details) {
|
||||
lambdaUpdate()
|
||||
.eq(EssContract::getEssContractId, essContractId)
|
||||
.set(EssContract::getState, state)
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package cn.axzo.nanopart.ess.server.entity;
|
||||
|
||||
import cn.axzo.foundation.dao.support.mysql.type.BaseListTypeHandler;
|
||||
import cn.axzo.nanopart.ess.api.enums.EssContractApproveState;
|
||||
import cn.axzo.nanopart.ess.api.domain.EssApproverDetail;
|
||||
import cn.axzo.nanopart.ess.api.enums.EssContractState;
|
||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
@ -69,10 +69,10 @@ public class EssContract extends BaseEntity<EssContract> {
|
||||
private Object approvers;
|
||||
|
||||
/**
|
||||
* 状态描述
|
||||
* 签署情况
|
||||
*/
|
||||
@TableField(typeHandler = ApproverDetailListHandler.class)
|
||||
private List<ApproverDetail> approverDetails;
|
||||
private List<EssApproverDetail> approverDetails;
|
||||
|
||||
/**
|
||||
* 扩展字段
|
||||
@ -89,17 +89,6 @@ public class EssContract extends BaseEntity<EssContract> {
|
||||
public static class RecordExt {
|
||||
}
|
||||
|
||||
@Setter @Getter
|
||||
public static class ApproverDetail {
|
||||
private Long ouId;
|
||||
private Long personId;
|
||||
private EssContractApproveState state;
|
||||
private long signOrder;
|
||||
private long approveTime;
|
||||
private String message;
|
||||
private long approverDeadline;
|
||||
}
|
||||
|
||||
// @formatter:off
|
||||
public static class StringListHandler
|
||||
extends BaseListTypeHandler<String> {}
|
||||
|
||||
@ -4,7 +4,7 @@ import cn.axzo.basics.common.BeanMapper;
|
||||
import cn.axzo.framework.rocketmq.Event;
|
||||
import cn.axzo.framework.rocketmq.EventProducer;
|
||||
import cn.axzo.nanopart.ess.api.enums.MQEvent;
|
||||
import cn.axzo.nanopart.ess.api.mq.EssContractInfo;
|
||||
import cn.axzo.nanopart.ess.api.domain.EssContractInfo;
|
||||
import cn.axzo.nanopart.ess.api.mq.EssContractStateChangeMessage;
|
||||
import cn.axzo.nanopart.ess.server.dao.EssContractDao;
|
||||
import cn.axzo.nanopart.ess.server.entity.EssContract;
|
||||
|
||||
@ -11,7 +11,7 @@ import cn.axzo.nanopart.ess.server.dao.EssPersonDao;
|
||||
import cn.axzo.nanopart.ess.server.dao.EssSealPersonDao;
|
||||
import cn.axzo.nanopart.ess.server.dao.domain.OuAndPersonId;
|
||||
import cn.axzo.nanopart.ess.server.entity.EssContract;
|
||||
import cn.axzo.nanopart.ess.server.entity.EssContract.ApproverDetail;
|
||||
import cn.axzo.nanopart.ess.api.domain.EssApproverDetail;
|
||||
import cn.axzo.nanopart.ess.server.entity.EssOrg;
|
||||
import cn.axzo.nanopart.ess.server.entity.EssPerson;
|
||||
import cn.axzo.nanopart.ess.server.entity.EssSealPerson;
|
||||
@ -112,7 +112,7 @@ public class ContractManager {
|
||||
|
||||
public void updateContractState(String essContractId,
|
||||
EssContractState state,
|
||||
List<ApproverDetail> details) {
|
||||
List<EssApproverDetail> details) {
|
||||
essContractDao.updateState(essContractId, state, details);
|
||||
broadcaster.fireContractStateChanged(essContractId);
|
||||
}
|
||||
|
||||
@ -12,6 +12,7 @@ import cn.axzo.nanopart.ess.api.request.GetSealsRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.GetUnitAuthStatesRequest;
|
||||
import cn.axzo.nanopart.ess.api.response.GetPersonAuthStateResponse;
|
||||
import cn.axzo.nanopart.ess.api.response.GetUnitAuthStatesResponse;
|
||||
import cn.axzo.nanopart.ess.server.dao.EssContractDao;
|
||||
import cn.axzo.nanopart.ess.server.dao.EssOrgDao;
|
||||
import cn.axzo.nanopart.ess.server.dao.EssPersonDao;
|
||||
import cn.axzo.nanopart.ess.server.dao.EssSealDao;
|
||||
@ -52,6 +53,7 @@ public class QueryService {
|
||||
private final EssOrgDao essOrgDao;
|
||||
private final EssPersonDao essPersonDao;
|
||||
private final EssSealDao essSealDao;
|
||||
private final EssContractDao essContractDao;
|
||||
private final EssSealPersonDao essSealPersonDao;
|
||||
private final EssSupport essSupport;
|
||||
|
||||
|
||||
@ -1,7 +1,9 @@
|
||||
package cn.axzo.nanopart.ess.server.ess.controller;
|
||||
|
||||
import cn.axzo.basics.common.BeanMapper;
|
||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||
import cn.axzo.nanopart.ess.api.EssApi;
|
||||
import cn.axzo.nanopart.ess.api.domain.EssContractInfo;
|
||||
import cn.axzo.nanopart.ess.api.domain.EssOrgAndSealInfo;
|
||||
import cn.axzo.nanopart.ess.api.enums.EssContractState;
|
||||
import cn.axzo.nanopart.ess.api.request.AddSealAuthorizationRequest;
|
||||
@ -9,6 +11,7 @@ import cn.axzo.nanopart.ess.api.request.AddSealPersonsRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.CreateConsoleLoginUrlRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.CreateContractRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.DownloadSingedContractPdfRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.GetContractDetailRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.GetContractSignUrlRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.GetEmbedWebUrlRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.GetPersonAuthStateRequest;
|
||||
@ -21,6 +24,7 @@ import cn.axzo.nanopart.ess.api.request.SealAndPersonRequest;
|
||||
import cn.axzo.nanopart.ess.api.response.CreateConsoleLoginUrlResponse;
|
||||
import cn.axzo.nanopart.ess.api.response.CreateContractResponse;
|
||||
import cn.axzo.nanopart.ess.api.response.DownloadSingedContractPdfResponse;
|
||||
import cn.axzo.nanopart.ess.api.response.GetContractDetailResponse;
|
||||
import cn.axzo.nanopart.ess.api.response.GetContractSignUrlResponse;
|
||||
import cn.axzo.nanopart.ess.api.response.GetEmbedWebUrlResponse;
|
||||
import cn.axzo.nanopart.ess.api.response.GetPersonAuthStateResponse;
|
||||
@ -192,4 +196,13 @@ class ApiController implements EssApi {
|
||||
return ApiResult.ok();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<GetContractDetailResponse> getContractDetail(GetContractDetailRequest request) {
|
||||
EssContract contract = essContractDao.find(request.getEssContractId()).orElse(null);
|
||||
BizAssertions.assertNotNull(contract, "合同不存在: {}", request.getEssContractId());
|
||||
GetContractDetailResponse response = new GetContractDetailResponse();
|
||||
response.setContract(BeanMapper.copyBean(contract, EssContractInfo.class));
|
||||
return ApiResult.ok(response);
|
||||
}
|
||||
|
||||
}
|
||||
@ -10,7 +10,7 @@ import cn.axzo.nanopart.ess.api.request.CallbackRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.CallbackRequest.OrgAuthorizationFinish;
|
||||
import cn.axzo.nanopart.ess.api.request.CallbackRequest.SuperAdminChanged;
|
||||
import cn.axzo.nanopart.ess.server.dao.EssLogDao;
|
||||
import cn.axzo.nanopart.ess.server.entity.EssContract.ApproverDetail;
|
||||
import cn.axzo.nanopart.ess.api.domain.EssApproverDetail;
|
||||
import cn.axzo.nanopart.ess.server.entity.EssLog;
|
||||
import cn.axzo.nanopart.ess.server.ess.ContractManager;
|
||||
import cn.axzo.nanopart.ess.server.ess.OrgManager;
|
||||
@ -104,10 +104,10 @@ class CallbackController implements EssCallbackApi, InitializingBean {
|
||||
log.warn("unknown contract state: {}", changes.getFlowStatus());
|
||||
return changes.getFlowId();
|
||||
}
|
||||
List<ApproverDetail> details = changes.getFlowApproverInfo().stream()
|
||||
List<EssApproverDetail> details = changes.getFlowApproverInfo().stream()
|
||||
.map(info -> {
|
||||
PersonOpenId personOpenId = PersonOpenId.parse(info.getProxyOperatorOpenId());
|
||||
ApproverDetail detail = new ApproverDetail();
|
||||
EssApproverDetail detail = new EssApproverDetail();
|
||||
detail.setOuId(personOpenId.getOuId());
|
||||
detail.setPersonId(personOpenId.getPersonId());
|
||||
detail.setState(EssContractApproveState.fromEssCode(info.getApproveStatus()));
|
||||
|
||||
Loading…
Reference in New Issue
Block a user