From 463e3bda9ce68cc9d6ec233c9300f52396d9d204 Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周日, 11 5月 2025 17:41:31 +0800 Subject: [PATCH] 222 --- PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Services/IWorkPlanAppService.cs | 44 ++++++---- PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain.Shared/Enums/WorkPlanStatusEnum.cs | 12 +- PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs | 2 PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/CMS.Plugin.PipeLineLems.Application.Contracts.csproj | 1 PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Services/ICallMaterialOrderAppService.cs | 35 ++++---- PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/CallMaterialOrder/ICallMaterialOrderRepository.cs | 6 + PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs | 11 ++ PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Repositories/EfCoreCallMaterialOrderRepository.cs | 13 ++ PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/CallMaterialOrderAppService.cs | 5 + PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs | 99 ++++++++++++++++++++---- 10 files changed, 165 insertions(+), 63 deletions(-) diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/CMS.Plugin.PipeLineLems.Application.Contracts.csproj b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/CMS.Plugin.PipeLineLems.Application.Contracts.csproj index 3445a59..d283d5f 100644 --- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/CMS.Plugin.PipeLineLems.Application.Contracts.csproj +++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/CMS.Plugin.PipeLineLems.Application.Contracts.csproj @@ -16,6 +16,7 @@ <ItemGroup> <ProjectReference Include="..\CMS.Plugin.PipeLineLems.Domain.Shared\CMS.Plugin.PipeLineLems.Domain.Shared.csproj" /> + <ProjectReference Include="..\CMS.Plugin.PipeLineLems.Domain\CMS.Plugin.PipeLineLems.Domain.csproj" /> </ItemGroup> <ItemGroup> diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Services/ICallMaterialOrderAppService.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Services/ICallMaterialOrderAppService.cs index 17a352b..706f0ba 100644 --- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Services/ICallMaterialOrderAppService.cs +++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Services/ICallMaterialOrderAppService.cs @@ -1,20 +1,21 @@ -using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.CallMaterialOrder; -using Volo.Abp.Application.Services; - -namespace CMS.Plugin.PipeLineLems.Application.Contracts.Services; - +using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.CallMaterialOrder; +using CMS.Plugin.PipeLineLems.Domain.CallMaterialOrder; +using Volo.Abp.Application.Services; + +namespace CMS.Plugin.PipeLineLems.Application.Contracts.Services; + /// <summary> /// 鍙枡鍗曡〃搴旂敤鏈嶅姟鎺ュ彛 /// </summary> -public interface ICallMaterialOrderAppService : ICrudAppService<CallMaterialOrderDto, Guid, GetCallMaterialOrderInput, CallMaterialOrderCreateDto, CallMaterialOrderUpdateDto> -{ +public interface ICallMaterialOrderAppService : ICrudAppService<CallMaterialOrderDto, Guid, GetCallMaterialOrderInput, CallMaterialOrderCreateDto, CallMaterialOrderUpdateDto> +{ /// <summary> /// 鍏嬮殕鍙枡鍗曡〃 /// </summary> /// <param name="ids"></param> /// <returns></returns> - Task<List<CallMaterialOrderDto>> CloneAsync(IEnumerable<Guid> ids); - + Task<List<CallMaterialOrderDto>> CloneAsync(IEnumerable<Guid> ids); + /// <summary> /// 鍒犻櫎鍙枡鍗曡〃 /// </summary> @@ -22,8 +23,10 @@ /// <returns></returns> Task DeleteManyAsync(IEnumerable<Guid> ids); + Task<CallMaterialOrder> FindByWmsTaskNoAsync(string wmsTaskNo); - Task CallMaterialByDataIdentifier(Guid id); + + Task CallMaterialByDataIdentifier(Guid id); /// <summary> /// 璋冩暣鎺掑簭鍙枡鍗曡〃 @@ -31,19 +34,19 @@ /// <param name="id"></param> /// <param name="sort"></param> /// <returns></returns> - Task AdjustSortAsync(Guid id, int sort); - + Task AdjustSortAsync(Guid id, int sort); + /// <summary> /// 瀵煎叆鍙枡鍗曡〃 /// </summary> /// <param name="input"></param> /// <returns></returns> - Task ImportAsync(CallMaterialOrdersImportModel input); - + Task ImportAsync(CallMaterialOrdersImportModel input); + /// <summary> /// 瀵煎嚭鍙枡鍗曡〃 /// </summary> /// <param name="input"></param> /// <returns></returns> - Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetCallMaterialOrderInput input); -} + Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetCallMaterialOrderInput input); +} diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Services/IWorkPlanAppService.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Services/IWorkPlanAppService.cs index ce9762c..c836361 100644 --- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Services/IWorkPlanAppService.cs +++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Services/IWorkPlanAppService.cs @@ -1,46 +1,56 @@ -using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan; -using Volo.Abp.Application.Services; - -namespace CMS.Plugin.PipeLineLems.Application.Contracts.Services; - +using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan; +using CMS.Plugin.PipeLineLems.Domain.WorkPlan; +using Volo.Abp.Application.Services; + +namespace CMS.Plugin.PipeLineLems.Application.Contracts.Services; + /// <summary> /// 浣滀笟璁″垝琛ㄥ簲鐢ㄦ湇鍔℃帴鍙� /// </summary> -public interface IWorkPlanAppService : ICrudAppService<WorkPlanDto, Guid, GetWorkPlanInput, WorkPlanCreateDto, WorkPlanUpdateDto> -{ +public interface IWorkPlanAppService : ICrudAppService<WorkPlanDto, Guid, GetWorkPlanInput, WorkPlanCreateDto, WorkPlanUpdateDto> +{ /// <summary> /// 鍏嬮殕浣滀笟璁″垝琛� /// </summary> /// <param name="ids"></param> /// <returns></returns> - Task<List<WorkPlanDto>> CloneAsync(IEnumerable<Guid> ids); - + Task<List<WorkPlanDto>> CloneAsync(IEnumerable<Guid> ids); + + + /// <summary> + /// 鎸夌収 鍘熸枡鏍囪 鏌ユ壘浣滀笟璁″垝琛� + /// </summary> + /// <param name="name"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + Task<List<WorkPlan>> FindByDataIdentifierAsync(string dataIdentifier); + /// <summary> /// 鍒犻櫎浣滀笟璁″垝琛� /// </summary> /// <param name="ids"></param> /// <returns></returns> - Task DeleteManyAsync(IEnumerable<Guid> ids); - + Task DeleteManyAsync(IEnumerable<Guid> ids); + /// <summary> /// 璋冩暣鎺掑簭浣滀笟璁″垝琛� /// </summary> /// <param name="id"></param> /// <param name="sort"></param> /// <returns></returns> - Task AdjustSortAsync(Guid id, int sort); - + Task AdjustSortAsync(Guid id, int sort); + /// <summary> /// 瀵煎叆浣滀笟璁″垝琛� /// </summary> /// <param name="input"></param> /// <returns></returns> - Task ImportAsync(WorkPlansImportModel input); - + Task ImportAsync(WorkPlansImportModel input); + /// <summary> /// 瀵煎嚭浣滀笟璁″垝琛� /// </summary> /// <param name="input"></param> /// <returns></returns> - Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWorkPlanInput input); -} + Task<(Dictionary<string, object> Sheets, string FileName)> ExportAsync(GetWorkPlanInput input); +} diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/CallMaterialOrderAppService.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/CallMaterialOrderAppService.cs index ed7b19f..0ca282e 100644 --- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/CallMaterialOrderAppService.cs +++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/CallMaterialOrderAppService.cs @@ -47,6 +47,11 @@ await _sharedService.CallMaterialByDataIdentifier(id, _serviceProvider); } + public virtual async Task<CallMaterialOrder> FindByWmsTaskNoAsync(string wmsTaskNo) + { + return await callMaterialOrderRepository.FindByWmsTaskNoAsync(wmsTaskNo); + } + /// <summary> /// 鍒嗛〉鑾峰彇鍙枡鍗曡〃 /// </summary> diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs index e8fe2be..738d1b9 100644 --- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs +++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs @@ -191,7 +191,7 @@ var insertObj = ObjectMapper.Map<WorkPlanInput, WorkPlanCreateDto>(item); //insertObj.OrgMaterialCode = "1111"; insertObj.CallMaterialStatus = Domain.Shared.Enums.CallMaterialStatusEnum.鏈墽琛�; - insertObj.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.鏈墽琛�; + insertObj.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.鏈敓浜�; insertObj.Sort = 1; await workPlanAppService.CreateAsync(insertObj); } diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs index f9c257a..285fecf 100644 --- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs +++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/WorkPlanAppService.cs @@ -43,6 +43,17 @@ } /// <summary> + /// 鎸夌収 鍘熸枡鏍囪 鏌ユ壘浣滀笟璁″垝琛� + /// </summary> + /// <param name="name"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public virtual async Task<List<WorkPlan>> FindByDataIdentifierAsync(string dataIdentifier) + { + return await workPlanRepository.FindByDataIdentifierAsync(dataIdentifier); + } + + /// <summary> /// 鍒嗛〉鑾峰彇浣滀笟璁″垝琛� /// </summary> /// <param name="input"></param> diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain.Shared/Enums/WorkPlanStatusEnum.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain.Shared/Enums/WorkPlanStatusEnum.cs index 3286321..9334300 100644 --- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain.Shared/Enums/WorkPlanStatusEnum.cs +++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain.Shared/Enums/WorkPlanStatusEnum.cs @@ -8,16 +8,16 @@ public enum WorkPlanStatusEnum { /// <summary> - /// 鏈墽琛� + /// 鏈敓浜� /// </summary> - [Description("鏈墽琛�")] - 鏈墽琛� = 1, + [Description("鏈敓浜�")] + 鏈敓浜� = 1, /// <summary> - /// 鎵ц涓� + /// 鐢熶骇涓� /// </summary> - [Description("鎵ц涓�")] - 鎵ц涓� = 2, + [Description("鐢熶骇涓�")] + 鐢熶骇涓� = 2, /// <summary> /// 鏆傚仠涓� diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/CallMaterialOrder/ICallMaterialOrderRepository.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/CallMaterialOrder/ICallMaterialOrderRepository.cs index 71fbfb4..5fa6208 100644 --- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/CallMaterialOrder/ICallMaterialOrderRepository.cs +++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Domain/CallMaterialOrder/ICallMaterialOrderRepository.cs @@ -15,8 +15,10 @@ /// <param name="name"></param> /// <param name="cancellationToken"></param> /// <returns></returns> - Task<CallMaterialOrder> FindByNameAsync(string name, CancellationToken cancellationToken = default); - + Task<CallMaterialOrder> FindByNameAsync(string name, CancellationToken cancellationToken = default); + + Task<CallMaterialOrder> FindByWmsTaskNoAsync(string wmsTaskNo, CancellationToken cancellationToken = default); + /// <summary> /// 楠岃瘉鍚嶇О鏄惁瀛樺湪鍙枡鍗曡〃 /// </summary> diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Repositories/EfCoreCallMaterialOrderRepository.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Repositories/EfCoreCallMaterialOrderRepository.cs index 1253904..0a78686 100644 --- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Repositories/EfCoreCallMaterialOrderRepository.cs +++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.EntityFrameworkCore/Repositories/EfCoreCallMaterialOrderRepository.cs @@ -37,8 +37,17 @@ .Where(x => !x.IsDeleted) .OrderByDescending(x=>x.CreationTime) .FirstOrDefaultAsync(t => t.DataIdentifier == name, GetCancellationToken(cancellationToken)); - } - + } + + public virtual async Task<CallMaterialOrder> FindByWmsTaskNoAsync(string wmsTaskNo, CancellationToken cancellationToken = default) + { + return await (await GetDbSetAsync()) + .IncludeDetails() + .Where(x => !x.IsDeleted) + .OrderByDescending(x => x.CreationTime) + .FirstOrDefaultAsync(t => t.WmsTaskNo == wmsTaskNo, GetCancellationToken(cancellationToken)); + } + /// <summary> /// 楠岃瘉鍚嶇О鏄惁瀛樺湪鍙枡鍗曡〃 /// </summary> diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs index 210ea86..179286e 100644 --- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs +++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs @@ -16,6 +16,9 @@ using System; using Volo.Abp.BackgroundJobs; using Volo.Abp.Uow; +using CMS.Plugin.PipeLineLems.Application.Contracts.Services; +using CMS.Plugin.PipeLineLems.Domain.WorkPlan; +using CMS.Plugin.PipeLineLems.Domain.CallMaterialOrder; namespace CMS.Plugin.PipeLineLems.ProjectService { @@ -231,6 +234,14 @@ private async Task HanlderForPringBarCodeAsync() { + var workPlanAppService = _serviceProvider.GetRequiredService<IWorkPlanAppService>(); + var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>(); + var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>(); + + using var scope = _serviceProvider.CreateScope(); + var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>(); + using var uow = unitOfWorkManager.Begin(requiresNew: true); + var plcTaskNo = await _variableService.ReadValueAsync("鎵撶爜杩涚珯PLC浠诲姟鍙�"); if (string.IsNullOrEmpty(plcTaskNo?.Content?.Value.SafeString().ToString())) @@ -240,31 +251,81 @@ else { var myTaskNo = plcTaskNo.Content.Value.SafeString().ToString(); - //TODO:鏆傛椂鍏堝啓鍏� 鍐呴儴鍙橀噺 - Dictionary<string, object?> keyValuePairs = new Dictionary<string, object?> - { - { "鎵撶爜1", "11111111" }, - { "鎵撶爜2", "22222222" }, - { "鎵撶爜3", "33333333" } - }; - _variableService.WriteValueAsync(keyValuePairs); + CallMaterialOrder callMaterialOrder = null; + try + { + //鏍规嵁wms浠诲姟鍙峰鎵� 鍙枡宸ュ崟 + callMaterialOrder = await callMaterialOrderAppService.FindByWmsTaskNoAsync(myTaskNo); + if (callMaterialOrder == null) return;//缁撴潫 - //TODO:妯℃嫙閲囬泦鍙傛暟 - keyValuePairs = new Dictionary<string, object?> + + + //鏍规嵁鍘熸枡鏍囪瘑瀵绘壘 浣滀笟璁″垝 + var workPlanList = await workPlanAppService.FindByDataIdentifierAsync(callMaterialOrder.DataIdentifier); + if (workPlanList?.Count == 0) return;//缁撴潫 + + //鏇存柊涓虹敓浜т腑 + foreach (var item in workPlanList) + { + item.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.鐢熶骇涓�; + } + await workPlanRepository.UpdateManyAsync(workPlanList); + + //寰楀埌鐮佸�� + var code1 = ""; + var code2 = ""; + var code3 = ""; + var new_workPlanList = workPlanList.Where(x => x.ProcessRouteNumber == "鍒囧壊").ToList(); + for (int i = 0; i < new_workPlanList.Count; i++) + { + if (i == 0) + { + code1 = new_workPlanList[i].MarkingContent; + } + if (i == 1) + { + code2 = new_workPlanList[i].MarkingContent; + } + if (i == 2) + { + code3 = new_workPlanList[i].MarkingContent; + } + } + Dictionary<string, object?> keyValuePairs = new Dictionary<string, object?> + { + { "鎵撶爜宸ヤ欢1",code1}, + { "鎵撶爜宸ヤ欢2", code2}, + { "鎵撶爜宸ヤ欢3", code3 }, + { "鎵撶爜鍘熸枡绠″瀷鍙�", new_workPlanList.First().MaterialMode }, + { "鎵撶爜鍘熸枡鏍囪瘑", new_workPlanList.First().DataIdentifier } + }; + _variableService.WriteValueAsync(keyValuePairs); + + //TODO:妯℃嫙閲囬泦鍙傛暟 + keyValuePairs = new Dictionary<string, object?> { { "鎵撶爜閫熷害", 100}, { "鎵撶爜璐ㄩ噺", 2}, }; - var ret2 = _variableService.WriteValueAsync(keyValuePairs); + var ret2 = _variableService.WriteValueAsync(keyValuePairs); - //TODO:鏆傛椂鐢熸垚浜у搧ID - //var productID = Guid.NewGuid().ToString(); - var productID = DateTime.Now.ToString("yyyyMMddHHmmssfff"); - keyValuePairs = new Dictionary<string, object?> + //TODO:鏆傛椂鐢熸垚浜у搧ID + var productID = DateTime.Now.ToString("yyyyMMddHHmmssfff"); + //var productID = new_workPlanList.Last().PipeSpecCode; + keyValuePairs = new Dictionary<string, object?> { { "鎵撶爜_ProductID", productID}, }; - var ret = _variableService.WriteValueAsync(keyValuePairs); + var ret = _variableService.WriteValueAsync(keyValuePairs); + + + uow.CompleteAsync(); + } + catch (Exception) + { + uow.RollbackAsync(); + throw; + } } } @@ -288,9 +349,9 @@ //TODO:鏆傛椂鍏堝啓鍏� 鍐呴儴鍙橀噺 Dictionary<string, object?> keyValuePairs = new Dictionary<string, object?> { - { "鍒囧壊1", "555555" }, - { "鍒囧壊2", "66666" }, - { "鍒囧壊3", "77777" } + { "鍒囧壊浣嶇疆1", "555555" }, + { "鍒囧壊浣嶇疆2", "66666" }, + { "鍒囧壊浣嶇疆3", "77777" } }; _variableService.WriteValueAsync(keyValuePairs); -- Gitblit v1.9.3