Browse Source

修改 调试 Kitting组包

dev_DY_CC
郑勃旭 1 year ago
parent
commit
3bf51fb498
  1. 7
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ProductionLines/DTOs/ProductionLineDTO.cs
  2. 3
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ProductionLines/IProductionLineAppService.cs
  3. 7
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ProductionLines/Inputs/ProductionLineEditInput.cs
  4. 7
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ProductionLines/Inputs/ProductionLineImportInput.cs
  5. 4
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Boms/BomAppService.cs
  6. 11
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLines/ProductionLineAppService.cs
  7. 16
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain.Shared/Enum/EnumProductionLineType.cs
  8. 7
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/ProductionLines/ProductionLine.cs
  9. 5
      be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Basedata/EnumLocationType.cs
  10. 23
      be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Basedata/EnumProductionLineType.cs
  11. 9
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDTO.cs
  12. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteChassisDetailInput.cs
  13. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteEditInput.cs
  14. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Chassis/ChassisAppService.cs
  15. 17
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/ChassisOperationSequence/ChassisOperationSequenceAppService.cs
  16. 53
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/KittingPackagingNotes/KittingPackagingNoteAppService.cs
  17. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNote.cs
  18. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteChassisDetail.cs
  19. 32133
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240423013517_Update_KittingPackagingNoteV3.Designer.cs
  20. 91
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240423013517_Update_KittingPackagingNoteV3.cs
  21. 29
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/StoreDbContextModelSnapshot.cs
  22. 149
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/KittingPackagingNoteHandler.cs
  23. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Win_in.Sfs.Wms.Store.Event.csproj
  24. 4
      build/src/docker/publish/conf/settings/appsettings.Development.json

7
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ProductionLines/DTOs/ProductionLineDTO.cs

@ -1,6 +1,7 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Entities; using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts; namespace Win_in.Sfs.Basedata.Application.Contracts;
@ -37,4 +38,10 @@ public class ProductionLineDTO : SfsBaseDataDTOBase, IHasCode, IHasName
/// </summary> /// </summary>
[Display(Name = "描述")] [Display(Name = "描述")]
public string Description { get; set; } public string Description { get; set; }
/// <summary>
/// 生产线类型
/// </summary>
[Display(Name = "生产线类型")]
public EnumProductionLineType ProductionLineType { get; set; }
} }

3
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ProductionLines/IProductionLineAppService.cs

@ -1,5 +1,7 @@
using System.Collections.Generic;
using System.Threading.Tasks; using System.Threading.Tasks;
using Win_in.Sfs.Shared.Application.Contracts; using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts; namespace Win_in.Sfs.Basedata.Application.Contracts;
@ -9,4 +11,5 @@ public interface IProductionLineAppService
, ISfsUpsertAppService<ProductionLineEditInput> , ISfsUpsertAppService<ProductionLineEditInput>
{ {
Task<ProductionLineDTO> GetByLocationCodeAsync(string locationCode); Task<ProductionLineDTO> GetByLocationCodeAsync(string locationCode);
Task<List<ProductionLineDTO>> GetByLocationCodeAsync(EnumProductionLineType productionLineType);
} }

7
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ProductionLines/Inputs/ProductionLineEditInput.cs

@ -1,5 +1,6 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Entities; using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts; namespace Win_in.Sfs.Basedata.Application.Contracts;
@ -35,4 +36,10 @@ public class ProductionLineEditInput : SfsBaseDataCreateOrUpdateInputBase
/// </summary> /// </summary>
[Display(Name = "描述")] [Display(Name = "描述")]
public string Description { get; set; } public string Description { get; set; }
/// <summary>
/// 生产线类型
/// </summary>
[Display(Name = "生产线类型")]
public EnumProductionLineType ProductionLineType { get; set; }
} }

7
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ProductionLines/Inputs/ProductionLineImportInput.cs

@ -1,5 +1,6 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Entities; using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application.Contracts; namespace Win_in.Sfs.Basedata.Application.Contracts;
@ -36,4 +37,10 @@ public class ProductionLineImportInput : SfsBaseDataImportInputBase
/// </summary> /// </summary>
[Display(Name = "描述")] [Display(Name = "描述")]
public string Description { get; set; } public string Description { get; set; }
/// <summary>
/// 生产线类型
/// </summary>
[Display(Name = "生产线类型")]
public EnumProductionLineType ProductionLineType { get; set; }
} }

