From 65ecd34acf0a3d33e6c1e10c93e351716d749e2f Mon Sep 17 00:00:00 2001
From: Administrator <Administrator@DESKTOP-5BIMHQ3>
Date: 星期三, 06 三月 2024 14:51:29 +0800
Subject: [PATCH] 修改出库单编辑页面

---
 Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs |  230 ++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 178 insertions(+), 52 deletions(-)

diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index ab76a7d..c15510f 100644
--- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -204,10 +204,18 @@
                 {
                     throw new Exception("鏈煡璇㈠埌鍗曟嵁淇℃伅");
                 }
+                if (notice.Status != "5")
+                {
+                    throw new Exception("澶嶆牳澶辫触锛屽崟鎹潪鍏抽棴鐘舵��");
+                }
                 var detail = Db.Queryable<BllExportNoticeDetail>().Where(m => m.SONo == notice.SONo && m.IsDel == "0").ToList();
                 if (detail.Count == 0)
                 {
                     throw new Exception("鏈煡璇㈠埌鍗曟嵁鏄庣粏淇℃伅");
+                }
+                if (userId == notice.UpdateUser)
+                {
+                    throw new Exception("澶嶆牳澶辫触锛屽鏍镐汉鍛樺拰鍏抽棴璁㈠崟浜哄憳涓嶈兘鐩稿悓锛�");
                 }
                 var list = new List<SoDetail>();
                 foreach (var d in detail)
@@ -216,7 +224,7 @@
                     {
                         SkuNo = d.SkuNo,
                         LotNo = d.LotNo,
-                        Qty = int.Parse(d.CompleteQty.ToString())
+                        Qty = (decimal)d.CompleteQty
                     };
                     list.Add(item);
                 }
@@ -225,21 +233,25 @@
                     OrderCode = notice.OrderCode,
                     SoDetails = list
                 };
-                // 閫氳繃鎺ュ彛鍙戦�佽嚦erp
-                var jsonData = JsonConvert.SerializeObject(soInfo);
+                #region 閫氳繃鎺ュ彛鍙戦�佽嚦erp
+                //绯荤粺瀵规帴鍚庢斁寮�
+                /*var jsonData = JsonConvert.SerializeObject(soInfo);
 
                 var response = HttpHelper.DoPost(url, jsonData, "鍑哄簱鍗曞畬鎴愪笂浼�", "ERP");
-
-                //瑙f瀽杩斿洖鏁版嵁
-                var obj = JsonConvert.DeserializeObject<ErpModel>(response);
+                
+                var obj = JsonConvert.DeserializeObject<ErpModel>(response);//瑙f瀽杩斿洖鏁版嵁
                 if (obj.Success != 0)
                 {
                     throw new Exception("涓婁紶澶辫触" + obj.Message);
-                }
+                }*/
+                #endregion
+
                 notice.Status = "6";
-                notice.UpdateTime = DateTime.Now;
-                notice.UpdateUser = userId;
+                notice.CheckTime = DateTime.Now;
+                notice.CheckUser = userId;
                 Db.Updateable(notice).ExecuteCommand();
+
+                new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", notice.SONo, "澶嶆牳", $"澶嶆牳浜嗗崟鎹彿涓簕notice.SONo}鐨勫崟鎹俊鎭�", userId);
                 return true;
             }
             catch (Exception e)
@@ -278,7 +290,8 @@
                     .LeftJoin<SysLogisticsInfo>((a, b) => a.LogisticsId == b.Id)
                     .LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id)
                     .LeftJoin<SysUserInfor>((a, b, c, d) => a.CreateUser == d.Id)
