From 6f8fe2fc191fb466e3141a6e915d6aa63802c269 Mon Sep 17 00:00:00 2001
From: helongyang <647556386@qq.com>
Date: 星期日, 22 六月 2025 11:43:35 +0800
Subject: [PATCH] 更新优化

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs |   94 +++++++++++++++++++++++++++++++++++------------
 1 files changed, 70 insertions(+), 24 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
index ac7efdb..2a0977a 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
@@ -1,4 +1,5 @@
 锘縰sing Newtonsoft.Json;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
 using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
 using System;
 using System.Collections;
@@ -75,6 +76,10 @@
                 {
                     Dt_LocationInfo locationInfo = _basicRepository.LocationInfoRepository.QueryFirst(x => x.WarehouseId == warehouseId);
                     if (locationInfo == null) return WebResponseContent.Instance.Error($"鏈壘鍒板綋鍓嶅簱鍖鸿揣浣嶄俊鎭�");
+                    if (stationCode!= "8005")
+                    {
+                        return WebResponseContent.Instance.Error($"璧风偣閿欒锛歿stationCode}");
+                    }
                     return DeviceRequestInboundTask(stationCode, locationInfo.RoadwayNo, palletCode);
                 }
                 else
@@ -92,8 +97,8 @@
                         TaskStatus = TaskStatusEnum.New.ObjToInt(),
                         WarehouseId = stockInfo.WarehouseId,
                         PalletType = stockInfo.PalletType,
-                        MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode,
-                        Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.StockQuantity,
+                        MaterielCode = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode,
+                        Quantity = (float)stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity),
                     };
                     //鑾峰彇鏄惁瀛樺湪鍏ュ簱鍗�
                     Dt_InboundOrder? inboundOrder =  null;
@@ -329,8 +334,16 @@
                         TaskStatus = TaskStatusEnum.New.ObjToInt(),
                         WarehouseId = stockInfoPPorGM.WarehouseId,
                         PalletType = stockInfoPPorGM.PalletType,
-                        TaskLength= stockInfoPPorGM.StockLength
+                        TaskLength= stockInfoPPorGM.StockLength,
+                        
                     };
+                    string MaterielCodeGMPP = stockInfoPPorGM.Details?.Where(x => x.StockId == stockInfoPPorGM.Id).FirstOrDefault()?.MaterielCode;
+                    float QuantityGMPP = (float)stockInfoPPorGM.Details?.Where(x => x.StockId == stockInfoPPorGM.Id).Sum(x => x.StockQuantity);
+                    if (MaterielCodeGMPP != null && QuantityGMPP != null)
+                    {
+                        newTaskPPorGM.MaterielCode = MaterielCodeGMPP;
+                        newTaskPPorGM.Quantity = QuantityGMPP;
+                    }
 
                     //鑾峰彇鏄惁瀛樺湪鍏ュ簱鍗�
                     Dt_InboundOrder? inboundOrderPPorGM = null;
@@ -398,6 +411,13 @@
                     WarehouseId = stockInfo.WarehouseId,
                     PalletType = stockInfo.PalletType,
                 };
+                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 = Quantity;
+                }
 
                 //鑾峰彇鏄惁瀛樺湪鍏ュ簱鍗�
                 Dt_InboundOrder? inboundOrder = null;
@@ -428,6 +448,7 @@
                 }
                 else if (stockInfo.StockStatus == StockStatusEmun.鎷i�夊畬鎴�.ObjToInt())
                 {
+                    stockInfo.StockStatus = StockStatusEmun.鍏ュ簱纭.ObjToInt();
                     newTask.TaskType = TaskTypeEnum.InPick.ObjToInt();
                 }
                 else
@@ -477,8 +498,7 @@
                 {
                     return WebResponseContent.Instance.Error($"璇ョ珯鐐瑰凡鏈夋湭鎵ц鐨勪换鍔�");
                 }
-
-                Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == 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($"鏈壘鍒扮粍鐩樹俊鎭�");
@@ -506,7 +526,13 @@
                     WarehouseId = stockInfo.WarehouseId,
                     PalletType = stockInfo.PalletType,
                 };
-
+                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())
                 {
@@ -577,7 +603,7 @@
 
                 string roadwayNo = AssignRoadwayNo(staions, palletCode, heightType);
 
-                Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == 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($"鏈壘鍒扮粍鐩樹俊鎭�");
@@ -605,7 +631,13 @@
                     WarehouseId = stockInfo.WarehouseId,
                     PalletType = stockInfo.PalletType,
                 };
-
+                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 = Quantity;
+                }
                 if (stockInfo.StockStatus == StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt())
                 {
                     stockInfo.StockStatus = StockStatusEmun.鎵嬪姩缁勭洏鍏ュ簱纭.ObjToInt();
@@ -749,33 +781,45 @@
                 Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA154.ToString());
                 //鑾峰彇搴撳瓨璁板綍
                 List<Dt_StockInfo> stockInfos = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x =>
