diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PostionLocations/DTOs/PostionLocationDTO.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PostionLocations/DTOs/PostionLocationDTO.cs
new file mode 100644
index 000000000..5eb85aa0b
--- /dev/null
+++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PostionLocations/DTOs/PostionLocationDTO.cs
@@ -0,0 +1,29 @@
+using System.ComponentModel.DataAnnotations;
+using Win_in.Sfs.Shared.Domain;
+using Win_in.Sfs.Shared.Domain.Shared;
+
+namespace Win_in.Sfs.Basedata.Application.Contracts;
+
+///
+/// 库位
+///
+[Display(Name = "工作站库位对应关系")]
+public class PostionLocationDTO : SfsBaseDataDTOBase, IHasCode, IHasName
+{
+ [Display(Name = "工作站编号")]
+ [Required(ErrorMessage = "{0}是必填项")]
+ public string Code { get; set; }
+
+ ///
+ /// 名称
+ ///
+ [Display(Name = "名称")]
+ public string Name { get; set; }
+
+ ///
+ /// WMS库位
+ ///
+ [Display(Name = "库位")]
+ [Required(ErrorMessage = "{0}是必填项")]
+ public string LocationCode { get; set; }
+}
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PostionLocations/IPostionLocationAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PostionLocations/IPostionLocationAppService.cs
new file mode 100644
index 000000000..4e1b3ba81
--- /dev/null
+++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PostionLocations/IPostionLocationAppService.cs
@@ -0,0 +1,26 @@
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Win_in.Sfs.Basedata.tests;
+using Win_in.Sfs.Shared.Application.Contracts;
+using Win_in.Sfs.Shared.Domain.Shared;
+
+namespace Win_in.Sfs.Basedata.Application.Contracts;
+
+public interface IPostionLocationAppService
+ : ISfsBaseDataAppServiceBase
+ , ISfsGetByCodeAppService
+ , ISfsUpsertAppService
+{
+
+
+
+
+
+
+
+
+
+
+
+}
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PostionLocations/Inputs/PostionLocationCheckInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PostionLocations/Inputs/PostionLocationCheckInput.cs
new file mode 100644
index 000000000..4eb06eb3d
--- /dev/null
+++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PostionLocations/Inputs/PostionLocationCheckInput.cs
@@ -0,0 +1,24 @@
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using Win_in.Sfs.Shared.Domain.Shared;
+
+namespace Win_in.Sfs.Basedata.Application.Contracts;
+
+public class PostionLocationCheckInput
+{
+ [Display(Name = "工作站编号")]
+
+ public string Code { get; set; }
+
+ ///
+ /// 名称
+ ///
+ [Display(Name = "名称")]
+ public string Name { get; set; }
+
+ ///
+ /// WMS库位
+ ///
+ [Display(Name = "库位")]
+ public string LocationCode { get; set; }
+}
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PostionLocations/Inputs/PostionLocationEditInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PostionLocations/Inputs/PostionLocationEditInput.cs
new file mode 100644
index 000000000..7f7cc3f68
--- /dev/null
+++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PostionLocations/Inputs/PostionLocationEditInput.cs
@@ -0,0 +1,25 @@
+using System.ComponentModel.DataAnnotations;
+using Win_in.Sfs.Shared.Domain;
+using Win_in.Sfs.Shared.Domain.Shared;
+
+namespace Win_in.Sfs.Basedata.Application.Contracts;
+
+public class PostionLocationEditInput : SfsBaseDataCreateOrUpdateInputBase
+{
+ [Display(Name = "工作站编号")]
+ [Required(ErrorMessage = "{0}是必填项")]
+ public string Code { get; set; }
+
+ ///
+ /// 名称
+ ///
+ [Display(Name = "名称")]
+ public string Name { get; set; }
+
+ ///
+ /// WMS库位
+ ///
+ [Display(Name = "库位")]
+ [Required(ErrorMessage = "{0}是必填项")]
+ public string LocationCode { get; set; }
+}
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PostionLocations/Inputs/PostionLocationImportInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PostionLocations/Inputs/PostionLocationImportInput.cs
new file mode 100644
index 000000000..d76ae1f53
--- /dev/null
+++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PostionLocations/Inputs/PostionLocationImportInput.cs
@@ -0,0 +1,28 @@
+using System.ComponentModel.DataAnnotations;
+using Win_in.Sfs.Shared.Application.Contracts;
+using Win_in.Sfs.Shared.Domain;
+using Win_in.Sfs.Shared.Domain.Shared;
+
+namespace Win_in.Sfs.Basedata.Application.Contracts;
+
+[Display(Name = "库位信息")]
+public class PostionLocationImportInput : SfsBaseDataImportInputBase
+{
+ [Display(Name = "工作站编号")]
+ [Required(ErrorMessage = "{0}是必填项")]
+ public string Code { get; set; }
+
+ ///
+ /// 名称
+ ///
+ [Display(Name = "名称")]
+ public string Name { get; set; }
+
+ ///
+ /// WMS库位
+ ///
+ [Display(Name = "库位")]
+ [Required(ErrorMessage = "{0}是必填项")]
+ public string LocationCode { get; set; }
+
+}
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PostionLocations/PostionLocationPermissions.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PostionLocations/PostionLocationPermissions.cs
new file mode 100644
index 000000000..51d996c4c
--- /dev/null
+++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PostionLocations/PostionLocationPermissions.cs
@@ -0,0 +1,21 @@
+using Volo.Abp.Authorization.Permissions;
+using Win_in.Sfs.Basedata.Domain;
+
+namespace Win_in.Sfs.Basedata.Application.Contracts;
+
+public static class PostionLocationPermissions
+{
+
+ public const string Default = BasedataPermissions.GroupName + "." + nameof(PostionLocation);
+ public const string Create = Default + "." + BasedataPermissions.CreateStr;
+ public const string Update = Default + "." + BasedataPermissions.UpdateStr;
+ public const string Delete = Default + "." + BasedataPermissions.DeleteStr;
+
+ public static void AddLPostionLocationPermission(this PermissionGroupDefinition permissionGroup)
+ {
+ var lPostionLocationPermission = permissionGroup.AddPermission(Default, BasedataPermissionDefinitionProvider.L(nameof(PostionLocation)));
+ lPostionLocationPermission.AddChild(Create, BasedataPermissionDefinitionProvider.L(BasedataPermissions.CreateStr));
+ lPostionLocationPermission.AddChild(Update, BasedataPermissionDefinitionProvider.L(BasedataPermissions.UpdateStr));
+ lPostionLocationPermission.AddChild(Delete, BasedataPermissionDefinitionProvider.L(BasedataPermissions.DeleteStr));
+ }
+}
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PostionLocations/PostionLocationAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PostionLocations/PostionLocationAppService.cs
new file mode 100644
index 000000000..18f269f0a
--- /dev/null
+++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PostionLocations/PostionLocationAppService.cs
@@ -0,0 +1,136 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq.Expressions;
+using System.Threading;
+using System.Threading.Tasks;
+
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.Caching;
+using Volo.Abp.Domain.Repositories;
+using Volo.Abp.Validation;
+using Win_in.Sfs.Basedata.Application.Contracts;
+using Win_in.Sfs.Basedata.Domain;
+using Win_in.Sfs.Basedata.Domain.Shared;
+using Win_in.Sfs.Shared.Domain.Shared;
+using Win_in.Sfs.Shared.Domain;
+using Volo.Abp.ObjectMapping;
+using Win_in.Sfs.Shared.Application.Contracts;
+using Volo.Abp;
+
+namespace Win_in.Sfs.Basedata.Application;
+
+[Authorize]
+[Route($"{BasedataConsts.RootPath}PostionLocation")]
+
+public class PostionLocationAppService
+ : SfsBaseDataWithCodeAppServiceBase
+
+ , IPostionLocationAppService
+{
+
+ private readonly IPostionLocationManager _manager;
+ private readonly IPostionLocationRepository _repository;
+ private readonly ILocationAppService _locationAppService;
+
+
+ public PostionLocationAppService(
+ IPostionLocationRepository repository,
+ IPostionLocationManager manager
+ , IDistributedCache cache
+
+ , ILocationAppService locationAppService
+
+
+
+ ) : base(repository, cache)
+ {
+ _locationAppService = locationAppService;
+ _manager = manager;
+ _repository = repository;
+
+
+ //_PostionLocationCapacityAppService = PostionLocationCapacityAppService;
+
+ base.CreatePolicyName = PostionLocationPermissions.Create;
+ base.UpdatePolicyName = PostionLocationPermissions.Update;
+ base.DeletePolicyName = PostionLocationPermissions.Delete;
+
+ }
+
+
+
+ [HttpPost("list")]
+ public override async Task> GetPagedListByFilterAsync(
+ SfsBaseDataRequestInputBase sfsRequestInput,
+ bool includeDetails = false,
+ CancellationToken cancellationToken = default)
+ {
+ Expression> expression = sfsRequestInput.Condition.Filters?.Count > 0
+ ? sfsRequestInput.Condition.Filters.ToLambda()
+ : p => true;
+ var pageResult = await GetPagedListAsync(
+ expression,
+ sfsRequestInput.SkipCount,
+ sfsRequestInput.MaxResultCount,
+ sfsRequestInput.Sorting,
+ includeDetails,
+ cancellationToken).ConfigureAwait(false);
+
+ //foreach (var item in pageResult.Items)
+ //{
+ // item.ItemCategoryDictionary = await GetItemCategory(item.Code).ConfigureAwait(false);
+ //}
+
+ return pageResult;
+ }
+
+ [HttpPost("get-or-add")]
+ public virtual async Task GetOrAddAsync(PostionLocationEditInput input)
+ {
+ await CheckLocationCode(input.LocationCode).ConfigureAwait(false);
+ var result = await _repository.FirstOrDefaultAsync(p => p.Code == input.Code).ConfigureAwait(false);
+ if (result == null)
+ {
+ var entity = ObjectMapper.Map(input);
+ result = await _repository.InsertAsync(entity, true).ConfigureAwait(false);
+ }
+ var dto = ObjectMapper.Map(result);
+ return dto;
+ }
+ [HttpPost("upsert")]
+ public async Task UpsertAsync(PostionLocationEditInput input)
+ {
+ var entity= await _repository.GetAsync(p=>p.Code == input.Code).ConfigureAwait(false);
+
+ if (entity != null)
+ {
+ entity.Name = input.Name;
+ entity.LocationCode = input.LocationCode;
+ await _repository.UpdateAsync(entity).ConfigureAwait(false);
+ }
+ else
+ {
+ entity.Code = input.Code;
+ entity.LocationCode = input.LocationCode;
+ entity.Name=input.Name;
+ await _repository.InsertAsync(entity, true).ConfigureAwait(false);
+ }
+
+ }
+ private async Task CheckLocationCode(string p_location)
+ {
+
+ var list = await _locationAppService.GetByCodeAsync(p_location).ConfigureAwait(false);
+ if (list == null )
+ {
+ throw new UserFriendlyException($"{p_location}库位编码不存在,请查看库位信息!");
+ }
+
+
+ }
+
+
+}
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PostionLocations/PostionLocationAutoMapperProfile.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PostionLocations/PostionLocationAutoMapperProfile.cs
new file mode 100644
index 000000000..702d7c9c9
--- /dev/null
+++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PostionLocations/PostionLocationAutoMapperProfile.cs
@@ -0,0 +1,44 @@
+using AutoMapper;
+using Volo.Abp.AutoMapper;
+using Win_in.Sfs.Basedata.Application.Contracts;
+using Win_in.Sfs.Basedata.Domain;
+
+namespace Win_in.Sfs.Basedata.Application;
+
+public partial class BasedataApplicationAutoMapperProfile : Profile
+{
+ private void PostionLocationAutoMapperProfile()
+ {
+ CreateMap()
+ .ReverseMap();
+
+ CreateMap()
+ .IgnoreAuditedObjectProperties()
+ .Ignore(x => x.TenantId)
+ .Ignore(x => x.ExtraProperties)
+ .Ignore(x => x.ConcurrencyStamp)
+ //.Ignore(x => x.EnableMixItem)
+ //.Ignore(x => x.EnableMixLot)
+ //.Ignore(x => x.EnableMixStatus)
+ //.Ignore(x => x.EnableNegative)
+ //.Ignore(x => x.EnableKeepZero)
+ //.Ignore(x => x.EnableOpportunityCount)
+ //.Ignore(x => x.EnablePick)
+ //.Ignore(x => x.EnableOverPick)
+ //.Ignore(x => x.EnableWholeStore)
+ //.Ignore(x => x.EnableBreakStore)
+ //.Ignore(x => x.EnableShip)
+ //.Ignore(x => x.EnableReceive)
+ //.Ignore(x => x.EnableReturnToSupplier)
+ //.Ignore(x => x.EnableReturnFromCustomer)
+ //.Ignore(x => x.EnableSplitPallet)
+ //.Ignore(x => x.EnableSplitBox)
+
+ ;
+
+ CreateMap()
+ .Ignore(x => x.ReportStatus)
+ .Ignore(x => x.ReportReason);
+
+ }
+}
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PostionLocations/IPostionLocationManager.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PostionLocations/IPostionLocationManager.cs
new file mode 100644
index 000000000..8ade57182
--- /dev/null
+++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PostionLocations/IPostionLocationManager.cs
@@ -0,0 +1,8 @@
+using Volo.Abp.Domain.Services;
+using Win_in.Sfs.Shared.Domain;
+
+namespace Win_in.Sfs.Basedata.Domain;
+
+public interface IPostionLocationManager : IDomainService, IBulkImportService
+{
+}
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PostionLocations/IPostionLocationRepository.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PostionLocations/IPostionLocationRepository.cs
new file mode 100644
index 000000000..ae1671526
--- /dev/null
+++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PostionLocations/IPostionLocationRepository.cs
@@ -0,0 +1,8 @@
+using Win_in.Sfs.Shared.Domain;
+
+namespace Win_in.Sfs.Basedata.Domain;
+
+public interface IPostionLocationRepository : ISfsBaseDataRepositoryBase, ISfsBulkRepositoryBase
+{
+
+}
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PostionLocations/PostionLocation.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PostionLocations/PostionLocation.cs
new file mode 100644
index 000000000..ab0a7cfe5
--- /dev/null
+++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PostionLocations/PostionLocation.cs
@@ -0,0 +1,106 @@
+using System.ComponentModel.DataAnnotations;
+using Win_in.Sfs.Shared.Domain;
+using Win_in.Sfs.Shared.Domain.Entities;
+using Win_in.Sfs.Shared.Domain.Shared;
+
+namespace Win_in.Sfs.Basedata.Domain;
+
+public class PostionLocation : SfsBaseDataAggregateRootBase, IHasCode, IHasName
+{
+ ///
+ /// 代码
+ ///
+ [IgnoreUpdate]
+ [Display(Name ="工作站编号")]
+ public string Code { get; set; }
+
+ ///
+ /// 名称
+ ///
+ [Display(Name = "名称")]
+ public string Name { get; set; }
+
+ ///
+ /// WMS库位
+ ///
+ [Display(Name ="库位")]
+ public string LocationCode { get; set; }
+
+ /////
+ ///// 库位类型
+ /////
+ //public EnumLocationType Type { get; set; }
+
+ /////
+ ///// ERP系统库位代码
+ /////
+ //public string ErpLocationCode { get; set; }
+
+ /////
+ ///// 仓库代码
+ /////
+ //public string WarehouseCode { get; set; }
+
+ /////
+ ///// 区域代码
+ /////
+ //public string AreaCode { get; set; }
+
+ /////
+ ///// 库位组代码
+ /////
+ //public string LocationGroupCode { get; set; }
+
+ /////
+ ///// 工作组代码
+ /////
+ //public string WorkGroupCode { get; set; }
+
+ /////
+ ///// 货架号
+ /////
+ //public string ShelfCode { get; set; }
+
+ /////
+ ///// 行号
+ /////
+ //public int RowCode { get; set; }
+
+ /////
+ ///// 列号
+ /////
+ //public int ColumnCode { get; set; }
+
+ /////
+ ///// 默认库存状态
+ /////
+ //public EnumInventoryStatus DefaultInventoryStatus { get; set; }
+
+ /////
+ ///// 拣料优先级
+ /////
+ //public int PickPriority { get; set; }
+
+ /////
+ ///// 拣料顺序
+ /////
+ //public int PickOrder { get; set; }
+
+ //public bool EnableMixItem { get; set; } = true; // 可以混物品
+ //public bool EnableMixLot { get; set; } = true; // 可以混批次
+ //public bool EnableMixStatus { get; set; } = true; // 可以混状态
+ //public bool EnableNegative { get; set; } = true; // 可以负库存
+ //public bool EnableKeepZero { get; set; } = true; // 可以保留零库存
+ //public bool EnableOpportunityCount { get; set; } = true; // 可以机会盘点
+ //public bool EnablePick { get; set; } = true; // 可以领料
+ //public bool EnableOverPick { get; set; } = true; // 可以过量领料
+ //public bool EnableWholeStore { get; set; } = true; // 可以整包存储
+ //public bool EnableBreakStore { get; set; } = true; // 可以散件存储
+ //public bool EnableShip { get; set; } = true; // 可以发出
+ //public bool EnableReceive { get; set; } = true; // 可以接收
+ //public bool EnableReturnToSupplier { get; set; } = true; // 可以退货给供应商
+ //public bool EnableReturnFromCustomer { get; set; } = true; // 可以接收客户退货
+ //public bool EnableSplitBox { get; set; } = true; //是否可以拆箱
+ //public bool EnableSplitPallet { get; set; } = true; //是否可以拆托
+
+}
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PostionLocations/PostionLocationManager.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PostionLocations/PostionLocationManager.cs
new file mode 100644
index 000000000..c1bc9a184
--- /dev/null
+++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PostionLocations/PostionLocationManager.cs
@@ -0,0 +1,48 @@
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Volo.Abp.Domain.Services;
+using Win_in.Sfs.Shared.Domain.Shared;
+
+namespace Win_in.Sfs.Basedata.Domain;
+
+public class PostionLocationManager : DomainService, IPostionLocationManager
+{
+ private readonly IPostionLocationRepository _repository;
+
+ private readonly IWarehouseRepository _warehourseRepository;
+ private readonly IAreaRepository _areaRepository;
+ private readonly ILocationGroupRepository _locationGroupRepository;
+ private readonly IWorkGroupRepository _workGroupRepository;
+
+ public PostionLocationManager(IPostionLocationRepository repository, IWarehouseRepository warehourseRepository
+ , IAreaRepository areaRepository
+ , ILocationGroupRepository locationGroupRepository
+ , IWorkGroupRepository workGroupRepository
+ )
+ {
+ _repository = repository;
+ _warehourseRepository = warehourseRepository;
+ _areaRepository = areaRepository;
+ _locationGroupRepository = locationGroupRepository;
+ _workGroupRepository = workGroupRepository;
+
+ }
+
+ ///
+ /// 执行导入
+ ///
+ public virtual async Task ImportDataAsync(List mergeEntities, List deleteEntities = null)
+ {
+ if (deleteEntities != null && deleteEntities.Count > 0)
+ {
+ await _repository.BulkDeleteAsync(deleteEntities).ConfigureAwait(false);
+ }
+
+ await _repository.BulkMergeAsync(mergeEntities).ConfigureAwait(false);
+ }
+
+
+
+
+}
+
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataDbContext.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataDbContext.cs
index d43aec3d1..0e05cb4c9 100644
--- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataDbContext.cs
+++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataDbContext.cs
@@ -59,6 +59,8 @@ public class BasedataDbContext : AbpDbContext, IBasedataDbCon
public DbSet Equipments { get; set; }
public DbSet SplitPackingRecs { get; set; }
+ public DbSet PostionLocations { get; set; }
+
public BasedataDbContext(DbContextOptions options)
: base(options)
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataEntityFrameworkCoreModule.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataEntityFrameworkCoreModule.cs
index 05750b3c9..6a35c1ebb 100644
--- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataEntityFrameworkCoreModule.cs
+++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataEntityFrameworkCoreModule.cs
@@ -61,6 +61,7 @@ public class BasedataEntityFrameworkCoreModule : AbpModule
context.Services.AddTransient();
context.Services.AddTransient();
context.Services.AddTransient();
+ context.Services.AddTransient();
context.Services.AddTransient();
context.Services.AddTransient();
context.Services.AddTransient();
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/PostionLocations/PostionLocationDbContextModelCreatingExtensions.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/PostionLocations/PostionLocationDbContextModelCreatingExtensions.cs
new file mode 100644
index 000000000..7f66e95b5
--- /dev/null
+++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/PostionLocations/PostionLocationDbContextModelCreatingExtensions.cs
@@ -0,0 +1,31 @@
+using Microsoft.EntityFrameworkCore;
+using Volo.Abp.EntityFrameworkCore.Modeling;
+using Win_in.Sfs.Basedata.Domain;
+using Win_in.Sfs.Shared.Domain.Shared;
+using Win_in.Sfs.Shared.EntityFrameworkCore;
+
+namespace Win_in.Sfs.Basedata.EntityFrameworkCore;
+
+public static class PostionLocationDbContextModelCreatingExtensions
+{
+ public static void ConfigurePostionLocation(this ModelBuilder builder, BasedataModelBuilderConfigurationOptions options)
+ {
+ builder.Entity(b =>
+ {
+ //Configure table & schema name
+ b.ToTable(options.TablePrefix + nameof(Location), options.Schema);
+ //Configure ABP properties
+ b.ConfigureByConvention();
+ //Configure Sfs base properties
+ b.ConfigureSfsBase();
+
+ //Properties
+
+ //Relations
+ //None
+
+ //Indexes
+ b.HasIndex(q => new { q.Code }).IsUnique();
+ });
+ }
+}
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/PostionLocations/PostionLocationEfCoreRepository.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/PostionLocations/PostionLocationEfCoreRepository.cs
new file mode 100644
index 000000000..232f50c97
--- /dev/null
+++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/PostionLocations/PostionLocationEfCoreRepository.cs
@@ -0,0 +1,12 @@
+using Volo.Abp.EntityFrameworkCore;
+using Win_in.Sfs.Basedata.Domain;
+using Win_in.Sfs.Shared.Domain;
+
+namespace Win_in.Sfs.Basedata.EntityFrameworkCore;
+
+public class PostionLocationEfCoreRepository : SfsBaseDataEfCoreRepositoryBase, IPostionLocationRepository, ISfsBulkRepositoryBase
+{
+ public PostionLocationEfCoreRepository(IDbContextProvider dbContextProvider) : base(dbContextProvider)
+ {
+ }
+}
diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Win_in.Sfs.Basedata.EntityFrameworkCore.csproj b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Win_in.Sfs.Basedata.EntityFrameworkCore.csproj
index 2ee6ae91f..20fa1b1fe 100644
--- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Win_in.Sfs.Basedata.EntityFrameworkCore.csproj
+++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Win_in.Sfs.Basedata.EntityFrameworkCore.csproj
@@ -14,7 +14,6 @@
-