From c9fe2c53364abe0e0e495a1b756267f865159e2e Mon Sep 17 00:00:00 2001
From: chengsc <11752@DESKTOP-DS49RCP>
Date: 星期三, 25 六月 2025 12:17:26 +0800
Subject: [PATCH] Merge branch 'csc'

---
 Wms/WMS.BLL/HttpServer.cs |  395 ++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 353 insertions(+), 42 deletions(-)

diff --git a/Wms/WMS.BLL/HttpServer.cs b/Wms/WMS.BLL/HttpServer.cs
index 0f5f9a3..97b2d33 100644
--- a/Wms/WMS.BLL/HttpServer.cs
+++ b/Wms/WMS.BLL/HttpServer.cs
@@ -26,6 +26,309 @@
         private static readonly SqlSugarScope Db = DataContext.Db;
         public HttpServer() { }
 
+
+        public OutCommandDto RequestPalletIn(string palletNo, string houseNo, int palletNum, string Strlocate)
+        {
+            //return null;
+            try
+            {
+                #region 鍒ゆ柇
+                if (string.IsNullOrEmpty(palletNo))
+                {
+                    throw new Exception("鎵樼洏鍙蜂笉鑳戒负绌�");
+                }
+                if (string.IsNullOrEmpty(houseNo))
+                {
+                    throw new Exception("浠撳簱鍙蜂笉鑳戒负绌�");
+                }
+                if (palletNum <= 0)
+                {
+                    throw new Exception("鎵樼洏鏁伴噺涓嶈兘灏忕瓑0");
+                }
+                if (string.IsNullOrEmpty(Strlocate))
+                {
+                    throw new Exception("璧峰浣嶇疆涓嶈兘涓虹┖");
+                }
+                //鑾峰彇鍌ㄤ綅淇℃伅
+                var locateInfo = Db.Queryable<SysStorageLocat>().First(m => m.IsDel == "0" && m.WareHouseNo == "W04" && m.LocatNo == Strlocate);
+                if (locateInfo == null)
+                {
+                    throw new Exception("鏈煡璇㈠埌绌哄偍浣�");
+                }
+                if (locateInfo.Flag != "0")
+                {
+                    throw new Exception("褰撳墠浣嶇疆鏍囪瘑鐘舵�佹槸闈炴甯哥殑");
+                }
+
+                #endregion
+
+                #region MyRegion
+
+                var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).ToList();
+                if (stockDetail.Count > 0)
+                {
+                    throw new Exception("褰撳墠鎵樼洏鍦ㄥ簱鍐呭凡鏈夊簱瀛樹俊鎭紝璇锋牳瀹�");
+                }
+
+                //鑾峰彇鎵樼洏淇℃伅
+                var pallet = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNo);
+                if (pallet == null)
+                {
+                    throw new Exception("鏈煡璇㈠埌鎵樼洏淇℃伅");
+                }
+                if (pallet.Status != "0")
+                {
+                    throw new Exception("鎵樼洏鐘舵�佷笉鑳芥湭浣跨敤鐘舵��");
+                }
+                //鑾峰彇鎵樼洏淇℃伅
+                var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == "100099");
+                if (sku == null)
+                {
+                    throw new Exception("鐗╂枡淇℃伅涓湭鏌ヨ鍒扮┖鎵樼洏鐨勭墿鏂欎俊鎭紝涓嶅彲鍏ュ簱");
+                }
+                var pNum = 0;
+                var bNum = 0;
+
+                new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum);
+
+                var datetime = Db.GetDate();
+                Db.BeginTran();
+
+                // 鎻掑叆鎵樼洏缁戝畾琛�
+                var modelpb = new BllPalletBind
+                {
+                    ASNNo = "",
+                    ASNDetailNo = 0,
+                    TaskNo = "", //浠诲姟鍙�
+                    PalletNo = palletNo,
+                    Qty = palletNum,
+                    FullQty = pNum,
+                    Status = "2", //涓婃灦瀹屾垚
+                    Type = "1", //0 鐗╂枡鎵� 1 绌烘墭
+                    LotNo = "",
+                    LotText = "",
+                    SupplierLot = "",
+                    InspectMark = "0", //0 鍚� 1 鏄�
+                    BitPalletMark = pNum == palletNum ? "0" : "1",
+                    IsBale = "0",
+                    IsBelt = "0",
+                    CreateUser = 0,
+                    CreateTime = Db.GetDate()
+                };
+                var id = Db.Insertable(modelpb).ExecuteReturnIdentity();
+
+                #region 鐢宠鍌ㄤ綅
+
+                SysStorageLocat locate = null;
+
+
+                //鍒ゆ柇鐗╂枡鏄惁鍚湁绫诲埆淇℃伅
+                if (string.IsNullOrWhiteSpace(sku.CategoryNo))
+                {
+                    throw new Exception($"鐗╂枡锛歿sku.SkuNo}鏈煡璇㈠埌绫诲埆淇℃伅");
+                }
+
+                var skuCategory = Db.Queryable<SysMaterialCategory>().First(m => m.IsDel == "0" && m.CategoryNo == sku.CategoryNo);
+                if (skuCategory == null)
+                {
+                    throw new Exception($"鏈湪绫诲埆淇℃伅涓煡璇㈠埌鐗╂枡锛歿sku.SkuNo}鍖呭惈鐨勭被鍒�");
+                }
+
+                var areaStr = skuCategory.AreaNo.Split(",");
+                var areaList = new List<string>();
+                foreach (var item in areaStr)
+                {
+                    areaList.Add(item);
+                }
+                var allotLocate = new AllotLocation();
+                for (int i = 1; i <= 2; i++)
+                {
+                    var iStr = i.ToString();
+                    locate = allotLocate.GetSuiTableLocate(houseNo, areaList, "", iStr);
+                    if (locate != null)
+                    {
+                        break;
+                    }
+                }
+
+
+
+                #endregion
+
+                #region 搴撳瓨鏄庣粏
+                var sd1 = new DataStockDetail()
+                {
+                    LotNo = modelpb.LotNo,
+                    LotText = modelpb.LotText,
+                    SupplierLot = modelpb.SupplierLot,
+                    SkuNo = sku.SkuNo,
+                    SkuName = sku.SkuName,
+                    Standard = sku.Standard,
+                    Qty = modelpb.Qty,
+                    LockQty = 0,
+                    FrozenQty = 0,
+                    InspectQty = 0,
+                    ASNNo = modelpb.ASNNo,
+                    ASNDetailNo = modelpb.ASNDetailNo,
+                    //WareHouseNo = locate.WareHouseNo,
+                    //RoadwayNo = locate.RoadwayNo,
+                    //AreaNo = locate.AreaNo,
+                    //LocatNo = locate.LocatNo,
+                    PalletNo = modelpb.PalletNo,
+                    PalletNo2 = modelpb.PalletNo2,
+                    PalletNo3 = modelpb.PalletNo3,
+                    PalletTags = "0",
+                    CompleteTime = datetime,
+                    ProductionTime = modelpb.ProductionTime,
+                    ExpirationTime = modelpb.ExpirationTime,
+                    Status = "0",
+                    InspectMark = modelpb.InspectMark,
+                    InspectStatus = sku.IsInspect,
+                    BitPalletMark = modelpb.BitPalletMark,
+                    PackagNo = sku.PackagNo,
+                    IsBale = modelpb.IsBale,
+                    IsBelt = modelpb.IsBelt,
+
+
+                    IsDel = "0",
+                    CreateUser = 0,
+                    CreateTime = datetime
+                };
+                var sdId1 = Db.Insertable(sd1).ExecuteReturnIdentity();
+                #endregion
+
+                #region 搴撳瓨 
+                var dataStock1 = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo);
+                if (dataStock1 != null)
+                {
+                    dataStock1.Qty += modelpb.Qty;
+                    if (modelpb.InspectMark == "1")
+                    {
+                        dataStock1.IsSampling = "0";
+                    }
+                    Db.Updateable(dataStock1).ExecuteCommand();
+                }
+                else
+                {
+                    var stock = new DataStock()
+                    {
+                        SkuNo = sku.SkuNo,
+                        SkuName = sku.SkuName,
+                        Standard = sku.Standard,
+                        LotNo = "",
+                        LotText = "",
+                        Qty = modelpb.Qty,
+                        LockQty = 0,
+                        FrozenQty = 0,
+                        IsSampling = "0",
+                        IsDel = "0",
+                        CreateUser = 0,
+                        CreateTime = datetime
+                    };
+                    Db.Insertable(stock).ExecuteCommand();
+                }
+                #endregion
+
+                // 鏇存敼鎵樼洏浣跨敤鐘舵��
+                string sqlStr = string.Empty;
+                sqlStr = $"update SysPallets set Status = '1' where PalletNo = '{palletNo}';";
+                Db.Ado.ExecuteCommand(sqlStr);
+
+                #region 娣诲姞浠诲姟
+
+                //娣诲姞宸烽亾浣跨敤璁板綍
+                var log = new SysRoadwayUseLog
+                {
+                    RoadwayNo = locate.RoadwayNo,
+                    WareHouseNo = houseNo,
+                    Row = 0,
+                    Column = 0,
+                    Layer = 0,
+                };
+                Db.Insertable(log).ExecuteCommand();
+                var taskNo = new Common().GetMaxNo("TK");
+                var inTask = new LogTask    //鍏ュ簱浠诲姟
+                {
+                    TaskNo = taskNo,
+                    Sender = "WMS",
+                    Receiver = "WCS",
+                    IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+                    SendDate = DateTime.Now,  //鍙戦�佹椂闂�
+                    BackDate = DateTime.Now,  //杩斿洖鏃堕棿
+                    StartRoadway = "",            // 璧峰宸烽亾
+                    StartLocat = Strlocate,//璧峰浣嶇疆
+                    EndLocat = locate.LocatNo,//鐩爣浣嶇疆
+                    EndRoadway = locate.RoadwayNo,  // 鐩爣宸烽亾
+                    PalletNo = palletNo,//鎵樼洏鐮�
+                    IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+                    IsCancel = 1,//鏄惁鍙彇娑�
+                    IsFinish = 1,//鏄惁鍙畬鎴�
+                    Type = "0",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
+                    Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+                    OrderType = "0",//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
+                    Msg = $"{locateInfo.LocatNo}鍒�=>>" + locate.LocatNo + "鐨勫叆搴撲换鍔�", //鍏抽敭淇℃伅
+
+                };
+                Db.Insertable(inTask).ExecuteCommand();
+                var asnNo = "";
+
+                //娣诲姞鎵樼洏涓婃灦璁板綍
+                var upShelf = new BllPalletUpShelf()
+                {
+                    TaskNo = inTask.TaskNo,
+                    TraceNo = asnNo,
+                    PalletNo = palletNo,
+                    SkuNo = sku.SkuNo,
+                    SkuName = sku.SkuName,
+                    LotNo = "",
+                    Status = "1",
+
+                    WareHouseNo = houseNo,
+                    RoadwayNo = locate.RoadwayNo,
+                    AreaNo = locate.AreaNo,
+                    LocatNo = locate.LocatNo,
+
+                    CreateUser = 0,
+                };
+                Db.Insertable(upShelf).ExecuteCommand();
+
+
+
+                locate.Status = "2";
+                Db.Updateable(locate).ExecuteCommand();
+
+                var comDto = new OutCommandDto()
+                {
+                    TaskNo = taskNo, // 浠诲姟鍙�
+                    TaskType = "0",// 浠诲姟绫诲瀷
+                    PalletNo = palletNo,//鎵樼洏鍙�
+
+                    StartRoadway = inTask.StartRoadway,
+                    StartLocate = inTask.StartLocat, // 璧峰浣嶇疆
+                    EndLocate = inTask.EndLocat, // 鐩爣浣嶇疆 
+                    EndRoadway = inTask.EndRoadway,   // 鐩爣宸烽亾
+                    Qty = int.Parse(modelpb.Qty.ToString()),
+
+                    Order = 999,
+                    Type = PLCTypeEnum.AGV
+                };
+
+                #endregion
+
+                
+                Db.CommitTran();
+
+                #endregion
+
+                return comDto;
+            }
+            catch (Exception e)
+            {
+                throw new Exception(e.Message);
+            }
+        }
+
+
         /// <summary>
         /// 鐢宠鍌ㄤ綅  锛堢珛浣撳簱锛�
         /// </summary>
