From 6177ed5cb88df34f2a67d9d0610e3e0dc7030e70 Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周一, 12 5月 2025 09:15:16 +0800 Subject: [PATCH] 2 --- PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs | 304 ++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 241 insertions(+), 63 deletions(-) diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs index d5cf9a8..df8778c 100644 --- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs +++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs @@ -16,6 +16,10 @@ 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; +using System.Collections.Generic; namespace CMS.Plugin.PipeLineLems.ProjectService { @@ -27,7 +31,7 @@ private IServiceProvider _serviceProvider; private readonly ILogger<PipeLineLemsProjectService> _logger; private readonly IVariableDataCache _variableDataCache; - private readonly IWorkSectionManager _workSectionManager; + /// <summary> /// 鍙橀噺鏈嶅姟 /// </summary> @@ -56,7 +60,6 @@ /// <param name="logger">The logger.</param> /// <param name="variableDataCache">The variable data cache.</param> public PipeLineLemsProjectService( - IWorkSectionManager workSectionManager, VariableService variableService, IServiceProvider serviceProvider, ILogger<PipeLineLemsProjectService> logger, IVariableDataCache variableDataCache) { @@ -64,7 +67,6 @@ _logger = logger; _variableDataCache = variableDataCache; _variableService = variableService; - _workSectionManager = workSectionManager; } /// <summary> @@ -82,6 +84,7 @@ _monitorVariableNames = new Dictionary<string, string> { { "鎵撶爜杩涚珯淇″彿", "鎵撶爜杩涚珯淇″彿(鎻忚堪)" }, + { "鍒囧壊杩涚珯淇″彿", "鍒囧壊杩涚珯淇″彿(鎻忚堪)" }, }; // 鍒涘缓閫氶亾鐩戝惉 @@ -232,6 +235,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,35 +251,161 @@ } 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); - //TODO:妯℃嫙閲囬泦鍙傛暟 - keyValuePairs = new Dictionary<string, object?> + + + var myTaskNo = plcTaskNo.Content.Value.SafeString().ToString(); + CallMaterialOrder callMaterialOrder = null; + try + { + //鏍规嵁wms浠诲姟鍙峰鎵� 鍙枡宸ュ崟 + callMaterialOrder = await callMaterialOrderAppService.FindByWmsTaskNoAsync(myTaskNo); + if (callMaterialOrder == null) return;//缁撴潫 + + + + //鏍规嵁鍘熸枡鏍囪瘑瀵绘壘 浣滀笟璁″垝 + var workPlanList = await workPlanAppService.FindByDataIdentifierAsync(callMaterialOrder.DataIdentifier); + if (workPlanList?.Count == 0) return;//缁撴潫 + + //TODO:鏆傛椂鐢熸垚浜у搧ID + //var productID = DateTime.Now.ToString("yyyyMMddHHmmssfff"); + var productID = workPlanList.First().PipeSpecCode; + Dictionary<string, object?> keyValuePairs_productID = new Dictionary<string, object?> + { + { "鎵撶爜_ProductID", productID}, + }; + var ret = _variableService.WriteValueAsync(keyValuePairs_productID); + + //鏇存柊涓虹敓浜т腑 + 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().PipeSpecCode }, + { "鎵撶爜绠℃鍚嶇О", new_workPlanList.First().PipeSectionName }, + { "鎵撶爜鍘熸枡绠″瀷鍙�", 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?> - { - { "鎵撶爜_ProductID", productID}, - }; - var ret = _variableService.WriteValueAsync(keyValuePairs); + + + + uow.CompleteAsync(); + } + catch (Exception) + { + uow.RollbackAsync(); + throw; + } } } + + ///// <summary> + ///// 鍒囧壊 + ///// </summary> + ///// <returns></returns> + //private async Task HanlderForCutAsync() + //{ + + // var plcTaskNo = await _variableService.ReadValueAsync("鍒囧壊杩涚珯PLC浠诲姟鍙�"); + + // if (string.IsNullOrEmpty(plcTaskNo?.Content?.Value.SafeString().ToString())) + // { + + // } + // else + // { + // var myTaskNo = plcTaskNo.Content.Value.SafeString().ToString(); + // //TODO:鏆傛椂鍏堝啓鍏� 鍐呴儴鍙橀噺 + // Dictionary<string, object?> keyValuePairs = new Dictionary<string, object?> + // { + // { "鍒囧壊浣嶇疆1", "555555" }, + // { "鍒囧壊浣嶇疆2", "66666" }, + // { "鍒囧壊浣嶇疆3", "77777" } + // }; + // _variableService.WriteValueAsync(keyValuePairs); + + // //TODO:妯℃嫙閲囬泦鍙傛暟 + // keyValuePairs = new Dictionary<string, object?> + // { + // { "鍒囧壊閫熷害", 99}, + // { "鍒囧壊璐ㄩ噺", 1}, + // }; + // var ret2 = _variableService.WriteValueAsync(keyValuePairs); + + // //TODO:鏆傛椂鐢熸垚浜у搧ID + // //鑾峰彇涓婁竴涓伐搴忕殑浜у搧ID + // //鏍规嵁宸ュ簭鍚嶈幏鍙栧伐搴忓璞� + // var _workSectionManager = _serviceProvider.GetRequiredService<IWorkSectionManager>(); + // var lastWorkSection = "鎵撶爜宸ュ簭"; + // var workSection = await _workSectionManager.GetByNameAsync(lastWorkSection); + + // //鑾峰彇宸ュ崟鏁版嵁锛堜粠鏈伐搴忔煡璇�3涓骇鍝侊級 + // //璇诲彇scms_productions琛紝鏍规嵁褰撳墠鏃堕棿鏌ヨ鏈�杩�3鏉¤褰� + // var traceManager = _serviceProvider.GetRequiredService<ITraceProvider>(); + // GetTracesRequest request = new GetTracesRequest() + // { + // WorkSectionId = workSection.Id, + // }; + // TraceModel traceModel = null; + // var list = await traceManager.GetTracesAsync(request); + // if (list?.Count > 0) + // { + // //閲嶆柊鎺掑簭 + // list = list.OrderByDescending(x => x.FinishTime).ToList(); + // traceModel = list.First(); + // } + // //var productID = Guid.NewGuid().ToString(); + // var productID = DateTime.Now.ToString("yyyyMMddHHmmssfff"); + // if (traceModel != null) + // { + // productID = traceModel.SerialNumber; + // } + // keyValuePairs = new Dictionary<string, object?> + // { + // { "鍒囧壊_ProductID", productID}, + // }; + // var ret = _variableService.WriteValueAsync(keyValuePairs); + // } + //} /// <summary> /// 鍒囧壊 @@ -276,6 +413,14 @@ /// <returns></returns> private async Task HanlderForCutAsync() { + + 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浠诲姟鍙�"); @@ -285,56 +430,89 @@ } else { - var myTaskNo = plcTaskNo.Content.Value.SafeString().ToString(); - //TODO:鏆傛椂鍏堝啓鍏� 鍐呴儴鍙橀噺 - Dictionary<string, object?> keyValuePairs = new Dictionary<string, object?> - { - { "鍒囧壊1", "555555" }, - { "鍒囧壊2", "66666" }, - { "鍒囧壊3", "77777" } - }; - _variableService.WriteValueAsync(keyValuePairs); - //TODO:妯℃嫙閲囬泦鍙傛暟 - keyValuePairs = new Dictionary<string, object?> + + + var myTaskNo = plcTaskNo.Content.Value.SafeString().ToString(); + CallMaterialOrder callMaterialOrder = null; + try + { + //鏍规嵁wms浠诲姟鍙峰鎵� 鍙枡宸ュ崟 + callMaterialOrder = await callMaterialOrderAppService.FindByWmsTaskNoAsync(myTaskNo); + if (callMaterialOrder == null) return;//缁撴潫 + + + + //鏍规嵁鍘熸枡鏍囪瘑瀵绘壘 浣滀笟璁″垝 + var workPlanList = await workPlanAppService.FindByDataIdentifierAsync(callMaterialOrder.DataIdentifier); + if (workPlanList?.Count == 0) return;//缁撴潫 + + //TODO:鏆傛椂鐢熸垚浜у搧ID + //var productID = DateTime.Now.ToString("yyyyMMddHHmmssfff"); + var productID = workPlanList.First().PipeSpecCode; + Dictionary<string, object?> keyValuePairs_productID = new Dictionary<string, object?> + { + { "鍒囧壊_ProductID", productID}, + }; + var ret = _variableService.WriteValueAsync(keyValuePairs_productID); + + //鏇存柊涓虹敓浜т腑 + foreach (var item in workPlanList) + { + item.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.鐢熶骇涓�; + } + await workPlanRepository.UpdateManyAsync(workPlanList); + + //寰楀埌鐮佸�� + decimal code1 = 0; + decimal code2 = 0; + decimal code3 = 0; + 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].CuttingPosition; + } + if (i == 1) + { + code2 = new_workPlanList[i].CuttingPosition; + } + if (i == 2) + { + code3 = new_workPlanList[i].CuttingPosition; + } + } + Dictionary<string, object?> keyValuePairs = new Dictionary<string, object?> + { + { "鍒囧壊浣嶇疆1",code1}, + { "鍒囧壊浣嶇疆2", code2}, + { "鍒囧壊浣嶇疆3", code3 }, + { "鍒囧壊绠℃缂栫爜", new_workPlanList.First().PipeSpecCode }, + { "鍒囧壊绠℃鍚嶇О", new_workPlanList.First().PipeSectionName }, + { "鍒囧壊鍘熸枡绠″瀷鍙�", new_workPlanList.First().MaterialMode }, + { "鍒囧壊鍘熸枡鏍囪瘑", new_workPlanList.First().DataIdentifier } + }; + _variableService.WriteValueAsync(keyValuePairs); + + //TODO:妯℃嫙閲囬泦鍙傛暟 + keyValuePairs = new Dictionary<string, object?> { { "鍒囧壊閫熷害", 99}, { "鍒囧壊璐ㄩ噺", 1}, }; - var ret2 = _variableService.WriteValueAsync(keyValuePairs); + var ret2 = _variableService.WriteValueAsync(keyValuePairs); - //TODO:鏆傛椂鐢熸垚浜у搧ID - //鑾峰彇涓婁竴涓伐搴忕殑浜у搧ID - //鏍规嵁宸ュ簭鍚嶈幏鍙栧伐搴忓璞� - var lastWorkSection = "鎵撶爜宸ュ簭"; - var workSection = await _workSectionManager.GetByNameAsync(lastWorkSection); - //鑾峰彇宸ュ崟鏁版嵁锛堜粠鏈伐搴忔煡璇�3涓骇鍝侊級 - //璇诲彇scms_productions琛紝鏍规嵁褰撳墠鏃堕棿鏌ヨ鏈�杩�3鏉¤褰� - var traceManager = _serviceProvider.GetRequiredService<ITraceProvider>(); - GetTracesRequest request = new GetTracesRequest() - { - WorkSectionId = workSection.Id, - }; - TraceModel traceModel = null; - var list = await traceManager.GetTracesAsync(request); - if (list?.Count > 0) - { - //閲嶆柊鎺掑簭 - list = list.OrderByDescending(x => x.FinishTime).ToList(); - traceModel = list.First(); + + + uow.CompleteAsync(); } - //var productID = Guid.NewGuid().ToString(); - var productID = DateTime.Now.ToString("yyyyMMddHHmmssfff"); - if (traceModel != null) + catch (Exception) { - productID = traceModel.SerialNumber; + uow.RollbackAsync(); + throw; } - keyValuePairs = new Dictionary<string, object?> - { - { "鍒囧壊_ProductID", productID}, - }; - var ret = _variableService.WriteValueAsync(keyValuePairs); } } } -- Gitblit v1.9.3