From 7dccff98bbdf39624cc9430436833db968f1e80e Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周二, 20 5月 2025 15:41:39 +0800
Subject: [PATCH] 22

---
 PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs |  303 +++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 270 insertions(+), 33 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 297b6c4..867e94c 100644
--- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs
+++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs
@@ -1,36 +1,32 @@
+using CMS.Extensions.Variable;
 using CMS.Plugin.FormulaManagement.Abstractions;
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.CommonDto;
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialStocks;
+using CMS.Plugin.MaterialManagement.Abstractions;
 using CMS.Plugin.OrderManagement.Abstractions;
 using CMS.Plugin.OrderManagement.Abstractions.Enums;
 using CMS.Plugin.OrderManagement.Abstractions.Models;
-using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan;
-using CMS.Plugin.ProductManagement.Abstractions;
-using Microsoft.Extensions.DependencyInjection;
-using Volo.Abp;
-using Microsoft.Extensions.DependencyInjection;
-using NPOI.Util;
-using CMS.Plugin.PipeLineLems.Domain.CallMaterialOrder;
-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.Application.Contracts.Dtos.WorkPlan;
+using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkTask;
+using CMS.Plugin.PipeLineLems.Application.Contracts.Services;
+using CMS.Plugin.PipeLineLems.Domain.CallMaterialOrder;
 using CMS.Plugin.PipeLineLems.Domain.CallMaterialOrderRecord;
-using Volo.Abp.Users;
-using CmsQueryExtensions.Entitys;
-using CMS.Unit.RuntimeValue.Abstractions;
-using CMS.Extensions.Variable;
-using CMS.Plugin.TraceManagement.Abstractions.Models.Traces;
+using CMS.Plugin.PipeLineLems.Domain.WorkPlan;
+using CMS.Plugin.PipeLineLems.Domain.WorkTask;
 using CMS.Plugin.ProcessManagement.Abstractions;
-using KissUtil.Extensions;
+using CMS.Plugin.ProductManagement.Abstractions;
 using CMS.Plugin.TraceManagement.Abstractions;
-using CMS.Plugin.ProductManagement.Abstractions.Models;
-using CMS.Plugin.MaterialManagement.Abstractions;
-using CMS.Plugin.HIAWms.Application.Contracts.Services;
-using CMS.Plugin.HIAWms.Application.Contracts.Dtos.CommonDto;
-using System.Collections.Generic;
-using CMS.Plugin.HIAWms.Abstractions;
-using Newtonsoft.Json;
+using CMS.Plugin.TraceManagement.Abstractions.Models.Traces;
 using CmsQueryExtensions;
+using CmsQueryExtensions.Entitys;
+using CmsQueryExtensions.Extension;
+using KissUtil.Extensions;
+using Microsoft.Extensions.DependencyInjection;
+using Newtonsoft.Json;
+using Volo.Abp;
+using Volo.Abp.ObjectMapping;
+using Volo.Abp.Uow;
 
 namespace CMS.Plugin.PipeLineLems.Application.Implements;
 
@@ -49,11 +45,24 @@
     /// <returns></returns>
     public async Task<MesOrderResponse> CommonPick(IServiceProvider _serviceProvider, PickInput input, MyCurrentUser myCurrentUser)
     {
+        if (string.IsNullOrEmpty(input.TaskCode))
+        {
+            throw new UserFriendlyException("璇疯緭鍏ヤ换鍔$紪鍙�");
+        };
+        if (string.IsNullOrEmpty(input.PipeSpecCode))
+        {
+            throw new UserFriendlyException("璇疯緭鍏ョ娈电紪鐮�");
+        };
+        if (string.IsNullOrEmpty(input.ContinerNo))
+        {
+            throw new UserFriendlyException("璇疯緭鍏ユ墭鐩樺彿");
+        };
         //1銆佽褰曞垎鎷h褰曡〃
         //2銆佹洿鏂颁綔涓氳鍒掕〃鐨勭姸鎬� =宸插垎鎷�
         //3銆佸啓鍏� 鍒嗘嫞鍙橀噺
         //4銆佸啓鍏ヨ拷婧姤琛�
         //5銆佺墿鏂欑粍鐩�
+
 
         VariableService _variableService = _serviceProvider.GetRequiredService<VariableService>();
         var _workSectionManager = _serviceProvider.GetRequiredService<IWorkSectionManager>();
@@ -101,11 +110,58 @@
             });
         }
         //鐗╂枡鍙傛暟鍒楄〃