@@ -417,18 +720,18 @@
                 //鎵樼洏搴撳瓨淇℃伅
                 var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == palletNo).ToList();
                 //楠岃瘉鐗╂枡鏄惁鏈夋垚鍝�
-                foreach (var item in stockDetail)
-                {
-                    var skuItem = skuList.First(m => m.SkuNo == item.SkuNo);
-                    if (skuItem.SkuNo == "100099")
-                    {
-                        continue;
-                    }
-                    if (skuItem.Type != "2")
-                    {
-                        throw new Exception("鎵樼洏涓婃湁涓嶆槸鎴愬搧鐨勭墿鏂�");
-                    }
-                }
+                //foreach (var item in stockDetail)
+                //{
+                //    var skuItem = skuList.First(m => m.SkuNo == item.SkuNo);
+                //    if (skuItem.SkuNo == "100099")
+                //    {
+                //        continue;
+                //    }
+                //    if (skuItem.Type != "2")
+                //    {
+                //        throw new Exception("鎵樼洏涓婃湁涓嶆槸鎴愬搧鐨勭墿鏂�");
+                //    }
+                //}
                 var upShelfOld = Db.Queryable<BllPalletUpShelf>().First(m => m.IsDel == "0" && m.PalletNo == palletNo && (m.Status == "0" || m.Status == "1"));
 
                 if (upShelfOld != null) //姝e父鍏ュ簱
