From 06bc8ee02717f3ee80483d15a52c753cb6df9432 Mon Sep 17 00:00:00 2001
From: wankeda <Administrator@DESKTOP-HAU3ST3>
Date: 星期三, 04 二月 2026 08:48:15 +0800
Subject: [PATCH] 1

---
 WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs |  228 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 217 insertions(+), 11 deletions(-)

diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs b/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs
index d15afc9..bdc7d83 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs
@@ -39,6 +39,7 @@
                 Dt_Task task = Repository.QueryFirst(x => x.PalletCode == palletCode);
                 if (task != null)
                 {
+                    //PushTasksToWCS(new List<Dt_Task> { task });
                     return WebResponseContent.Instance.Error($"璇ユ墭鐩榹palletCode}宸茬敓鎴愪换鍔�");
                 }
                 Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First();
@@ -47,25 +48,29 @@
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒扮粍鐩樹俊鎭�");
                 }
+                if (stockInfo.StockStatus == StockStatusEmun.鍚堟墭鍑哄簱瀹屾垚.ObjToInt())
+                {
+
+                }
                 ///鍒ゆ柇鏄惁瀛樺湪鍥炲簱鍗�,杩涜鍥炲師搴撲綅閫昏緫
                 string returnOrderNo = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.OrderNo;
                 Dt_ReturnOrder returnOrder = _returnOrderRepository.QueryFirst(x => x.OrderNo == returnOrderNo && x.OrderStatus == InOrderStatusEnum.鏈紑濮�.ObjToInt());
                 Dt_RoadwayInfo returnRoadwayInfo = new Dt_RoadwayInfo();
-                if(returnOrder != null && !string.IsNullOrEmpty(returnOrder.LocationCode))
+                if (returnOrder != null && !string.IsNullOrEmpty(returnOrder.LocationCode))
                 {
                     Dt_LocationInfo locationInfo1 = _locationInfoService.Repository.QueryFirst(x => x.LocationCode == returnOrder.LocationCode);
-                    if(locationInfo1 == null)
+                    if (locationInfo1 == null)
                     {
                         return WebResponseContent.Instance.Error($"鍥炲簱鍗曚腑璇ュ簱浣峽returnOrder.LocationCode}鏈壘鍒�");
                     }
                     returnRoadwayInfo = _basicRepository.RoadwayInfoRepository.QueryFirst(x => x.RoadwayNo == locationInfo1.RoadwayNo);
                 }
 
-                if (Repository.QueryFirst(x => x.SourceAddress == (returnRoadwayInfo.InStationCode != null ? returnRoadwayInfo.InStationCode:stationCode) && x.TaskStatus == TaskStatusEnum.New.ObjToInt()) != null)
+                if (Repository.QueryFirst(x => x.SourceAddress == (returnRoadwayInfo.InStationCode != null ? returnRoadwayInfo.InStationCode : stationCode) && x.TaskStatus == TaskStatusEnum.New.ObjToInt()) != null)
                 {
                     return WebResponseContent.Instance.Error($"璇ョ珯鐐瑰凡鏈夋湭鎵ц鐨勪换鍔�");
                 }
-                
+
                 var details = stockInfo.Details.FirstOrDefault();
                 if (!string.IsNullOrEmpty(stockInfo.LocationCode))
                 {
@@ -123,15 +128,15 @@
                     newTask.MaterielCode = MaterielCode;
                     newTask.Quantity = (float)Quantity;
                 }
-                if(stockInfo.StockStatus == StockStatusEmun.浣欐枡閫�搴�.ObjToInt())
+                if (stockInfo.StockStatus == StockStatusEmun.浣欐枡閫�搴�.ObjToInt())
                 {
                     newTask.TaskType = TaskTypeEnum.SurplusReturn.ObjToInt();
                 }
-                if(stockInfo.StockStatus == StockStatusEmun.鍙嶆嫞鍏ュ簱.ObjToInt())
+                if (stockInfo.StockStatus == StockStatusEmun.鍙嶆嫞鍏ュ簱.ObjToInt())
                 {
                     newTask.TaskType = TaskTypeEnum.ReverseIn.ObjToInt();
                 }