-                    .Select((a, b, c, d) => new ExportNoticeDto()
+                    .LeftJoin<SysUserInfor>((a, b, c, d,e) => a.CheckUser == e.Id)
+                    .Select((a, b, c, d,e) => new ExportNoticeDto()
                     {
                         Id = a.Id,
                         SONo = a.SONo,
@@ -300,7 +313,10 @@
                         CreateUserName = c.RealName,
                         UpdateUserName = c.RealName,
                         CreateTime = a.CreateTime,
-                        UpdateTime = a.UpdateTime
+                        UpdateTime = a.UpdateTime,
+
+                        CheckUserName=e.RealName,
+                        CheckTime=a.CheckTime
                     })
                     .OrderByDescending(a => a.CreateTime)
                     .ToOffsetPage(page, limit, ref total);
@@ -321,38 +337,41 @@
                 var plnList = new List<string>() { "100099" };
                 var skuList = new List<string>();
                 var sku = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0" && !plnList.Contains(m.SkuNo)); //鎺掗櫎绌烘墭鐩樼殑鐗╂枡闆嗗悎
-                var inspectStatus = "1";//搴撳瓨鍐呯墿鏂欑殑璐ㄦ鐘舵��
-                var skuTypeC = new List<string>() { "0" };//鏍囧噯
-                var skuTypeY = new List<string>() { "1" };//闈炴爣
-                if (type == "0" || type == "2") //鏍囧噯
+                string skuType = string.Empty;
+                switch (type)//0锛氬師鏂� 1锛氬寘鏉� 2锛氭垚鍝� 3锛氳�楁潗 4锛氬崐鎴愬搧
                 {
-                    inspectStatus = "0";
-                    //if (type == "0") //鎴愬搧
-                    //{
-                    skuList = sku.Where(m => inspectStatus==m.IsControlled).Select(m => m.SkuNo).ToList();
-                    //}
-
-                    //if (type == "1") //鍘熸枡
-                    //{
-                    //    skuList = sku.Where(m => skuTypeY.Contains(m.Type)).Select(m => m.SkuNo).ToList();
-                    //}
+                    case "0"://鎴愬搧鍏ュ簱
+                        skuType = "(2)";
+                        break;
+                    case "1"://棰嗘枡鍑哄簱
+                        skuType = "(0,1,3)";
+                        break;
+                    case "2"://鎶芥鍑哄簱
+                        skuType = "(2)";
+                        break;
+                    case "3"://鐗╂枡鍙栨牱鍑哄簱
+                        skuType = "(0)";
+                        break;
+                    case "4"://涓嶅悎鏍煎搧鍑哄簱
+                        skuType = "(2)";
+                        break;
+                    case "5"://涓棿鍝佸嚭搴�
+                        skuType = "(4)";
+                        break;
+                    case "6"://浠e偍鍑哄簱
+                        skuType = "(2)";
+                        break;
+                    case "8"://瀵勫瓨鍑哄簱
+                        skuType = "(3)";
+                        break;
+                    default: //鍏跺畠鍑哄簱
+                        skuType = "(0,1,2,3,4)";
+                        break;
                 }
-                else if (type == "1" || type == "3") //闈炴爣
+                skuList = sku.Where(m => skuType.Contains(m.Type)).Select(m => m.SkuNo).ToList();
+                if (skuList == null)
                 {
-                    inspectStatus = "1";
-                    //if (type == "2") //鎴愬搧
-                    //{
-                    skuList = sku.Where(m => inspectStatus==m.IsControlled).Select(m => m.SkuNo).ToList();
-                    //}
-
-                    //if (type == "3") //鍘熸枡
-                    //{
-                    //    skuList = sku.Where(m => skuTypeY.Contains(m.Type)).Select(m => m.SkuNo).ToList();
-                    //}
-                }
-                else
-                {
-                    throw new Exception("鍗曟嵁鐘舵�佹湁璇�");
+                    throw new Exception("鏈煡鍒板搴斿嚭搴撶被鍨嬬殑鐗╂枡");
                 }
                 //skuList = sku.Select(m => m.SkuNo).ToList();
                 var stockRst = new StockServer();
@@ -608,7 +627,7 @@
                         s = stock.FirstOrDefault(m => m.SkuNo == d.SkuNo && m.LotNo == d.LotNo);
                     }
 