4
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Boms/BomAppService.cs

@ -20,8 +20,6 @@ public class BomAppService :
SfsBaseDataAppServiceBase<Bom, BomDTO, SfsBaseDataRequestInputBase, BomEditInput, BomImportInput>, SfsBaseDataAppServiceBase<Bom, BomDTO, SfsBaseDataRequestInputBase, BomEditInput, BomImportInput>,
IBomAppService IBomAppService
{ {
private new readonly IBomRepository _repository; private new readonly IBomRepository _repository;
private readonly IBomManager _bomManager; private readonly IBomManager _bomManager;
@ -224,7 +222,7 @@ public class BomAppService :
return ObjectMapper.Map<List<Bom>, List<BomDTO>>(entities); return ObjectMapper.Map<List<Bom>, List<BomDTO>>(entities);
} }
[HttpPost("get_bom_sublist")] [HttpPost("get-bom-sublist")]
public async Task<List<BomComponentDTO>> GetSubcomponentsRecursiveList(List<BomComponentDTO> p_lst, public async Task<List<BomComponentDTO>> GetSubcomponentsRecursiveList(List<BomComponentDTO> p_lst,
EnumBomSelectedType p_type EnumBomSelectedType p_type
) )

11
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLines/ProductionLineAppService.cs

@ -1,12 +1,15 @@
using System.Collections.Generic;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Caching; using Volo.Abp.Caching;
using Volo.Abp.Domain.Repositories; using Volo.Abp.Domain.Repositories;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Basedata.Domain; using Win_in.Sfs.Basedata.Domain;
using Win_in.Sfs.Basedata.Domain.Shared; using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Application; namespace Win_in.Sfs.Basedata.Application;
@ -57,4 +60,12 @@ public class ProductionLineAppService
return ObjectMapper.Map<ProductionLine, ProductionLineDTO>(entity); return ObjectMapper.Map<ProductionLine, ProductionLineDTO>(entity);
} }
[HttpPost("get-by-type")]
public virtual async Task<List<ProductionLineDTO>> GetByLocationCodeAsync(EnumProductionLineType productionLineType)
{
var entitList = await _repository.GetListAsync(p => p.ProductionLineType == productionLineType).ConfigureAwait(false);
return ObjectMapper.Map<List<ProductionLine>, List<ProductionLineDTO>>(entitList);
}
} }

16
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain.Shared/Enum/EnumProductionLineType.cs

@ -1,16 +0,0 @@
using System.ComponentModel.DataAnnotations;
namespace Win_in.Sfs.Basedata.Domain.Shared;
/// <summary>
/// 生产线类型
/// </summary>
public enum EnumProductionLineType
{
/// <summary>
/// 空枚举
/// </summary>
[Display(Name = "空")]
None = 0,
}

7
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/ProductionLines/ProductionLine.cs

@ -1,6 +1,7 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Entities; using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Basedata.Domain; namespace Win_in.Sfs.Basedata.Domain;
@ -35,4 +36,10 @@ public class ProductionLine : SfsBaseDataAggregateRootBase, IHasCode, IHasName
/// </summary> /// </summary>
[Display(Name = "描述")] [Display(Name = "描述")]
public string Description { get; set; } public string Description { get; set; }
/// <summary>
/// 生产线类型
/// </summary>
[Display(Name = "生产线类型")]
public EnumProductionLineType ProductionLineType { get; set; }
} }

5
be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Basedata/EnumLocationType.cs

@ -78,4 +78,9 @@ public enum EnumLocationType
/// 三方库 /// 三方库
/// </summary> /// </summary>
[Display(Name = "三方库")] THIRDPARTY = 14, [Display(Name = "三方库")] THIRDPARTY = 14,
/// <summary>
/// Kitting线边
/// </summary>
[Display(Name = "Kitting线边")] KittingWip = 15,
} }

23
be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Basedata/EnumProductionLineType.cs

@ -0,0 +1,23 @@
using System.ComponentModel.DataAnnotations;
namespace Win_in.Sfs.Shared.Domain.Shared;
public enum EnumProductionLineType
{
None = 0,
/// <summary>
/// 注塑
/// </summary>
[Display(Name = "注塑")] Injection = 1,
/// <summary>
/// 喷涂
/// </summary>
[Display(Name = "喷涂")] Coating = 2,
/// <summary>
/// 装配
/// </summary>
[Display(Name = "装配")] Assemble = 3
}

