diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/dao/EssContractDao.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/dao/EssContractDao.java index 478a9868..4bfeaf64 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/dao/EssContractDao.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/dao/EssContractDao.java @@ -1,6 +1,5 @@ package cn.axzo.nanopart.ess.server.dao; -import cn.axzo.nanopart.ess.api.domain.contract.Approver; import cn.axzo.nanopart.ess.api.domain.contract.EssApproveDetail; import cn.axzo.nanopart.ess.api.enums.EssContractState; import cn.axzo.nanopart.ess.server.entity.EssContract; @@ -43,13 +42,11 @@ public class EssContractDao extends ServiceImpl public void setEssContractCreated(Long id, String flowId, - List essFileIds, - List approvers) { + List essFileIds) { lambdaUpdate() .eq(EssContract::getId, id) .set(EssContract::getEssFieldIds, JSON.toJSONString(essFileIds)) .set(EssContract::getEssContractId, flowId) - .set(EssContract::getApprovers, JSON.toJSONString(approvers)) .update(); } @@ -65,7 +62,7 @@ public class EssContractDao extends ServiceImpl .update(); } - public void setOssInfo(EssContract contract, String fileKey) { + public void setOssFileKey(EssContract contract, String fileKey) { lambdaUpdate() .eq(EssContract::getId, contract.getId()) .set(EssContract::getOssFileKey, fileKey) diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/ContractManager.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/ContractManager.java index 4cbbcbde..e7290f59 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/ContractManager.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/ContractManager.java @@ -62,8 +62,7 @@ public class ContractManager { for (int i = 0; i < contract.approverSize(); i++) contract.getApprover(i).setEssRecipientId(essRecipientIds.get(i)); essContractDao.setEssContractCreated( - contract.getId(), essResponse.getFlowId(), - essFileIds, contract.getApprovers()); + contract.getId(), essResponse.getFlowId(), essFileIds); contract = essContractDao.getOrThrow(essResponse.getFlowId()); essBroadcaster.fireContractStateChanged(contract); CreateContractByFileResponse response = new CreateContractByFileResponse(); diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/EssService.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/EssService.java index 1532b737..9323343c 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/EssService.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/EssService.java @@ -173,7 +173,7 @@ public class EssService { return; String fileName = String.format("%s.pdf", effectiveContract.getContractName()); String fileKey = ossService.uploadToOss(essPdfUrl.get(), fileName); - essContractDao.setOssInfo(effectiveContract, fileKey); + essContractDao.setOssFileKey(effectiveContract, fileKey); }); } diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/OrgManager.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/OrgManager.java index 8fdd0f24..3ab35086 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/OrgManager.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/OrgManager.java @@ -105,9 +105,10 @@ public class OrgManager { // !! seal @Transactional - public void maybeAddSeal(Long ouId, String essSealId, EssSealType type) { + public boolean maybeAddSeal(Long ouId, String essSealId, EssSealType type) { EssSeal seal = essSealDao.findByEssSealId(essSealId).orElse(null); - if (seal != null) return; + if (seal != null) + return false; seal = new EssSeal(); seal.setOuId(ouId); seal.setEssSealId(essSealId); @@ -115,7 +116,9 @@ public class OrgManager { seal.setType(type); try { essSealDao.save(seal); + return true; } catch (DuplicateKeyException ignored) { + return false; } } @@ -157,7 +160,7 @@ public class OrgManager { return; try { essSealPersonDao.saveBatch(newPersons); - } catch (Exception ignored) { + } catch (DuplicateKeyException ignored) { } } diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/controller/CallbackController.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/controller/CallbackController.java index 264da8f8..79c7693a 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/controller/CallbackController.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/controller/CallbackController.java @@ -108,10 +108,10 @@ class CallbackController implements EssCallbackApi, InitializingBean { StringUtils.isBlank(operate.getAuthorizedOperatorOpenId()) ? PersonOpenId.none() : PersonOpenId.parse(operate.getAuthorizedOperatorOpenId()); - orgManager.maybeAddSeal(ou.getOuId(), operate.getSealId(), + boolean sealCreated = orgManager.maybeAddSeal(ou.getOuId(), operate.getSealId(), EssSealType.fromEssCode(operate.getSealType())); - // 印章创建人会自动获得授权 - if ("Create".equals(operate.getOperate())) + // 1. 印章创建人会自动获得授权; 2. 避免miss create事件 + if (sealCreated) orgManager.addSealAuthorization(operate.getSealId(), operator.getPersonId(), operator.getPersonId()); if ("Delete".equals(operate.getOperate())) orgManager.updateSealState(operate.getSealId(), EssSealState.DELETED);