From 279077bf41bc726b474ca5d76cd2b8393d41d867 Mon Sep 17 00:00:00 2001
From: huanghongfeng <huanghongfeng@hnkhzn.com>
Date: 星期三, 05 十一月 2025 12:16:01 +0800
Subject: [PATCH] 1

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs |  178 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 172 insertions(+), 6 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs"
index b7c8f5b..e82f7d9 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Inbound.cs"
@@ -18,6 +18,11 @@
 using WIDESEA_Common.TaskEnum;
 using WIDESEA_Common.StockEnum;
 using WIDESEA_Common.LocationEnum;
+using WIDESEA_Common.CommonEnum;
+using WIDESEA_DTO.ToMes;
+using System.Diagnostics;
+using WIDESEA_Common.OtherEnum;
+using WIDESEA_Core.Const;
 
 namespace WIDESEA_TaskInfoService
 {
@@ -40,7 +45,48 @@
                     PushTasksToWCS(new List<Dt_Task> { task });
                     return WebResponseContent.Instance.OK($"璇ユ墭鐩樺凡鐢熸垚浠诲姟", _mapper.Map<WMSTaskDTO>(task));
                 }
+               /* if (Repository.QueryFirst(x => x.SourceAddress == stationCode && x.TaskStatus == OutTaskStatusEnum.New.ObjToInt()) != null)
+                {
+                    return WebResponseContent.Instance.Error($"璇ョ珯鐐瑰凡鏈夋湭鎵ц鐨勪换鍔�");
+                }*/
 
+
+                //Dt_StockInfo stockInfo = _stockRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First();
+
+                //if (stockInfo == null)
+                //{
+                //    return WebResponseContent.Instance.Error($"鏈壘鍒扮粍鐩樹俊鎭�");
+                //}
+                //var details = stockInfo.Details.FirstOrDefault();
+                //if (!string.IsNullOrEmpty(stockInfo.LocationCode))
+                //{
+                //    return WebResponseContent.Instance.Error($"璇ユ墭鐩樺凡缁戝畾璐т綅");
+                //}
+                Dt_RoadwayInfo roadwayInfo = _roadwayInforepository.QueryFirst(x => x.InStationCode == stationCode);
+                if (roadwayInfo == null)
+                {
+                    return WebResponseContent.Instance.Error($"鏈壘鍒板垰鍏ュ簱绔欏彴鍦板潃");
+                }
+                Dt_Warehouse warehouse = _warehouseRepository.QueryFirst(x => x.WarehouseCode == roadwayInfo.RoadwayNo);
+                if (warehouse == null)
+                {
+                    return WebResponseContent.Instance.Error("鏈壘鍒拌浠撳簱");
+                }
+                Dt_LocationInfo? locationInfo = _basicService.LocationInfoService.AssignLocation(roadwayInfo.RoadwayNo, warehouse.WarehouseId, "");//
+                if (locationInfo == null)
+                {
+                    return WebResponseContent.Instance.Error($"璐т綅鍒嗛厤澶辫触,鏈壘鍒板彲鍒嗛厤璐т綅");
+                }
+                var dt_Stock = new Dt_StockInfo
+                {
+                    PalletCode = palletCode,
+                    PalletType = 1,
+                    LocationCode = locationInfo.LocationCode,
+                    StockStatus = (int)StockStatusEmun.缁勭洏鏆傚瓨,
+                    Creater = "WMS",
+                    CreateDate = DateTime.Now,
+                    WarehouseId = warehouse.WarehouseId,
+                };
                 Dt_Task newTask = new Dt_Task()
                 {
                     CurrentAddress = stationCode,
@@ -50,24 +96,26 @@
                     OrderNo = "1",
                     Roadway = "1",
                     SourceAddress = "",
-                    TargetAddress = "2-20-1",
-                    TaskType = TaskTypeEnum.Inbound.ObjToInt(),
-                    TaskStatus = TaskStatusEnum.New.ObjToInt(),
-                    WarehouseId = 1,
+                    TargetAddress = locationInfo.LocationCode,
+                    TaskType = TaskInboundTypeEnum.Inbound.ObjToInt(),
+                    TaskStatus = TaskInStatusEnum.Line_InExecuting.ObjToInt(),
+                    WarehouseId = warehouse.WarehouseId,
                     //PalletType = GetPalletType(warehouse, palletCode),//GetPalletType(warehouse, palletCode)
                     Creater = "WCS",
                     CreateDate = DateTime.Now
                 };
 
                 _unitOfWorkManage.BeginTran();
+                locationInfo.LocationStatus = LocationStatusEnum.Lock.ObjToInt();
                 int taskId = BaseDal.AddData(newTask);
                 newTask.TaskId = taskId;
+                _stockRepository.AddData(dt_Stock);
                 //_stockRepository.UpdateData(stockInfo);
-                //_locationInfoRepository.UpdateData(locationInfo);
+                _locationInfoRepository.UpdateData(locationInfo);
                 _unitOfWorkManage.CommitTran();
                 WMSTaskDTO wMSTaskDTO = _mapper.Map<WMSTaskDTO>(newTask);
 
-                //PushTasksToWCS(new List<Dt_Task> { newTask });
+                PushTasksToWCS(new List<Dt_Task> { newTask });
                 return WebResponseContent.Instance.OK(data: wMSTaskDTO);
             }
             catch (Exception ex)
@@ -77,5 +125,123 @@
             }
         }
 
