From d41acebbd89f171b0eeb205fca4f68043ca85f95 Mon Sep 17 00:00:00 2001
From: Admin <Admin@ADMIN>
Date: 星期三, 03 十二月 2025 19:47:24 +0800
Subject: [PATCH] 选配与暂存

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs |  171 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 167 insertions(+), 4 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs"
index bc133c7..18299f0 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs"
@@ -5,6 +5,7 @@
 using OfficeOpenXml.FormulaParsing.Excel.Functions.Database;
 using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
 using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
+using SqlSugar;
 using System.Diagnostics;
 using System.Reflection.Emit;
 using System.Text.RegularExpressions;
@@ -46,6 +47,8 @@
     private readonly IDt_InZdp_mes_htyRepository _InZdp_Mes_HtyRepository; 
     private readonly IDt_ZdpStockRepository _ZdpStockRepository;
     private readonly IDt_ZdpStock_htyRepository _ZdpStock_HtyRepository;
+    private readonly IDt_PreOutboundRepository _PreOutboundRepository;
+    private readonly ILocationInfoRepository _locationInfoRepository;
     
 
     public Dt_TaskService(IDt_TaskRepository BaseDal,
@@ -70,7 +73,9 @@
                                 IDt_InZdp_mes_htyRepository inZdp_Mes_HtyRepository,
                                 IDt_ZdpStockRepository zdpStockRepository,
                                 IDt_ZdpStock_htyRepository dt_ZdpStock_HtyRepository,
-                                IDt_OutZdp_htyRepository dt_OutZdp_HtyRepository) : base(BaseDal)
+                                IDt_OutZdp_htyRepository dt_OutZdp_HtyRepository,
+                                IDt_PreOutboundRepository dt_PreOutboundRepository,
+                                ILocationInfoRepository locationInfoRepository) : base(BaseDal)
 
     {
         _unitOfWorkManage = unitOfWorkManage;
@@ -92,6 +97,8 @@
         _ZdpStockRepository = zdpStockRepository;
         _ZdpStock_HtyRepository = dt_ZdpStock_HtyRepository;
         _Dt_OutZdp_htyRepository = dt_OutZdp_HtyRepository;
+        _PreOutboundRepository = dt_PreOutboundRepository;
+        _locationInfoRepository = locationInfoRepository;
     }
 
     #region 澶栭儴鎺ュ彛鏂规硶
@@ -714,7 +721,7 @@
                         SourceAddress = zdpInfo.Zdp_Location,
                         CurrentAddress =zdpInfo.Zdp_Location,
                         TaskState = (int)TaskOutStatusEnum.OutNew,
-                        TaskType = outtype == "2" ? (int)TaskOutboundTypeEnum.OutBrake : (int)TaskOutboundTypeEnum.OutWheels,
+                        TaskType = (int)TaskOutboundTypeEnum.OutBrake,
                         TaskNum = BaseDal.GetTaskNo().Result,
                         Creater = "System",
                         CreateDate = DateTime.Now,
@@ -739,6 +746,14 @@
                 {
                     Dt_WheelsStock stockInfo = _WheelsStockRepository.QueryFirst(x => x.Wheels_code == item);
                     if (stockInfo == null) return content.Error("鏈煡璇㈠埌瀵瑰簲鐨勫簱瀛樹俊鎭�");
+
+                    Dt_PreOutbound dt_Pre=_PreOutboundRepository.QueryFirst(x => x.PalletCode == stockInfo.Wheels_code);
+                    if (dt_Pre != null)
+                    {
+                        return content.Error($"褰撳墠杞﹁疆鍙峰凡鍦ㄦ殏瀛樺嚭搴撲腑锛屼笉鍙洿鎺ュ嚭搴擄紒锛侊紒锛岃溅杞潯鐮侊細{dt_Pre.PalletCode}");
+                    }
+
+
                     stockInfo.Wheels_CurrentStatue = 4;
                     string Location = stockInfo.Wheels_Location;
                     var locationst = locationinfoData.Where(x => x.LocationCode== stockInfo.Wheels_Location).FirstOrDefault();
@@ -765,7 +780,7 @@
                         IsCheck = true,
                         Standards = stockInfo.Wheels_NewOrOld
                     };
