示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
        }