Browse Source

Merge branch 'dev_DY_CC' of http://dev.ccwin-in.com:3000/BoXu.Zheng/WZC2 into dev_DY_CC

dev_DY_CC
lvzb 1 year ago
parent
commit
dbab40e70f
  1. 48
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs
  2. 13
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain.Shared/SplitPackings/NodeTypeEnum.cs
  3. 19
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain.Shared/SplitPackings/OprTypeEnum.cs
  4. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain.Shared/Win_in.Sfs.Wms.Store.Domain.Shared.csproj
  5. 13
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/SplitPackings/ISplitPackingRecManager.cs
  6. 9
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/SplitPackings/ISplitPackingRecRepository.cs
  7. 76
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/SplitPackings/SplitPackingRec.cs
  8. 53
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/SplitPackings/SplitPackingRecManager.cs
  9. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Win_in.Sfs.Wms.Store.Domain.csproj
  10. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/IStoreDbContext.cs
  11. 45
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/SplitPackings/SplitPackingRecDbContextModelCreatingExtensions.cs
  12. 12
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/SplitPackings/SplitPackingRecEfCoreRepository.cs
  13. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreDbContext.cs
  14. 3
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreDbContextModelCreatingExtensions.cs
  15. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreEntityFrameworkCoreModule.cs
  16. BIN
      be/Modules/Store/src/src.rar

48
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs

@ -15,6 +15,7 @@ using Win_in.Sfs.Wms.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared;
using Win_in.Sfs.Wms.Store.SplitPackings;
namespace Win_in.Sfs.Wms.Store.Application;
@ -31,16 +32,19 @@ public class TransferNoteAppService : SfsStoreWithDetailsAppServiceBase
private readonly ITransferNoteManager _transferNoteManager;
private readonly IBalanceAppService _balanceAppService;
private readonly ILocationAppService _locationAppService;
private readonly ISplitPackingRecManager _splitPackingRecManager;
public TransferNoteAppService(
ITransferNoteRepository repository,
ITransferNoteManager transferNoteManager,
IBalanceAppService balanceAppService,
ILocationAppService locationAppService) : base(repository)
ILocationAppService locationAppService,
ISplitPackingRecManager splitPackingRecManager) : base(repository)
{
_transferNoteManager = transferNoteManager;
_balanceAppService = balanceAppService;
_locationAppService = locationAppService;
_splitPackingRecManager = splitPackingRecManager;
}
#region 东阳使用
@ -121,6 +125,48 @@ public class TransferNoteAppService : SfsStoreWithDetailsAppServiceBase
[HttpPost("split-packing")]
public async Task<TransferNoteDTO> SplitPackingAsync(TransferNoteEditInput transferNoteEditInput)
{
foreach (var inputDetail in transferNoteEditInput.Details)
{
//插入拆箱记录表
List<SplitPackingRec> recLst = new List<SplitPackingRec>();
SplitPackingRec fromRec = new SplitPackingRec();
fromRec.OprType = Domain.Shared.SplitPackings.OprTypeEnum.SplitBox;
//fromRec.GroupCode = ;
//fromRec.OprLevel = ;
fromRec.NodeType = Domain.Shared.SplitPackings.NodeTypeEnum.FromBox;
//fromRec.ParentId = ;
fromRec.PackingCode = inputDetail.FromPackingCode;
//fromRec.RootPackingCode = ;
fromRec.ItemCode = inputDetail.ItemCode;
fromRec.ItemName = inputDetail.ItemName;
fromRec.ItemDesc1 = inputDetail.ItemDesc1;
fromRec.ItemDesc2 = inputDetail.ItemDesc2;
fromRec.Lot = inputDetail.FromLot;
fromRec.StdPackQty = inputDetail.StdPackQty;
fromRec.Uom = inputDetail.Uom;
fromRec.Qty = inputDetail.Qty;
recLst.Add(fromRec);
SplitPackingRec toRec = new SplitPackingRec();
toRec.OprType = Domain.Shared.SplitPackings.OprTypeEnum.SplitBox;
//toRec.GroupCode = ;
//toRec.OprLevel = ;
toRec.NodeType = Domain.Shared.SplitPackings.NodeTypeEnum.ToBox;
//toRec.ParentId = ;
toRec.PackingCode = inputDetail.ToPackingCode;
//toRec.RootPackingCode = ;
toRec.ItemCode = inputDetail.ItemCode;
toRec.ItemName = inputDetail.ItemName;
toRec.ItemDesc1 = inputDetail.ItemDesc1;
toRec.ItemDesc2 = inputDetail.ItemDesc2;
toRec.Lot = inputDetail.ToLot;
toRec.StdPackQty = inputDetail.StdPackQty;
toRec.Uom = inputDetail.Uom;
toRec.Qty = inputDetail.Qty;
recLst.Add(toRec);
await _splitPackingRecManager.DoSplitPacking(recLst).ConfigureAwait(false);
}
transferNoteEditInput.Type = EnumTransSubType.Transfer_SplitPacking.ToString();
return await CreateAsync(transferNoteEditInput).ConfigureAwait(false);
}

