feat(REQ-3758) - 调整审批流程的日志处理

This commit is contained in:
wangli 2025-04-22 16:27:14 +08:00
parent 14b6cf0838
commit 6057dc323f
4 changed files with 47 additions and 18 deletions

View File

@ -3,6 +3,7 @@ package cn.axzo.nanopart.visa.api.request;
import cn.axzo.framework.domain.ServiceException;
import cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum;
import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum;
import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum;
import cn.axzo.nanopart.visa.api.response.VisaDetailByIdResponse;
import lombok.AllArgsConstructor;
import lombok.Builder;
@ -86,7 +87,7 @@ public class ChangeStatusRequest {
*/
private boolean editFormFlag = true;
private VisaTypeEnum visaType;
public void check() {
if (Objects.nonNull(logType) && !VisaLogTypeEnum.isApproveNotAgree(logType)) {
throw new ServiceException("不是审核不通过日志");

View File

@ -7,6 +7,18 @@
<version>${revision}</version>
<relativePath>../pom.xml</relativePath>
</parent>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
<modelVersion>4.0.0</modelVersion>
<artifactId>visa-server</artifactId>

View File

@ -51,6 +51,7 @@ import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY;
import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.APPROVE_ABORT;
import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.APPROVE_COMPLETED;
import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.REJECT_APPROVE;
import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.REVERT_APPROVE;
import static cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum.PROCESS_INSTANCE_OF_PAY;
@ -127,8 +128,8 @@ public class ProcessInstanceOfVisaAllEventHandler extends BasicLogSupport implem
log.info("send complete notice, onCompleted, processInstanceDTO: {}", JSON.toJSONString(dto));
sendCompleteNotice(dto);
log.info("send complete notice success");
updateChangeRecordApprovalStatus(dto, BpmnProcessInstanceResultEnum.APPROVED);
BpmnProcessDefinitionVO processDefinition = workflowGateway.getActiveProcessDefinitionByKey(dto.getProcessDefinitionKey());
updateChangeRecordApprovalStatus(dto, BpmnProcessInstanceResultEnum.APPROVED, processDefinition);
if (isPayConfirm(dto)) {
changeRecordService.lambdaUpdate()
@ -207,7 +208,7 @@ public class ProcessInstanceOfVisaAllEventHandler extends BasicLogSupport implem
.build();
eventProducer.send(VisaChangeLogPayload.form(log));
updateChangeRecordApprovalStatus(dto, BpmnProcessInstanceResultEnum.CANCELLED);
updateChangeRecordApprovalStatus(dto, BpmnProcessInstanceResultEnum.CANCELLED, processDefinition);
}
/**
@ -232,7 +233,7 @@ public class ProcessInstanceOfVisaAllEventHandler extends BasicLogSupport implem
.build();
eventProducer.send(VisaChangeLogPayload.form(log));
updateChangeRecordApprovalStatus(dto, BpmnProcessInstanceResultEnum.REJECTED);
updateChangeRecordApprovalStatus(dto, BpmnProcessInstanceResultEnum.REJECTED, processDefinition);
}
@ -282,10 +283,10 @@ public class ProcessInstanceOfVisaAllEventHandler extends BasicLogSupport implem
.build();
eventProducer.send(VisaChangeLogPayload.form(log));
updateChangeRecordApprovalStatus(dto, BpmnProcessInstanceResultEnum.ABORTED);
updateChangeRecordApprovalStatus(dto, BpmnProcessInstanceResultEnum.ABORTED, processDefinition);
}
private void updateChangeRecordApprovalStatus(ProcessInstanceDTO dto, BpmnProcessInstanceResultEnum resultEnum) {
private void updateChangeRecordApprovalStatus(ProcessInstanceDTO dto, BpmnProcessInstanceResultEnum resultEnum, BpmnProcessDefinitionVO processDefinition) {
boolean isPayConfirm = isPayConfirm(dto);
// 更新主表审批状态信息
Long visaId = Long.valueOf(dto.getBusinessKey());
@ -331,18 +332,31 @@ public class ProcessInstanceOfVisaAllEventHandler extends BasicLogSupport implem
ChangeRecord visa = changeRecordService.getById(visaId);
BpmnTaskDelegateAssigner lastOperationAssigner = dto.getLastOperationAssigner();
if (Objects.equals(resultEnum, BpmnProcessInstanceResultEnum.APPROVED) && isPayConfirm) {
changeRecordService.changeStatus(ChangeStatusRequest.builder()
.visaId(visaId)
.personId(Long.valueOf(lastOperationAssigner.getPersonId()))
.ouId(Long.valueOf(lastOperationAssigner.getOuId()))
.workspaceId(Long.valueOf(lastOperationAssigner.getTenantId()))
.updateStatus(VisaStatusEnum.COMPLETED)
.editFormFlag(false)
.build());
if (Objects.equals(resultEnum, BpmnProcessInstanceResultEnum.APPROVED)) {
if (isPayConfirm) {
// 修改状态并记录日志
changeRecordService.changeStatus(ChangeStatusRequest.builder()
.visaId(visaId)
.personId(Long.valueOf(lastOperationAssigner.getPersonId()))
.ouId(Long.valueOf(lastOperationAssigner.getOuId()))
.workspaceId(Long.valueOf(lastOperationAssigner.getTenantId()))
.updateStatus(VisaStatusEnum.COMPLETED)
.visaType(PAY_CONFIRM)
.editFormFlag(false)
.build());
} else {
ChangeRecordLog log = ChangeRecordLog.builder()
.visaId(Long.valueOf(dto.getBusinessKey()))
.action(dto.getType().getTag())
.title(String.format(APPROVE_COMPLETED.getTitle(), processDefinition.getName()))
.content(String.format(APPROVE_COMPLETED.getContent(), processDefinition.getName()))
.build();
eventProducer.send(VisaChangeLogPayload.form(log));
}
return;
}
if (!isPayConfirm && !Objects.equals(resultEnum, BpmnProcessInstanceResultEnum.APPROVED)) {
if (!isPayConfirm) {
// 回退到待提报或决策中
changeRecordService.changeStatus(ChangeStatusRequest.builder()
.visaId(visaId)

View File

@ -281,7 +281,9 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
.newAmountChange(request.getNewAmountChange())
.oldAmountChange(request.getOldAmountChange())
.uploadAttach(VisaLogParam.uploadAttachWithObject(request.getNewAttach(), request.getOldAttach()))
.deleteAttach(VisaLogParam.deleteAttachWithObject(request.getOldAttach(), request.getNewAttach())).build());
.deleteAttach(VisaLogParam.deleteAttachWithObject(request.getOldAttach(), request.getNewAttach()))
.visaType(request.getVisaType())
.build());
return true;
}