-        var firstWorkPlans = await workPlanAppService.GetListByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode);
-
-        var firstWorkPlan = await workPlanAppService.GetSingleByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode);
-
+        var firstWorkPlan = await workPlanAppService.GetSingleByFilterAsync(x => x.TaskCode == input.TaskCode);
         var callMaterialOrder = await callMaterialOrderAppService.GetSingleByFilterAsync(x => x.DataIdentifier == firstWorkPlan.DataIdentifier);
+        //TODO:杩欓噷璋冪敤wms鐨勫彨鏂欐帴鍙�
+        try
+        {
+            //棣栧厛鍒ゆ柇搴撳瓨鏄惁瀛樺湪
+            var dto = await IsExistInWms(input.PipeSpecCode);
+            if (dto != null)
+            {
+                throw new UserFriendlyException($"宸茬粡鍒嗘嫞杩囷紝搴撳瓨鍦ㄥ簱浣峽dto.PlaceNo},鎵樼洏鍙穥dto.ContainerNo}");
+            }
+
+
+            WmsMaterialStockCreateDto param = new WmsMaterialStockCreateDto()
+            {
+                ContainerNo = input.ContinerNo,
+                MaterialModel = firstWorkPlan.MaterialMode,
+                PlaceNo = input.PlaceNo,
+                StockNumber = 1,
+                MaterialBatch = callMaterialOrder.MaterialBatch,
+
+                RedundantField1 = firstWorkPlan.ProcessRouteNumber, //鎵╁睍瀛楁鏄剧ず 宸ヨ壓娴佸悜缂栧彿
+                RedundantField2 = firstWorkPlan.PipeSpecCode, //鎵╁睍瀛楁鏄剧ず 绠℃缂栫爜
+                RedundantField3 = firstWorkPlan.PipeSectionName, //鎵╁睍瀛楁鏄剧ず 绠℃鍚嶇О
+
+            };
+            string baseUrl = @"http://127.0.0.1:18000/api/v1/HIAWms/";
+            string url = baseUrl + "LMesOperate/LMesPick";
+            string json = JsonConvert.SerializeObject(param);
+            var result = HttpApiRequest.HttpPost(url, json);
+            var res = JsonConvert.DeserializeObject<CmsApiResponse<WmsMaterialStockDto>>(result);
+            if (res.Code == 200)
+            {
+                var retData = res.Data;
+                //callMaterialOrder.MaterialBatch = retData[0].MaterialBatch;
+                //callMaterialOrder.WmsTaskNo = retData[0].TaskNo;
+                //callMaterialOrder.WmsRetResult = res.Message;
+            }
+            else
+            {
+                throw new UserFriendlyException(res.Message);
+            }
+        }
+        catch (Exception)
+        {
+
+            throw;
+        }
+
+
+
+
 
         var rawPipe_DataIdentifier = await materialProvider.FindByNameAsync("鍘熸枡绠℃爣璇�");
         var rawPipe_MaterialMode = await materialProvider.FindByNameAsync("鍘熸枡绠″瀷鍙�");
@@ -213,6 +269,7 @@
         };
         return response;
     }
+
     /// <summary>
     /// 鍒涘缓浣滀笟璁″垝
     /// </summary>
@@ -221,7 +278,6 @@
     /// <param name="workPlanAppService"></param>
     /// <returns></returns>
     /// <exception cref="UserFriendlyException"></exception>
