From 1d8897348d578648421b024d0dc5ff3d626e05f9 Mon Sep 17 00:00:00 2001
From: huanghongfeng <huanghongfeng@hnkhzn.com>
Date: 星期四, 19 六月 2025 16:48:07 +0800
Subject: [PATCH] 最新

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs |  135 +++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 124 insertions(+), 11 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs"
index 1fb3e85..4ab615a 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs"
@@ -440,9 +440,9 @@
                                 {
                                     string[] targetCodesst = dt_StockInfo.PalletCode.Split("*");
                                     Dt_InboundOrder dt_Inbound = _inboundService.InbounOrderService.Repository.QueryFirst(x => x.OrderName == targetCodesst[0]);
-                                    if (dt_Inbound.Startingcolumn != 0 || dt_Inbound.Startingcolumn != 0)
+                                    if (dt_Inbound.Startingcolumn != 0 || dt_Inbound.Terminationcolumn != 0)
                                     {
-                                        newLocation = _basicService.LocationInfoService.GetLocation2(locationInfos.RoadwayNo, Locationtype, dt_Inbound.Startingcolumn, dt_Inbound.Startingcolumn);
+                                        newLocation = _basicService.LocationInfoService.GetLocation2(locationInfos.RoadwayNo, Locationtype, dt_Inbound.Startingcolumn, dt_Inbound.Terminationcolumn);
                                     }
                                     else
                                     {
@@ -454,6 +454,17 @@
                                 {
                                     newLocation = _basicService.LocationInfoService.GetLocation(locationInfos.RoadwayNo, Locationtype);
                                 }
+
+
+                                //鐩爣璐т綅鏌ユ壘搴撲綅鏄惁鏈夎揣
+                                Dt_StockInfo dt_StockCurren = _stockService.StockInfoService.Repository.QueryFirst(x => x.LocationCode == newLocation.LocationCode);
+                                if (dt_StockCurren != null) return content = WebResponseContent.Instance.Error($"鍏ュ簱澶辫触锛屾墭鐩樻潯鐮侊細{dt_StockInfo.PalletCode}锛屾煡鎵惧嚭鐨勮揣浣嶄俊鎭搴斿凡鏈夊簱瀛�");
+
+                                Dt_Task taskcurren = BaseDal.QueryFirst(x => x.TargetAddress == newLocation.LocationCode);
+                                if (taskcurren != null) return content = WebResponseContent.Instance.Error($"鍏ュ簱澶辫触锛屾墭鐩樻潯鐮侊細{dt_StockInfo.PalletCode}锛屾煡鎵惧嚭鐨勮揣浣嶄俊鎭凡鏈夊叆搴撲换鍔�");
+
+                                bool crutaskthy = _taskHtyService.CrueeTaskHty(newLocation.LocationCode);
+                                if (crutaskthy) return content = WebResponseContent.Instance.Error($"鍏ュ簱澶辫触锛屾墭鐩樻潯鐮侊細{dt_StockInfo.PalletCode}锛屾煡鎵惧嚭鐨勮揣浣嶅湪浠诲姟鍘嗗彶淇℃伅涓紝鏈夊叆搴撴垨绉诲簱淇℃伅");
 
 
                                 if (newLocation != null)
@@ -489,6 +500,7 @@
                                     loca.Add(newLocation);
                                     loca.Add(locationInfos);
                                     _basicService.LocationInfoService.UpdateData(loca);
+                                    BaseDal.AddData(dt_Task);
                                     _unitOfWorkManage.CommitTran();
                                     return content = WebResponseContent.Instance.OK(data: dt_Task);
                                 }
@@ -692,7 +704,7 @@
                 for (int i = 0; i < saveModel.DelKeys.Count; i++)
                 {
                     Dt_StockInfo stockt = _stockService.StockInfoService.Repository.QueryFirst(x => x.PalletCode == saveModel.DelKeys[i].ToString());
-                    if (stockt.StockStatus == (int)StockStatusEmun.宸插叆搴� && (stockt.Wlstatus == (int)InventoryMaterialStatus.鍚堟牸 || stockt.Wlstatus == (int)InventoryMaterialStatus.杩斿伐))
+                    if (stockt.StockStatus == (int)StockStatusEmun.宸插叆搴� && (stockt.Wlstatus == (int)InventoryMaterialStatus.鍚堟牸 || stockt.Wlstatus == (int)InventoryMaterialStatus.杩斿伐 || stockt.Wlstatus == (int)InventoryMaterialStatus.鐗归噰) )
                     {
                         if(stockt.MaterialType != (int)InventoryMaterialType.鍘熸潗鏂�)
                         {
@@ -757,7 +769,7 @@
                     }
                     else
                     {
-                        return content = WebResponseContent.Instance.Error($"鍑哄簱澶辫触锛岃閫夋嫨宸插叆搴撲笖鍚堟牸鐨勭墿鏂欏嚭搴擄紒锛侊紒锛屽嚭搴撴潯鐮侊細{saveModel.DelKeys[i].ToString()}");
+                        return content = WebResponseContent.Instance.Error($"鍑哄簱澶辫触锛岃閫夋嫨宸插叆搴撲笖锛堝悎鏍硷紝杩斿伐锛岀壒閲囷級鐨勭墿鏂欏嚭搴擄紒锛侊紒锛屽嚭搴撴潯鐮侊細{saveModel.DelKeys[i].ToString()}");
                     }
 
                 }
@@ -927,7 +939,7 @@
                     }
                     else
                     {
-                        return content = WebResponseContent.Instance.Error($"鍑哄簱澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫簱瀛樹俊鎭紝搴撳瓨缂栧彿锛歿pallid}");
+                        return content = WebResponseContent.Instance.Error($"淇敼澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫簱瀛樹俊鎭紝搴撳瓨缂栧彿锛歿pallid}");
 
                     }
                 }
