From bdd84cc48ba7b2527584c44d174da8e7d20c5375 Mon Sep 17 00:00:00 2001
From: zhaowc <526854230@qq.com>
Date: 星期三, 18 九月 2024 16:37:13 +0800
Subject: [PATCH] 增加对申请入库时对平库库位的校验

---
 Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs |  178 +++++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 153 insertions(+), 25 deletions(-)

diff --git a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
index 27ac2ea..152ebb3 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
@@ -106,6 +106,19 @@
 
                 if (modelList.Count > 0)
                 {
+                    if (!string.IsNullOrWhiteSpace(modelList[0].PackagNo))
+                    {
+                        // 鏌ヨ鏁存墭鏁伴噺 姝ゅUDF1鐢ㄦ潵瀛樺偍鏁存墭鏁伴噺銆�
+                        var packagModel = Db.Queryable<SysPackag>().Where(m => m.PackagNo == modelList[0].PackagNo && m.IsDel == "0").First();
+                        switch (packagModel.Level.ToString())
+                        {
+                            case "1": modelList[0].UDF1 = packagModel.L1Num.ToString(); break;
+                            case "2": modelList[0].UDF1 = packagModel.L2Num.ToString(); break;
+                            case "3": modelList[0].UDF1 = packagModel.L3Num.ToString(); break;
+                            case "4": modelList[0].UDF1 = packagModel.L4Num.ToString(); break;
+                            default: modelList[0].UDF1 = packagModel.L5Num.ToString(); break;
+                        }
+                    }
                     return modelList[0];
                 }
 
@@ -277,7 +290,8 @@
             try
             {
                 string sqlString = string.Empty;
-                sqlString = "select b.SkuNo,b.SkuName,a.LotNo,a.Qty,a.PalletNo,a.Id from BllPalletBind a left join BllArrivalNoticeDetail b on a.ASNDetailNo = b.Id where a.IsDel = '0' and b.IsDel = '0' ";
+                sqlString = "select b.SkuNo,b.SkuName,a.LotNo,a.Qty,a.PalletNo,a.Id from BllPalletBind a " +
+                    "left join BllArrivalNoticeDetail b on a.ASNDetailNo = b.Id where a.IsDel = '0' and b.IsDel = '0' ";
                 if (!string.IsNullOrEmpty(model.PalletNo))
                 {
                     sqlString += $"and PalletNo = '{model.PalletNo}' and a.Status = '0' ";
@@ -892,7 +906,7 @@
                 #endregion
 
                 #region 鍦扮爜淇℃伅(鍌ㄤ綅淇℃伅)
-                var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == model.LocatNo && w.Status == "0" && w.WareHouseNo == "W02");
+                var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == model.LocatNo && w.Status == "0");
                 if (storageLocat == null)
                 {
                     strMsg = "-1:鍌ㄤ綅淇℃伅涓嶅瓨鍦ㄦ垨闈炵┖闂茬姸鎬侊紝璇锋牳鏌�!";
@@ -1888,16 +1902,17 @@
                                         BoxNo, 
                                         SkuNo,
                                         SkuName, 
-                                        LotNo, 
+                                        LotNo,
+                                        BitBoxMark,
                                         SUM(Qty) as Qty 
                                       FROM BllBoxInfo 
                                       WHERE IsDel = '0' 
                                         AND Status='0'  
                                         AND BoxNo = '{model.BoxNo}'
-                                      GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo; ";
+                                      GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
                 var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString);
 
-                if (models == null)
+                if (models.Count == 0 )
                 {
                     throw new Exception("绠辩爜淇℃伅涓嶅瓨鍦�!");
                 }
@@ -1909,6 +1924,55 @@
                 throw ex;
             }
         }
