Browse Source

迭代 箱码记录

dev_DY_CC
刘云峰 1 year ago
parent
commit
299e476f1e
  1. 1
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Locations/DTOs/LocationDTO.cs
  2. 159
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/SplitPackings/Dtos/SplitPackingRecDto.cs
  3. 17
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/SplitPackings/ISplitPackingRecAppService.cs
  4. 161
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/SplitPackings/Inputs/SplitPackingRecEditInput.cs
  5. 14
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/SplitPackings/Inputs/SplitPackingRecImportInput.cs
  6. 66
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs
  7. 44
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/SplitPackings/SplitPackingRecAppService.cs
  8. 17
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/SplitPackings/SplitPackingRecAutoMapperProfile.cs
  9. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/StoreApplicationAutoMapperProfile.cs
  10. 5
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain.Shared/SplitPackings/OprTypeEnum.cs
  11. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/SplitPackings/ISplitPackingRecManager.cs
  12. 119
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/SplitPackings/SplitPackingRec.cs
  13. 126
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/SplitPackings/SplitPackingRecManager.cs
  14. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Win_in.Sfs.Wms.Store.Domain.csproj
  15. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/ExchangeData/ExchangeDataDbContextModelCreatingExtensions.cs
  16. 21669
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240222014023_Mig_Store_Init.Designer.cs
  17. 644
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240222014023_Mig_Store_Init.cs
  18. 856
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/StoreDbContextModelSnapshot.cs
  19. 45
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/SplitPackings/SplitPackingRecDbContextModelCreatingExtensions.cs

1
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Locations/DTOs/LocationDTO.cs

@ -1,4 +1,3 @@
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;

159
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/SplitPackings/Dtos/SplitPackingRecDto.cs

@ -0,0 +1,159 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Label.Domain.Shared;
using Win_in.Sfs.Wms.Store.Domain.Shared.SplitPackings;
namespace Win_in.Sfs.Wms.Store.SplitPackings;
public class SplitPackingRecDTO : SfsBaseDataDTOBase
{
/// <summary>
/// 操作类型
/// </summary>
[Display(Name = "操作类型")]
public OprTypeEnum OprType { get; set; }
/// <summary>
/// 源箱码
/// </summary>
[Display(Name = "源箱码")]
public string FromPackingCode { get; set; }
/// <summary>
/// 源顶级箱码
/// </summary>
[Display(Name = "源顶级箱码")]
public string FromTopPackingCode { get; set; }
/// <summary>
/// 源标包数量
/// </summary>
[Display(Name = "源标包数量")]
public decimal FromStdPackQty { get; set; }
/// <summary>
/// 源计量单位
/// </summary>
[Display(Name = "源计量单位")]
public string FromUom { get; set; }
/// <summary>
/// 源数量
/// </summary>
[Display(Name = "源数量")]
public decimal FromQty { get; set; }
/// <summary>
/// 目标箱码
/// </summary>
[Display(Name = "目标箱码")]
public string ToPackingCode { get; set; }
/// <summary>
/// 目标顶级箱码
/// </summary>
[Display(Name = "目标顶级箱码")]
public string ToTopPackingCode { get; set; }
/// <summary>
/// 目标标包数量
/// </summary>
[Display(Name = "目标标包数量")]
public decimal ToStdPackQty { get; set; }
/// <summary>
/// 目标计量单位
/// </summary>
[Display(Name = "目标计量单位")]
public string ToUom { get; set; }
/// <summary>
/// 目标数量
/// </summary>
[Display(Name = "目标数量")]
public decimal ToQty { get; set; }
/// <summary>
/// 物料号
/// </summary>
[Display(Name = "物料号")]
public string ItemCode { get; set; }
/// <summary>
/// 物料名称
/// </summary>
[Display(Name = "物料名称")]
public string ItemName { get; set; }
/// <summary>
/// 物料描述1
/// </summary>
[Display(Name = "物料描述1")]
public string ItemDesc1 { get; set; }
/// <summary>
/// 物料描述2
/// </summary>
[Display(Name = "物料描述2")]
public string ItemDesc2 { get; set; }
/// <summary>
/// 源批次
/// </summary>
[Display(Name = "源批次")]
public string FromLot { get; set; }
/// <summary>
/// 目标批次
/// </summary>
[Display(Name = "目标批次")]
public string ToLot { get; set; }
/// <summary>
/// 采购订单
/// </summary>
[Display(Name = "采购订单")]
public string PurchaseInfo_PoNumber { get; set; }
/// <summary>
/// 供应商发货单
/// </summary>
[Display(Name = "供应商发货单")]
public string PurchaseInfo_AsnNumber { get; set; }
/// <summary>
/// 到货通知
/// </summary>
[Display(Name = "到货通知")]
public string ArrivalNoticNumber { get; set; }
/// <summary>
/// 任务单
/// </summary>
[Display(Name = "任务单")]
public string TaskOrderNumber { get; set; }
/// <summary>
/// 收货记录单
/// </summary>
[Display(Name = "收货记录单")]
public string ReceiptRecNumber { get; set; }
/// <summary>
/// 上架单
/// </summary>
[Display(Name = "上架单")]
public string PutOnShelfNumber { get; set; }
/// <summary>
/// 标签类型
/// </summary>
[Display(Name = "标签类型")]
public EnumLabelType LabelType { get; set; }
}

17
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/SplitPackings/ISplitPackingRecAppService.cs

@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Wms.Store.Application.Contracts;
namespace Win_in.Sfs.Wms.Store.SplitPackings;
public interface ISplitPackingRecAppService
: ISfsStoreAppServiceBase<SplitPackingRecDTO, SfsBaseDataRequestInputBase, SplitPackingRecEditInput>
{
Task<bool> BatchInsertAsync(List<SplitPackingRecEditInput> inputs);
}

161
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/SplitPackings/Inputs/SplitPackingRecEditInput.cs