-
+                    
 
                     task = new Dt_Task
                     {
@@ -805,7 +820,7 @@
             }
 
 
-            // 鑾峰彇WMS IP鍦板潃鐢ㄤ簬鍙戦�佷换鍔¤姹�
+            //鑾峰彇WMS IP鍦板潃鐢ㄤ簬鍙戦�佷换鍔¤姹�
             var wmsIpAddress = GetWCSIpReceiveTask();
             if (wmsIpAddress == null)
             {
@@ -829,6 +844,8 @@
                     _WheelsStockRepository.UpdateData(WheelList);
                 }
             }
+
+
 
         }
         catch (Exception ex)
@@ -898,6 +915,8 @@
         return await BaseDal.Delete(ids);
     }
 
+
+    #region 鍒犻櫎浠诲姟鍥炴粴
     public override WebResponseContent DeleteData(object[] key)
     {
         WebResponseContent content = new WebResponseContent();
@@ -913,6 +932,59 @@
             if (task.TaskState != (int)TaskInStatusEnum.InNew && task.TaskState != (int)TaskOutStatusEnum.OutNew && task.TaskState != (int)TaskStatus.Created)
             {
                 return content.Error("浠诲姟涓嶅浜庢柊寤虹姸鎬�,绂佹鍒犻櫎!");
+            }
+
+            ////鍏ュ簱鏋氫妇
+            //List<int> TaskInboundTypeEnums = Enum.GetValues(typeof(TaskInboundTypeEnum)).Cast<int>().ToList();
+            ////鍑哄簱鏋氫妇
+            //List<int> TaskOutboundTypeEnums = Enum.GetValues(typeof(TaskOutboundTypeEnum)).Cast<int>().ToList();
+            ////绉诲簱鏋氫妇
+            //List<int> TaskMoveTypeEnums = Enum.GetValues(typeof(TaskRelocationTypeEnum)).Cast<int>().ToList();
+            //鍒ゆ柇浠诲姟绫诲瀷
+            // 鏍规嵁浠诲姟绫诲瀷璋冪敤鐩稿簲鐨勫畬鎴愪换鍔℃柟娉�
+
+            // 楠岃瘉搴撳瓨鏄惁瀛樺湪
+            var stock = _WheelsStockRepository.QueryFirstNavAsync(x => x.Wheels_Num.Contains(task.PalletCode) && x.Wheels_Location == task.SourceAddress);
+            var ZdpStock = _ZdpStockRepository.QueryFirstNavAsync(x => x.Zdp_code == task.PalletCode && x.Zdp_Location == task.SourceAddress);
+            bool res = false;
+            switch (task.TaskType)
+            {
+                case (int)TaskInboundTypeEnum.Inbound:
+                case (int)TaskInboundTypeEnum.InWheels:
+                case (int)TaskInboundTypeEnum.InBrake:
+                    LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍏ュ簱浠诲姟", "");
+                        res = SellectLocationInfo(task,1);
+                    break;
+
+                case (int)TaskOutboundTypeEnum.Outbound:
+                case (int)TaskOutboundTypeEnum.OutWheels:
+                    LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍑哄簱浠诲姟", "");
+                        res = SellectLocationInfo(task,2);
+                    break;
+
+                case (int)TaskOutboundTypeEnum.OutBrake:
+                    LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍒跺姩鐩樺嚭搴撲换鍔�", "");
+                        res = SellectLocationInfo(task,3);
+                    break;
+
+                case (int)TaskRelocationTypeEnum.Relocation:
+                    if (stock != null)
+                    {
+                        res = SellectLocationInfo(task,4);
+                    }
+                    else 
+                    {
+                        res = SellectLocationInfo(task,5);
+                    }
+                    break;
+
+                default:
+                    return content.Error("浠诲姟绫诲瀷涓嶅瓨鍦�");
+            }
+
+            if (!res)
+            {
+                return content.Error("鍦ㄦ墽琛屼换鍔″垎绫荤殑鏃跺�欏嚭鐜伴敊璇紒");
             }
 
             var taskHtyNG = CreateHistoricalTask(task, true);
@@ -937,6 +1009,97 @@
     }
 
     /// <summary>
