REQ-3581: 保存撤销合同的原因
This commit is contained in:
parent
2b35622cb7
commit
4c77ecd3b2
@ -58,4 +58,8 @@ public class EssContractInfo {
|
||||
*/
|
||||
private List<EssApproveDetail> approveDetails;
|
||||
|
||||
/**
|
||||
* 腾讯电子签那边的消息
|
||||
*/
|
||||
private String essMessage;
|
||||
}
|
||||
@ -9,6 +9,7 @@ import cn.axzo.nanopart.ess.server.utils.BizAssertions;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
@ -55,10 +56,12 @@ public class EssContractDao extends ServiceImpl<EssContractMapper, EssContract>
|
||||
|
||||
public void updateState(EssContract contract,
|
||||
EssContractState state,
|
||||
List<EssApproveDetail> approveDetailsOrPreserve) {
|
||||
List<EssApproveDetail> approveDetailsOrPreserve,
|
||||
String essMessage) {
|
||||
lambdaUpdate()
|
||||
.eq(EssContract::getId, contract.getId())
|
||||
.set(EssContract::getState, state)
|
||||
.set(StringUtils.isNotBlank(essMessage), EssContract::getEssMessage, essMessage)
|
||||
.set(CollectionUtils.isNotEmpty(approveDetailsOrPreserve),
|
||||
EssContract::getApproveDetails,
|
||||
approveDetailsOrPreserve == null ? "[]" : JSON.toJSONString(approveDetailsOrPreserve))
|
||||
|
||||
@ -4,8 +4,10 @@ import cn.axzo.foundation.dao.support.mysql.type.BaseListTypeHandler;
|
||||
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.Constraint;
|
||||
import cn.axzo.nanopart.ess.api.enums.EssContractApproveState;
|
||||
import cn.axzo.nanopart.ess.api.enums.EssContractState;
|
||||
import cn.axzo.nanopart.ess.server.entity.domain.Assignment;
|
||||
import cn.axzo.nanopart.ess.server.utils.BizAssertions;
|
||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.nacos.common.utils.UuidUtils;
|
||||
@ -16,7 +18,6 @@ import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
@ -86,6 +87,11 @@ public class EssContract extends BaseEntity<EssContract> {
|
||||
@TableField(typeHandler = ApproveDetailListHandler.class)
|
||||
private List<EssApproveDetail> approveDetails;
|
||||
|
||||
/**
|
||||
* 腾讯电子签那边的消息
|
||||
*/
|
||||
private String essMessage;
|
||||
|
||||
/**
|
||||
* 合同oss信息
|
||||
*/
|
||||
@ -106,10 +112,13 @@ public class EssContract extends BaseEntity<EssContract> {
|
||||
public boolean isOrgSigned(Long ouId) {
|
||||
if (approveDetails == null)
|
||||
return false;
|
||||
return approveDetails.stream()
|
||||
.map(EssApproveDetail::getSignPerson)
|
||||
.filter(Objects::nonNull)
|
||||
.anyMatch(person -> ouId.equals(person.getOuId()));
|
||||
for (EssApproveDetail detail : approveDetails) {
|
||||
if (detail.getSignPerson() == null) continue;
|
||||
if (ouId.equals(detail.getSignPerson().getOuId())
|
||||
&& detail.getState() == EssContractApproveState.ACCEPT)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public int approverSize() {
|
||||
@ -117,6 +126,7 @@ public class EssContract extends BaseEntity<EssContract> {
|
||||
}
|
||||
|
||||
public Approver getApprover(Integer idx) {
|
||||
BizAssertions.assertNotNull(approvers, "approver is null");
|
||||
return approvers == null ? null : approvers.get(idx);
|
||||
}
|
||||
|
||||
|
||||
@ -84,20 +84,21 @@ public class ContractManager {
|
||||
"合同已是最终状态 {}, 无法撤销", contract.getState().getDescription());
|
||||
EssPerson superAdmin = getContractSuperAdmin(contract);
|
||||
essClient.revokeContract(superAdmin, contract.getEssContractId(), request.getReason());
|
||||
updateContractState(contract, EssContractState.CANCEL, null);
|
||||
updateContractState(contract, EssContractState.CANCEL, null, request.getReason());
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void updateContractState(EssContract contract,
|
||||
EssContractState state,
|
||||
List<EssApproveDetail> approveDetails) {
|
||||
List<EssApproveDetail> approveDetails,
|
||||
String essMessage) {
|
||||
EssContract reloadContract = essContractDao.findForUpdateOrNull(contract.getEssContractId());
|
||||
BizAssertions.assertNotNull(reloadContract, "合同不存在: {}", contract.getEssContractId());
|
||||
if (reloadContract.isFinalState()) {
|
||||
log.warn("合同[{}]已是最终状态[{}], 无法更新状态至{}",
|
||||
reloadContract.getEssContractId(), reloadContract.getState(), state);
|
||||
} else {
|
||||
essContractDao.updateState(contract, state, approveDetails);
|
||||
essContractDao.updateState(contract, state, approveDetails, essMessage);
|
||||
essBroadcaster.fireContractStateChanged(contract);
|
||||
}
|
||||
}
|
||||
|
||||
@ -157,7 +157,7 @@ class CallbackController implements EssCallbackApi, InitializingBean {
|
||||
if (contract == null) {
|
||||
log.warn("contract not found: {}", changes.getFlowId());
|
||||
} else {
|
||||
contractManager.updateContractState(contract, state, approveDetails);
|
||||
contractManager.updateContractState(contract, state, approveDetails, changes.getFlowMessage());
|
||||
essService.maybeUploadContractToOss(contract);
|
||||
}
|
||||
return changes.getFlowId();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user