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