+    /// 鑾峰彇搴撲綅淇℃伅
+    /// </summary>
+    /// <param name="targetAddress"></param>
+    /// <returns></returns>
+    /// <exception cref="NotImplementedException"></exception>
+    private bool SellectLocationInfo(Dt_Task task,int taskType)
+    {
+        // 鑾峰彇搴撲綅淇℃伅
+        DtLocationInfo locationInfoT = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.TargetAddress);
+        DtLocationInfo locationInfoS = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
+
+
+        Dt_WheelsStock stock = _WheelsStockRepository.QueryFirst(x => x.Wheels_Num.Contains(task.PalletCode) && x.Wheels_Location == task.SourceAddress);
+        Dt_ZdpStock ZdpStock = _ZdpStockRepository.QueryFirst(x => x.Zdp_code == task.PalletCode && x.Zdp_Location == task.SourceAddress);
+
+        //if (locationInfoT == null) return false;
+
+        //if (locationInfoS == null) return false;
+        //1-鍏ュ簱   2-鍑哄簱   3-鍒跺姩鐩樺嚭搴�   4-绉诲簱
+        var db = _locationInfoRepository.Db as SqlSugarClient;
+        try
+        {
+            db.Ado.BeginTran();
+            if (taskType == 1)
+            {
+                locationInfoT.LocationStatus = (int)LocationEnum.Free;
+                bool res = _locationInfoRepository.UpdateData(locationInfoT);
+                if (res)
+                {
+                    db.Ado.CommitTran();
+                    return true;
+                }
+            }
+            else if (taskType == 2)
+            {
+                locationInfoS.LocationStatus = (int)LocationEnum.InStock;
+                bool res = _locationInfoRepository.UpdateData(locationInfoS);
+                stock.Wheels_CurrentStatue = 1;
+                bool ress = _WheelsStockRepository.UpdateData(stock);
+                if (res && ress)
+                {
+                    db.Ado.CommitTran();
+                    return true;
+                }
+            }
+            else if (taskType == 3)
+            {
+                locationInfoS.LocationStatus = (int)LocationEnum.InStock;
+                bool res = _locationInfoRepository.UpdateData(locationInfoS);
+                ZdpStock.Zdp_CurrentStatue = 1;
+                bool ress = _ZdpStockRepository.UpdateData(ZdpStock);
+                if (res && ress)
+                {
+                    db.Ado.CommitTran();
+                    return true;
+                }
+            }
+            //绉诲簱
+            else
+            {
+                locationInfoT.LocationStatus = (int)LocationEnum.Free;
+                locationInfoS.LocationStatus = (int)LocationEnum.InStock;
+                bool res = _locationInfoRepository.UpdateData(locationInfoT);
+                bool res1 = _locationInfoRepository.UpdateData(locationInfoS);
+                if(taskType == 4)
+                {
+                    stock.Wheels_CurrentStatue = 1;
+                }
+                else
+                {
+                    ZdpStock.Zdp_CurrentStatue = 1;
+                }
+                bool ress = taskType == 4 ? _WheelsStockRepository.UpdateData(stock) : _ZdpStockRepository.UpdateData(ZdpStock);
+                if (res && res1 && ress)
+                {
+                    db.Ado.CommitTran();
+                    return true;
+                }
+            }
+            return false;
+        }
+        catch (Exception ex)
+        {
+            db.Ado.RollbackTran();
+            return false;
+        }
+    }
+
+    #endregion
+
+    /// <summary>
     /// 閫氳繃ID鑾峰彇浠诲姟
     /// </summary>
     /// <param name="id">浠诲姟ID</param>

--
Gitblit v1.9.3