feat(REQ-3300) - 调整创建审批的逻辑,以及审批完成后的一些异常处理

This commit is contained in:
wangli 2025-02-14 18:36:51 +08:00
parent d21a2d3bd2
commit ff35b74ef0
4 changed files with 26 additions and 11 deletions

View File

@ -29,7 +29,7 @@ public abstract class BasicLogSupport {
return buildLogUserInfo(oneUserInfo);
}
protected String buildLogUserInfo(OrgNodeUserBriefInfoResp user) {
String userInfo = "";
String userInfo = "";
if (Objects.nonNull(user)) {
userInfo = user.getRealName() + "" + user.getJob().getName() + "-" + user.getOrganizationalUnitName() + "";
}
@ -37,10 +37,15 @@ public abstract class BasicLogSupport {
}
protected OrgNodeUserBriefInfoResp getOneUserInfo(BpmnTaskDelegateAssigner assigner) {
if (Objects.isNull(assigner)) {
return null;
}
List<OrgNodeUserBriefInfoResp> users = visaOrganizationalNodeUserGateway.listOrgNodeUsers(OrgNodeUserBriefInfoListReq.builder()
.workspaceId(Long.valueOf(assigner.getTenantId()))
.ouId(Long.valueOf(assigner.getOuId()))
.personIds(Lists.newArrayList(Long.valueOf(assigner.getPersonId())))
.needUnit(true)
.needJob(true)
.build());
return CollectionUtils.isEmpty(users) ? null : users.get(0);
}

View File

@ -173,11 +173,15 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P
changeRecordRelationService.updateById(changeRecordRelation);
});
ChangeRecord visa = changeRecordService.getById(visaId);
if (Objects.equals(resultEnum, BpmnProcessInstanceResultEnum.APPROVED)) {
changeRecordService.changeStatus(ChangeStatusRequest.builder()
.visaId(visaId)
.updateStatus(VisaStatusEnum.COMPLETED)
.build());
return;
}
// 回退到待提报或决策中
ChangeRecord visa = changeRecordService.getById(visaId);
changeRecordService.changeStatus(ChangeStatusRequest.builder()
.visaId(visaId)
.updateStatus(Objects.isNull(visa.getImGroupId()) ? VisaStatusEnum.REPORT_FROM_APPROVE : VisaStatusEnum.DECIDING_FROM_APPROVE)

View File

@ -10,6 +10,8 @@ import cn.axzo.workflow.common.model.response.mq.ProcessTaskDTO;
import cn.axzo.workflow.starter.handler.ProcessTaskEventHandler;
import org.springframework.stereotype.Component;
import java.util.Objects;
import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.APPROVED_AGRESS;
import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.TRANSMIT_APPROVE;
@ -53,8 +55,8 @@ public class ProcessTaskAllEventHandler extends BasicLogSupport implements Proce
ChangeRecordLog log = ChangeRecordLog.builder()
.visaId(Long.valueOf(dto.getBusinessKey()))
.action(dto.getType().getTag())
.title(String.format(APPROVED_AGRESS.getTitle(), user.getRealName()))
.content(String.format(APPROVED_AGRESS.getContent(), buildLogUserInfo(user)))
.title(String.format(APPROVED_AGRESS.getTitle(), Objects.isNull(user) ? "" : user.getRealName()))
.content(String.format(APPROVED_AGRESS.getContent(), Objects.isNull(user) ? "系统自动通过" : buildLogUserInfo(user)))
.build();
eventProducer.send(VisaChangeLogPayload.form(log));
}

View File

@ -90,7 +90,6 @@ import cn.axzo.nanopart.visa.server.utils.Constants;
import cn.axzo.orggateway.api.nodeuser.dto.OrgNodeUserDTO;
import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq;
import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq;
import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum;
import cn.axzo.workflow.common.model.dto.CooperationOrgDTO;
import cn.axzo.workflow.common.model.dto.UploadFieldDTO;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO;
@ -154,6 +153,7 @@ import static cn.axzo.nanopart.visa.api.constant.VisaConstant.MSG_CENTER_APP_COD
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_PENDING_TOPIC;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY;
import static cn.axzo.nanopart.visa.server.utils.Constants.DATE_FORMAT;
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.PROCESSING;
/**
* @author xudawei
@ -776,7 +776,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
ChangeRecord changeRecord = new ChangeRecord();
changeRecord.setId(visaId);
changeRecord.setApprovalId(processInstanceId);
changeRecord.setApprovalStatus(BpmnProcessInstanceResultEnum.PROCESSING.getStatus());
changeRecord.setApprovalStatus(PROCESSING.getStatus());
updateById(changeRecord);
// 设置关联表的审批信息
@ -785,7 +785,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
processRelation.setVarName(VisaRelationFieldEnum.PROCESS_INSTANCE.getCode());
processRelation.setVarType(VisaRelationVarTypeEnum.STRING.getType());
processRelation.setContent(processInstanceId);
processRelation.setContentExt(BpmnProcessInstanceResultEnum.PROCESSING.getStatus());
processRelation.setContentExt(PROCESSING.getStatus());
changeRecordRelationService.save(processRelation);
}
@ -1386,6 +1386,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
req.setOperatorWorkspaceId(visa.getRelationWorkspaceId());
validOperationPermission(req.getVisaId(), req.getOperatorPersonId(), req.getOperatorOuId(), req.getOperatorWorkspaceId());
AssertUtil.isTrue(!StringUtils.hasText(visa.getApprovalId())
|| (StringUtils.hasText(visa.getApprovalId()) && !Objects.equals(VisaStatusEnum.APPROVING.name(), visa.getApprovalStatus())),
"当前单据审批中,不允许操作");
// 组装 REQ 参数
VisaChangeApproveCreateReq createReq = buildVisaChangeApproveCreateReqByVisaId(req.getVisaId());
AssertUtil.notNull(createReq, "未找到变洽签单据");
@ -1398,10 +1402,6 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
createReq.setOperatorOuId(req.getOperatorOuId());
createReq.setOperatorPersonId(req.getOperatorPersonId());
createReq.setRelationWorkspaceId(req.getOperatorWorkspaceId());
String processInstanceId = createProcessInstance(createReq, req.getVisaId());
// 更新主表中的审批字段记录变量表的审批的信息
updateApprovalInfo(visa.getId(), processInstanceId);
// 更新主表状态
changeStatus(ChangeStatusRequest.builder()
@ -1411,6 +1411,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
.ouId(req.getOperatorOuId())
.workspaceId(req.getOperatorWorkspaceId())
.build());
String processInstanceId = createProcessInstance(createReq, req.getVisaId());
// 更新主表中的审批字段记录变量表的审批的信息
updateApprovalInfo(visa.getId(), processInstanceId);
return req.getVisaId();
}