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 }; } }