diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/ErpLocation/locmout.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/ErpLocation/locmout.cs index c71f0d524..c05205551 100644 --- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/ErpLocation/locmout.cs +++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp/ErpLocation/locmout.cs @@ -5,11 +5,11 @@ namespace Win_in.Sfs.Wms.DataExchange.Domain.Fawtyg.Tyrp; public class locmout : Entity { /// - /// 库位 + /// 储位 /// public string locmout_loc { get; set; } /// - /// 库位类型 + /// 储位类型 /// public string locmout_stat2 { get; set; } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ErpLocationItems/DTOs/ErpLocationItemDTO.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ErpLocationItems/DTOs/ErpLocationItemDTO.cs new file mode 100644 index 000000000..eb3d09586 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ErpLocationItems/DTOs/ErpLocationItemDTO.cs @@ -0,0 +1,25 @@ +using System.ComponentModel.DataAnnotations; +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Basedata.Application.Contracts; + +[Display(Name = "物料和储位对应关系")] + +public class ErpLocationItemDTO : SfsBaseDataDTOBase +{ + /// + /// 物料代码 + /// + [Display(Name = "物料代码")] + [Required(ErrorMessage = "{0}是必填项")] + [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + public string ItemCode { get; set; } + + /// + /// 储位代码 + /// + [Display(Name = "储位代码")] + [Required(ErrorMessage = "{0}是必填项")] + [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + public string ErpLoactionCode { get; set; } +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ErpLocationItems/ErpLocationItemPermissions.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ErpLocationItems/ErpLocationItemPermissions.cs new file mode 100644 index 000000000..9d992eb91 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ErpLocationItems/ErpLocationItemPermissions.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 ErpLocationItemPermissions +{ + + public const string Default = BasedataPermissions.GroupName + "." + nameof(ErpLocationItem); + public const string Create = Default + "." + BasedataPermissions.CreateStr; + public const string Update = Default + "." + BasedataPermissions.UpdateStr; + public const string Delete = Default + "." + BasedataPermissions.DeleteStr; + + public static void AddErpLocationItemPermission(this PermissionGroupDefinition permissionGroup) + { + var erpLocationItemPermission = permissionGroup.AddPermission(Default, BasedataPermissionDefinitionProvider.L(nameof(ErpLocationItem))); + erpLocationItemPermission.AddChild(Create, BasedataPermissionDefinitionProvider.L(BasedataPermissions.CreateStr)); + erpLocationItemPermission.AddChild(Update, BasedataPermissionDefinitionProvider.L(BasedataPermissions.UpdateStr)); + erpLocationItemPermission.AddChild(Delete, BasedataPermissionDefinitionProvider.L(BasedataPermissions.DeleteStr)); + } +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ErpLocationItems/IErpLocationItemAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ErpLocationItems/IErpLocationItemAppService.cs new file mode 100644 index 000000000..879a19554 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ErpLocationItems/IErpLocationItemAppService.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using Win_in.Sfs.Shared.Application.Contracts; + +namespace Win_in.Sfs.Basedata.Application.Contracts; + +public interface IErpLocationItemAppService : ISfsBaseDataAppServiceBase, ISfsUpsertAppService +{ + Task> GetListByItemCodeAsync(string itemCode); +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ErpLocationItems/Inputs/ErpLocationItemEditInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ErpLocationItems/Inputs/ErpLocationItemEditInput.cs index 84af09533..44df4e604 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ErpLocationItems/Inputs/ErpLocationItemEditInput.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ErpLocationItems/Inputs/ErpLocationItemEditInput.cs @@ -6,18 +6,21 @@ namespace Win_in.Sfs.Basedata.Application.Contracts; public class ErpLocationItemEditInput : SfsBaseDataCreateOrUpdateInputBase { /// - /// 储位代码 + /// 物料代码 /// - [Display(Name = "储位代码")] + [Display(Name = "物料代码")] [Required(ErrorMessage = "{0}是必填项")] [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] - public string ErpLoactionCode { get; set; } + public string ItemCode { get; set; } /// - /// 物料代码 + /// 储位代码 /// - [Display(Name = "物料代码")] + [Display(Name = "储位代码")] + [Required(ErrorMessage = "{0}是必填项")] [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] - public string ItemCode { get; set; } + public string ErpLoactionCode { get; set; } + + } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ErpLocationItems/Inputs/ErpLocationItemImportInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ErpLocationItems/Inputs/ErpLocationItemImportInput.cs new file mode 100644 index 000000000..9e545836d --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ErpLocationItems/Inputs/ErpLocationItemImportInput.cs @@ -0,0 +1,27 @@ +using System.ComponentModel.DataAnnotations; +using Win_in.Sfs.Shared.Application.Contracts; +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Basedata.Application.Contracts; + +[Display(Name = "物料和储位对应关系")] +public class ErpLocationItemImportInput : SfsBaseDataImportInputBase +{ + /// + /// 物料代码 + /// + [Key] + [Display(Name = "物料代码")] + [Required(ErrorMessage = "{0}不能为空")] + [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + public string ItemCode { get; set; } + + /// + /// 储位代码 + /// + [Display(Name = "储位代码")] + [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + public string ErpLoactionCode { get; set; } + + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Permissions/BasedataPermissionDefinitionProvider.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Permissions/BasedataPermissionDefinitionProvider.cs index f4964079d..51e086b94 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Permissions/BasedataPermissionDefinitionProvider.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Permissions/BasedataPermissionDefinitionProvider.cs @@ -35,6 +35,7 @@ public class BasedataPermissionDefinitionProvider : PermissionDefinitionProvider basedataGroup.AddItemBasicPermission(); basedataGroup.AddItemCategoryPermission(); basedataGroup.AddItemPackPermission(); + basedataGroup.AddErpLocationItemPermission(); basedataGroup.AddItemContainerPermission(); basedataGroup.AddCategoryPermission(); basedataGroup.AddPositionCodePermission(); diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/PositionCodePermissions.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/PositionCodePermissions.cs index 596671428..a8b3de088 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/PositionCodePermissions.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PositionCode/PositionCodePermissions.cs @@ -5,7 +5,6 @@ namespace Win_in.Sfs.Basedata.Application.Contracts; public static class PositionCodePermissions { - public const string Default = BasedataPermissions.GroupName + "." + nameof(PositionCode); public const string Create = Default + "." + BasedataPermissions.CreateStr; public const string Update = Default + "." + BasedataPermissions.UpdateStr; diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Win_in.Sfs.Basedata.Application.Contracts.csproj b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Win_in.Sfs.Basedata.Application.Contracts.csproj index 0cb41fd37..84d9de372 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Win_in.Sfs.Basedata.Application.Contracts.csproj +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Win_in.Sfs.Basedata.Application.Contracts.csproj @@ -25,8 +25,4 @@ - - - - diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/BasedataApplicationAutoMapperProfile.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/BasedataApplicationAutoMapperProfile.cs index 703b60180..03ec64de1 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/BasedataApplicationAutoMapperProfile.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/BasedataApplicationAutoMapperProfile.cs @@ -27,6 +27,7 @@ public partial class BasedataApplicationAutoMapperProfile : Profile ItemBasicAutoMapperProfile(); ItemCategoryAutoMapperProfile(); ItemPackAutoMapperProfile(); + ErpLocationItemAutoMapperProfile(); ItemContainerAutoMapperProfile(); ItemStoreRelationAutoMapperProfile(); ItemSafetyStockAutoMapperProfile(); diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ErpLocationItems/ErpLocationItemAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ErpLocationItems/ErpLocationItemAppService.cs new file mode 100644 index 000000000..30c3dd121 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ErpLocationItems/ErpLocationItemAppService.cs @@ -0,0 +1,62 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Threading.Tasks; + +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.Caching; +using Win_in.Sfs.Basedata.Application.Contracts; +using Win_in.Sfs.Basedata.Domain; +using Win_in.Sfs.Basedata.Domain.Shared; + +namespace Win_in.Sfs.Basedata.Application; + +[Authorize] +[Route($"{BasedataConsts.RootPath}erplocation-item")] + +public class ErpLocationItemAppService + : SfsBaseDataAppServiceBase + , IErpLocationItemAppService +{ + private readonly IErpLocationItemManager _manager; + private new readonly IErpLocationItemRepository _repository; + + public ErpLocationItemAppService( + IErpLocationItemRepository repository + , IDistributedCache cache + , IErpLocationItemManager manager + , IItemBasicAppService itemBasicAppService) : base(repository, cache) + { + base.CreatePolicyName = ErpLocationItemPermissions.Create; + base.UpdatePolicyName = ErpLocationItemPermissions.Update; + base.DeletePolicyName = ErpLocationItemPermissions.Delete; + _repository = repository; + _manager = manager; + } + + [HttpPost("upsert")] + public virtual async Task UpsertAsync(ErpLocationItemEditInput input) + { + var entity = ObjectMapper.Map(input); + await _repository.UpsertAsync(entity).ConfigureAwait(false); + } + + [HttpGet("list/by-item")] + public virtual async Task> GetListByItemCodeAsync(string itemCode) + { + var entities = await _repository.GetListAsync(c => c.ItemCode == itemCode).ConfigureAwait(false); + var dtos = ObjectMapper.Map, List>(entities); + return dtos; + } + + + + protected override async Task ValidateImportModelAsync(ErpLocationItemImportInput importInput, List validationRresult) + { + await base.CheckItemBasicItemCodeAsync(importInput.ItemCode, validationRresult).ConfigureAwait(false); + + } + + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ErpLocationItems/ErpLocationItemAutoMapperProfile.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ErpLocationItems/ErpLocationItemAutoMapperProfile.cs new file mode 100644 index 000000000..a878e9cd4 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ErpLocationItems/ErpLocationItemAutoMapperProfile.cs @@ -0,0 +1,33 @@ +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 ErpLocationItemAutoMapperProfile() + { + CreateMap() + .ReverseMap(); + + CreateMap() + .IgnoreAuditedObjectProperties() + .Ignore(x => x.TenantId) + .Ignore(x => x.ExtraProperties) + .Ignore(x => x.ConcurrencyStamp) + ; + + CreateMap() + .IgnoreAuditedObjectProperties() + .Ignore(x => x.TenantId) + .Ignore(x=>x.Id) + .Ignore(x => x.ExtraProperties) + .Ignore(x => x.ConcurrencyStamp) + ; + CreateMap() + .IgnoreAuditedObjectProperties() + .Ignore(x => x.ConcurrencyStamp).Ignore(x => x.Id); + } +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCode/PositionCodeAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCodes/PositionCodeAppService.cs similarity index 100% rename from be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCode/PositionCodeAppService.cs rename to be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCodes/PositionCodeAppService.cs diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCode/PositionCodeAutoMapperProfile.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCodes/PositionCodeAutoMapperProfile.cs similarity index 100% rename from be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCode/PositionCodeAutoMapperProfile.cs rename to be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCodes/PositionCodeAutoMapperProfile.cs diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/ErpLocationItems/ErpLocationItem.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/ErpLocationItems/ErpLocationItem.cs new file mode 100644 index 000000000..c28ccc858 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/ErpLocationItems/ErpLocationItem.cs @@ -0,0 +1,21 @@ +using Win_in.Sfs.Shared.Domain; +using Win_in.Sfs.Shared.Domain.Entities; + +namespace Win_in.Sfs.Basedata.Domain; + +public class ErpLocationItem : SfsBaseDataAggregateRootBase +{ + /// + /// 物料代码 + /// + [IgnoreUpdate] + public string ItemCode { get; set; } + + /// + /// 储位代码 + /// + [IgnoreUpdate] + public string ErpLocationCode { get; set; } + + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/ErpLocationItems/ErpLocationItemManager.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/ErpLocationItems/ErpLocationItemManager.cs new file mode 100644 index 000000000..eeb08b3be --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/ErpLocationItems/ErpLocationItemManager.cs @@ -0,0 +1,31 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Domain.Services; + +namespace Win_in.Sfs.Basedata.Domain; + +public class ErpLocationItemManager : DomainService, IErpLocationItemManager +{ + private readonly IErpLocationItemRepository _repository; + + private readonly IItemBasicRepository _itemBasicRepository; + + public ErpLocationItemManager(IErpLocationItemRepository repository, IItemBasicRepository itemBasicRepository) + { + _repository = repository; + _itemBasicRepository = itemBasicRepository; + } + + /// + /// 执行导入 + /// + 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.Domain/ErpLocationItems/IErpLocationItemManager.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/ErpLocationItems/IErpLocationItemManager.cs new file mode 100644 index 000000000..32cec86c4 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/ErpLocationItems/IErpLocationItemManager.cs @@ -0,0 +1,9 @@ +using Volo.Abp.Domain.Services; +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Basedata.Domain; + +public interface IErpLocationItemManager : IDomainService, IBulkImportService +{ + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/ErpLocationItems/IErpLocationItemRepository.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/ErpLocationItems/IErpLocationItemRepository.cs new file mode 100644 index 000000000..309280a20 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/ErpLocationItems/IErpLocationItemRepository.cs @@ -0,0 +1,9 @@ +using System.Threading.Tasks; +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Basedata.Domain; + +public interface IErpLocationItemRepository : ISfsBaseDataRepositoryBase, ISfsBulkRepositoryBase +{ + public Task UpsertAsync(ErpLocationItem entity); +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCode/IPositionCodeManager.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCodes/IPositionCodeManager.cs similarity index 100% rename from be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCode/IPositionCodeManager.cs rename to be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCodes/IPositionCodeManager.cs diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCode/IPositionCodeRepository.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCodes/IPositionCodeRepository.cs similarity index 100% rename from be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCode/IPositionCodeRepository.cs rename to be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCodes/IPositionCodeRepository.cs diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCode/PositionCode.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCodes/PositionCode.cs similarity index 100% rename from be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCode/PositionCode.cs rename to be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCodes/PositionCode.cs diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCode/PositionCodeManager.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCodes/PositionCodeManager.cs similarity index 100% rename from be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCode/PositionCodeManager.cs rename to be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/PositionCodes/PositionCodeManager.cs 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 afd345a0e..d43aec3d1 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 @@ -36,6 +36,7 @@ public class BasedataDbContext : AbpDbContext, IBasedataDbCon public DbSet ItemBasics { get; set; } public DbSet ItemCategories { get; set; } public DbSet ItemPacks { get; set; } + public DbSet ErpLocationItems { get; set; } public DbSet ItemContainers { get; set; } public DbSet ItemStoreRelations { get; set; } public DbSet ItemSafetyStocks { get; set; } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataDbContextModelCreatingExtensions.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataDbContextModelCreatingExtensions.cs index 6b2cb3a9f..b3d8b50a5 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataDbContextModelCreatingExtensions.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/BasedataDbContextModelCreatingExtensions.cs @@ -47,6 +47,7 @@ public static class BasedataDbContextModelCreatingExtensions builder.ConfigureItemBasic(options); builder.ConfigureItemCategory(options); builder.ConfigureItemPack(options); + builder.ConfigureErpLocationItem(options); builder.ConfigureItemContainer(options); builder.ConfigureItemStoreRelation(options); builder.ConfigureItemSafetyStock(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 117fa11d5..05750b3c9 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 @@ -51,6 +51,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/ErpLocationItems/ErpLocationItemDbContextModelCreatingExtensions.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/ErpLocationItems/ErpLocationItemDbContextModelCreatingExtensions.cs new file mode 100644 index 000000000..6d80b5a98 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/ErpLocationItems/ErpLocationItemDbContextModelCreatingExtensions.cs @@ -0,0 +1,35 @@ +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 ErpLocationItemDbContextModelCreatingExtensions +{ + public static void ConfigureErpLocationItem(this ModelBuilder builder, BasedataModelBuilderConfigurationOptions options) + { + builder.Entity(b => + { + //Configure table & schema name + b.ToTable(options.TablePrefix + nameof(ErpLocationItem), options.Schema); + //Configure ABP properties + b.ConfigureByConvention(); + //Configure Sfs base properties + b.ConfigureSfsBase(); + + //Properties + + b.Property(q => q.ItemCode).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength); + b.Property(q => q.ErpLocationCode).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength); + + + //Relations + //None + + //Indexes + b.HasIndex(q => new { q.ItemCode, q.ErpLocationCode }).IsUnique(); + }); + } +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/ErpLocationItems/ErpLocationItemEfCoreRepository.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/ErpLocationItems/ErpLocationItemEfCoreRepository.cs new file mode 100644 index 000000000..41b7b05e0 --- /dev/null +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/ErpLocationItems/ErpLocationItemEfCoreRepository.cs @@ -0,0 +1,31 @@ +using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; +using Win_in.Sfs.Basedata.Domain; +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Basedata.EntityFrameworkCore; + +public class ErpLocationItemEfCoreRepository : SfsBaseDataEfCoreRepositoryBase, IErpLocationItemRepository, ISfsBulkRepositoryBase +{ + public ErpLocationItemEfCoreRepository(IDbContextProvider dbContextProvider) : base(dbContextProvider) + { + + } + + public virtual async Task UpsertAsync(ErpLocationItem entity) + { + var dbSet = await GetDbSetAsync().ConfigureAwait(false); + var exist = await dbSet.FirstOrDefaultAsync(p => p.ItemCode == entity.ItemCode).ConfigureAwait(false); + if (exist == null) + { + var insRet = await InsertAsync(entity).ConfigureAwait(false); + } + else + { + exist.ItemCode = entity.ItemCode; + exist.ErpLocationCode = entity.ErpLocationCode; + + } + } +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/IBasedataDbContext.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/IBasedataDbContext.cs index 383cc21d4..8dcd0c307 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/IBasedataDbContext.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/IBasedataDbContext.cs @@ -36,6 +36,7 @@ public interface IBasedataDbContext : IEfCoreDbContext public DbSet ItemBasics { get; } public DbSet ItemCategories { get; } public DbSet ItemPacks { get; } + public DbSet ErpLocationItems { get; } public DbSet ItemContainers { get; } public DbSet PositionCodes { get; } public DbSet ItemStoreRelations { get; } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/PositionCode/PositionCodeDbContextModelCreatingExtensions.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/PositionCodes/PositionCodeDbContextModelCreatingExtensions.cs similarity index 100% rename from be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/PositionCode/PositionCodeDbContextModelCreatingExtensions.cs rename to be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/PositionCodes/PositionCodeDbContextModelCreatingExtensions.cs diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/PositionCode/PositionCodeEfCoreRepository.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/PositionCodes/PositionCodeEfCoreRepository.cs similarity index 100% rename from be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/PositionCode/PositionCodeEfCoreRepository.cs rename to be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/PositionCodes/PositionCodeEfCoreRepository.cs