-
     public async Task<MesOrderResponse> CommonCreatebyApsAsync(List<WorkPlanInput> input, IServiceProvider _serviceProvider,
     WorkPlanAppService workPlanAppService,
     string userId, string userAccount
@@ -261,6 +317,8 @@
         var orderManager = _serviceProvider.GetRequiredService<IOrderManager>();
         var productProvider = _serviceProvider.GetRequiredService<IProductProvider>();
         var formulaProvider = _serviceProvider.GetRequiredService<IFormulaProvider>();
+
+        var workTaskAppService = _serviceProvider.GetRequiredService<IWorkTaskAppService>();
 
         List<OrderModel> orderModels = new List<OrderModel>();
 
@@ -398,16 +456,36 @@
                 insertObj.CreatorName = userAccount;
                 insertObj.Remark = "绯荤粺瀵煎叆";
                 await workPlanAppService.CreateAsync(insertObj);
+
+                //澧炲姞鏂板璁″垝浠诲姟琛ㄦ暟鎹� 銆怑ditby shaocx,2025-05-20銆�
+                var org_insertTaskObj = ObjectMapper.Map<WorkPlanCreateDto, WorkTaskCreateDto>(insertObj);
+                org_insertTaskObj.Son_TaskCode = insertObj.TaskCode;
+                await workTaskAppService.CreateAsync(org_insertTaskObj);
+                if (insertObj.ProcessName == "鍒囧壊宸ュ簭")
+                {//鏂板缓 鍒嗘嫞宸ュ簭
+                    var insertTaskObj = ObjectMapper.Map<WorkPlanCreateDto, WorkTaskCreateDto>(insertObj);
+                    insertTaskObj.Son_TaskCode = insertObj.TaskCode + "_1";
+                    insertTaskObj.ProcessName = "鍒嗘嫞宸ュ簭";
+                    await workTaskAppService.CreateAsync(insertTaskObj);
+                }
+                else if (insertObj.ProcessName == "瑁呴厤宸ュ簭")
+                {//鏂板缓 娉曞叞鍐茬爜宸ュ簭(澶氫釜)
+                 //鐩墠鏆傛椂鎼炴垚涓�涓硶鍏�
+                    var insertTaskObj = ObjectMapper.Map<WorkPlanCreateDto, WorkTaskCreateDto>(insertObj);
+                    insertTaskObj.Son_TaskCode = insertObj.TaskCode + "_1";
+                    insertTaskObj.ProcessName = "娉曞叞鍐茬爜宸ュ簭";
+                    await workTaskAppService.CreateAsync(insertTaskObj);
+                }
             }
 
             #endregion
 
             await uow.CompleteAsync();
         }