@@ -943,7 +955,51 @@
             catch (Exception ex)
             {
                 _unitOfWorkManage.RollbackTran();
-                return content = WebResponseContent.Instance.Error($"鍑哄簱澶辫触锛屾姤閿欎俊鎭細{ex.Message}");
+                return content = WebResponseContent.Instance.Error($"淇敼澶辫触锛屾姤閿欎俊鎭細{ex.Message}");
+                throw;
+            }
+        }
+
+        public WebResponseContent ManualOutbound4(SaveModel saveModel)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                List<Dt_StockInfo> dtstockt = new List<Dt_StockInfo>();
+
+
+                List<Dt_StockInfo> stocktData = _stockService.StockInfoService.Repository.QueryData(x => x.StockStatus == (int)StockStatusEmun.宸插叆搴�);
+                string json = saveModel.DelKeys[0].ToString();
+                List<int> palletCodes = JsonConvert.DeserializeObject<List<int>>(json);
+
+                foreach (int pallid in palletCodes)
+                {
+                    Dt_StockInfo stockt = stocktData.FirstOrDefault(x => x.Id == pallid);
+                    if (stockt != null)
+                    {
+
+                        stockt.Mgeneratetime = DateTime.Parse(saveModel.DelKeys[1].ToString());
+                        dtstockt.Add(stockt);
+                    }
+                    else
+                    {
+                        return content = WebResponseContent.Instance.Error($"淇敼澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫簱瀛樹俊鎭紝搴撳瓨缂栧彿锛歿pallid}");
+
+                    }
+                }
+                _unitOfWorkManage.BeginTran();
+                if (dtstockt.Count > 0)
+                {
+                    _stockService.StockInfoService.Repository.UpdateData(dtstockt);
+                }
+                _unitOfWorkManage.CommitTran();
+                content = WebResponseContent.Instance.OK($"淇敼鎴愬姛");
+                return content;
+            }
+            catch (Exception ex)
+            {
+                _unitOfWorkManage.RollbackTran();
+                return content = WebResponseContent.Instance.Error($"淇敼澶辫触锛屾姤閿欎俊鎭細{ex.Message}");
                 throw;
             }
         }
@@ -1171,10 +1227,33 @@
                     {
                         Dt_StockInfoDetail stocktdetail = _stockService.StockInfoDetailService.Repository.QueryFirst(x => x.StockId == stockt.Id);
                         Dt_LocationInfo locationinfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == stockt.LocationCode);
+                        Dt_Task_Hty task_Hty = new Dt_Task_Hty()
+                        {
+                            TaskNum = 001,
+                            PalletCode = stockt.PalletCode,
+                            Roadway = locationinfo.RoadwayNo,
+                            TaskType = (int)TaskTypeEnum.Outbound,
+                            TaskStatus = (int)OutTaskStatusEnum.OutFinish,
+                            SourceAddress = locationinfo.LocationCode,
+                            TargetAddress = locationinfo.LocationCode,
+                            CurrentAddress = locationinfo.LocationCode,
+                            NextAddress = locationinfo.LocationCode,
+                            Grade = 1,
+                            Dispatchertime = DateTime.Now,
+                            Creater = App.User.UserName,
+                        CreateDate = DateTime.Now,
+                            ModifyDate = DateTime.Now,
+                            Modifier = App.User.UserName,
+                            Remark = "浜哄伐鍑哄簱",
+                            PLCTo = 1,
+                            PalletCodequantity = 1,
+                            MaterialType = 1
+                        };
+                        _taskHtyService.AddData(task_Hty);
                         locationinfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
                         dtstockt.Add(stockt);
                         locations.Add(locationinfo);
-                        if (stockt.MaterialType == (int)InventoryMaterialType.绌烘墭)
+                        if (stockt.MaterialType != (int)InventoryMaterialType.绌烘墭)
                         {
                             dtstocktdetail.Add(stocktdetail);
                         }
