REQ-3982: fix bugs

This commit is contained in:
yanglin 2025-04-27 17:39:36 +08:00
parent 6ff0129ada
commit 654dc4cc7f
3 changed files with 307 additions and 22 deletions

View File

@ -61,18 +61,14 @@ public class CompleteVisaChangeStampHandler implements ProcessInstanceEventHandl
.orElse(null);
ChangeRecord changeRecord = changeRecordService.getById(visaId);
VisaProcessPhase phase = Objects.equals(dto.getProcessInstanceId(), changeRecord.getApprovalId())
? VisaProcessPhase.PROJECT
: VisaProcessPhase.PAYMENT;
VisaRelationFieldEnum fieldType = phase == VisaProcessPhase.PROJECT
? VisaRelationFieldEnum.PROCESS_INSTANCE_OF_ESS
: VisaRelationFieldEnum.PROCESS_INSTANCE_OF_ESS_PAY;
VisaRelationDto visaRelationDto = VisaRelationDto.builder()
List<ChangeRecordRelation> allRecordRelations = changeRecordRelationService.findByCondition(VisaRelationDto.builder()
.visaId(visaId)
.varName(fieldType.name())
.build();
List<ChangeRecordRelation> allRecordRelations = changeRecordRelationService.findByCondition(visaRelationDto);
.varName(VisaRelationFieldEnum.PROCESS_INSTANCE_OF_ESS.name())
.build());
allRecordRelations.addAll(changeRecordRelationService.findByCondition(VisaRelationDto.builder()
.visaId(visaId)
.varName(VisaRelationFieldEnum.PROCESS_INSTANCE_OF_ESS_PAY.name())
.build()));
List<ChangeRecordRelation> changeRecordRelations = allRecordRelations.stream()
.filter(e -> Objects.equals(JSON.parseObject(e.getContent()).getString("approvalId"), dto.getProcessInstanceId()))
@ -82,6 +78,15 @@ public class CompleteVisaChangeStampHandler implements ProcessInstanceEventHandl
return;
}
String varName = changeRecordRelations.get(0).getVarName();
VisaProcessPhase phase = varName.equals(VisaRelationFieldEnum.PROCESS_INSTANCE_OF_ESS.name())
? VisaProcessPhase.PROJECT
: VisaProcessPhase.PAYMENT;
allRecordRelations = allRecordRelations.stream()
.filter(r -> r.getVarName().equals(varName))
.collect(Collectors.toList());
if (changeRecordRelations.size() > 1) {
log.warn("CompleteVisaChangeStampHandler 用印审核完成数据异常找到多条对应的用印申请记录visaId,{}; processInstanceId,{}", visaId, dto.getProcessInstanceId());
}

View File

@ -12,7 +12,6 @@ import com.alibaba.fastjson.JSON;
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.VisaProcessPhase;
import cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum;
import cn.axzo.nanopart.visa.server.config.RefreshableConfiguration;
import cn.axzo.nanopart.visa.server.domain.ChangeRecord;
@ -98,7 +97,7 @@ public class ProcessInstanceOfEssAllEventHandler extends BasicLogSupport impleme
changeProcessInstanceOfEss(dto);
}
private void changeProcessInstanceOfEss(ProcessInstanceDTO dto) {
public 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())
@ -110,16 +109,14 @@ public class ProcessInstanceOfEssAllEventHandler extends BasicLogSupport impleme
log.error("visa not found, visaId: {}", visaId);
return;
}
VisaProcessPhase phase = Objects.equals(dto.getProcessInstanceId(), visa.getApprovalId())
? VisaProcessPhase.PROJECT
: VisaProcessPhase.PAYMENT;
VisaRelationFieldEnum fieldType = phase == VisaProcessPhase.PROJECT
? VisaRelationFieldEnum.PROCESS_INSTANCE_OF_ESS
: VisaRelationFieldEnum.PROCESS_INSTANCE_OF_ESS_PAY;
List<ChangeRecordRelation> essInstances = changeRecordRelationService.findByCondition(VisaRelationDto.builder()
.visaId(visaId)
.varName(fieldType.name())
List<ChangeRecordRelation> essInstances = changeRecordRelationService.findByCondition(VisaRelationDto.builder() //
.visaId(visaId) //
.varName(VisaRelationFieldEnum.PROCESS_INSTANCE_OF_ESS.name()) //
.build());
essInstances.addAll(changeRecordRelationService.findByCondition(VisaRelationDto.builder() //
.visaId(visaId) //
.varName(VisaRelationFieldEnum.PROCESS_INSTANCE_OF_ESS_PAY.name()) //
.build()));
essInstances.forEach(e -> {
String approvalId = JSON.parseObject(e.getContent(), RelationEssContextDto.class).getApprovalId();
e.setUpdateBy(operatorId);