-        catch (Exception)
+        catch (Exception ex)
         {
             await uow.RollbackAsync();
-            throw;
+            throw ex;
         }
         finally
         {
@@ -486,6 +564,7 @@
 
         var callMaterialOrderRepository = _serviceProvider.GetRequiredService<ICallMaterialOrderRepository>();
         var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>();
+        var workTaskRepository = _serviceProvider.GetRequiredService<IWorkTaskRepository>();
         var callMaterialOrderRecordRepository = _serviceProvider.GetRequiredService<ICallMaterialOrderRecordRepository>();
         var orderManager = _serviceProvider.GetRequiredService<IOrderManager>();
 
@@ -516,6 +595,7 @@
             string url = baseUrl + "lMesOperate/LMesCallMaterial";
             string json = JsonConvert.SerializeObject(param);
             var result = HttpApiRequest.HttpPost(url, json);
+
             var res = JsonConvert.DeserializeObject<CmsApiResponse<List<MyCallMaterialOutput>>>(result);
             if (res.Code == 200)
             {
@@ -528,6 +608,7 @@
             {
                 throw new UserFriendlyException(res.Message);
             }
+            //*/
         }
         catch (Exception)
         {
@@ -553,6 +634,15 @@
             item.LastModifierName = "SuperAdmin";
         }
         await workPlanRepository.UpdateManyAsync(workPlanList);
+
+        //鏇存柊浣滀笟浠诲姟琛�
+        var workTaskList = await workTaskRepository.GetListByFilterAsync(x => x.DataIdentifier == callMaterialOrder.DataIdentifier);
+        foreach (var item in workTaskList)
+        {
+            item.CallMaterialStatus = Domain.Shared.Enums.CallMaterialStatusEnum.鍙枡瀹屾垚;
+            item.LastModifierName = "SuperAdmin";
+        }
+        await workTaskRepository.UpdateManyAsync(workTaskList);
 
         //鏂板鍙枡璁板綍琛�
         var callMaterialOrderRecord = new CallMaterialOrderRecord()
@@ -612,12 +702,17 @@
         VariableService _variableService = _serviceProvider.GetRequiredService<VariableService>();
         var callMaterialOrderRepository = _serviceProvider.GetRequiredService<ICallMaterialOrderRepository>();
         var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>();
+        var workTaskRepository = _serviceProvider.GetRequiredService<IWorkTaskRepository>();
         var callMaterialOrderRecordRepository = _serviceProvider.GetRequiredService<ICallMaterialOrderRecordRepository>();
         var orderManager = _serviceProvider.GetRequiredService<IOrderManager>();
         var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>();
 
         // 鏌ユ壘鏁版嵁
-
+        var workTask = await workTaskRepository.GetSingleByFilterAsync(x => x.TaskCode == input.TaskCode);
+        if (workTask == null)
+        {
+            throw new UserFriendlyException($"鎵句笉鍒颁綔涓氳鍒�");
+        }
         var workPlan = await workPlanRepository.GetSingleByFilterAsync(x => x.TaskCode == input.TaskCode);
         if (workPlan == null)
         {
@@ -661,6 +756,7 @@
             //    workPlan.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.宸插畬鎴�;
             //}
             workPlan.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.鐢熶骇涓�;
+            workTask.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.鐢熶骇涓�;
 
             await workPlanRepository.UpdateAsync(workPlan);
 
@@ -743,10 +839,17 @@
         var traceProvider = _serviceProvider.GetRequiredService<ITraceProvider>();
         var materialProvider = _serviceProvider.GetRequiredService<IMaterialProvider>();
         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>();
 
         string processName = "";
+        var firstWorkTask = await workTaskAppService.GetSingleByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode && x.ProcessName == input.ProcessName);
+        if (firstWorkTask == null)
+        {
+            throw new UserFriendlyException($"鎵句笉鍒颁綔涓氳鍒�");
+        }
         //鐗╂枡鍙傛暟鍒楄〃
         var firstWorkPlan = await workPlanAppService.GetSingleByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode && x.ProcessName == input.ProcessName);
         if (firstWorkPlan == null)
@@ -804,7 +907,8 @@
         {
             #region 鏁版嵁澶勭悊
 
-
+            firstWorkTask.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.宸插畬鎴�;
+            await workTaskRepository.UpdateAsync(firstWorkTask);
 
             firstWorkPlan.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.宸插畬鎴�;
             await workPlanRepository.UpdateAsync(firstWorkPlan);
@@ -1013,6 +1117,139 @@
 
     }
 
