From b91614a070380df1b6ac2ee914cc0c4993b0bdb3 Mon Sep 17 00:00:00 2001 From: "boxu.zheng" Date: Thu, 21 Nov 2024 16:46:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=9D=9E=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E9=A2=86=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IUnplannedIssueRequestAppService.cs | 4 +- .../UnplannedIssueJobAppService.cs | 7 +- .../UnplannedIssueRequestAppService.cs | 39 +- ...lannedIssueRequestForDongyangAppService.cs | 381 ++++++------------ .../Jobs/UnplannedIssueJobEventHandler.cs | 52 +-- 5 files changed, 139 insertions(+), 344 deletions(-) diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedIssueRequests/IUnplannedIssueRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedIssueRequests/IUnplannedIssueRequestAppService.cs index 241aa6cf5..7727702fb 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedIssueRequests/IUnplannedIssueRequestAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedIssueRequests/IUnplannedIssueRequestAppService.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using System.Threading.Tasks; namespace Win_in.Sfs.Wms.Store.Application.Contracts; @@ -5,8 +6,5 @@ namespace Win_in.Sfs.Wms.Store.Application.Contracts; public interface IUnplannedIssueRequestAppService : ISfsStoreRequestMasterAppServiceBase { - Task CreateByOAAsync(UnplannedIssueRequestEditInput input); Task UpdateStatusByJobAsync(string requestNumber); - - } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs index e6fad894d..2eea4d3ae 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs @@ -163,12 +163,11 @@ public class UnplannedIssueJobAppService var locationCodes = await _locationAppService .GetListByErpLocationCodes(new StringList(requestDtoDetail.LocationErpCode)) .ConfigureAwait(false); //获取存放库位 - var locationDto = locationCodes.First(); - if (locationCodes.Count == 0) { throw new UserFriendlyException("ERP库位没有对应WMS库位!"); } + var locationDto = locationCodes.First(); var job = new UnplannedIssueJob(); @@ -232,6 +231,10 @@ public class UnplannedIssueJobAppService job.FacDetails = new List(); job.WarehouseCode = locationDto.WarehouseCode; job.BuildDate = DateTime.Now; + job.ProjCapacityCode = requestDtoDetail.ProjCapacityCode; + job.CaseCode= requestDtoDetail.CaseCode; + job.OnceBusiCode=requestDtoDetail.OnceBusiCode; + job.Explain= requestDtoDetail.Explain; var input = new RecommendBalanceRequestInput { diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestAppService.cs index 27a27fffc..17fd45e66 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestAppService.cs @@ -19,13 +19,16 @@ using Win_in.Sfs.Shared.Application.Contracts.ExportAndImport; using System.Linq; namespace Win_in.Sfs.Wms.Store.Application; + [AllowAnonymous] //[Authorize] [Route($"{StoreConsts.RootPath}unplanned-issue-request")] public abstract class UnplannedIssueRequestAppService : SfsStoreRequestAppServiceBase - , + , IUnplannedIssueRequestAppService { private readonly IUnplannedIssueRequestManager _unplannedIssueRequestManager; @@ -44,42 +47,10 @@ public abstract class UnplannedIssueRequestAppService : _excelService = excelService; } - /// - /// 【创建】计划外出库申请 - /// - /// - /// - [HttpPost("")] - //[Authorize(UnplannedIssueRequestPermissions.Create)] - public override async Task CreateAsync(UnplannedIssueRequestEditInput input) - { - var entity = ObjectMapper.Map(input); - - await _unplannedIssueRequestManager.CreateAsync(entity).ConfigureAwait(false); - - var dto = ObjectMapper.Map(entity); - return dto; - } - /// - /// OA创建计划外出库申请 - /// - /// - /// - [HttpPost("create-by-oa")] - //[Authorize(UnplannedIssueRequestPermissions.Create)] - public virtual async Task CreateByOAAsync(UnplannedIssueRequestEditInput input) - { - var entity = ObjectMapper.Map(input); - - await _unplannedIssueRequestManager.CreateAsync(entity).ConfigureAwait(false); - - var dto = ObjectMapper.Map(entity); - return dto; - } - [HttpPost("update-status-by-job")] public virtual async Task UpdateStatusByJobAsync(string requestNumber) { throw new System.NotImplementedException(); + } } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs index f979003c0..32856437d 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs @@ -79,201 +79,18 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA } - /// - /// OA创建计划外出库申请 - /// - /// - /// - [HttpPost("create-by-oa")] - //[Authorize(UnplannedIssueRequestPermissions.Create)] - public override async Task CreateByOAAsync(UnplannedIssueRequestEditInput input) - { - Logger.LogInformation($"DeptNmae【{input.DeptName}】,DeptCode【{input.DeptCode}】"); - var entity = ObjectMapper.Map(input); - foreach (var item in entity.Details) - { - await SetDetailPropertiesAsync(item, input.UnplannedIssueType).ConfigureAwait(false); - } - entity.AutoCompleteJob = false; - entity.AutoSubmit = true; - entity.AutoAgree = true; - entity.AutoHandle = true; - entity.DirectCreateNote = false; - - //var userEntity=await _userRepository.FindByNormalizedUserNameAsync(input.Worker).ConfigureAwait(false); - - - - await _unplannedIssueRequestManager.CreateAsync(entity).ConfigureAwait(false); - - var dto = ObjectMapper.Map(entity); - return dto; - } - //public virtual async Task GetUserNameByUserAsync(string worker) - //{ - // var userList = await _userRepository.GetListAsync().ConfigureAwait(false); - // var userEntity = userList.First(p => p.Name == worker); - // return userEntity.UserName; - //} - - private async Task SetEntityPropertiesAsync(UnplannedIssueRequest entity) - { - var userName = CurrentUser.GetUserName_New(); - var name = CurrentUser.GetUserName(); - if (userName != null) - { - var department = await _departmentApp.GetByUsernameAsync(userName).ConfigureAwait(false); - - if (department != null) - { - entity.DeptCode = department.Code; - entity.DeptName = department.Name; - } - entity.CreatorId = CurrentUser.Id; - entity.Worker = name; - } - - entity.BuildDate = DateTime.Now; - - //await SetRequestAutoPropertiesAsync(entity).ConfigureAwait(false); - } - - - + /// /// OA接口 /// /// /// [HttpPost("create-dongyang")] - - public async Task CreateByAsync(List p_list) + public async Task CreateByOaAsync(List p_list) { UnplannedIssueRequestDTO request = new UnplannedIssueRequestDTO(); - try - { - return await CreateByDYOAsync(p_list, true).ConfigureAwait(false); - } - catch (Exception e) - { - - throw new UserFriendlyException(e.Message); - } - - - } - - - - protected async Task CreateByDYOAsync(List p_list, bool isAutoSubmit = false) - { - UnplannedIssueRequest request = new UnplannedIssueRequest(); - if (p_list.Count == 0) - { - throw new UserFriendlyException("导入内容为空请填写!"); - } - var first = p_list.FirstOrDefault(); - - request.SetId(GuidGenerator.Create()); - request.AutoCompleteJob = false; - request.AutoSubmit = isAutoSubmit; - request.AutoAgree = true; - request.AutoHandle = true; - request.DirectCreateNote = false; - request.DeptCode = first.DeptCode; - request.DeptName = first.DeptName; - request.BuildDate = DateTime.Now; - request.OANumber = first.OANumber; - //request.Worker = first.Worker; - - await SetEntityPropertiesAsync(request).ConfigureAwait(false); - List detailList = new List(); - foreach (var itm in p_list) - { - var detail = new UnplannedIssueRequestDetail(); - detail.ItemCode = itm.ItemCode; - detail.Qty = itm.Qty; - - detail.LocationErpCode = itm.FromLocationErpCode; - detail.LocationCode = "Random"; - detail.WarehouseCode = "Random"; - detail.LocationGroup = "Random"; - detail.LocationArea = "Random"; - detail.CaseCode = first.CaseCode; - detail.ProjCapacityCode = first.ProjCapacityCode; - detail.OnceBusiCode = first.OnceBusiCode; - detail.Explain = first.Explain; - detail.ExpireDate = DateTime.MaxValue; - - await SetDetailPropertiesAsync(detail).ConfigureAwait(false); - detailList.Add(detail); - } - - request.Details = detailList; - - - //var user = await _sfsUserAppService.FindUserByUserNameAsync(first.Worker).ConfigureAwait(false); - //if (string.IsNullOrEmpty(user)) - //{ - // throw new UserFriendlyException("没有查到用户"); - //} - request.Worker = first.Worker; - - - - await _unplannedIssueRequestManager.CreateAsync(request).ConfigureAwait(false); - var dto = ObjectMapper.Map(request); - return dto; - - } - - protected async Task CreateByDYOAsync(List p_list, bool isAutoSubmit=false) - { - UnplannedIssueRequest request = new UnplannedIssueRequest(); - if (p_list.Count == 0) - { - throw new UserFriendlyException("导入内容为空请填写!"); - } - - var first = p_list.FirstOrDefault(); - - request.SetId(GuidGenerator.Create()); - request.AutoCompleteJob = false; - request.AutoSubmit = isAutoSubmit; - request.AutoAgree = false; - request.AutoHandle = false; - request.DirectCreateNote = false; - - request.BuildDate= DateTime.Now; - - - await SetEntityPropertiesAsync(request).ConfigureAwait(false); - List detailList = new List(); - foreach (var itm in p_list) - { - var detail = new UnplannedIssueRequestDetail(); - detail.ItemCode = itm.ItemCode; - detail.Qty = itm.Qty; - - detail.LocationErpCode = itm.FromErpLocationCode; - detail.LocationCode = "Random"; - detail.WarehouseCode ="Random"; - detail.LocationGroup ="Random"; - detail.LocationArea = "Random"; - detail.CaseCode = first.CaseCode; - detail.ProjCapacityCode = first.ProjCapacityCode; - detail.OnceBusiCode = first.OnceBusiCode; - detail.Explain = first.Explain; - - await SetDetailPropertiesAsync(detail).ConfigureAwait(false); - detailList.Add(detail); - } - - request.Details = detailList; - await _unplannedIssueRequestManager.CreateAsync(request).ConfigureAwait(false); - var dto = ObjectMapper.Map(request); - return dto; + return await CreateManyAsync(p_list, true).ConfigureAwait(false); } @@ -290,36 +107,6 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA } } - - - - private async Task SetDetailPropertiesAsync(UnplannedIssueRequestDetail detail) - { - var itemBasic = await ItemBasicAclService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false); - CheckItemBasic(itemBasic, detail.ItemCode); - //await CheckOnceBusiCodeAsync(detail).ConfigureAwait(false); - if (itemBasic != null) - { - detail.ItemCode = itemBasic.Code; - detail.ItemName = itemBasic.Name; - detail.ItemDesc1 = itemBasic.Desc1; - detail.ItemDesc2 = itemBasic.Desc2; - detail.StdPackQty = itemBasic.StdPackQty; - detail.Uom = itemBasic.BasicUom; - } - - string packingcode = string.Empty; - - packingcode =string.IsNullOrEmpty(detail.PackingCode)?"99999999":detail.PackingCode; - - detail.PackingCode = packingcode; - - detail.Status = EnumInventoryStatus.OK; - - - } - - /// /// 用来重写 导入数据时可以加工数据 /// @@ -431,33 +218,6 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA return dictionary; } - - - /// - /// 创建明细 - /// - /// - /// - /// - protected UnplannedIssueRequestDetail CreateNewDetail(UnplannedIssueRequestDetail detail,BalanceDTO balance) - { - UnplannedIssueRequestDetail newDetail = new UnplannedIssueRequestDetail(); - newDetail.ArriveDate = detail.ArriveDate; - newDetail.CaseCode = detail.CaseCode; - newDetail.ContainerCode = detail.ContainerCode; - newDetail.Explain = detail.Explain; - newDetail.ItemCode = detail.ItemCode; - newDetail.LocationCode = detail.LocationCode; - newDetail.Number = detail.Number; - newDetail.OnceBusiCode = detail.OnceBusiCode; - newDetail.ProjCapacityCode = detail.ProjCapacityCode; - newDetail.ProduceDate = detail.ProduceDate; - newDetail.PackingCode = balance.PackingCode; - newDetail.Qty = balance.Qty; - newDetail.SetIdAndNumber(GuidGenerator, detail.MasterID, detail.Number); - return newDetail; - } - #region 赋值 /// @@ -481,21 +241,19 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA detail.Uom = itemBasic.BasicUom; } - var location = await LocationAclService.GetByCodeAsync(detail.LocationCode).ConfigureAwait(false); - CheckLocation(location, detail.LocationCode); - if (location != null) - { - detail.WarehouseCode = location.WarehouseCode; - detail.LocationErpCode = location.ErpLocationCode; - detail.LocationGroup = location.LocationGroupCode; - detail.LocationArea = location.AreaCode; - detail.LocationCode = location.Code; - } + //var location = await LocationAclService.GetByCodeAsync(detail.LocationCode).ConfigureAwait(false); + //CheckLocation(location, detail.LocationCode); + //if (location != null) + //{ + // detail.WarehouseCode = location.WarehouseCode; + // detail.LocationErpCode = location.ErpLocationCode; + // detail.LocationGroup = location.LocationGroupCode; + // detail.LocationArea = location.AreaCode; + // detail.LocationCode = location.Code; + //} } - - /// /// 赋值业务事务 /// @@ -523,12 +281,54 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA //entity.DirectCreateNote = tranType.DirectCreateNote; } - + private async Task SetEntityPropertiesAsync(UnplannedIssueRequest entity) + { + var userName = CurrentUser.GetUserName_New(); + var name = CurrentUser.GetUserName(); + if (userName != null) + { + var department = await _departmentApp.GetByUsernameAsync(userName).ConfigureAwait(false); + + if (department != null) + { + entity.DeptCode = department.Code; + entity.DeptName = department.Name; + } + entity.CreatorId = CurrentUser.Id; + entity.Worker = name; + } + + entity.BuildDate = DateTime.Now; + + //await SetRequestAutoPropertiesAsync(entity).ConfigureAwait(false); + } + + private async Task SetDetailPropertiesAsync(UnplannedIssueRequestDetail detail) + { + var itemBasic = await ItemBasicAclService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false); + CheckItemBasic(itemBasic, detail.ItemCode); + //await CheckOnceBusiCodeAsync(detail).ConfigureAwait(false); + if (itemBasic != null) + { + detail.ItemCode = itemBasic.Code; + detail.ItemName = itemBasic.Name; + detail.ItemDesc1 = itemBasic.Desc1; + detail.ItemDesc2 = itemBasic.Desc2; + detail.StdPackQty = itemBasic.StdPackQty; + detail.Uom = itemBasic.BasicUom; + } + + string packingcode = string.Empty; + packingcode = string.IsNullOrEmpty(detail.PackingCode) ? "99999999" : detail.PackingCode; + detail.PackingCode = packingcode; + detail.Status = EnumInventoryStatus.OK; + } + #endregion #region 校验 @@ -549,9 +349,6 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA } } - - - protected async Task CheckBalanceAsync(UnplannedIssueRequestImportInput importInput, List validationRresult) { var balance = await BalanceAclService.GetByItemLocationAndPackingAsync( @@ -736,8 +533,74 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA return await base.AbortAsync(id).ConfigureAwait(false); } + #endregion + + #region 私有 + + private async Task CreateManyAsync(List p_list, bool isAutoSubmit = false) + { + UnplannedIssueRequest request = new UnplannedIssueRequest(); + if (p_list.Count == 0) + { + throw new UserFriendlyException("导入内容为空请填写!"); + } + + var first = p_list.FirstOrDefault(); + request.SetId(GuidGenerator.Create()); + request.AutoCompleteJob = false; + request.AutoSubmit = isAutoSubmit; + request.AutoAgree = true; + request.AutoHandle = true; + request.DirectCreateNote = false; + request.DeptCode = first.DeptCode; + request.DeptName = first.DeptName; + request.BuildDate = DateTime.Now; + request.OANumber = first.OANumber; + //request.Worker = first.Worker; + request.FromErpLocationCode = first.FromLocationErpCode; + await SetEntityPropertiesAsync(request).ConfigureAwait(false); + List detailList = new List(); + foreach (var itm in p_list) + { + var detail = new UnplannedIssueRequestDetail(); + detail.ItemCode = itm.ItemCode; + detail.Qty = itm.Qty; + + detail.LocationErpCode = itm.FromLocationErpCode; + detail.LocationCode = "Random"; + detail.WarehouseCode = "Random"; + detail.LocationGroup = "Random"; + detail.LocationArea = "Random"; + detail.CaseCode = first.CaseCode; + detail.ProjCapacityCode = first.ProjCapacityCode; + detail.OnceBusiCode = first.OnceBusiCode; + detail.Explain = first.Explain; + detail.ExpireDate = DateTime.MaxValue; + detail.FromErpLocationCode = first.FromLocationErpCode; + + await SetDetailPropertiesAsync(detail).ConfigureAwait(false); + detailList.Add(detail); + } + + request.Details = detailList; + + + //var user = await _sfsUserAppService.FindUserByUserNameAsync(first.Worker).ConfigureAwait(false); + //if (string.IsNullOrEmpty(user)) + //{ + // throw new UserFriendlyException("没有查到用户"); + //} + request.Worker = first.Worker; + + + + await _unplannedIssueRequestManager.CreateAsync(request).ConfigureAwait(false); + var dto = ObjectMapper.Map(request); + return dto; + + } #endregion } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedIssueJobEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedIssueJobEventHandler.cs index c39c2c85e..e0ed0cd0d 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedIssueJobEventHandler.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedIssueJobEventHandler.cs @@ -100,17 +100,15 @@ public class UnplannedIssueJobEventHandler : createInput.Qty=entity.Qty; createInput.UnplannedIssueType=entity.UnplannedIssueType; - - - - + createInput.CaseCode=entity.CaseCode; + createInput.ProjCapacityCode=entity.ProjCapacityCode; + createInput.Explain=entity.Explain; + createInput.OnceBusiCode=entity.OnceBusiCode; + createInput.DeptCode=entity.DeptCode; + createInput.IsHasPackingCode=entity.IsHasPackingCode; createInput.Details = new List(); - //var strs= GetDifferentPropertyNames(typeof(UnplannedIssueJobDetail), typeof(UnplannedIssueNoteDetailInput)); - //var strs1 = GetDifferentPropertyNames(typeof(UnplannedIssueNoteDetailInput), typeof(UnplannedIssueJobDetail)); - - foreach (var inputDetail in entity.Details) { if (inputDetail.HandledQty > 0) @@ -139,42 +137,4 @@ public class UnplannedIssueJobEventHandler : } return createInput; } - - //public static string[] GetDifferentFieldNames(Type type1, Type type2) - //{ - // // 获取两个类型的字段 - // var fields1 = type1.GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static); - // var fields2 = type2.GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static); - - // // 获取字段名称 - // var fieldNames1 = fields1.Select(f => f.Name).ToArray(); - // var fieldNames2 = fields2.Select(f => f.Name).ToArray(); - - // // 找出不同的字段名称 - // var differentFields = fieldNames1.Except(fieldNames2).ToArray(); - - - // return differentFields; - //} - - - //public static string[] GetDifferentPropertyNames(Type type1, Type type2) - //{ - // // 获取两个类型的属性 - // var properties1 = type1.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static); - // var properties2 = type2.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static); - - // // 获取属性名称 - // var propertyNames1 = properties1.Select(p => p.Name).ToArray(); - // var propertyNames2 = properties2.Select(p => p.Name).ToArray(); - - // // 找出不同的属性名称 - // var differentProperties = propertyNames1.Except(propertyNames2) - // .ToArray(); - - // return differentProperties; - //} - - - }