+
+        /// <summary>
+        /// 鍒涘缓鍏ュ簱浠诲姟
+        /// </summary>
+        /// <param name="inboundTask"></param>
+        /// <returns></returns>
+        /// <exception cref="NotImplementedException"></exception>
+        public ApiResponse<object> sendEnTask(InOutboundTaskReceived inboundTask)
+        {
+            WebResponseContent webResponseContent = new WebResponseContent();
+
+            try
+            {
+                List<Dt_Task> AddtaskList = new List<Dt_Task>();
+                List<Dt_LocationInfo> Adddt_Locations = new List<Dt_LocationInfo>();
+                List<Dt_StockInfo> Adddtstockt = new List<Dt_StockInfo>();
+
+                if (inboundTask.palletInfoList.Count > 0)
+                {
+                    List<Dt_Task> taskData = BaseDal.QueryData();
+
+                    Dt_StationManger dt_Station = _stationMangerService.QueryPlatform(inboundTask.NodeCode);
+                    if (dt_Station == null) return MESresponse($"鏈壘鍒扮珯鍙颁俊鎭�,绔欏彴缂栧彿锛歿inboundTask.NodeCode}", false);
+
+                    foreach (PalletInfo palletInfo in inboundTask.palletInfoList)
+                    {
+                        Dt_LocationInfo location = null;
+                        if (palletInfo.locationCode == null || palletInfo.locationCode == "")
+                        {
+                            Dt_Warehouse warehouse = _warehouseRepository.QueryFirst(x => x.WarehouseCode == dt_Station.StackerCraneCode);
+
+                            location = _basicService.LocationInfoService.AssignLocation(dt_Station.StackerCraneCode, warehouse.WarehouseId, "");//鑾峰彇鍒版柊搴撲綅
+                        }
+                        else
+                        {
+                            location = _locationInfoRepository.QueryFirst(x => x.LocationCode == palletInfo.locationCode);
+                        }
+                        if (location == null) return MESresponse($"鏈壘鍒拌揣浣嶄俊鎭�,鏉$爜锛歿palletInfo.palletCode}", false);
+                        if (location.LocationStatus != (int)LocationStatusEnum.Free) return MESresponse($"鎵樼洏鏉$爜锛歿palletInfo.palletCode}锛屾煡鎵惧埌鐨勮揣浣嶏細{location.LocationCode},涓嶄负绌鸿揣浣嶏紒", false);
+
+
+                        //鍒涘缓缁勭洏淇℃伅
+                        var dt_Stock = new Dt_StockInfo
+                        {
+                            PalletCode = palletInfo.palletCode,
+                            PalletType = 1,
+                            LocationCode = location.LocationCode,
+                            StockStatus = (int)StockStatusEmun.缁勭洏鏆傚瓨,
+                            Creater = "WMS",
+                            CreateDate = DateTime.Now,
+                            MESsubPalletCode = palletInfo.palletCode,
+                        };
+                        location.LocationStatus = (int)LocationStatusEnum.InStockLock;
+
+                        //鐢熸垚绉诲姩浠诲姟
+                        Dt_Task dt_Task = new()
+                        {
+                            PalletCode = palletInfo.palletCode,
+                            TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+                            Roadway = location.RoadwayNo,
+                            TaskType = TaskInboundTypeEnum.Inbound.ObjToInt(),
+                            TaskStatus = TaskInStatusEnum.Line_InExecuting.ObjToInt(),
+                            SourceAddress = dt_Station.StationCode,
+                            TargetAddress = location.LocationCode,
+                            CurrentAddress = dt_Station.StationCode,
+                            NextAddress = location.LocationCode,
+                            Grade = 1,
+                            Creater = "MES",
+                            Depth = location.Depth,
+                            CreateDate = DateTime.Now,
+                            MEStaskId = inboundTask.TaskId,
+                            MESbusinessId = inboundTask.BusinessId,
+                            MESsubPalletCode = palletInfo.subPalletCode
+                        };
+                        Adddtstockt.Add(dt_Stock);
+                        Adddt_Locations.Add(location);
+                        AddtaskList.Add(dt_Task);
+                    }
+                    if (Adddtstockt.Count > 0 && Adddt_Locations.Count > 0 && AddtaskList.Count > 0)
+                    {
+                        _unitOfWorkManage.BeginTran();
+
+
+                        _stockRepository.AddData(Adddtstockt);
+                        _locationInfoRepository.UpdateData(Adddt_Locations);
+                        BaseDal.AddData(AddtaskList);
+
+                        var respon = PushTasksToWCS(AddtaskList, "");
+                        if (respon.Status)
+                        {
+                            _unitOfWorkManage.CommitTran();  //鎻愪氦浜嬪姟
+                            return MESresponse("", true);
+                        }
+                        else
+                        {
+                            _unitOfWorkManage.RollbackTran();  //鍥炴粴浜嬪姟
+                            return MESresponse($"涓嬪彂鍑哄簱澶辫触锛屽師鍥狅細{respon.Message}锛�", false);
+                        }
+
+                    }
+                    else
+                    {
+                        return MESresponse("浠诲姟鐢熸垚澶辫触锛�", false);
+                    }
+
+                }
+                else
+                {
+                    return MESresponse("鎺ユ敹鍒癕ES鎵樼洏缂栫爜鍒楄〃鏃犳暟鎹紒", false);
+                }
+            }
+            catch (Exception ex)
+            {
+                _unitOfWorkManage.RollbackTran();  //鍥炴粴浜嬪姟
+                return MESresponse($"涓嬪彂鍑哄簱澶辫触锛屽師鍥狅細{ex.Message}锛�", false);
+                throw;
+            }
+        }
     }
 }

--
Gitblit v1.9.3