-                if(stockInfo.StockStatus == StockStatusEmun.鐩樼偣搴撳瓨瀹屾垚.ObjToInt())
+                if (stockInfo.StockStatus == StockStatusEmun.鐩樼偣搴撳瓨瀹屾垚.ObjToInt())
                 {
                     newTask.TaskType = TaskTypeEnum.InInventory.ObjToInt();
                 }
@@ -172,16 +177,217 @@
                 }
                 _stockRepository.StockInfoRepository.UpdateData(stockInfo);
                 _locationInfoService.UpdateData(locationInfo);
-                
+
                 _unitOfWorkManage.CommitTran();
                 WMSTaskDTO wMSTaskDTO = _mapper.Map<WMSTaskDTO>(newTask);
-
-                PushTasksToWCS(new List<Dt_Task> { newTask });
+                if (warehouse.WarehouseCode.Contains("CP"))
+                {
+                    PushTasksWCS(new List<Dt_Task> { newTask });
+                }
+                else
+                {
+                    PushTasksToWCS(new List<Dt_Task> { newTask });
+                }
                 return WebResponseContent.Instance.OK(data: wMSTaskDTO);
             }
             catch (Exception ex)
             {
                 _unitOfWorkManage.RollbackTran();
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        public WebResponseContent CPDeviceRequestInboundTaskSimple(string stationCode, string palletCode, int heightType, string courceAddress)
+        {
+            try
+            {
+                Dt_Task task = Repository.QueryFirst(x => x.PalletCode == palletCode);
+                if (task != null)
+                {
+                    return WebResponseContent.Instance.Error($"璇ユ墭鐩榹palletCode}宸茬敓鎴愪换鍔�");
+                }
+                Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First();
+
+                if (stockInfo == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒扮粍鐩樹俊鎭�");
+                }
+
+                Dt_RoadwayInfo returnRoadwayInfo = new Dt_RoadwayInfo();
+                if (stockInfo.StockStatus == StockStatusEmun.鍚堟墭鍑哄簱瀹屾垚.ObjToInt())
+                {
+                    Dt_LocationInfo locationInfo1 = _locationInfoService.Repository.QueryFirst(x => x.LocationCode == stockInfo.LocationCode);
+                    if (locationInfo1 == null)
+                    {
+                        return WebResponseContent.Instance.Error($"鍥炲簱鍗曚腑璇ュ簱浣峽stockInfo.LocationCode}鏈壘鍒�");
+                    }
+                    returnRoadwayInfo = _basicRepository.RoadwayInfoRepository.QueryFirst(x => x.RoadwayNo == locationInfo1.RoadwayNo && x.InStationCode == (returnRoadwayInfo.InStationCode != null ? returnRoadwayInfo.InStationCode : stationCode));
+                }
+                ///鍒ゆ柇鏄惁瀛樺湪鍥炲簱鍗�,杩涜鍥炲師搴撲綅閫昏緫
+                string returnOrderNo = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.OrderNo;
+                Dt_ReturnOrder returnOrder = _returnOrderRepository.QueryFirst(x => (x.OrderNo == returnOrderNo || x.LPNNo == palletCode) && x.OrderStatus == InOrderStatusEnum.鏈紑濮�.ObjToInt());
+                if (returnOrder != null && !string.IsNullOrEmpty(returnOrder.LocationCode))
+                {
+                    Dt_LocationInfo locationInfo1 = _locationInfoService.Repository.QueryFirst(x => x.LocationCode == returnOrder.LocationCode);
+                    if (locationInfo1 == null)
+                    {
+                        return WebResponseContent.Instance.Error($"鍥炲簱鍗曚腑璇ュ簱浣峽returnOrder.LocationCode}鏈壘鍒�");
+                    }
+                    returnRoadwayInfo = _basicRepository.RoadwayInfoRepository.QueryFirst(x => x.RoadwayNo == locationInfo1.RoadwayNo && x.InStationCode == (returnRoadwayInfo.InStationCode != null ? returnRoadwayInfo.InStationCode : stationCode));
+                }
+
+                if (Repository.QueryFirst(x => x.SourceAddress == (returnRoadwayInfo.InStationCode != null ? returnRoadwayInfo.InStationCode : stationCode) && x.TaskStatus == TaskStatusEnum.New.ObjToInt()) != null)
+                {
+                    return WebResponseContent.Instance.Error($"璇ョ珯鐐瑰凡鏈夋湭鎵ц鐨勪换鍔�");
+                }
+
+                var details = stockInfo.Details.FirstOrDefault();
+                if (!string.IsNullOrEmpty(stockInfo.LocationCode))
+                {
+                    return WebResponseContent.Instance.Error($"璇ユ墭鐩樺凡缁戝畾璐т綅");
+                }
+                Dt_RoadwayInfo roadwayInfo = _basicRepository.RoadwayInfoRepository.QueryFirst(x => x.InStationCode == (returnRoadwayInfo.InStationCode != null ? returnRoadwayInfo.InStationCode : stationCode));
+                if (roadwayInfo == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒拌鍏ュ簱绔欏彴鍦板潃");
+                }
+
+                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == roadwayInfo.RoadwayNo);
+                if (warehouse == null)
+                {
+                    return WebResponseContent.Instance.Error("鏈壘鍒拌浠撳簱");
+                }
+
+                Dt_LocationInfo? locationInfo = new Dt_LocationInfo();
+                if (returnOrder != null && !string.IsNullOrEmpty(returnOrder.LocationCode))
+                {
+                    locationInfo = _locationInfoService.Repository.QueryFirst(x => x.LocationCode == returnOrder.LocationCode);
+                    if (locationInfo.LocationStatus != LocationStatusEnum.Lock.ObjToInt() || locationInfo.EnableStatus == EnableStatusEnum.Disable.ObjToInt() || locationInfo.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt())
+                    {
+                        return WebResponseContent.Instance.Error($"璇ュ洖搴撳崟璐т綅{locationInfo.LocationCode}闈為攣瀹氱姸鎬佹垨璐т綅鍚敤鐘舵�佷笉姝g‘锛岃妫�鏌�");
+                    }
+                }
+                else
+                {
+                    locationInfo = _basicService.LocationInfoService.AssignLocation(roadwayInfo.RoadwayNo, stockInfo.PalletType, warehouse.WarehouseId, "", heightType);//, stockInfo.WarehouseId
+                    if (locationInfo == null)
+                    {
+                        return WebResponseContent.Instance.Error($"璐т綅鍒嗛厤澶辫触,鏈壘鍒板彲鍒嗛厤璐т綅");
+                    }
+                }
+                Dt_Task newTask = new Dt_Task()
+                {
+                    CurrentAddress = courceAddress,
+                    Grade = 0,
+                    NextAddress = returnRoadwayInfo.InStationCode != null ? returnRoadwayInfo.InStationCode : stationCode,
+                    PalletCode = palletCode,
+                    OrderNo = details.OrderNo,
+                    Roadway = roadwayInfo.RoadwayNo,
+                    SourceAddress = courceAddress,
+                    TargetAddress = locationInfo.LocationCode,
+                    TaskType = TaskTypeEnum.Inbound.ObjToInt(),
+                    TaskStatus = TaskStatusEnum.New.ObjToInt(),
+                    WarehouseId = stockInfo.WarehouseId,
+                    PalletType = GetPalletType(warehouse, palletCode),//GetPalletType(warehouse, palletCode)
+                    Creater = "WCS",
+                    CreateDate = DateTime.Now
+                };
+                string MaterielCode = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode;
+                float Quantity = (float)stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity);
+                if (MaterielCode != null && Quantity != null)
+                {
+                    newTask.MaterielCode = MaterielCode;
+                    newTask.Quantity = (float)Quantity;
+                }
+                if (stockInfo.StockStatus == StockStatusEmun.浣欐枡閫�搴�.ObjToInt())
+                {
+                    newTask.TaskType = TaskTypeEnum.SurplusReturn.ObjToInt();
+                }
+                if (stockInfo.StockStatus == StockStatusEmun.鍙嶆嫞鍏ュ簱.ObjToInt())
+                {
+                    newTask.TaskType = TaskTypeEnum.ReverseIn.ObjToInt();
+                }
+                if (stockInfo.StockStatus == StockStatusEmun.鐩樼偣搴撳瓨瀹屾垚.ObjToInt())
+                {
+                    newTask.TaskType = TaskTypeEnum.InInventory.ObjToInt();
+                }
+                if (stockInfo.StockStatus == StockStatusEmun.鍚堟墭鍑哄簱瀹屾垚.ObjToInt())
+                {
+                    newTask.TaskType = TaskTypeEnum.InSyncretism.ObjToInt();
+                }
+                //if (stockInfo.StockStatus == StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt())
+                //{
+                //    stockInfo.StockStatus = StockStatusEmun.鎵嬪姩缁勭洏鍏ュ簱纭.ObjToInt();
+                //}
+                //else if (stockInfo.StockStatus == StockStatusEmun.MES閫�搴�.ObjToInt())
+                //{
+                //    newTask.TaskType = TaskTypeEnum.MesMatReturn.ObjToInt();
+                //}
+                //else if (stockInfo.StockStatus == StockStatusEmun.MES绌烘墭閫�搴�.ObjToInt())
+                //{
+                //    Dt_PalletTypeInfo palletTypeInfo = _palletTypeInfoRepository.QueryFirst(x => x.WarehouseId == stockInfo.WarehouseId && x.PalletType == stockInfo.PalletType);
+                //    //todo 灏忔墭鐩樻殏鏃舵湭鍚敤
+                //    if (palletTypeInfo.LocaitonCount == 2)
+                //    {
+                //        newTask.TaskType = TaskTypeEnum.MesPalletLargeReturn.ObjToInt();
+                //    }
+                //    else
+                //    {
+                //        newTask.TaskType = TaskTypeEnum.MesPalletSmallReturn.ObjToInt();
+                //    }
+                //}
+                //else
+                //{
+                else
+                {
+                    stockInfo.StockStatus = StockStatusEmun.鍏ュ簱纭.ObjToInt();
+                }
+                locationInfo.LocationStatus = LocationStatusEnum.Lock.ObjToInt();
+                //}
+
+                _unitOfWorkManage.BeginTran();
+                int taskId = BaseDal.AddData(newTask);
+                newTask.TaskId = taskId;
+                if (returnOrder != null)
+                {
+                    returnOrder.OrderStatus = InOrderStatusEnum.鍏ュ簱涓�.ObjToInt();
+                    _returnOrderRepository.UpdateData(returnOrder);
+                }
+                _stockRepository.StockInfoRepository.UpdateData(stockInfo);
+                _locationInfoService.UpdateData(locationInfo);
+
+                _unitOfWorkManage.CommitTran();
+                WMSTaskDTO wMSTaskDTO = _mapper.Map<WMSTaskDTO>(newTask);
+
+                PushTasksWCS(new List<Dt_Task> { newTask });
+
+                return WebResponseContent.Instance.OK(data: wMSTaskDTO);
+            }
+            catch (Exception ex)
+            {
+                _unitOfWorkManage.RollbackTran();
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 杩斿洖鍏ュ簱浠撳簱
+        /// </summary>
+        /// <returns></returns>
+        public WebResponseContent ApplyLocation(string palletCode)
+        {
+            try
+            {
+                Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First();
+
+                if (stockInfo == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒扮粍鐩樹俊鎭�");
+                }
+                return WebResponseContent.Instance.OK(data: stockInfo.WarehouseId);
+            }
+            catch (Exception ex)
+            {
                 return WebResponseContent.Instance.Error(ex.Message);
             }
         }
@@ -466,7 +672,7 @@
             //    }
             //    return palletTypeInfo.PalletType;
             //}
-            return -1;
+            return 3;
         }
 
 

--
Gitblit v1.9.3