From bb4fd8743e817fbd9cb4da40324122613786b9b0 Mon Sep 17 00:00:00 2001
From: zhouhongjun <565221961@qq.com>
Date: Tue, 14 May 2024 15:41:39 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B6=82=E8=A3=85=E5=8F=AB=E6=96=99=E5=8A=9F?=
=?UTF-8?q?=E8=83=BD=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../CoatingIssueJobPermissions.cs | 11 +-
.../DTOs/CoatingIssueJobDTO.cs | 31 +-
.../ICoatingIssueJobAppService.cs | 21 +-
.../Inputs/CoatingIssueJobCheckInput.cs | 4 +-
.../Inputs/CoatingIssueJobEditInput.cs | 8 +-
.../KittingIssueJobPermissions.cs | 9 +-
.../CoatingIssueNotePermissions.cs | 23 +-
.../DTOs/CoatingIssueNoteDTO.cs | 7 +-
.../ICoatingIssueNoteAppService.cs | 5 +-
.../Inputs/CoatingIssueNoteEditInput.cs | 7 +-
.../Inputs/CoatingIssueNoteImportInput.cs | 5 +-
.../IKittingIssueNoteAppService.cs | 4 +-
.../KittingIssueNotePermissions.cs | 8 +-
.../StorePermissionDefinitionProvider.cs | 4 +-
.../CoatingIssueRequestPermissions.cs | 19 +-
.../DTOS/CoatingIssueRequestDTO.cs | 3 +-
.../DTOS/CoatingIssueRequestDetailDTO.cs | 3 +-
.../ICoatingIssueRequestAppService.cs | 9 +-
.../Inputs/CoatingIssueRequestDetailInput.cs | 3 +-
.../Inputs/CoatingIssueRequestEditInput.cs | 8 +-
.../Inputs/CoatingIssueRequestImportInput.cs | 15 +-
.../CoatingIssueJobAppService.cs | 648 +++++++++++-----
.../CoatingIssueJobAutoMapperProfile.cs | 3 -
.../CoatingIssueNoteAppService.cs | 5 +-
.../CoatingIssueNoteAutoMapperProfile.cs | 2 -
.../CoatingIssueRequestAppService.cs | 303 +++++++-
.../CoatingIssueRequestAutoMapperProfile.cs | 1 -
.../CoatingIssueJobs/CoatingIssueJob.cs | 14 +-
.../CoatingIssueJobs/CoatingIssueJobDetail.cs | 1 -
.../CoatingIssueJobManager.cs | 9 +-
.../ICoatingIssueJobManager.cs | 3 +-
.../ICoatingIssueJobRepository.cs | 4 +-
.../CoatingIssueJobs/ICoatingssueExtension.cs | 55 --
.../CoatingIssueNotes/CoatingIssueNote.cs | 12 +-
.../CoatingIssueNoteManager.cs | 3 +-
.../ICoatingIssueNoteManager.cs | 3 +-
.../ICoatingIssueNoteRepository.cs | 4 +-
.../CoatingIssueRequest.cs | 3 +-
.../CoatingIssueRequestDetail.cs | 3 +-
.../CoatingIssueRequestManager.cs | 7 +-
.../ICoatingIssueRequestManager.cs | 6 +-
.../ICoatingIssueRequestRepository.cs | 3 +-
.../IStoreDbContext.cs | 4 -
...ssueJobDbContextModelCreatingExtensions.cs | 3 +-
.../CoatingIssueJobEfCoreRepository.cs | 2 +-
...sueNoteDbContextModelCreatingExtensions.cs | 1 -
.../CoatingIssueNoteEfCoreRepository.cs | 2 +-
...RequestDbContextModelCreatingExtensions.cs | 9 +-
.../CoatingIssueRequestEfCoreRepository.cs | 2 +-
.../StoreDbContext.cs | 3 -
.../StoreEntityFrameworkCoreModule.cs | 3 -
.../Jobs/CoatingIssueJobAutoMapperProfile.cs | 15 +-
.../CoatingIssueNoteAutoMapperProfile.cs | 2 -
...> CoatingIssueRequestAutoMapperProfile.cs} | 6 +-
.../AssembleIssueNoteEventHandler.cs | 1 -
.../CoatingIssueNoteEventHandler.cs | 1 -
.../KittingIssueNoteEventHandler.cs | 1 -
.../Jobs/CoatingIssueJobEventHandler.cs | 128 ++--
.../Requests/CoatingIssueJobEventHandler.cs | 0
.../CoatingIssueRequestEventHandler.cs | 689 +++++++++++-------
.../Note/CoatingIssueNoteEventHandler.cs | 4 -
.../CoatingIssueNoteEventHandler.cs | 1 -
62 files changed, 1353 insertions(+), 823 deletions(-)
delete mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/ICoatingssueExtension.cs
rename be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/{CoatingMaterialRequestAutoMapperProfile.cs => CoatingIssueRequestAutoMapperProfile.cs} (86%)
delete mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/CoatingIssueJobEventHandler.cs
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobPermissions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobPermissions.cs
index ec6f854f9..2f60d007b 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobPermissions.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobPermissions.cs
@@ -1,7 +1,5 @@
using Volo.Abp.Authorization.Permissions;
-using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
-using Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@@ -15,9 +13,10 @@ public static class CoatingIssueJobPermissions
public static void AddCoatingIssueJobPermission(this PermissionGroupDefinition permissionGroup)
{
- var IssueJobPermission = permissionGroup.AddPermission(Default, StorePermissionDefinitionProvider.L(nameof(IssueJob)));
- IssueJobPermission.AddChild(Create, StorePermissionDefinitionProvider.L(StorePermissions.CreateStr));
- IssueJobPermission.AddChild(Update, StorePermissionDefinitionProvider.L(StorePermissions.UpdateStr));
- IssueJobPermission.AddChild(Delete, StorePermissionDefinitionProvider.L(StorePermissions.DeleteStr));
+ var coatingIssueJobPermission = permissionGroup.AddPermission(Default, StorePermissionDefinitionProvider.L(nameof(CoatingIssueJob)));
+ coatingIssueJobPermission.AddChild(Create, StorePermissionDefinitionProvider.L(StorePermissions.CreateStr));
+ coatingIssueJobPermission.AddChild(Update, StorePermissionDefinitionProvider.L(StorePermissions.UpdateStr));
+ coatingIssueJobPermission.AddChild(Delete, StorePermissionDefinitionProvider.L(StorePermissions.DeleteStr));
+
}
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/DTOs/CoatingIssueJobDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/DTOs/CoatingIssueJobDTO.cs
index 09951837e..6521709ea 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/DTOs/CoatingIssueJobDTO.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/DTOs/CoatingIssueJobDTO.cs
@@ -1,15 +1,14 @@
-using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
+using Microsoft.EntityFrameworkCore;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
-using Win_in.Sfs.Wms.Store.Application.Contracts;
-namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
///
-/// 发料任务
+/// 涂装叫料任务
///
-[Display(Name = "发料任务")]
+[Display(Name = "涂装叫料任务")]
public class CoatingIssueJobDTO : SfsJobDTOBase
{
///
@@ -17,37 +16,25 @@ public class CoatingIssueJobDTO : SfsJobDTOBase
///
[Display(Name = "叫料类型")]
public EnumIssueRequestType IssueRequestType { get; set; }
-
///
- /// 生产线
+ /// 生产线
///
[Display(Name = "生产线")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
public string ProdLine { get; set; }
///
- /// 要货单号
+ /// 要货单号
///
[Display(Name = "要货单号")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string MaterialRequestNumber { get; set; }
+ public string CoatingRequestNumber { get; set; }
///
- /// 使用在途库
+ /// 使用在途库
///
[Display(Name = "使用在途库")]
public bool UseOnTheWayLocation { get; set; }
+ public EnumIssueSendType EnumIssueSendType { get; set; }
}
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/ICoatingIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/ICoatingIssueJobAppService.cs
index 698d8a199..3f3f7d933 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/ICoatingIssueJobAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/ICoatingIssueJobAppService.cs
@@ -1,15 +1,30 @@
+using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
-using Win_in.Sfs.Wms.Store.Application.Contracts;
-namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public interface ICoatingIssueJobAppService
: ISfsJobAppServiceBase
{
- Task CancelByMaterialRequestAsync(string coatingIssueNumber);
+ Task CancelByMaterialRequestAsync(string requestNumber);
Task> GetByRequestNumberAsync(string requestNumber);
+
+ ///
+ /// 执行任务明细
+ ///
+ ///
+ Task ExecuteDetailAsync(Guid masterId, Guid detailId, CoatingIssueJobDetailDTO issueJobDetailDto);
+
+ Task CompleteAsync(Guid id);
+
+ ///
+ /// 请求点了完成,任务全部都完成
+ ///
+ ///
+ ///
+ Task CompleteByRequestNumberAsync(string requestNumber);
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/Inputs/CoatingIssueJobCheckInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/Inputs/CoatingIssueJobCheckInput.cs
index 2c5c3dd6d..1cb969449 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/Inputs/CoatingIssueJobCheckInput.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/Inputs/CoatingIssueJobCheckInput.cs
@@ -1,6 +1,4 @@
-using Win_in.Sfs.Wms.Store.Application.Contracts;
-
-namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class CoatingIssueJobCheckInput : SfsJobCheckInputBase
{
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/Inputs/CoatingIssueJobEditInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/Inputs/CoatingIssueJobEditInput.cs
index 64622363b..fb3b69639 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/Inputs/CoatingIssueJobEditInput.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/CoatingIssueJobs/Inputs/CoatingIssueJobEditInput.cs
@@ -4,9 +4,8 @@ using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
-using Win_in.Sfs.Wms.Store.Application.Contracts;
-namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class CoatingIssueJobEditInput : SfsJobCreateUpdateInputBase, ISfsJobCreateInput
{
@@ -24,7 +23,7 @@ public class CoatingIssueJobEditInput : SfsJobCreateUpdateInputBase, ISfsJobCrea
[Display(Name = "要货单号")]
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")]
- public string MaterialRequestNumber { get; set; }
+ public string KittingRequestNumber { get; set; }
///
/// 叫料类型
@@ -59,12 +58,13 @@ public class CoatingIssueJobEditInput : SfsJobCreateUpdateInputBase, ISfsJobCrea
[Display(Name = "任务明细")]
[Required(ErrorMessage = "{0}是必填项")]
public List Details { get; set; } = new();
-
///
/// 使用在途库
///
[Display(Name = "使用在途库")]
public bool UseOnTheWayLocation { get; set; }
+
+ public EnumIssueSendType EnumIssueSendType { get; set; }
#endregion
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobPermissions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobPermissions.cs
index 01f485728..29957979f 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobPermissions.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobPermissions.cs
@@ -14,11 +14,10 @@ public static class KittingIssueJobPermissions
public static void AddKittingIssueJobPermission(this PermissionGroupDefinition permissionGroup)
{
- var KittingIssueJobPermission = permissionGroup.AddPermission(Default, StorePermissionDefinitionProvider.L(nameof(KittingIssueJob)));
- KittingIssueJobPermission.AddChild(Create, StorePermissionDefinitionProvider.L(StorePermissions.CreateStr));
- KittingIssueJobPermission.AddChild(Update, StorePermissionDefinitionProvider.L(StorePermissions.UpdateStr));
- KittingIssueJobPermission.AddChild(Delete, StorePermissionDefinitionProvider.L(StorePermissions.DeleteStr));
-
+ var kittingIssueJobPermission = permissionGroup.AddPermission(Default, StorePermissionDefinitionProvider.L(nameof(KittingIssueJob)));
+ kittingIssueJobPermission.AddChild(Create, StorePermissionDefinitionProvider.L(StorePermissions.CreateStr));
+ kittingIssueJobPermission.AddChild(Update, StorePermissionDefinitionProvider.L(StorePermissions.UpdateStr));
+ kittingIssueJobPermission.AddChild(Delete, StorePermissionDefinitionProvider.L(StorePermissions.DeleteStr));
}
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNotePermissions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNotePermissions.cs
index 9f497fc34..6db9df722 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNotePermissions.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNotePermissions.cs
@@ -1,31 +1,20 @@
using Volo.Abp.Authorization.Permissions;
-using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
-namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes;
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public static class CoatingIssueNotePermissions
{
-
- public const string Default = StorePermissions.GroupName + "." + nameof(IssueNote);
+ public const string Default = StorePermissions.GroupName + "." + nameof(CoatingIssueNote);
public const string Create = Default + "." + StorePermissions.CreateStr;
public const string Update = Default + "." + StorePermissions.UpdateStr;
public const string Delete = Default + "." + StorePermissions.DeleteStr;
- //自动发料记录
- public const string AutoIssueNote = StorePermissions.GroupName + "." + nameof(AutoIssueNote);
-
- //直接发料
- public const string DirectIssueNote = StorePermissions.GroupName + "." + nameof(DirectIssueNote);
-
public static void AddCoatingIssueNotePermission(this PermissionGroupDefinition permissionGroup)
{
- var issueNotePermission = permissionGroup.AddPermission(Default, StorePermissionDefinitionProvider.L(nameof(IssueNote)));
- issueNotePermission.AddChild(Create, StorePermissionDefinitionProvider.L(StorePermissions.CreateStr));
- issueNotePermission.AddChild(Update, StorePermissionDefinitionProvider.L(StorePermissions.UpdateStr));
- issueNotePermission.AddChild(Delete, StorePermissionDefinitionProvider.L(StorePermissions.DeleteStr));
-
- permissionGroup.AddPermission(AutoIssueNote, StorePermissionDefinitionProvider.L(nameof(AutoIssueNote)));
- permissionGroup.AddPermission(DirectIssueNote, StorePermissionDefinitionProvider.L(nameof(DirectIssueNote)));
+ var coatingIssueNotePermission = permissionGroup.AddPermission(Default, StorePermissionDefinitionProvider.L(nameof(CoatingIssueNote)));
+ coatingIssueNotePermission.AddChild(Create, StorePermissionDefinitionProvider.L(StorePermissions.CreateStr));
+ coatingIssueNotePermission.AddChild(Update, StorePermissionDefinitionProvider.L(StorePermissions.UpdateStr));
+ coatingIssueNotePermission.AddChild(Delete, StorePermissionDefinitionProvider.L(StorePermissions.DeleteStr));
}
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/DTOs/CoatingIssueNoteDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/DTOs/CoatingIssueNoteDTO.cs
index df2738704..0dac7ee44 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/DTOs/CoatingIssueNoteDTO.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/DTOs/CoatingIssueNoteDTO.cs
@@ -2,12 +2,12 @@ using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
-using Win_in.Sfs.Wms.Store.Application.Contracts;
-namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes;
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class CoatingIssueNoteDTO : SfsStoreDTOBase, IHasJobNumber, IHasRequestNumber
{
+
///
/// 任务ID
///
@@ -19,6 +19,7 @@ public class CoatingIssueNoteDTO : SfsStoreDTOBase, I
///
[Display(Name = "请求代码")]
public string RequestNumber { get; set; }
+
///
/// 叫料类型
///
@@ -42,4 +43,6 @@ public class CoatingIssueNoteDTO : SfsStoreDTOBase, I
///
[Display(Name = "确认时间")]
public DateTime? ConfirmTime { get; set; }
+
+ public EnumIssueSendType EnumIssueSendType { get; set; }
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/ICoatingIssueNoteAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/ICoatingIssueNoteAppService.cs
index 20bb6f3c5..a877db99c 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/ICoatingIssueNoteAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/ICoatingIssueNoteAppService.cs
@@ -3,15 +3,12 @@ using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
-using Win_in.Sfs.Wms.Store.Application.Contracts;
-namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes;
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public interface ICoatingIssueNoteAppService : ISfsStoreMasterReadOnlyAppServiceBase
{
Task CreateAsync(CoatingIssueNoteEditInput input);
Task ConfirmAsync(Guid id);
-
-
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/Inputs/CoatingIssueNoteEditInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/Inputs/CoatingIssueNoteEditInput.cs
index a306ad9d6..0f38c7030 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/Inputs/CoatingIssueNoteEditInput.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/Inputs/CoatingIssueNoteEditInput.cs
@@ -2,9 +2,8 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
-using Win_in.Sfs.Wms.Store.Application.Contracts;
-namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes;
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class CoatingIssueNoteEditInput : SfsStoreCreateOrUpdateInputBase
{
@@ -28,7 +27,7 @@ public class CoatingIssueNoteEditInput : SfsStoreCreateOrUpdateInputBase
///
[Display(Name = "任务ID")]
[Required(ErrorMessage = "{0}是必填项")]
- public string JobNumber { get; set; }
+ public string JobNumber { get; set; }
///
/// 明细列表
@@ -53,5 +52,7 @@ public class CoatingIssueNoteEditInput : SfsStoreCreateOrUpdateInputBase
///
[Display(Name = "使用在途库")]
public bool UseOnTheWayLocation { get; set; }
+
+ public EnumIssueSendType EnumIssueSendType { get; set; }
#endregion
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/Inputs/CoatingIssueNoteImportInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/Inputs/CoatingIssueNoteImportInput.cs
index 7c40b7379..3dd357936 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/Inputs/CoatingIssueNoteImportInput.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/CoatingIssueNotes/Inputs/CoatingIssueNoteImportInput.cs
@@ -1,8 +1,7 @@
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
-using Win_in.Sfs.Wms.Store.Application.Contracts;
-namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes;
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class CoatingIssueNoteImportInput : SfsStoreImportInputBase, IHasJobNumber, IHasRequestNumber
{
@@ -32,4 +31,6 @@ public class CoatingIssueNoteImportInput : SfsStoreImportInputBase, IHasJobNumbe
[Display(Name = "使用在途库")]
[Required(ErrorMessage = "{0}是必填项")]
public bool UseOnTheWayLocation { get; set; }
+
+ public EnumIssueSendType EnumIssueSendType { get; set; }
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/KittingIssueNotes/IKittingIssueNoteAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/KittingIssueNotes/IKittingIssueNoteAppService.cs
index db775120e..4b64a1f56 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/KittingIssueNotes/IKittingIssueNoteAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/KittingIssueNotes/IKittingIssueNoteAppService.cs
@@ -10,7 +10,5 @@ public interface IKittingIssueNoteAppService : ISfsStoreMasterReadOnlyAppService
{
Task CreateAsync(KittingIssueNoteEditInput input);
- Task ConfirmAsync(Guid id);
-
-
+ Task ConfirmAsync(Guid id);
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/KittingIssueNotes/KittingIssueNotePermissions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/KittingIssueNotes/KittingIssueNotePermissions.cs
index 3afd47039..2ced39bab 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/KittingIssueNotes/KittingIssueNotePermissions.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/KittingIssueNotes/KittingIssueNotePermissions.cs
@@ -5,20 +5,16 @@ namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public static class KittingIssueNotePermissions
{
-
public const string Default = StorePermissions.GroupName + "." + nameof(KittingIssueNote);
public const string Create = Default + "." + StorePermissions.CreateStr;
public const string Update = Default + "." + StorePermissions.UpdateStr;
- public const string Delete = Default + "." + StorePermissions.DeleteStr;
-
-
+ public const string Delete = Default + "." + StorePermissions.DeleteStr;
public static void AddKittingIssueNotePermission(this PermissionGroupDefinition permissionGroup)
{
var kittingIssueNotePermission = permissionGroup.AddPermission(Default, StorePermissionDefinitionProvider.L(nameof(KittingIssueNote)));
kittingIssueNotePermission.AddChild(Create, StorePermissionDefinitionProvider.L(StorePermissions.CreateStr));
kittingIssueNotePermission.AddChild(Update, StorePermissionDefinitionProvider.L(StorePermissions.UpdateStr));
- kittingIssueNotePermission.AddChild(Delete, StorePermissionDefinitionProvider.L(StorePermissions.DeleteStr));
-
+ kittingIssueNotePermission.AddChild(Delete, StorePermissionDefinitionProvider.L(StorePermissions.DeleteStr));
}
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Permissions/StorePermissionDefinitionProvider.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Permissions/StorePermissionDefinitionProvider.cs
index beeaa8c94..ba0036681 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Permissions/StorePermissionDefinitionProvider.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Permissions/StorePermissionDefinitionProvider.cs
@@ -29,13 +29,15 @@ public class StorePermissionDefinitionProvider : PermissionDefinitionProvider
storeGroup.AddMaterialRequestPermission();
storeGroup.AddInjectionIssueRequestPermission();
storeGroup.AddKittingIssueRequestPermission();
+ storeGroup.AddCoatingIssueRequestPermission();
storeGroup.AddAssembleIssueRequestPermission();
storeGroup.AddThirdLocationRequestPermission();
storeGroup.AddContainerRequestPermission();
storeGroup.AddIssueNotePermission();
storeGroup.AddInjectionIssueNotePermission();
storeGroup.AddAssembleIssueNotePermission();
- storeGroup.AddKittingIssueNotePermission();
+ storeGroup.AddCoatingIssueNotePermission();
+ storeGroup.AddKittingIssueNotePermission();
storeGroup.AddThirdLocationNotePermission();
storeGroup.AddContainerNotePermission();
storeGroup.AddUnplannedReceiptNotePermission();
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/CoatingIssueRequestPermissions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/CoatingIssueRequestPermissions.cs
index 684172de3..433c5a609 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/CoatingIssueRequestPermissions.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/CoatingIssueRequestPermissions.cs
@@ -1,27 +1,20 @@
using Volo.Abp.Authorization.Permissions;
-using Win_in.Sfs.Wms.Store.Application.Contracts;
-
-namespace Win_in.Sfs.Wms.Store.Requests.MaterialRequests;
+using Win_in.Sfs.Wms.Store.Domain;
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public static class CoatingIssueRequestPermissions
{
-
public const string Default = StorePermissions.GroupName + "." + nameof(CoatingIssueRequest);
public const string Create = Default + "." + StorePermissions.CreateStr;
public const string Update = Default + "." + StorePermissions.UpdateStr;
public const string Delete = Default + "." + StorePermissions.DeleteStr;
- //自动叫料申请
- public const string AutoMaterialRequest = StorePermissions.GroupName + "." + nameof(AutoMaterialRequest);
-
public static void AddCoatingIssueRequestPermission(this PermissionGroupDefinition permissionGroup)
{
- var MaterialRequestPermission = permissionGroup.AddPermission(Default, StorePermissionDefinitionProvider.L(nameof(CoatingIssueRequest)));
- MaterialRequestPermission.AddChild(Create, StorePermissionDefinitionProvider.L(StorePermissions.CreateStr));
- MaterialRequestPermission.AddChild(Update, StorePermissionDefinitionProvider.L(StorePermissions.UpdateStr));
- MaterialRequestPermission.AddChild(Delete, StorePermissionDefinitionProvider.L(StorePermissions.DeleteStr));
-
- permissionGroup.AddPermission(AutoMaterialRequest, StorePermissionDefinitionProvider.L(nameof(AutoMaterialRequest)));
+ var coatingIssueRequestPermission = permissionGroup.AddPermission(Default, StorePermissionDefinitionProvider.L(nameof(CoatingIssueRequest)));
+ coatingIssueRequestPermission.AddChild(Create, StorePermissionDefinitionProvider.L(StorePermissions.CreateStr));
+ coatingIssueRequestPermission.AddChild(Update, StorePermissionDefinitionProvider.L(StorePermissions.UpdateStr));
+ coatingIssueRequestPermission.AddChild(Delete, StorePermissionDefinitionProvider.L(StorePermissions.DeleteStr));
}
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/DTOS/CoatingIssueRequestDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/DTOS/CoatingIssueRequestDTO.cs
index bcddf67a7..e65a27014 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/DTOS/CoatingIssueRequestDTO.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/DTOS/CoatingIssueRequestDTO.cs
@@ -1,8 +1,7 @@
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
-using Win_in.Sfs.Wms.Store.Application.Contracts;
-namespace Win_in.Sfs.Wms.Store.Requests.MaterialRequests;
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class CoatingIssueRequestDTO : SfsStoreRequestDTOBase, IHasNumber
{
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/DTOS/CoatingIssueRequestDetailDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/DTOS/CoatingIssueRequestDetailDTO.cs
index b77f40e6c..616bc4947 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/DTOS/CoatingIssueRequestDetailDTO.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/DTOS/CoatingIssueRequestDetailDTO.cs
@@ -3,9 +3,8 @@ 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.Application.Contracts;
-namespace Win_in.Sfs.Wms.Store.Requests.MaterialRequests;
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class CoatingIssueRequestDetailDTO : SfsStoreDetailWithQtyDTOBase
{
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/ICoatingIssueRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/ICoatingIssueRequestAppService.cs
index ac9f958ff..54bb032f1 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/ICoatingIssueRequestAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/ICoatingIssueRequestAppService.cs
@@ -1,15 +1,16 @@
+using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
-using Win_in.Sfs.Wms.Store.Application.Contracts;
-namespace Win_in.Sfs.Wms.Store.Requests.MaterialRequests;
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public interface ICoatingIssueRequestAppService
: ISfsStoreRequestMasterAppServiceBase
{
- Task CreateAndHandleAsync(CoatingIssueRequestEditInput input);
-
+ Task CreateAndHandleAsync(CoatingIssueRequestEditInput input);
+ Task UpdateStatusCompletedAsync(string number);
+ Task IsHasNewJobAsync(string requestNumber, List jobNumber);
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/Inputs/CoatingIssueRequestDetailInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/Inputs/CoatingIssueRequestDetailInput.cs
index fbb5165b3..d76fc8ad4 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/Inputs/CoatingIssueRequestDetailInput.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/Inputs/CoatingIssueRequestDetailInput.cs
@@ -2,9 +2,8 @@ using System;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
-using Win_in.Sfs.Wms.Store.Application.Contracts;
-namespace Win_in.Sfs.Wms.Store.Requests.MaterialRequests;
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class CoatingIssueRequestDetailInput : SfsStoreDetailWithQtyInputBase
{
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/Inputs/CoatingIssueRequestEditInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/Inputs/CoatingIssueRequestEditInput.cs
index e6f879431..0511073bf 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/Inputs/CoatingIssueRequestEditInput.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/Inputs/CoatingIssueRequestEditInput.cs
@@ -1,19 +1,19 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain;
-using Win_in.Sfs.Wms.Store.Application.Contracts;
+using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
-namespace Win_in.Sfs.Wms.Store.Requests.MaterialRequests;
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class CoatingIssueRequestEditInput : SfsStoreRequestCreateOrUpdateInputBase
{
#region Base
///
- /// 叫料类型
+ /// 叫料类型
///
[Display(Name = "叫料类型")]
- public string Type { get; set; }
+ public EnumIssueRequestType IssueRequestType { get; set; }
///
/// 使用在途库
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/Inputs/CoatingIssueRequestImportInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/Inputs/CoatingIssueRequestImportInput.cs
index 097ed69be..e96fc3f72 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/Inputs/CoatingIssueRequestImportInput.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/IssueRequest/CoatingIssueRequests/Inputs/CoatingIssueRequestImportInput.cs
@@ -1,23 +1,18 @@
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
-using Win_in.Sfs.Wms.Store.Application.Contracts;
+using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
-namespace Win_in.Sfs.Wms.Store.Requests.MaterialRequests;
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
-[Display(Name = "叫料申请")]
+[Display(Name = "喷涂叫料申请导入")]
public class CoatingIssueRequestImportInput : SfsStoreImportInputBase
{
-
///
- /// 叫料类型
+ /// 叫料类型
///
[Display(Name = "叫料类型")]
- [Required(ErrorMessage = "{0}是必填项")]
- [ImporterHeader(Name = "叫料类型")]
- [ExporterHeader(DisplayName = "叫料类型")]
- [ValueMapping("人工拉动", EnumMaterialRequestType.Issue_Manual)]
- public string Type { get; set; }
+ public EnumIssueRequestType IssueRequestType { get; set; }
///
/// 物品代码
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAppService.cs
index f3bef2def..fff12a59c 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAppService.cs
@@ -1,26 +1,20 @@
using System;
using System.Collections.Generic;
-using System.Data;
using System.Linq;
-using System.Linq.Expressions;
using System.Net.Http;
-using System.Threading;
+using System.Net.Http.Headers;
using System.Threading.Tasks;
using Castle.Components.DictionaryAdapter;
-using DocumentFormat.OpenXml.Spreadsheet;
using Microsoft.AspNetCore.Authorization;
-using Microsoft.AspNetCore.Components.Forms;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using MyNamespace;
-using Omu.ValueInjecter;
using Volo.Abp;
-using Volo.Abp.Application.Dtos;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts;
-using Win_in.Sfs.Basedata.Domain.Shared;
-using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
+using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
+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;
@@ -28,6 +22,8 @@ using Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
using Win_in.Sfs.Wms.Store.Jobs.IssueJobs.proxy;
using Win_in.Sfs.Wms.Store.Notes;
using Win_in.Sfs.Wms.Store.Options;
+using static IdentityModel.ClaimComparer;
+using static Volo.Abp.Identity.Settings.IdentitySettingNames;
namespace Win_in.Sfs.Wms.Store.Application;
@@ -41,94 +37,91 @@ public class CoatingIssueJobAppService
private readonly ICoatingIssueJobManager _coatingIssueJobManager;
private readonly ILocationAppService _locationAppService;
private readonly ITransferLibJobAppService _transferLibJobAppService;
+ private readonly ICoatingIssueNoteAppService _coatingIssueNoteAppService;
+ private readonly IExpectOutAppService _expectOutAppService;
private readonly IHttpClientFactory _httpClientFactory;
private readonly IOptions _options;
+
+ protected ICoatingIssueRequestAppService CoatingIssueRequestAppService =>
+ LazyServiceProvider.LazyGetRequiredService();
+
public CoatingIssueJobAppService(
ICoatingIssueJobRepository repository, ICoatingIssueJobManager coatingIssueJobManager,
- ILocationAppService locationAppService, ITransferLibJobAppService transferLibJobAppService
+ ILocationAppService locationAppService, ITransferLibJobAppService transferLibJobAppService,
+ ICoatingIssueNoteAppService coatingIssueNoteAppService, IExpectOutAppService expectOutAppService
, IHttpClientFactory httpClientFactory
, IOptions options
- ) : base(repository, coatingIssueJobManager)
+
+
+
+ ) : base(
+ repository, coatingIssueJobManager)
{
_coatingIssueJobManager = coatingIssueJobManager;
_locationAppService = locationAppService;
_transferLibJobAppService = transferLibJobAppService;
+ _coatingIssueNoteAppService = coatingIssueNoteAppService;
+ _expectOutAppService = expectOutAppService;
_httpClientFactory = httpClientFactory;
- _options=options;
+ _options = options;
}
[HttpPost("add-many")]
public override async Task> CreateManyAsync(List inputs)
{
-
-
-
foreach (var input in inputs)
{
await CheckMinRowAndSetStatusAsync(input).ConfigureAwait(false);
+ await CheckDimensionalStorehouseAsync(input).ConfigureAwait(false);
}
- return await base.CreateManyAsync(inputs).ConfigureAwait(false);
+ var coatingIssueJobDtos = await base.CreateManyAsync(inputs).ConfigureAwait(false);
+ foreach (var coatingIssueJobDto in coatingIssueJobDtos)
+ {
+ await CheckDimensionalStorehouseAsync(coatingIssueJobDto).ConfigureAwait(false);
+ }
+
+ return coatingIssueJobDtos;
}
[HttpPost("")]
public override async Task CreateAsync(CoatingIssueJobEditInput input)
{
await CheckMinRowAndSetStatusAsync(input).ConfigureAwait(false);
+ await CheckDimensionalStorehouseAsync(input).ConfigureAwait(false);
+
+ var coatingIssueJobDto = await base.CreateAsync(input).ConfigureAwait(false);
+ await CheckDimensionalStorehouseAsync(coatingIssueJobDto).ConfigureAwait(false);
- return await base.CreateAsync(input).ConfigureAwait(false);
+ return coatingIssueJobDto;
}
- ///
- /// 判断是不是在最底层 如果不是则把状态变更为等待 并把库移推荐的From和To赋值
- ///
- ///
- ///
- private async Task CheckMinRowAndSetStatusAsync(CoatingIssueJobEditInput input)
+ [HttpPost("invalid")]
+ public override async Task CancelAsync(Guid id)
{
- var jobDetailInputdetail = input.Details.FirstOrDefault();
-
- var loctionDto = await _locationAppService.GetByCodeAsync(jobDetailInputdetail.RecommendFromLocationCode)
- .ConfigureAwait(false);
-
- if (loctionDto.Type == EnumLocationType.RAW && loctionDto.RowCode != 1)
+ var kittingJob = await _repository.GetAsync(id).ConfigureAwait(false);
+ if (kittingJob == null)
{
- input.JobStatus = EnumJobStatus.Wait;
-
- jobDetailInputdetail.TransferLibFromArriveDate = jobDetailInputdetail.RecommendFromArriveDate;
- jobDetailInputdetail.TransferLibFromContainerCode = jobDetailInputdetail.RecommendFromContainerCode;
- jobDetailInputdetail.TransferLibFromExpireDate = jobDetailInputdetail.RecommendFromExpireDate;
- jobDetailInputdetail.TransferLibFromLocationArea = jobDetailInputdetail.RecommendFromLocationArea;
- jobDetailInputdetail.TransferLibFromLocationCode = jobDetailInputdetail.RecommendFromLocationCode;
- jobDetailInputdetail.TransferLibFromLocationErpCode = jobDetailInputdetail.RecommendFromLocationErpCode;
- jobDetailInputdetail.TransferLibFromLocationGroup = jobDetailInputdetail.RecommendFromLocationGroup;
- jobDetailInputdetail.TransferLibFromLot = jobDetailInputdetail.RecommendFromLot;
- jobDetailInputdetail.TransferLibFromPackingCode = jobDetailInputdetail.RecommendFromPackingCode;
- jobDetailInputdetail.TransferLibFromProduceDate = jobDetailInputdetail.RecommendFromProduceDate;
- jobDetailInputdetail.TransferLibFromQty = jobDetailInputdetail.RecommendFromQty;
- jobDetailInputdetail.TransferLibFromSupplierBatch = jobDetailInputdetail.RecommendFromSupplierBatch;
- jobDetailInputdetail.TransferLibFromWarehouseCode = jobDetailInputdetail.RecommendFromWarehouseCode;
+ throw new UserFriendlyException($"未找到ID为 {id} 的任务");
+ }
- jobDetailInputdetail.TransferLibToArriveDate = jobDetailInputdetail.RecommendToArriveDate;
- jobDetailInputdetail.TransferLibToContainerCode = jobDetailInputdetail.RecommendToContainerCode;
- jobDetailInputdetail.TransferLibToExpireDate = jobDetailInputdetail.RecommendToExpireDate;
- jobDetailInputdetail.TransferLibToLocationArea = jobDetailInputdetail.RecommendToLocationArea;
- jobDetailInputdetail.TransferLibToLocationCode = jobDetailInputdetail.RecommendToLocationCode;
- jobDetailInputdetail.TransferLibToLocationErpCode = jobDetailInputdetail.RecommendToLocationErpCode;
- jobDetailInputdetail.TransferLibToLocationGroup = jobDetailInputdetail.RecommendToLocationGroup;
- jobDetailInputdetail.TransferLibToLot = jobDetailInputdetail.RecommendToLot;
- jobDetailInputdetail.TransferLibToPackingCode = jobDetailInputdetail.RecommendToPackingCode;
- jobDetailInputdetail.TransferLibToProduceDate = jobDetailInputdetail.RecommendToProduceDate;
- jobDetailInputdetail.TransferLibToQty = jobDetailInputdetail.RecommendToQty;
- jobDetailInputdetail.TransferLibToSupplierBatch = jobDetailInputdetail.RecommendToSupplierBatch;
- jobDetailInputdetail.TransferLibToWarehouseCode = jobDetailInputdetail.RecommendToWarehouseCode;
+ if (kittingJob.JobStatus == EnumJobStatus.Open || kittingJob.JobStatus == EnumJobStatus.Partial ||
+ kittingJob.JobStatus == EnumJobStatus.Wait)
+ {
+ throw new UserFriendlyException($"任务状态不是{kittingJob.JobStatus == EnumJobStatus.Open}、" +
+ $"{kittingJob.JobStatus == EnumJobStatus.Partial}、" +
+ $"{kittingJob.JobStatus == EnumJobStatus.Wait}");
}
+
+ await _expectOutAppService.RemoveByNumberAsync(kittingJob.Number).ConfigureAwait(false);
+ kittingJob.JobStatus = EnumJobStatus.Cancelled;
+ await _repository.UpdateAsync(kittingJob).ConfigureAwait(false);
}
[HttpPost("cancel-by-request/{requestNumber}")]
public virtual async Task CancelByMaterialRequestAsync(string requestNumber)
{
- var entities = await _repository.GetListAsync(p => p.MaterialRequestNumber == requestNumber)
+ var entities = await _repository.GetListAsync(p => p.CoatingRequestNumber == requestNumber)
.ConfigureAwait(false);
foreach (var entity in entities)
{
@@ -136,38 +129,33 @@ public class CoatingIssueJobAppService
}
}
- [HttpPost("invalid")]
- public override async Task CancelAsync(Guid id)
- {
- var coatingIssueJob = await _repository.GetAsync(id).ConfigureAwait(false);
- if (coatingIssueJob == null)
- {
- throw new UserFriendlyException($"未找到ID为 {id} 的任务");
- }
-
- await _coatingIssueJobManager.CancelAsync(coatingIssueJob).ConfigureAwait(false);
- }
-
[HttpPost("by-request-number/{requestNumber}")]
public virtual async Task> GetByRequestNumberAsync(string requestNumber)
{
- var entitys = await _repository.GetListAsync(p => p.MaterialRequestNumber == requestNumber)
+ var entitys = await _repository.GetListAsync(p => p.CoatingRequestNumber == requestNumber)
.ConfigureAwait(false);
return ObjectMapper.Map, List>(entitys);
}
+ ///
+ /// 库移回调
+ ///
+ ///
+ ///
[HttpPost("Do-Call-Back")]
public async Task DoTransferLibCallbackAsync(TransferLibJobDTO dto)
{
- var job = await _repository.FindAsync(p => p.Number == dto.JobNumber).ConfigureAwait(false);
+ var job = await _repository.FindAsync(p => p.Number == dto.CallJobNumber).ConfigureAwait(false);
- //todo 等云峰写好换成真实的
- var transferLibJobDto = await _transferLibJobAppService.GetByNumberAsync("AAA").ConfigureAwait(false);
- var transferLibNote = new TransferLibNote();
+ if (job.JobStatus != EnumJobStatus.Wait)
+ {
+ throw new UserFriendlyException($"任务状态不是{EnumJobStatus.Wait.GetDisplayName()}");
+ }
- var transferLibNoteDetail = transferLibNote.Details.First();
+ var transferLibNoteDetail = dto.Details.First();
var jobDetail = job.Details.First();
+
job.JobStatus = EnumJobStatus.Open;
jobDetail.TransferLibFromArriveDate = transferLibNoteDetail.HandledFromArriveDate;
@@ -199,133 +187,391 @@ public class CoatingIssueJobAppService
jobDetail.TransferLibToWarehouseCode = transferLibNoteDetail.HandledToWarehouseCode;
await _repository.UpdateAsync(job).ConfigureAwait(false);
+ }
+
+ ///
+ /// 执行任务明细
+ ///
+ ///
+ [HttpPost("ExecuteDetail/{masterId}")]
+ public async Task ExecuteDetailAsync(Guid masterId, Guid detailId, CoatingIssueJobDetailDTO issueJobDetailDto)
+ {
+ var coatingIssueJob = await _repository.GetAsync(masterId).ConfigureAwait(false);
+ coatingIssueJob.JobStatus = EnumJobStatus.Doing;
+
+ var coatingIssueJobDto = ObjectMapper.Map(coatingIssueJob);
+ coatingIssueJobDto.Details = new List { issueJobDetailDto };
+ var coatingIssueNoteEditInput = await BuildCoatingIssueNoteAsync(coatingIssueJobDto).ConfigureAwait(false);
+ await _coatingIssueNoteAppService.CreateAsync(coatingIssueNoteEditInput).ConfigureAwait(false);
+
+ var issueJobDetail = ObjectMapper.Map(issueJobDetailDto);
+ var entityDetail = coatingIssueJob.Details.Find(p => p.Id == detailId);
+ issueJobDetail.HandledFromQty = entityDetail.HandledFromQty;
+ issueJobDetail.HandledToQty = entityDetail.HandledToQty;
+
+ issueJobDetail.HandledToQty += issueJobDetailDto.HandledToQty;
+ issueJobDetail.HandledFromQty += issueJobDetailDto.HandledFromQty;
+ coatingIssueJob.Details = new EditableList() { issueJobDetail };
+
+ if (coatingIssueJob.EnumIssueSendType == EnumIssueSendType.BoxQtyType) //按箱叫料 因为任务只有1箱 所以可以直接完成
+ {
+ await UpdateRequestAndjobStatusDoneAsync(coatingIssueJob, issueJobDetailDto, issueJobDetailDto.HandledToQty).ConfigureAwait(false);
+ }
+ else
+ {
+ var detail = coatingIssueJob.Details.First(p => p.Id == issueJobDetailDto.Id);
+ if (issueJobDetail.HandledToQty >= detail.RequestQty)
+ {
+ await UpdateRequestAndjobStatusDoneAsync(coatingIssueJob, issueJobDetailDto, issueJobDetailDto.HandledToQty).ConfigureAwait(false);
+ }
+ else
+ {
+ await RemoveExpectOutAsync(coatingIssueJob, issueJobDetailDto, issueJobDetailDto.HandledToQty).ConfigureAwait(false);
+ }
+ }
+
+ await _repository.UpdateAsync(coatingIssueJob).ConfigureAwait(false);
+ }
+
+ ///
+ /// 完成任务
+ ///
+ ///
+ ///
+ [HttpPost("Complete/{id}")]
+ public async Task CompleteAsync(Guid id)
+ {
+ var coatingIssueJob = await _repository.FindAsync(id).ConfigureAwait(false);
+
+ coatingIssueJob.JobStatus = EnumJobStatus.Done;
+
+ await _expectOutAppService.RemoveByNumberAsync(coatingIssueJob.Number).ConfigureAwait(false);
+
+ await CoatingIssueRequestAppService.UpdateStatusCompletedAsync(coatingIssueJob.CoatingRequestNumber).ConfigureAwait(false);
+ await _repository.UpdateAsync(coatingIssueJob).ConfigureAwait(false);
+ }
+
+ ///
+ /// 请求点了完成,任务全部都完成
+ ///
+ ///
+ ///
+ [HttpPost("complete-by-request/{requestNumber}")]
+ public async Task CompleteByRequestNumberAsync(string requestNumber)
+ {
+ var coatingIssueJobs = await _repository.GetListAsync(p => p.CoatingRequestNumber == requestNumber).ConfigureAwait(false);
+
+ foreach (var coatingIssueJob in coatingIssueJobs)
+ {
+ coatingIssueJob.JobStatus = EnumJobStatus.Done;
+ await _repository.UpdateAsync(coatingIssueJob).ConfigureAwait(false);
+ await _expectOutAppService.RemoveByNumberAsync(coatingIssueJob.Number).ConfigureAwait(false);
+ }
+ }
+
+ #region 立库
+
+ ///
+ /// 立体库同步
+ ///
+ ///
+ ///
+ ///
+ [HttpPost("sync-issue-job-stereo")]
+
+ public async Task SyncIssueJobStereoAsync(List input, string p_loc)
+ {
+ ReusltObject ret = new ReusltObject();
+ ret.Code = "1";
+ ret.Message = "操作成功";
+ ret.OperateTime = DateTime.Now.ToString("yyyy-MM-dd");
+ try
+ {
+ List IssueJobToRestoDetailDTOs = new List();
+ IssueJobToRestoDTO main = new IssueJobToRestoDTO();
+ main.OperatorName = CurrentUser.UserName;
+ foreach (var job in input)
+ {
+ foreach (var jobitem in job.Details)
+ {
+ IssueJobToRestoDetailDTOs.Add(new IssueJobToRestoDetailDTO()
+ {
+ Count = jobitem.HandledToQty,
+ ProductNo = jobitem.ItemCode,
+ NeedSite = p_loc,
+ WorkNo = job.Number,
+ TaskNo = job.Number
+ });
+ }
+ }
+ main.Details = IssueJobToRestoDetailDTOs;
+ var httpclient = _httpClientFactory.CreateClient();
+#if DEBUG
+
+ string json = System.Text.Json.JsonSerializer.Serialize(main);
+ _options.Value.Address = "http://localhost:59094/";//测试地址
+ _options.Value.Token = "";//测试token
+ _options.Value.UserName = "";//测试用户名
+ _options.Value.Password = "";//测试密码
+
+#endif
+ if (!string.IsNullOrEmpty(_options.Value.Token))
+ {
+ var token = _options.Value.Token;
+ httpclient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
+ }
+ if (!string.IsNullOrEmpty(_options.Value.UserName) && !string.IsNullOrEmpty(_options.Value.Password))
+ {
+ var username = _options.Value.UserName;
+ var password = _options.Value.Password;
+ httpclient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes($"{username}:{password}")));
+ }
+
+ IssueJobToRestoClient client = new IssueJobToRestoClient(_options.Value.Address, httpclient);
+ ret = await client.SyncIssueJobStereoAsync(main).ConfigureAwait(false);
+ }
+ catch (Exception ex)
+ {
+ ret = new ReusltObject();
+ ret.Code = "2";
+ ret.Message = ex.Message;
+ ret.OperateTime = DateTime.Now.ToString("yyyy-MM-dd");
+ }
+
+ return ret;
+
+ }
+
+ [HttpPost("receive-issue-job-stereo")]
+ public virtual async Task SyncReciveIssueJobStereoAsync(IssueRequestFromRestoDTO input)
+ {
+
+#if DEBUG
+ var json = System.Text.Json.JsonSerializer.Serialize(input);
+#endif
+ List errors = new List();
+ var ret = new ReusltObject()
+ {
+ Code = "1",
+ OperateTime = DateTime.Now.ToString("yyyy-MM-dd"),
+ Message = "操作成功"
+ };
+ try
+ {
+
+ if (input.Jobs.Count > 0)
+ {
+ var jobs = input.Jobs;
+ var numbers = jobs.Select(p => p.JobNumber);
+ var query = _repository.WithDetails()
+ .Where(p => numbers.Contains(p.Number));
+ var entities = query.ToList();
+ var dtos = ObjectMapper.Map, List>(entities);
+ if (input.Jobs.Count == entities.Count)
+ {
+ errors.Add("立体库提交出库任务和WMS任务不符,请核对! \n");
+ }
+ foreach (var itm in dtos)
+ {
+ var first = jobs.FirstOrDefault(p => p.JobNumber == itm.Number);
+ var itmDetails = itm.Details.ToList();
+ List details = new List();
+ foreach (var detail in first.Details)
+ {
+ var entity = itmDetails.FirstOrDefault(p => p.ItemCode == detail.ItemCode);
+ CoatingIssueJobDetailDTO dto = new CoatingIssueJobDetailDTO();
+ dto.HandledFromLocationCode = entity.HandledFromLocationCode;
+ dto.HandledToLocationCode = entity.HandledToLocationCode;
+ dto.ItemCode = detail.ItemCode;
+ dto.RecommendFromQty = detail.Qty;
+ dto.RecommendToQty = detail.Qty;
+ dto.HandledFromQty = detail.Qty;
+ dto.HandledToQty = detail.Qty;
+ dto.Status = entity.Status;
+ details.Add(dto);
+ }
+ itm.Details = details;
+ await CompleteAsync(itm.Id, itm).ConfigureAwait(false);
+ }
+ }
+ else
+ {
+ errors.Add("立体库确认单据里无数据! \n");
+ }
+ }
+ catch (Exception ex)
+ {
+ ret = new ReusltObject()
+ {
+ Code = "2",
+ OperateTime = DateTime.Now.ToString("yyyy-MM-dd"),
+ Message = ex.Message
+ };
+ return ret;
+ }
+ if (errors.Count > 0)
+ {
+
+ ret = new ReusltObject()
+ {
+ Code = "2",
+ OperateTime = DateTime.Now.ToString("yyyy-MM-dd"),
+ Message = string.Join(",", errors.ToArray())
+ };
+ }
+ return ret;
+ }
+
+ #endregion
+
+ #region 私有
+
+ ///
+ /// 创建补料记录实体
+ ///
+ ///
+ ///
+ private async Task BuildCoatingIssueNoteAsync(CoatingIssueJobDTO coatingIssueJobDto)
+ {
+ var coatingIssueNoteCreateInput =
+ ObjectMapper.Map(coatingIssueJobDto);
+ coatingIssueNoteCreateInput.JobNumber = coatingIssueJobDto.Number;
+
+ await Task.CompletedTask.ConfigureAwait(false);
+
+ return coatingIssueNoteCreateInput;
+ }
+
+ ///
+ /// 判断是不是在最底层 如果不是则把状态变更为等待 并把库移推荐的From和To赋值
+ ///
+ ///
+ ///
+ private async Task CheckMinRowAndSetStatusAsync(CoatingIssueJobEditInput input)
+ {
+ var jobDetailInputdetail = input.Details.FirstOrDefault();
+
+ var loctionDto = await _locationAppService.GetByCodeAsync(jobDetailInputdetail.RecommendFromLocationCode)
+ .ConfigureAwait(false);
+
+ if (loctionDto.Type == EnumLocationType.RAW && loctionDto.RowCode != 1)
+ {
+ input.JobStatus = EnumJobStatus.Wait;
+ }
+ else if (loctionDto.Type == EnumLocationType.RAW && loctionDto.RowCode == 1)
+ {
+ jobDetailInputdetail.TransferLibFromArriveDate = jobDetailInputdetail.RecommendFromArriveDate;
+ jobDetailInputdetail.TransferLibFromContainerCode = jobDetailInputdetail.RecommendFromContainerCode;
+ jobDetailInputdetail.TransferLibFromExpireDate = jobDetailInputdetail.RecommendFromExpireDate;
+ jobDetailInputdetail.TransferLibFromLocationArea = jobDetailInputdetail.RecommendFromLocationArea;
+ jobDetailInputdetail.TransferLibFromLocationCode = jobDetailInputdetail.RecommendFromLocationCode;
+ jobDetailInputdetail.TransferLibFromLocationErpCode = jobDetailInputdetail.RecommendFromLocationErpCode;
+ jobDetailInputdetail.TransferLibFromLocationGroup = jobDetailInputdetail.RecommendFromLocationGroup;
+ jobDetailInputdetail.TransferLibFromLot = jobDetailInputdetail.RecommendFromLot;
+ jobDetailInputdetail.TransferLibFromPackingCode = jobDetailInputdetail.RecommendFromPackingCode;
+ jobDetailInputdetail.TransferLibFromProduceDate = jobDetailInputdetail.RecommendFromProduceDate;
+ jobDetailInputdetail.TransferLibFromQty = jobDetailInputdetail.RecommendFromQty;
+ jobDetailInputdetail.TransferLibFromSupplierBatch = jobDetailInputdetail.RecommendFromSupplierBatch;
+ jobDetailInputdetail.TransferLibFromWarehouseCode = jobDetailInputdetail.RecommendFromWarehouseCode;
+
+ jobDetailInputdetail.TransferLibToArriveDate = jobDetailInputdetail.RecommendToArriveDate;
+ jobDetailInputdetail.TransferLibToContainerCode = jobDetailInputdetail.RecommendToContainerCode;
+ jobDetailInputdetail.TransferLibToExpireDate = jobDetailInputdetail.RecommendToExpireDate;
+ jobDetailInputdetail.TransferLibToLot = jobDetailInputdetail.RecommendToLot;
+ jobDetailInputdetail.TransferLibToPackingCode = jobDetailInputdetail.RecommendToPackingCode;
+ jobDetailInputdetail.TransferLibToProduceDate = jobDetailInputdetail.RecommendToProduceDate;
+ jobDetailInputdetail.TransferLibToQty = jobDetailInputdetail.RecommendToQty;
+ jobDetailInputdetail.TransferLibToSupplierBatch = jobDetailInputdetail.RecommendToSupplierBatch;
+ jobDetailInputdetail.TransferLibToWarehouseCode = jobDetailInputdetail.TransferLibFromWarehouseCode;
+ jobDetailInputdetail.TransferLibToLocationArea = jobDetailInputdetail.TransferLibFromLocationArea;
+ jobDetailInputdetail.TransferLibToLocationCode = jobDetailInputdetail.TransferLibFromLocationCode;
+ jobDetailInputdetail.TransferLibToLocationErpCode = jobDetailInputdetail.TransferLibFromLocationErpCode;
+ jobDetailInputdetail.TransferLibToLocationGroup = jobDetailInputdetail.TransferLibFromLocationGroup;
+ }
+ }
+
+ ///
+ /// 判断是不是在立体库
+ ///
+ ///
+ ///
+ private async Task CheckDimensionalStorehouseAsync(CoatingIssueJobEditInput input)
+ {
+ var jobDetailInputdetail = input.Details.FirstOrDefault();
+
+ var loctionDto = await _locationAppService.GetByCodeAsync(jobDetailInputdetail.RecommendFromLocationCode)
+ .ConfigureAwait(false);
+
+ if (loctionDto.Type == EnumLocationType.DimensionalStorehouse)
+ {
+ input.JobStatus = EnumJobStatus.Wait;
+ }
+ }
- return;
+ ///
+ /// 判断是不是在立体库
+ ///
+ ///
+ ///
+ private async Task CheckDimensionalStorehouseAsync(CoatingIssueJobDTO coatingIssueJobDto)
+ {
+ var jobDetailInputdetail = coatingIssueJobDto.Details.FirstOrDefault();
+
+ var loctionDto = await _locationAppService.GetByCodeAsync(jobDetailInputdetail.RecommendFromLocationCode)
+ .ConfigureAwait(false);
+
+ if (loctionDto.Type == EnumLocationType.DimensionalStorehouse)
+ {
+ //TODO 立体库
+ var ret = await SyncIssueJobStereoAsync(new List { coatingIssueJobDto }, loctionDto.Code).ConfigureAwait(false);
+ if (ret.Code != "1")
+ {
+ throw new UserFriendlyException($"调用立体库不成功!原因:{ret.Message}");
+ }
+ }
+
+
+ }
+
+ ///
+ /// 修改当前任务状态 和 该任务的请求状态
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ private async Task UpdateRequestAndjobStatusDoneAsync(CoatingIssueJob coatingIssueJob,
+ CoatingIssueJobDetailDTO coatingIssueJobDetailDto, decimal handledToQty)
+ {
+ if (coatingIssueJob.JobStatus is EnumJobStatus.Closed or EnumJobStatus.Cancelled or EnumJobStatus.None
+ or EnumJobStatus.Done) //需要考虑下 多次提交的问题 所以不判断 进行中
+ {
+ throw new UserFriendlyException(
+ $"任务状态错误:编号为【{coatingIssueJob.Number}】的任务状态为【{coatingIssueJob.JobStatus.GetDisplayName()}】");
+ }
+
+ coatingIssueJob.JobStatus = EnumJobStatus.Done;
+
+ await RemoveExpectOutAsync(coatingIssueJob, coatingIssueJobDetailDto, handledToQty).ConfigureAwait(false);
+
+ //await _expectOutAppService.RemoveByNumberAsync(coatingIssueJob.Number).ConfigureAwait(false);
+
+ await CoatingIssueRequestAppService.UpdateStatusCompletedAsync(coatingIssueJob.CoatingRequestNumber)
+ .ConfigureAwait(false);
+
+ await Task.CompletedTask.ConfigureAwait(false);
}
+ private async Task RemoveExpectOutAsync(CoatingIssueJob coatingIssueJob, CoatingIssueJobDetailDTO coatingIssueJobDetailDto,
+ decimal handledToQty)
+ {
+ await _expectOutAppService.RemoveByNumberAndInventoryAsync(coatingIssueJob.Number,
+ coatingIssueJobDetailDto.ItemCode,
+ coatingIssueJobDetailDto.HandledToLocationCode, coatingIssueJobDetailDto.HandledToPackingCode,
+ coatingIssueJobDetailDto.Status, coatingIssueJobDetailDto.HandledToLot,
+ handledToQty).ConfigureAwait(false);
+ }
- //[HttpPost("sync-issue-job-stereo")]
- //public virtual async Task SyncCoatingJobStereoAsync(List input)
- //{
-
- // ReusltObject ret=new ReusltObject();
- // ret.Code = "1";
- // ret.Message = "操作成功";
- // ret.OperateTime = DateTime.Now.ToString("yyyy-MM-dd");
-
- // List IssueJobToRestoDetailDTOs = new List();
- // IssueJobToRestoDTO main=new IssueJobToRestoDTO();
- // main.OperatorName=CurrentUser.UserName;
- // foreach (var job in input)
- // {
- // foreach (var jobitem in job.Details)
- // {
- // IssueJobToRestoDetailDTOs.Add(new IssueJobToRestoDetailDTO()
- // {
- // Count=jobitem.HandledToQty,
- // ProductNo=jobitem.ItemCode,
- // NeedSite=jobitem.HandledToLocationCode,
- // WorkNo=job.Number,
- // TaskNo=job.Number
- // });
- // }
- // }
- // main.Details=IssueJobToRestoDetailDTOs;
-
- // #region
- // IssueJobToRestoClient client = new IssueJobToRestoClient(_options.Value.Address, _httpClientFactory.CreateClient());
- // ret = await client.SyncIssueJobStereoAsync(main).ConfigureAwait(false);
- // #endregion
- // return ret;
-
- //}
-
-
-
-
- //[HttpPost("receive-issue-job-stereo")]
- //public virtual async Task SyncReciveCoatingJobStereoAsync(IssueRequestFromRestoDTO input)
- //{
- // List errors = new List();
- // var ret=new ReusltObject()
- // {
- // Code = "1",
- // OperateTime = DateTime.Now.ToString("yyyy-MM-dd"),
- // Message = "操作成功"
- // };
- // try
- // {
- // if (input.Jobs.Count > 0)
- // {
- // var inputs = input.Jobs;
- // var numbers = inputs.Select(p => p.JobNumber);
- // var query = _repository.WithDetails()
- // .Where(p => numbers.Contains(p.Number));
- // var entities = query.ToList();
-
- // if (input.Jobs.Count == entities.Count) {
- // errors.Add("出库任务和WMS出库任务不符,请核对! \n");
- // }
- // var dtos = ObjectMapper.Map, List>(entities);
- // foreach (var itm in dtos)
- // {
- // var first = inputs.FirstOrDefault(p => p.JobNumber == itm.Number);
-
- // var itmDetails = itm.Details;
- // List details = new List();
- // foreach (var detail in first.Details)
- // {
- // var entity=itmDetails.FirstOrDefault(p => p.ItemCode == detail.ItemCode);
- // CoatingIssueJobDetailDTO dto = new CoatingIssueJobDetailDTO();
- // dto.HandledFromLocationCode = entity.HandledFromContainerCode;
- // dto.HandledToLocationCode = entity.HandledToLocationCode;
- // dto.ItemCode = detail.ItemCode;
- // dto.RecommendFromQty = detail.Qty;
- // dto.RecommendToQty = detail.Qty;
- // dto.HandledFromQty = detail.Qty;
- // dto.HandledToQty = detail.Qty;
- // details.Add(dto);
- // }
- // itm.Details = details;
- // await CompleteAsync(itm.Id, itm).ConfigureAwait(false);
- // }
-
- // }
- // else
- // {
- // errors.Add("立体库确认单据里无数据! \n");
- // }
- // }
- // catch (Exception ex)
- // {
- // ret=new ReusltObject()
- // {
- // Code = "2",
- // OperateTime = DateTime.Now.ToString("yyyy-MM-dd"),
- // Message = ex.Message
- // };
- // return ret;
- // }
-
- // if (errors.Count > 0)
- // {
-
- // ret= new ReusltObject()
- // {
- // Code = "2",
- // OperateTime = DateTime.Now.ToString("yyyy-MM-dd"),
- // Message = string.Join(",",errors.ToArray())
- // };
- // }
- // return ret;
- //}
-
-
-
-
-
-
-
-
-
+ #endregion
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAutoMapperProfile.cs
index 3a3a961e5..ab712ae9c 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAutoMapperProfile.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobAutoMapperProfile.cs
@@ -2,7 +2,6 @@ using AutoMapper;
using Volo.Abp.AutoMapper;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
-using Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
namespace Win_in.Sfs.Wms.Store.Application;
@@ -13,8 +12,6 @@ public partial class StoreApplicationAutoMapperProfile : Profile
CreateMap()
.ReverseMap();
- //CreateMap();
-
CreateMap()
;
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteAppService.cs
index 9259126d2..e028685eb 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteAppService.cs
@@ -14,12 +14,11 @@ using Win_in.Sfs.Shared.Event;
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.Notes.IssueNotes;
namespace Win_in.Sfs.Wms.Store.Application;
[Authorize]
-[Route($"{StoreConsts.RootPath}coating-note")]
+[Route($"{StoreConsts.RootPath}coating-issue-note")]
public class CoatingIssueNoteAppService :
SfsStoreWithDetailsAppServiceBase,
@@ -60,6 +59,4 @@ public class CoatingIssueNoteAppService :
return ObjectMapper.Map(coatingIssueNote);
}
-
-
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteAutoMapperProfile.cs
index 360a0df6d..83451121d 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteAutoMapperProfile.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteAutoMapperProfile.cs
@@ -2,8 +2,6 @@ using AutoMapper;
using Volo.Abp.AutoMapper;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
-using Win_in.Sfs.Wms.Store.Notes.IssueNotes;
-
namespace Win_in.Sfs.Wms.Store.Application;
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/CoatingIssueRequests/CoatingIssueRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/CoatingIssueRequests/CoatingIssueRequestAppService.cs
index bef19ed95..a9142a43a 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/CoatingIssueRequests/CoatingIssueRequestAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/CoatingIssueRequests/CoatingIssueRequestAppService.cs
@@ -1,80 +1,68 @@
using System;
using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
using System.Linq;
-using System.Linq.Expressions;
-using System.Threading;
using System.Threading.Tasks;
-using DocumentFormat.OpenXml.Office.PowerPoint.Y2021.M06.Main;
-using IdentityModel;
+using Castle.Components.DictionaryAdapter;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
-using Microsoft.EntityFrameworkCore;
+using NUglify.Helpers;
using Volo.Abp;
-using Volo.Abp.Application.Dtos;
-using Volo.Abp.Domain.Entities;
-using Volo.Abp.Domain.Repositories;
-using Volo.Abp.ObjectMapping;
-using Win_in.Sfs.Basedata.Application;
using Win_in.Sfs.Basedata.Application.Contracts;
-using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
-using Win_in.Sfs.Shared.Event;
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.Requests.MaterialRequests;
namespace Win_in.Sfs.Wms.Store.Application;
///
-/// 喷涂叫料
+/// 喷涂叫料申请
///
[Authorize]
-[Route($"{StoreConsts.RootPath}coating-request")]
+[Route($"{StoreConsts.RootPath}coating-issue-request")]
public class CoatingIssueRequestAppService : SfsStoreRequestAppServiceBase,
ICoatingIssueRequestAppService
{
- private readonly ICoatingIssueRequestManager _coatingMaterialRequestManager;
+ private readonly ICoatingIssueRequestManager _coatingIssueRequestManager;
private readonly IItemStoreRelationAppService _itemStoreRelationApp;
private readonly IAreaAppService _areaApp;
private readonly ILocationAppService _locationAppService;
private readonly IItemBasicAppService _itemBasicAppService;
- private readonly IProductionLineAppService _productionLineAppService;
+ private readonly IProductionLineAppService _productionLineAppService;
+ private readonly ICoatingIssueJobAppService _coatingIssueJobAppService;
+
private readonly ITransactionTypeAppService _transactionTypeAppService;
public CoatingIssueRequestAppService(
ICoatingIssueRequestRepository repository,
- ICoatingIssueRequestManager coatingMaterialRequestManager,
+ ICoatingIssueRequestManager coatingIssueRequestManager,
IPreparationPlanManager preparationPlanManager,
IItemStoreRelationAppService itemStoreRelationApp,
IAreaAppService areaApp,
ILocationAppService locationAppService,
IItemBasicAppService itemBasicAppService,
IProductionLineAppService productionLineAppService,
- ITransactionTypeAppService transactionTypeAppService
- )
- : base(repository, coatingMaterialRequestManager)
+ ITransactionTypeAppService transactionTypeAppService, ICoatingIssueJobAppService coatingIssueJobAppService)
+ : base(repository, coatingIssueRequestManager)
{
- _coatingMaterialRequestManager = coatingMaterialRequestManager;
+ _coatingIssueRequestManager = coatingIssueRequestManager;
_itemStoreRelationApp = itemStoreRelationApp;
_areaApp = areaApp;
_locationAppService = locationAppService;
_itemBasicAppService = itemBasicAppService;
- _productionLineAppService = productionLineAppService;
+ _productionLineAppService = productionLineAppService;
+
_transactionTypeAppService = transactionTypeAppService;
+ _coatingIssueJobAppService = coatingIssueJobAppService;
}
public override async Task HandleAsync(Guid id)
{
- await Task.CompletedTask.ConfigureAwait(false);
- return null;
+ return await base.HandleAsync(id).ConfigureAwait(false);
}
-
-
[HttpPost("")]
public override async Task CreateAsync(CoatingIssueRequestEditInput input)
{
@@ -86,18 +74,22 @@ public class CoatingIssueRequestAppService : SfsStoreRequestAppServiceBase(input);
- var result = await _coatingMaterialRequestManager.CreateByNumberAsync(entity).ConfigureAwait(false);
+ var result = await _coatingIssueRequestManager.CreateByNumberAsync(entity).ConfigureAwait(false);
var dto = ObjectMapper.Map(result);
@@ -122,13 +115,14 @@ public class CoatingIssueRequestAppService : SfsStoreRequestAppServiceBase
- /// 赋值Request业务属性
+ /// 赋值Request业务属性
///
///
///
private async Task SetRequestAutoPropertiesAsync(CoatingIssueRequestEditInput entity)
{
- var tranType = await _transactionTypeAppService.GetByTransTypeAsync(EnumTransType.Issue, EnumTransSubType.None).ConfigureAwait(false);
+ var tranType = await _transactionTypeAppService.GetByTransTypeAsync(EnumTransType.Issue, EnumTransSubType.None)
+ .ConfigureAwait(false);
Check.NotNull(tranType, "事务类型", "事务类型不存在");
entity.AutoSubmit = tranType.AutoSubmitRequest;
entity.AutoAgree = tranType.AutoAgreeRequest;
@@ -140,15 +134,239 @@ public class CoatingIssueRequestAppService : SfsStoreRequestAppServiceBase CreateAndHandleAsync(CoatingIssueRequestEditInput input)
{
- var coatingMaterialRequestDto = await CreateAsync(input).ConfigureAwait(false);
+ var coatingIssueRequestDto = await CreateAsync(input).ConfigureAwait(false);
+
+ //await HandleAsync(coatingIssueRequestDto.Id).ConfigureAwait(false);
+
+ return coatingIssueRequestDto;
+ }
+
+ public override async Task CancelAsync(Guid id)
+ {
+ var request = await _repository.GetAsync(id).ConfigureAwait(false);
+
+ var list = await _coatingIssueJobAppService.GetByRequestNumberAsync(request.Number).ConfigureAwait(false);
+ if (list.Any())
+ {
+ foreach (var coatingIssueJobDto in list)
+ {
+ if (coatingIssueJobDto.JobStatus == EnumJobStatus.Open ||
+ coatingIssueJobDto.JobStatus == EnumJobStatus.Partial ||
+ coatingIssueJobDto.JobStatus == EnumJobStatus.Doing ||
+ coatingIssueJobDto.JobStatus == EnumJobStatus.Wait)
+ {
+ await _coatingIssueJobAppService.CancelAsync(coatingIssueJobDto.Id).ConfigureAwait(false);
+ }
+ }
+ }
+
+ if (request.RequestStatus == EnumRequestStatus.Partial || request.RequestStatus == EnumRequestStatus.Handling ||
+ request.RequestStatus == EnumRequestStatus.New)
+ {
+ request.RequestStatus = EnumRequestStatus.Cancelled;
+ await _repository.UpdateAsync(request).ConfigureAwait(false);
+ }
+ else
+ {
+ throw new UserFriendlyException($"【{request.RequestStatus.GetDisplayName()}】状态不允许取消");
+ }
+
+ return ObjectMapper.Map(request);
+ }
+
+ [HttpPost("UpdateStatusCompleted")]
+ public async Task UpdateStatusCompletedAsync(string number)
+ {
+ var coatingIssueRequest = await _repository.FindAsync(p => p.Number == number).ConfigureAwait(false);
+
+ await UpdateCoatingIssueRequestDetailQtyAsync(coatingIssueRequest, new EditableList())
+ .ConfigureAwait(false);
+
+ var coatingIssueJobDtos = await _coatingIssueJobAppService.GetByRequestNumberAsync(coatingIssueRequest.Number)
+ .ConfigureAwait(false);
+
+ if (coatingIssueJobDtos.Any(p =>
+ p.JobStatus == EnumJobStatus.Open || p.JobStatus == EnumJobStatus.Doing ||
+ p.JobStatus == EnumJobStatus.Partial))
+ {
+ return;
+ }
+
+ var flag = true;
+
+ foreach (var detail in coatingIssueRequest.Details)
+ {
+ if (detail.Qty >= detail.IssuedQty)
+ {
+ flag = false;
+ return;
+ }
+ }
+
+ if (flag)
+ {
+ CheckStatus(EnumRequestStatus.Completed, coatingIssueRequest.RequestStatus);
+ coatingIssueRequest.RequestStatus = EnumRequestStatus.Completed;
+ await _repository.UpdateAsync(coatingIssueRequest).ConfigureAwait(false);
+ }
+ }
+
+ ///
+ /// 修改请求的 已发 已收数量
+ ///
+ ///
+ ///
+ ///
+ private async Task UpdateCoatingIssueRequestDetailQtyAsync(CoatingIssueRequest coatingIssueRequest,
+ List addCoatingIssueJobDtos)
+ {
+ //原有任务
+ var existCoatingIssueJobDtos = await _coatingIssueJobAppService
+ .GetByRequestNumberAsync(coatingIssueRequest.Number)
+ .ConfigureAwait(false);
+
+ //新增的任务和已有的任务总和
+ var allCoatingIssueJobDtos = new List();
+ allCoatingIssueJobDtos.AddRange(addCoatingIssueJobDtos);
+ allCoatingIssueJobDtos.AddRange(existCoatingIssueJobDtos);
+
+ var groupByItemCodeLocationCode = coatingIssueRequest.Details.GroupBy(p =>
+ new { p.ItemCode, p.ToLocationCode });
+ foreach (var group in groupByItemCodeLocationCode)
+ {
+ foreach (var requestDetail in group)
+ {
+ //所有已发数量
+ decimal allIssuedQty = 0;
+
+ //所有已发数量
+ decimal allReceivedQty = 0;
+
+ foreach (var allCoatingIssueJobDto in allCoatingIssueJobDtos)
+ {
+ var jobDetailDtos = allCoatingIssueJobDto.Details.Where(p =>
+ p.ItemCode == group.Key.ItemCode && p.RequestLocationCode == group.Key.ToLocationCode);
+ //所有已发数量
+ allIssuedQty += jobDetailDtos.Sum(p => p.RequestQty);
+ //所有已发数量
+ allReceivedQty += jobDetailDtos.Sum(p => p.HandledToQty);
+ }
+
+ requestDetail.IssuedQty += allIssuedQty;
+ requestDetail.ReceivedQty += allReceivedQty;
+ }
+ }
+
+ await _repository.UpdateAsync(coatingIssueRequest).ConfigureAwait(false);
+ }
+
+ [HttpPost("IsHasNewJob")]
+ public async Task IsHasNewJobAsync(string requestNumber, List jobNumber)
+ {
+ var joblIssueJobDtos =
+ await _coatingIssueJobAppService.GetByRequestNumberAsync(requestNumber).ConfigureAwait(false);
+ if (joblIssueJobDtos != null && joblIssueJobDtos.Any())
+ {
+ var jobNumberList = joblIssueJobDtos.Select(p => p.Number);
+
+ var difference = jobNumberList.Except(jobNumber);
+ if (difference.Any())
+ {
+ var result = "已生成任务号";
+ difference.ForEach(p => result += "【" + p + "】");
+ result += "的任务";
+ return result;
+ }
+
+ return "无任务生成,请检查库存";
+ }
+
+ return "无任务生成,请检查库存";
+ }
+
+ public override async Task CompleteAsync(Guid id)
+ {
+ var coatingIssueRequest = await _repository.GetAsync(id).ConfigureAwait(false);
+ if (coatingIssueRequest.RequestStatus == EnumRequestStatus.Handling ||
+ coatingIssueRequest.RequestStatus == EnumRequestStatus.Partial ||
+ coatingIssueRequest.RequestStatus == EnumRequestStatus.New)
+ {
+ coatingIssueRequest.RequestStatus = EnumRequestStatus.Completed;
+ }
+ else
+ {
+ throw new UserFriendlyException($"【{coatingIssueRequest.RequestStatus.GetDisplayName()}】状态不允许完成");
+ }
- await HandleAsync(coatingMaterialRequestDto.Id).ConfigureAwait(false);
+ await _coatingIssueJobAppService.CompleteByRequestNumberAsync(coatingIssueRequest.Number).ConfigureAwait(false);
- return coatingMaterialRequestDto;
+ return ObjectMapper.Map(await _repository.UpdateAsync(coatingIssueRequest)
+ .ConfigureAwait(false));
}
#region 校验
+ private void CheckStatus(EnumRequestStatus targetStatus, EnumRequestStatus nowStatus)
+ {
+ var validSourceStatuses = new List();
+ switch (targetStatus)
+ {
+ case EnumRequestStatus.None:
+ break;
+ case EnumRequestStatus.New:
+ break;
+ case EnumRequestStatus.Reviewing:
+ validSourceStatuses = new List { EnumRequestStatus.New };
+ break;
+ case EnumRequestStatus.Refused:
+ validSourceStatuses = new List { EnumRequestStatus.Reviewing };
+ break;
+ case EnumRequestStatus.Agreed:
+ validSourceStatuses = new List { EnumRequestStatus.Reviewing };
+ break;
+ case EnumRequestStatus.Handling:
+ validSourceStatuses = new List
+ {
+ EnumRequestStatus.Agreed, EnumRequestStatus.Partial
+ };
+ break;
+ case EnumRequestStatus.Completed:
+ validSourceStatuses = new List
+ {
+ EnumRequestStatus.Handling, EnumRequestStatus.Partial
+ };
+ break;
+ case EnumRequestStatus.Cancelled:
+ validSourceStatuses = new List
+ {
+ EnumRequestStatus.New, EnumRequestStatus.Reviewing, EnumRequestStatus.Agreed
+ };
+ break;
+ case EnumRequestStatus.Abort:
+ validSourceStatuses = new List
+ {
+ EnumRequestStatus.Handling, EnumRequestStatus.Partial
+ };
+ break;
+ case EnumRequestStatus.Partial:
+ {
+ validSourceStatuses = new List
+ {
+ EnumRequestStatus.Handling, EnumRequestStatus.Partial
+ };
+ break;
+ }
+ default:
+ throw new ArgumentOutOfRangeException(nameof(targetStatus), targetStatus, null);
+ }
+
+ if (!validSourceStatuses.Contains(nowStatus))
+ {
+ throw new UserFriendlyException(
+ $"当前状态为 {nowStatus.GetDisplayName()} ,无法变更为 {targetStatus.GetDisplayName()}");
+ }
+ }
+
private void CheckItemBasic(ItemBasicDTO itemBasicDto, string itemCode)
{
if (itemBasicDto == null)
@@ -164,9 +382,18 @@ public class CoatingIssueRequestAppService : SfsStoreRequestAppServiceBase
/// 涂装发料任务
@@ -23,26 +22,23 @@ public class CoatingIssueJob : SfsJobAggregateRootBase
///
/// 生产线
///
- [IgnoreUpdate]
public string ProdLine { get; set; }
///
- /// 要货单号
+ /// 要料单号
///
- [IgnoreUpdate]
- public string MaterialRequestNumber { get; set; }
+ public string CoatingRequestNumber { get; set; }
///
/// 使用在途库
///
[Display(Name = "使用在途库")]
- [IgnoreUpdate]
public bool UseOnTheWayLocation { get; set; }
///
/// 任务明细
///
- [IgnoreUpdate]
- public override List Details { get; set; } = new List();
+ public override List Details { get; set; } = new List();
+ public EnumIssueSendType EnumIssueSendType { get; set; }
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDetail.cs
index 63e971b43..58352f238 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDetail.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobDetail.cs
@@ -8,7 +8,6 @@ namespace Win_in.Sfs.Wms.Store.Domain;
public class CoatingIssueJobDetail : SfsDetailEntityBase
{
-
#region 库存基础信息
///
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobManager.cs
index a8c38adc9..c57029b71 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobManager.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/CoatingIssueJobManager.cs
@@ -10,7 +10,6 @@ using Volo.Abp.Users;
using Volo.Abp.Validation;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Inventory.Application.Contracts;
-using Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
namespace Win_in.Sfs.Wms.Store.Domain;
@@ -18,14 +17,14 @@ public class CoatingIssueJobManager : SfsJobManagerBase
@@ -38,7 +37,6 @@ public class CoatingIssueJobManager : SfsJobManagerBase CompleteAsync(CoatingIssueJob input, ICurrentUser user)
{
var entity = await Repository.FindAsync(input.Id).ConfigureAwait(false);
-
var inputDetail = input.Details.First();
var detail = entity.Details.First();
@@ -54,7 +52,6 @@ public class CoatingIssueJobManager : SfsJobManagerBase
{
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/ICoatingIssueJobRepository.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/ICoatingIssueJobRepository.cs
index fb7c9e112..67e324295 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/ICoatingIssueJobRepository.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/ICoatingIssueJobRepository.cs
@@ -1,6 +1,4 @@
-using Win_in.Sfs.Wms.Store.Domain;
-
-namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
+namespace Win_in.Sfs.Wms.Store.Domain;
public interface ICoatingIssueJobRepository : ISfsJobRepositoryBase
{
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/ICoatingssueExtension.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/ICoatingssueExtension.cs
deleted file mode 100644
index f31192512..000000000
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/CoatingIssueJobs/ICoatingssueExtension.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-using Volo.Abp.Timing;
-using Win_in.Sfs.Shared.Domain.Shared;
-using Win_in.Sfs.Wms.Store.Domain;
-
-namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
-
-public static class CoatingIssueExtension
-{
- // public static IssueJob SetDetails(this IssueJob job,IGuidGenerator guidGenerator, LocationDTO location)
- // {
- // foreach (var detail in job.Details)
- // {
- // detail.SetIdAndNumber(guidGenerator,job.Id,job.Number);
- // detail.RecommendLocationCode = location.Code;
- // detail.SetBatch(detail.RecommendBatch);
- // }
- // return job;
- // }
-
- public static IssueJob Init(this IssueJob job)
- {
- job.JobType = EnumJobType.IssueJob;
- job.JobStatus = EnumJobStatus.Open;
- return job;
- }
-
- public static IssueJob SetWorkGroup(this IssueJob job, string warehouseCode, string workGroupCode, string groupCode)
- {
- job.WorkGroupCode = workGroupCode;
- job.WarehouseCode = warehouseCode;
- job.ProdLine = groupCode;
- return job;
- }
-
- public static IssueJob SetWorker(this IssueJob job, string worker)
- {
- job.Worker = worker;
- return job;
- }
-
- public static IssueJob SetPriority(this IssueJob job, IClock clock)
- {
- job.Priority = PriorityHelper.GetPriority(clock);
- job.PriorityIncrement = 1;
- return job;
- }
-
- // public static IssueJob SetIdAndNumber(this IssueJob job,IGuidGenerator guidGenerator, ISnowflakeIdGenerator numberGenerator)
- // {
- // var number = (numberGenerator.CreateAsync().GetAwaiter().GetResult()).ToString();
- // job.SetIdAndNumber(guidGenerator, number);
- // return job;
- // }
-
-}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNote.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNote.cs
index 5c3280457..cbaf80839 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNote.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNote.cs
@@ -4,12 +4,11 @@ using System.ComponentModel.DataAnnotations;
using Volo.Abp;
using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
-using Win_in.Sfs.Wms.Store.Domain;
-namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes;
+namespace Win_in.Sfs.Wms.Store.Domain;
///
-/// 喷涂叫料申请
+/// 涂装叫料记录
///
public class CoatingIssueNote : SfsStoreAggregateRootBase, IHasJobNumber, IHasRequestNumber
{
@@ -22,12 +21,9 @@ public class CoatingIssueNote : SfsStoreAggregateRootBase
/// 明细列表
///
- [IgnoreUpdate]
public override List Details { get; set; } = new List();
- [IgnoreUpdate]
public string RequestNumber { get; set; }
-
///
/// 叫料类型
///
@@ -37,14 +33,12 @@ public class CoatingIssueNote : SfsStoreAggregateRootBase
/// 使用在途库
///
- [IgnoreUpdate]
public bool UseOnTheWayLocation { get; set; }
///
/// 确认时间
///
[Display(Name = "确认时间")]
- [IgnoreUpdate]
public DateTime? ConfirmTime { get; set; }
///
@@ -53,6 +47,8 @@ public class CoatingIssueNote : SfsStoreAggregateRootBase, ICoatingIssueNoteManager
{
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/ICoatingIssueNoteManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/ICoatingIssueNoteManager.cs
index 35fbcd208..af4d43f9d 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/ICoatingIssueNoteManager.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/ICoatingIssueNoteManager.cs
@@ -1,8 +1,7 @@
using System;
using System.Threading.Tasks;
-using Win_in.Sfs.Wms.Store.Domain;
-namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes;
+namespace Win_in.Sfs.Wms.Store.Domain;
public interface ICoatingIssueNoteManager : ISfsStoreManager
{
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/ICoatingIssueNoteRepository.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/ICoatingIssueNoteRepository.cs
index 267b6b1f8..ec4d9f2a5 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/ICoatingIssueNoteRepository.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/CoatingIssueNotes/ICoatingIssueNoteRepository.cs
@@ -1,6 +1,4 @@
-using Win_in.Sfs.Wms.Store.Domain;
-
-namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes;
+namespace Win_in.Sfs.Wms.Store.Domain;
public interface ICoatingIssueNoteRepository : ISfsStoreRepositoryBase
{
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/CoatingIssuelRequests/CoatingIssueRequest.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/CoatingIssuelRequests/CoatingIssueRequest.cs
index 93d695326..ccb0274f7 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/CoatingIssuelRequests/CoatingIssueRequest.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/CoatingIssuelRequests/CoatingIssueRequest.cs
@@ -2,9 +2,8 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Win_in.Sfs.Shared.Domain.Entities;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
-using Win_in.Sfs.Wms.Store.Domain;
-namespace Win_in.Sfs.Wms.Store.Requests.MaterialRequests;
+namespace Win_in.Sfs.Wms.Store.Domain;
///
/// 喷涂叫料申请
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/CoatingIssuelRequests/CoatingIssueRequestDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/CoatingIssuelRequests/CoatingIssueRequestDetail.cs
index 72a5ef4a9..3600e4a38 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/CoatingIssuelRequests/CoatingIssueRequestDetail.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/CoatingIssuelRequests/CoatingIssueRequestDetail.cs
@@ -3,9 +3,8 @@ 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;
-namespace Win_in.Sfs.Wms.Store.Requests.MaterialRequests;
+namespace Win_in.Sfs.Wms.Store.Domain;
public class CoatingIssueRequestDetail : SfsStoreDetailWithQtyEntityBase, IHasToLocation
{
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/CoatingIssuelRequests/CoatingIssueRequestManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/CoatingIssuelRequests/CoatingIssueRequestManager.cs
index ed2b3a489..26615b133 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/CoatingIssuelRequests/CoatingIssueRequestManager.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/CoatingIssuelRequests/CoatingIssueRequestManager.cs
@@ -1,15 +1,10 @@
-using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
-using DocumentFormat.OpenXml.Math;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Event;
-using Win_in.Sfs.Wms.Store.Domain;
-using Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
-using static Win_in.Sfs.Wms.Store.Domain.Shared.StoreSettings;
-namespace Win_in.Sfs.Wms.Store.Requests.MaterialRequests;
+namespace Win_in.Sfs.Wms.Store.Domain;
public class CoatingIssueRequestManager
: SfsStoreRequestManagerBase
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/CoatingIssuelRequests/ICoatingIssueRequestManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/CoatingIssuelRequests/ICoatingIssueRequestManager.cs
index cc47111f5..9354bccb8 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/CoatingIssuelRequests/ICoatingIssueRequestManager.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/CoatingIssuelRequests/ICoatingIssueRequestManager.cs
@@ -1,10 +1,8 @@
using System.Threading.Tasks;
-using Win_in.Sfs.Wms.Store.Domain;
-
-namespace Win_in.Sfs.Wms.Store.Requests.MaterialRequests;
-
using Win_in.Sfs.Shared.Domain;
+namespace Win_in.Sfs.Wms.Store.Domain;
+
public interface ICoatingIssueRequestManager : ISfsStoreRequestManager,
IBulkImportService
{
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/CoatingIssuelRequests/ICoatingIssueRequestRepository.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/CoatingIssuelRequests/ICoatingIssueRequestRepository.cs
index 4fab6934a..c4d746009 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/CoatingIssuelRequests/ICoatingIssueRequestRepository.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/IssueRequests/CoatingIssuelRequests/ICoatingIssueRequestRepository.cs
@@ -1,7 +1,6 @@
using Win_in.Sfs.Shared.Domain;
-using Win_in.Sfs.Wms.Store.Domain;
-namespace Win_in.Sfs.Wms.Store.Requests.MaterialRequests;
+namespace Win_in.Sfs.Wms.Store.Domain;
public interface ICoatingIssueRequestRepository : ISfsStoreRepositoryBase,
ISfsBulkRepositoryBase
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/IStoreDbContext.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/IStoreDbContext.cs
index 7038db0fd..9c47ade9b 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/IStoreDbContext.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/IStoreDbContext.cs
@@ -2,10 +2,6 @@ using Microsoft.EntityFrameworkCore;
using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore;
using Win_in.Sfs.Wms.Store.Domain;
-using Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
-using Win_in.Sfs.Wms.Store.Notes.IssueNotes;
-using Win_in.Sfs.Wms.Store.Requests.MaterialRequests;
-
namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore;
[ConnectionStringName(StoreDbProperties.ConnectionStringName)]
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/CoatingIssueJob/CoatingIssueJobDbContextModelCreatingExtensions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/CoatingIssueJob/CoatingIssueJobDbContextModelCreatingExtensions.cs
index 304324f4f..36a81f0f4 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/CoatingIssueJob/CoatingIssueJobDbContextModelCreatingExtensions.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/CoatingIssueJob/CoatingIssueJobDbContextModelCreatingExtensions.cs
@@ -3,7 +3,6 @@ using Volo.Abp.EntityFrameworkCore.Modeling;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.EntityFrameworkCore;
using Win_in.Sfs.Wms.Store.Domain;
-using Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore;
@@ -22,7 +21,7 @@ public static class CoatingIssueJobDbContextModelCreatingExtensions
//Configure Job base properties
b.ConfigureJob();
//Properties
- b.Property(q => q.MaterialRequestNumber).HasMaxLength(SfsPropertyConst.CodeLength);
+ b.Property(q => q.CoatingRequestNumber).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.JobType).HasConversion();
b.Property(q => q.JobStatus).HasConversion();
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/CoatingIssueJob/CoatingIssueJobEfCoreRepository.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/CoatingIssueJob/CoatingIssueJobEfCoreRepository.cs
index c8239166a..ef96924b9 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/CoatingIssueJob/CoatingIssueJobEfCoreRepository.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/CoatingIssueJob/CoatingIssueJobEfCoreRepository.cs
@@ -1,5 +1,5 @@
using Volo.Abp.EntityFrameworkCore;
-using Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
+using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore;
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDbContextModelCreatingExtensions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDbContextModelCreatingExtensions.cs
index 361a3ed2e..553930608 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDbContextModelCreatingExtensions.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteDbContextModelCreatingExtensions.cs
@@ -2,7 +2,6 @@ using Microsoft.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.Modeling;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Wms.Store.Domain;
-using Win_in.Sfs.Wms.Store.Notes.IssueNotes;
namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore;
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteEfCoreRepository.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteEfCoreRepository.cs
index 52079ada4..6ca2ca978 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteEfCoreRepository.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/IssueNotes/CoatingIssueNotes/CoatingIssueNoteEfCoreRepository.cs
@@ -1,5 +1,5 @@
using Volo.Abp.EntityFrameworkCore;
-using Win_in.Sfs.Wms.Store.Notes.IssueNotes;
+using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore;
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/IssueRequests/CoatingIssueRequests/CoatingIssueRequestDbContextModelCreatingExtensions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/IssueRequests/CoatingIssueRequests/CoatingIssueRequestDbContextModelCreatingExtensions.cs
index b1c7ee6eb..680b691fb 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/IssueRequests/CoatingIssueRequests/CoatingIssueRequestDbContextModelCreatingExtensions.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/IssueRequests/CoatingIssueRequests/CoatingIssueRequestDbContextModelCreatingExtensions.cs
@@ -1,7 +1,7 @@
using Microsoft.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.Modeling;
using Win_in.Sfs.Shared.Domain.Shared;
-using Win_in.Sfs.Wms.Store.Requests.MaterialRequests;
+using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore;
@@ -43,13 +43,16 @@ public static class CoatingIssueRequestDbContextModelCreatingExtensions
b.Property(q => q.ToLocationErpCode).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ToWarehouseCode).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.ToLocationArea).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
- b.Property(q => q.ToLocationGroup).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
- b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength);
+ b.Property(q => q.ToLocationGroup).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
+ b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.IssuedQty).HasPrecision(18, 6);
b.Property(q => q.ReceivedQty).HasPrecision(18, 6);
b.Property(q => q.Status).HasMaxLength(SfsPropertyConst.NameLength).HasConversion();
+ b.Property(q => q.PositionCode).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.RecommendType).HasMaxLength(SfsPropertyConst.NameLength).HasConversion();
+
//Relations
+
//Indexes
b.HasIndex(q => new { q.Number, q.ItemCode, q.ToLocationCode }).IsUnique();
b.HasIndex(q => new { q.ItemCode });
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/IssueRequests/CoatingIssueRequests/CoatingIssueRequestEfCoreRepository.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/IssueRequests/CoatingIssueRequests/CoatingIssueRequestEfCoreRepository.cs
index 333de3a54..b106620a9 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/IssueRequests/CoatingIssueRequests/CoatingIssueRequestEfCoreRepository.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/IssueRequests/CoatingIssueRequests/CoatingIssueRequestEfCoreRepository.cs
@@ -1,5 +1,5 @@
using Volo.Abp.EntityFrameworkCore;
-using Win_in.Sfs.Wms.Store.Requests.MaterialRequests;
+using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore;
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreDbContext.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreDbContext.cs
index 8ef095cd4..4f4d3453b 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreDbContext.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreDbContext.cs
@@ -3,9 +3,6 @@ using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Equipments;
-using Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
-using Win_in.Sfs.Wms.Store.Notes.IssueNotes;
-using Win_in.Sfs.Wms.Store.Requests.MaterialRequests;
namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore;
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreEntityFrameworkCoreModule.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreEntityFrameworkCoreModule.cs
index 600f637f7..5bd2827ce 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreEntityFrameworkCoreModule.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/StoreEntityFrameworkCoreModule.cs
@@ -5,9 +5,6 @@ using Volo.Abp.EntityFrameworkCore.DependencyInjection;
using Volo.Abp.Modularity;
using Win_in.Sfs.Wms.Store.CountAdjustRequests;
using Win_in.Sfs.Wms.Store.Domain;
-using Win_in.Sfs.Wms.Store.Jobs.IssueJobs;
-using Win_in.Sfs.Wms.Store.Notes.IssueNotes;
-using Win_in.Sfs.Wms.Store.Requests.MaterialRequests;
using Win_in.Sfs.Wms.Store.UnplannedIssueRequests;
namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore;
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/CoatingIssueJobAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/CoatingIssueJobAutoMapperProfile.cs
index 47e024d74..7002ac320 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/CoatingIssueJobAutoMapperProfile.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/CoatingIssueJobAutoMapperProfile.cs
@@ -5,8 +5,6 @@ using Win_in.Sfs.Shared.Application;
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.Jobs.IssueJobs;
-using Win_in.Sfs.Wms.Store.Notes.IssueNotes;
namespace Win_in.Sfs.Wms.Store.Event;
@@ -17,7 +15,7 @@ public partial class StoreEventAutoMapperProfile : Profile
CreateMap()
.ForMember(x => x.JobNumber, y => y.MapFrom(d => d.Number))
- .ForMember(x => x.RequestNumber, y => y.MapFrom(d => d.MaterialRequestNumber))
+ .ForMember(x => x.RequestNumber, y => y.MapFrom(d => d.CoatingRequestNumber))
.ForMember(x => x.ActiveDate, y => y.MapFrom(d => DateTime.Now))
.ForMember(x => x.Worker, y => y.MapFrom(d => d.CompleteUserName))
.Ignore(x => x.Confirmed)
@@ -28,12 +26,21 @@ public partial class StoreEventAutoMapperProfile : Profile
;
CreateMap()
- .ForMember(x => x.RequestNumber, y => y.MapFrom(d => d.MaterialRequestNumber))
+ .ForMember(x => x.RequestNumber, y => y.MapFrom(d => d.CoatingRequestNumber))
.Ignore(x => x.Confirmed)
.Ignore(x => x.JobNumber)
.Ignore(x => x.ActiveDate)
;
CreateMap()
;
+
+ CreateMap()
+ .ForMember(x => x.RequestNumber, y => y.MapFrom(d => d.CoatingRequestNumber))
+ .Ignore(x => x.Confirmed)
+ .Ignore(x => x.JobNumber)
+ .Ignore(x => x.ActiveDate)
+ ;
+ CreateMap()
+ ;
}
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Notes/CoatingIssueNoteAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Notes/CoatingIssueNoteAutoMapperProfile.cs
index f8137b8db..93a5cd986 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Notes/CoatingIssueNoteAutoMapperProfile.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Notes/CoatingIssueNoteAutoMapperProfile.cs
@@ -2,7 +2,6 @@ using AutoMapper;
using Volo.Abp.AutoMapper;
using Win_in.Sfs.Wms.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
-using Win_in.Sfs.Wms.Store.Notes.IssueNotes;
namespace Win_in.Sfs.Wms.Store.Event;
@@ -49,5 +48,4 @@ public partial class StoreEventAutoMapperProfile : Profile
;
}
-
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/CoatingMaterialRequestAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/CoatingIssueRequestAutoMapperProfile.cs
similarity index 86%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/CoatingMaterialRequestAutoMapperProfile.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/CoatingIssueRequestAutoMapperProfile.cs
index 52b0a8ab1..b7e23ffd7 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/CoatingMaterialRequestAutoMapperProfile.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/CoatingIssueRequestAutoMapperProfile.cs
@@ -4,8 +4,6 @@ using Win_in.Sfs.Shared.Application;
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.Jobs.IssueJobs;
-using Win_in.Sfs.Wms.Store.Requests.MaterialRequests;
namespace Win_in.Sfs.Wms.Store.Event;
@@ -14,7 +12,7 @@ public partial class StoreEventAutoMapperProfile : Profile
private void CoatingIssueRequestAutoMapperProfile()
{
CreateMap()
- .ForMember(x => x.MaterialRequestNumber, y => y.MapFrom(d => d.Number))
+ .ForMember(x => x.KittingRequestNumber, y => y.MapFrom(d => d.Number))
.Ignore(x => x.WarehouseCode)
.Ignore(x => x.UpStreamJobNumber)
.Ignore(x => x.JobType)
@@ -32,7 +30,7 @@ public partial class StoreEventAutoMapperProfile : Profile
.Ignore(x => x.CompleteUserName)
.Ignore(x => x.CompleteTime)
.Ignore(x => x.Details)
+ .Ignore(x => x.EnumIssueSendType)
;
-
}
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/DataExchanges/AssembleIssueNoteEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/DataExchanges/AssembleIssueNoteEventHandler.cs
index 8b0ef87ed..dc316c85f 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/DataExchanges/AssembleIssueNoteEventHandler.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/DataExchanges/AssembleIssueNoteEventHandler.cs
@@ -7,7 +7,6 @@ using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
-using Win_in.Sfs.Wms.Store.Notes.IssueNotes;
namespace Win_in.Sfs.Wms.Store.Event.DataExchanges;
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/DataExchanges/CoatingIssueNoteEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/DataExchanges/CoatingIssueNoteEventHandler.cs
index d73bea9fb..ad795164a 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/DataExchanges/CoatingIssueNoteEventHandler.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/DataExchanges/CoatingIssueNoteEventHandler.cs
@@ -7,7 +7,6 @@ using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
-using Win_in.Sfs.Wms.Store.Notes.IssueNotes;
namespace Win_in.Sfs.Wms.Store.Event.DataExchanges;
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/DataExchanges/KittingIssueNoteEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/DataExchanges/KittingIssueNoteEventHandler.cs
index d2f44e76f..ca14bc742 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/DataExchanges/KittingIssueNoteEventHandler.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/DataExchanges/KittingIssueNoteEventHandler.cs
@@ -7,7 +7,6 @@ using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
-using Win_in.Sfs.Wms.Store.Notes.IssueNotes;
namespace Win_in.Sfs.Wms.Store.Event.DataExchanges;
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/CoatingIssueJobEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/CoatingIssueJobEventHandler.cs
index 2bc5bb04d..5b39f2f07 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/CoatingIssueJobEventHandler.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/CoatingIssueJobEventHandler.cs
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
+using Castle.Components.DictionaryAdapter;
using Volo.Abp.EventBus;
using Volo.Abp.Uow;
using Win_in.Sfs.Basedata.Application.Contracts;
@@ -9,8 +10,6 @@ using Win_in.Sfs.Shared.Event;
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.Jobs.IssueJobs;
-using Win_in.Sfs.Wms.Store.Notes.IssueNotes;
namespace Win_in.Sfs.Wms.Store.Event.BusinessJob;
@@ -43,9 +42,7 @@ public class CoatingIssueJobEventHandler :
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsCompletedEntityEventData eventData)
{
- var entity = eventData.Entity;
- var coatingIssueNote = await BuildCoatingIssueNoteAsync(entity).ConfigureAwait(false);
- await _coatingIssueNoteAppService.CreateAsync(coatingIssueNote).ConfigureAwait(false);
+ await Task.CompletedTask.ConfigureAwait(false);
}
///
@@ -127,63 +124,70 @@ public class CoatingIssueJobEventHandler :
///
private async Task CreateTransferLibAsync(CoatingIssueJob coatingIssueJob)
{
- if (!await IsMinRowAsync(coatingIssueJob).ConfigureAwait(false))
+ foreach (var detail in coatingIssueJob.Details)
{
- foreach (var detail in coatingIssueJob.Details)
+ var locationDto = await _locationAppService.GetByCodeAsync(detail.RecommendFromLocationCode)
+ .ConfigureAwait(false);
+ if (locationDto.Type == EnumLocationType.RAW)
{
- var input = new TransferLibRequestEditInput();
- input.CallBusinessType = nameof(ICoatingIssueJobAppService);
- input.CallJobNumber = coatingIssueJob.Number;
- input.CallRequestNumber = coatingIssueJob.MaterialRequestNumber;
- input.CallServerName = "Win_in.Sfs.Wms.Store.Application.CoatingIssueJobAppService";
- input.Type = "Transfer_Warehouse";
- input.UseOnTheWayLocation = true;
-
- var detailInput = new TransferLibRequestDetailInput();
- detailInput.CallBusinessType = nameof(ICoatingIssueJobAppService);
- detailInput.CallRequestNumber = coatingIssueJob.MaterialRequestNumber;
- detailInput.CallServerName = "Win_in.Sfs.Wms.Store.Application.CoatingIssueJobAppService";
- detailInput.CallJobNumber = coatingIssueJob.Number;
-
- detailInput.JobStatus = EnumJobStatus.Open;
- detailInput.ItemCode = detail.ItemCode;
- detailInput.StdPackQty = detail.StdPackQty;
- detailInput.Uom = detail.Uom;
- detailInput.Status = detail.Status;
-
- detailInput.RecommendFromQty = detail.RecommendFromQty;
- detailInput.RecommendFromLot = detail.RecommendFromLot;
- detailInput.RecommendFromPackingCode = detailInput.RecommendFromPackingCode;
- detailInput.RecommendToLot = detail.RecommendToLot;
-
- detailInput.RecommendFromArriveDate = detail.RecommendFromArriveDate;
- detailInput.RecommendFromExpireDate = detail.RecommendFromExpireDate;
- detailInput.RecommendFromProduceDate = detail.RecommendFromProduceDate;
- detailInput.RecommendFromSupplierBatch = detail.RecommendFromSupplierBatch;
-
- detailInput.RecommendFromLocationCode = detail.RecommendFromLocationCode;
- detailInput.RecommendFromLocationGroup = detail.RecommendFromLocationGroup;
- detailInput.RecommendFromLocationArea = detail.RecommendFromLocationArea;
- detailInput.RecommendFromLocationErpCode = detail.RecommendFromLocationErpCode;
- detailInput.RecommendFromWarehouseCode = detail.RecommendFromWarehouseCode;
-
- detailInput.RecommendToQty = detail.RecommendToQty;
- detailInput.RecommendToLot = detail.RecommendToLot;
- detailInput.RecommendToPackingCode = detailInput.RecommendToPackingCode;
- detailInput.RecommendToLot = detail.RecommendToLot;
-
- detailInput.RecommendToArriveDate = detail.RecommendToArriveDate;
- detailInput.RecommendToExpireDate = detail.RecommendToExpireDate;
- detailInput.RecommendToProduceDate = detail.RecommendToProduceDate;
- detailInput.RecommendToSupplierBatch = detail.RecommendToSupplierBatch;
-
- detailInput.RecommendToLocationCode = detail.RecommendToLocationCode;
- detailInput.RecommendToLocationGroup = detail.RecommendToLocationGroup;
- detailInput.RecommendToLocationArea = detail.RecommendToLocationArea;
- detailInput.RecommendToLocationErpCode = detail.RecommendToLocationErpCode;
- detailInput.RecommendToWarehouseCode = detail.RecommendToWarehouseCode;
-
- await _transferLibRequestAppService.CreateAsync(input).ConfigureAwait(false);
+ if (!await IsMinRowAsync(coatingIssueJob).ConfigureAwait(false))
+ {
+ var input = new TransferLibRequestEditInput();
+ input.CallBusinessType = nameof(ICoatingIssueJobAppService);
+ input.CallJobNumber = coatingIssueJob.Number;
+ input.CallRequestNumber = coatingIssueJob.CoatingRequestNumber;
+ input.CallServerName = "Win_in.Sfs.Wms.Store.Application.CoatingIssueJobAppService";
+ input.Type = "Transfer_Warehouse";
+ input.UseOnTheWayLocation = true;
+
+ var detailInput = new TransferLibRequestDetailInput();
+ detailInput.CallBusinessType = nameof(ICoatingIssueJobAppService);
+ detailInput.CallRequestNumber = coatingIssueJob.CoatingRequestNumber;
+ detailInput.CallServerName = "Win_in.Sfs.Wms.Store.Application.CoatingIssueJobAppService";
+ detailInput.CallJobNumber = coatingIssueJob.Number;
+
+ detailInput.JobStatus = EnumJobStatus.Open;
+ detailInput.ItemCode = detail.ItemCode;
+ detailInput.StdPackQty = detail.StdPackQty;
+ detailInput.Uom = detail.Uom;
+ detailInput.Status = detail.Status;
+
+ detailInput.RecommendFromQty = detail.RecommendFromQty;
+ detailInput.RecommendFromLot = detail.RecommendFromLot;
+ detailInput.RecommendFromPackingCode = detailInput.RecommendFromPackingCode;
+ detailInput.RecommendToLot = detail.RecommendToLot;
+
+ detailInput.RecommendFromArriveDate = detail.RecommendFromArriveDate;
+ detailInput.RecommendFromExpireDate = detail.RecommendFromExpireDate;
+ detailInput.RecommendFromProduceDate = detail.RecommendFromProduceDate;
+ detailInput.RecommendFromSupplierBatch = detail.RecommendFromSupplierBatch;
+
+ detailInput.RecommendFromLocationCode = detail.RecommendFromLocationCode;
+ detailInput.RecommendFromLocationGroup = detail.RecommendFromLocationGroup;
+ detailInput.RecommendFromLocationArea = detail.RecommendFromLocationArea;
+ detailInput.RecommendFromLocationErpCode = detail.RecommendFromLocationErpCode;
+ detailInput.RecommendFromWarehouseCode = detail.RecommendFromWarehouseCode;
+
+ detailInput.RecommendToQty = detail.RecommendToQty;
+ detailInput.RecommendToLot = detail.RecommendToLot;
+ detailInput.RecommendToPackingCode = detailInput.RecommendToPackingCode;
+ detailInput.RecommendToLot = detail.RecommendToLot;
+
+ detailInput.RecommendToArriveDate = detail.RecommendToArriveDate;
+ detailInput.RecommendToExpireDate = detail.RecommendToExpireDate;
+ detailInput.RecommendToProduceDate = detail.RecommendToProduceDate;
+ detailInput.RecommendToSupplierBatch = detail.RecommendToSupplierBatch;
+
+ detailInput.RecommendToLocationCode = detail.RecommendToLocationCode;
+ detailInput.RecommendToLocationGroup = detail.RecommendToLocationGroup;
+ detailInput.RecommendToLocationArea = detail.RecommendToLocationArea;
+ detailInput.RecommendToLocationErpCode = detail.RecommendToLocationErpCode;
+ detailInput.RecommendToWarehouseCode = detail.RecommendToWarehouseCode;
+
+ input.Details = new EditableList() { detailInput };
+
+ await _transferLibRequestAppService.CreateAsync(input).ConfigureAwait(false);
+ }
}
}
}
@@ -212,9 +216,9 @@ public class CoatingIssueJobEventHandler :
{
var detail = coatingIssueJob.Details.FirstOrDefault();
- var loctionDto = await _locationAppService.GetByCodeAsync(detail.RecommendFromLocationCode)
+ var locationDto = await _locationAppService.GetByCodeAsync(detail.RecommendFromLocationCode)
.ConfigureAwait(false);
- if (loctionDto.RowCode == 1)
+ if (locationDto.Type == EnumLocationType.RAW && locationDto.RowCode == 1)
{
return true;
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/CoatingIssueJobEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/CoatingIssueJobEventHandler.cs
deleted file mode 100644
index e69de29bb..000000000
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/CoatingIssueRequestEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/CoatingIssueRequestEventHandler.cs
index 120155d66..8bd491fae 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/CoatingIssueRequestEventHandler.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/CoatingIssueRequestEventHandler.cs
@@ -1,21 +1,20 @@
using System.Collections.Generic;
using System.Linq;
-using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
+using AutoMapper;
using Castle.Components.DictionaryAdapter;
using Volo.Abp;
+using Volo.Abp.AutoMapper;
using Volo.Abp.EventBus;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Inventory.Application.Contracts;
+using Win_in.Sfs.Wms.Inventory.Domain;
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.Jobs.IssueJobs;
-using Win_in.Sfs.Wms.Store.Requests.MaterialRequests;
namespace Win_in.Sfs.Wms.Store.Event.BusinessRequest;
@@ -32,17 +31,22 @@ public class CoatingIssueRequestEventHandler
private readonly IProductionLineItemAppService _productionLineItemAppService;
private readonly ILocationAppService _locationAppService;
private readonly IBalanceAppService _balanceAppService;
+ private IMapper _mapper;
+ //private readonly ICoatingIssueRequestManager _coatingIssueRequestManager;
public CoatingIssueRequestEventHandler(
ICoatingIssueJobAppService coatingIssueJobAppService, IProductionLineAppService productionLineAppService,
ILocationAppService locationAppService,
- IBalanceAppService balanceAppService, IProductionLineItemAppService productionLineItemAppService)
+ IBalanceAppService balanceAppService, IProductionLineItemAppService productionLineItemAppService
+ //, ICoatingIssueRequestManager coatingIssueRequestManager
+ )
{
_coatingIssueJobAppService = coatingIssueJobAppService;
_productionLineAppService = productionLineAppService;
_locationAppService = locationAppService;
_balanceAppService = balanceAppService;
_productionLineItemAppService = productionLineItemAppService;
+ //_coatingIssueRequestManager = coatingIssueRequestManager;
}
///
@@ -51,7 +55,9 @@ public class CoatingIssueRequestEventHandler
/// Event data
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData eventData)
{
- await Task.CompletedTask.ConfigureAwait(false);
+ var entity = eventData.Entity;
+
+ await CreateAllCoatingIssueJobAsync(entity).ConfigureAwait(false);
}
///
@@ -60,6 +66,8 @@ public class CoatingIssueRequestEventHandler
/// Event data
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData> eventData)
{
+ var entity = eventData.Entity;
+
await Task.CompletedTask.ConfigureAwait(false);
}
@@ -72,22 +80,7 @@ public class CoatingIssueRequestEventHandler
{
var entity = eventData.Entity;
- List coatingIssueJobs = new EditableList();
-
- //switch (entity.Type)
- //{
- // case nameof(EnumIssueType.BoxQty):
- // coatingIssueJobs = await CreateCoatingIssueJobWithBoxQtyTypeAsync(entity).ConfigureAwait(false);
- // break;
- // case nameof(EnumIssueType.Qty):
- // coatingIssueJobs = await CreateCoatingIssueJobWithQtyTypeAsync(entity).ConfigureAwait(false);
- // break;
- //}
-
- if (coatingIssueJobs.Any())
- {
- await _coatingIssueJobAppService.CreateManyAsync(coatingIssueJobs).ConfigureAwait(false);
- }
+ await CreateAllCoatingIssueJobAsync(entity).ConfigureAwait(false);
}
///
@@ -118,194 +111,135 @@ public class CoatingIssueRequestEventHandler
#region 按数量叫料
///
- /// 创建注塑任务
+ /// 创建注塑任务-按数量
///
- ///
+ ///
+ ///
+ ///
+ ///
///
///
private async Task> CreateCoatingIssueJobWithQtyTypeAsync
- (CoatingIssueRequest coatingMaterialRequest)
+ (CoatingIssueRequest coatingIssueRequest, List coatingIssueRequestDetails,
+ List recommendbalanceDtos,
+ List useBalanceList)
{
var jobs = new List();
+ //用来临时存放所有未生成任务的发料集合 如果生成完了再这里去掉
+ var tempDetailDtos =
+ ObjectMapper.Map, List>(
+ coatingIssueRequestDetails);
- var toLocationCodes = coatingMaterialRequest.Details.Select(p => p.ToLocationCode).Distinct().ToList(); //所有发送库位的集合
- var toLocations = await _locationAppService.GetByCodesAsync(toLocationCodes).ConfigureAwait(false); //所有库位的集合
+ var coatingIssueJobDetailInputs = new List();
- var coatingMaterialRequestDetails = coatingMaterialRequest.Details.Where(p => p.ToBeIssuedQty > 0); //所有还没发送物品的集合
- foreach (var coatingMaterialRequestDetail in coatingMaterialRequestDetails) //如果有还有剩余未叫料的数量 则创建新的任务
+ if (recommendbalanceDtos != null && recommendbalanceDtos.Count > 0)
{
- var toLocation =
- toLocations.FirstOrDefault(p => p.Code == coatingMaterialRequestDetail.ToLocationCode); //判断目标库位是否存在
- Check.NotNull(toLocation, "库位代码", $"库位 {coatingMaterialRequestDetail.ToLocationCode} 不存在");
-
- //创建详情
- var jobDetails =
- await CreateCoatingIssueJobDetailInputsWithQtyTypeAsync(coatingMaterialRequest, coatingMaterialRequestDetail,
- toLocation.LocationGroupCode).ConfigureAwait(false);
- if (!jobDetails.Any())
+ var queue = new Queue(recommendbalanceDtos);
+ while (queue.TryDequeue(out var balanceDto))
{
- continue;
- }
+ var next = false;
- var fromLocationCode = jobDetails[0].RecommendFromLocationCode;
- var fromLocation = await _locationAppService.GetByCodeAsync(fromLocationCode).ConfigureAwait(false);
- var job = jobs.FirstOrDefault(p => p.WorkGroupCode == fromLocation?.WorkGroupCode);
- if (job == null || job.Details.Any(p => p.RecommendToLocationCode != coatingMaterialRequestDetail.ToLocationCode))
- {
- job = await BuildCoatingIssueJobCreateInputWithQtyTypeAsync(coatingMaterialRequest, fromLocation)
- .ConfigureAwait(false);
- jobs.Add(job);
- }
+ var temp = tempDetailDtos.ToList();
- job.Details.AddRange(jobDetails);
- if (coatingMaterialRequestDetail.ToBeIssuedQty < 0)
- {
- coatingMaterialRequestDetail.Status = EnumStatus.Close;
- }
- }
-
- jobs = jobs.Where(p => p.Details.Any()).ToList();
+ foreach (var tempDetailDto in tempDetailDtos)
+ {
+ //未发送的数量
+ tempDetailDto.Qty = tempDetailDto.Qty - tempDetailDto.IssuedQty;
+
+ if (tempDetailDto.Qty > balanceDto.Qty) //需求量大于 这条推荐库存的余额
+ {
+ tempDetailDto.Qty -= balanceDto.Qty;
+ }
+ else if (tempDetailDto.Qty <= balanceDto.Qty)
+ {
+ temp.Remove(tempDetailDto);
+ balanceDto.Qty = tempDetailDto.Qty;
+ }
+
+ coatingIssueJobDetailInputs.Add(
+ await BuildCoatingIssueJobDetailWithQtyTypeAsync(tempDetailDto, balanceDto)
+ .ConfigureAwait(false));
+ useBalanceList.Add(balanceDto);
+
+ if (balanceDto.Qty <= 0)
+ {
+ next = true;
+ break;
+ }
+ }
- var openRequestDetails =
- coatingMaterialRequest.Details.Where(p => p.Status != EnumStatus.Close).ToList();
+ tempDetailDtos = temp;
- if (!openRequestDetails.Any())
- {
- return jobs;
+ if (next)
+ {
+ }
+ }
}
-
- var enableMultipleCreateCoatingIssueJob = await SettingManager
- .IsTrueAsync(StoreSettings.MaterialRequest.EnableMultipleCreateIssueJob).ConfigureAwait(false);
- if (enableMultipleCreateCoatingIssueJob)
+ if (coatingIssueJobDetailInputs.Any())
{
- //coatingMaterialRequest.Partial();
- }
- else
- {
- var sb = new StringBuilder();
- foreach (var openRequestDetail in openRequestDetails)
- {
- sb.AppendLine(
- $"{openRequestDetail.ItemCode}请求数量 {openRequestDetail.Qty},可用库存数量 {openRequestDetail.IssuedQty}");
- }
-
- throw new UserFriendlyException($"{sb} 可用库存数量不足, 无法生成发料任务");
+ var coatingIssueJobEditInput = new CoatingIssueJobEditInput();
+ coatingIssueJobEditInput = await BuildCoatingIssueJobCreateInputWithQtyTypeAsync(coatingIssueRequest,
+ coatingIssueRequestDetails.First()).ConfigureAwait(false);
+ coatingIssueJobEditInput.Details = coatingIssueJobDetailInputs;
+ jobs.Add(coatingIssueJobEditInput);
}
return jobs;
}
///
- /// 构造注塑任务
+ /// 构造注塑任务-按数量
///
- ///
- ///
+ ///
+ ///
///
private async Task BuildCoatingIssueJobCreateInputWithQtyTypeAsync(
- CoatingIssueRequest coatingMaterialRequest,
- LocationDTO fromLocation)
+ CoatingIssueRequest coatingIssueRequest, CoatingIssueRequestDetail requestDetailInput)
{
- CoatingIssueJobEditInput job;
- job = ObjectMapper.Map(coatingMaterialRequest);
+ var job = ObjectMapper.Map(coatingIssueRequest);
job.JobType = EnumJobType.IssueJob;
job.JobStatus = EnumJobStatus.Open;
- job.WorkGroupCode = fromLocation.WorkGroupCode;
- job.WarehouseCode = fromLocation.WarehouseCode;
- job.Worker = coatingMaterialRequest.Worker;
- if (string.IsNullOrEmpty(job.Worker))
- {
- job.Worker = "admin";
- }
-
- job.MaterialRequestNumber = coatingMaterialRequest.Number;
+ job.WorkGroupCode = requestDetailInput.ToLocationGroup;
+ job.WarehouseCode = requestDetailInput.ToWarehouseCode;
+ job.Worker = coatingIssueRequest.Worker;
+ job.KittingRequestNumber = coatingIssueRequest.Number;
+ job.EnumIssueSendType = EnumIssueSendType.QtyType;
await Task.CompletedTask.ConfigureAwait(false);
return job;
}
- ///
- /// 创建注塑任务明细
- ///
- ///
- ///
- ///
- ///
- ///
- private async Task> CreateCoatingIssueJobDetailInputsWithQtyTypeAsync(
- CoatingIssueRequest coatingMaterialRequest,
- CoatingIssueRequestDetail coatingMaterialRequestDetail, string toLocationGroupCode)
- {
- var jobDetails = new List();
-
- //获取推荐库存
- var productionLineDto = await _productionLineAppService
- .GetByLocationCodeAsync(coatingMaterialRequestDetail.ToLocationCode).ConfigureAwait(false);
- var productionLineItemDtos = await _productionLineItemAppService
- .GetByProductLineCodeAsync(productionLineDto.Code).ConfigureAwait(false);
- if (productionLineItemDtos == null)
- {
- throw new UserFriendlyException($"物品代码【{coatingMaterialRequestDetail.ItemCode}】没有对应的【生产线物品关系】");
- }
-
- var productionLineItemDto =
- productionLineItemDtos.FirstOrDefault(p => p.ItemCode == coatingMaterialRequestDetail.ItemCode);
- var input = new RecommendBalanceRequestInput
- {
- ItemCode = coatingMaterialRequestDetail.ItemCode,
- Qty = coatingMaterialRequestDetail.ToBeIssuedQty,
- //LocationTypes = transactionType.OutLocationTypes, productionLineItemDto.RawLocationCodeListJson
- Statuses = new EditableList { EnumInventoryStatus.OK },
- Locations = JsonSerializer.Deserialize>(productionLineItemDto.RawLocationCodeListJson)
- };
-
- var recommendList = await _balanceAppService.GetRecommendBalancesByLocationsAsync(input).ConfigureAwait(false);
- //没有推荐库存时 跳过此明细 不生成任务
- if (recommendList.Count != 0)
- {
- foreach (var recommend in recommendList)
- {
- //拿走需求量
- var detail =
- await BuildCoatingIssueJobDetailWithQtyTypeAsync(coatingMaterialRequestDetail, recommend,
- toLocationGroupCode)
- .ConfigureAwait(false);
- if (coatingMaterialRequest.UseOnTheWayLocation)
- {
- //获取在途库
- var locationDto = await _locationAppService.GetFirstByTypeAsync(EnumLocationType.TRANSPORT)
- .ConfigureAwait(false);
-
- detail.OnTheWayLocationCode = locationDto.Code;
- }
-
- jobDetails.Add(detail);
- coatingMaterialRequestDetail.IssuedQty += recommend.Qty;
-
- //await _coatingMaterialRequestManager.UpdateDetailsAsync(coatingMaterialRequest).ConfigureAwait(false);
- }
- }
-
- return jobDetails;
- }
///
- /// 构造注塑任务明细
+ /// 构造注塑任务明细-按数量
///
- ///
+ ///
///
- ///
///
private async Task BuildCoatingIssueJobDetailWithQtyTypeAsync(
- CoatingIssueRequestDetail coatingMaterialRequestDetail, BalanceDTO balance, string toLocationGroupCode)
+ CoatingIssueRequestDetailDTO coatingIssueRequestDetail, BalanceDTO balance)
{
- //ProductionLineDTO prodLine = await _productionLineAppService.GetByLocationGroupCodeAsync(toLocationGroupCode).ConfigureAwait(false);
-
- var detail = ObjectMapper.Map(balance);
- detail.RequestLocationCode = coatingMaterialRequestDetail.ToLocationCode;
- detail.PositionCode = coatingMaterialRequestDetail.PositionCode;
- detail.RecommendType = coatingMaterialRequestDetail.RecommendType;
+ var detail = new CoatingIssueJobDetailInput();
+ detail.RequestLocationCode = coatingIssueRequestDetail.ToLocationCode;
+ detail.PositionCode = coatingIssueRequestDetail.PositionCode;
+ detail.RecommendType = coatingIssueRequestDetail.RecommendType;
+ detail.Uom = balance.Uom;
+ detail.ItemCode = balance.ItemCode;
+ detail.ItemDesc2 = balance.ItemDesc2;
+ detail.ItemDesc1 = balance.ItemDesc1;
+ detail.ItemName = balance.ItemName;
+ detail.ProdLine = coatingIssueRequestDetail.ProdLine;
+ detail.RequestQty = balance.Qty;
+ detail.StdPackQty = coatingIssueRequestDetail.StdPackQty;
+ detail.Status = balance.Status;
+
+ detail.RequestLocationErpCode = coatingIssueRequestDetail.ToLocationErpCode;
+ detail.RequestLocationArea = coatingIssueRequestDetail.ToLocationArea;
+ detail.RequestWarehouseCode = coatingIssueRequestDetail.ToWarehouseCode;
+ detail.RequestLocationGroup = coatingIssueRequestDetail.ToLocationGroup;
+ detail.RequestLocationCode = coatingIssueRequestDetail.ToLocationCode;
detail.RecommendFromPackingCode = balance.PackingCode;
detail.RecommendFromContainerCode = balance.ContainerCode;
@@ -315,21 +249,69 @@ public class CoatingIssueRequestEventHandler
detail.RecommendFromLot = balance.Lot;
detail.RecommendFromProduceDate = balance.ProduceDate;
detail.RecommendFromArriveDate = balance.ArriveDate;
+ detail.RecommendFromQty = balance.Qty;
+ detail.RecommendFromContainerCode = balance.ContainerCode;
+ detail.RecommendFromPackingCode = balance.PackingCode;
+
+ detail.RecommendToPackingCode = balance.PackingCode;
+ detail.RecommendToContainerCode = balance.ContainerCode;
+ detail.RecommendToSupplierBatch = balance.SupplierBatch;
+ detail.RecommendToProduceDate = balance.ProduceDate;
+ detail.RecommendToExpireDate = balance.ExpireDate;
+ detail.RecommendToLot = balance.Lot;
+ detail.RecommendToProduceDate = balance.ProduceDate;
+ detail.RecommendToArriveDate = balance.ArriveDate;
+ detail.RecommendToQty = balance.Qty;
+ detail.RecommendToContainerCode = balance.ContainerCode;
+ detail.RecommendToPackingCode = balance.PackingCode;
+
detail.RecommendFromLocationArea = balance.LocationArea;
detail.RecommendFromLocationCode = balance.LocationCode;
detail.RecommendFromLocationErpCode = balance.LocationErpCode;
detail.RecommendFromLocationGroup = balance.LocationGroup;
detail.RecommendFromWarehouseCode = balance.WarehouseCode;
- detail.RecommendFromQty = balance.Qty;
- detail.Uom = balance.Uom;
- detail.RecommendToLocationCode = coatingMaterialRequestDetail.ToLocationCode;
- detail.RecommendToLocationErpCode = coatingMaterialRequestDetail.ToLocationErpCode;
- detail.RecommendToLocationArea = coatingMaterialRequestDetail.ToLocationArea;
- detail.RecommendToWarehouseCode = coatingMaterialRequestDetail.ToWarehouseCode;
+ detail.RecommendToLocationCode = coatingIssueRequestDetail.ToLocationCode;
+ detail.RecommendToLocationErpCode = coatingIssueRequestDetail.ToLocationErpCode;
+ detail.RecommendToLocationArea = coatingIssueRequestDetail.ToLocationArea;
+ detail.RecommendToWarehouseCode = coatingIssueRequestDetail.ToWarehouseCode;
+ detail.RecommendToLocationGroup = coatingIssueRequestDetail.ToLocationGroup;
+
+ detail.TransferLibFromPackingCode = balance.PackingCode;
+ detail.TransferLibFromContainerCode = balance.ContainerCode;
+ detail.TransferLibFromSupplierBatch = balance.SupplierBatch;
+ detail.TransferLibFromProduceDate = balance.ProduceDate;
+ detail.TransferLibFromExpireDate = balance.ExpireDate;
+ detail.TransferLibFromLot = balance.Lot;
+ detail.TransferLibFromProduceDate = balance.ProduceDate;
+ detail.TransferLibFromArriveDate = balance.ArriveDate;
+ detail.TransferLibFromQty = balance.Qty;
+ detail.TransferLibFromContainerCode = balance.ContainerCode;
+ detail.TransferLibFromPackingCode = balance.PackingCode;
+
+ detail.TransferLibToPackingCode = balance.PackingCode;
+ detail.TransferLibToContainerCode = balance.ContainerCode;
+ detail.TransferLibToSupplierBatch = balance.SupplierBatch;
+ detail.TransferLibToProduceDate = balance.ProduceDate;
+ detail.TransferLibToExpireDate = balance.ExpireDate;
+ detail.TransferLibToLot = balance.Lot;
+ detail.TransferLibToProduceDate = balance.ProduceDate;
+ detail.TransferLibToArriveDate = balance.ArriveDate;
+ detail.TransferLibToQty = balance.Qty;
+ detail.TransferLibToPackingCode = balance.PackingCode;
+
+ detail.TransferLibFromLocationArea = balance.LocationArea;
+ detail.TransferLibFromLocationCode = balance.LocationCode;
+ detail.TransferLibFromLocationErpCode = balance.LocationErpCode;
+ detail.TransferLibFromLocationGroup = balance.LocationGroup;
+ detail.TransferLibFromWarehouseCode = balance.WarehouseCode;
+
+ detail.TransferLibToLocationCode = coatingIssueRequestDetail.ToLocationCode;
+ detail.TransferLibToLocationErpCode = coatingIssueRequestDetail.ToLocationErpCode;
+ detail.TransferLibToLocationArea = coatingIssueRequestDetail.ToLocationArea;
+ detail.TransferLibToWarehouseCode = coatingIssueRequestDetail.ToWarehouseCode;
+ detail.TransferLibToLocationGroup = coatingIssueRequestDetail.ToLocationGroup;
- //detail.ProdLine = prodLine == null ? toLocationGroupCode : prodLine.Code;
- detail.ProdLine = toLocationGroupCode;
await Task.CompletedTask.ConfigureAwait(false);
return detail;
}
@@ -339,72 +321,71 @@ public class CoatingIssueRequestEventHandler
#region 按箱叫料
///
- /// 创建注塑任务
+ /// 创建注塑任务 按箱叫料-按箱
///
- ///
+ ///
+ ///
+ ///
+ ///
///
///
private async Task> CreateCoatingIssueJobWithBoxQtyTypeAsync
- (CoatingIssueRequest coatingMaterialRequest)
+ (
+ CoatingIssueRequest coatingIssueRequest,
+ List coatingIssueRequestDetailList,
+ List recommendbalanceDtos,
+ List useBalanceList)
{
var inputJobs = new List();
- var inputExpectOutEditInput = new ExpectOutEditInput();
- //已用的库存的箱码集合
- var useBalanceList = new List();
- var groupByItemCodeAndLocationCode =
- coatingMaterialRequest.Details.GroupBy(p => new { p.ItemCode, p.ToLocationCode });
+ //已用的库存的集合
+ useBalanceList = useBalanceList;
- foreach (var locationCodeItemCodeGroup in groupByItemCodeAndLocationCode)
+ foreach (var detail in coatingIssueRequestDetailList)
{
- var inputDetails = coatingMaterialRequest.Details.Where(p =>
- p.ItemCode == locationCodeItemCodeGroup.Key.ItemCode &&
- p.ToLocationCode == locationCodeItemCodeGroup.Key.ToLocationCode);
- var inputDetailTemplate = inputDetails.First();
+ //当前零件的集合
+ var inputDetails = coatingIssueRequestDetailList;
//获取请求下 这个零件和这个库位一个需要多少箱
- var sumBoxQty = inputDetails.Sum(p => p.BoxQty);
+ var sumBoxQty = inputDetails.Sum(p => p.BoxQty - p.IssuedQty);
//获取生产线
var productionLineDto = await _productionLineAppService
.GetByLocationCodeAsync(inputDetails.First().ToLocationCode).ConfigureAwait(false);
- if (productionLineDto == null)
- {
- throw new UserFriendlyException($"库位【{inputDetailTemplate.ToLocationCode}】没有对应的【生产线】");
- }
+
var productLineCodeAndItemCode = await _productionLineItemAppService
- .GetByProductLineCodeAndItemCodeAsync(productionLineDto.Code, inputDetailTemplate.ItemCode)
+ .GetByProductLineCodeAndItemCodeAsync(productionLineDto.Code, detail.ItemCode)
.ConfigureAwait(false);
if (productLineCodeAndItemCode == null)
{
throw new UserFriendlyException(
- $"物品代码【{inputDetailTemplate.ItemCode}】在生产线【{productionLineDto.Code}】中没有对应的【生产线物品关系】");
+ $"物品代码【{detail.ItemCode}】在生产线【{productionLineDto.Code}】中没有对应的【生产线物品关系】");
}
- //获取可用库存
- var input = new RecommendBalanceRequestInput
- {
- ItemCode = locationCodeItemCodeGroup.Key.ItemCode,
- Qty = decimal.MaxValue,
- Statuses = new EditableList { EnumInventoryStatus.OK },
- Locations = JsonSerializer.Deserialize>(productLineCodeAndItemCode
- .RawLocationCodeListJson)
- };
- var usableList = await _balanceAppService.GetUsableListAsync(input).ConfigureAwait(false);
- usableList = usableList.Where(p => !useBalanceList.Contains(p.PackingCode)).ToList();
+ //可用库存
+ var usableList = recommendbalanceDtos;
+ usableList = usableList.Where(p => !useBalanceList.Select(p => p.PackingCode).Contains(p.PackingCode))
+ .ToList();
if (usableList.Any())
{
for (var i = 0; i < sumBoxQty; i++)
{
- var firstUsable = usableList.First();
- useBalanceList.Add(firstUsable.PackingCode);
- usableList.Remove(firstUsable);
-
- var coatingIssueJobEditInput =
- await BuildCoatingIssueJobCreateInputWithBoxQtyTypeAsync(coatingMaterialRequest, inputDetailTemplate,
- firstUsable)
- .ConfigureAwait(false);
-
- inputJobs.Add(coatingIssueJobEditInput);
+ if (usableList.Any())
+ {
+ var firstUsable = usableList.First();
+ useBalanceList.Add((BalanceDTO)firstUsable);
+ usableList.Remove(firstUsable);
+
+ var coatingIssueJobEditInput =
+ await BuildCoatingIssueJobCreateInputWithBoxQtyTypeAsync(coatingIssueRequest,
+ detail, firstUsable)
+ .ConfigureAwait(false);
+
+ inputJobs.Add(coatingIssueJobEditInput);
+ }
+ else
+ {
+ break;
+ }
}
}
}
@@ -413,25 +394,26 @@ public class CoatingIssueRequestEventHandler
}
///
- /// 构造注塑任务
+ /// 构造注塑任务-按箱
///
- ///
- ///
+ ///
+ ///
///
///
private async Task BuildCoatingIssueJobCreateInputWithBoxQtyTypeAsync(
- CoatingIssueRequest coatingMaterialRequest,
- CoatingIssueRequestDetail coatingMaterialRequestDetail, BalanceDTO balanceDtos)
+ CoatingIssueRequest coatingIssueRequest,
+ CoatingIssueRequestDetail coatingIssueRequestDetail, BalanceDTO balanceDtos)
{
- var job = ObjectMapper.Map(coatingMaterialRequest);
+ var job = ObjectMapper.Map(coatingIssueRequest);
job.JobType = EnumJobType.IssueJob;
job.JobStatus = EnumJobStatus.Open;
- job.WorkGroupCode = coatingMaterialRequestDetail.ToLocationGroup;
- job.WarehouseCode = coatingMaterialRequestDetail.ToWarehouseCode;
- job.Worker = coatingMaterialRequest.Worker;
- job.MaterialRequestNumber = coatingMaterialRequest.Number;
+ job.WorkGroupCode = coatingIssueRequestDetail.ToLocationGroup;
+ job.WarehouseCode = coatingIssueRequestDetail.ToWarehouseCode;
+ job.Worker = coatingIssueRequest.Worker;
+ job.KittingRequestNumber = coatingIssueRequest.Number;
+ job.EnumIssueSendType = EnumIssueSendType.BoxQtyType;
- job.Details.Add(await BuildCoatingIssueJobDetailWithBoxQtyTypeAsync(coatingMaterialRequestDetail, balanceDtos)
+ job.Details.Add(await BuildCoatingIssueJobDetailWithBoxQtyTypeAsync(coatingIssueRequestDetail, balanceDtos)
.ConfigureAwait(false));
await Task.CompletedTask.ConfigureAwait(false);
@@ -440,30 +422,31 @@ public class CoatingIssueRequestEventHandler
}
///
- /// 构造注塑任务明细
+ /// 构造注塑任务明细-按箱
///
- ///
+ ///
///
///
///
private async Task BuildCoatingIssueJobDetailWithBoxQtyTypeAsync(
- CoatingIssueRequestDetail coatingMaterialRequestDetail, BalanceDTO balance)
+ CoatingIssueRequestDetail coatingIssueRequestDetail, BalanceDTO balance)
{
var detail = new CoatingIssueJobDetailInput();
- detail.RequestLocationCode = coatingMaterialRequestDetail.ToLocationCode;
- detail.RequestLocationGroup = coatingMaterialRequestDetail.ToLocationGroup;
- detail.RequestLocationArea = coatingMaterialRequestDetail.ToLocationArea;
- detail.RequestLocationErpCode = coatingMaterialRequestDetail.ToLocationErpCode;
- detail.RequestWarehouseCode = coatingMaterialRequestDetail.ToWarehouseCode;
-
- detail.PositionCode = coatingMaterialRequestDetail.PositionCode;
- detail.RecommendType = coatingMaterialRequestDetail.RecommendType;
- detail.ProdLine = coatingMaterialRequestDetail.ToLocationCode;
-
- detail.ItemCode = coatingMaterialRequestDetail.ItemCode;
- detail.ItemName = coatingMaterialRequestDetail.ItemName;
- detail.ItemDesc1 = coatingMaterialRequestDetail.ItemDesc1;
- detail.ItemDesc2 = coatingMaterialRequestDetail.ItemDesc2;
+ detail.RequestLocationCode = coatingIssueRequestDetail.ToLocationCode;
+ detail.RequestLocationGroup = coatingIssueRequestDetail.ToLocationGroup;
+ detail.RequestLocationArea = coatingIssueRequestDetail.ToLocationArea;
+ detail.RequestLocationErpCode = coatingIssueRequestDetail.ToLocationErpCode;
+ detail.RequestWarehouseCode = coatingIssueRequestDetail.ToWarehouseCode;
+ detail.RequestQty = 1;
+
+ detail.PositionCode = coatingIssueRequestDetail.PositionCode;
+ detail.RecommendType = coatingIssueRequestDetail.RecommendType;
+ detail.ProdLine = coatingIssueRequestDetail.ToLocationCode;
+
+ detail.ItemCode = coatingIssueRequestDetail.ItemCode;
+ detail.ItemName = coatingIssueRequestDetail.ItemName;
+ detail.ItemDesc1 = coatingIssueRequestDetail.ItemDesc1;
+ detail.ItemDesc2 = coatingIssueRequestDetail.ItemDesc2;
detail.Status = EnumInventoryStatus.OK;
detail.Uom = balance.Uom;
@@ -498,11 +481,11 @@ public class CoatingIssueRequestEventHandler
detail.RecommendToProduceDate = balance.ProduceDate;
detail.RecommendToArriveDate = balance.ArriveDate;
- detail.RecommendToLocationCode = coatingMaterialRequestDetail.ToLocationCode;
- detail.RecommendToLocationErpCode = coatingMaterialRequestDetail.ToLocationErpCode;
- detail.RecommendToLocationArea = coatingMaterialRequestDetail.ToLocationArea;
- detail.RecommendToWarehouseCode = coatingMaterialRequestDetail.ToWarehouseCode;
- detail.RecommendToLocationGroup = coatingMaterialRequestDetail.ToLocationGroup;
+ detail.RecommendToLocationCode = coatingIssueRequestDetail.ToLocationCode;
+ detail.RecommendToLocationErpCode = coatingIssueRequestDetail.ToLocationErpCode;
+ detail.RecommendToLocationArea = coatingIssueRequestDetail.ToLocationArea;
+ detail.RecommendToWarehouseCode = coatingIssueRequestDetail.ToWarehouseCode;
+ detail.RecommendToLocationGroup = coatingIssueRequestDetail.ToLocationGroup;
await Task.CompletedTask.ConfigureAwait(false);
return detail;
@@ -511,4 +494,210 @@ public class CoatingIssueRequestEventHandler
#endregion
#endregion
+
+ //创建任务
+ private async Task> CreateAllCoatingIssueJobAsync(
+ CoatingIssueRequest coatingIssueRequest)
+ {
+ var coatingIssueJobEditInputs = new List();
+
+ //已用的库存的集合
+ var useBalanceList = new List();
+
+ foreach (var groupbyItemCodeAndProdLine in coatingIssueRequest.Details.GroupBy(p =>
+ new { p.ItemCode }))
+ {
+ foreach (var coatingIssueRequestDetail in groupbyItemCodeAndProdLine)
+ {
+ var productionLineItemDto = await _productionLineItemAppService.GetByProductLineCodeAndItemCodeAsync(
+ coatingIssueRequestDetail.ProdLine,
+ groupbyItemCodeAndProdLine.Key.ItemCode).ConfigureAwait(false);
+
+ if (productionLineItemDto == null)
+ {
+ throw new UserFriendlyException(
+ $"未在生产线【{coatingIssueRequestDetail.ProdLine}】物品【{groupbyItemCodeAndProdLine.Key.ItemCode}】的关系,请查看【生产线物品关系】");
+ }
+
+ //原料
+ if (!string.IsNullOrEmpty(productionLineItemDto.RawLocationCodeListJson)) //因为一个零件 要不是原料 要不是半成品
+ {
+ var usableLocationCode =
+ JsonSerializer.Deserialize>(productionLineItemDto.RawLocationCodeListJson);
+ if (usableLocationCode.Any())
+ {
+ //获取可用库存
+ var input = new RecommendBalanceRequestInput
+ {
+ ItemCode = coatingIssueRequestDetail.ItemCode,
+ Qty = decimal.MaxValue,
+ Statuses = new EditableList { EnumInventoryStatus.OK },
+ Locations =
+ JsonSerializer.Deserialize>(productionLineItemDto.RawLocationCodeListJson),
+ IsPackingCode = true
+ };
+ var usableList = await _balanceAppService.GetUsableListAsync(input).ConfigureAwait(false);
+ var sortByFifoAsync = await SortByFifoAsync(usableList).ConfigureAwait(false);
+
+ //因为是按箱叫料 先把值赋值给箱数量上
+ coatingIssueRequestDetail.BoxQty = coatingIssueRequestDetail.Qty;
+
+ if (usableList.Any())
+ {
+ //因为是原料所以按箱叫料
+ coatingIssueJobEditInputs.AddRange(
+ await CreateCoatingIssueJobWithBoxQtyTypeAsync(coatingIssueRequest,
+ new EditableList { coatingIssueRequestDetail },
+ sortByFifoAsync,
+ useBalanceList).ConfigureAwait(false));
+ }
+ }
+ }
+
+ //半成品
+ if (!string.IsNullOrEmpty(productionLineItemDto.ProductLocationCodeListJson)) //因为一个零件 要不是原料 要不是半成品
+ {
+ var usableLocationCode =
+ JsonSerializer.Deserialize>(productionLineItemDto.ProductLocationCodeListJson);
+ if (usableLocationCode.Any())
+ {
+ //获取可用库存
+ var input = new RecommendBalanceRequestInput
+ {
+ ItemCode = groupbyItemCodeAndProdLine.Key.ItemCode,
+ Qty = coatingIssueRequestDetail.Qty,
+ Statuses = new EditableList { EnumInventoryStatus.OK },
+ Locations =
+ JsonSerializer.Deserialize>(productionLineItemDto
+ .ProductLocationCodeListJson),
+ IsPackingCode = false
+ };
+ var usableList = await _balanceAppService.GetUsableListAsync(input).ConfigureAwait(false);
+ var temp = usableList.ToList();
+
+ foreach (var balanceDto in usableList) //计算已经用过的库存
+ {
+ var useBalanceDto = useBalanceList.Where(p =>
+ p.ItemCode == balanceDto.ItemCode && p.LocationCode == balanceDto.LocationCode &&
+ p.Lot == balanceDto.Lot && p.Status == balanceDto.Status &&
+ p.PackingCode == balanceDto.PackingCode);
+ if (useBalanceDto.Any()) //如果不为NULL,就是用过了的库存 需要减去使用量
+ {
+ balanceDto.Qty -= useBalanceDto.Sum(p => p.Qty);
+ if (balanceDto.Qty <= 0)
+ {
+ temp.Remove(balanceDto);
+ }
+ }
+ }
+
+ usableList = temp;
+
+ coatingIssueJobEditInputs.AddRange(
+ await CreateCoatingIssueJobWithQtyTypeAsync(coatingIssueRequest,
+ new List { coatingIssueRequestDetail }, temp,
+ useBalanceList).ConfigureAwait(false));
+ }
+ }
+ }
+ }
+
+ if (coatingIssueJobEditInputs.Count > 0) //有库存 可以创建任务
+ {
+ //新增任务
+ var addCoatingIssueJobDtos = await _coatingIssueJobAppService.CreateManyAsync(coatingIssueJobEditInputs)
+ .ConfigureAwait(false);
+
+ await UpdateCoatingIssueRequestDetailQtyAsync(coatingIssueRequest, addCoatingIssueJobDtos)
+ .ConfigureAwait(false);
+
+ return addCoatingIssueJobDtos;
+ }
+
+ return new List();
+ }
+
+ ///
+ /// 修改请求的 已发 已收数量
+ ///
+ ///
+ ///
+ ///
+ private async Task UpdateCoatingIssueRequestDetailQtyAsync(CoatingIssueRequest coatingIssueRequest,
+ List addCoatingIssueJobDtos)
+ {
+ //原有任务
+ var existCoatingIssueJobDtos = await _coatingIssueJobAppService
+ .GetByRequestNumberAsync(coatingIssueRequest.Number)
+ .ConfigureAwait(false);
+
+ //新增的任务和已有的任务总和
+ var allCoatingIssueJobDtos = new List();
+ allCoatingIssueJobDtos.AddRange(addCoatingIssueJobDtos);
+ allCoatingIssueJobDtos.AddRange(existCoatingIssueJobDtos);
+
+ var groupByItemCodeLocationCode = coatingIssueRequest.Details.GroupBy(p =>
+ new { p.ItemCode, p.ToLocationCode });
+ foreach (var group in groupByItemCodeLocationCode)
+ {
+ foreach (var requestDetail in group)
+ {
+ //所有已发数量
+ decimal allIssuedQty = 0;
+
+ //所有已发数量
+ decimal allReceivedQty = 0;
+
+ foreach (var allCoatingIssueJobDto in allCoatingIssueJobDtos)
+ {
+ var jobDetailDtos = allCoatingIssueJobDto.Details.Where(p =>
+ p.ItemCode == group.Key.ItemCode && p.RequestLocationCode == group.Key.ToLocationCode);
+ //所有已发数量
+ allIssuedQty += jobDetailDtos.Sum(p => p.RequestQty);
+ //所有已发数量
+ allReceivedQty += jobDetailDtos.Sum(p => p.HandledToQty);
+ }
+
+ requestDetail.IssuedQty += allIssuedQty;
+ requestDetail.ReceivedQty += allReceivedQty;
+ }
+ }
+
+ //await _coatingIssueRequestManager.UpdateAsync(coatingIssueRequest).ConfigureAwait(false);
+ }
+
+ ///
+ /// 排序规则 1.批次正序 2.底层 3.到货日期正序 4.数量倒序(整箱优先) 5.库位正序 6.箱码正序
+ ///
+ ///
+ ///
+ public async Task> SortByFifoAsync(List balances)
+ {
+ var sortBalances = new List();
+ var config = new MapperConfiguration(cfg =>
+ {
+ cfg.CreateMap()
+ .Ignore(x => x.LocationRow);
+ });
+ _mapper = new Mapper(config);
+
+ var resultBalances = _mapper.Map, List>(balances);
+ foreach (var resultBalance in resultBalances)
+ {
+ var locationDto = await _locationAppService.GetByCodeAsync(resultBalance.LocationCode).ConfigureAwait(false);
+ resultBalance.LocationRow = locationDto.RowCode;
+ }
+
+ resultBalances
+ .OrderBy(p => p.Lot)
+ .ThenBy(p => p.LocationRow)
+ .ThenBy(p => p.PutInTime)
+ .ThenBy(p => p.Qty)//2023-9-14 苑静雯 从小数开始发料
+ .ThenBy(p => p.LocationCode)
+ .ThenBy(p => p.PackingCode)
+ .ToList();
+
+ return resultBalances;
+ }
}
+
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/Note/CoatingIssueNoteEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/Note/CoatingIssueNoteEventHandler.cs
index 71acd8c33..124982cd5 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/Note/CoatingIssueNoteEventHandler.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/Note/CoatingIssueNoteEventHandler.cs
@@ -6,10 +6,6 @@ using Volo.Abp.Uow;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Store.Domain;
-using Win_in.Sfs.Wms.Store.Notes.IssueNotes;
-using Win_in.Sfs.Wms.Store.Requests.MaterialRequests;
-using static Win_in.Sfs.Wms.Store.Domain.Shared.StoreSettings;
-using MaterialRequest = Win_in.Sfs.Wms.Store.Domain.MaterialRequest;
namespace Win_in.Sfs.Wms.Store.Event.BusinessRequest;
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/CoatingIssueNoteEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/CoatingIssueNoteEventHandler.cs
index ef46f0c66..84e6e4246 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/CoatingIssueNoteEventHandler.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/CoatingIssueNoteEventHandler.cs
@@ -9,7 +9,6 @@ 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;
-using Win_in.Sfs.Wms.Store.Notes.IssueNotes;
namespace Win_in.Sfs.Wms.Store.Event.Transactions;