/// <summary>
        /// 新增ScheduleTask
        /// </summary>
        protected virtual async Task <ScheduleTaskEditDto> CreateScheduleTaskAsync(ScheduleTaskEditDto input)
        {
            var entity = ObjectMapper.Map <ScheduleTask>(input);

            entity.IsDeleted = false;
            //entity.CreationTime = DateTime.Now;
            entity = await _scheduletaskRepository.InsertAsync(entity);

            return(entity.MapTo <ScheduleTaskEditDto>());
        }
        /// <summary>
        /// 删除指派任务
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task VisitTaskDeleteByIdAsync(ScheduleTaskEditDto input)
        {
            var entity = await _scheduletaskRepository.GetAsync(input.Id.Value);

            entity.IsDeleted     = true;
            entity.DeletionTime  = DateTime.Now;
            entity.DeleterUserId = AbpSession.UserId;
            await _scheduletaskRepository.UpdateAsync(entity);

            List <Guid> detailIds = await _scheduleDetailRepository.GetAll().Where(v => v.ScheduleTaskId == input.Id).AsNoTracking().Select(v => v.Id).ToListAsync();

            await BatchDeleteScheduleDetailsAsync(detailIds);
        }
        /// <summary>
        /// 编辑ScheduleTask
        /// </summary>
        protected virtual async Task <ScheduleTaskEditDto> UpdateScheduleTaskAsync(ScheduleTaskEditDto input)
        {
            //TODO:更新前的逻辑判断,是否允许更新

            var entity = await _scheduletaskRepository.GetAsync(input.Id.Value);

            input.MapTo(entity);
            entity.IsDeleted = false;
            // ObjectMapper.Map(input, entity);
            var result = await _scheduletaskRepository.UpdateAsync(entity);

            return(result.MapTo <ScheduleTaskEditDto>());
        }
        /// <summary>
        /// MPA版本才会用到的方法
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <GetScheduleTaskForEditOutput> GetScheduleTaskForEdit(NullableIdDto <Guid> input)
        {
            var output = new GetScheduleTaskForEditOutput();
            ScheduleTaskEditDto scheduletaskEditDto;

            if (input.Id.HasValue)
            {
                var entity = await _scheduletaskRepository.GetAsync(input.Id.Value);

                scheduletaskEditDto = entity.MapTo <ScheduleTaskEditDto>();

                //scheduletaskEditDto = ObjectMapper.Map<List <scheduletaskEditDto>>(entity);
            }
            else
            {
                scheduletaskEditDto = new ScheduleTaskEditDto();
            }

            output.ScheduleTask = scheduletaskEditDto;
            return(output);
        }