-                  x.WarehouseId == warehouse.WarehouseId).Includes(x => x.Details).ToList();
+                  x.WarehouseId == warehouse.WarehouseId && x.PalletCode== palletCode).Includes(x => x.Details).ToList();
+                if (stockInfos.Count > 0)
+                {
+                    return content.Error($"杞藉叿鎵樼洏宸插瓨鍦�");
+                }
                 Dt_StockInfo? stockInfoOld = stockInfos.FirstOrDefault(x => x.Details.Any(x => x.BatchNo == materialLot));
                 if (stockInfoOld != null)
                 {
                     return content.Error($"搴撳瓨淇℃伅宸插瓨鍦�");
                 }
                 Dt_PalletTypeInfo palletTypeInfo = _palletTypeInfoRepository.QueryFirst(x=>x.CodeStartStr== palletType);
-                if (palletTypeInfo != null)
+                if (palletTypeInfo == null)
                 {
                     return content.Error($"鎵樼洏绫诲瀷淇℃伅涓嶅瓨鍦�");
                 }
-                //鑾峰彇闃荤剨鎵规
-                WebResponseContent requestLotInfo = GetZHMesMaterialLot(materialLot);
-                if (!requestLotInfo.Status)
+                ////鑾峰彇闃荤剨鎵规
+                //WebResponseContent requestLotInfo = GetZHMesMaterialLot(materialLot);
+                //if (!requestLotInfo.Status)
+                //{
+                //    return content.Error($"璇锋眰闃荤剨鎵规淇℃伅澶辫触,{requestLotInfo.Message}");
+                //}
+                //MesLotInfoModel mesLotInfo = JsonConvert.DeserializeObject<MesLotInfoModel>(requestLotInfo.Data.ToString());
+                MesLotInfoModel mesLotInfo = new MesLotInfoModel()
                 {
-                    return content.Error($"{requestLotInfo.Message}");
-                }
-                MesLotInfoModel mesLotInfo = JsonConvert.DeserializeObject<MesLotInfoModel>(requestLotInfo.Data.ToString());
+                    Product="FH001",
+                    ProductVersion="A1",
+                    Qty=20,
+                    LotNo= materialLot,
+                    IsFullNumber=true
+                };
                 Dt_StockInfoDetail stockInfoDetail = new Dt_StockInfoDetail()
                 {
                     MaterielSpec = mesLotInfo.ProductVersion,
                     BatchNo = materialLot,
-                    EffectiveDate = mesLotInfo.DateCode,
+                    EffectiveDate = mesLotInfo.DateCode ?? " ",
                     MaterielCode = mesLotInfo.Product,
                     InboundOrderRowNo =  0,
                     MaterielName = mesLotInfo.Product,
-                    ProductionDate = mesLotInfo.DateCode,
+                    ProductionDate = mesLotInfo.DateCode ?? " ",
                     OrderNo = "",
                     OutboundQuantity = 0,
                     SerialNumber = materialLot,
@@ -800,14 +844,16 @@
                     Grade = 0,
                     PalletCode = palletCode,
                     NextAddress = "",
-                    Roadway = "",
+                    Roadway = "SC01_ZH",
                     SourceAddress = "AGV_ZH",
                     TargetAddress = "",
                     TaskStatus = (int)TaskStatusEnum.New,
-                    TaskType = (int)TaskTypeEnum.InZHProduct,
+                    TaskType = palletTypeInfo.LocaitonCount==2? (int)TaskTypeEnum.InZHProductLarge : (int)TaskTypeEnum.InZHProductSmall,
                     TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
                     PalletType = palletTypeInfo.PalletType,
                     WarehouseId = warehouse.WarehouseId,
+                    MaterielCode = mesLotInfo.Product,
+                    Quantity = (float)mesLotInfo.Qty,
                 };
                 _unitOfWorkManage.BeginTran();
                 Db.InsertNav(stockInfo).Include(x => x.Details).ExecuteCommand();
@@ -815,8 +861,8 @@
                 //BaseDal.AddData(task);
                 _unitOfWorkManage.CommitTran();
                 //灏嗕换鍔℃帹閫佸埌WCS
-                PushTasksToWCS(new List<Dt_Task>() { taskIn }, "AGV_ZH"); ;
-                content.OK();
+                PushTasksToWCS(new List<Dt_Task>() { taskIn }, "AGV_ZH", agvTaskCode);
+                content.OK(data: taskIn);
             }
             catch (Exception ex)
             {
@@ -919,8 +965,8 @@
                     TaskStatus = TaskStatusEnum.New.ObjToInt(),
                     WarehouseId = warePoint.WarehouseId,
                     PalletType = proStockInfo.PalletType,
-                    MaterielCode = proStockInfo.proStockInfoDetails.Where(x => x.ProStockId == proStockInfo.Id).FirstOrDefault()?.ProductCode,
-                    Quantity = (float)proStockInfo.proStockInfoDetails.Where(x => x.ProStockId == proStockInfo.Id).Sum(x => x.StockPcsQty)
+                    MaterielCode = proStockInfo.proStockInfoDetails?.Where(x => x.ProStockId == proStockInfo.Id).FirstOrDefault()?.ProductCode,
+                    Quantity = (float)proStockInfo.proStockInfoDetails?.Where(x => x.ProStockId == proStockInfo.Id).Sum(x => x.StockPcsQty)
                 };
                 _unitOfWorkManage.BeginTran();
                 int taskId = BaseDal.AddData(newTask);

--
Gitblit v1.9.3