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"; import { SportStandardService } from "../sport-standard/sportStandard.service"; import { uuidv4 } from "lib0/random"; @Injectable() export class TrainSituationService extends BaseService { constructor(private readonly staffService:StaffService,private readonly sportStandardService:SportStandardService) { 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) { 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() async createTrainSituation(args:{ staffId?:string, trainContentId?:string, mustTrainTime?:number, alreadyTrainTime?:number, value?:string, projectUnit?:string, personType?:string, projectId?:string, gender?:boolean, age?:number, performance?:number|string, },groupId?:string){ console.log("传入的参数",args) const score = await this.sportStandardService.getScore({ projectId:args.projectId, gender:args.gender, age:args.age, performance:args.performance, personType:args.personType, projectUnit:args.projectUnit }) console.log("计算出的分数",score) const data : Prisma.TrainSituationCreateArgs = { data:{ staffId:args.staffId, trainContentId:args.trainContentId, mustTrainTime:args.mustTrainTime, alreadyTrainTime:args.alreadyTrainTime, value:args.value, score:score, groupId:groupId } } console.log("创建的数据",data) const result = await super.create(data); this.emitDataChanged(CrudOperation.CREATED, result); return result; } async createManyTrainSituation(args:{ staffId?:string, trainContentId?:string, mustTrainTime?:number, alreadyTrainTime?:number, value?:string, projectUnit?:string, personType?:string, projectId?:string, gender?:boolean, age?:number, performance?:number|string, }[]){ console.log("传入的参数",args) const groupId = uuidv4(); args.forEach(async (item)=>{ await this.createTrainSituation(item,groupId) }) } async deleteSameGroupTrainSituation(args:{groupId?:string}){ const {groupId} = args const result = await super.deleteMany({ where:{ groupId } }) this.emitDataChanged(CrudOperation.DELETED,result) return result } // 发送数据变化事件 private emitDataChanged(operation: CrudOperation, data: any) { EventBus.emit('dataChanged', { type:ObjectType.TRAIN_SITUATION, operation, data, }); } }