From 847e7a89974cb6f5bcfbf7fc8fbe84f085502af6 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周日, 11 5月 2025 15:41:44 +0800
Subject: [PATCH] 222

---
 PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs |  118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 116 insertions(+), 2 deletions(-)

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 63676a1..e8fe2be 100644
--- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs
+++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs
@@ -12,6 +12,9 @@
 using CMS.Plugin.PipeLineLems.Application.Contracts.Services;
 using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.CallMaterialOrder;
 using Volo.Abp.Uow;
+using System.Text;
+using CMS.Plugin.PipeLineLems.Domain.WorkPlan;
+using CMS.Plugin.PipeLineLems.Domain.CallMaterialOrderRecord;
 
 namespace CMS.Plugin.PipeLineLems.Application.Implements;
 
@@ -20,6 +23,14 @@
 /// </summary> 
 public class SharedService : CMSPluginAppService
 {
+    /// <summary>
+    /// 鍒涘缓浣滀笟璁″垝
+    /// </summary>
+    /// <param name="input"></param>
+    /// <param name="_serviceProvider"></param>
+    /// <param name="workPlanAppService"></param>
+    /// <returns></returns>
+    /// <exception cref="UserFriendlyException"></exception>
 
     public async Task<MesOrderResponse> CommonCreatebyApsAsync(List<WorkPlanInput> input, IServiceProvider _serviceProvider,
         WorkPlanAppService workPlanAppService
@@ -191,12 +202,12 @@
         }
         catch (Exception)
         {
-
+            await uow.RollbackAsync();
             throw;
         }
         finally
         {
-            await uow.RollbackAsync();
+
         }
 
 
@@ -255,4 +266,107 @@
 
         return (true, string.Empty);
     }
+
+
+    /// <summary>
+    /// 鏍规嵁鍘熸枡鏍囪瘑杩涜鍙枡鎿嶄綔
+    /// </summary>
+    /// <param name="dataIdentifier">鍘熸枡鏍囪瘑</param>
+    /// <param name="_serviceProvider">鏈嶅姟鎻愪緵鑰�</param>
+    /// <returns>鎿嶄綔缁撴灉</returns>
+    /// <exception cref="UserFriendlyException">褰撴暟鎹笉瀛樺湪鎴栫姸鎬佷笉鍏佽鍙枡鏃舵姏鍑�</exception>
+    public async Task<MesOrderResponse> CallMaterialByDataIdentifier(Guid id, IServiceProvider _serviceProvider)
+    {
+        if (string.IsNullOrEmpty(id.ToString()))
+        {
+            throw new UserFriendlyException("鍘熸枡鏍囪瘑涓嶈兘涓虹┖");
+        }
+
+        var callMaterialOrderRepository = _serviceProvider.GetRequiredService<ICallMaterialOrderRepository>();
+        var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>();
+        var callMaterialOrderRecordRepository = _serviceProvider.GetRequiredService<ICallMaterialOrderRecordRepository>();
+        var orderManager = _serviceProvider.GetRequiredService<IOrderManager>();
+
+        // 鏌ユ壘鏁版嵁
+
+        var callMaterialOrder = await callMaterialOrderRepository.GetAsync(id);
+        if (callMaterialOrder == null)
+        {
+            throw new UserFriendlyException($"鎵句笉鍒板彨鏂欒褰�");
+        }
+
+        // 楠岃瘉鐘舵��
+        //if (callMaterialOrder.CallMaterialStatus != Domain.Shared.Enums.CallMaterialStatusEnum.鏈墽琛�)
+        //{
+        //    throw new UserFriendlyException($"鍘熸枡鏍囪瘑涓� '{callMaterialOrder.DataIdentifier}' 鐨勫彨鏂欒褰曠姸鎬佷负 '{callMaterialOrder.CallMaterialStatus}'锛屼笉鍏佽鍙枡");
+        //}
+
+        // 鏇存柊鏁版嵁
+        callMaterialOrder.WmsRetResult = "鎴愬姛";
+        callMaterialOrder.WmsTaskNo = GenerateRandomTaskNo();
+        callMaterialOrder.CallMaterialStatus = Domain.Shared.Enums.CallMaterialStatusEnum.鍙枡瀹屾垚;
+        callMaterialOrder.LastModifierName = "SuperAdmin";
+
+        await callMaterialOrderRepository.UpdateAsync(callMaterialOrder);
+
+        //鏇存柊浣滀笟璁″垝琛�
+        var workPlanList = await workPlanRepository.FindByDataIdentifierAsync(callMaterialOrder.DataIdentifier);
+        foreach (var item in workPlanList)
+        {
+            item.CallMaterialStatus = Domain.Shared.Enums.CallMaterialStatusEnum.鍙枡瀹屾垚;
+            item.LastModifierName = "SuperAdmin";
+        }
+        await workPlanRepository.UpdateManyAsync(workPlanList);
+
+        //鏂板鍙枡璁板綍琛�
+        var callMaterialOrderRecord = new CallMaterialOrderRecord()
+        {
+            CallMaterialStatus = Domain.Shared.Enums.CallMaterialStatusEnum.鍙枡瀹屾垚,
+            MaterialMode = callMaterialOrder.MaterialMode,
+            DataIdentifier = callMaterialOrder.DataIdentifier,
+            Quantity = 1,
+            WmsRetResult = callMaterialOrder.WmsRetResult,
+            WmsTaskNo = callMaterialOrder.WmsTaskNo,
+            CreatorName = "SuperAdmin"
+        };
+        await callMaterialOrderRecordRepository.InsertAsync(callMaterialOrderRecord);
+
+        //鏇存柊宸ュ崟琛ㄧ殑鐘舵��
+        var pipeSpecCodeList = workPlanList.Select(x => x.PipeSpecCode).Distinct().ToList();
+        foreach (var item in pipeSpecCodeList)
+        {
+            var prodOrderNo = "Order_" + item;
+            var order = await orderManager.GetByCodeAsync(prodOrderNo);
+            if (order != null)
+            {
+                order.ExtraProperties["CallMaterialStatus"] = Domain.Shared.Enums.CallMaterialStatusEnum.鍙枡瀹屾垚.ToString();
+            }
+            await orderManager.UpdateAsync(order);
+        }
+
+
+        // 杩斿洖缁撴灉
+        var response = new MesOrderResponse
+        {
+            Code = "000000",
+            Fail = false,
+            Mesg = "鍙枡鎴愬姛",
+            Success = true,
+            Time = DateTime.UtcNow
+        };
+        return response;
+    }
+
+    /// <summary>
+    /// 鐢熸垚闅忔満鐨刉msTaskNo
+    /// </summary>
+    /// <returns>闅忔満鐢熸垚鐨勪换鍔$紪鍙�</returns>
+    private string GenerateRandomTaskNo()
+    {
+        // 鑾峰彇褰撳墠鏃堕棿鎴筹紙浠�1970-01-01 00:00:00 UTC鍒扮幇鍦ㄧ殑绉掓暟锛�
+        long timestamp = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
+
+        // 鐢熸垚鍓嶇紑
+        return $"WMS{timestamp}";
+    }
 }

--
Gitblit v1.9.3