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/BllAsnServer/ArrivalNoticeServer.cs |  206 ++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 170 insertions(+), 36 deletions(-)

diff --git a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
index 5609bc5..9a39155 100644
--- a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
+++ b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
@@ -39,10 +39,11 @@
             try
             {
                 sqlCount += "SELECT DISTINCT COUNT(tb1.ID) FROM BllArrivalNotice AS tb1 ";
-                sqlString += "SELECT DISTINCT tb1.*,tb3.RealName as CreateUserName,tb4.RealName as UpdateUserName FROM BllArrivalNotice AS tb1 ";
+                sqlString += "SELECT DISTINCT tb1.*,tb3.RealName as CreateUserName,tb4.RealName as UpdateUserName,tb5.RealName as CheckUserName FROM BllArrivalNotice AS tb1 ";
                 sqlPub += "LEFT JOIN BllArrivalNoticeDetail AS tb2 ON tb1.ASNNo = tb2.ASNNo ";
                 sqlPub += "LEFT JOIN SysUserInfor AS tb3 ON tb1.CreateUser = tb3.Id ";
                 sqlPub += "LEFT JOIN SysUserInfor AS tb4 ON tb1.UpdateUser = tb4.Id ";
+                sqlPub += "LEFT JOIN SysUserInfor AS tb5 ON tb1.CheckUser = tb5.Id ";
                 sqlPub += $"WHERE tb1.ASNNo LIKE '%{model.ASNNo}%' AND tb2.LotNo LIKE '%{model.LotNo}%' ";
                 sqlPub += $"AND tb2.SkuNo  LIKE '%{model.SkuNo}%' AND tb2.SkuName  LIKE '%{model.SkuName}%' ";
                 sqlPub += $"AND tb1.CustomerName  LIKE '%{model.CustomerName}%' ";
@@ -102,7 +103,7 @@
                     rowCount = count;
                 }
 
-                sqlString += "SELECT DISTINCT tb1.*,tb2.Status as AsnStatus,tb3.RealName as CreateUserName, ";
+                sqlString += "SELECT DISTINCT tb1.*,tb2.Type as AsnType,tb2.Status as AsnStatus,tb3.RealName as CreateUserName, ";
                 sqlString += "tb4.RealName as UpdateUserName,isnull(tb6.UnitName,tb5.UnitNo) as UnitName,tb7.PackagName ";
                 sqlString += "FROM BllArrivalNoticeDetail AS tb1 ";
                 sqlString += "LEFT JOIN BllArrivalNotice AS tb2 ON tb1.ASNNo = tb2.ASNNo ";
@@ -123,13 +124,68 @@
                 throw ex;
             }
         }