9
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDTO.cs

@ -17,7 +17,12 @@ public class KittingPackagingNoteDTO : SfsStoreDTOBase<KittingPackagingNoteDetai
public string KittingCode { get; set; } public string KittingCode { get; set; }
/// <summary> /// <summary>
/// 明细(记录每次扫的位置 /// 明细(记录Kitting打包中的子物品明细
/// </summary> /// </summary>
public List<KittingPackagingNoteChassisDetail> DepDetails { get; set; } = new(); public override List<KittingPackagingNoteDetailDTO> Details { get; set; } = new();
/// <summary>
/// 明细(记录底盘相关的信息)
/// </summary>
public List<KittingPackagingNoteChassisDetailDTO> DepDetails { get; set; } = new();
} }

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteChassisDetailInput.cs

@ -5,7 +5,7 @@ using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class KittingPackagingNoteChassisDetailInput : SfsDetailInputBase public class KittingPackagingNoteChassisDetailInput : SfsStoreDetailInputBase
{ {
/// <summary> /// <summary>
/// 底盘号 /// 底盘号
@ -24,4 +24,9 @@ public class KittingPackagingNoteChassisDetailInput : SfsDetailInputBase
/// </summary> /// </summary>
[Display(Name = "底盘号排序序列")] [Display(Name = "底盘号排序序列")]
public long ChassisSortNumber { get; set; } public long ChassisSortNumber { get; set; }
/// <summary>
///
/// </summary>
public string ItemCode { get; set; }
} }

4
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteEditInput.cs

@ -15,12 +15,12 @@ public class KittingPackagingNoteEditInput : SfsStoreCreateOrUpdateInputBase
public string KittingCode { get; set; } public string KittingCode { get; set; }
/// <summary> /// <summary>
/// 明细(记录打包的明细) /// 明细(记录Kitting打包子物品明细)
/// </summary> /// </summary>
public List<KittingPackagingNoteDetailInput> Details { get; set; } = new(); public List<KittingPackagingNoteDetailInput> Details { get; set; } = new();
/// <summary> /// <summary>
/// 明细(记录每次扫的位置 /// 明细(记录底盘相关的信息
/// </summary> /// </summary>
public List<KittingPackagingNoteChassisDetailInput> DepDetails { get; set; } = new(); public List<KittingPackagingNoteChassisDetailInput> DepDetails { get; set; } = new();
} }

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

