From 37454e625df68d40897112b2e8c2e3cf4d7163e3 Mon Sep 17 00:00:00 2001
From: heshaofeng <heshaofeng@hnkhzn.com>
Date: 星期三, 25 三月 2026 11:43:10 +0800
Subject: [PATCH] 1

---
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_InboundService/TakeStockOrderService.cs |  120 +++++++++++++++++-------------------------------------------
 1 files changed, 34 insertions(+), 86 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/TakeStockOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/TakeStockOrderService.cs"
index c49a425..abfb087 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/TakeStockOrderService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/TakeStockOrderService.cs"
@@ -30,6 +30,7 @@
 using WIDESEA_DTO.CalcOut;
 using Newtonsoft.Json.Serialization;
 using Newtonsoft.Json;
+using WIDESEA_DTO.Basic;
 
 namespace WIDESEA_InboundService
 {
@@ -50,7 +51,8 @@
         private readonly IRepository<Dt_StockInfoDetail> _stockInfoDetailRepository;
         private readonly IOutboundService _outboundService;
         private readonly IFeedbackMesService _feedbackMesService;
-        public TakeStockOrderService(IRepository<Dt_TakeStockOrder> BaseDal, IUnitOfWorkManage unitOfWorkManage,IRepository<Dt_TakeStockOrder> takeStockOrder,IRepository<Dt_StockInfo> stockInfoRepository,IRepository<Dt_TakeStockOrderDetail> takeStockOrderDetail,IRepository<Dt_Task> taskRepository,ILocationInfoService locationInfoService, IRepository<Dt_InboundOrder> inboundOrderRepository,IRepository<Dt_OutboundOrder> outboundOrderRepository,IRepository<Dt_InboundOrderDetail> inboundOrderDetailRepository, IRepository<Dt_OutboundOrderDetail> outboundOrderDetailRepository, IOutboundPickingService outboundPickingService, IRepository<Dt_StockInfoDetail> stockInfoDetailRepository, IOutboundService outboundService,IFeedbackMesService feedbackMesService) : base(BaseDal)
+        private readonly IESSApiService _eSSApiService;
+        public TakeStockOrderService(IRepository<Dt_TakeStockOrder> BaseDal, IUnitOfWorkManage unitOfWorkManage,IRepository<Dt_TakeStockOrder> takeStockOrder,IRepository<Dt_StockInfo> stockInfoRepository,IRepository<Dt_TakeStockOrderDetail> takeStockOrderDetail,IRepository<Dt_Task> taskRepository,ILocationInfoService locationInfoService, IRepository<Dt_InboundOrder> inboundOrderRepository,IRepository<Dt_OutboundOrder> outboundOrderRepository,IRepository<Dt_InboundOrderDetail> inboundOrderDetailRepository, IRepository<Dt_OutboundOrderDetail> outboundOrderDetailRepository, IOutboundPickingService outboundPickingService, IRepository<Dt_StockInfoDetail> stockInfoDetailRepository, IOutboundService outboundService,IFeedbackMesService feedbackMesService,IESSApiService eSSApiService) : base(BaseDal)
         {
             _unitOfWorkManage = unitOfWorkManage;
             _takeStockOrder = takeStockOrder;
@@ -66,8 +68,20 @@
             _stockInfoDetailRepository = stockInfoDetailRepository;
             _outboundService = outboundService;
             _feedbackMesService = feedbackMesService;
+            _eSSApiService = eSSApiService;
         }
 
+        private Dictionary<string, string> stations = new Dictionary<string, string>
+        {
+            {"2-1","2-9" },
+            {"3-1","3-9" },
+        };
+
+        private Dictionary<string, string> movestations = new Dictionary<string, string>
+        {
+            {"2-1","2-5" },
+            {"3-1","3-5" },
+        };
         public WebResponseContent ValidateBoxNo(string orderNo, string boxNo)
         {
             try
@@ -210,7 +224,7 @@
                 {
                     return content.Error("鏈壘鍒拌鐩樼偣鍗曟嵁");
                 }
-                var stock = _stockInfoRepository.QueryFirst(x => x.PalletCode == boxNo);
+                var stock = _stockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == boxNo).Includes(x=>x.Details).First();
 
                 if (stock == null)
                 {
@@ -245,6 +259,11 @@
                 // 鍒嗛厤鏂拌揣浣�
                 var newLocation = _locationInfoService.AssignLocation(stock.LocationType);
 
+                if (newLocation == null)
+                {
+                    return WebResponseContent.Instance.Error("娌℃湁绌洪棽搴撲綅鍙洖搴�");
+                }
+
                 var newTask = new Dt_Task()
                 {
                     CurrentAddress = takeStockOrder.Remark,
@@ -253,24 +272,29 @@
                     NextAddress = "",
                     OrderNo = takeStockOrder.OrderNo,
                     Roadway = newLocation.RoadwayNo,
-                    SourceAddress = sourceAddress,
+                    SourceAddress = stations.GetValueOrDefault(sourceAddress)??"",
                     TargetAddress = newLocation.LocationCode,
                     TaskStatus = (int)TaskStatusEnum.New,
                     TaskType = TaskTypeEnum.InInventory.ObjToInt(),
                     PalletType = stock.PalletType,
                     WarehouseId = stock.WarehouseId
                 };
+                if (stock.Details.Count <= 0)
+                {
+                    stock.PalletType = (int)PalletTypeEnum.Empty;
+                    newTask.TaskType = TaskTypeEnum.InEmpty.ObjToInt();
+                }
                 _unitOfWorkManage.BeginTran();
                 _stockInfoRepository.UpdateData(stock);
                 _takeStockOrder.UpdateData(takeStockOrder);
                 _taskRepository.AddData(newTask);
                 _unitOfWorkManage.CommitTran();
 
-                //var moveResult = await _eSSApiService.MoveContainerAsync(new MoveContainerRequest
-                //{
-                //    slotCode = movestations[station],
-                //    containerCode = palletCode
-                //});
+                var moveResult = _eSSApiService.MoveContainerAsync(new MoveContainerRequest
+                {
+                    slotCode = movestations[sourceAddress],
+                    containerCode = boxNo
+                });
                 return content.OK();
 
             }
@@ -399,83 +423,6 @@
                 {
                     return WebResponseContent.Instance.Error("鏈壘鍒拌鐩樼偣宸紓鏁版嵁");
                 }
-                //if(takeStockOrderDetail.Remark == "鐩樼泩")
-                //{
-                //    Dt_InboundOrderDetail inboundOrderDetail = _inboundOrderDetailRepository.QueryFirst(x => x.Id == orderId);
-                //    if(inboundOrderDetail == null)
-                //    {
-                //        return WebResponseContent.Instance.Error("鏈壘鍒伴�夋嫨鐨勬潅鏀跺钩璐﹀崟鎹�");
-                //    }
-                //    Dt_InboundOrder inboundOrder = _inboundOrderRepository.Db.Queryable<Dt_InboundOrder>().Where(x=>x.Id == inboundOrderDetail.OrderId).Includes(x=>x.Details).First();
-                //    Dt_StockInfo  stockInfo = _stockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x=>x.PalletCode == takeStockOrderDetail.TakePalletCode && x.StockStatus == StockStatusEmun.鐩樼偣搴撳瓨瀹屾垚.ObjToInt()).Includes(x=>x.Details).First();
-                //    if(stockInfo== null)
-                //    {
-                //        return WebResponseContent.Instance.Error($"鐩樼偣鎵樼洏{takeStockOrderDetail.TakePalletCode}鐨勫簱瀛樹俊鎭湭鎵惧埌锛屾垨鎵樼洏鐘舵�佷笉姝g‘");
-                //    }
-                //    var datevaliDate = _inboundOrderRepository.Db.Queryable<Dt_MaterialExpirationDate>().Where(x => x.MaterialCode.Contains(inboundOrderDetail.MaterielCode.Substring(0, 6))).First();
-                //    var newStockDetail = new Dt_StockInfoDetail
-                //    {
-                //        StockId = stockInfo == null ? 0 : stockInfo.Id,
-                //        Barcode = inboundOrderDetail.Barcode,
-                //        MaterielCode = inboundOrderDetail.MaterielCode,
-                //        MaterielName = inboundOrderDetail.MaterielName,
-                //        BatchNo = inboundOrderDetail.BatchNo,
-                //        Unit = inboundOrderDetail.Unit,
-                //        InboundOrderRowNo = inboundOrderDetail.lineNo,
-                //        SupplyCode = inboundOrderDetail.SupplyCode,
-                //        WarehouseCode = inboundOrderDetail.WarehouseCode,
-                //        StockQuantity = inboundOrderDetail.OrderQuantity,
-                //        BarcodeQty = inboundOrderDetail.BarcodeQty,
-                //        BarcodeUnit = inboundOrderDetail.BarcodeUnit,
-                //        FactoryArea = inboundOrder.FactoryArea,
-                //        Status = 0,
-                //        OrderNo = inboundOrder.InboundOrderNo,
-                //        BusinessType = inboundOrder.BusinessType,
-                //        ValidDate = inboundOrder.BusinessType == BusinessTypeEnum.澶栭儴浠撳簱璋冩櫤浠�.ToString() ? inboundOrderDetail.ValidDate : datevaliDate == null ? null : Convert.ToDateTime(DateTime.Now).AddDays(Convert.ToDouble(datevaliDate.ValidityDays)),
-                //    };
-                //    stockInfo.Details.Add(newStockDetail);
-
-                //    inboundOrderDetail.ReceiptQuantity = inboundOrderDetail.OrderQuantity;
-                //    inboundOrderDetail.OverInQuantity = inboundOrderDetail.OrderQuantity;
-                //    inboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt();
-                //    int overCount = 1;
-                //    int moreOverCount = inboundOrder.Details.Count(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt());
-                //    if (inboundOrder.Details.Count() == overCount + moreOverCount)
-                //    {
-                //        inboundOrder.OrderStatus = InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt();
-                //    }
-                //    else
-                //    {
-                //        inboundOrder.OrderStatus = InOrderStatusEnum.鍏ュ簱涓�.ObjToInt();
-                //    }
-                //    takeStockOrderDetail.DifferenceQty -= inboundOrderDetail.OrderQuantity;
-                //    if(takeStockOrderDetail.DifferenceQty > 0)
-                //    {
-                //        takeStockOrderDetail.TakeDetalStatus = TakeStockDetailStatusEnum.鏉傛敹鏉傚彂骞宠处澶勭悊涓�.ObjToInt();
-                //    }
-                //    else if (takeStockOrderDetail.DifferenceQty == 0)
-                //    {
-                //        takeStockOrderDetail.TakeDetalStatus = TakeStockDetailStatusEnum.鏉傛敹鏉傚彂骞宠处澶勭悊.ObjToInt();
-                //    }
-                //    else
-                //    {
-                //        return WebResponseContent.Instance.Error("璇ユ潅鏀跺崟鎹槑缁嗘潯鐮佹暟閲忓ぇ浜庡緟骞宠处鏁伴噺锛岃鍙﹂�夊叾浠栧崟鎹钩璐�");
-                //    }
-
-                //    _unitOfWorkManage.BeginTran();
-                //    _inboundOrderRepository.UpdateData(inboundOrder);
-                //    _inboundOrderDetailRepository.UpdateData(inboundOrderDetail);
-                //    _takeStockOrderDetail.UpdateData(takeStockOrderDetail);
-                //    BaseDal.Db.Insertable(newStockDetail).ExecuteCommand();
-                //    _unitOfWorkManage.CommitTran();
-                //    List<string> barcodes = new List<string>();
-                //    barcodes.Add(inboundOrderDetail.Barcode);
-                //    _outboundPickingService.NoStockOutBatchInOrderFeedbackToMes(inboundOrder.Id, barcodes);
-
-
-                //}
-                //else
-                //{
                 Dt_OutboundOrderDetail outboundOrderDetail = _outboundOrderDetailRepository.QueryFirst(x => x.Remark == takeStockOrderDetail.TakeStockNo && (x.OrderQuantity-x.LockQuantity-x.MoveQty)>0);
                 if (outboundOrderDetail == null)
                 {
@@ -711,10 +658,11 @@
                     List<Dt_OutboundOrderDetail> details = _outboundOrderDetailRepository.QueryData(x => x.OrderId == outboundOrder.Id);
                     if(details.All(x => x.OverOutQuantity >= x.OrderQuantity - x.MoveQty))
                     {
+                        _feedbackMesService.OutboundFeedback(outboundOrder.OrderNo);
                         outboundOrder.OrderStatus = OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt();
                         _outboundOrderRepository.UpdateData(outboundOrder);
                     }
-                    _feedbackMesService.OutboundFeedback(outboundOrder.OrderNo);
+                    
 
                 }
                 catch (Exception ex)

--
Gitblit v1.9.3