From a3014a01e07619105d597d0c51cf195217b0806f Mon Sep 17 00:00:00 2001
From: wankeda <Administrator@DESKTOP-HAU3ST3>
Date: 星期二, 29 七月 2025 10:47:01 +0800
Subject: [PATCH] 1

---
 WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs |  224 +++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 173 insertions(+), 51 deletions(-)

diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs b/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs
index eb22505..7c0a2d6 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs
@@ -24,6 +24,171 @@
     public partial class TaskService
     {
 
+        /// <summary>
+        /// 浠呯敵璇蜂换鍔★紝璁¦CS鏍规嵁璺敱纭畾涓嬩竴鍦板潃
+        /// </summary>
+        /// <param name="stationCode"></param>
+        /// <param name="palletCode"></param>
+        /// <returns></returns>
+        public WebResponseContent DeviceRequestInboundTaskSimple(string stationCode, string palletCode, int heightType)
+        {
+            try
+            {
+                Dt_Task task = Repository.QueryFirst(x => x.PalletCode == palletCode);
+                if (task != null)
+                {
+                    PushTasksToWCS(new List<Dt_Task> { task });
+                    return WebResponseContent.Instance.OK($"璇ユ墭鐩樺凡鐢熸垚浠诲姟", _mapper.Map<WMSTaskDTO>(task));
+                }
+
+                if (Repository.QueryFirst(x => x.SourceAddress == stationCode && x.TaskStatus == TaskStatusEnum.New.ObjToInt()) != null)
+                {
+                    return WebResponseContent.Instance.Error($"璇ョ珯鐐瑰凡鏈夋湭鎵ц鐨勪换鍔�");
+                }
+                Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First();
+                var details = stockInfo.Details.FirstOrDefault();
+                if (stockInfo == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒扮粍鐩樹俊鎭�");
+                }
+                if (!string.IsNullOrEmpty(stockInfo.LocationCode))
+                {
+                    return WebResponseContent.Instance.Error($"璇ユ墭鐩樺凡缁戝畾璐т綅");
+                }
+                Dt_RoadwayInfo roadwayInfo = _basicRepository.RoadwayInfoRepository.QueryFirst(x => x.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 = _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 = "",
+                    Grade = 0,
+                    NextAddress = stationCode,
+                    PalletCode = palletCode,
+                    OrderNo = details.OrderNo,
+                    Roadway = roadwayInfo.RoadwayNo,
+                    SourceAddress = "",
+                    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())
+                //{
+                //    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
+                //{
+                stockInfo.StockStatus = StockStatusEmun.鍏ュ簱纭.ObjToInt();
+                locationInfo.LocationStatus = LocationStatusEnum.Lock.ObjToInt();
+                //}
+
+                _unitOfWorkManage.BeginTran();
+                int taskId = BaseDal.AddData(newTask);
+                newTask.TaskId = taskId;
+                _stockRepository.StockInfoRepository.UpdateData(stockInfo);
+                _locationInfoService.UpdateData(locationInfo);
+                _unitOfWorkManage.CommitTran();
+                WMSTaskDTO wMSTaskDTO = _mapper.Map<WMSTaskDTO>(newTask);
+
+                //PushTasksToWCS(new List<Dt_Task> { newTask });
+                return WebResponseContent.Instance.OK(data: wMSTaskDTO);
+            }
+            catch (Exception ex)
+            {
+                _unitOfWorkManage.RollbackTran();
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+        /// <summary>
+        /// 鍏ュ簱浠诲姟鐢宠鍒嗛厤璐т綅
+        /// </summary>
+        /// <param name="taskNum">浠诲姟鍙�</param>
+        /// <param name="roadwayNo">宸烽亾鍙�</param>
+        /// <returns></returns>
+        public WebResponseContent AssignInboundTaskLocation(int taskNum, string roadwayNo)
+        {
+            try
+            {
+                Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+                if (task == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒拌鍏ュ簱浠诲姟");
+                }
+
+                if (_basicRepository.LocationInfoRepository.QueryFirst(x => x.LocationCode == task.TargetAddress) != null)
+                {
+                    return WebResponseContent.Instance.OK(data: task.TargetAddress);
+                }
+
+                Dt_LocationInfo? locationInfo = _basicService.LocationInfoService.AssignLocation(roadwayNo, task.PalletType);//, task.WarehouseId
+                if (locationInfo == null)
+                {
+                    return WebResponseContent.Instance.Error($"璐т綅鍒嗛厤澶辫触,鏈壘鍒板彲鍒嗛厤璐т綅");
+                }
+
+                task.Roadway = roadwayNo;
+                task.TargetAddress = locationInfo.LocationCode;
+
+                task.TaskStatus = TaskStatusEnum.SC_Execute.ObjToInt();
+
+
+
+                LocationStatusEnum lastStatus = (LocationStatusEnum)locationInfo.LocationStatus;
+
+                _unitOfWorkManage.BeginTran();
+                //_recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, lastStatus, LocationStatusEnum.Lock, LocationChangeType.InboundAssignLocation);
+                //_basicService.LocationInfoService.UpdateLocationStatus(locationInfo, task.PalletType, LocationStatusEnum.Lock, task.WarehouseId);
+                BaseDal.UpdateData(task);
+                _unitOfWorkManage.CommitTran();
+                return WebResponseContent.Instance.OK(data: locationInfo.LocationCode);
+            }
+            catch (Exception ex)
+            {
+                _unitOfWorkManage.RollbackTran();
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
 
         /// <summary>
         /// 绔嬪簱鍏ュ簱鎸囦护涓婁紶
@@ -63,47 +228,14 @@
                 var warehouse = GetWarehouse(inboundOrder.WarehouseId);
                 var roadwayInfo = GetRoadwayInfo(warehouse.WarehouseCode);
 
-                // 澶勭悊搴撳瓨淇℃伅
-                //var stockInfo = GetOrCreateStockInfo(palletCode, inboundOrder, inboundOrderDet, warehouse);
-                var dt_StockInfoDetail = new Dt_StockInfoDetail
-                {
-                    //StockId = stockInfo.Id,
-                    MaterielCode = inboundOrderDet.MaterielCode,
-                    MaterielName = inboundOrderDet.MaterielName,
-                    OrderNo = inboundOrder.OrderNo,
-                    BatchNo = inboundOrderDet.BatchNo,
-                    LinId = inboundOrderDet.LinId,
-                    StockQuantity = inboundOrderDet.OrderQuantity,
-                    Status = (int)StockStatusEmun.缁勭洏鏆傚瓨,
-                    Creater = "WMS",
-                    CreateDate = DateTime.Now,
-                    Id = inboundOrderDet.LinId.ObjToInt(),
-                };
-
-                var dt_Stock = new Dt_StockInfo
-                {
-                    BatchNo = inboundOrderDet.BatchNo,
-                    PalletCode = palletCode,
-                    PalletType = GetPalletType(warehouse, palletCode),
-                    IsFull = true,
-                    StockStatus = (int)StockStatusEmun.缁勭洏鏆傚瓨,
-                    Creater = "WMS",
-                    CreateDate = DateTime.Now,
-                    MaterialType = (int)InventoryMaterialType.鎴愬搧,
-                    Materialweight = 0,
-                    Wlstatus = (int)InventoryMaterialStatus.鍚堟牸,
-                    Mgeneratetime = DateTime.Now,
-                    WarehouseId = warehouse.WarehouseId,
-                    Details = new List<Dt_StockInfoDetail> { dt_StockInfoDetail }
-                };
-
+                var dt_Stock = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == palletCode);
                 // 妫�鏌ュ叆搴撹姹�
                 var checkResult = CheckRequestInbound(roadwayInfo.InSCStationCode, palletCode, true, dt_Stock);
                 if (!checkResult.Item1)
                     return WebResponseContent.Instance.Error(checkResult.Item2);
 
                 // 鍒嗛厤搴撲綅骞舵洿鏂版暟鎹�
-                Dt_LocationInfo? locationInfo = _basicService.LocationInfoService.AssignLocation(roadwayNo, dt_Stock.PalletType, dt_Stock.WarehouseId);
+                Dt_LocationInfo? locationInfo = _basicService.LocationInfoService.AssignLocation(roadwayNo, dt_Stock.PalletType);//, dt_Stock.WarehouseId
                 //Dt_LocationInfo? locationInfo = _basicService.LocationInfoService.AssignLocation(stationCode, TaskTypeEnum.Inbound.ObjToInt());
                 if (locationInfo == null)
                 {
@@ -112,12 +244,12 @@
 
                 Dt_Task newTask = new Dt_Task()
                 {
-                    CurrentAddress = stationCode,
+                    CurrentAddress = "",
                     Grade = 0,
-                    NextAddress = locationInfo.LocationCode,
+                    NextAddress = stationCode,
                     PalletCode = palletCode,
                     Roadway = roadwayNo,
-                    SourceAddress = stationCode,
+                    SourceAddress = "",
                     TargetAddress = locationInfo.LocationCode,
                     TaskType = TaskTypeEnum.Inbound.ObjToInt(),
                     TaskStatus = TaskStatusEnum.New.ObjToInt(),
@@ -262,20 +394,10 @@
         //鏌ヨ浠撳簱鎵樼洏璐х墿绫诲瀷
         public int GetPalletType(Dt_Warehouse warehouse, string palletCode)
         {
-            if (warehouse.WarehouseCode == WarehouseEnum.SC01_BC.ToString())
+            if (warehouse.WarehouseCode == WarehouseEnum.SC01_BC.ObjToString() || warehouse.WarehouseCode == WarehouseEnum.SC02_BC.ObjToString())
             {
-                if (palletCode.Substring(0, 1) == "6")
-                {
-                    return PalletTypeEnum.MediumPallet.ObjToInt();
-                }
-                else
-                {
-                    return PalletTypeEnum.LargestPallet.ObjToInt();
-                }
-            }
-            else if (warehouse.WarehouseCode == WarehouseEnum.SC01_BC.ObjToString())
-            {
-                Dt_PalletTypeInfo palletTypeInfo = _palletTypeInfoRepository.QueryFirst(x => x.CodeStartStr == palletCode.Substring(0, 1));
+
+                Dt_PalletTypeInfo palletTypeInfo = _palletTypeInfoRepository.QueryFirst(x => x.CodeStartStr == palletCode.Substring(0, 3));
                 if (palletTypeInfo == null)
                 {
                     throw new Exception($"鎵樼洏鍙烽敊璇�");

--
Gitblit v1.9.3