@ -78,6 +78,7 @@ public class ChassisAppService
/// 平板或手持使用 按照底盘返回排序大于参数中20个的 /// 平板或手持使用 按照底盘返回排序大于参数中20个的
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[HttpPost("get-list-with-next-count")]
public async Task<PagedResultDto<ChassisDTO>> GetListWithNextCountAsync(long sortNumber,int count, public async Task<PagedResultDto<ChassisDTO>> GetListWithNextCountAsync(long sortNumber,int count,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {

17
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/ChassisOperationSequence/ChassisOperationSequenceAppService.cs

@ -46,9 +46,20 @@ public class ChassisOperationSequenceAppService
var chassisOperationSequence = var chassisOperationSequence =
await _repository.FindAsync(p => p.KittingCode == kittingCode).ConfigureAwait(false); await _repository.FindAsync(p => p.KittingCode == kittingCode).ConfigureAwait(false);
chassisOperationSequence.ChassisSortNumber = newChassisSortNumber; if (chassisOperationSequence == null)
{
await _repository.UpdateAsync(chassisOperationSequence).ConfigureAwait(false); var input= new ChassisOperationSequenceEditInput();
input.KittingCode=kittingCode;
input.ChassisNumber = string.Empty;
input.ChassisSortNumber = newChassisSortNumber;
await CreateAsync(input).ConfigureAwait(false);
}
else
{
chassisOperationSequence.ChassisSortNumber = newChassisSortNumber;
await _repository.UpdateAsync(chassisOperationSequence).ConfigureAwait(false);
}
} }
#region 无用 #region 无用

53
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/KittingPackagingNotes/KittingPackagingNoteAppService.cs

@ -1,7 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Castle.Components.DictionaryAdapter;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Basedata.Boms.DTOs;
using Win_in.Sfs.Basedata.Domain;
using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain; using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared; using Win_in.Sfs.Wms.Store.Domain.Shared;
@ -25,19 +33,60 @@ public class KittingPackagingNoteAppService
KittingPackagingNoteImportInput>, IKittingPackagingNoteAppService KittingPackagingNoteImportInput>, IKittingPackagingNoteAppService
{ {
private readonly IChassisOperationSequenceAppService _chassisOperationSequenceAppService; private readonly IChassisOperationSequenceAppService _chassisOperationSequenceAppService;
private readonly IBomAppService _bomAppService;
private readonly IKittingAppService _kittingAppService;
public KittingPackagingNoteAppService( public KittingPackagingNoteAppService(
IKittingPackagingNoteRepository repository, IChassisOperationSequenceAppService chassisOperationSequenceAppService) : base(repository) IKittingPackagingNoteRepository repository, IChassisOperationSequenceAppService chassisOperationSequenceAppService, IBomAppService bomAppService, IKittingAppService kittingAppService) : base(repository)
{ {
_chassisOperationSequenceAppService = chassisOperationSequenceAppService; _chassisOperationSequenceAppService = chassisOperationSequenceAppService;
_bomAppService = bomAppService;
_kittingAppService = kittingAppService;
} }
[HttpPost("")] [HttpPost("")]
public override async Task<KittingPackagingNoteDTO> CreateAsync(KittingPackagingNoteEditInput input) public override async Task<KittingPackagingNoteDTO> CreateAsync(KittingPackagingNoteEditInput input)
{ {
var sortNumber=input.DepDetails.Max(p => p.ChassisSortNumber); var sortNumber=input.DepDetails.Max(p => p.ChassisSortNumber);
await _chassisOperationSequenceAppService.UpdateChassisSortNumberByKittingCodeAsync(input.KittingCode,sortNumber).ConfigureAwait(false); await _chassisOperationSequenceAppService.UpdateChassisSortNumberByKittingCodeAsync(input.KittingCode,sortNumber).ConfigureAwait(false);
//所有底盘转换为总成的零件号
var chassisItemCode = new List<string>();
var listItemCode=input.DepDetails.Select(p => p.ItemCode);
foreach (var itemCode in listItemCode)
{
var bomDtos=await _bomAppService.GetBomTreeByCodeAsync(itemCode).ConfigureAwait(false);
if (bomDtos == null|| bomDtos.Count<1)
{
throw new UserFriendlyException($"物品代码【{itemCode}】没有Bom信息");
}
var bomItemCodeList = bomDtos.Select(p => p.Component);
chassisItemCode.AddRange(bomItemCodeList);
}
chassisItemCode=chassisItemCode.Distinct().ToList();
//获取kitting中维护的零件号
var kittingDto=await _kittingAppService.GetByCodeAsync(input.KittingCode).ConfigureAwait(false);
var kittingItemCodeList= kittingDto.Details.Select(p => p.PartCode);
//取出交集得到KittingCode中的零件
var hasItemCode= kittingItemCodeList.Intersect(chassisItemCode).ToList();
foreach (var itemCode in hasItemCode)
{
var detailInput = new KittingPackagingNoteDetailInput();
var itemBase=kittingDto.Details.First(p => p.PartCode == itemCode);
detailInput.KittingCode = input.KittingCode;
detailInput.ItemCode = itemCode;
detailInput.ItemDesc1 = itemBase.Desc1;
detailInput.ItemDesc2= itemBase.Desc2;
//todo 等待赵新宇加完字段
//kittingPackagingNoteDetail.ItemName=itemBase.ItemName
detailInput.Qty= itemBase.Qty;
input.Details.Add(detailInput);
}
input.DepDetails.ForEach(p=>p.KittingCode=input.KittingCode);
return await base.CreateAsync(input).ConfigureAwait(false); return await base.CreateAsync(input).ConfigureAwait(false);
} }

6
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNote.cs

@ -16,12 +16,12 @@ public class KittingPackagingNote : SfsStoreAggregateRootBase<KittingPackagingNo
public string KittingCode { get; set; } public string KittingCode { get; set; }
/// <summary> /// <summary>
/// 明细(记录打包的明细) /// 明细(记录Kitting打包子物品明细)
/// </summary> /// </summary>
public override List<KittingPackagingNoteDetail> Details { get; set; } = new(); public List<KittingPackagingNoteDetail> Details { get; set; } = new();
/// <summary> /// <summary>
/// 明细(记录每次扫的位置 /// 明细(记录底盘相关的信息
/// </summary> /// </summary>
public List<KittingPackagingNoteChassisDetail> DepDetails { get; set; } = new(); public List<KittingPackagingNoteChassisDetail> DepDetails { get; set; } = new();
} }

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteChassisDetail.cs

@ -3,7 +3,7 @@ using Win_in.Sfs.Shared.Domain;
namespace Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Domain;
public class KittingPackagingNoteChassisDetail : SfsDetailEntityBase public class KittingPackagingNoteChassisDetail : SfsStoreDetailEntityBase
{ {
/// <summary> /// <summary>
/// 底盘号 /// 底盘号

32133
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240423013517_Update_KittingPackagingNoteV3.Designer.cs

File diff suppressed because it is too large

91
be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Migrations/20240423013517_Update_KittingPackagingNoteV3.cs

@ -0,0 +1,91 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Win_in.Sfs.Wms.Store.Migrations
{
public partial class Update_KittingPackagingNoteV3 : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "KittingNumber",
table: "Store_ChassisOperationSequence");
migrationBuilder.RenameColumn(
name: "ChassisSortNumber",
table: "Store_KittingPackagingNoteChassisDetail",
newName: "ChassisNumber");
migrationBuilder.AddColumn<string>(
name: "ItemCode",
table: "Store_KittingPackagingNoteChassisDetail",
type: "nvarchar(64)",
maxLength: 64,
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<string>(
name: "ItemDesc1",
table: "Store_KittingPackagingNoteChassisDetail",
type: "nvarchar(64)",
maxLength: 64,
nullable: true);
migrationBuilder.AddColumn<string>(
name: "ItemDesc2",
table: "Store_KittingPackagingNoteChassisDetail",
type: "nvarchar(64)",
maxLength: 64,
nullable: true);
migrationBuilder.AddColumn<string>(
name: "ItemName",
table: "Store_KittingPackagingNoteChassisDetail",
type: "nvarchar(64)",
maxLength: 64,
nullable: true);
migrationBuilder.AddColumn<long>(
name: "ChassisSortNumber",
table: "Store_ChassisOperationSequence",
type: "bigint",
nullable: false,
defaultValue: 0L);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "ItemCode",
table: "Store_KittingPackagingNoteChassisDetail");
migrationBuilder.DropColumn(
name: "ItemDesc1",
table: "Store_KittingPackagingNoteChassisDetail");
migrationBuilder.DropColumn(
name: "ItemDesc2",
table: "Store_KittingPackagingNoteChassisDetail");
migrationBuilder.DropColumn(
name: "ItemName",
table: "Store_KittingPackagingNoteChassisDetail");
migrationBuilder.DropColumn(
name: "ChassisSortNumber",
table: "Store_ChassisOperationSequence");
migrationBuilder.RenameColumn(
name: "ChassisNumber",
table: "Store_KittingPackagingNoteChassisDetail",
newName: "ChassisSortNumber");
migrationBuilder.AddColumn<string>(
name: "KittingNumber",
table: "Store_ChassisOperationSequence",
type: "nvarchar(max)",
nullable: true);
}
}
}

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

