feat(REQ-3581) - 增加单位用印申请的审批结果处理

This commit is contained in:
wangli 2025-02-25 21:32:23 +08:00
parent 4322137f97
commit ff56ab10a8
4 changed files with 163 additions and 16 deletions

View File

@ -4,6 +4,7 @@ import cn.axzo.framework.rocketmq.Event;
import cn.axzo.framework.rocketmq.EventConsumer;
import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum;
import cn.axzo.nanopart.visa.api.request.UpdateVisaChangeReq;
import cn.axzo.nanopart.visa.server.config.RefreshableConfiguration;
import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation;
import cn.axzo.nanopart.visa.server.dto.VisaRelationDto;
import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService;
@ -34,10 +35,12 @@ public class CompleteVisaChangeStampHandler implements ProcessInstanceEventHandl
private ChangeRecordRelationService changeRecordRelationService;
@Autowired
private ChangeRecordService changeRecordService;
@Autowired
private RefreshableConfiguration refreshableConfiguration;
@Override
public boolean accept(ProcessInstanceDTO dto, Event event, EventConsumer.Context context) {
return Objects.equals(dto.getProcessDefinitionKey(), "bgqzyy");
return Objects.equals(dto.getProcessDefinitionKey(), refreshableConfiguration.getStampProcessDefinitionKey());
}
@Override

View File

@ -0,0 +1,149 @@
package cn.axzo.nanopart.visa.server.mq.listener.workflow.process;
import cn.axzo.framework.rocketmq.Event;
import cn.axzo.framework.rocketmq.EventConsumer;
import cn.axzo.framework.rocketmq.EventProducer;
import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum;
import cn.axzo.nanopart.visa.api.enums.VisaStampStatusEnum;
import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum;
import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum;
import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest;
import cn.axzo.nanopart.visa.server.config.RefreshableConfiguration;
import cn.axzo.nanopart.visa.server.domain.ChangeRecord;
import cn.axzo.nanopart.visa.server.domain.ChangeRecordLog;
import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation;
import cn.axzo.nanopart.visa.server.dto.RelationEssContextDto;
import cn.axzo.nanopart.visa.server.dto.VisaRelationDto;
import cn.axzo.nanopart.visa.server.mq.listener.workflow.BasicLogSupport;
import cn.axzo.nanopart.visa.server.mq.producer.VisaChangeLogPayload;
import cn.axzo.nanopart.visa.server.rpc.VisaOrganizationalNodeUserGateway;
import cn.axzo.nanopart.visa.server.service.ChangeRecordBillService;
import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService;
import cn.axzo.nanopart.visa.server.service.ChangeRecordService;
import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
import cn.axzo.workflow.common.model.response.mq.ProcessInstanceDTO;
import cn.axzo.workflow.starter.handler.ProcessInstanceEventHandler;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY;
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_VISA;
import static cn.axzo.nanopart.visa.api.enums.VisaTypeEnum.DESIGN_CHANGE;
import static cn.axzo.nanopart.visa.api.enums.VisaTypeEnum.PROJECT_VISA;
import static cn.axzo.nanopart.visa.api.enums.VisaTypeEnum.TECHNOLOGY_APPROVED;
/**
* 工作流广播的实例维度的所有事件类型
*
* @author wangli
* @since 2025-01-17 11:35
*/
@Slf4j
@Component
public class ProcessInstanceOfEssAllEventHandler extends BasicLogSupport implements ProcessInstanceEventHandler {
private final RefreshableConfiguration refreshableConfiguration;
private final ChangeRecordRelationService changeRecordRelationService;
public ProcessInstanceOfEssAllEventHandler(EventProducer eventProducer,
VisaOrganizationalNodeUserGateway visaOrganizationalNodeUserGateway,
RefreshableConfiguration refreshableConfiguration,
ChangeRecordRelationService changeRecordRelationService) {
super(eventProducer, visaOrganizationalNodeUserGateway);
this.refreshableConfiguration = refreshableConfiguration;
this.changeRecordRelationService = changeRecordRelationService;
}
@Override
public int getOrder() {
return Integer.MIN_VALUE;
}
@Override
public boolean accept(ProcessInstanceDTO dto, Event event, EventConsumer.Context context) {
return Objects.equals(dto.getProcessDefinitionKey(), refreshableConfiguration.getStampProcessDefinitionKey());
}
@Override
public void onCreated(ProcessInstanceDTO dto) {
ProcessInstanceEventHandler.super.onCreated(dto);
}
@Override
public void onCompleted(ProcessInstanceDTO dto) {
changeProcessInstanceOfEss(dto);
}
/**
* 流程撤回
*
* @param dto
*/
@Override
public void onCancelled(ProcessInstanceDTO dto) {
changeProcessInstanceOfEss(dto);
}
/**
* 流程驳回
*
* @param dto
*/
@Override
public void onRejected(ProcessInstanceDTO dto) {
changeProcessInstanceOfEss(dto);
}
@Override
public void onAborted(ProcessInstanceDTO dto) {
changeProcessInstanceOfEss(dto);
}
private void changeProcessInstanceOfEss(ProcessInstanceDTO dto) {
log.info("change process instance of ess: {}, instance result: {}", dto.getProcessInstanceId(), dto.getType().getTag());
Long visaId = Long.valueOf(dto.getBusinessKey());
Long operatorId = Optional.ofNullable(dto.getLastOperationAssigner())
.map(e -> Long.valueOf(e.getPersonId()))
.orElse(null);
List<ChangeRecordRelation> essInstances = changeRecordRelationService.findByCondition(VisaRelationDto.builder()
.visaId(visaId)
.varName(VisaRelationFieldEnum.PROCESS_INSTANCE_OF_ESS.name())
.build());
essInstances.forEach(e -> {
String approvalId = JSON.parseObject(e.getContent(), RelationEssContextDto.class).getApprovalId();
if (Objects.equals(approvalId, dto.getProcessInstanceId())) {
switch (dto.getType()) {
case PROCESS_INSTANCE_COMPLETED:
e.setContentExt(BpmnProcessInstanceResultEnum.APPROVED.getStatus());
break;
case PROCESS_INSTANCE_REJECTED:
e.setContentExt(BpmnProcessInstanceResultEnum.REJECTED.getStatus());
break;
case PROCESS_INSTANCE_ABORTED:
e.setContentExt(BpmnProcessInstanceResultEnum.ABORTED.getStatus());
break;
case PROCESS_INSTANCE_CANCELLED:
e.setContentExt(BpmnProcessInstanceResultEnum.CANCELLED.getStatus());
break;
default:
break;
}
}
e.setUpdateBy(operatorId);
changeRecordRelationService.save(e);
log.info("change success process instance of ess : {}", dto.getProcessInstanceId());
});
}
}