+
+        //鑾峰彇鍏ュ簱鍗曟槑缁嗗墿浣欐墦鍗版暟閲�
+        public string GetAsnDetailQtyList(int id)
+        {
+            try
+            {
+                var detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == id);
+                if (detail == null)
+                {
+                    throw new Exception("鏈煡璇㈠埌鍏ュ簱鍗曟槑缁�");
+                }
+
+                var labelQty = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNDetailNo == id).Sum(m => m.Qty);
+                var qty = detail.Qty - labelQty;
+
+                return qty.ToString();
+            }
+            catch (Exception e)
+            {
+                throw new Exception(e.Message);
+            }
+        }
+
         //鑾峰彇鐗╂枡淇℃伅锛堟坊鍔犲叆搴撳崟鏄庣粏浣跨敤锛�
         public List<MaterialsDto> GetMaterialsList(GetMaterialsVm model)
         {
             try
             {
+                string skuType = string.Empty;
+                switch (model.Type)//0锛氬師鏂� 1锛氬寘鏉� 2锛氭垚鍝� 3锛氳�楁潗 4锛氬崐鎴愬搧
+                {
+                    case "0"://鎴愬搧鍏ュ簱
+                        skuType = "(2)";
+                        break;
+                    case "3"://閫�璐у叆搴�
+                        skuType = "(2)";
+                        break;
+                    case "5"://鍏跺畠鍏ュ簱
+                        skuType = "(0,1,3)";
+                        break;
+                    case "6"://浠e偍鍏ュ簱
+                        skuType = "(2)";
+                        break;
+                    case "1"://閲囪喘鍏ュ簱
+                        skuType = "(0,1,3)";
+                        break;
+                    case "4"://杞﹂棿浣欐枡閫�鍥炲叆搴�
+                        skuType = "(0,1,3)";
+                        break;
+                    case "2"://涓棿鍝佸叆搴�
+                        skuType = "(4)";
+                        break;
+                    case "7"://瀵勫瓨鍏ュ簱
+                        skuType = "(3)";
+                        break;
+                    default: //鍏跺畠
+                        skuType = "(0,1,2,3,4)";
+                        break;
+                }
+
                 Expression<Func<SysMaterials, bool>> item = Expressionable.Create<SysMaterials>()
-                    .AndIF(!string.IsNullOrWhiteSpace(model.IsControlled), it => it.IsControlled == model.IsControlled)
+                    .AndIF(true, it => skuType.Contains(it.Type))
                     .AndIF(true, it => it.IsDel == "0")
                     .And(it => it.SkuNo != "100099")
                     .AndIF(!string.IsNullOrWhiteSpace(model.SkuNo),
@@ -181,6 +237,9 @@
             string strMessage = "";
             string sqlString = string.Empty;
             string sqlDetailStr = string.Empty;
+            //0锛氭垚鍝佸叆搴� 1锛氶噰璐叆搴� 2锛氫腑闂村搧鍏ュ簱 3锛氶��璐у叆搴� 4锛氳溅闂翠綑鏂欏叆搴� 5锛氬叾瀹冨叆搴� 6锛氫唬鍌ㄥ叆搴� 7锛氬瘎瀛樺叆搴�
+            var TypeLot = "1, 2, 5, 6, 7";
+
             try
             {
                 if (model.Origin == "褰曞叆")
@@ -196,6 +255,15 @@
                     if (string.IsNullOrEmpty(model.Type))
                     {
                         throw new Exception("鍗曟嵁绫诲瀷涓嶅彲涓虹┖!");
+                    }
+                }
+                //鍒ゆ柇鏄惁涓洪噰璐叆搴撳崟鎹垨杞﹂棿浣欐枡閫�鍥炲叆搴�
+                // 0锛氭垚鍝佸叆搴� 1锛氶噰璐叆搴� 2锛氫腑闂村搧鍏ュ簱 3锛氶��璐у叆搴� 4锛氳溅闂翠綑鏂欓��鍥炲叆搴� 5锛氬叾瀹冨叆搴� 6锛氫唬鍌ㄥ叆搴� 7锛氬瘎瀛樺叆搴�
+                if (model.Type == "1" || model.Type == "4")
+                {
+                    if (!string.IsNullOrWhiteSpace(model.LotNo))
+                    {
+                        throw new Exception("閲囪喘鍏ュ簱鎴栦綑鏂欓��鍥炰笉鍙緭鍏ユ壒娆★紝涓嶅彲缂栬緫!");
                     }
                 }
 
@@ -224,8 +292,12 @@
                     }
                     if (string.IsNullOrEmpty(detailModel.LotNo))
                     {
-                        strMessage = "-1:鎵规鍙蜂笉鍙负绌�;";
-                        continue;
+                        //鍒ゆ柇鏄惁涓轰笉闄愬埗鎵规鍗曟嵁
+                        if (!TypeLot.Contains(model.Type))
+                        {
+                            strMessage = "-1:鎵规鍙蜂笉鍙负绌�;";
+                            continue;
+                        }
                     }
                     // 鍒ゆ柇鏄惁宸插瓨鍦ㄥ綋鍓嶆槑缁�
                     string sqlCount = $"SELECT COUNT(ID) FROM BllArrivalNoticeDetail where ASNNo = '{model.ASNNo}' ";
@@ -287,6 +359,18 @@
             string sqlDetailStr = string.Empty;
             try
             {
+                //鍒ゆ柇鏄惁涓洪噰璐叆搴撳崟鎹垨杞﹂棿浣欐枡閫�鍥炲叆搴�
+                // 0锛氭垚鍝佸叆搴� 1锛氶噰璐叆搴� 2锛氫腑闂村搧鍏ュ簱 3锛氶��璐у叆搴� 4锛氳溅闂翠綑鏂欓��鍥炲叆搴� 5锛氬叾瀹冨叆搴� 6锛氫唬鍌ㄥ叆搴� 7锛氬瘎瀛樺叆搴�
+                int isType = 0;
+                if (model.Type == "1" || model.Type == "4")
+                {
+                    isType = 1;
+                    if (!string.IsNullOrWhiteSpace(model.LotNo))
+                    {
+                        strMessage = "-1:閲囪喘鍏ュ簱鎴栦綑鏂欓��鍥炰笉鍙緭鍏ユ壒娆★紝涓嶅彲缂栬緫;";
+                        return strMessage;
+                    }
+                }
                 if (model.Origin != "褰曞叆")
                 {
                     strMessage = "-1:涓婃父绯荤粺涓嬪彂鐨勫崟鎹紝涓嶅彲缂栬緫;";
@@ -303,7 +387,7 @@
 
                 sqlString = "UPDATE BllArrivalNotice SET ";
                 sqlString += $"CustomerNo = '{model.CustomerNo}',CustomerName = '{model.CustomerName}',";
-                sqlString += $"LotNo = '{model.LotNo}',LotText = '{model.LotText}',";                
+                sqlString += $"LotNo = '{model.LotNo}',LotText = '{model.LotText}',";
                 sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' ";
                 sqlString += $"WHERE ASNNo = '{model.ASNNo}'";
 
@@ -341,7 +425,7 @@
                         strMessage = "-1:鏁伴噺蹇呴』澶т簬0;";
                         continue;
                     }
-                    if (string.IsNullOrEmpty(detailModel.LotNo))
+                    if (string.IsNullOrEmpty(detailModel.LotNo) && isType != 1)
                     {
                         strMessage = "-1:鎵规鍙蜂笉鍙负绌�;";
                         continue;
@@ -446,6 +530,7 @@
 
                 }
 
+
                 // 鍒犻櫎鎬诲崟
                 sqlString = $"UPDATE BllArrivalNotice SET IsDel = '1',";
                 sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' ";
@@ -455,10 +540,30 @@
                 sqlString += $"UPDATE BllArrivalNoticeDetail SET IsDel = '1',";
                 sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' ";
                 sqlString += $"WHERE ASNNo = '{model.ASNNo}';";
+
+                //鍒ゆ柇鏄惁涓洪噰璐叆搴撳崟鎹垨杞﹂棿浣欐枡閫�鍥炲叆搴�
+                // 0锛氭垚鍝佸叆搴� 1锛氶噰璐叆搴� 2锛氫腑闂村搧鍏ュ簱 3锛氶��璐у叆搴� 4锛氳溅闂翠綑鏂欓��鍥炲叆搴� 5锛氬叾瀹冨叆搴� 6锛氫唬鍌ㄥ叆搴� 7锛氬瘎瀛樺叆搴�
+                int notdel = 0;
+                if (model.Type == "1" || model.Type == "4")
+                {
+                    //鑾峰彇鍗曟嵁鐢熸垚瀵瑰簲鏍囩
+                    var list = Db.Queryable<BllBoxInfo>().Where(a => a.IsDel == "0" && a.Status == "0" && a.BindNo == null);
+
+                    //楠岃瘉瀵瑰簲绠辨敮淇℃伅鏄惁瀛樺湪
+                    if (list == null)
+                    {
+                        return "-1:宸叉湁绠辩爜宸茬粦瀹氭墭鐩樻垨宸插叆搴擄紝涓嶅彲鍒犻櫎!";
+                    }
+
+                    // 鍒犻櫎瀵瑰簲绠辨敮淇℃伅
+                    sqlString += $"UPDATE BllBoxInfo SET IsDel = '1',";
+                    sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' ";
+                    sqlString += $"WHERE ASNNo = '{model.ASNNo}';";
+                    notdel = 1;
+                }
                 Db.Ado.BeginTran();
                 int rowCount = Db.Ado.ExecuteCommand(sqlString);
-
-                if (rowCount < 2)
+                if (rowCount < 2 + notdel)
                 {
                     Db.RollbackTran();
                     return "-1:鍒犻櫎澶辫触锛�";
@@ -469,6 +574,7 @@
             }
             catch (Exception ex)
             {
+                Db.RollbackTran();
                 throw ex;
             }
         }
@@ -545,6 +651,11 @@
                 //{
                 //    throw new Exception("鍙傛暟寮傚父,璇锋鏌ョ姸鎬佹槸鍚︿负鎵ц瀹屾垚");
                 //}
+                var palletBind = Db.Queryable<BllPalletBind>().Where(m => m.IsDel == "0" && m.ASNNo == notice.ASNNo && m.Status != "2").ToList();
+                if (palletBind != null && palletBind.Count > 0)
+                {
+                    throw new Exception("瀛樺湪鏈叆搴撳畬鎴愭墭鐩樹俊鎭紝涓嶅厑璁稿叧鍗�");
+                }
 
                 var sqlString = "";
 
@@ -576,7 +687,7 @@
             }
         }
         //鍏ュ簱鍗曟挙閿�鐢宠