@ -1569,6 +1569,9 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Property<string>("ChassisNumber") b.Property<string>("ChassisNumber")
.HasColumnType("nvarchar(max)"); .HasColumnType("nvarchar(max)");
b.Property<long>("ChassisSortNumber")
.HasColumnType("bigint");
b.Property<string>("ConcurrencyStamp") b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken() .IsConcurrencyToken()
.HasMaxLength(40) .HasMaxLength(40)
@ -1590,9 +1593,6 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Property<string>("KittingCode") b.Property<string>("KittingCode")
.HasColumnType("nvarchar(max)"); .HasColumnType("nvarchar(max)");
b.Property<string>("KittingNumber")
.HasColumnType("nvarchar(max)");
b.Property<DateTime?>("LastModificationTime") b.Property<DateTime?>("LastModificationTime")
.HasColumnType("datetime2") .HasColumnType("datetime2")
.HasColumnName("LastModificationTime"); .HasColumnName("LastModificationTime");
@ -14511,7 +14511,7 @@ namespace Win_in.Sfs.Wms.Store.Migrations
b.Property<Guid>("Id") b.Property<Guid>("Id")
.HasColumnType("uniqueidentifier"); .HasColumnType("uniqueidentifier");
b.Property<long>("ChassisSortNumber") b.Property<long>("ChassisNumber")
.HasColumnType("bigint"); .HasColumnType("bigint");
b.Property<DateTime>("CreationTime") b.Property<DateTime>("CreationTime")
@ -14522,6 +14522,27 @@ namespace Win_in.Sfs.Wms.Store.Migrations
.HasColumnType("uniqueidentifier") .HasColumnType("uniqueidentifier")
.HasColumnName("CreatorId"); .HasColumnName("CreatorId");
b.Property<string>("ItemCode")
.IsRequired()
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("ItemCode");
b.Property<string>("ItemDesc1")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("ItemDesc1");
b.Property<string>("ItemDesc2")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("ItemDesc2");
b.Property<string>("ItemName")
.HasMaxLength(64)
.HasColumnType("nvarchar(64)")
.HasColumnName("ItemName");
b.Property<string>("KittingCode") b.Property<string>("KittingCode")
.HasMaxLength(64) .HasMaxLength(64)
.HasColumnType("nvarchar(64)"); .HasColumnType("nvarchar(64)");