@@ -1188,10 +1267,7 @@
                 }
                 _unitOfWorkManage.BeginTran();
                 _stockService.StockInfoService.Repository.DeleteData(dtstockt);
-                if(dtstocktdetail.Count==0)
-                {
-                    _stockService.StockInfoDetailService.Repository.DeleteData(dtstocktdetail);
-                }
+                _stockService.StockInfoDetailService.Repository.DeleteData(dtstocktdetail);
                 _basicService.LocationInfoService.Repository.UpdateData(locations);
                 _unitOfWorkManage.CommitTran();
                 content = WebResponseContent.Instance.OK();
@@ -1241,6 +1317,7 @@
                     BaseDal.DeleteData(task);
                     BaseDal.DeleteAndMoveIntoHty(task, OperateType.浜哄伐鍒犻櫎);
                     WriteLog.GetLog("浠诲姟鏃ュ織").Write($"鍑哄簱浠诲姟鍙栨秷鎴愬姛锛屾墭鐩樻潯鐮侊細{task.PalletCode}", $"浠诲姟鍙栨秷");
+                    WebResponseContent webResponseContent = HttpHelper.Post<WebResponseContent>(ReceiveWCSTask, task.TaskNum, "浠诲姟鍒犻櫎");
                     return content = WebResponseContent.Instance.Error($"鍑哄簱浠诲姟鍙栨秷鎴愬姛");
 
                 }
@@ -1263,6 +1340,42 @@
                     BaseDal.DeleteData(task);
                     BaseDal.DeleteAndMoveIntoHty(task, OperateType.浜哄伐鍒犻櫎);
                     WriteLog.GetLog("浠诲姟鏃ュ織").Write($"鍏ュ簱浠诲姟鍙栨秷鎴愬姛锛屾墭鐩樻潯鐮侊細{task.PalletCode}", $"浠诲姟鍙栨秷");
+                    WebResponseContent webResponseContent = HttpHelper.Post<WebResponseContent>(ReceiveWCSTask, task.TaskNum, "浠诲姟鍒犻櫎");
+                    return content = WebResponseContent.Instance.Error($"鍏ュ簱浠诲姟鍙栨秷鎴愬姛");
+                }
+                else if (task.TaskType == (int)TaskTypeEnum.RelocationIn)    //搴撳唴绉诲簱
+                {
+                    //澶勭悊鍑哄簱鐨勯�昏緫
+                    Dt_LocationInfo locationinfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
+                    if (locationinfo.LocationStatus == LocationStatusEnum.Lock.ObjToInt() || locationinfo.LocationStatus == LocationStatusEnum.PalletLock.ObjToInt())
+                    {
+                        locationinfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
+                    }
+                    _basicService.LocationInfoService.Repository.UpdateData(locationinfo);
+
+                    Dt_LocationInfo locationinfo2 = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress);
+                    if (locationinfo2.LocationStatus == LocationStatusEnum.Lock.ObjToInt())
+                    {
+                        locationinfo2.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
+                    }
+                    if (locationinfo2.LocationStatus == LocationStatusEnum.PalletLock.ObjToInt())
+                    {
+                        locationinfo2.LocationStatus = LocationStatusEnum.Pallet.ObjToInt();
+                    }
+                    _basicService.LocationInfoService.Repository.UpdateData(locationinfo2);
+                    Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.QueryFirst(x => x.PalletCode == task.PalletCode);
+                    stockInfo.StockStatus = (int)StockStatusEmun.宸插叆搴�;
+                    _stockService.StockInfoService.Repository.UpdateData(stockInfo);
+                    Dt_StockInfoDetail stocktdetail = _stockService.StockInfoDetailService.Repository.QueryFirst(x => x.StockId == stockInfo.Id);
+                    if (stocktdetail != null)
+                    {
+                        stocktdetail.Status = (int)StockStatusEmun.宸插叆搴�;
+                        _stockService.StockInfoDetailService.Repository.UpdateData(stocktdetail);
+                    }
+                    BaseDal.DeleteData(task);
+                    BaseDal.DeleteAndMoveIntoHty(task, OperateType.浜哄伐鍒犻櫎);
+                    WriteLog.GetLog("浠诲姟鏃ュ織").Write($"鍏ュ簱浠诲姟鍙栨秷鎴愬姛锛屾墭鐩樻潯鐮侊細{task.PalletCode}", $"浠诲姟鍙栨秷");
+                    WebResponseContent webResponseContent = HttpHelper.Post<WebResponseContent>(ReceiveWCSTask, task.TaskNum, "浠诲姟鍒犻櫎");
                     return content = WebResponseContent.Instance.Error($"鍏ュ簱浠诲姟鍙栨秷鎴愬姛");
                 }
                 else

--
Gitblit v1.9.3