-                    var stockCount = 0; //st.StockQuantity.Value
+                    var stockCount = 0.00m; //st.StockQuantity.Value
                     if (s != null)
                     {
                         stockCount = s.Qty-s.FrozenQty-s.LockQty+d.Qty;
@@ -1360,7 +1379,7 @@
         #region 涓嬪彂鍑哄簱銆佸嚭搴撳畬鎴愩�侀噸鏂颁笅鍙戜换鍔°�佸彇娑堜换鍔°�佸紓甯稿鐞�
 
         // 涓嬪彂鍑哄簱锛堣皟鐢╟s鎺ュ彛缁欎粬搴撲綅鍦板潃锛�
-        public List<OutCommandDto> IssueOutHouse(string soNo, string outMode, int userId, string url, out string str)
+        public List<OutCommandDto> IssueOutHouse(string soNo, string unstackingMode, string outMode, string loadingAddre, int userId, string url, out string str)
         {
             try
             {
@@ -1390,6 +1409,10 @@
                 var outLpnList = list.Select(m => m.PalletNo).ToList();
                 //瑕佸嚭搴撶殑鏄庣粏闆嗗悎
                 var outStockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToList();
+                //鐗╂枡缂栫爜琛�
+                var skuList = Db.Queryable<SysMaterials>().Where(w => w.IsDel == "0");
+                //鍖呰琛�
+                var packagList = Db.Queryable<SysPackag>().Where(w => w.IsDel == "0");
                 Db.BeginTran();
                 try
                 {
@@ -1397,6 +1420,47 @@
                     //寰幆鍒嗛厤鐨勪俊鎭敓鎴愬嚭搴撲换鍔�
                     foreach (var item in list)
                     {
+                        string toLocation = string.Empty;//鐩爣浣嶇疆
+                        string unstackingMode2 = unstackingMode;//鎷嗗灈鏂瑰紡锛�0:鏈哄櫒浜烘媶鍨� 1:PDA鎷嗗灈
+                        #region 鍒ゆ柇鏄惁闇�瑕佹媶绠�
+                        string isChai = "0";//鏄惁闇�瑕佹媶绠憋紝0:鍚� 1:鏄�
+                        var skuInfo = skuList.First(w => w.SkuNo == item.SkuNo);
+                        if (skuInfo == null)
+                        {
+                            throw new Exception("鐗╂枡淇℃伅涓嶅瓨鍦紒");
+                        }
+                        var packagInfo = packagList.First(w => w.PackagNo == skuInfo.PackagNo);
+                        if (packagInfo == null)
+                        {
+                            throw new Exception("鍖呰淇℃伅涓嶅瓨鍦紒");
+                        }
+                        if (packagInfo.L2Name == "绠�")
+                        {
+                            if (item.Qty % (decimal)packagInfo.L2Num != 0)//鑳芥暣闄よ鏄庝笉鐢ㄦ媶绠憋紝涓嶈兘鏁撮櫎璇存槑闇�瑕佹媶绠�
+                            {
+                                isChai = "1";
+                                unstackingMode2 = "1";//闇�瑕佹媶绠遍渶璧癙DA鎷嗗灈
+                            }
+                        }
+                        if (isChai == "0")
+                        {
+                            var boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.PalletNo == item.PalletNo && w.BitBoxMark == "1").ToList();
+                            if (boxInfo != null)//鎵樼洏涓婃湁闆剁闇�瑕佹媶绠�
+                            {
+                                isChai = "1";
+                                unstackingMode2 = "1";//闇�瑕佹媶绠遍渶璧癙DA鎷嗗灈
+                            }
+                        }                        
+                        #endregion
+                        if (unstackingMode2 == "0")//鏈哄櫒浜烘媶鍨�
+                        {
+                            toLocation = loadingAddre;//瑁呰溅鍙�
+                        }
+                        else //PDA鎷嗗灈
+                        {
+                            toLocation = outMode;//鍑哄簱鍙�
+                        }
+
                         // 鍌ㄤ綅鍙�
                         var locateNo = outStockDetail.First(m => m.PalletNo == item.PalletNo).LocatNo;
 
@@ -1496,7 +1560,7 @@
                                 IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
 
                                 StartLocat = locate.LocatNo,//璧峰浣嶇疆
-                                EndLocat = outMode,//鐩爣浣嶇疆
+                                EndLocat = toLocation,//outMode,//鐩爣浣嶇疆
                                 PalletNo = item.PalletNo,//鎵樼洏鐮�
                                 IsSend = 1,//鏄惁鍙啀娆′笅鍙�
                                 IsCancel = 1,//鏄惁鍙彇娑�
@@ -1504,7 +1568,7 @@
                                 Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
                                 Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
                                 OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
-                                Msg = "浠�" + locate.LocatNo + "鍒�" + outMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
+                                Msg = "浠�" + locate.LocatNo + "鍒�" + toLocation + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
                             };
                             Db.Insertable(exTask).ExecuteCommand();
                             logTaskList.Add(exTask);
@@ -1514,7 +1578,7 @@
                                 PalletNo = item.PalletNo,//鎵樼洏鍙�
                                 StartLocate = locate.LocatNo, // 璧峰浣嶇疆
                                 StartRoadway = locate.RoadwayNo,//鍏跺疄宸烽亾
-                                EndLocate = outMode, // 鐩爣浣嶇疆 
+                                EndLocate = toLocation,//outMode, // 鐩爣浣嶇疆 
                                 TaskNo = exTask.TaskNo, // 浠诲姟鍙�
                                 TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
                                 OutMode = "",  //鐩爣鍦板潃
@@ -1548,9 +1612,10 @@
 
                             item.TaskNo = exTask.TaskNo; // 鍑哄簱鍒嗛厤淇℃伅涓洿鏂颁换鍔″彿
                             item.Status = "1"; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛� 
-                            item.OutMode = outMode;//鍑哄簱鍙�
+                            item.UnstackingMode = unstackingMode2;//鎷嗗灈鏂瑰紡
+                            item.OutMode = unstackingMode2 == "1" ? outMode : "";//鍑哄簱鍙�
+                            item.LoadingAddre = unstackingMode2 == "0" ? loadingAddre : "";//瑁呰溅鍙�
                             Db.Updateable(item).ExecuteCommand();
-
 
                             #endregion
 
@@ -1591,7 +1656,8 @@
                             }
                             item.TaskNo = taskNo.TaskNo;
                             item.Status = "1"; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛� 
-                            item.OutMode = taskNo.EndLocat;
+                            item.OutMode = unstackingMode2 == "1" ? taskNo.EndLocat : "";//鍑哄簱鍙�
+                            item.LoadingAddre = unstackingMode2 == "0" ? taskNo.EndLocat : "";//瑁呰溅鍙�
                             Db.Updateable(item).ExecuteCommand();
                             flagList.Add(0);
                             #endregion
@@ -2256,11 +2322,11 @@
                         }
                         #endregion
                         //鍙栧悎閫傚簱瀛樺晢鍝�
-                        Dictionary<int, int> stockQtyDic = new Dictionary<int, int>();//鎵樺嚭搴撶墿鍝佹暟
+                        Dictionary<int, decimal> stockQtyDic = new Dictionary<int, decimal>();//鎵樺嚭搴撶墿鍝佹暟
                         Dictionary<string, int> zxQtyDic = new Dictionary<string, int>();//鎵樺嚭鏁寸鏁�
                         //鍒嗛厤璐х墿
                         //assign.AllocatePallets(stocks, pNum, bNum, needQty, stockQtyDic, zxQtyDic);
-                        int qty = assign.AllotPallets(stockDetail, int.Parse(needQty.ToString()), pNum, bNum, stockQtyDic);
+                        var qty = assign.AllotPallets(stockDetail, decimal.Parse(needQty.ToString()), pNum, bNum, stockQtyDic);
 
                         foreach (var sc in stockQtyDic)
                         {
@@ -2557,6 +2623,7 @@
                     LocatNo = a.LocatNo,
                     RoadwayNo = a.RoadwayNo,
                     PalletNo = a.PalletNo,
+                    Demo = a.Demo,
                 }).ToList();
 
                 return list;