+
+    /// <summary>
+    /// 鍒嗘嫞鏃惰幏鍙栫敓浜ц鍒掑拰鍒嗛厤鍖哄煙
+    /// </summary>
+    /// <param name="input"></param>
+    /// <param name="_serviceProvider"></param>
+    /// <param name="myCurrentUser"></param>
+    /// <returns></returns>
+    /// <exception cref="UserFriendlyException"></exception>
+    public async Task<CmsApiResponse<PickOutput>> GetPickRetAsync(GetWorkPlanInput input, IServiceProvider _serviceProvider, MyCurrentUser myCurrentUser)
+    {
+
+
+        var callMaterialOrderRepository = _serviceProvider.GetRequiredService<ICallMaterialOrderRepository>();
+        var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>();
+        var _workPlanAppService = _serviceProvider.GetRequiredService<IWorkPlanAppService>();
+        var callMaterialOrderRecordRepository = _serviceProvider.GetRequiredService<ICallMaterialOrderRecordRepository>();
+        var orderManager = _serviceProvider.GetRequiredService<IOrderManager>();
+
+        // 鏌ユ壘鏁版嵁
+
+        WorkPlanDto workPlanDto = await _workPlanAppService.FindSingleByFilterAsync(input);
+
+        //TODO:杩欓噷璋冪敤wms鐨勫簱瀛樻煡璇㈡帴鍙�
+        try
+        {
+            GetWmsMaterialStockInput param = new GetWmsMaterialStockInput()
+            {
+                RedundantField1 = workPlanDto.ProcessRouteNumber,
+                RedundantField1_FilterMode = SearchFilterModeEnum.绮惧噯鏌ヨ
+            };
+
+            string baseUrl = @"http://127.0.0.1:18000/api/v1/HIAWms/";
+            string url = baseUrl + "LMesOperate/FindListByFilter";
+            string json = JsonConvert.SerializeObject(param);
+            var result = HttpApiRequest.HttpPost(url, json);
+            var res = JsonConvert.DeserializeObject<CmsApiResponse<List<WmsMaterialStockDto>>>(result);
+            if (res.Code == 200)
+            {
+                var retData = res.Data as List<WmsMaterialStockDto>;
+                var data = new PickOutput()
+                {
+                    WorkPlan = workPlanDto,
+                    PlaceNo = "",//寰呰祴鍊�
+                    ContinerNo = ""//寰呰祴鍊�
+                };
+                if (retData?.Count > 0)
+                {
+                    data.PlaceNo = retData.First().PlaceNo;
+                    data.ContinerNo = retData.First().ContainerNo;
+                }
+
+                var response = new CmsApiResponse<PickOutput>
+                {
+                    Code = 200,
+                    Data = data,
+                    Message = "澶勭悊鎴愬姛",
+                };
+                return response;
+
+            }
+            else
+            {
+                throw new UserFriendlyException(res.Message);
+            };
+            //*/
+            //妯℃嫙
+            //var data = new PickOutput()
+            //{
+            //    WorkPlan = workPlanDto,
+            //    PlaceNo = "",//寰呰祴鍊�
+            //    ContinerNo = ""//寰呰祴鍊�
+            //};
+            //var response = new CmsApiResponse<PickOutput>
+            //{
+            //    Code = 200,
+            //    Data = data,
+            //    Message = "澶勭悊鎴愬姛",
+            //};
+            //return response;
+
+        }
+        catch (Exception)
+        {
+
+            throw;
+        }
+    }
+
+    /// <summary>
+    /// 绠℃缂栫爜鏄惁瀛樺湪搴撳瓨涓�
+    /// </summary>
+    /// <param name="pipeSpecCode"></param>
+    /// <returns></returns>
+    /// <exception cref="UserFriendlyException"></exception>
+    public async Task<WmsMaterialStockDto> IsExistInWms(string pipeSpecCode)
+    {
+        //TODO:杩欓噷璋冪敤wms鐨勫簱瀛樻煡璇㈡帴鍙�
+        try
+        {
+            GetWmsMaterialStockInput param = new GetWmsMaterialStockInput()
+            {
+                RedundantField2 = pipeSpecCode,
+                RedundantField2_FilterMode = SearchFilterModeEnum.绮惧噯鏌ヨ
+            };
+
+            string baseUrl = @"http://127.0.0.1:18000/api/v1/HIAWms/";
+            string url = baseUrl + "LMesOperate/FindListByFilter";
+            string json = JsonConvert.SerializeObject(param);
+            var result = HttpApiRequest.HttpPost(url, json);
+            var res = JsonConvert.DeserializeObject<CmsApiResponse<List<WmsMaterialStockDto>>>(result);
+            if (res.Code == 200)
+            {
+                var retData = res.Data as List<WmsMaterialStockDto>;
+                if (retData?.Count > 0)
+                {
+                    return retData.First();
+                }
+                return null;
+
+            }
+            else
+            {
+                throw new UserFriendlyException(res.Message);
+            };
+        }
+        catch (Exception)
+        {
+
+            throw;
+        }
+    }
+
     /// <summary>
     /// 鐢熸垚闅忔満鐨刉msTaskNo
     /// </summary>

--
Gitblit v1.9.3