From a3a2b238a2626ef8744e7a135f9ca2e2fbb5184c Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周三, 21 5月 2025 10:17:36 +0800
Subject: [PATCH] 优化

---
 PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/MesAppService.cs |  277 ++++++++++++++++++++++++++++--------------------------
 1 files changed, 143 insertions(+), 134 deletions(-)

diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/MesAppService.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/MesAppService.cs
index a051028..c2beaf6 100644
--- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/MesAppService.cs
+++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/MesAppService.cs
@@ -8,157 +8,166 @@
 using CMS.Plugin.ProductManagement.Abstractions;
 using Microsoft.Extensions.DependencyInjection;
 using Volo.Abp;
+using Volo.Abp.Users;
 
 namespace CMS.Plugin.PipeLineLems.Application.Implements;
 
-public class SharedService : CMSPluginAppService
+public class MesAppService : CMSPluginAppService,IMesAppService
 {
     private readonly IServiceProvider _serviceProvider;
-    private readonly IWorkPlanAppService _workPlanAppService;
-
+    private readonly WorkPlanAppService _workPlanAppService;
+    private readonly SharedService _sharedService;
     //private readonly IEventBus _eventBus;
 
-    public SharedService(IServiceProvider serviceProvider
-        , IWorkPlanAppService workPlanAppService
+    public MesAppService(IServiceProvider serviceProvider
+        , WorkPlanAppService workPlanAppService
         //, IEventBus eventBus
+        , SharedService sharedService
         )
     {
         _serviceProvider = serviceProvider;
         // _eventBus = eventBus;
         _workPlanAppService = workPlanAppService;
+        _sharedService = sharedService;
     }
 
-    public async Task<MesOrderResponse> CreateAsync(List<WorkPlanInput> input)
+    public async Task<MesOrderResponse> CreateAsync(List<WorkPlanInput> input, string userId, string userAccount)
     {
-        if (input == null)
-        {
-            throw new UserFriendlyException("杈撳叆鍙傛暟涓嶈兘涓虹┖");
-        }
+        var response = await _sharedService.CommonCreatebyApsAsync(input, _serviceProvider, _workPlanAppService, userId, userAccount);
 
-        if (input.Count == 0)
-        {
-            throw new UserFriendlyException("杈撳叆鍙傛暟Data涓嶈兘涓虹┖");
-        }
-
-        var orderManager = _serviceProvider.GetRequiredService<IOrderManager>();
-        var productProvider = _serviceProvider.GetRequiredService<IProductProvider>();
-        var formulaProvider = _serviceProvider.GetRequiredService<IFormulaProvider>();
-        List<OrderModel> orderModels = new List<OrderModel>();
-        //鎸夌収浠诲姟缂栧彿鍒嗙粍
-        var groupTask = input.GroupBy(x => x.TaskCode);
-        foreach (var gTask in groupTask)
-        {
-            var taskCode = gTask.Key;
-            var order = await orderManager.GetByCodeAsync(taskCode);
-            if (order != null)
-            {
-                throw new UserFriendlyException($"浠诲姟缂栧彿[{taskCode}]宸插瓨鍦�");
-            }
-
-
-            //var product = await productProvider.FindByNameAsync(orderItem.PipeSectionName);
-            //if (product == null)
-            //{
-            //    throw new UserFriendlyException($"浜у搧鍚嶇О[{orderItem.PipeSectionName}]涓嶅瓨鍦�");
-            //}
-
-            //var formula = await formulaProvider.GetFormulaAsync(product.Id);
-            //if (formula == null)
-            //{
-            //    throw new UserFriendlyException($"浜у搧鍨嬪彿[{orderItem.MaterialCode}]鏃犲叧鑱旈厤鏂�");
-            //}
-            //棣栧厛瑕佸垱寤� 鎵撶爜鍒囧壊鐨勫伐鍗� 
-            var productForCut = await productProvider.FindByNameAsync("鍒囧壊鍘熸枡绠�");
-            if (productForCut == null)
-            {
-                throw new UserFriendlyException($"浜у搧鍚嶇О[鍒囧壊鍘熸枡绠涓嶅瓨鍦�");
-            }
-            var formulaForCut = await formulaProvider.GetFormulaAsync(productForCut.Id);
-            if (formulaForCut == null)
-            {
-                throw new UserFriendlyException($"浜у搧鍚嶇О[鍒囧壊鍘熸枡绠鏃犲叧鑱旈厤鏂�");
-            }
-            //鍒嗙粍鏁版嵁
-            var group = gTask.ToList().GroupBy(x => x.DataIdentifier);
-            foreach (var item in group)
-            {
-                OrderModel orderModelForCut = new OrderModel()
-                {
-                    Id = Guid.NewGuid(),
-                    Code = "Cut_" + taskCode,
-                    Source = "APS鎺ㄩ��",
-                    PlanStartTime = gTask.ToList().First().PlannedStartTime,
-                    PlanFinishTime = gTask.ToList().First().PlannedEndTime,
-                    PlanQty = (ulong)item.ToList().Count,
-                    Status = OrderStatus.NotActive,
-                    Product = new AssociationProductModel() { Id = productForCut.Id, Name = productForCut.Name, Model = productForCut.Model, ShortNumber = productForCut.ShortNumber },
-                    Formula = new AssociationFormulaModel() { Id = formulaForCut.Id, Code = formulaForCut.Code, Name = formulaForCut.Name }
-                };
-                orderModelForCut.ExtraProperties["OuterDiameter"] = gTask.ToList().First().OuterDiameter;//澶栧緞
-                orderModelForCut.ExtraProperties["Material"] = gTask.ToList().First().Material;//鏉愯川
-                orderModelForCut.ExtraProperties["Length"] = gTask.ToList().First().Length;//闀垮害
-
-                var orderForCut = await orderManager.GetByCodeAsync(orderModelForCut.Code);
-                if (orderForCut != null)
-                {
-                    //throw new UserFriendlyException($"宸ュ崟[{orderModelForCut.Code}]宸插瓨鍦�");
-                    //涓嶅啀鎶涘紓甯革紝鐩存帴璺宠繃
-                    break;
-                }
-
-                var orderModelResultForCut = await orderManager.CreateAsync(orderModelForCut);
-                if (orderModelResultForCut == null)
-                {
-                    throw new UserFriendlyException($"宸ュ崟[{orderModelForCut.Code}]鍒涘缓澶辫触");
-                }
-                orderModels.Add(orderModelResultForCut);
-
-
-                //OrderModel orderModel = new OrderModel();
-                //orderModel.Id = Guid.NewGuid();
-                //orderModel.Code = orderItem.TaskCode;
-                //orderModel.Source = "APS鎺ㄩ��";
-                //orderModel.Product = new AssociationProductModel() { Id = product.Id, Name = product.Name, Model = product.Model, ShortNumber = product.ShortNumber };
-                ////orderModel.Formula = new AssociationFormulaModel() { Id = formula.Id, Code = formula.Code, Name = formula.Name };
-                //orderModel.PlanStartTime = orderItem.PlannedStartTime;
-                //orderModel.PlanFinishTime = orderItem.PlannedEndTime;
-                //orderModel.PlanQty = (ulong?)orderItem.OrderQty;
-                //orderModel.Status = OrderStatus.NotActive;
-                //orderModel.ExtraProperties["Source"] = "ddd";
-                //var source = orderModel.ExtraProperties["Source"];
-                //var orderModelResult = await orderManager.CreateAsync(orderModel);
-                //if (orderModelResult == null)
-                //{
-                //    throw new UserFriendlyException($"宸ュ崟[{orderItem.TaskCode}]鍒涘缓澶辫触");
-                //}
-                //orderModels.Add(orderModelResult);
-            }
-
-        }
-
-
-        //淇濆瓨鍒拌〃涓�
-        foreach (var item in input)
-        {
-            var insertObj = ObjectMapper.Map<WorkPlanInput, WorkPlanCreateDto>(item);
-            //insertObj.OrgMaterialCode = "1111";
-            insertObj.Sort = 1;
-            await _workPlanAppService.CreateAsync(insertObj);
-        }
-
-
-        // 鍙戝竷浜嬩欢
-        //await _eventBus.PublishAsync(new EntityChangedEto("MESCREATE", input, null, EntityChangeType.Add, true));
-
-        var response = new MesOrderResponse
-        {
-            Code = "000000",
-            Data = orderModels,
-            Fail = false,
-            Mesg = "澶勭悊鎴愬姛",
-            Success = true,
-            Time = DateTime.UtcNow
-        };
         return response;
     }
+    //public async Task<MesOrderResponse> CreateAsync(List<WorkPlanInput> input)
+    //{
+    //    if (input == null)
+    //    {
+    //        throw new UserFriendlyException("杈撳叆鍙傛暟涓嶈兘涓虹┖");
+    //    }
+
+    //    if (input.Count == 0)
+    //    {
+    //        throw new UserFriendlyException("杈撳叆鍙傛暟Data涓嶈兘涓虹┖");
+    //    }
+
+    //    var orderManager = _serviceProvider.GetRequiredService<IOrderManager>();
+    //    var productProvider = _serviceProvider.GetRequiredService<IProductProvider>();
+    //    var formulaProvider = _serviceProvider.GetRequiredService<IFormulaProvider>();
+    //    List<OrderModel> orderModels = new List<OrderModel>();
+    //    //鎸夌収浠诲姟缂栧彿鍒嗙粍
+    //    var groupTask = input.GroupBy(x => x.TaskCode);
+    //    foreach (var gTask in groupTask)
+    //    {
+    //        var taskCode = gTask.Key;
+    //        var order = await orderManager.GetByCodeAsync(taskCode);
+    //        if (order != null)
+    //        {
+    //            throw new UserFriendlyException($"浠诲姟缂栧彿[{taskCode}]宸插瓨鍦�");
+    //        }
+
+
+    //        //var product = await productProvider.FindByNameAsync(orderItem.PipeSectionName);
+    //        //if (product == null)
+    //        //{
+    //        //    throw new UserFriendlyException($"浜у搧鍚嶇О[{orderItem.PipeSectionName}]涓嶅瓨鍦�");
+    //        //}
+
+    //        //var formula = await formulaProvider.GetFormulaAsync(product.Id);
+    //        //if (formula == null)
+    //        //{
+    //        //    throw new UserFriendlyException($"浜у搧鍨嬪彿[{orderItem.MaterialCode}]鏃犲叧鑱旈厤鏂�");
+    //        //}
+    //        //棣栧厛瑕佸垱寤� 鎵撶爜鍒囧壊鐨勫伐鍗� 
+    //        var productForCut = await productProvider.FindByNameAsync("鍒囧壊鍘熸枡绠�");
+    //        if (productForCut == null)
+    //        {
+    //            throw new UserFriendlyException($"浜у搧鍚嶇О[鍒囧壊鍘熸枡绠涓嶅瓨鍦�");
+    //        }
+    //        var formulaForCut = await formulaProvider.GetFormulaAsync(productForCut.Id);
+    //        if (formulaForCut == null)
+    //        {
+    //            throw new UserFriendlyException($"浜у搧鍚嶇О[鍒囧壊鍘熸枡绠鏃犲叧鑱旈厤鏂�");
+    //        }
+    //        //鍒嗙粍鏁版嵁
+    //        var group = gTask.ToList().GroupBy(x => x.DataIdentifier);
+    //        foreach (var item in group)
+    //        {
+    //            OrderModel orderModelForCut = new OrderModel()
+    //            {
+    //                Id = Guid.NewGuid(),
+    //                Code = "Cut_" + taskCode,
+    //                Source = "APS鎺ㄩ��",
+    //                PlanStartTime = gTask.ToList().First().PlannedStartTime,
+    //                PlanFinishTime = gTask.ToList().First().PlannedEndTime,
+    //                PlanQty = (ulong)item.ToList().Count,
+    //                Status = OrderStatus.NotActive,
+    //                Product = new AssociationProductModel() { Id = productForCut.Id, Name = productForCut.Name, Model = productForCut.Model, ShortNumber = productForCut.ShortNumber },
+    //                Formula = new AssociationFormulaModel() { Id = formulaForCut.Id, Code = formulaForCut.Code, Name = formulaForCut.Name }
+    //            };
+    //            orderModelForCut.ExtraProperties["OuterDiameter"] = gTask.ToList().First().OuterDiameter;//澶栧緞
+    //            orderModelForCut.ExtraProperties["Material"] = gTask.ToList().First().Material;//鏉愯川
+    //            orderModelForCut.ExtraProperties["Length"] = gTask.ToList().First().Length;//闀垮害
+
+    //            var orderForCut = await orderManager.GetByCodeAsync(orderModelForCut.Code);
+    //            if (orderForCut != null)
+    //            {
+    //                //throw new UserFriendlyException($"宸ュ崟[{orderModelForCut.Code}]宸插瓨鍦�");
+    //                //涓嶅啀鎶涘紓甯革紝鐩存帴璺宠繃
+    //                break;
+    //            }
+
+    //            var orderModelResultForCut = await orderManager.CreateAsync(orderModelForCut);
+    //            if (orderModelResultForCut == null)
+    //            {
+    //                throw new UserFriendlyException($"宸ュ崟[{orderModelForCut.Code}]鍒涘缓澶辫触");
+    //            }
+    //            orderModels.Add(orderModelResultForCut);
+
+
+    //            //OrderModel orderModel = new OrderModel();
+    //            //orderModel.Id = Guid.NewGuid();
+    //            //orderModel.Code = orderItem.TaskCode;
+    //            //orderModel.Source = "APS鎺ㄩ��";
+    //            //orderModel.Product = new AssociationProductModel() { Id = product.Id, Name = product.Name, Model = product.Model, ShortNumber = product.ShortNumber };
+    //            ////orderModel.Formula = new AssociationFormulaModel() { Id = formula.Id, Code = formula.Code, Name = formula.Name };
+    //            //orderModel.PlanStartTime = orderItem.PlannedStartTime;
+    //            //orderModel.PlanFinishTime = orderItem.PlannedEndTime;
+    //            //orderModel.PlanQty = (ulong?)orderItem.OrderQty;
+    //            //orderModel.Status = OrderStatus.NotActive;
+    //            //orderModel.ExtraProperties["Source"] = "ddd";
+    //            //var source = orderModel.ExtraProperties["Source"];
+    //            //var orderModelResult = await orderManager.CreateAsync(orderModel);
+    //            //if (orderModelResult == null)
+    //            //{
+    //            //    throw new UserFriendlyException($"宸ュ崟[{orderItem.TaskCode}]鍒涘缓澶辫触");
+    //            //}
+    //            //orderModels.Add(orderModelResult);
+    //        }
+
+    //    }
+
+
+    //    //淇濆瓨鍒拌〃涓�
+    //    foreach (var item in input)
+    //    {
+    //        var insertObj = ObjectMapper.Map<WorkPlanInput, WorkPlanCreateDto>(item);
+    //        //insertObj.OrgMaterialCode = "1111";
+    //        insertObj.Sort = 1;
+    //        await _workPlanAppService.CreateAsync(insertObj);
+    //    }
+
+
+    //    // 鍙戝竷浜嬩欢
+    //    //await _eventBus.PublishAsync(new EntityChangedEto("MESCREATE", input, null, EntityChangeType.Add, true));
+
+    //    var response = new MesOrderResponse
+    //    {
+    //        Code = "000000",
+    //        Data = orderModels,
+    //        Fail = false,
+    //        Mesg = "澶勭悊鎴愬姛",
+    //        Success = true,
+    //        Time = DateTime.UtcNow
+    //    };
+    //    return response;
+    //}
 }

--
Gitblit v1.9.3