149
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/KittingPackagingNoteHandler.cs

@ -0,0 +1,149 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.EventBus;
using Volo.Abp.Uow;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Basedata.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Event.Transaction;
namespace Win_in.Sfs.Wms.Store.Event.Transactions;
public class KittingPackagingNoteEventHandler
: StoreInventoryEventHandlerBase
, ILocalEventHandler<SfsCreatedEntityEventData<KittingPackagingNote>>
, ILocalEventHandler<SfsCreatedEntityEventData<List<KittingPackagingNote>>>
{
private readonly IProductionLineAppService _productionLineAppService;
private readonly IProductionLineItemAppService _productionLineItemAppService;
private readonly ILocationAppService _locationAppService;
public KittingPackagingNoteEventHandler(
IProductionLineAppService productionLineAppService, ILocationAppService locationAppService, IProductionLineItemAppService productionLineItemAppService)
{
_productionLineAppService = productionLineAppService;
_locationAppService = locationAppService;
_productionLineItemAppService = productionLineItemAppService;
}
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<KittingPackagingNote> eventData)
{
var entity = eventData.Entity;
var transferLogEditInputs = await BuildTransferLogsAsync(entity).ConfigureAwait(false);
await TransferLogAppService.AddManyAsync(transferLogEditInputs).ConfigureAwait(false);
}
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<List<KittingPackagingNote>> eventData)
{
var entities = eventData.Entity;
var transferLogCreateInputs = new List<TransferLogEditInput>();
foreach (var entitie in entities)
{
transferLogCreateInputs.AddRange(await BuildTransferLogsAsync(entitie).ConfigureAwait(false));
}
await TransferLogAppService.AddManyAsync(transferLogCreateInputs).ConfigureAwait(false);
}
/// <summary>
/// 构造库移DTO
/// </summary>
/// <param name="kittingPackagingNote"></param>
/// <returns></returns>
private async Task<List<TransferLogEditInput>> BuildTransferLogsAsync(KittingPackagingNote kittingPackagingNote)
{
var transferLogCreateInputs = new List<TransferLogEditInput>();
//获取生产线和 生产线零件关系 用来下面找装配的线边做查询
var productionLineList = await _productionLineAppService.GetByLocationCodeAsync(EnumProductionLineType.Assemble)
.ConfigureAwait(false);
var productionItemList = new List<ProductionLineItemDTO>();
foreach (var productionLineDto in productionLineList)
{
productionItemList.AddRange(await _productionLineItemAppService.GetByProductLineCodeAsync(productionLineDto.Code).ConfigureAwait(false));
}
//Kitting线边库位
var kittingLocation =
await LocationAclService.GetFirstByTypeAsync(EnumLocationType.KittingWip).ConfigureAwait(false);
foreach (var detail in kittingPackagingNote.Details.Where(detail => detail.Qty != 0))
{
var productionLineItemDtos= productionItemList.FirstOrDefault(p => p.ItemCode == detail.ItemCode);
if (productionLineItemDtos == null)
{
var strProductionLine = string.Empty;
productionLineList.ForEach(dto => strProductionLine += " " + dto.Code);
throw new UserFriendlyException($"没有在 生产线代码列表中找到【{strProductionLine}】物料代码【{detail.ItemCode}】的配置");
}
var list = JsonSerializer.Deserialize<List<string>>(productionLineItemDtos.WipLocationCodeListJson);
if (list == null || list.Count < 1)
{
throw new UserFriendlyException($"没有在 生产线代码【{productionLineItemDtos.ProdLineCode}】物料代码【{detail.ItemCode}】中配置线边库位");
}
var assembleFirstLocationCode = list.First();
var assembleLocation =
await _locationAppService.GetByCodeAsync(assembleFirstLocationCode).ConfigureAwait(false);
var transferLogEditInput = transferLogCreateInputs.FirstOrDefault(p => p.ItemCode == detail.ItemCode);
if (transferLogEditInput != null)
{
transferLogEditInput.Qty += detail.Qty;
}
else
{
var transferLog = new TransferLogEditInput();
transferLog.TransType = EnumTransType.Transfer;
var itemBasicDto = await ItemBasicAclService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
transferLog.ItemCode = detail.ItemCode;
transferLog.ItemDesc1 = detail.ItemDesc1;
transferLog.ItemDesc2 = detail.ItemDesc2;
transferLog.ItemName = detail.ItemName;
transferLog.Qty = detail.Qty;
transferLog.ArriveDate = DateTime.Now;
transferLog.ExpireDate = DateTime.Now;
transferLog.ProduceDate = DateTime.Now;
transferLog.StdPackQty = itemBasicDto.StdPackQty;
transferLog.Uom = itemBasicDto.BasicUom;
transferLog.ToLocationCode = assembleLocation.Code;
transferLog.ToWarehouseCode = assembleLocation.WarehouseCode;
transferLog.ToLocationErpCode = assembleLocation.ErpLocationCode;
transferLog.ToLocationArea = assembleLocation.AreaCode;
transferLog.ToLocationGroup = assembleLocation.LocationGroupCode;
transferLog.ToContainerCode = string.Empty;
transferLog.ToPackingCode = string.Empty;
transferLog.ToLot = string.Empty;
transferLog.ToStatus = EnumInventoryStatus.OK;
transferLog.FromLocationCode = kittingLocation.Code;
transferLog.FromWarehouseCode = kittingLocation.WarehouseCode;
transferLog.FromLocationErpCode = kittingLocation.ErpLocationCode;
transferLog.FromLocationArea = kittingLocation.AreaCode;
transferLog.FromLocationGroup = kittingLocation.LocationGroupCode;
transferLog.FromContainerCode = string.Empty;
transferLog.FromPackingCode = string.Empty;
transferLog.FromLot = string.Empty;
transferLog.FromStatus = EnumInventoryStatus.OK;
transferLog.Worker = kittingPackagingNote.Worker;
transferLog.DocNumber = kittingPackagingNote.Number;
transferLogCreateInputs.Add(transferLog);
}
}
return transferLogCreateInputs;
}
}

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Win_in.Sfs.Wms.Store.Event.csproj

@ -16,6 +16,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Quartz" Version="3.3.3" />
<PackageReference Include="Volo.Abp.Core" Version="5.3.5" /> <PackageReference Include="Volo.Abp.Core" Version="5.3.5" />
<PackageReference Include="Volo.Abp.EventBus" Version="5.3.5" /> <PackageReference Include="Volo.Abp.EventBus" Version="5.3.5" />
<PackageReference Include="Volo.Abp.Autofac" Version="5.3.5" /> <PackageReference Include="Volo.Abp.Autofac" Version="5.3.5" />

4
build/src/docker/publish/conf/settings/appsettings.Development.json

@ -117,8 +117,8 @@
//"BaseUrl": "http://localhost:59093/" //"BaseUrl": "http://localhost:59093/"
}, },
"BaseData": { "BaseData": {
"BaseUrl": "http://dev.ccwin-in.com:60084/" //"BaseUrl": "http://dev.ccwin-in.com:60084/"
//"BaseUrl": "http://localhost:59094/" "BaseUrl": "http://localhost:59094/"
}, },
"Default": { "Default": {
"BaseUrl": "http://dev.ccwin-in.com:60083/" "BaseUrl": "http://dev.ccwin-in.com:60083/"

Loading…
Cancel
Save