+
+        /// <summary>
+        /// 鏍规嵁绠辩爜鍚戣拷婧郴缁熻姹傛爣绛剧鐮佷俊鎭�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        public List<BoxInfoDto> GetFMBindBoxInfos(string boxno)
+        {
+            try
+            {
+                #region 绠辩爜璇锋眰鎺ュ彛锛屾寮忕郴缁熸斁寮�
+                /*var jsonData = JsonConvert.SerializeObject(boxno);
+
+                var response = HttpHelper.DoPost(url, jsonData, "绠辩爜淇℃伅璇锋眰", "FM");
+
+                var obj = JsonConvert.DeserializeObject<ErpModel>(response);//瑙f瀽杩斿洖鏁版嵁
+                if (obj.Success != 0)
+                {
+                    throw new Exception("璇锋眰澶辫触" + obj.Message);
+                }*/
+                #endregion
+                string sqlString = $@"SELECT 
+                                        ASNNo,
+                                        BoxNo, 
+                                        SkuNo,
+                                        SkuName, 
+                                        LotNo,
+                                        BitBoxMark,
+                                        SUM(Qty) as Qty 
+                                      FROM BllBoxInfo 
+                                      WHERE IsDel = '0' 
+                                        AND Status='0'  
+                                        AND BoxNo = '{boxno}'
+                                      GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
+                var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString);  // response
+
+                if (models.Count == 0)
+                {
+                    throw new Exception("绠辩爜淇℃伅涓嶅瓨鍦�!");
+                }
+
+                return models;
+            }
+            catch (Exception ex)
+            {
+                throw ex;
+            }
+        }
+
         // 鏍规嵁鍗曟嵁鍙疯幏鍙栧崟鎹槑缁嗗垪琛�
         public List<ArrivalNoticeDetailDto> GetBindArrivalNoticeDetails(ArrivalNoticeVm model)
         {
@@ -4582,6 +4646,18 @@
             var bindId = 0;
             if (bind == null)
             {
+                DateTime? pTime = null;
+                DateTime? eTime = null;
+                if (!string.IsNullOrWhiteSpace(detail.Lot1)) 
+                {
+                    pTime = DateTime.Parse(detail.Lot1);
+                }
+                if (!string.IsNullOrWhiteSpace(detail.Lot2)) 
+                {
+                    eTime = DateTime.Parse(detail.Lot2);
+                }
+
+
                 bind = new BllPalletBind
                 {
                     ASNNo = model.AsnNo,
@@ -4597,6 +4673,8 @@
                     SupplierLot = detail.SupplierLot,
                     //InspectMark = model.IsSample,      //鏄惁鍙栨牱鎵樼洏  鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇
                     //SamplingQty = 0,     //鍙栨牱鏁伴噺  鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇
+                    ProductionTime = pTime,
+                    ExpirationTime = eTime,
                     BitPalletMark = "1",
                     IsBale = "0",
                     IsBelt = "0",
@@ -4652,6 +4730,12 @@
             }
             else
             {
+                string inspectStatusStr = "0";
+                if (sku.IsInspect == "1") 
+                {
+                    inspectStatusStr = "1";
+                }
+
                 // 搴撳瓨涓嶅瓨鍦� 鎻掑叆鏁版嵁
                 sd1 = new DataStockDetail()
                 {
@@ -4680,7 +4764,7 @@
                     ExpirationTime = bind.ExpirationTime,
                     Status = "0",
                     InspectMark = bind.InspectMark,
-                    InspectStatus = sku.IsInspect,
+                    InspectStatus = inspectStatusStr,
                     BitPalletMark = bind.BitPalletMark,
                     PackagNo = detail.PackagNo,                    //liudl 鐢眘ku鐨勫寘瑁呯紪鍙峰彉涓哄叆搴撳崟鏄庣粏鐨勫寘瑁呯紪鐮�       
                     IsBale = bind.IsBale,
@@ -4870,9 +4954,6 @@
             sqlStr += $"insert into LogPalletTrack values('{model.PalletNo}','{model.AsnNo}','缁勭洏','0',getDate(),{userId},NULL,NULL);";
             Db.Ado.ExecuteCommand(sqlStr);
             new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "鎵樼洏缁戝畾", model.AsnNo, "娣诲姞", $"娣诲姞浜嗘墭鐩樼爜涓猴細{model.PalletNo}鐨勭粍鐩樹俊鎭�", userId);
-
-
-
         }
 
         #endregion
@@ -4922,7 +5003,7 @@
                 #endregion
 
                 #region 鍦扮爜淇℃伅(鍌ㄤ綅淇℃伅)
-                var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == model.LocatNo && w.Status == "0" && w.WareHouseNo == "W02");
+                var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == model.LocatNo && w.Status == "0");
                 if (storageLocat == null)
                 {
                     throw new Exception("鍌ㄤ綅淇℃伅涓嶅瓨鍦ㄦ垨闈炵┖闂茬姸鎬侊紝璇锋牳鏌�!");
@@ -5153,7 +5234,7 @@
                         SendDate = serverTime,  //鍙戦�佹椂闂�
                         BackDate = serverTime,  //杩斿洖鏃堕棿
                         StartLocat = "",//璧峰浣嶇疆
-                        EndLocat = "鍔涜骞冲簱",//鐩爣浣嶇疆
+                        EndLocat = "骞冲簱",//鐩爣浣嶇疆
                         PalletNo = bindInfo.PalletNo,//鎵樼洏鐮�
                         IsSend = 0,//鏄惁鍙啀娆′笅鍙�
                         IsCancel = 0,//鏄惁鍙彇娑�
@@ -5161,7 +5242,7 @@
                         Type = "0",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
                         Status = "2",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
                         OrderType = "0",//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
-                        Msg = "鍔涜骞冲簱鐨勫叆搴撲换鍔�",
+                        Msg = "骞冲簱鐨勫叆搴撲换鍔�",
                     };
                     Db.Insertable(exTask).ExecuteCommand();
 