@@ -534,9 +837,9 @@
                 {
                     areaList.Add(item);
                 }
-
+                var roadStr = Db.Queryable<SysStorageRoadway>().Where(m => m.IsDel == "0" && m.Status == "0").Select(m=>m.RoadwayNo).ToList();
                 //宸烽亾缁勪俊鎭�
-                var roadList = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && m.WareHouseNo == houseNo && areaList.Contains(m.AreaNo) && !string.IsNullOrWhiteSpace(m.RoadwayNo))
+                var roadList = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && m.WareHouseNo == houseNo && areaList.Contains(m.AreaNo) && !string.IsNullOrWhiteSpace(m.RoadwayNo) && roadStr.Contains(m.RoadwayNo))
                     .GroupBy(m => m.RoadwayNo).OrderBy(m => m.RoadwayNo).Select(m => m.RoadwayNo).ToList();
 
                 #endregion
@@ -724,18 +1027,18 @@
                 var oldTaskNo = "";  //鏃т换鍔″彿
                 var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == palletNo).ToList();
                 //楠岃瘉鐗╂枡鏄惁鏈夋垚鍝�
-                foreach (var item in stockDetail)
-                {
-                    var skuItem = skuList.First(m => m.SkuNo == item.SkuNo);
-                    if (skuItem.SkuNo == "100099")
-                    {
-                        continue;
-                    }
-                    if (skuItem.Type != "2")
-                    {
-                        throw new Exception("鎵樼洏涓婃湁涓嶆槸鎴愬搧鐨勭墿鏂�");
-                    }
-                }
+                //foreach (var item in stockDetail)
+                //{
+                //    var skuItem = skuList.First(m => m.SkuNo == item.SkuNo);
+                //    if (skuItem.SkuNo == "100099")
+                //    {
+                //        continue;
+                //    }
+                //    if (skuItem.Type != "2")
+                //    {
+                //        throw new Exception("鎵樼洏涓婃湁涓嶆槸鎴愬搧鐨勭墿鏂�");
+                //    }
+                //}
                 
                 var upShelfOld = Db.Queryable<BllPalletUpShelf>().First(m => m.IsDel == "0" && m.PalletNo == palletNo && (m.Status == "0" || m.Status == "1"));
 