-        public void CancelOrder(int id,string reason,int userId)
+        public void CancelOrder(int id, string reason, int userId)
         {
             try
             {
@@ -585,29 +696,29 @@
                 {
                     throw new Exception("鏈煡璇㈠埌鍏ュ簱鍗曟嵁淇℃伅");
                 }
-                if (notice.Status!="1" && notice.Status != "2")
+                if (notice.Status != "1" && notice.Status != "2")
                 {
                     throw new Exception("鍏ュ簱鍗曟嵁鐘舵�佷笉鏄鍦ㄦ墽琛屾垨鎵ц瀹屾垚锛屼笉鑳芥挙閿�");
                 }
 
                 var bind = Db.Queryable<BllPalletBind>().Where(m => m.IsDel == "0" && m.ASNNo == notice.ASNNo).ToList();
-                if (bind.Count==0)
+                if (bind.Count == 0)
                 {
                     throw new Exception("鏈煡璇㈠埌鍏ュ簱鍗曟嵁鐨勬墭鐩樼粦瀹氫俊鎭�");
                 }
 
-                if (bind.Count(m=>m.Status== "1")>0)
+                if (bind.Count(m => m.Status == "1") > 0)
                 {
                     throw new Exception("褰撳墠鍏ュ簱鍗曟嵁鐨勬墭鐩樼粦瀹氫俊鎭湁姝e湪鎵ц鐨勶紝璇风◢鍚庡畬鎴愬悗鍐嶆挙閿�");
                 }
 
                 var auditLog = Db.Queryable<BllAuditLog>().Where(m => m.IsDel == "0" && m.Status == "0");
                 var boxInfo = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNNo == notice.ASNNo);
-                if (auditLog.Count(m=>m.OrderNo == notice.ASNNo)>0)
+                if (auditLog.Count(m => m.OrderNo == notice.ASNNo) > 0)
                 {
                     throw new Exception("褰撳墠鍏ュ簱鍗曟嵁宸叉湁鎾ら攢瀹℃牳锛岃绛夊緟瀹℃牳瀹屾垚");
                 }
-                
+
 
                 var startStatusName = "";
                 var endStatusName = "";
@@ -622,7 +733,7 @@
                         endStatusName = "姝e湪鎵ц";
                         break;
                     default:
-                        throw new Exception("鍗曟嵁鐘舵�侀敊璇�"); 
+                        throw new Exception("鍗曟嵁鐘舵�侀敊璇�");
                 }
 
                 var palletStr = "";