13
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain.Shared/SplitPackings/NodeTypeEnum.cs

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Win_in.Sfs.Wms.Store.Domain.Shared.SplitPackings;
public enum NodeTypeEnum
{
ToBox = 1,
FromBox = 2
}

19
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain.Shared/SplitPackings/OprTypeEnum.cs

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Win_in.Sfs.Wms.Store.Domain.Shared.SplitPackings;
public enum OprTypeEnum
{
/// <summary>
/// 拆箱
/// </summary>
SplitBox = 1,
/// <summary>
/// 合箱
/// </summary>
MergeBox = 2
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain.Shared/Win_in.Sfs.Wms.Store.Domain.Shared.csproj

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\common.props" />

13
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/SplitPackings/ISplitPackingRecManager.cs

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Services;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.SplitPackings;
public interface ISplitPackingRecManager : IDomainService
{
Task<bool> DoSplitPacking(List<SplitPackingRec> input);
}

9
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/SplitPackings/ISplitPackingRecRepository.cs

@ -0,0 +1,9 @@
using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Wms.Store.Domain;
public interface ISplitPackingRecRepository : ISfsStoreRepositoryBase<SplitPackingRec>
{
}

76
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/SplitPackings/SplitPackingRec.cs

@ -0,0 +1,76 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Domain.Shared.SplitPackings;
namespace Win_in.Sfs.Wms.Store.Domain;
/// <summary>
/// 采购标签
/// </summary>
public class SplitPackingRec : SfsAggregateRootBase
, IHasItem
, IHasQty
, IHasStdPack
{
/// <summary>
/// 操作类型
/// </summary>
public OprTypeEnum OprType { get; set; }
/// <summary>
///
/// </summary>
public string GroupCode { get; set; }
/// <summary>
///
/// </summary>
public long OprLevel { get; set; }
/// <summary>
///
/// </summary>
public NodeTypeEnum NodeType { get; set; }
public Guid? ParentId { get; set; }
public string PackingCode { get; set; }
public string RootPackingCode { get; set; }
//public string FullBarcodeString { get; set; }
public string ItemCode { get; set; }
public string ItemName { get; set; }
public string ItemDesc1 { get; set; }
public string ItemDesc2 { get; set; }
public string Lot { get; set; }
/// <summary>
/// 标包数量
/// </summary>
[Display(Name = "标包数量")]
[Column(TypeName = "decimal(18,6)")]
public decimal StdPackQty { get; set; }
/// <summary>
/// 计量单位
/// </summary>
[Display(Name = "计量单位")]
[MaxLength(SfsPropertyConst.CodeLength)]
public string Uom { get; set; }
/// <summary>
/// 数量
/// </summary>
[Display(Name = "数量")]
[Column(TypeName = "decimal(18,6)")]
public decimal Qty { get; set; }
}

53
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/SplitPackings/SplitPackingRecManager.cs

@ -0,0 +1,53 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Domain.Services;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.SplitPackings;
public class SplitPackingRecManager : DomainService, ISplitPackingRecManager
{
private readonly ISplitPackingRecRepository _repository;
public SplitPackingRecManager(ISplitPackingRecRepository repository)
{
_repository = repository;
}
public async Task<bool> DoSplitPacking(List<SplitPackingRec> input)
{
string groupCode = Guid.NewGuid().ToString();
long maxOprLevel;
Guid? parentId;
string rootPackingCode;
SplitPackingRec fromRec = input.First(itm => itm.NodeType == Domain.Shared.SplitPackings.NodeTypeEnum.FromBox);
var query = await _repository.GetQueryableAsync().ConfigureAwait(false);
var hasData = await query.AnyAsync(itm => itm.PackingCode == fromRec.PackingCode).ConfigureAwait(false);
if (hasData)
{
maxOprLevel = await query.Where(itm => itm.PackingCode == fromRec.PackingCode).MaxAsync(itm => itm.OprLevel).ConfigureAwait(false);
SplitPackingRec lastRec = await query.FirstAsync(itm => itm.PackingCode == fromRec.PackingCode && itm.OprLevel == maxOprLevel).ConfigureAwait(false);
parentId = lastRec.Id;
rootPackingCode = lastRec.RootPackingCode;
}
else
{
maxOprLevel = 1;
parentId = null;
rootPackingCode = fromRec.PackingCode;
}
foreach (SplitPackingRec item in input)
{
item.GroupCode = groupCode;
item.OprLevel = maxOprLevel + 1;
item.ParentId = parentId;
item.RootPackingCode = rootPackingCode;
}
await _repository.InsertManyAsync(input).ConfigureAwait(false);
return true;
}
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Win_in.Sfs.Wms.Store.Domain.csproj

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\common.props" />

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/IStoreDbContext.cs

@ -106,4 +106,6 @@ public interface IStoreDbContext : IEfCoreDbContext
public DbSet<ExchangeData> ExchangeDatas { get; }
public DbSet<SplitPackingRec> SplitPackingRecs { get; }
}

45
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/SplitPackings/SplitPackingRecDbContextModelCreatingExtensions.cs

@ -0,0 +1,45 @@
using Microsoft.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.Modeling;
using Win_in.Sfs.Label.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.EntityFrameworkCore;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore;
public static class SplitPackingRecDbContextModelCreatingExtensions
{
public static void ConfigureSplitPackingRec(this ModelBuilder builder, StoreModelBuilderConfigurationOptions options)
{
builder.Entity<SplitPackingRec>(b =>
{
//Configure table & schema name
b.ToTable(options.TablePrefix + nameof(SplitPackingRec), options.Schema);
//Configure ABP properties
b.ConfigureByConvention();
//Configure Sfs base properties
b.ConfigureSfsBase();
//Properties
b.Property(q => q.OprType).IsRequired();
b.Property(q => q.GroupCode).IsRequired().HasMaxLength(36);
b.Property(q => q.OprLevel).IsRequired();
b.Property(q => q.NodeType).IsRequired();
//b.Property(q => q.ParentId)
b.Property(q => q.PackingCode).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.RootPackingCode).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ItemCode).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ItemName).IsRequired().HasMaxLength(SfsPropertyConst.NameLength);
b.Property(q => q.ItemDesc1).IsRequired().HasMaxLength(SfsPropertyConst.DescLength);
b.Property(q => q.ItemDesc2).IsRequired().HasMaxLength(SfsPropertyConst.DescLength);
b.Property(q => q.Lot).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.StdPackQty).HasPrecision(18, 4);
b.Property(q => q.Uom).HasMaxLength(50);
b.Property(q => q.Qty).IsRequired().HasPrecision(18,4);
//Indexes
b.HasIndex(q => new { PackingCode = q.PackingCode });
b.HasIndex(q => new { PackingCode = q.PackingCode, OprLevel = q.OprLevel });
});
}
}

