From 184d84726e229a7353c943825e06a8f4f273e068 Mon Sep 17 00:00:00 2001 From: mozzie Date: Fri, 1 Sep 2023 14:11:16 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=8A=E4=BC=A0=E5=85=A8=E9=83=A8?= =?UTF-8?q?=E5=BD=B1=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/dmp/core/domain/User/UserService.ts | 1 - .../Admin/Dicom/Upload/AssignModal.tsx | 43 +++++++ .../Admin/Dicom/Upload/DicomFileInfo.tsx | 25 ++++ .../Admin/Dicom/Upload/DicomTable/columns.tsx | 38 +++--- .../Admin/Dicom/Upload/DicomUploader/util.ts | 62 +++++----- .../Dicom/Upload/UploadProgressModal.tsx | 20 ++++ .../src/modules/Admin/Dicom/Upload/index.tsx | 111 ++++++++---------- .../dmp/archive/src/app.controller.ts | 4 +- apps/services/dmp/archive/src/app.module.ts | 4 +- apps/services/dmp/archive/src/app.service.ts | 30 ++++- .../{archiveTask.ts => archiveTask.entity.ts} | 8 +- .../dmp/gateway/src/admin/admin.controller.ts | 6 +- 12 files changed, 231 insertions(+), 121 deletions(-) create mode 100644 apps/dmp/src/modules/Admin/Dicom/Upload/AssignModal.tsx create mode 100644 apps/dmp/src/modules/Admin/Dicom/Upload/DicomFileInfo.tsx create mode 100644 apps/dmp/src/modules/Admin/Dicom/Upload/UploadProgressModal.tsx rename apps/services/dmp/archive/src/entity/{archiveTask.ts => archiveTask.entity.ts} (74%) diff --git a/apps/dmp/core/domain/User/UserService.ts b/apps/dmp/core/domain/User/UserService.ts index 5481ceb..1e75226 100644 --- a/apps/dmp/core/domain/User/UserService.ts +++ b/apps/dmp/core/domain/User/UserService.ts @@ -54,7 +54,6 @@ export class UserService { * 分配标注序列 */ async createArchiveTask(user: User, study: Study[]) { - console.log(user, study); return await this.userRepository.createArchiveTask({ user, study }); } } diff --git a/apps/dmp/src/modules/Admin/Dicom/Upload/AssignModal.tsx b/apps/dmp/src/modules/Admin/Dicom/Upload/AssignModal.tsx new file mode 100644 index 0000000..4db5d8f --- /dev/null +++ b/apps/dmp/src/modules/Admin/Dicom/Upload/AssignModal.tsx @@ -0,0 +1,43 @@ +import React from "react"; +import { Modal, Select } from "antd"; + +interface AssignModalProps { + isOpen: boolean; + options: { value: unknown; label: unknown }[]; + value: number | undefined; + onSelectAnnotator: (id: number) => void; + onConfirm: () => void; + onCancel: () => void; +} + +const AssignModal: React.FC = ({ + isOpen, + options, + value, + onSelectAnnotator, + onConfirm, + onCancel, +}) => { + return ( + + - setSelectAnnotator(annotators.find((a) => a.id === id)) - } - options={annotators.map((a) => ({ - value: a.id, - label: a.username, - }))} - /> - - - - + /> + {contextHolder} ); diff --git a/apps/services/dmp/archive/src/app.controller.ts b/apps/services/dmp/archive/src/app.controller.ts index 3d8eee2..7833058 100644 --- a/apps/services/dmp/archive/src/app.controller.ts +++ b/apps/services/dmp/archive/src/app.controller.ts @@ -8,8 +8,6 @@ export class AppController { @EventPattern({ cmd: 'archive.task.create' }) async createArchiveTask(payload) { - const { annotatorId, study } = payload; - console.log(study); - return 123; + return await this.appService.createArchiveTask(payload); } } diff --git a/apps/services/dmp/archive/src/app.module.ts b/apps/services/dmp/archive/src/app.module.ts index 551f984..6f88b3c 100644 --- a/apps/services/dmp/archive/src/app.module.ts +++ b/apps/services/dmp/archive/src/app.module.ts @@ -4,7 +4,7 @@ import { AppService } from './app.service'; import { NacosModule } from './nacos/nacos.module'; import { ConfigModule } from '@nestjs/config'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { ArchiveTask } from './entity/archiveTask'; +import { ArchiveTask } from './entity/archiveTask.entity'; @Module({ imports: [ @@ -19,7 +19,7 @@ import { ArchiveTask } from './entity/archiveTask'; port: 3306, username: 'root', password: 'root', - database: 'dicom', + database: 'dmp', entities: [__dirname + '/**/*.entity{.ts,.js}'], synchronize: true, timezone: 'Asia/Shanghai', // 这里设置了时区 diff --git a/apps/services/dmp/archive/src/app.service.ts b/apps/services/dmp/archive/src/app.service.ts index 7263d33..5afe82a 100644 --- a/apps/services/dmp/archive/src/app.service.ts +++ b/apps/services/dmp/archive/src/app.service.ts @@ -1,4 +1,32 @@ import { Injectable } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { ArchiveTask } from './entity/archiveTask.entity'; +import { Repository } from 'typeorm'; @Injectable() -export class AppService {} +export class AppService { + constructor( + @InjectRepository(ArchiveTask) + private readonly archiveTaskRepository: Repository, + ) {} + async createArchiveTask(payload) { + const { annotatorId, study } = payload; + try { + for (let i = 0; i < study.length; i++) { + const { StudyInstanceUID, PatientID } = study[i]; + for (let j = 0; j < study[i].subs.length; j++) { + const { SeriesInstanceUID } = study[i].subs[j]; + await this.archiveTaskRepository.save({ + annotatorId, + PatientID, + StudyInstanceUID, + SeriesInstanceUID, + }); + } + } + return { success: true }; + } catch (error) { + return { success: false, error }; + } + } +} diff --git a/apps/services/dmp/archive/src/entity/archiveTask.ts b/apps/services/dmp/archive/src/entity/archiveTask.entity.ts similarity index 74% rename from apps/services/dmp/archive/src/entity/archiveTask.ts rename to apps/services/dmp/archive/src/entity/archiveTask.entity.ts index a8257a4..1e93dda 100644 --- a/apps/services/dmp/archive/src/entity/archiveTask.ts +++ b/apps/services/dmp/archive/src/entity/archiveTask.entity.ts @@ -3,9 +3,12 @@ import { CreateDateColumn, Entity, PrimaryGeneratedColumn, + Unique, UpdateDateColumn, } from 'typeorm'; + @Entity() +@Unique(['annotatorId', 'StudyInstanceUID', 'SeriesInstanceUID']) export class ArchiveTask { @PrimaryGeneratedColumn() id: number; @@ -14,7 +17,10 @@ export class ArchiveTask { annotatorId: number; @Column() - StudyInstanceUID; + PatientID: string; + + @Column() + StudyInstanceUID: string; @Column() SeriesInstanceUID: string; diff --git a/apps/services/dmp/gateway/src/admin/admin.controller.ts b/apps/services/dmp/gateway/src/admin/admin.controller.ts index 6ffc786..241589a 100644 --- a/apps/services/dmp/gateway/src/admin/admin.controller.ts +++ b/apps/services/dmp/gateway/src/admin/admin.controller.ts @@ -17,10 +17,10 @@ export class AdminController { @Post('createArchiveTask') async createArchiveTask(@Body() body) { const { user, study } = body; - const { annotatorId } = user; - const { data } = await firstValueFrom( + const { id: annotatorId } = user; + const { success, error } = await firstValueFrom( this.client.send({ cmd: 'archive.task.create' }, { annotatorId, study }), ); - return { data, code: 0 }; + return success ? { code: 0 } : { code: 1, msg: error.code }; } }