REQ-3581: 同步印章类型

This commit is contained in:
yanglin 2025-03-06 17:12:46 +08:00
parent 99ec5f738b
commit f420ad9635
5 changed files with 34 additions and 2 deletions

View File

@ -25,6 +25,11 @@ public class EssSealInfo {
*/ */
private String essSealId; private String essSealId;
/**
* 印章名称
*/
private String name;
/** /**
* 印章类型. OFFICIAL: 公章, CONTRACT: 合同专用章, FINANCE: 财务专用章, PERSONNEL: 人事专用章, INVOICE: 发票专用章, LEGAL_PERSON_SEAL: 法定代表人章, OTHER: 其它 * 印章类型. OFFICIAL: 公章, CONTRACT: 合同专用章, FINANCE: 财务专用章, PERSONNEL: 人事专用章, INVOICE: 发票专用章, LEGAL_PERSON_SEAL: 法定代表人章, OTHER: 其它
*/ */

View File

@ -29,6 +29,11 @@ public class EssSeal extends BaseEntity<EssSeal> {
*/ */
private String essSealId; private String essSealId;
/**
* 印章名称
*/
private String name;
/** /**
* 印章状态. CREATE: 创建, DELETED: 删除, DISABLED: 停用, ENABLED: 启用 * 印章状态. CREATE: 创建, DELETED: 删除, DISABLED: 停用, ENABLED: 启用
*/ */

View File

@ -49,6 +49,8 @@ import com.tencentcloudapi.essbasic.v20210526.models.ChannelCreateSealPolicyRequ
import com.tencentcloudapi.essbasic.v20210526.models.ChannelDeleteSealPoliciesRequest; import com.tencentcloudapi.essbasic.v20210526.models.ChannelDeleteSealPoliciesRequest;
import com.tencentcloudapi.essbasic.v20210526.models.ChannelDescribeEmployeesRequest; import com.tencentcloudapi.essbasic.v20210526.models.ChannelDescribeEmployeesRequest;
import com.tencentcloudapi.essbasic.v20210526.models.ChannelDescribeEmployeesResponse; import com.tencentcloudapi.essbasic.v20210526.models.ChannelDescribeEmployeesResponse;
import com.tencentcloudapi.essbasic.v20210526.models.ChannelDescribeOrganizationSealsRequest;
import com.tencentcloudapi.essbasic.v20210526.models.ChannelDescribeOrganizationSealsResponse;
import com.tencentcloudapi.essbasic.v20210526.models.ComponentLimit; import com.tencentcloudapi.essbasic.v20210526.models.ComponentLimit;
import com.tencentcloudapi.essbasic.v20210526.models.CreateConsoleLoginUrlRequest; import com.tencentcloudapi.essbasic.v20210526.models.CreateConsoleLoginUrlRequest;
import com.tencentcloudapi.essbasic.v20210526.models.CreateConsoleLoginUrlResponse; import com.tencentcloudapi.essbasic.v20210526.models.CreateConsoleLoginUrlResponse;
@ -60,6 +62,7 @@ import com.tencentcloudapi.essbasic.v20210526.models.DescribeResourceUrlsByFlows
import com.tencentcloudapi.essbasic.v20210526.models.FillApproverInfo; import com.tencentcloudapi.essbasic.v20210526.models.FillApproverInfo;
import com.tencentcloudapi.essbasic.v20210526.models.FlowApproverInfo; import com.tencentcloudapi.essbasic.v20210526.models.FlowApproverInfo;
import com.tencentcloudapi.essbasic.v20210526.models.FlowForwardInfo; import com.tencentcloudapi.essbasic.v20210526.models.FlowForwardInfo;
import com.tencentcloudapi.essbasic.v20210526.models.OccupiedSeal;
import com.tencentcloudapi.essbasic.v20210526.models.ProxyOrganizationOperator; import com.tencentcloudapi.essbasic.v20210526.models.ProxyOrganizationOperator;
import com.tencentcloudapi.essbasic.v20210526.models.SyncProxyOrganizationOperatorsRequest; import com.tencentcloudapi.essbasic.v20210526.models.SyncProxyOrganizationOperatorsRequest;
import com.tencentcloudapi.essbasic.v20210526.models.UploadFile; import com.tencentcloudapi.essbasic.v20210526.models.UploadFile;
@ -156,6 +159,18 @@ public class EssClient implements InitializingBean {
return response.getWebUrl(); return response.getWebUrl();
} }
public OccupiedSeal getSealInfo(EssPerson superAdmin, String sealId) {
ChannelDescribeOrganizationSealsRequest request = new ChannelDescribeOrganizationSealsRequest();
request.setAgent(agent(superAdmin));
request.setSealId(sealId);
ChannelDescribeOrganizationSealsResponse response = exec(func() //
.context("ChannelDescribeOrganizationSeals") //
.subject(sealId) //
.request(request) //
.command(() -> manage.ChannelDescribeOrganizationSeals(request)));
return response.getSeals()[0];
}
public void addSealAuthorization(EssPerson superAdmin, EssSeal seal, EssSealPerson sealPerson) { public void addSealAuthorization(EssPerson superAdmin, EssSeal seal, EssSealPerson sealPerson) {
ChannelCreateSealPolicyRequest request = new ChannelCreateSealPolicyRequest(); ChannelCreateSealPolicyRequest request = new ChannelCreateSealPolicyRequest();
request.setAgent(agent(superAdmin)); request.setAgent(agent(superAdmin));

View File

@ -120,13 +120,14 @@ public class OrgManager {
// !! seal // !! seal
@BizTransactional @BizTransactional
public boolean maybeAddSeal(Long ouId, String essSealId, EssSealType type) { public boolean maybeAddSeal(Long ouId, String essSealId, EssSealType type, String name) {
EssSeal seal = essSealDao.findByEssSealId(essSealId).orElse(null); EssSeal seal = essSealDao.findByEssSealId(essSealId).orElse(null);
if (seal != null) if (seal != null)
return false; return false;
seal = new EssSeal(); seal = new EssSeal();
seal.setOuId(ouId); seal.setOuId(ouId);
seal.setEssSealId(essSealId); seal.setEssSealId(essSealId);
seal.setName(name);
seal.setState(EssSealState.CREATE); seal.setState(EssSealState.CREATE);
seal.setType(type); seal.setType(type);
try { try {

View File

@ -21,6 +21,7 @@ import org.springframework.transaction.support.TransactionTemplate;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.tencentcloudapi.essbasic.v20210526.models.OccupiedSeal;
import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO; import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO;
@ -39,8 +40,10 @@ import cn.axzo.nanopart.ess.server.dao.EssLogDao;
import cn.axzo.nanopart.ess.server.dao.EssSealPersonDao; import cn.axzo.nanopart.ess.server.dao.EssSealPersonDao;
import cn.axzo.nanopart.ess.server.entity.EssContract; import cn.axzo.nanopart.ess.server.entity.EssContract;
import cn.axzo.nanopart.ess.server.entity.EssLog; import cn.axzo.nanopart.ess.server.entity.EssLog;
import cn.axzo.nanopart.ess.server.entity.EssPerson;
import cn.axzo.nanopart.ess.server.entity.EssSealPerson; import cn.axzo.nanopart.ess.server.entity.EssSealPerson;
import cn.axzo.nanopart.ess.server.ess.ContractManager; import cn.axzo.nanopart.ess.server.ess.ContractManager;
import cn.axzo.nanopart.ess.server.ess.EssClient;
import cn.axzo.nanopart.ess.server.ess.EssService; import cn.axzo.nanopart.ess.server.ess.EssService;
import cn.axzo.nanopart.ess.server.ess.OrgManager; import cn.axzo.nanopart.ess.server.ess.OrgManager;
import cn.axzo.nanopart.ess.server.ess.domain.OrgOpenId; import cn.axzo.nanopart.ess.server.ess.domain.OrgOpenId;
@ -69,6 +72,7 @@ class CallbackController implements EssCallbackApi, InitializingBean {
private final EssSealPersonDao essSealPersonDao; private final EssSealPersonDao essSealPersonDao;
private final TransactionTemplate transactionTemplate; private final TransactionTemplate transactionTemplate;
private final EssSupport essSupport; private final EssSupport essSupport;
private final EssClient essClient;
private final Map<CallbackType, CallbackHandler> handlers = new HashMap<>(); private final Map<CallbackType, CallbackHandler> handlers = new HashMap<>();
@Override @Override
@ -121,8 +125,10 @@ class CallbackController implements EssCallbackApi, InitializingBean {
PersonOpenId operator = PersonOpenId.parse(operate.getProxyOperatorOpenId()); PersonOpenId operator = PersonOpenId.parse(operate.getProxyOperatorOpenId());
PersonOpenId authorized = StringUtils.isBlank(operate.getAuthorizedOperatorOpenId()) ? PersonOpenId.none() PersonOpenId authorized = StringUtils.isBlank(operate.getAuthorizedOperatorOpenId()) ? PersonOpenId.none()
: PersonOpenId.parse(operate.getAuthorizedOperatorOpenId()); : PersonOpenId.parse(operate.getAuthorizedOperatorOpenId());
EssPerson superAdmin = orgManager.getSuperAdminOrThrow(operator.getOuId());
OccupiedSeal sealInfo = essClient.getSealInfo(superAdmin, operate.getSealId());
boolean sealCreated = orgManager.maybeAddSeal(ou.getOuId(), operate.getSealId(), boolean sealCreated = orgManager.maybeAddSeal(ou.getOuId(), operate.getSealId(),
EssSealType.fromEssCode(operate.getSealType())); EssSealType.fromEssCode(operate.getSealType()), sealInfo.getSealName());
// 1. 印章创建人会自动获得授权; 2. 避免miss create事件 // 1. 印章创建人会自动获得授权; 2. 避免miss create事件
if (sealCreated) { if (sealCreated) {
orgManager.maybeAddPersonAndSetSealAuthorized(operate.getSealId(), operator.getPersonId()); orgManager.maybeAddPersonAndSetSealAuthorized(operate.getSealId(), operator.getPersonId());