@@ -5175,6 +5256,27 @@
                     bindInfo.TaskNo = taskNo; //浠诲姟鍙�
                     Db.Updateable(bindInfo).ExecuteCommand();
                     #endregion
+
+                   /* #region 娣诲姞鎵樼洏涓婃灦璁板綍
+                    var upShelf = new BllPalletUpShelf()
+                    {
+                        TaskNo = exTask.TaskNo,
+                        TraceNo = bindInfo.ASNNo,
+                        PalletNo = bindInfo.PalletNo,
+                        SkuNo = stockModel.SkuNo,
+                        SkuName = stockModel.SkuName,
+                        LotNo = stockModel.LotNo,
+                        Status = "1",
+
+                        WareHouseNo = bindInfo.WareHouseNo,
+                        RoadwayNo = bindInfo.RoadwayNo,
+                        AreaNo = "",
+                        LocatNo = "",
+
+                        CreateUser = 0,
+                    };
+                    Db.Insertable(upShelf).ExecuteCommand();
+                    #endregion*/
 
                     #region 搴撳瓨绠辨敮鏄庣粏琛�
                     // 鎻掑叆鏂扮粍鐨勭鏀俊鎭�
@@ -5241,11 +5343,13 @@
                     //淇敼搴撳瓨鏄庣粏淇℃伅
                     foreach (var item in stockDetail)
                     {
-                        item.Status = "0"; //鐘舵�佹洿鏀逛负寰呭垎閰�
-                        item.WareHouseNo = "W02"; //鎵�灞炰粨搴�
-                        item.LocatNo = model.LocatNo;//鍌ㄤ綅鍦板潃
-                        item.UpdateTime = serverTime; //淇敼鏃堕棿
-                        item.UpdateUser = model.CreateUser; //淇敼浜�
+                        item.Status = "0";                                  // 鐘舵�佹洿鏀逛负寰呭垎閰�
+                        item.WareHouseNo = storageLocat.WareHouseNo;        // 鎵�灞炰粨搴�
+                        item.RoadwayNo = storageLocat.RoadwayNo;            // 鎵�灞炲贩閬�
+                        item.AreaNo = storageLocat.AreaNo;                  // 鎵�灞炲尯鍩�
+                        item.LocatNo = model.LocatNo;                       // 鍌ㄤ綅鍦板潃
+                        item.UpdateTime = serverTime;                       // 淇敼鏃堕棿
+                        item.UpdateUser = model.CreateUser;                 // 淇敼浜�
                         //淇敼搴撳瓨鏄庣粏淇℃伅                                           
                         Db.Updateable(item).ExecuteCommand();
                     }
@@ -5271,7 +5375,7 @@
                         SendDate = DateTime.Now,  //鍙戦�佹椂闂�
                         BackDate = DateTime.Now,  //杩斿洖鏃堕棿
                         StartLocat = "",//璧峰浣嶇疆
