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

View File

@ -173,11 +173,15 @@ public class ProcessInstanceAllEventHandler extends BasicLogSupport implements P
changeRecordRelationService.updateById(changeRecordRelation); changeRecordRelationService.updateById(changeRecordRelation);
}); });
ChangeRecord visa = changeRecordService.getById(visaId);
if (Objects.equals(resultEnum, BpmnProcessInstanceResultEnum.APPROVED)) { if (Objects.equals(resultEnum, BpmnProcessInstanceResultEnum.APPROVED)) {
changeRecordService.changeStatus(ChangeStatusRequest.builder()
.visaId(visaId)
.updateStatus(VisaStatusEnum.COMPLETED)
.build());
return; return;
} }
// 回退到待提报或决策中 // 回退到待提报或决策中
ChangeRecord visa = changeRecordService.getById(visaId);
changeRecordService.changeStatus(ChangeStatusRequest.builder() changeRecordService.changeStatus(ChangeStatusRequest.builder()
.visaId(visaId) .visaId(visaId)
.updateStatus(Objects.isNull(visa.getImGroupId()) ? VisaStatusEnum.REPORT_FROM_APPROVE : VisaStatusEnum.DECIDING_FROM_APPROVE) .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 cn.axzo.workflow.starter.handler.ProcessTaskEventHandler;
import org.springframework.stereotype.Component; 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.APPROVED_AGRESS;
import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.TRANSMIT_APPROVE; 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() ChangeRecordLog log = ChangeRecordLog.builder()
.visaId(Long.valueOf(dto.getBusinessKey())) .visaId(Long.valueOf(dto.getBusinessKey()))
.action(dto.getType().getTag()) .action(dto.getType().getTag())
.title(String.format(APPROVED_AGRESS.getTitle(), user.getRealName())) .title(String.format(APPROVED_AGRESS.getTitle(), Objects.isNull(user) ? "" : user.getRealName()))
.content(String.format(APPROVED_AGRESS.getContent(), buildLogUserInfo(user))) .content(String.format(APPROVED_AGRESS.getContent(), Objects.isNull(user) ? "系统自动通过" : buildLogUserInfo(user)))
.build(); .build();
eventProducer.send(VisaChangeLogPayload.form(log)); 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.dto.OrgNodeUserDTO;
import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq; import cn.axzo.orggateway.api.nodeuser.req.ListOrgNodeUserReq;
import cn.axzo.orgmanax.dto.nodeuser.req.ListNodeUserReq; 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.CooperationOrgDTO;
import cn.axzo.workflow.common.model.dto.UploadFieldDTO; import cn.axzo.workflow.common.model.dto.UploadFieldDTO;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO; 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_PENDING_TOPIC;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY; 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.nanopart.visa.server.utils.Constants.DATE_FORMAT;
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.PROCESSING;
/** /**
* @author xudawei * @author xudawei
@ -776,7 +776,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
ChangeRecord changeRecord = new ChangeRecord(); ChangeRecord changeRecord = new ChangeRecord();
changeRecord.setId(visaId); changeRecord.setId(visaId);
changeRecord.setApprovalId(processInstanceId); changeRecord.setApprovalId(processInstanceId);
changeRecord.setApprovalStatus(BpmnProcessInstanceResultEnum.PROCESSING.getStatus()); changeRecord.setApprovalStatus(PROCESSING.getStatus());
updateById(changeRecord); updateById(changeRecord);
// 设置关联表的审批信息 // 设置关联表的审批信息
@ -785,7 +785,7 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
processRelation.setVarName(VisaRelationFieldEnum.PROCESS_INSTANCE.getCode()); processRelation.setVarName(VisaRelationFieldEnum.PROCESS_INSTANCE.getCode());
processRelation.setVarType(VisaRelationVarTypeEnum.STRING.getType()); processRelation.setVarType(VisaRelationVarTypeEnum.STRING.getType());
processRelation.setContent(processInstanceId); processRelation.setContent(processInstanceId);
processRelation.setContentExt(BpmnProcessInstanceResultEnum.PROCESSING.getStatus()); processRelation.setContentExt(PROCESSING.getStatus());
changeRecordRelationService.save(processRelation); changeRecordRelationService.save(processRelation);
} }
@ -1386,6 +1386,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
req.setOperatorWorkspaceId(visa.getRelationWorkspaceId()); req.setOperatorWorkspaceId(visa.getRelationWorkspaceId());
validOperationPermission(req.getVisaId(), req.getOperatorPersonId(), req.getOperatorOuId(), req.getOperatorWorkspaceId()); 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 参数 // 组装 REQ 参数
VisaChangeApproveCreateReq createReq = buildVisaChangeApproveCreateReqByVisaId(req.getVisaId()); VisaChangeApproveCreateReq createReq = buildVisaChangeApproveCreateReqByVisaId(req.getVisaId());
AssertUtil.notNull(createReq, "未找到变洽签单据"); AssertUtil.notNull(createReq, "未找到变洽签单据");
@ -1398,10 +1402,6 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
createReq.setOperatorOuId(req.getOperatorOuId()); createReq.setOperatorOuId(req.getOperatorOuId());
createReq.setOperatorPersonId(req.getOperatorPersonId()); createReq.setOperatorPersonId(req.getOperatorPersonId());
createReq.setRelationWorkspaceId(req.getOperatorWorkspaceId()); createReq.setRelationWorkspaceId(req.getOperatorWorkspaceId());
String processInstanceId = createProcessInstance(createReq, req.getVisaId());
// 更新主表中的审批字段记录变量表的审批的信息
updateApprovalInfo(visa.getId(), processInstanceId);
// 更新主表状态 // 更新主表状态
changeStatus(ChangeStatusRequest.builder() changeStatus(ChangeStatusRequest.builder()
@ -1411,6 +1411,10 @@ public class ChangeRecordServiceImpl extends ServiceImpl<ChangeRecordDao, Change
.ouId(req.getOperatorOuId()) .ouId(req.getOperatorOuId())
.workspaceId(req.getOperatorWorkspaceId()) .workspaceId(req.getOperatorWorkspaceId())
.build()); .build());
String processInstanceId = createProcessInstance(createReq, req.getVisaId());
// 更新主表中的审批字段记录变量表的审批的信息
updateApprovalInfo(visa.getId(), processInstanceId);
return req.getVisaId(); return req.getVisaId();
} }