@@ -2678,8 +2745,8 @@
                 //淇敼鍑哄簱鍗曠姸鎬� 
                 if (notice.Status == "0" || notice.Status == "1")
                 {
-                    int totalQty = 0;
-                    int totalAllotQty = 0;
+                    decimal totalQty = 0;
+                    decimal totalAllotQty = 0;
                     foreach (var item in detailList)
                     {
                         totalQty += item.Qty;
@@ -2711,5 +2778,64 @@
 
         #endregion
 
+        /// <summary>
+        /// 鍒ゆ柇鍑哄簱鏄惁闇�瑕佹媶绠�
+        /// </summary>
+        /// <param name="soNo"></param>
+        /// <returns></returns>
+        public string IsNeedUnpack(string soNo)
+        {
+            string result = "0";//鏄惁闇�瑕佹媶绠憋紝0锛氬惁  1锛氭槸
+            if (string.IsNullOrEmpty(soNo))
+            {
+                throw new Exception("鏈壘鍒板搴斿嚭搴撳崟锛�");
+            }
+            try
+            {
+                var notice = Db.Queryable<BllExportNotice>().First(w => w.IsDel == "0" && w.SONo == soNo);
+                if (notice == null)
+                {
+                    throw new Exception("鏈壘鍒板搴斿嚭搴撳崟锛�");
+                }
+                //鐗╂枡缂栫爜琛�
+                var skuList = Db.Queryable<SysMaterials>().Where(w => w.IsDel == "0");
+                //鍖呰琛�
+                var packagList= Db.Queryable<SysPackag>().Where(w => w.IsDel == "0");
+                //鍑哄簱鍒嗛厤淇℃伅
+                var allotList = Db.Queryable<BllExportAllot>().Where(w => w.IsDel == "0" && w.SONo == soNo).ToList();
+                foreach (var item in allotList)
+                {
+                    var skuInfo = skuList.First(w => w.SkuNo == item.SkuNo);
+                    if (skuInfo == null)
+                    {
+                        throw new Exception("鐗╂枡淇℃伅涓嶅瓨鍦紒");
+                    }
+                    var packagInfo = packagList.First(w => w.PackagNo == skuInfo.PackagNo);
+                    if (packagInfo == null)
+                    {
+                        throw new Exception("鍖呰淇℃伅涓嶅瓨鍦紒");
+                    }
+                    if (packagInfo.L2Name == "绠�")
+                    {
+                        if (item.Qty % (decimal)packagInfo.L2Num != 0)//鑳芥暣闄よ鏄庝笉鐢ㄦ媶绠憋紝涓嶈兘鏁撮櫎璇存槑闇�瑕佹媶绠�
+                        {
+                            result = "1";//闇�瑕佹媶绠�
+                            break;
+                        }
+                    }
+                    var boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.PalletNo == item.PalletNo && w.BitBoxMark == "1").ToList();
+                    if (boxInfo != null)//鎵樼洏涓婃湁闆剁闇�瑕佹媶绠�
+                    {
+                        result = "1";//闇�瑕佹媶绠�
+                        break;
+                    }
+                }               
+                return result;
+            }
+            catch (Exception ex)
+            {
+                throw new Exception(ex.Message);
+            }
+        }
     }
 }

--
Gitblit v1.8.0