@ -0,0 +1,161 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Label.Domain.Shared;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared.SplitPackings;
namespace Win_in.Sfs.Wms.Store.SplitPackings;
public class SplitPackingRecEditInput : SfsBaseDataCreateOrUpdateInputBase
{
/// <summary>
/// 操作类型
/// </summary>
[Required(ErrorMessage = "{0}是必填项")]
public OprTypeEnum OprType { get; set; }
/// <summary>
/// 源箱码
/// </summary>
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string FromPackingCode { get; set; }
/// <summary>
/// 源顶级箱码
/// </summary>
//public string FromTopPackingCode { get; set; }
/// <summary>
/// 源标包数量
/// </summary>
[Required(ErrorMessage = "{0}是必填项")]
public decimal FromStdPackQty { get; set; }
/// <summary>
/// 源计量单位
/// </summary>
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string FromUom { get; set; }
/// <summary>
/// 源数量
/// </summary>
[Required(ErrorMessage = "{0}是必填项")]
public decimal FromQty { get; set; }
/// <summary>
/// 目标箱码
/// </summary>
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ToPackingCode { get; set; }
/// <summary>
/// 目标顶级箱码
/// </summary>
//public string ToTopPackingCode { get; set; }
/// <summary>
/// 目标标包数量
/// </summary>
[Required(ErrorMessage = "{0}是必填项")]
public decimal ToStdPackQty { get; set; }
/// <summary>
/// 目标计量单位
/// </summary>
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ToUom { get; set; }
/// <summary>
/// 目标数量
/// </summary>
[Required(ErrorMessage = "{0}是必填项")]
public decimal ToQty { get; set; }
/// <summary>
/// 物料号
/// </summary>
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ItemCode { get; set; }
/// <summary>
/// 物料名称
/// </summary>
[StringLength(SfsEfCorePropertyConst.NameLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ItemName { get; set; }
/// <summary>
/// 物料描述1
/// </summary>
[StringLength(SfsEfCorePropertyConst.DescLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ItemDesc1 { get; set; }
/// <summary>
/// 物料描述2
/// </summary>
[StringLength(SfsEfCorePropertyConst.DescLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ItemDesc2 { get; set; }
/// <summary>
/// 源批次
/// </summary>
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string FromLot { get; set; }
/// <summary>
/// 目标批次
/// </summary>
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ToLot { get; set; }
/// <summary>
/// 采购订单
/// </summary>
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string PurchaseInfo_PoNumber { get; set; }
/// <summary>
/// 供应商发货单
/// </summary>
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string PurchaseInfo_AsnNumber { get; set; }
/// <summary>
/// 到货通知
/// </summary>
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ArrivalNoticNumber { get; set; }
/// <summary>
/// 任务单
/// </summary>
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string TaskOrderNumber { get; set; }
/// <summary>
/// 收货记录单
/// </summary>
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ReceiptRecNumber { get; set; }
/// <summary>
/// 上架单
/// </summary>
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string PutOnShelfNumber { get; set; }
/// <summary>
/// 标签类型
/// </summary>
public EnumLabelType LabelType { get; set; }
}

14
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/SplitPackings/Inputs/SplitPackingRecImportInput.cs

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Win_in.Sfs.Wms.Store.Application.Contracts;
namespace Win_in.Sfs.Wms.Store.SplitPackings.Inputs;
[Display(Name = "拆箱记录")]
public class SplitPackingRecImportInput : SfsStoreImportInputBase
{
}

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

@ -125,48 +125,38 @@ public class TransferNoteAppService : SfsStoreWithDetailsAppServiceBase
[HttpPost("split-packing")] [HttpPost("split-packing")]
public async Task<TransferNoteDTO> SplitPackingAsync(TransferNoteEditInput transferNoteEditInput) public async Task<TransferNoteDTO> SplitPackingAsync(TransferNoteEditInput transferNoteEditInput)
{ {
//插入拆箱记录表
foreach (var inputDetail in transferNoteEditInput.Details) foreach (var inputDetail in transferNoteEditInput.Details)
{ {
//插入拆箱记录表
List<SplitPackingRec> recLst = new List<SplitPackingRec>(); List<SplitPackingRec> recLst = new List<SplitPackingRec>();
SplitPackingRec fromRec = new SplitPackingRec(); SplitPackingRec packRec = new SplitPackingRec();
fromRec.OprType = Domain.Shared.SplitPackings.OprTypeEnum.SplitBox; packRec.OprType = Domain.Shared.SplitPackings.OprTypeEnum.SplitBox;
//fromRec.GroupCode = ; packRec.FromPackingCode = inputDetail.FromPackingCode;
//fromRec.OprLevel = ; //packRec.FromTopPackingCode = inputDetail.;
fromRec.NodeType = Domain.Shared.SplitPackings.NodeTypeEnum.FromBox; packRec.FromStdPackQty = inputDetail.StdPackQty;
//fromRec.ParentId = ; packRec.FromUom = inputDetail.Uom;
fromRec.PackingCode = inputDetail.FromPackingCode; packRec.FromQty = inputDetail.Qty;
//fromRec.RootPackingCode = ; packRec.ToPackingCode = inputDetail.ToPackingCode;
fromRec.ItemCode = inputDetail.ItemCode; //packRec.ToTopPackingCode = inputDetail.;
fromRec.ItemName = inputDetail.ItemName; packRec.ToStdPackQty = inputDetail.StdPackQty;
fromRec.ItemDesc1 = inputDetail.ItemDesc1; packRec.ToUom = inputDetail.Uom;
fromRec.ItemDesc2 = inputDetail.ItemDesc2; packRec.ToQty = inputDetail.Qty;
fromRec.Lot = inputDetail.FromLot; packRec.ItemCode = inputDetail.ItemCode;
fromRec.StdPackQty = inputDetail.StdPackQty; packRec.ItemName = inputDetail.ItemName;
fromRec.Uom = inputDetail.Uom; packRec.ItemDesc1 = inputDetail.ItemDesc1;
fromRec.Qty = inputDetail.Qty; packRec.ItemDesc2 = inputDetail.ItemDesc2;
recLst.Add(fromRec); packRec.FromLot = inputDetail.FromLot;
packRec.ToLot = inputDetail.ToLot;
SplitPackingRec toRec = new SplitPackingRec(); //packRec.PurchaseInfo_PoNumber = inputDetail.; // 采购订单
toRec.OprType = Domain.Shared.SplitPackings.OprTypeEnum.SplitBox; //packRec.PurchaseInfo_AsnNumber = inputDetail.; //供应商发货单
//toRec.GroupCode = ; //packRec.ArrivalNoticNumber = inputDetail.; //到货通知
//toRec.OprLevel = ; //packRec.TaskOrderNumber = inputDetail.; //任务单
toRec.NodeType = Domain.Shared.SplitPackings.NodeTypeEnum.ToBox; //packRec.ReceiptRecNumber = inputDetail.; //收货记录单
//toRec.ParentId = ; //packRec.PutOnShelfNumber = inputDetail.; //上架单
toRec.PackingCode = inputDetail.ToPackingCode; recLst.Add(packRec);
//toRec.RootPackingCode = ; await _splitPackingRecManager.BatchInsertAsync(recLst).ConfigureAwait(false);
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(); transferNoteEditInput.Type = EnumTransSubType.Transfer_SplitPacking.ToString();
return await CreateAsync(transferNoteEditInput).ConfigureAwait(false); return await CreateAsync(transferNoteEditInput).ConfigureAwait(false);
} }

44
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/SplitPackings/SplitPackingRecAppService.cs

@ -0,0 +1,44 @@
/*
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Components;
using Win_in.Sfs.Wms.Store.Application;
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.Inputs;
namespace Win_in.Sfs.Wms.Store.SplitPackings;
/// <summary>
/// 拆箱记录
/// </summary>
//[Authorize]
//[Route($"{StoreConsts.RootPath}split-packing-rec")]
public class SplitPackingRecAppService :
SfsStoreAppServiceBase<SplitPackingRec, SplitPackingRecDTO, SfsStoreRequestInputBase, SplitPackingRecEditInput
, SplitPackingRecImportInput>
//, ISplitPackingRecAppService
{
private readonly ISplitPackingRecManager _splitPackingRecManager;
public SplitPackingRecAppService(
ISplitPackingRecRepository repository,
ISplitPackingRecManager splitPackingRecManager
) : base(repository)
{
_splitPackingRecManager = splitPackingRecManager;
}
public async Task<bool> BatchInsertAsync(List<SplitPackingRecEditInput> inputs)
{
List<SplitPackingRec> lst = ObjectMapper.Map<List<SplitPackingRecEditInput>, List<SplitPackingRec>>(inputs);
bool ret = await _splitPackingRecManager.BatchInsertAsync(lst).ConfigureAwait(false);
return ret;
}
}
*/

17
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/SplitPackings/SplitPackingRecAutoMapperProfile.cs

@ -0,0 +1,17 @@
using AutoMapper;
using Volo.Abp.AutoMapper;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Basedata.Domain;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.SplitPackings;
namespace Win_in.Sfs.Basedata.Application;
public partial class StoreApplicationAutoMapperProfile : Profile
{
public void SplitPackingRecAutoMapperProfile()
{
CreateMap<SplitPackingRec, SplitPackingRecDTO>();
CreateMap<SplitPackingRecEditInput, SplitPackingRec>();
}
}

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/StoreApplicationAutoMapperProfile.cs

@ -104,6 +104,7 @@ public partial class StoreApplicationAutoMapperProfile : Profile
#endregion #endregion
ExchangeDataAutoMapperProfile(); ExchangeDataAutoMapperProfile();
SplitPackingRecAutoMapperProfile();
} }
} }

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

@ -7,6 +7,11 @@ using System.Threading.Tasks;
namespace Win_in.Sfs.Wms.Store.Domain.Shared.SplitPackings; namespace Win_in.Sfs.Wms.Store.Domain.Shared.SplitPackings;
public enum OprTypeEnum public enum OprTypeEnum
{ {
/// <summary>
/// 其它
/// </summary>
Other = 0,
/// <summary> /// <summary>
/// 拆箱 /// 拆箱
/// </summary> /// </summary>

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

@ -9,5 +9,5 @@ using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.SplitPackings; namespace Win_in.Sfs.Wms.Store.SplitPackings;
public interface ISplitPackingRecManager : IDomainService public interface ISplitPackingRecManager : IDomainService
{ {
Task<bool> DoSplitPacking(List<SplitPackingRec> input); Task<bool> BatchInsertAsync(List<SplitPackingRec> input);
} }

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

@ -1,6 +1,7 @@
using System; using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using Win_in.Sfs.Label.Domain.Shared;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Domain.Shared.SplitPackings; using Win_in.Sfs.Wms.Store.Domain.Shared.SplitPackings;
@ -12,8 +13,6 @@ namespace Win_in.Sfs.Wms.Store.Domain;
/// </summary> /// </summary>
public class SplitPackingRec : SfsAggregateRootBase public class SplitPackingRec : SfsAggregateRootBase
, IHasItem , IHasItem
, IHasQty
, IHasStdPack
{ {
/// <summary> /// <summary>
/// 操作类型 /// 操作类型
@ -21,56 +20,126 @@ public class SplitPackingRec : SfsAggregateRootBase
public OprTypeEnum OprType { get; set; } public OprTypeEnum OprType { get; set; }
/// <summary> /// <summary>
/// /// 源箱码
/// </summary> /// </summary>
public string GroupCode { get; set; } public string FromPackingCode { get; set; }
/// <summary> /// <summary>
/// /// 源顶级箱码
/// </summary> /// </summary>
public long OprLevel { get; set; } public string FromTopPackingCode { get; set; }
/// <summary> /// <summary>
/// /// 源标包数量
/// </summary> /// </summary>
public NodeTypeEnum NodeType { get; set; } [Display(Name = "标包数量")]
[Column(TypeName = "decimal(18,6)")]
public decimal FromStdPackQty { get; set; }
public Guid? ParentId { get; set; } /// <summary>
/// 源计量单位
/// </summary>
[Display(Name = "计量单位")]
[MaxLength(SfsPropertyConst.CodeLength)]
public string FromUom { get; set; }
public string PackingCode { get; set; } /// <summary>
/// 源数量
/// </summary>
[Display(Name = "数量")]
[Column(TypeName = "decimal(18,6)")]
public decimal FromQty { get; set; }
public string RootPackingCode { get; set; } /// <summary>
/// 目标箱码
/// </summary>
public string ToPackingCode { get; set; }
/// <summary>
/// 目标顶级箱码
/// </summary>
public string ToTopPackingCode { get; set; }
//public string FullBarcodeString { get; set; } /// <summary>
/// 目标标包数量
/// </summary>
[Display(Name = "标包数量")]
[Column(TypeName = "decimal(18,6)")]
public decimal ToStdPackQty { get; set; }
/// <summary>
/// 目标计量单位
/// </summary>
[Display(Name = "计量单位")]
[MaxLength(SfsPropertyConst.CodeLength)]
public string ToUom { get; set; }
/// <summary>
/// 目标数量
/// </summary>
[Display(Name = "数量")]
[Column(TypeName = "decimal(18,6)")]
public decimal ToQty { get; set; }
/// <summary>
/// 物料号
/// </summary>
public string ItemCode { get; set; } public string ItemCode { get; set; }
/// <summary>
/// 物料名称
/// </summary>
public string ItemName { get; set; } public string ItemName { get; set; }
/// <summary>
/// 物料描述1
/// </summary>
public string ItemDesc1 { get; set; } public string ItemDesc1 { get; set; }
/// <summary>
/// 物料描述2
/// </summary>
public string ItemDesc2 { get; set; } public string ItemDesc2 { get; set; }
public string Lot { get; set; } /// <summary>
/// 源批次
/// </summary>
public string FromLot { get; set; }
/// <summary> /// <summary>
/// 标包数量 /// 目标批次
/// </summary> /// </summary>
[Display(Name = "标包数量")] public string ToLot { get; set; }
[Column(TypeName = "decimal(18,6)")]
public decimal StdPackQty { get; set; }
/// <summary> /// <summary>
/// 计量单位 /// 采购订单
/// </summary> /// </summary>
[Display(Name = "计量单位")] public string PurchaseInfo_PoNumber { get; set; }
[MaxLength(SfsPropertyConst.CodeLength)]
public string Uom { get; set; }
/// <summary> /// <summary>
/// 数量 /// 供应商发货单
/// </summary> /// </summary>
[Display(Name = "数量")] public string PurchaseInfo_AsnNumber { get; set; }
[Column(TypeName = "decimal(18,6)")]
public decimal Qty { get; set; } /// <summary>
/// 到货通知
/// </summary>
public string ArrivalNoticNumber { get; set; }
/// <summary>
/// 任务单
/// </summary>
public string TaskOrderNumber { get; set; }
/// <summary>
/// 收货记录单
/// </summary>
public string ReceiptRecNumber { get; set; }
/// <summary>
/// 上架单
/// </summary>
public string PutOnShelfNumber { get; set; }
public EnumLabelType LabelType { get; set; }
} }

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

@ -4,50 +4,130 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Volo.Abp;
using Volo.Abp.Domain.Services; using Volo.Abp.Domain.Services;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Label.Domain;
using Win_in.Sfs.Wms.Store.Domain; using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared.SplitPackings;
namespace Win_in.Sfs.Wms.Store.SplitPackings; namespace Win_in.Sfs.Wms.Store.SplitPackings;
public class SplitPackingRecManager : DomainService, ISplitPackingRecManager public class SplitPackingRecManager : DomainService, ISplitPackingRecManager
{ {
private readonly ISplitPackingRecRepository _repository; private readonly ISplitPackingRecRepository _repository;
private readonly IObjectMapper _autoMapper;
private readonly ILabelDefinitionManager _labelDefinitionManager;
public SplitPackingRecManager(ISplitPackingRecRepository repository) public SplitPackingRecManager(ISplitPackingRecRepository repository, IObjectMapper autoMapper, ILabelDefinitionManager labelDefinitionManager)
{ {
_repository = repository; _repository = repository;
_autoMapper = autoMapper;
_labelDefinitionManager = labelDefinitionManager;
} }
public async Task<bool> DoSplitPacking(List<SplitPackingRec> input) public async Task<bool> BatchInsertAsync(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 query = await _repository.GetQueryableAsync().ConfigureAwait(false);
var hasData = await query.AnyAsync(itm => itm.PackingCode == fromRec.PackingCode).ConfigureAwait(false); foreach (SplitPackingRec item in input)
if (hasData) {
if (item.OprType == OprTypeEnum.Other) //入库等
{
if (item.FromPackingCode != item.ToPackingCode)
{
throw new UserFriendlyException("操作类型不是拆箱或合箱状态,源箱码和目标箱码必须相同!");
}
throw new UserFriendlyException("操作类型不是拆箱或合箱状态,源箱码和目标箱码必须相等!");
}
else //拆箱或合箱
{
if (item.FromPackingCode == item.ToPackingCode)
{
throw new UserFriendlyException("操作类型是拆箱或合箱状态,源箱码和目标箱码不能相同!");
}
}
if (item.OprType == OprTypeEnum.SplitBox || item.OprType == OprTypeEnum.MergeBox)
{
if (string.IsNullOrEmpty(item.ToPackingCode))
{
item.ToPackingCode = await _labelDefinitionManager.GenerateAsync(item.LabelType.ToString(), DateTime.Now).ConfigureAwait(false);
}
string toPackCode = item.ToPackingCode;
//拆箱时,如果目标箱不存在,插入目标箱(两个箱码相同)
var toHis = await query.FirstOrDefaultAsync(itm => itm.FromPackingCode == toPackCode).ConfigureAwait(false);
if (toHis == null)
{
SplitPackingRec newObj = new SplitPackingRec();
_autoMapper.Map<SplitPackingRec, SplitPackingRec>(item, newObj);
newObj.SetId(Guid.NewGuid());
newObj.OprType = OprTypeEnum.Other;
newObj.FromPackingCode = newObj.ToPackingCode;
newObj.FromTopPackingCode = newObj.ToTopPackingCode;
newObj.FromStdPackQty = newObj.ToStdPackQty;
newObj.FromUom = newObj.ToUom;
newObj.FromQty = newObj.ToQty;
newObj.FromLot = newObj.ToLot;
await _repository.InsertAsync(newObj).ConfigureAwait(false);
}
}
item.FromTopPackingCode = GetTopPackingCode(query, item.FromPackingCode);
item.ToTopPackingCode = GetTopPackingCode(query, item.ToPackingCode);
SetBillNumber(query, item);
}
await _repository.InsertManyAsync(input).ConfigureAwait(false);
return true;
}
/// <summary>
/// 取顶级箱码
/// </summary>
/// <param name="historyQuery">箱码历史</param>
/// <param name="item">当前箱码</param>
/// <returns></returns>
private static string GetTopPackingCode(IQueryable<SplitPackingRec> historyQuery, string packingCode)
{
var historyRec = historyQuery.Where(itm => itm.FromPackingCode == packingCode).OrderBy(itm => itm.CreationTime).FirstOrDefault();
if (historyRec != null)
{ {
maxOprLevel = await query.Where(itm => itm.PackingCode == fromRec.PackingCode).MaxAsync(itm => itm.OprLevel).ConfigureAwait(false); return historyRec.FromTopPackingCode;
SplitPackingRec lastRec = await query.FirstAsync(itm => itm.PackingCode == fromRec.PackingCode && itm.OprLevel == maxOprLevel).ConfigureAwait(false);
parentId = lastRec.Id;
rootPackingCode = lastRec.RootPackingCode;
} }
else else
{ {
maxOprLevel = 1; historyRec = historyQuery.Where(itm => itm.ToPackingCode == packingCode).OrderBy(itm => itm.CreationTime).FirstOrDefault();
parentId = null; if (historyRec != null)
rootPackingCode = fromRec.PackingCode; {
return historyRec.ToTopPackingCode;
}
} }
return null;
}
foreach (SplitPackingRec item in input) private static void SetBillNumber(IQueryable<SplitPackingRec> historyQuery, SplitPackingRec obj)
{
var historyRec = historyQuery.Where(itm => itm.FromPackingCode == obj.FromPackingCode).OrderBy(itm => itm.CreationTime).FirstOrDefault();
if (historyRec != null)
{ {
item.GroupCode = groupCode; obj.PurchaseInfo_PoNumber = historyRec.PurchaseInfo_PoNumber; //采购订单
item.OprLevel = maxOprLevel + 1; obj.PurchaseInfo_AsnNumber = historyRec.PurchaseInfo_AsnNumber; //供应商发货单
item.ParentId = parentId; obj.ArrivalNoticNumber = historyRec.ArrivalNoticNumber; //到货通知
item.RootPackingCode = rootPackingCode; obj.TaskOrderNumber = historyRec.TaskOrderNumber; //任务单
obj.ReceiptRecNumber = historyRec.ReceiptRecNumber; //收货记录单
obj.PutOnShelfNumber = historyRec.PutOnShelfNumber; //上架单
} }
await _repository.InsertManyAsync(input).ConfigureAwait(false); //else
return true; //{
// historyRec = historyQuery.Where(itm => itm.ToPackingCode == obj.ToPackingCode).OrderBy(itm => itm.CreationTime).FirstOrDefault();
// if (historyRec != null)
// {
// obj.PurchaseInfo_PoNumber = historyRec.PurchaseInfo_PoNumber; //采购订单
// obj.PurchaseInfo_AsnNumber = historyRec.PurchaseInfo_AsnNumber; //供应商发货单
// obj.ArrivalNoticNumber = historyRec.ArrivalNoticNumber; //到货通知
// obj.TaskOrderNumber = historyRec.TaskOrderNumber; //任务单
// obj.ReceiptRecNumber = historyRec.ReceiptRecNumber; //收货记录单
// obj.PutOnShelfNumber = historyRec.PutOnShelfNumber; //上架单
// }
//}
} }
} }

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

@ -30,6 +30,8 @@
<ProjectReference Include="..\..\..\BaseData\src\Win_in.Sfs.Basedata.Application.Contracts\Win_in.Sfs.Basedata.Application.Contracts.csproj" /> <ProjectReference Include="..\..\..\BaseData\src\Win_in.Sfs.Basedata.Application.Contracts\Win_in.Sfs.Basedata.Application.Contracts.csproj" />
<ProjectReference Include="..\..\..\FileStorage\src\Win_in.Sfs.FileStorage.Application.Contracts\Win_in.Sfs.FileStorage.Application.Contracts.csproj" /> <ProjectReference Include="..\..\..\FileStorage\src\Win_in.Sfs.FileStorage.Application.Contracts\Win_in.Sfs.FileStorage.Application.Contracts.csproj" />
<ProjectReference Include="..\..\..\Label\src\Win_in.Sfs.Label.Application.Contracts\Win_in.Sfs.Label.Application.Contracts.csproj" /> <ProjectReference Include="..\..\..\Label\src\Win_in.Sfs.Label.Application.Contracts\Win_in.Sfs.Label.Application.Contracts.csproj" />
<ProjectReference Include="..\..\..\Label\src\Win_in.Sfs.Label.Domain.Shared\Win_in.Sfs.Label.Domain.Shared.csproj" />
<ProjectReference Include="..\..\..\Label\src\Win_in.Sfs.Label.Domain\Win_in.Sfs.Label.Domain.csproj" />
<ProjectReference Include="..\..\..\Shared\src\Win_in.Sfs.Shared.Domain\Win_in.Sfs.Shared.Domain.csproj" /> <ProjectReference Include="..\..\..\Shared\src\Win_in.Sfs.Shared.Domain\Win_in.Sfs.Shared.Domain.csproj" />
<ProjectReference Include="..\..\..\Shared\src\Win_in.Sfs.Shared.Event\Win_in.Sfs.Shared.Event.csproj" /> <ProjectReference Include="..\..\..\Shared\src\Win_in.Sfs.Shared.Event\Win_in.Sfs.Shared.Event.csproj" />
<ProjectReference Include="..\..\..\Shared\src\Win_in.Sfs.Shared.Framework\Win_in.Sfs.Shared.Framework.csproj" /> <ProjectReference Include="..\..\..\Shared\src\Win_in.Sfs.Shared.Framework\Win_in.Sfs.Shared.Framework.csproj" />

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

@ -30,7 +30,7 @@ public static class ExchangeDataDbContextModelCreatingExtensions
b.Property(p => p.ReadTime); b.Property(p => p.ReadTime);
b.Property(p => p.ErrorCode).IsRequired().HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>(); b.Property(p => p.ErrorCode).IsRequired().HasMaxLength(SfsPropertyConst.NameLength).HasConversion<string>();
b.Property(p => p.ErrorMessage).HasMaxLength(SfsPropertyConst.RemarkLength); b.Property(p => p.ErrorMessage).HasMaxLength(SfsPropertyConst.RemarkLength);
b.Property(p => p.TyrpNumber).IsRequired().HasDefaultValueSql(); b.Property(p => p.TyrpNumber).IsRequired(); //.HasDefaultValueSql()
//Relations //Relations
//Indexes //Indexes

21669
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240222014023_Mig_Store_Init.Designer.cs

File diff suppressed because it is too large

644
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240222014023_Mig_Store_Init.cs

@ -0,0 +1,644 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Win_in.Sfs.Wms.Store.Migrations
{
public partial class Mig_Store_Init : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "CaseCode",
table: "Store_UnplannedReceiptRequestDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Explain",
table: "Store_UnplannedReceiptRequestDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "OnceBusiCode",
table: "Store_UnplannedReceiptRequestDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "ProjCapacityCode",
table: "Store_UnplannedReceiptRequestDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "ReasonCode",
table: "Store_UnplannedReceiptRequestDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "OANumber",
table: "Store_UnplannedReceiptRequest",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<int>(
name: "UnplannedReceiptType",
table: "Store_UnplannedReceiptRequest",
type: "int",
nullable: false,
defaultValue: 0);
migrationBuilder.AddColumn<string>(
name: "CaseCode",
table: "Store_UnplannedReceiptNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Explain",
table: "Store_UnplannedReceiptNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "OnceBusiCode",
table: "Store_UnplannedReceiptNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "ProjCapacityCode",
table: "Store_UnplannedReceiptNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "OANumber",
table: "Store_UnplannedReceiptNote",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<int>(
name: "UnplannedReceiptType",
table: "Store_UnplannedReceiptNote",
type: "int",
nullable: false,
defaultValue: 0);
migrationBuilder.AddColumn<string>(
name: "CaseCode",
table: "Store_UnplannedIssueRequestDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Explain",
table: "Store_UnplannedIssueRequestDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "OnceBusiCode",
table: "Store_UnplannedIssueRequestDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "ProjCapacityCode",
table: "Store_UnplannedIssueRequestDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "OANumber",
table: "Store_UnplannedIssueRequest",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<int>(
name: "UnplannedIssueType",
table: "Store_UnplannedIssueRequest",
type: "int",
nullable: false,
defaultValue: 0);
migrationBuilder.AddColumn<string>(
name: "CaseCode",
table: "Store_UnplannedIssueNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Explain",
table: "Store_UnplannedIssueNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "OnceBusiCode",
table: "Store_UnplannedIssueNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "ProjCapacityCode",
table: "Store_UnplannedIssueNoteDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "OANumber",
table: "Store_UnplannedIssueNote",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<int>(
name: "UnplannedIssueType",
table: "Store_UnplannedIssueNote",
type: "int",
nullable: false,
defaultValue: 0);
migrationBuilder.AlterColumn<string>(
name: "Type",
table: "Store_ProductReceiptRequest",
type: "nvarchar(64)",
maxLength: 64,
nullable: false,
defaultValue: "",
oldClrType: typeof(string),
oldType: "nvarchar(64)",
oldMaxLength: 64,
oldNullable: true);
migrationBuilder.AddColumn<DateTime>(
name: "InspectDate",
table: "Store_InspectNoteDetail",
type: "datetime2",
nullable: false,
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
migrationBuilder.AddColumn<string>(
name: "TyrpNumber",
table: "Store_ExchangeData",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "CaseCode",
table: "Job_UnplannedReceiptJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Explain",
table: "Job_UnplannedReceiptJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "OnceBusiCode",
table: "Job_UnplannedReceiptJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "ProjCapacityCode",
table: "Job_UnplannedReceiptJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "OANumber",
table: "Job_UnplannedReceiptJob",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<int>(
name: "UnplannedReceiptType",
table: "Job_UnplannedReceiptJob",
type: "int",
nullable: false,
defaultValue: 0);
migrationBuilder.AddColumn<string>(
name: "CaseCode",
table: "Job_UnplannedIssueJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Explain",
table: "Job_UnplannedIssueJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "OnceBusiCode",
table: "Job_UnplannedIssueJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "ProjCapacityCode",
table: "Job_UnplannedIssueJobDetail",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "OANumber",
table: "Job_UnplannedIssueJob",
type: "nvarchar(max)",
nullable: true);
migrationBuilder.AddColumn<int>(
name: "UnplannedIssueType",
table: "Job_UnplannedIssueJob",
type: "int",
nullable: false,
defaultValue: 0);
migrationBuilder.CreateTable(
name: "Store_WipWarehouseAdjustNote",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Type = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
RequestNumber = table.Column<string>(type: "nvarchar(max)", nullable: true),
JobNumber = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
Confirmed = table.Column<bool>(type: "bit", nullable: false),
ConfirmTime = table.Column<DateTime>(type: "datetime2", nullable: true),
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true),
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
Remark = table.Column<string>(type: "nvarchar(3072)", maxLength: 3072, nullable: true),
Worker = table.Column<string>(type: "nvarchar(max)", nullable: true),
Number = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
ActiveDate = table.Column<DateTime>(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Store_WipWarehouseAdjustNote", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Store_WipWarehouseAdjustRequest",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Type = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true),
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
Remark = table.Column<string>(type: "nvarchar(3072)", maxLength: 3072, nullable: true),
Worker = table.Column<string>(type: "nvarchar(max)", nullable: true),
Number = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
ActiveDate = table.Column<DateTime>(type: "datetime2", nullable: false),
AutoSubmit = table.Column<bool>(type: "bit", nullable: false),
AutoAgree = table.Column<bool>(type: "bit", nullable: false),
AutoHandle = table.Column<bool>(type: "bit", nullable: false),
AutoCompleteJob = table.Column<bool>(type: "bit", nullable: false),
DirectCreateNote = table.Column<bool>(type: "bit", nullable: false),
RequestStatus = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Store_WipWarehouseAdjustRequest", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Store_WipWarehouseAdjustNoteDetail",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Reason = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
ReasonCode = table.Column<string>(type: "nvarchar(max)", maxLength: 4096, nullable: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
MasterID = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
Number = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
Remark = table.Column<string>(type: "nvarchar(3072)", maxLength: 3072, nullable: true),
ItemName = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
ItemDesc1 = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
ItemDesc2 = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
ItemCode = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
Uom = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
Qty = table.Column<decimal>(type: "decimal(18,6)", precision: 18, scale: 6, nullable: false),
StdPackQty = table.Column<decimal>(type: "decimal(18,6)", nullable: false),
FromPackingCode = table.Column<string>(type: "nvarchar(450)", nullable: true),
ToPackingCode = table.Column<string>(type: "nvarchar(max)", nullable: true),
FromContainerCode = table.Column<string>(type: "nvarchar(max)", nullable: true),
ToContainerCode = table.Column<string>(type: "nvarchar(max)", nullable: true),
FromLot = table.Column<string>(type: "nvarchar(max)", nullable: true),
ToLot = table.Column<string>(type: "nvarchar(max)", nullable: true),
SupplierBatch = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
ArriveDate = table.Column<DateTime>(type: "datetime2", nullable: false),
ProduceDate = table.Column<DateTime>(type: "datetime2", nullable: false),
ExpireDate = table.Column<DateTime>(type: "datetime2", nullable: false),
FromLocationCode = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
FromLocationArea = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
FromLocationGroup = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
FromLocationErpCode = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
FromWarehouseCode = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
FromStatus = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
ToLocationCode = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
ToLocationArea = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
ToLocationGroup = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
ToLocationErpCode = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
ToWarehouseCode = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
ToStatus = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Store_WipWarehouseAdjustNoteDetail", x => x.Id);
table.ForeignKey(
name: "FK_Store_WipWarehouseAdjustNoteDetail_Store_WipWarehouseAdjustNote_MasterID",
column: x => x.MasterID,
principalTable: "Store_WipWarehouseAdjustNote",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Store_WipWarehouseAdjustRequestDetail",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Reason = table.Column<string>(type: "nvarchar(max)", maxLength: 4096, nullable: true),
ReasonCode = table.Column<string>(type: "nvarchar(max)", maxLength: 4096, nullable: true),
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false),
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true),
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
MasterID = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TenantId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
Number = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
Remark = table.Column<string>(type: "nvarchar(3072)", maxLength: 3072, nullable: true),
ItemName = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
ItemDesc1 = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
ItemDesc2 = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
ItemCode = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
Uom = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
Qty = table.Column<decimal>(type: "decimal(18,6)", precision: 18, scale: 6, nullable: false),
StdPackQty = table.Column<decimal>(type: "decimal(18,6)", nullable: false),
FromPackingCode = table.Column<string>(type: "nvarchar(max)", nullable: true),
ToPackingCode = table.Column<string>(type: "nvarchar(max)", nullable: true),
FromContainerCode = table.Column<string>(type: "nvarchar(max)", nullable: true),
ToContainerCode = table.Column<string>(type: "nvarchar(max)", nullable: true),
FromLot = table.Column<string>(type: "nvarchar(max)", nullable: true),
ToLot = table.Column<string>(type: "nvarchar(max)", nullable: true),
SupplierBatch = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
ArriveDate = table.Column<DateTime>(type: "datetime2", nullable: false),
ProduceDate = table.Column<DateTime>(type: "datetime2", nullable: false),
ExpireDate = table.Column<DateTime>(type: "datetime2", nullable: false),
FromLocationCode = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
FromLocationArea = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
FromLocationGroup = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
FromLocationErpCode = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
FromWarehouseCode = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
FromStatus = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
ToLocationCode = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
ToLocationArea = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
ToLocationGroup = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: true),
ToLocationErpCode = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
ToWarehouseCode = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false),
ToStatus = table.Column<string>(type: "nvarchar(64)", maxLength: 64, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Store_WipWarehouseAdjustRequestDetail", x => x.Id);
table.ForeignKey(
name: "FK_Store_WipWarehouseAdjustRequestDetail_Store_WipWarehouseAdjustRequest_MasterID",
column: x => x.MasterID,
principalTable: "Store_WipWarehouseAdjustRequest",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_Store_WipWarehouseAdjustNote_Number",
table: "Store_WipWarehouseAdjustNote",
column: "Number",
unique: true);
migrationBuilder.CreateIndex(
name: "IX_Store_WipWarehouseAdjustNoteDetail_MasterID",
table: "Store_WipWarehouseAdjustNoteDetail",
column: "MasterID");
migrationBuilder.CreateIndex(
name: "IX_Store_WipWarehouseAdjustNoteDetail_Number_FromPackingCode_FromLocationCode_ToLocationCode_FromStatus_ToStatus",
table: "Store_WipWarehouseAdjustNoteDetail",
columns: new[] { "Number", "FromPackingCode", "FromLocationCode", "ToLocationCode", "FromStatus", "ToStatus" },
unique: true,
filter: "[FromPackingCode] IS NOT NULL");
migrationBuilder.CreateIndex(
name: "IX_Store_WipWarehouseAdjustRequest_Number",
table: "Store_WipWarehouseAdjustRequest",
column: "Number",
unique: true);
migrationBuilder.CreateIndex(
name: "IX_Store_WipWarehouseAdjustRequestDetail_MasterID",
table: "Store_WipWarehouseAdjustRequestDetail",
column: "MasterID");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Store_WipWarehouseAdjustNoteDetail");
migrationBuilder.DropTable(
name: "Store_WipWarehouseAdjustRequestDetail");
migrationBuilder.DropTable(
name: "Store_WipWarehouseAdjustNote");
migrationBuilder.DropTable(
name: "Store_WipWarehouseAdjustRequest");
migrationBuilder.DropColumn(
name: "CaseCode",
table: "Store_UnplannedReceiptRequestDetail");
migrationBuilder.DropColumn(
name: "Explain",
table: "Store_UnplannedReceiptRequestDetail");
migrationBuilder.DropColumn(
name: "OnceBusiCode",
table: "Store_UnplannedReceiptRequestDetail");
migrationBuilder.DropColumn(
name: "ProjCapacityCode",
table: "Store_UnplannedReceiptRequestDetail");
migrationBuilder.DropColumn(
name: "ReasonCode",
table: "Store_UnplannedReceiptRequestDetail");
migrationBuilder.DropColumn(
name: "OANumber",
table: "Store_UnplannedReceiptRequest");
migrationBuilder.DropColumn(
name: "UnplannedReceiptType",
table: "Store_UnplannedReceiptRequest");
migrationBuilder.DropColumn(
name: "CaseCode",
table: "Store_UnplannedReceiptNoteDetail");
migrationBuilder.DropColumn(
name: "Explain",
table: "Store_UnplannedReceiptNoteDetail");
migrationBuilder.DropColumn(
name: "OnceBusiCode",
table: "Store_UnplannedReceiptNoteDetail");
migrationBuilder.DropColumn(
name: "ProjCapacityCode",
table: "Store_UnplannedReceiptNoteDetail");
migrationBuilder.DropColumn(
name: "OANumber",
table: "Store_UnplannedReceiptNote");
migrationBuilder.DropColumn(
name: "UnplannedReceiptType",
table: "Store_UnplannedReceiptNote");
migrationBuilder.DropColumn(
name: "CaseCode",
table: "Store_UnplannedIssueRequestDetail");
migrationBuilder.DropColumn(
name: "Explain",
table: "Store_UnplannedIssueRequestDetail");
migrationBuilder.DropColumn(
name: "OnceBusiCode",
table: "Store_UnplannedIssueRequestDetail");
migrationBuilder.DropColumn(
name: "ProjCapacityCode",
table: "Store_UnplannedIssueRequestDetail");
migrationBuilder.DropColumn(
name: "OANumber",
table: "Store_UnplannedIssueRequest");
migrationBuilder.DropColumn(
name: "UnplannedIssueType",
table: "Store_UnplannedIssueRequest");
migrationBuilder.DropColumn(
name: "CaseCode",
table: "Store_UnplannedIssueNoteDetail");
migrationBuilder.DropColumn(
name: "Explain",
table: "Store_UnplannedIssueNoteDetail");
migrationBuilder.DropColumn(
name: "OnceBusiCode",
table: "Store_UnplannedIssueNoteDetail");
migrationBuilder.DropColumn(
name: "ProjCapacityCode",
table: "Store_UnplannedIssueNoteDetail");
migrationBuilder.DropColumn(
name: "OANumber",
table: "Store_UnplannedIssueNote");
migrationBuilder.DropColumn(
name: "UnplannedIssueType",
table: "Store_UnplannedIssueNote");
migrationBuilder.DropColumn(
name: "InspectDate",
table: "Store_InspectNoteDetail");
migrationBuilder.DropColumn(
name: "TyrpNumber",
table: "Store_ExchangeData");
migrationBuilder.DropColumn(
name: "CaseCode",
table: "Job_UnplannedReceiptJobDetail");
migrationBuilder.DropColumn(
name: "Explain",
table: "Job_UnplannedReceiptJobDetail");
migrationBuilder.DropColumn(
name: "OnceBusiCode",
table: "Job_UnplannedReceiptJobDetail");
migrationBuilder.DropColumn(
name: "ProjCapacityCode",
table: "Job_UnplannedReceiptJobDetail");
migrationBuilder.DropColumn(
name: "OANumber",
table: "Job_UnplannedReceiptJob");
migrationBuilder.DropColumn(
name: "UnplannedReceiptType",
table: "Job_UnplannedReceiptJob");
migrationBuilder.DropColumn(
name: "CaseCode",
table: "Job_UnplannedIssueJobDetail");
migrationBuilder.DropColumn(
name: "Explain",
table: "Job_UnplannedIssueJobDetail");
migrationBuilder.DropColumn(
name: "OnceBusiCode",
table: "Job_UnplannedIssueJobDetail");
migrationBuilder.DropColumn(
name: "ProjCapacityCode",
table: "Job_UnplannedIssueJobDetail");
migrationBuilder.DropColumn(
name: "OANumber",
table: "Job_UnplannedIssueJob");
migrationBuilder.DropColumn(
name: "UnplannedIssueType",
table: "Job_UnplannedIssueJob");
migrationBuilder.AlterColumn<string>(
name: "Type",
table: "Store_ProductReceiptRequest",
type: "nvarchar(64)",
maxLength: 64,
nullable: true,
oldClrType: typeof(string),
oldType: "nvarchar(64)",
oldMaxLength: 64);
}
}
}

856
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/StoreDbContextModelSnapshot.cs

File diff suppressed because it is too large

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

@ -18,28 +18,39 @@ public static class SplitPackingRecDbContextModelCreatingExtensions
//Configure ABP properties //Configure ABP properties
b.ConfigureByConvention(); b.ConfigureByConvention();
//Configure Sfs base properties //Configure Sfs base properties
b.ConfigureSfsBase(); //b.ConfigureSfsBase();
//Properties //Properties
b.Property(q => q.OprType).IsRequired(); b.Property(q => q.OprType).IsRequired();
b.Property(q => q.GroupCode).IsRequired().HasMaxLength(36); b.Property(q => q.FromPackingCode).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.OprLevel).IsRequired(); b.Property(q => q.FromTopPackingCode).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.NodeType).IsRequired(); b.Property(q => q.FromStdPackQty).IsRequired();
//b.Property(q => q.ParentId) b.Property(q => q.FromUom).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.PackingCode).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.FromQty).IsRequired().HasPrecision(18, 6);
b.Property(q => q.RootPackingCode).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ToPackingCode).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ToTopPackingCode).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ToStdPackQty).IsRequired();
b.Property(q => q.ToUom).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ToQty).IsRequired().HasPrecision(18, 6);
b.Property(q => q.ItemCode).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.ItemName).HasMaxLength(SfsPropertyConst.NameLength);
b.Property(q => q.ItemDesc1).IsRequired().HasMaxLength(SfsPropertyConst.DescLength); b.Property(q => q.ItemDesc1).HasMaxLength(SfsPropertyConst.DescLength);
b.Property(q => q.ItemDesc2).IsRequired().HasMaxLength(SfsPropertyConst.DescLength); b.Property(q => q.ItemDesc2).HasMaxLength(SfsPropertyConst.DescLength);
b.Property(q => q.Lot).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.FromLot).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.StdPackQty).HasPrecision(18, 4); b.Property(q => q.ToLot).HasMaxLength(SfsPropertyConst.CodeLength);
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 });
b.Property(q => q.PurchaseInfo_PoNumber).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.PurchaseInfo_AsnNumber).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ArrivalNoticNumber).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.TaskOrderNumber).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ReceiptRecNumber).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.PutOnShelfNumber).HasMaxLength(SfsPropertyConst.CodeLength);
//Indexes
b.HasIndex(q => new { FromPackingCode = q.FromPackingCode, ToPackingCode = q.ToPackingCode });
b.HasIndex(q => new { ToPackingCode = q.ToPackingCode });
}); });
} }
} }

Loading…
Cancel
Save