zhengyiming
2025-08-07 1f2d7d624a41a7ff9b820094a62cfdea0b657b0a
FlexJobApi.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs
@@ -50,6 +50,10 @@
            if (category == null) throw Oops.Oh(EnumErrorCodeType.s404, "数据字典类别");
            request.CategoryId = category.Id;
            if (!request.Code.StartsWith($"{category.Code}-")) throw Oops.Oh(EnumErrorCodeType.s400, "编号开头需要包含类别编号-");
            var parent = request.ParentId.HasValue
                ? await rep.AsQueryable().AsNoTracking()
                    .FirstOrDefaultAsync(it => it.Id == request.ParentId)
                : null;
            return await request.SaveData<DictionaryData, SaveDictionaryDataCommand>(
                null,
                it =>
@@ -62,10 +66,15 @@
                    if (request.Id.HasValue)
                    {
                        if (entity.Code != request.Code) throw Oops.Oh(EnumErrorCodeType.s400, "编号不可修改");
                        DbUtils.UpdateTreeDataChildrenPath<DictionaryData>(
                           $"{entity.Path}/{entity.Code}/",
                           $"{entity.Path}/{request.Code}/",
                           cancellationToken).Wait();
                        if (entity.ParentId != request.ParentId) throw Oops.Oh(EnumErrorCodeType.s400, "上级Id不可修改");
                        //DbUtils.UpdateTreeDataChildrenPath<DictionaryData>(
                        //   $"{entity.Path}/{entity.Code}/",
                        //   $"{entity.Path}/{request.Code}/",
                        //   cancellationToken).Wait();
                    }
                    else
                    {
                        entity.Deep = request.ParentId == null ? 1 : parent.Deep + 1;
                    }
                    request.Adapt(entity);
                },
@@ -114,7 +123,8 @@
        /// <param name="entities"></param>
        /// <param name="all"></param>
        /// <param name="areas"></param>
        private void LoopSyncHumanResourcesAreaDictionaryData(Guid categoryId, List<DictionaryData> entities, List<BaseArea> all, List<BaseArea> areas)
        /// <param name="deep"></param>
        private void LoopSyncHumanResourcesAreaDictionaryData(Guid categoryId, List<DictionaryData> entities, List<BaseArea> all, List<BaseArea> areas, int deep = 1)
        {
            if (areas.IsNotNull())
            {
@@ -149,11 +159,12 @@
                    entity.Field3 = area.SimpleSpelling;
                    entity.Field4 = area.Layer.ToString();
                    entity.Field5 = area.Description;
                    entity.Deep = deep;
                    entity.Sort = area.Sort ?? 0;
                    entities.Add(entity);
                    var children = all.Where(it => it.ParentId == area.AreaCode).ToList();
                    LoopSyncHumanResourcesAreaDictionaryData(categoryId, entities, all, children);
                    LoopSyncHumanResourcesAreaDictionaryData(categoryId, entities, all, children, deep + 1);
                }
            }
        }