REQ-3982: fix bugs

This commit is contained in:
yanglin 2025-04-28 10:38:44 +08:00
parent fa0913b715
commit f3bcfa6f20
4 changed files with 25 additions and 11 deletions

View File

@ -57,7 +57,8 @@ public class UpdateVisaChangeReq {
CANCEL("取消用印"),
TX_CANCEL("腾讯侧撤销合同"),
// 所有审批流审批完成时自动完成审批要区别手动完成用印操作记录日志
AUTO_COMPLETE("自动完成用印");
AUTO_COMPLETE("自动完成用印"),
ALL_PROCESS_REJECTED("用印申请全被驳回");
private String desc;
}

View File

@ -233,6 +233,7 @@ public class ChangeRecord extends BaseEntity<ChangeRecord> {
VISA_STAMP_STATUS_ACTION.put(VisaStampStatusEnum.WITH_PRINT, UpdateVisaChangeReq.VisaStampAction.COMPLETE, VisaStampStatusEnum.USED_PRINTS);
VISA_STAMP_STATUS_ACTION.put(VisaStampStatusEnum.WITH_PRINT, UpdateVisaChangeReq.VisaStampAction.CANCEL, VisaStampStatusEnum.UNPRINTED);
VISA_STAMP_STATUS_ACTION.put(VisaStampStatusEnum.WITH_PRINT, UpdateVisaChangeReq.VisaStampAction.TX_CANCEL, VisaStampStatusEnum.UNPRINTED);
VISA_STAMP_STATUS_ACTION.put(VisaStampStatusEnum.WITH_PRINT, UpdateVisaChangeReq.VisaStampAction.ALL_PROCESS_REJECTED, VisaStampStatusEnum.UNPRINTED);
VISA_STAMP_STATUS_ACTION.put(VisaStampStatusEnum.WITH_PRINT, UpdateVisaChangeReq.VisaStampAction.AUTO_COMPLETE, VisaStampStatusEnum.USED_PRINTS);
}

View File

@ -49,8 +49,17 @@ public class CompleteVisaChangeStampHandler implements ProcessInstanceEventHandl
return Objects.equals(dto.getProcessDefinitionKey(), refreshableConfiguration.getStampProcessDefinitionKey());
}
@Override
public void onRejected(ProcessInstanceDTO dto) {
process(dto, BpmnProcessInstanceResultEnum.REJECTED);
}
@Override
public void onCompleted(ProcessInstanceDTO dto) {
process(dto, BpmnProcessInstanceResultEnum.APPROVED);
}
private void process(ProcessInstanceDTO dto, BpmnProcessInstanceResultEnum result) {
Long visaId = Long.valueOf(dto.getBusinessKey());
log.info("CompleteVisaChangeStampHandler visaId, {}", visaId);
Long operatorId = Optional.ofNullable(dto.getLastOperationAssigner())
@ -96,32 +105,35 @@ public class CompleteVisaChangeStampHandler implements ProcessInstanceEventHandl
ChangeRecordRelation update = new ChangeRecordRelation();
update.setId(changeRecordRelation.getId());
update.setContentExt(BpmnProcessInstanceResultEnum.APPROVED.getStatus());
update.setContentExt(result.getStatus());
update.setUpdateBy(operatorId);
changeRecordRelationService.updateById(update);
boolean approved = allRecordRelations.stream()
boolean approvedOrRejected = allRecordRelations.stream()
.filter(e -> !Objects.equals(e.getVarExt(), changeRecordRelation.getVarExt()))
.collect(Collectors.groupingBy(ChangeRecordRelation::getVarExt))
.entrySet()
.stream()
.allMatch(e -> e.getValue().stream()
.anyMatch(relation -> Objects.equals(BpmnProcessInstanceResultEnum.APPROVED.getStatus(), relation.getContentExt())));
if (approved) {
.anyMatch(relation -> Objects.equals(result.getStatus(), relation.getContentExt())));
if (approvedOrRejected) {
// 有可能用户在界面手动完成用印 这里就无法自动完成
if (Objects.isNull(changeRecord) || !Objects.equals(changeRecord.getStampStatus(), VisaStampStatusEnum.WITH_PRINT)) {
log.info("CompleteVisaChangeStampHandler changeRecord stampStatus not withPrint");
return;
}
boolean approved = result == BpmnProcessInstanceResultEnum.APPROVED;
changeRecordService.update(UpdateVisaChangeReq.builder()
.visaId(visaId)
.phase(phase)
.operatorId(operatorId)
.operatorName(operatorName)
.visaStampAction(UpdateVisaChangeReq.VisaStampAction.AUTO_COMPLETE)
.scene("用印审批完成,自动完成用印申请")
.context("stamp:autoComplete")
.visaStampAction(approved
? UpdateVisaChangeReq.VisaStampAction.AUTO_COMPLETE
: UpdateVisaChangeReq.VisaStampAction.ALL_PROCESS_REJECTED)
.scene(approved ? "用印审批完成,自动完成用印申请" : "用印审批全被驳回,设置成未用印")
.context(approved ? "stamp:autoComplete" : "stamp:allProcessRejected")
.build());
}
}

View File

@ -125,9 +125,9 @@ public class ProcessInstanceOfEssAllEventHandler extends BasicLogSupport impleme
// case PROCESS_INSTANCE_COMPLETED:
// e.setContentExt(BpmnProcessInstanceResultEnum.APPROVED.getStatus());
// break;
case PROCESS_INSTANCE_REJECTED:
e.setContentExt(BpmnProcessInstanceResultEnum.REJECTED.getStatus());
break;
// case PROCESS_INSTANCE_REJECTED:
// e.setContentExt(BpmnProcessInstanceResultEnum.REJECTED.getStatus());
// break;
case PROCESS_INSTANCE_ABORTED:
e.setContentExt(BpmnProcessInstanceResultEnum.ABORTED.getStatus());
break;