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