12
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/SplitPackings/SplitPackingRecEfCoreRepository.cs

@ -0,0 +1,12 @@
using Volo.Abp.EntityFrameworkCore;
using Win_in.Sfs.Label.Domain;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore;
public class SplitPackingRecEfCoreRepository : SfsStoreEfCoreRepositoryBase<StoreDbContext, SplitPackingRec>, ISplitPackingRecRepository
{
public SplitPackingRecEfCoreRepository(IDbContextProvider<StoreDbContext> dbContextProvider) : base(dbContextProvider)
{
}
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreDbContext.cs

@ -105,6 +105,8 @@ public class StoreDbContext : AbpDbContext<StoreDbContext>, IStoreDbContext
public DbSet<ExchangeData> ExchangeDatas { get; set; }
public DbSet<SplitPackingRec> SplitPackingRecs { get; set; }
public StoreDbContext(DbContextOptions<StoreDbContext> options)
: base(options)
{

3
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreDbContextModelCreatingExtensions.cs

@ -123,6 +123,9 @@ public static class StoreDbContextModelCreatingExtensions
//设置decimal的默认小数位数
builder.ConfigurePrecisionOfDecimal();
builder.ConfigureSplitPackingRec(options);
}
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreEntityFrameworkCoreModule.cs

@ -124,6 +124,8 @@ public class StoreEntityFrameworkCoreModule : AbpModule
#endregion
context.Services.AddTransient<IExchangeDataRepository, ExchangeDataEfCoreRepository>();
context.Services.AddTransient<ISplitPackingRecRepository, SplitPackingRecEfCoreRepository>();
}
private void ConfigureEntity()

BIN
be/Modules/Store/src/src.rar

Binary file not shown.
Loading…
Cancel
Save