import { Injectable } from "@nestjs/common"; import { BaseService } from "../base/base.service"; import { db, ObjectType, Prisma, UserProfile } from "@nice/common"; import EventBus, { CrudOperation } from "@server/utils/event-bus"; import { DefaultArgs } from "@prisma/client/runtime/library"; import { StaffService } from "../staff/staff.service"; @Injectable() export class TrainSituationService extends BaseService { constructor(private readonly staffService:StaffService) { super(db,ObjectType.TRAIN_SITUATION,false); } // 创建培训情况 async create( args: Prisma.TrainSituationCreateArgs, ){ console.log(args) const result = await super.create(args); this.emitDataChanged(CrudOperation.CREATED, result); return result; } // 更新培训情况 async update( args: Prisma.TrainSituationUpdateArgs, ){ const result = await super.update(args); this.emitDataChanged(CrudOperation.UPDATED, result); return result; } // 查找培训情况 async findMany(args: Prisma.TrainSituationFindManyArgs): Promise<{ id: string; staffId: string; trainContentId: string; mustTrainTime: number; alreadyTrainTime: number; score: number; }[]> { const result = await super.findMany(args); return result; } // 查找某一单位所有人员的培训情况 async findManyByDeptId(args:{ deptId?:string, domainId?:string, trainContentId?:string }):Promise<{ id: string; staffId: string; trainContentId: string; mustTrainTime: number; alreadyTrainTime: number; score: number; }[]> { const staffs = await this.staffService.findByDept({deptId:args.deptId,domainId:args.domainId}) const result = await super.findMany({ where:{ staffId:{ in:staffs.map(staff=>staff.id) }, ...(args.trainContentId ? {trainContentId:args.trainContentId} : {}) } }) return result } //async createDailyTrainTime() // 发送数据变化事件 private emitDataChanged(operation: CrudOperation, data: any) { EventBus.emit('dataChanged', { type:ObjectType.TRAIN_SITUATION, operation, data, }); } }