@@ -630,27 +741,46 @@
                 var msgL = "";
                 foreach (var item in bind)
                 {
-                    if (auditLog.Count(m=>m.OrderNo ==item.ASNNo && m.PalletNo.Contains(item.PalletNo)) >0)
+                    if (auditLog.Count(m => m.OrderNo == item.ASNNo && m.PalletNo.Contains(item.PalletNo)) > 0)
                     {
                         continue;
                     }
 
                     if (!palletStr.Contains(item.PalletNo))
                     {
-                        palletStr += item.PalletNo+";";
+                        palletStr += item.PalletNo + ";";
+                    }
+
+                    var info = boxInfo.First(m => m.BindNo == item.Id);
+                    //鑾峰彇鎵樼洏缁戝畾瀵瑰簲鍗曟嵁
+                    var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(a => a.IsDel == "0" && a.Id == item.ASNDetailNo);
+                    if (info != null)
+                    {
+                        if (!msgS.Contains(info.SkuNo))
+                        {
+                            msgS += info.SkuNo + ";";
+                        }
+
+                        if (!msgL.Contains(info.LotNo))
+                        {
+                            msgL += info.LotNo + ";";
+
+                        }
+                    }
+                    else
+                    {
+                        if (!msgS.Contains(noticeDetail.SkuNo))
+                        {
+                            msgS += noticeDetail.SkuNo + ";";
+                        }
+
+                        if (!msgL.Contains(noticeDetail.LotNo))
+                        {
+                            msgL += noticeDetail.LotNo + ";";
+
+                        }
                     }
                     
-                    var info = boxInfo.First(m => m.BindNo == item.Id);
-                    if (!msgS.Contains(info.SkuNo))
-                    {
-                        msgS += info.SkuNo + ";";
-                    }
-
-                    if (!msgL.Contains(info.LotNo))
-                    {
-                        msgL += info.LotNo + ";";
-
-                    }
                 }
                 var time = DateTime.Now;
                 var log = new BllAuditLog()
