From d5a7d6da6152bc23070363040905bf72018c7293 Mon Sep 17 00:00:00 2001 From: linrf Date: Tue, 29 Aug 2023 10:54:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83=E6=B5=81=E7=A8=8B=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/docus/server/common/MsgConstants.java | 68 ------------------- .../docus/server/common/event/FlowEvent.java | 54 +++++++++++++++ .../common/event/FlowEventListener.java | 62 +++++++++++++++++ .../server/controller/FileController.java | 8 +++ .../server/service/IPublishEventService.java | 7 ++ .../service/impl/PublishEventService.java | 24 +++++++ 6 files changed, 155 insertions(+), 68 deletions(-) delete mode 100644 docus-segmentation/src/main/java/com/docus/server/common/MsgConstants.java create mode 100644 docus-segmentation/src/main/java/com/docus/server/common/event/FlowEvent.java create mode 100644 docus-segmentation/src/main/java/com/docus/server/common/event/FlowEventListener.java create mode 100644 docus-segmentation/src/main/java/com/docus/server/service/IPublishEventService.java create mode 100644 docus-segmentation/src/main/java/com/docus/server/service/impl/PublishEventService.java diff --git a/docus-segmentation/src/main/java/com/docus/server/common/MsgConstants.java b/docus-segmentation/src/main/java/com/docus/server/common/MsgConstants.java deleted file mode 100644 index 93cfeed..0000000 --- a/docus-segmentation/src/main/java/com/docus/server/common/MsgConstants.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.docus.server.common; - -public class MsgConstants { - - /** - * 客户端与采集调度器心跳 - */ - public static final String HEARTBEAT_REQUEST = "0"; - - /** - * 客户端上线注册 - */ - public static final String ONLINE_REGISTER = "1"; - - /** - * 客户端下线移除 - */ - public static final String OFFLINE_REMOVE = "2"; - - /** - * 客户端异常注册 - */ - public static final String EXCEPTION_REMOVE = "3"; - - /** - * 终端重启命令 - */ - public static final String TERMINATOR_RESTART = "4"; - - /** - * 采集器重启命令 - */ - public static final String COLLECTOR_RESTART = "5"; - - /** - * 虚拟机重启命令 - */ - public static final String VIRTUAL_RESTART = "6"; - - /** - * 更新采集器文件命令 - */ - public static final String UPDATE_COLLECTOR_FILE = "7"; - - /** - * 更新采集器配置命令 - */ - public static final String UPDATE_COLLECTOR_CONFIG = "8"; - - /** - * 采集调度器下发任务命令 - */ - public static final String SCH_DISTRIBUTE_TASKS = "9"; - /** - * 接收采集器上报的任务 - */ - public static final String REV_COLLECTOR_TASK = "10"; - - /** - * 是否有可用类型的采集器命令 - */ - public static final String HAS_VALID_COLLECTOR = "11"; - - /** - * 获取终端采集器数据量命令 - */ - public static final String HAS_COLLECTOR_COUNT = "12"; -} diff --git a/docus-segmentation/src/main/java/com/docus/server/common/event/FlowEvent.java b/docus-segmentation/src/main/java/com/docus/server/common/event/FlowEvent.java new file mode 100644 index 0000000..7458da7 --- /dev/null +++ b/docus-segmentation/src/main/java/com/docus/server/common/event/FlowEvent.java @@ -0,0 +1,54 @@ +package com.docus.server.common.event; + +import com.docus.infrastructure.core.db.enums.IIntegerEnum; +import lombok.Getter; +import org.springframework.context.ApplicationEvent; + +/** + * 流程事件 + */ +@Getter +public class FlowEvent extends ApplicationEvent { + /** + * 业务系统病案主键 + */ + private final String patientId; + /** + * 自动分段流程类型 + */ + private final FlowTypeEnum flowTypeEnum; + + public FlowEvent(Object source, String patientId, FlowTypeEnum flowTypeEnum) { + super(source); + this.patientId = patientId; + this.flowTypeEnum = flowTypeEnum; + } + + + public enum FlowTypeEnum implements IIntegerEnum { + // + START_SEGMENT(1, "开始分段事件"), + START_OCR(2, "开始OCR事件"), + START_UPLOAD(3, "开始上传归档系统事件"); + + + private Integer value; + private String display; + + FlowTypeEnum(Integer value, String display) { + this.value = value; + this.display = display; + } + + @Override + public Integer getValue() { + return null; + } + + @Override + public String getDisplay() { + return null; + } + } + +} diff --git a/docus-segmentation/src/main/java/com/docus/server/common/event/FlowEventListener.java b/docus-segmentation/src/main/java/com/docus/server/common/event/FlowEventListener.java new file mode 100644 index 0000000..217bb3c --- /dev/null +++ b/docus-segmentation/src/main/java/com/docus/server/common/event/FlowEventListener.java @@ -0,0 +1,62 @@ +package com.docus.server.common.event; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.event.EventListener; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +public class FlowEventListener { + + @EventListener + @Async("threadPoolExecutor") + public void flowListen(FlowEvent fileEvent) { + + String patientId = fileEvent.getPatientId(); + + FlowEvent.FlowTypeEnum flowTypeEnum = fileEvent.getFlowTypeEnum(); + + switch (flowTypeEnum) { + case START_SEGMENT: + startSegment(patientId); + break; + case START_OCR: + startOcr(patientId); + break; + case START_UPLOAD: + startUpload(patientId); + break; + default: + break; + } + + } + + /** + * 开始上传归档系统 + * + * @param patientId + */ + private void startUpload(String patientId) { + System.out.println(patientId); + } + + /** + * 开始进行ocr识别 + * + * @param patientId + */ + private void startOcr(String patientId) { + System.out.println(patientId); + } + + /** + * 开始分段 + * + * @param patientId + */ + private void startSegment(String patientId) { + System.out.println(patientId); + } +} diff --git a/docus-segmentation/src/main/java/com/docus/server/controller/FileController.java b/docus-segmentation/src/main/java/com/docus/server/controller/FileController.java index 60e0295..b3b6465 100644 --- a/docus-segmentation/src/main/java/com/docus/server/controller/FileController.java +++ b/docus-segmentation/src/main/java/com/docus/server/controller/FileController.java @@ -1,7 +1,9 @@ package com.docus.server.controller; +import com.docus.server.common.event.FlowEvent; import com.docus.server.common.service.IFileUploadService; import com.docus.server.dto.segmentation.UploadBatchFileRequest; +import com.docus.server.service.IPublishEventService; import com.docus.server.service.impl.CommonService; import com.docus.server.service.impl.DownloadServiceImpl; import com.docus.server.vo.scheduling.management.schcollectorversionfile.UploadFileVO; @@ -37,6 +39,8 @@ public class FileController { private DownloadServiceImpl downloadService; @Resource private CommonService commonService; + @Resource + private IPublishEventService iPublishEventService; @ApiOperation("文件下载") @GetMapping("/download") @@ -51,10 +55,14 @@ public class FileController { }) public void uploadFile(@RequestPart("files") MultipartFile[] files, @Validated UploadBatchFileRequest request) throws Exception { List segmentation = iFileUploadService.uploadFile(files, "segmentation"); + //将基础信息存到库表里面,后面自动分段后,需要上传到归档系统 commonService.add(segmentation, request); + + iPublishEventService.publishEvent(request.getPatientId(), FlowEvent.FlowTypeEnum.START_SEGMENT); } + /** * 下载平台 * diff --git a/docus-segmentation/src/main/java/com/docus/server/service/IPublishEventService.java b/docus-segmentation/src/main/java/com/docus/server/service/IPublishEventService.java new file mode 100644 index 0000000..2739b0f --- /dev/null +++ b/docus-segmentation/src/main/java/com/docus/server/service/IPublishEventService.java @@ -0,0 +1,7 @@ +package com.docus.server.service; + +import com.docus.server.common.event.FlowEvent; + +public interface IPublishEventService { + void publishEvent(String patientId, FlowEvent.FlowTypeEnum flowTypeEnum); +} diff --git a/docus-segmentation/src/main/java/com/docus/server/service/impl/PublishEventService.java b/docus-segmentation/src/main/java/com/docus/server/service/impl/PublishEventService.java new file mode 100644 index 0000000..344fe79 --- /dev/null +++ b/docus-segmentation/src/main/java/com/docus/server/service/impl/PublishEventService.java @@ -0,0 +1,24 @@ +package com.docus.server.service.impl; + +import com.docus.server.common.event.FlowEvent; +import com.docus.server.service.IPublishEventService; +import org.springframework.context.ApplicationContext; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class PublishEventService implements IPublishEventService { + + @Resource + private ApplicationContext applicationContext; + + /** + * 发布事件 + */ + @Override + public void publishEvent(String patientId, FlowEvent.FlowTypeEnum flowTypeEnum) { + applicationContext.publishEvent(new FlowEvent(this, patientId, flowTypeEnum)); + } + +}