From 0e42f871905f207658d822fcbe29aeb57b2156af Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周三, 21 5月 2025 16:18:01 +0800 Subject: [PATCH] 修复查询bug --- PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs | 730 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 674 insertions(+), 56 deletions(-) diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs index d2f6d29..9e1ae40 100644 --- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs +++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs @@ -20,6 +20,11 @@ using CMS.Plugin.PipeLineLems.Domain.WorkPlan; using CMS.Plugin.PipeLineLems.Domain.CallMaterialOrder; using System.Collections.Generic; +using CMS.Framework.AspNetCore.Users; +using NPOI.SS.Formula.Functions; +using CMS.Plugin.PipeLineLems.Application.Implements; +using CmsQueryExtensions.Entitys; +using CMS.Plugin.PipeLineLems.Domain.WorkTask; namespace CMS.Plugin.PipeLineLems.ProjectService { @@ -84,7 +89,13 @@ _monitorVariableNames = new Dictionary<string, string> { { "鎵撶爜杩涚珯淇″彿", "鎵撶爜杩涚珯淇″彿(鎻忚堪)" }, + { "璇锋眰鐢熸垚鎵撶爜浜у搧鐮佷俊鍙�", "璇锋眰鐢熸垚鎵撶爜浜у搧鐮佷俊鍙�(鎻忚堪)" }, + { "璇锋眰鐢熸垚鍒囧壊浜у搧鐮佷俊鍙�", "璇锋眰鐢熸垚鍒囧壊浜у搧鐮佷俊鍙�(鎻忚堪)" }, { "鍒囧壊杩涚珯淇″彿", "鍒囧壊杩涚珯淇″彿(鎻忚堪)" }, + + { "瑁呴厤瀹屽伐淇″彿", "瑁呴厤瀹屽伐淇″彿(鎻忚堪)" }, + { "鐒婃帴瀹屽伐淇″彿", "鐒婃帴瀹屽伐淇″彿(鎻忚堪)" }, + { "娉曞叞鍐茬爜瀹屽伐淇″彿", "娉曞叞鍐茬爜瀹屽伐淇″彿(鎻忚堪)" }, }; // 鍒涘缓閫氶亾鐩戝惉 @@ -142,6 +153,36 @@ _logger.LogInformation($"{changed.Name} 鍙橀噺鍊煎彂鐢熷彉鍖栵紝鏃у�納oldValue}=鏂板�納newValue}锛孴raceId={traceId}"); + if (changed.Name == "璇锋眰鐢熸垚鎵撶爜浜у搧鐮佷俊鍙�") + { + + // TODO: 澶勭悊鍙橀噺鍊煎彉鍖� + // Tips锛歨ttps://cms-docs.shengyc.com/cms/api/%E5%90%8E%E7%AB%AF#3-%E5%8F%98%E9%87%8F%E6%A8%A1%E5%9D%97 + /* 璇存槑锛氶�氳繃璁㈤槄 IVariableDataCache.TagChanged 浜嬩欢锛屾偍鍙互瀹炴椂鐩戞帶鍙橀噺鐨勫彉鍖栥�傛浜嬩欢浼氫紶閫掓墍鏈夊彉閲忚嚦浜嬩欢澶勭悊鍑芥暟锛屽洜姝わ紝涓氬姟灞傞渶鍦ㄥ嚱鏁颁腑绛涢�夊叧娉ㄧ殑鍙橀噺銆� + 娉ㄦ剰浜嬮」锛� + 锛�1锛夋�ц兘褰卞搷锛� 鍙戝竷浜嬩欢鏃讹紝浜嬩欢鐨勫彂閫佽�呭皢闃诲娴佺▼銆傚洜姝わ紝寮虹儓寤鸿閬垮厤鍦ㄤ簨浠跺鐞嗗嚱鏁颁腑鎵ц I/ O 鎿嶄綔銆丠TTP 鎺ュ彛璁块棶鎴栧叾浠栬�楁椂鎿嶄綔锛屼互闃叉瀵圭郴缁熸�ц兘浜х敓涓ラ噸褰卞搷锛屽鑷存暣涓郴缁熷搷搴斿欢杩熴�� + 锛�2锛夐珮棰戠巼瑙﹀彂锛� 鐢变簬浜嬩欢璁㈤槄浜嗗叏閲忓彉閲忥紝瑙﹀彂棰戠巼鍙兘闈炲父楂樸�� + 锛�3锛夊紓姝ュ鐞嗭細 閴翠簬浜嬩欢瑙﹀彂棰戠巼寰堥珮锛屽缓璁笟鍔″眰鍦ㄧ瓫閫夊叧娉ㄥ彉閲忓悗锛屼娇鐢� Task 鍚姩鏂扮嚎绋嬪鐞嗕笟鍔¢�昏緫锛屼互閬垮厤闃诲鏍稿績鐨勫彉閲忕洃鍚姛鑳斤紝瀹炵幇涓氬姟灞備笌骞冲彴鍩哄骇鐨勮В鑰︺�� + 锛�4锛夊苟鍙戠鐞嗭細 濡傛灉涓氬姟灞傚苟鍙戦噺澶э紝蹇呴』浼樺寲浠g爜璁捐鍜屽疄鏂斤紝浠ュ噺灏戝湪楂樺苟鍙戞儏鍐典笅鐨勭郴缁熻祫婧愭秷鑰楋紝闃叉绯荤粺鎬ц兘闂銆� + 锛�5锛変唬鐮佸畨鍏細 瀹夎骞朵娇鐢� CMS.CodeAnalysis 鍒嗘瀽鍣ㄦ潵鍒嗘瀽 IVariableDataCache.TagChanged 鐨勪娇鐢ㄦ儏鍐点�傝宸ュ叿鑳藉湪浣跨敤涓嶅綋鏃舵彁渚涚紪璇戦敊璇紝甯姪鎮ㄦ彁楂樹唬鐮佽川閲忋��*/ + + if (changed.New?.Value.SafeString().ToBool() == true) + { + _ = Task.Run(async () => + { + await HanlderForPringBarCodeByCreateProductAsync(); + }); + } + else + { + + _ = Task.Run(async () => + { + await HanlderForPringBarCodeByCreateProductWhenFalseAsync(); + }); + } + } + if (changed.Name == "鎵撶爜杩涚珯淇″彿" && changed.New?.Value.SafeString().ToBool() == true) { @@ -166,6 +207,8 @@ }); } + + if (changed.Name == "鍒囧壊杩涚珯淇″彿" && changed.New?.Value.SafeString().ToBool() == true) { @@ -188,6 +231,91 @@ // 渚�2锛氳皟鐢ㄥ閮ˋPI //await ExecuteExternalApiAsync(); }); + } + + + if (changed.Name == "璇锋眰鐢熸垚鍒囧壊浜у搧鐮佷俊鍙�") + { + + // TODO: 澶勭悊鍙橀噺鍊煎彉鍖� + // Tips锛歨ttps://cms-docs.shengyc.com/cms/api/%E5%90%8E%E7%AB%AF#3-%E5%8F%98%E9%87%8F%E6%A8%A1%E5%9D%97 + /* 璇存槑锛氶�氳繃璁㈤槄 IVariableDataCache.TagChanged 浜嬩欢锛屾偍鍙互瀹炴椂鐩戞帶鍙橀噺鐨勫彉鍖栥�傛浜嬩欢浼氫紶閫掓墍鏈夊彉閲忚嚦浜嬩欢澶勭悊鍑芥暟锛屽洜姝わ紝涓氬姟灞傞渶鍦ㄥ嚱鏁颁腑绛涢�夊叧娉ㄧ殑鍙橀噺銆� + 娉ㄦ剰浜嬮」锛� + 锛�1锛夋�ц兘褰卞搷锛� 鍙戝竷浜嬩欢鏃讹紝浜嬩欢鐨勫彂閫佽�呭皢闃诲娴佺▼銆傚洜姝わ紝寮虹儓寤鸿閬垮厤鍦ㄤ簨浠跺鐞嗗嚱鏁颁腑鎵ц I/ O 鎿嶄綔銆丠TTP 鎺ュ彛璁块棶鎴栧叾浠栬�楁椂鎿嶄綔锛屼互闃叉瀵圭郴缁熸�ц兘浜х敓涓ラ噸褰卞搷锛屽鑷存暣涓郴缁熷搷搴斿欢杩熴�� + 锛�2锛夐珮棰戠巼瑙﹀彂锛� 鐢变簬浜嬩欢璁㈤槄浜嗗叏閲忓彉閲忥紝瑙﹀彂棰戠巼鍙兘闈炲父楂樸�� + 锛�3锛夊紓姝ュ鐞嗭細 閴翠簬浜嬩欢瑙﹀彂棰戠巼寰堥珮锛屽缓璁笟鍔″眰鍦ㄧ瓫閫夊叧娉ㄥ彉閲忓悗锛屼娇鐢� Task 鍚姩鏂扮嚎绋嬪鐞嗕笟鍔¢�昏緫锛屼互閬垮厤闃诲鏍稿績鐨勫彉閲忕洃鍚姛鑳斤紝瀹炵幇涓氬姟灞備笌骞冲彴鍩哄骇鐨勮В鑰︺�� + 锛�4锛夊苟鍙戠鐞嗭細 濡傛灉涓氬姟灞傚苟鍙戦噺澶э紝蹇呴』浼樺寲浠g爜璁捐鍜屽疄鏂斤紝浠ュ噺灏戝湪楂樺苟鍙戞儏鍐典笅鐨勭郴缁熻祫婧愭秷鑰楋紝闃叉绯荤粺鎬ц兘闂銆� + 锛�5锛変唬鐮佸畨鍏細 瀹夎骞朵娇鐢� CMS.CodeAnalysis 鍒嗘瀽鍣ㄦ潵鍒嗘瀽 IVariableDataCache.TagChanged 鐨勪娇鐢ㄦ儏鍐点�傝宸ュ叿鑳藉湪浣跨敤涓嶅綋鏃舵彁渚涚紪璇戦敊璇紝甯姪鎮ㄦ彁楂樹唬鐮佽川閲忋��*/ + + if (changed.New?.Value.SafeString().ToBool() == true) + { + _ = Task.Run(async () => + { + await HanlderForCutByCreateProductAsync(); + }); + } + else + { + _ = Task.Run(async () => + { + await HanlderForCutByCreateProductWhenFlaseAsync(); + }); + } + } + + + if (changed.Name == "瑁呴厤瀹屽伐淇″彿") + { + if (changed.New?.Value.SafeString().ToBool() == true) + { + _ = Task.Run(async () => + { + await HanlderFor瑁呴厤瀹屽伐淇″彿Async(); + }); + } + else + { + _ = Task.Run(async () => + { + await HanlderFor瀹屽伐淇″彿WhenFalseAsync("瑁呴厤"); + }); + } + } + + if (changed.Name == "鐒婃帴瀹屽伐淇″彿") + { + if (changed.New?.Value.SafeString().ToBool() == true) + { + _ = Task.Run(async () => + { + await HanlderFor鐒婃帴瀹屽伐淇″彿Async(); + }); + } + else + { + _ = Task.Run(async () => + { + await HanlderFor瀹屽伐淇″彿WhenFalseAsync("鐒婃帴"); + }); + } + } + + if (changed.Name == "娉曞叞鍐茬爜瀹屽伐淇″彿") + { + if (changed.New?.Value.SafeString().ToBool() == true) + { + _ = Task.Run(async () => + { + await HanlderFor娉曞叞鍐茬爜瀹屽伐淇″彿Async(); + }); + } + else + { + _ = Task.Run(async () => + { + await HanlderFor瀹屽伐淇″彿WhenFalseAsync("娉曞叞鍐茬爜"); + }); + } } } } @@ -229,7 +357,7 @@ } /// <summary> - /// 鎵撶爜 + /// 鎵撶爜杩涚珯淇″彿 /// </summary> /// <returns></returns> private async Task HanlderForPringBarCodeAsync() @@ -252,63 +380,78 @@ else { - //TODO:鏆傛椂鐢熸垚浜у搧ID - var productID = DateTime.Now.ToString("yyyyMMddHHmmssfff"); - //var productID = new_workPlanList.Last().PipeSpecCode; - Dictionary<string, object?> keyValuePairs_productID = new Dictionary<string, object?> - { - { "鎵撶爜_ProductID", productID}, - }; - var ret = _variableService.WriteValueAsync(keyValuePairs_productID); + var myTaskNo = plcTaskNo.Content.Value.SafeString().ToString(); CallMaterialOrder callMaterialOrder = null; try { //鏍规嵁wms浠诲姟鍙峰鎵� 鍙枡宸ュ崟 - callMaterialOrder = await callMaterialOrderAppService.FindByWmsTaskNoAsync(myTaskNo); + callMaterialOrder = await callMaterialOrderAppService.GetSingleByFilterAsync(x => x.WmsTaskNo == myTaskNo); if (callMaterialOrder == null) return;//缁撴潫 //鏍规嵁鍘熸枡鏍囪瘑瀵绘壘 浣滀笟璁″垝 - var workPlanList = await workPlanAppService.FindByDataIdentifierAsync(callMaterialOrder.DataIdentifier); + var workPlanList = await workPlanAppService.GetListByFilterAsync(x => x.DataIdentifier == callMaterialOrder.DataIdentifier); if (workPlanList?.Count == 0) return;//缁撴潫 - //鏇存柊涓虹敓浜т腑 - foreach (var item in workPlanList) - { - item.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.鐢熶骇涓�; - } - await workPlanRepository.UpdateManyAsync(workPlanList); + ////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 pipeSpecCode1 = ""; + var pipeSpecCode2 = ""; + var pipeSpecCode3 = ""; 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; + pipeSpecCode1 = new_workPlanList[i].PipeSpecCode; } if (i == 1) { code2 = new_workPlanList[i].MarkingContent; + pipeSpecCode2 = new_workPlanList[i].PipeSpecCode; } if (i == 2) { code3 = new_workPlanList[i].MarkingContent; + pipeSpecCode3 = new_workPlanList[i].PipeSpecCode; } } + Dictionary<string, object?> keyValuePairs = new Dictionary<string, object?> { { "鎵撶爜宸ヤ欢1",code1}, { "鎵撶爜宸ヤ欢2", code2}, { "鎵撶爜宸ヤ欢3", code3 }, + { "鎵撶爜绠℃缂栫爜1",pipeSpecCode1}, + { "鎵撶爜绠℃缂栫爜2", pipeSpecCode2}, + { "鎵撶爜绠℃缂栫爜3", pipeSpecCode3 }, + { "鎵撶爜绠℃缂栫爜", new_workPlanList.First().PipeSpecCode }, + { "鎵撶爜绠℃鍚嶇О", new_workPlanList.First().PipeSectionName }, { "鎵撶爜鍘熸枡绠″瀷鍙�", new_workPlanList.First().MaterialMode }, - { "鎵撶爜鍘熸枡鏍囪瘑", new_workPlanList.First().DataIdentifier } + { "鎵撶爜鍘熸枡鏍囪瘑", new_workPlanList.First().DataIdentifier }, + { "鎵撶爜鍘熸枡绠℃壒娆�", callMaterialOrder.MaterialBatch },//鎵规 }; _variableService.WriteValueAsync(keyValuePairs); @@ -333,6 +476,171 @@ } } + /// <summary> + /// 璇锋眰鐢熸垚鎵撶爜浜у搧鐮佷俊鍙� + /// </summary> + /// <returns></returns> + private async Task HanlderForPringBarCodeByCreateProductAsync() + { + + var workPlanAppService = _serviceProvider.GetRequiredService<IWorkPlanAppService>(); + var workTaskAppService = _serviceProvider.GetRequiredService<IWorkTaskAppService>(); + var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>(); + var workTaskRepository = _serviceProvider.GetRequiredService<IWorkTaskRepository>(); + 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())) + { + + } + else + { + + + + var myTaskNo = plcTaskNo.Content.Value.SafeString().ToString(); + CallMaterialOrder callMaterialOrder = null; + try + { + //鏍规嵁wms浠诲姟鍙峰鎵� 鍙枡宸ュ崟 + callMaterialOrder = await callMaterialOrderAppService.GetSingleByFilterAsync(x => x.WmsTaskNo == myTaskNo); + if (callMaterialOrder == null) return;//缁撴潫 + + + //鏍规嵁鍘熸枡鏍囪瘑瀵绘壘 浣滀笟璁″垝 + var workTaskList = await workTaskAppService.GetListByFilterAsync(x => x.DataIdentifier == callMaterialOrder.DataIdentifier); + if (workTaskList?.Count == 0) return;//缁撴潫 + //鏇存柊涓虹敓浜т腑 + + //鏍规嵁鍘熸枡鏍囪瘑瀵绘壘 浣滀笟璁″垝 + var workPlanList = await workPlanAppService.GetListByFilterAsync(x => x.DataIdentifier == callMaterialOrder.DataIdentifier); + if (workPlanList?.Count == 0) return;//缁撴潫 + + //TODO:鏆傛椂鐢熸垚浜у搧ID + //var productID = DateTime.Now.ToString("yyyyMMddHHmmssfff"); + var productID = callMaterialOrder.DataIdentifier; + Dictionary<string, object?> keyValuePairs_productID = new Dictionary<string, object?> + { + { "鎵撶爜_ProductID", productID}, + { "CMS鍙嶉璇锋眰鐢熸垚鎵撶爜浜у搧鐮佷俊鍙风粨鏋�", true}, + }; + var ret = _variableService.WriteValueAsync(keyValuePairs_productID); + + //鏇存柊 浠诲姟 涓虹敓浜т腑 + var new_workTaskList = workTaskList.Where(x => x.ProcessRouteNumber == "鍒囧壊").ToList(); + foreach (var item in new_workTaskList) + { + item.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.鐢熶骇涓�; + } + await workTaskRepository.UpdateManyAsync(new_workTaskList); + + //鏇存柊涓虹敓浜т腑 + var new_workPlanList = workPlanList.Where(x => x.ProcessRouteNumber == "鍒囧壊").ToList(); + foreach (var item in new_workPlanList) + { + item.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.鐢熶骇涓�; + } + await workPlanRepository.UpdateManyAsync(new_workPlanList); + + + uow.CompleteAsync(); + } + catch (Exception) + { + uow.RollbackAsync(); + throw; + } + } + } + + /// <summary> + /// 璇锋眰鐢熸垚鎵撶爜浜у搧鐮佷俊鍙�(鍊间负false鐨勬椂鍊�) + /// </summary> + /// <returns></returns> + private async Task HanlderForPringBarCodeByCreateProductWhenFalseAsync() + { + Dictionary<string, object?> keyValuePairs_productID = new Dictionary<string, object?> + { + { "CMS鍙嶉璇锋眰鐢熸垚鎵撶爜浜у搧鐮佷俊鍙风粨鏋�", false}, + }; + var ret = _variableService.WriteValueAsync(keyValuePairs_productID); + } + + + ///// <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> /// 鍒囧壊 @@ -340,6 +648,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浠诲姟鍙�"); @@ -349,57 +665,359 @@ } 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.GetSingleByFilterAsync(x => x.WmsTaskNo == myTaskNo); + if (callMaterialOrder == null) return;//缁撴潫 + + + + //鏍规嵁鍘熸枡鏍囪瘑瀵绘壘 浣滀笟璁″垝 + var workPlanList = await workPlanAppService.GetListByFilterAsync(x => x.DataIdentifier == 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 pipeSpecCode1 = ""; + var pipeSpecCode2 = ""; + var pipeSpecCode3 = ""; + 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; + pipeSpecCode1 = new_workPlanList[i].PipeSpecCode; + } + if (i == 1) + { + code2 = new_workPlanList[i].CuttingPosition; + pipeSpecCode2 = new_workPlanList[i].PipeSpecCode; + } + if (i == 2) + { + code3 = new_workPlanList[i].CuttingPosition; + pipeSpecCode3 = new_workPlanList[i].PipeSpecCode; + } + } + Dictionary<string, object?> keyValuePairs = new Dictionary<string, object?> + { + { "鍒囧壊浣嶇疆1",code1}, + { "鍒囧壊浣嶇疆2", code2}, + { "鍒囧壊浣嶇疆3", code3 }, + { "鍒囧壊绠℃缂栫爜1",pipeSpecCode1}, + { "鍒囧壊绠℃缂栫爜2", pipeSpecCode2}, + { "鍒囧壊绠℃缂栫爜3", pipeSpecCode3 }, + { "鍒囧壊绠℃缂栫爜", new_workPlanList.First().PipeSpecCode }, + { "鍒囧壊绠℃鍚嶇О", new_workPlanList.First().PipeSectionName }, + { "鍒囧壊鍘熸枡绠″瀷鍙�", new_workPlanList.First().MaterialMode }, + { "鍒囧壊鍘熸枡鏍囪瘑", new_workPlanList.First().DataIdentifier }, + { "鍒囧壊鍘熸枡绠℃壒娆�", callMaterialOrder.MaterialBatch },//鎵规 + }; + _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 _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(); + + + 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?> + } + } + + /// <summary> + /// 璇锋眰鐢熸垚鍒囧壊浜у搧鐮佷俊鍙� + /// </summary> + /// <returns></returns> + private async Task HanlderForCutByCreateProductAsync() + { + + var workPlanAppService = _serviceProvider.GetRequiredService<IWorkPlanAppService>(); + var workTaskAppService = _serviceProvider.GetRequiredService<IWorkTaskAppService>(); + var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>(); + var workTaskRepository = _serviceProvider.GetRequiredService<IWorkTaskRepository>(); + 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())) + { + + } + else + { + + + + var myTaskNo = plcTaskNo.Content.Value.SafeString().ToString(); + CallMaterialOrder callMaterialOrder = null; + try + { + //鏍规嵁wms浠诲姟鍙峰鎵� 鍙枡宸ュ崟 + callMaterialOrder = await callMaterialOrderAppService.GetSingleByFilterAsync(x => x.WmsTaskNo == myTaskNo); + if (callMaterialOrder == null) return;//缁撴潫 + + //鏍规嵁鍘熸枡鏍囪瘑瀵绘壘 浣滀笟璁″垝 + var workTaskList = await workTaskAppService.GetListByFilterAsync(x => x.DataIdentifier == callMaterialOrder.DataIdentifier); + if (workTaskList?.Count == 0) return;//缁撴潫 + + var new_workTaskList = workTaskList.Where(x => x.ProcessName == "鍒囧壊宸ュ簭").ToList(); + //鏇存柊涓虹敓浜т腑 + foreach (var item in new_workTaskList) + { + item.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.鐢熶骇涓�; + item.Remark = "鏇存柊鐢熶骇涓�"; + } + await workTaskRepository.UpdateManyAsync(new_workTaskList); + + var new_workTaskList_printCode = workTaskList.Where(x => x.ProcessName == "鎵撶爜宸ュ簭").ToList(); + foreach (var item in new_workTaskList_printCode) + { + item.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.宸插畬鎴�; + item.Remark = "鏇存柊宸插畬鎴�"; + } + await workTaskRepository.UpdateManyAsync(new_workTaskList_printCode); + + //鏍规嵁鍘熸枡鏍囪瘑瀵绘壘 浣滀笟璁″垝 + var workPlanList = await workPlanAppService.GetListByFilterAsync(x => x.DataIdentifier == callMaterialOrder.DataIdentifier); + if (workPlanList?.Count == 0) return;//缁撴潫 + + //TODO:鏆傛椂鐢熸垚浜у搧ID + //var productID = DateTime.Now.ToString("yyyyMMddHHmmssfff"); + var productID = callMaterialOrder.DataIdentifier; + Dictionary<string, object?> keyValuePairs_productID = new Dictionary<string, object?> { { "鍒囧壊_ProductID", productID}, + { "CMS鍙嶉璇锋眰鐢熸垚鍒囧壊浜у搧鐮佷俊鍙风粨鏋�", true}, }; - var ret = _variableService.WriteValueAsync(keyValuePairs); + var ret = _variableService.WriteValueAsync(keyValuePairs_productID); + + + + var new_workPlanList = workPlanList.Where(x => x.ProcessRouteNumber == "瑁呴厤").ToList(); + //鏇存柊涓虹敓浜т腑 + foreach (var item in new_workPlanList) + { + item.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.鐢熶骇涓�; + item.Remark = "鏇存柊鐢熶骇涓�"; + } + await workPlanRepository.UpdateManyAsync(new_workPlanList); + + var new_workPlanList_printCode = workPlanList.Where(x => x.ProcessRouteNumber == "鍒囧壊").ToList(); + foreach (var item in new_workPlanList_printCode) + { + item.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.宸插畬鎴�; + item.Remark = "鏇存柊宸插畬鎴�"; + } + await workPlanRepository.UpdateManyAsync(new_workPlanList_printCode); + + + uow.CompleteAsync(); + } + catch (Exception) + { + uow.RollbackAsync(); + throw; + } + } + } + + /// <summary> + /// 璇锋眰鐢熸垚鍒囧壊浜у搧鐮佷俊鍙凤紙鍊间负false鐨勬椂鍊欙級 + /// </summary> + /// <returns></returns> + private async Task HanlderForCutByCreateProductWhenFlaseAsync() + { + + Dictionary<string, object?> keyValuePairs_productID = new Dictionary<string, object?> + { + { "CMS鍙嶉璇锋眰鐢熸垚鍒囧壊浜у搧鐮佷俊鍙风粨鏋�", false}, + }; + var ret = _variableService.WriteValueAsync(keyValuePairs_productID); + } + + + + /// <summary> + /// 瑁呴厤瀹屽伐淇″彿=true鏃� + /// </summary> + /// <returns></returns> + private async Task HanlderFor瑁呴厤瀹屽伐淇″彿Async() + { + + var workPlanAppService = _serviceProvider.GetRequiredService<IWorkPlanAppService>(); + var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>(); + var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>(); + + var pipeSpecCode = await _variableService.ReadValueAsync("瑁呴厤绠℃缂栫爜"); + + if (string.IsNullOrEmpty(pipeSpecCode?.Content?.Value.SafeString().ToString())) + { + + } + else + { + + + + var myPipeSpecCode = pipeSpecCode.Content.Value.SafeString().ToString(); + CallMaterialOrder callMaterialOrder = null; + try + { + var sharedService = _serviceProvider.GetRequiredService<SharedService>(); + var userName = await _variableService.ReadValueAsync("瑁呴厤浜�"); + MyCurrentUser myCurrentUser = new MyCurrentUser() + { + UserAccount = userName.Content.Value.SafeString().ToString() + }; + await sharedService.CompleteAssemblyProcess(_serviceProvider, new Application.Contracts.Dtos.WorkPlan.CompleteAssemblyProcessInput() { PipeSpecCode = myPipeSpecCode, ProcessName = "瑁呴厤宸ュ簭" }, myCurrentUser); + + } + catch (Exception ex) + { + _logger.LogException(ex, LogLevel.Error); + } + } + } + + /// <summary> + /// 鐒婃帴瀹屽伐淇″彿=true鏃� + /// </summary> + /// <returns></returns> + private async Task HanlderFor鐒婃帴瀹屽伐淇″彿Async() + { + + var workPlanAppService = _serviceProvider.GetRequiredService<IWorkPlanAppService>(); + var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>(); + var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>(); + + var pipeSpecCode = await _variableService.ReadValueAsync("鐒婃帴绠℃缂栫爜"); + + if (string.IsNullOrEmpty(pipeSpecCode?.Content?.Value.SafeString().ToString())) + { + + } + else + { + + + + var myPipeSpecCode = pipeSpecCode.Content.Value.SafeString().ToString(); + CallMaterialOrder callMaterialOrder = null; + try + { + var sharedService = _serviceProvider.GetRequiredService<SharedService>(); + var userName = await _variableService.ReadValueAsync("鐒婃帴浜�"); + MyCurrentUser myCurrentUser = new MyCurrentUser() + { + UserAccount = userName.Content.Value.SafeString().ToString() + }; + await sharedService.CompleteAssemblyProcess(_serviceProvider, new Application.Contracts.Dtos.WorkPlan.CompleteAssemblyProcessInput() { PipeSpecCode = myPipeSpecCode, ProcessName = "鐒婃帴宸ュ簭" }, myCurrentUser); + + } + catch (Exception ex) + { + _logger.LogException(ex, LogLevel.Error); + } + } + } + + /// <summary> + /// 娉曞叞鍐茬爜瀹屽伐淇″彿=true鏃� + /// </summary> + /// <returns></returns> + private async Task HanlderFor娉曞叞鍐茬爜瀹屽伐淇″彿Async() + { + + var txt = "娉曞叞鍐茬爜"; + var workPlanAppService = _serviceProvider.GetRequiredService<IWorkPlanAppService>(); + var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>(); + var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>(); + + var pipeSpecCode = await _variableService.ReadValueAsync($"{txt}绠℃缂栫爜"); + + if (string.IsNullOrEmpty(pipeSpecCode?.Content?.Value.SafeString().ToString())) + { + + } + else + { + var myPipeSpecCode = pipeSpecCode.Content.Value.SafeString().ToString(); + CallMaterialOrder callMaterialOrder = null; + try + { + var sharedService = _serviceProvider.GetRequiredService<SharedService>(); + var userName = await _variableService.ReadValueAsync($"{txt}浜�"); + MyCurrentUser myCurrentUser = new MyCurrentUser() + { + UserAccount = userName.Content.Value.SafeString().ToString() + }; + await sharedService.SendFlangeCode_CompleteAssemblyProcess(_serviceProvider, new Application.Contracts.Dtos.WorkPlan.CompleteAssemblyProcessInput() + { PipeSpecCode = myPipeSpecCode, ProcessName = $"{txt}宸ュ簭" }, myCurrentUser); + + } + catch (Exception ex) + { + _logger.LogException(ex, LogLevel.Error); + } + } + } + + /// <summary> + /// 瀹屽伐淇″彿=false鏃� + /// </summary> + /// <returns></returns> + private async Task HanlderFor瀹屽伐淇″彿WhenFalseAsync(string processName) + { + try + { + var sharedService = _serviceProvider.GetRequiredService<SharedService>(); + await sharedService.CompleteHandleOutStoreFinish(_serviceProvider, processName, false); + } + catch (Exception) + { + + } } } -- Gitblit v1.9.3