/// <summary> /// 创建一个日常任务类别 /// </summary> /// <param name="procedureStep"></param> /// <returns></returns> public async Task <ProcedureStep> CreateRoutineCategory(ProcedureStep procedureStep) { var procedure = GetAll().FirstOrDefault(v => v.IsRoutine); // 如果为空则要新建一个procedure if (procedure == null) { procedure = new Procedure { TenantId = CurrentUnitOfWork.GetTenantId(), Name = "日常", Description = "这是日常任务工序模板", IsRoutine = true }; await InsertAsync(procedure); } // 给日常procedureId赋值 procedureStep.ProcedureId = procedure.Id; procedureStep.NumTaskItems = _repositoryProcedureStepTaskItem.GetAll() .Count(v => v.ProcedureStepId == procedureStep.Id); // 插入或者更新每一道工序 await _repositoryProcedureStep.InsertOrUpdateAsync(procedureStep); return(procedureStep); }
/// <summary> /// 创建更新每一道工序 /// </summary> /// <param name="procedureStep"></param> /// <returns></returns> /// <exception cref="UserFriendlyException"></exception> public async Task <ProcedureStep> CreateOrUpdateProcedureStepAsync(ProcedureStep procedureStep) { procedureStep.NumTaskItems = _repositoryProcedureStepTaskItem.GetAll() .Count(v => v.ProcedureStepId == procedureStep.Id); // 插入或者更新每一道工序 await _repositoryProcedureStep.InsertOrUpdateAsync(procedureStep); CurrentUnitOfWork.SaveChanges(); var procedure = await _repositoryProcedure.GetAsync(procedureStep.ProcedureId); // 填入工序最后一步的优先级 var query = _repositoryProcedureStep.GetAll().Where(v => v.ProcedureId == procedureStep.ProcedureId); procedure.LastPriority = await query.MaxAsync(v => v.Priority); // 填入工序总时间 procedure.TotalDuration = await query.SumAsync(s => s.Duration); // 更新工序 await _repositoryProcedure.UpdateAsync(procedure); return(procedureStep); }