View File

@ -7,7 +7,6 @@ import cn.axzo.nanopart.visa.api.enums.VisaStampStatusEnum;
import cn.axzo.nanopart.visa.api.enums.VisaStatusEnum;
import cn.axzo.nanopart.visa.api.enums.VisaTypeEnum;
import cn.axzo.nanopart.visa.api.request.ChangeStatusRequest;
import cn.axzo.nanopart.visa.server.config.RefreshableConfiguration;
import cn.axzo.nanopart.visa.server.domain.ChangeRecord;
import cn.axzo.nanopart.visa.server.domain.ChangeRecordLog;
import cn.axzo.nanopart.visa.server.domain.ChangeRecordRelation;
@ -44,29 +43,25 @@ import static cn.axzo.nanopart.visa.api.enums.VisaTypeEnum.TECHNOLOGY_APPROVED;
* @since 2025-01-17 11:35
*/
@Component
public class ProcessInstanceAllEventHandler extends BasicLogSupport implements ProcessInstanceEventHandler {
public class ProcessInstanceOfVisaAllEventHandler extends BasicLogSupport implements ProcessInstanceEventHandler {
protected final ChangeRecordService changeRecordService;
protected final ChangeRecordRelationService changeRecordRelationService;
protected final ChangeRecordBillService changeRecordBillService;
protected final RefreshableConfiguration refreshableConfiguration;
public final static List<String> SUPPORTED_DEFINITION_KEYS = Lists.newArrayList(
DESIGN_CHANGE.getProcessDefinitionKey(),
TECHNOLOGY_APPROVED.getProcessDefinitionKey(),
PROJECT_VISA.getProcessDefinitionKey()
);
public ProcessInstanceAllEventHandler(EventProducer eventProducer,
VisaOrganizationalNodeUserGateway visaOrganizationalNodeUserGateway,
ChangeRecordService changeRecordService,
ChangeRecordRelationService changeRecordRelationService,
ChangeRecordBillService changeRecordBillService,
RefreshableConfiguration refreshableConfiguration) {
public ProcessInstanceOfVisaAllEventHandler(EventProducer eventProducer,
VisaOrganizationalNodeUserGateway visaOrganizationalNodeUserGateway,
ChangeRecordService changeRecordService,
ChangeRecordRelationService changeRecordRelationService,
ChangeRecordBillService changeRecordBillService) {
super(eventProducer, visaOrganizationalNodeUserGateway);
this.changeRecordService = changeRecordService;
this.changeRecordRelationService = changeRecordRelationService;
this.changeRecordBillService = changeRecordBillService;
this.refreshableConfiguration = refreshableConfiguration;
SUPPORTED_DEFINITION_KEYS.add(refreshableConfiguration.getStampProcessDefinitionKey());
}
@Override

View File

@ -17,7 +17,7 @@ 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;
import static cn.axzo.nanopart.visa.server.mq.listener.workflow.process.ProcessInstanceAllEventHandler.SUPPORTED_DEFINITION_KEYS;
import static cn.axzo.nanopart.visa.server.mq.listener.workflow.process.ProcessInstanceOfVisaAllEventHandler.SUPPORTED_DEFINITION_KEYS;
/**
* 工作流广播的任务维度的所有事件类型
@ -26,10 +26,10 @@ import static cn.axzo.nanopart.visa.server.mq.listener.workflow.process.ProcessI
* @since 2025-01-17 11:34
*/
@Component
@DependsOn("processInstanceAllEventHandler")
public class ProcessTaskAllEventHandler extends BasicLogSupport implements ProcessTaskEventHandler {
@DependsOn("processInstanceOfVisaAllEventHandler")
public class ProcessTaskOfVisaAllEventHandler extends BasicLogSupport implements ProcessTaskEventHandler {
public ProcessTaskAllEventHandler(EventProducer eventProducer, VisaOrganizationalNodeUserGateway visaOrganizationalNodeUserGateway) {
public ProcessTaskOfVisaAllEventHandler(EventProducer eventProducer, VisaOrganizationalNodeUserGateway visaOrganizationalNodeUserGateway) {
super(eventProducer, visaOrganizationalNodeUserGateway);
}