-                        EndLocat = "鐗у師骞冲簱",//鐩爣浣嶇疆
+                        EndLocat = "骞冲簱",//鐩爣浣嶇疆
                         PalletNo = model.PalletNo,//鎵樼洏鐮�
                         IsSend = 0,//鏄惁鍙啀娆′笅鍙�
                         IsCancel = 0,//鏄惁鍙彇娑�
@@ -5279,21 +5383,44 @@
                         Type = "0",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
                         Status = "2",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
                         OrderType = "3",//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
-                        Msg = "鐗у師骞冲簱鐨勫叆搴撲换鍔�",
+                        Msg = "骞冲簱鐨勫叆搴撲换鍔�",
                     };
                     Db.Insertable(exTask).ExecuteCommand();
                     //鎵樼洏缁戝畾淇℃伅
-                    var bindInfo = Db.Queryable<BllPalletBind>().First(w => w.IsDel == "0" && w.PalletNo == model.PalletNo && w.Status == "2" && string.IsNullOrEmpty(w.LocatNo));
+                    var bindInfo = Db.Queryable<BllPalletBind>().First(w => w.IsDel == "0" && w.PalletNo == model.PalletNo 
+                    && w.Status == "2" && string.IsNullOrEmpty(w.LocatNo));
                     if (bindInfo != null)
                     {
-                        bindInfo.WareHouseNo = "W02";//鎵�灞炰粨搴�
-                        bindInfo.LocatNo = model.LocatNo;//鍌ㄤ綅鍦板潃
+                        bindInfo.WareHouseNo = storageLocat.WareHouseNo;            // 鎵�灞炰粨搴�
+                        bindInfo.RoadwayNo = storageLocat.RoadwayNo;                // 鎵�灞炲贩閬�
+                        bindInfo.LocatNo = model.LocatNo;                           // 鍌ㄤ綅鍦板潃
                         bindInfo.UpdateTime = serverTime;
                         bindInfo.UpdateUser = model.CreateUser;
-                        bindInfo.CompleteTime = serverTime; //瀹屾垚鏃堕棿
-                        bindInfo.TaskNo = taskNo; //浠诲姟鍙�
+                        bindInfo.CompleteTime = serverTime;                         // 瀹屾垚鏃堕棿
+                        bindInfo.TaskNo = taskNo;                                   // 浠诲姟鍙�
                         Db.Updateable(bindInfo).ExecuteCommand();
                     }
+                    #endregion
+
+                    #region 娣诲姞鎵樼洏涓婃灦璁板綍
+                    var palletupinfo = stockDetail.First();
+                    var upShelf = new BllPalletUpShelf()
+                    {
+                        TaskNo = exTask.TaskNo,
+                        TraceNo = bindInfo.ASNNo,
+                        PalletNo = bindInfo.PalletNo,
+                        SkuNo = palletupinfo.SkuNo,
+                        SkuName = palletupinfo.SkuName,
+                        LotNo = palletupinfo.LotNo,
+                        Status = "2",
+                        LocatNo = model.LocatNo,
+                        WareHouseNo = bindInfo.WareHouseNo,
+                        RoadwayNo = bindInfo.RoadwayNo,
+                        AreaNo = storageLocat.AreaNo,
+
+                        CreateUser = 0,
+                    };
+                    Db.Insertable(upShelf).ExecuteCommand();
                     #endregion
                 }
                 storageLocat.Status = "1";//鐘舵�佸凡浣跨敤
@@ -5302,7 +5429,8 @@
                 //淇敼鍌ㄤ綅淇℃伅                                        
                 Db.Updateable(storageLocat).ExecuteCommand();
 
-                new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "骞冲簱鍏ュ簱", model.PalletNo, "瀹屾垚", $"鍦≒DA涓婂畬鎴愬崟鎹彿涓猴細{model.ASNNo}鐨勬墭鐩樼爜涓猴細{model.PalletNo}鐨勫钩搴撳叆搴撴搷浣�", (int)model.CreateUser);
+                new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "骞冲簱鍏ュ簱", model.PalletNo, "瀹屾垚", 
+                    $"鍦≒DA涓婂畬鎴愬崟鎹彿涓猴細{model.ASNNo}鐨勬墭鐩樼爜涓猴細{model.PalletNo}鐨勫钩搴撳叆搴撴搷浣�", (int)model.CreateUser);
                 Db.CommitTran();
             }
             catch (Exception ex)

--
Gitblit v1.8.0