@@ -668,7 +798,7 @@
                     IsDel = "0",
                     CreateUser = userId,
                     CreateTime = time
-                }; 
+                };
                 Db.Insertable(log).ExecuteCommand();
                 new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鍏ュ簱鍗曟嵁", notice.ASNNo, "娣诲姞", $"娣诲姞浜嗗崟鎹彿涓簕notice.ASNNo}鐨勫崟鎹挙閿�鐢宠", userId);
             }
@@ -702,7 +832,7 @@
                 {
                     //娣诲姞鎿嶄綔鏃ュ織
                     new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鍏ュ簱鍗曟嵁", notice.ASNNo, "缂栬緫", $"缂栬緫浜嗗崟鎹彿涓簕notice.ASNNo}鐨勫娉ㄤ俊鎭�", userId);
-                }                
+                }
             }
             catch (Exception ex)
             {
@@ -803,7 +933,7 @@
                         Standard = skuModel.Standard,
                         LotNo = asnDetailModel.LotNo,
                         LotText = "",
-                        Qty = asnDetailModel.Qty,
+                        Qty = (decimal)asnDetailModel.Qty,
                         PackagNo = asnDetailModel.PackagNo,
                         SupplierLot = asnDetailModel.SupplierLot,
                         Status = "0",
@@ -842,6 +972,10 @@
                 {
                     throw new Exception("鏈煡璇㈠埌鍗曟嵁淇℃伅");
                 }
+                if (notice.Status != "3")
+                {
+                    throw new Exception("澶嶆牳澶辫触锛屽崟鎹潪鍏抽棴鐘舵��");
+                }
                 var detail = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.ASNNo == notice.ASNNo && m.IsDel == "0").ToList();
                 if (detail.Count == 0)
                 {
@@ -858,7 +992,7 @@
                     {
                         SkuNo = d.SkuNo,
                         LotNo = d.LotNo,
-                        Qty = int.Parse(d.CompleteQty.ToString()),
+                        Qty = d.CompleteQty,
                         PackagNo = d.PackagNo,
                         SupplierLot = d.SupplierLot
                     };
@@ -884,8 +1018,8 @@
                 #endregion
 
                 notice.Status = "4";
-                notice.UpdateTime = DateTime.Now;
-                notice.UpdateUser = userId;
+                notice.CheckTime = DateTime.Now;
+                notice.CheckUser = userId;
                 Db.Updateable(notice).ExecuteCommand();
 
                 new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鍏ュ簱鍗曟嵁", notice.ASNNo, "澶嶆牳", $"澶嶆牳浜嗗崟鎹彿涓簕notice.ASNNo}鐨勫崟鎹俊鎭�", userId);
@@ -899,5 +1033,5 @@
 
         #endregion
     }
-    
+
 }

--
Gitblit v1.8.0