/// <summary>
        /// 查询一个模板
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <HrTemplateInfoDTO> GetHrTemplateInfo(IdInputDTO input)
        {
            HrTemplateInfoDTO vm = await GetIQueryable()
                                   .ProjectTo <HrTemplateInfoDTO>(_mapper.ConfigurationProvider)
                                   .FirstOrDefaultAsync(x => !x.Deleted && x.id == input.id);

            if (vm.IsNullOrEmpty())
            {
                throw new BusException("当前模板不存在");
            }
            //测评模板分数范围
            var all_fractiona_items = await Db.GetIQueryable <hr_assessment_fractional_items>().Where(x => x.assessment_template_id == vm.id).ToListAsync();

            //测评模板项
            vm.templatItems = await Db.GetIQueryable <hr_assessment_template_items>()
                              .Where(x => x.assessment_template_id == vm.id)
                              .ProjectTo <templatItemsDTO>(_mapper.ConfigurationProvider)
                              .ToListAsync();

            vm.templatItems.ForEach(item =>
            {
                item.fractiona_items = all_fractiona_items.FindAll(x => x.assessment_template_id == vm.id && x.assessment_template_item_id == item.id).ToList();
            });
            return(vm);
        }
        public async Task <AjaxResult> UpdateHrTemplateInfo(HrTemplateInfoDTO vm)
        {
            hr_assessment_template template = GetEntity(vm.id);

            if (template.IsNullOrEmpty())
            {
                return(Error("当前模板不存在"));
            }
            var hrass = await Db.GetIQueryable <hr_assessment_evaluation>().FirstOrDefaultAsync(x => x.assessment_template_id == vm.id && x.completion_time == null);

            if (!hrass.IsNullOrEmpty())
            {
                return(Error("该模板正在使用中,不应该修改"));
            }
            if (vm.templatItems == null || vm.templatItems.Count <= 0)
            {
                return(Error("模板考核项不能为空"));
            }

            template.template_code       = vm.template_code;
            template.template_name       = vm.template_name;
            template.assessment_criteria = vm.assessment_criteria;
            template.updated_user        = _operator.Property?.UserName;
            template.updated_time        = DateTime.Now;

            await Db.UpdateAsync(template);

            #region 根据模板Id,重建所有模板项和分数项
            await Db.DeleteAsync <hr_assessment_template_items>(x => x.assessment_template_id == template.id);

            await Db.DeleteAsync <hr_assessment_fractional_items>(x => x.assessment_template_id == template.id);

            var newfractiona_items = new List <hr_assessment_fractional_items>();

            //考核项目和模板关联
            vm.templatItems.ForEach(item =>
            {
                item.id = IdHelper.GetId();
                item.assessment_template_id = template.id;

                //分数项和模板关联
                item.fractiona_items.ForEach(_item =>
                {
                    _item.id = IdHelper.GetId();
                    _item.assessment_template_id      = template.id;
                    _item.assessment_template_item_id = item.id;
                });
                newfractiona_items.AddRange(item.fractiona_items);
            });

            #endregion

            await Db.InsertAsync(newfractiona_items);

            await Db.InsertAsync(vm.templatItems);

            return(Success());
        }
        public async Task <AjaxResult> InsertHrTemplateInfo(HrTemplateInfoDTO vm)
        {
            if (vm.IsNullOrEmpty())
            {
                return(Error("数据不能为空"));
            }
            if (vm.templatItems == null || vm.templatItems.Count <= 0)
            {
                return(Error("模板考核项不能为空"));
            }

            var template = _mapper.Map <hr_assessment_template>(vm);

            template.id            = IdHelper.GetId();
            template.template_code = (await Db.GetIQueryable <hr_assessment_template>().MaxAsync(x => x.template_code) ?? 0) + 1;
            template.create_user   = _operator.Property?.UserName;
            template.created_time  = DateTime.Now;
            template.Deleted       = false;

            var newfractiona_fractiona = new List <hr_assessment_fractional_items>();

            vm.templatItems.ForEach(item =>
            {
                item.id = IdHelper.GetId();
                item.assessment_template_id = template.id;

                item.fractiona_items.ForEach(_item =>
                {
                    _item.id = IdHelper.GetId();
                    _item.assessment_template_id      = template.id;
                    _item.assessment_template_item_id = item.id;
                });
                newfractiona_fractiona.AddRange(item.fractiona_items);
            });

            await Db.InsertAsync(template);

            await Db.InsertAsync(vm.templatItems);

            await Db.InsertAsync(newfractiona_fractiona);

            return(Success());
        }
 public async Task <AjaxResult> UpdateHrTemplateInfo(HrTemplateInfoDTO vm)
 {
     return(await _IHr_assessment_templateService.UpdateHrTemplateInfo(vm));
 }