@@ -1231,7 +1534,7 @@
                 else
                 {
                     locate2.Status = "1";
-                    Db.Updateable(locate).ExecuteCommand();
+                    Db.Updateable(locate2).ExecuteCommand();
                 }
                 
                 Db.Updateable(stockDetail).ExecuteCommand();
@@ -1348,12 +1651,13 @@
         /// <param name="soNo"></param>
         /// <param name="detailId"></param>
         /// <param name="outMode"></param>
+        /// <param name="palletNo"></param>
         /// <param name="userId"></param>
         /// <param name="url"></param>
         /// <param name="str"></param>
         /// <returns></returns>
         /// <exception cref="Exception"></exception>
-        public List<OutCommandDto> IssueOutHouseLk(string soNo, string detailId,string outMode, int userId, string url, out string str)
+        public List<OutCommandDto> IssueOutHouseLk(string soNo, string detailId,string outMode, string palletNo, int userId, string url, out string str)
         {
             try
             {
@@ -1377,7 +1681,7 @@
                     throw new Exception("閫夋嫨鐨勫嚭搴撳崟鏄庣粏鍙傛暟閿欒");
                 }
                 //鎵�鏈夎鍑哄簱鐨勫嚭搴撳垎閰嶄俊鎭�(鏈笅鍙戠殑淇℃伅鍜屽緟鎷h揣鐨勪俊鎭�)
-                var item = Db.Queryable<BllExportAllot>().First(a => a.IsDel == "0" && a.SONo == soNo && a.SODetailNo == intDetailId && a.Status == "0" );
+                var item = Db.Queryable<BllExportAllot>().First(a => a.IsDel == "0" && a.SONo == soNo && a.SODetailNo == intDetailId && a.PalletNo == palletNo && a.Status == "0" );
                 if (item == null) //鍒ゆ柇鏄惁鏈夐渶瑕佷笅鍙戠殑鍑哄簱娴佹按
                 {
                     throw new Exception("褰撳墠鍑哄簱鍗曟嵁鏃犻渶瑕佷笅鍙戠殑鎵樼洏");
@@ -1417,8 +1721,7 @@
                         var imBl = com.GetImTask(item.PalletNo);
                         if (imBl != null)
                         {
-                            str = "瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱";
-                            return outDto1;
+                            throw new Exception("瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱");
                         }
                         //鍒ゆ柇鏄惁鏄凡缁忓嚭杩囧簱鍙堝洖搴� 
                         if (item.Status == "0")
@@ -1444,26 +1747,35 @@
                                     Db.Updateable(notice).ExecuteCommand();
                                 }
                             }
-                            str = "瑕佸嚭搴撶殑鎵樼洏宸插湪搴撳";
+                            Db.CommitTran();
+                            str = "鎵樼洏宸插湪搴撳";
                             return outDto1;
                         }
-                        str = "瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱";
-                        return outDto1;
                     }
 
                     var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == locateNo && m.IsDel == "0");//褰撳墠鍑哄簱鐨勫偍浣嶄俊鎭�
                     if (locate == null)
                     {
-                        str = "鍑哄簱鐨勬墭鐩樺偍浣嶄俊鎭敊璇�(鍦ㄥ偍浣嶈〃涓湭鏌ヨ鍒�)";
-                        return outDto1;
+                        throw new Exception("鍑哄簱鐨勬墭鐩樺偍浣嶄俊鎭敊璇�(鍦ㄥ偍浣嶈〃涓湭鏌ヨ鍒�)");
                     }
                     //鍒ゆ柇鍌ㄤ綅鏍囧織鏄惁涓烘崯鍧�
                     if (locate.Flag == "2")
                     {
-                        str = "鍌ㄤ綅鎹熷潖涓嶈兘鍑哄簱";
-                        return outDto1;
+                        throw new Exception("鍌ㄤ綅鎹熷潖涓嶈兘鍑哄簱");
                     }
-
+                    if (locate.WareHouseNo != "W02")
+                    {
+                        throw new Exception("鎵樼洏涓嶅湪璐ф灦搴撲笂");
+                    }
+                    var locateEnd = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == outModeLocate && m.IsDel == "0");//褰撳墠鍑哄簱鐨勭洰鏍囧偍浣嶄俊鎭�
+                    if (locateEnd == null)
+                    {
+                        throw new Exception("鍑哄簱鐨勬墭鐩樺偍浣嶄俊鎭敊璇�(鍦ㄥ偍浣嶈〃涓湭鏌ヨ鍒�)");
+                    }
+                    else if (locateEnd.Status != "0")
+                    {
+                        throw new Exception("鐩爣鍌ㄤ綅鐘舵�佷笉鏄┖鍌ㄤ綅");
+                    }
                     #endregion
 
                     if (locate.Status == "1") //鏈夌墿鍝�
@@ -1590,8 +1902,7 @@
                     }
                     else if (locate.Status == "5") //绉诲嚭涓�
                     {
-                        str = "褰撳墠瑕佸嚭搴撶殑鍌ㄤ綅姝e湪绉诲嚭";
-                        return outDto1; 
+                        throw new Exception("褰撳墠瑕佸嚭搴撶殑鍌ㄤ綅姝e湪绉诲嚭");
                     }
                     
 
@@ -1614,7 +1925,7 @@
 
                             //瑙f瀽杩斿洖鏁版嵁 
                             var wcsModel = JsonConvert.DeserializeObject<WcsModel2>(response);
-                            if (wcsModel.code == 0)
+                            if (wcsModel.code == 200)
                             {
                                 //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
                                 new TaskServer().EditTaskIssueOk(list2, time1, time2);

--
Gitblit v1.8.0