From c9cd6646fdd1296a7feeb4384ebfe06ab90a52d7 Mon Sep 17 00:00:00 2001
From: IPC-610 <IPC-610@DESKTOP-6LEOOS3>
Date: 星期三, 27 十一月 2024 08:25:17 +0800
Subject: [PATCH] 修改批次长度判断 ,批次长度增加为11位和12位

---
 Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs |  361 ++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 309 insertions(+), 52 deletions(-)

diff --git a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
index 6fc3978..dfa78f2 100644
--- a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
+++ b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
@@ -17,6 +17,11 @@
 using WMS.Entity.Context;
 using WMS.Entity.SysEntity;
 using WMS.IBLL.IBllAsnServer;
+using WMS.BLL.SysServer;
+using System.Threading.Tasks;
+using System.Security.Policy;
+using WMS.Entity.DataEntity;
+using WMS.Entity.BllQualityEntity;
 
 namespace WMS.BLL.BllAsnServer
 {
@@ -112,7 +117,7 @@
                 sqlString += "LEFT JOIN SysMaterials AS tb5 on tb1.SkuNo = tb5.SkuNo ";
                 sqlString += "LEFT JOIN SysUnit AS tb6 on tb5.UnitNo = tb6.UnitNo ";
                 sqlString += "LEFT JOIN SysPackag AS tb7 on tb1.PackagNo = tb7.PackagNo ";
-                sqlString += $"WHERE tb1.ASNNo = '{model.ASNNo}' AND tb1.IsDel = '0' order by tb1.SkuNo desc ";
+                sqlString += $"WHERE tb1.ASNNo = '{model.ASNNo}' AND tb1.IsDel = '0' AND tb5.IsDel = '0' order by tb1.SkuNo desc ";
                 sqlString += $"offset {((model.Page - 1) * model.Limit)} rows fetch next {rowCount} rows only;";
 
                 var modelList = Db.Ado.SqlQuery<ArrivalNoticeDetailDto>(sqlString);
@@ -126,7 +131,7 @@
         }
 
         //鑾峰彇鍏ュ簱鍗曟槑缁嗗墿浣欐墦鍗版暟閲�
-        public string GetAsnDetailQtyList(int id)
+        public LabelPrintInfoDto GetAsnDetailQtyList(int id)
         {
             try
             {
@@ -135,11 +140,29 @@
                 {
                     throw new Exception("鏈煡璇㈠埌鍏ュ簱鍗曟槑缁�");
                 }
+                var data = new LabelPrintInfoDto();
+                
+                var notice = Db.Queryable<BllArrivalNotice>().Where(m => m.IsDel == "0" && m.ASNNo == detail.ASNNo).First();
+                if (notice != null && notice.Type == "4") //鍒ゆ柇鏄惁鏄綑鏂欓��鍥炲崟
+                {
+                    var noticeStr = Db.Queryable<BllArrivalNotice>().Where(m => m.Type == "1").Select(m => m.ASNNo).ToList();
+                    var detailOld = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && noticeStr.Contains(m.ASNNo) && m.SkuNo == detail.SkuNo && m.LotNo == detail.LotNo).OrderByDescending(m => m.CreateTime).First();
+                    if (detailOld != null)
+                    {
+                        var boxInfo = Db.Queryable<BllBoxInfo>().First(m => m.IsDel == "0" && m.ASNNo == detailOld.ASNNo);
+                        if (boxInfo!= null)
+                        {
+                            data.ProductionTime = boxInfo.ProductionTime!= null ? ((DateTime)boxInfo.ProductionTime).ToString("yyyy-MM-dd"):"";
+                            data.ExpirationTime = boxInfo.ExpirationTime != null ? ((DateTime)boxInfo.ExpirationTime).ToString("yyyy-MM-dd") : "";
+                            data.StoreTime = boxInfo.StoreTime != null ? ((DateTime)boxInfo.StoreTime).ToString("yyyy-MM-dd") : "";
+                        }
+                    }
+                }
 
                 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();
+                data.Qty = qty.ToString();
+                return data;
             }
             catch (Exception e)
             {
@@ -153,31 +176,58 @@
             try
             {
                 string skuType = string.Empty;
+                int IsPack = 0; //0锛氫笉绠� 1锛氳创 2锛氫笉璐�
+                /**
+                 * 鎴愬搧璐� 		0
+                 * 閲囪喘鍙创鍙笉璐�	1
+                 * 涓棿鍝佷笉璐�	2
+                 * 閫�璐ц创		3
+                 * 浣欐枡閫�鍥炲彲璐村彲涓嶈创	4
+                 * 鍏跺畠鍙创鍙笉璐�	5
+                 * 浠e偍涓嶈创		6
+                 * 瀵勫瓨涓嶈创		7
+                 */
                 switch (model.Type)//0锛氬師鏂� 1锛氬寘鏉� 2锛氭垚鍝� 3锛氳�楁潗 4锛氬崐鎴愬搧
                 {
                     case "0"://鎴愬搧鍏ュ簱
-                    case "3"://閫�璐у叆搴�
-                    case "5"://鍏跺畠鍏ュ簱
-                    case "6"://浠e偍鍏ュ簱
                         skuType = "(2)";
+                        IsPack = 1; //璐�
                         break;
                     case "1"://閲囪喘鍏ュ簱
-                    case "4"://杞﹂棿浣欐枡閫�鍥炲叆搴�
                         skuType = "(0,1,3)";
                         break;
                     case "2"://涓棿鍝佸叆搴�
                         skuType = "(4)";
+                        IsPack = 2; //涓嶈创
+                        break;
+                    case "3"://閫�璐у叆搴�
+                        skuType = "(2)";
+                        IsPack = 1; //璐�
+                        break;
+                    case "4"://杞﹂棿浣欐枡閫�鍥炲叆搴�
+                        skuType = "(0,1,3)";
+                        break;
+                    case "5"://鍏跺畠鍏ュ簱
+                        skuType = "(0,1,3)";
+                        break;
+                    case "6"://浠e偍鍏ュ簱
+                        skuType = "(0,1,2,3,4)";
+                        IsPack = 2; //涓嶈创
                         break;
                     case "7"://瀵勫瓨鍏ュ簱
-                        skuType = "(0,1,2,3,4)";
+                        //skuType = "(3)";
+                        IsPack = 2; //涓嶈创
                         break;
                     default: //鍏跺畠
-                        skuType = "(0,1,2,3,4)";
+                        //skuType = "(0,1,2,3,4)";
                         break;
                 }
 
                 Expression<Func<SysMaterials, bool>> item = Expressionable.Create<SysMaterials>()
-                    .AndIF(true, it => skuType.Contains(it.Type))
+                    .AndIF(model.Type != "7", it => skuType.Contains(it.Type) && it.SkuNo != "100088")
+                    .AndIF(model.Type == "7", it => it.SkuNo == "100088")
+                    .AndIF(IsPack == 1, it => it.PackagNo != "")
+                    .AndIF(IsPack == 2, it => it.PackagNo == "")
                     .AndIF(true, it => it.IsDel == "0")
                     .And(it => it.SkuNo != "100099")
                     .AndIF(!string.IsNullOrWhiteSpace(model.SkuNo),
@@ -192,6 +242,8 @@
                     .Includes(x => x.UnitInfo)
                     .Includes(x => x.PackagInfo)
                     .ToList();
+
+
 
                 return data.Select(m => new MaterialsDto()
                 {
@@ -224,14 +276,15 @@
         }
 
         //娣诲姞鍏ュ簱鍗曟嵁
-        public string AddArrivalNotice(ArrivalNoticeVm model)
+        public string AddArrivalNotice(ArrivalNoticeVm model, string url)
         {
             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";
+            var TypeLot = "2, 5, 6, 7"; //鎵规鍙负绌哄崟鎹被鍨�
 
+            var addOder = new List<ResponseOrderTaskModel>();
             try
             {
                 if (model.Origin == "褰曞叆")
@@ -251,13 +304,13 @@
                 }
                 //鍒ゆ柇鏄惁涓洪噰璐叆搴撳崟鎹垨杞﹂棿浣欐枡閫�鍥炲叆搴�
                 // 0锛氭垚鍝佸叆搴� 1锛氶噰璐叆搴� 2锛氫腑闂村搧鍏ュ簱 3锛氶��璐у叆搴� 4锛氳溅闂翠綑鏂欓��鍥炲叆搴� 5锛氬叾瀹冨叆搴� 6锛氫唬鍌ㄥ叆搴� 7锛氬瘎瀛樺叆搴�
-                if (model.Type == "1" || model.Type == "4")
-                {
-                    if (!string.IsNullOrWhiteSpace(model.LotNo))
-                    {
-                        throw new Exception("閲囪喘鍏ュ簱鎴栦綑鏂欓��鍥炰笉鍙緭鍏ユ壒娆★紝涓嶅彲缂栬緫!");
-                    }
-                }
+                //if (model.Type == "1" || model.Type == "4")
+                //{
+                //    if (!string.IsNullOrWhiteSpace(model.LotNo))
+                //    {
+                //        throw new Exception("閲囪喘鍏ュ簱鎴栦綑鏂欓��鍥炰笉鍙緭鍏ユ壒娆★紝涓嶅彲缂栬緫!");
+                //    }
+                //}
 
                 sqlString += "Insert into BllArrivalNotice (ASNNo,Type,Origin,CustomerNo,";
                 sqlString += "CustomerName,LotNo,LotText,SupplierLot,CreateUser) values ( ";
@@ -287,17 +340,48 @@
                         //鍒ゆ柇鏄惁涓轰笉闄愬埗鎵规鍗曟嵁
                         if (!TypeLot.Contains(model.Type))
                         {
-                            strMessage = "-1:鎵规鍙蜂笉鍙负绌�;";
+                            strMessage = "-1:杩涘巶缂栧彿涓嶅彲涓虹┖;";
                             continue;
                         }
                     }
+                    if (model.Type != "7")
+                    {
+                        if (!TypeLot.Contains(model.Type))
+                        {
+                            if (detailModel.LotNo.Length != 12 && detailModel.LotNo.Length != 11 && detailModel.LotNo.Length != 10)
+                            {
+                                strMessage = "-1:杩涘巶缂栧彿浣嶆暟闀垮害鏈夎;";
+                                continue;
+                            }
+                        }
+                        
+                    }
+                    
+                    if (model.Type == "1" && string.IsNullOrWhiteSpace(detailModel.SupplierLot)) //閲囪喘鍒拌揣鍗曞師鍘傛壒鍙凤紙渚涜揣鎵规锛変笉鑳戒负绌�
+                    {
+                        strMessage = "-1:鍘熷巶鎵瑰彿涓嶅彲涓虹┖;";
+                        continue;
+                    }
+                    if (model.Type == "2")   // 2锛氫腑闂村搧鍏ュ簱
+                    {
+                        if (string.IsNullOrWhiteSpace(detailModel.Lot1))
+                        {
+                            throw new Exception("鐢熶骇鏃ユ湡涓嶅彲涓虹┖!");
+                        }
+                        if (string.IsNullOrWhiteSpace(detailModel.Lot2))
+                        {
+                            throw new Exception("杩囨湡鏃ユ湡涓嶅彲涓虹┖!");
+                        }
+                    }
+
+
                     // 鍒ゆ柇鏄惁宸插瓨鍦ㄥ綋鍓嶆槑缁�
                     string sqlCount = $"SELECT COUNT(ID) FROM BllArrivalNoticeDetail where ASNNo = '{model.ASNNo}' ";
                     sqlCount += $"and SkuNo ='{detailModel.SkuNo}' and LotNo = '{detailModel.LotNo}' and id != '{detailModel.Id}' and isdel = '0';";
                     var com = new Common().GetRowCount(sqlCount);
                     if (com > 0)
                     {
-                        strMessage = "-1:鐗╂枡鍜屾壒娆″彿閲嶅;";
+                        strMessage = "-1:鐗╂枡鍜岃繘鍘傜紪鍙烽噸澶�;";
                         continue;
                     }
                     if (detailModel.Price == null)
@@ -307,10 +391,25 @@
                     // 璁$畻鍑烘�婚噾棰�
                     detailModel.Money = detailModel.Price * detailModel.Qty;
                     sqlDetailStr += "Insert into BllArrivalNoticeDetail (ASNNo,SkuNo,SkuName,Standard,";
-                    sqlDetailStr += "LotNo,LotText,Qty,PackagNo,Price,Money,IsBale,IsBelt,SupplierLot,Status,UDF1,UDF2,UDF3,UDF4,UDF5,CreateUser) values ( ";
+                    sqlDetailStr += "LotNo,LotText,Qty,PackagNo,Price,Money,IsBale,IsBelt,SupplierLot,Status,Lot1,Lot2,UDF1,UDF2,UDF3,UDF4,UDF5,CreateUser) values ( ";
                     sqlDetailStr += $"'{model.ASNNo}','{detailModel.SkuNo}','{detailModel.SkuName}','{detailModel.Standard}', ";
                     sqlDetailStr += $"'{detailModel.LotNo}','{detailModel.LotText}','{detailModel.Qty}','{detailModel.PackagNo}','{detailModel.Price}', ";
-                    sqlDetailStr += $"{detailModel.Money},'{detailModel.IsBale}','{detailModel.IsBelt}','{detailModel.SupplierLot}','0','{detailModel.UDF1}','{detailModel.UDF2}','{detailModel.UDF3}','{detailModel.UDF4}','{detailModel.UDF5}','{model.CreateUser}');";
+                    sqlDetailStr += $"'{detailModel.Money}','{detailModel.IsBale}','{detailModel.IsBelt}','{detailModel.SupplierLot}','0','{detailModel.Lot1}','{detailModel.Lot2}', ";
+                    sqlDetailStr += $"'{detailModel.UDF1}','{detailModel.UDF2}','{detailModel.UDF3}','{detailModel.UDF4}','{detailModel.UDF5}','{model.CreateUser}');";
+
+                    if (model.Type == "0")//鎴愬搧鍏ュ簱鍗曚笅鍙慦CS淇℃伅
+                    {
+                        addOder.Add(new ResponseOrderTaskModel()
+                        {
+                            OrderNo = model.ASNNo,
+                            LotNo = detailModel.LotNo,
+                            SkuNo = detailModel.SkuNo,
+                            SkuName = detailModel.SkuName,
+                            BoxType = detailModel.Standard,
+                            Qty = (int)detailModel.Qty,
+                            TaskType = 0
+                        });
+                    }
                 }
 
                 if (sqlDetailStr == string.Empty)
@@ -329,6 +428,35 @@
                 if (rowCount > 0 && rowDetailCount > 0)
                 {
                     new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鍏ュ簱鍗曟嵁", model.ASNNo, "娣诲姞", $"娣诲姞浜嗗崟鎹彿涓簕model.ASNNo}鐨勫崟鎹俊鎭�", Convert.ToInt32(model.CreateUser));
+
+                    if (addOder.Count > 0)
+                    {
+                        // 姝e紡杩愯绋嬪簭鏀惧紑
+                        var jsonData = JsonConvert.SerializeObject(addOder);
+                        string response = "";
+
+                        try
+                        {
+                            var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss")
+                            //缁橶CS涓嬪彂鍏ュ簱鍗曚俊鎭�
+                            response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS");
+
+                            //瑙f瀽杩斿洖鏁版嵁 
+                            var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
+                            if (wcsModel.StatusCode == 0)
+                            {
+
+                            }
+                            if (wcsModel.StatusCode == -1)
+                            {
+                                throw new Exception($"涓嬪彂WCS澶辫触锛歿wcsModel.Msg}");
+                            }
+                        }
+                        catch (Exception ex)
+                        {
+                            throw new Exception(ex.Message);
+                        }
+                    }
                     return strMessage;
                 }
                 else
@@ -339,6 +467,7 @@
             }
             catch (Exception ex)
             {
+                Db.Ado.RollbackTran();
                 throw new Exception(ex.Message);
             }
         }
@@ -353,8 +482,10 @@
             {
                 //鍒ゆ柇鏄惁涓洪噰璐叆搴撳崟鎹垨杞﹂棿浣欐枡閫�鍥炲叆搴�
                 // 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:閲囪喘鍏ュ簱鎴栦綑鏂欓��鍥炰笉鍙緭鍏ユ壒娆★紝涓嶅彲缂栬緫;";
@@ -415,11 +546,24 @@
                         strMessage = "-1:鏁伴噺蹇呴』澶т簬0;";
                         continue;
                     }
-                    if (string.IsNullOrEmpty(detailModel.LotNo))
+                    if (string.IsNullOrEmpty(detailModel.LotNo) && isType != 1)
                     {
                         strMessage = "-1:鎵规鍙蜂笉鍙负绌�;";
                         continue;
                     }
+
+                    if (model.Type == "2")   // 2锛氫腑闂村搧鍏ュ簱
+                    {
+                        if (string.IsNullOrWhiteSpace(detailModel.Lot1))
+                        {
+                            throw new Exception("鐢熶骇鏃ユ湡涓嶅彲涓虹┖!");
+                        }
+                        if (string.IsNullOrWhiteSpace(detailModel.Lot2))
+                        {
+                            throw new Exception("杩囨湡鏃ユ湡涓嶅彲涓虹┖!");
+                        }
+                    }
+
                     // 鍒ゆ柇鏄惁宸插瓨鍦ㄥ綋鍓嶆槑缁�
                     string sqlCount = $"SELECT COUNT(ID) FROM BllArrivalNoticeDetail where ASNNo = '{model.ASNNo}' ";
                     sqlCount += $"and SkuNo ='{detailModel.SkuNo}' and LotNo = '{detailModel.LotNo}' and id != '{detailModel.Id}' and isdel = '0';";
@@ -439,10 +583,12 @@
                         // 璁$畻鍑烘�婚噾棰�
                         detailModel.Money = detailModel.Price * detailModel.Qty;
                         sqlDetailStr += "Insert into BllArrivalNoticeDetail (ASNNo,SkuNo,SkuName,Standard,";
-                        sqlDetailStr += "LotNo,LotText,Qty,PackagNo,Price,Money,IsBale,IsBelt,SupplierLot,Status,UDF1,UDF2,UDF3,UDF4,UDF5,CreateUser) values ( ";
+                        sqlDetailStr += "LotNo,LotText,Qty,PackagNo,Price,Money,IsBale,IsBelt,SupplierLot,Status,Lot1,Lot2,UDF1,UDF2,UDF3,UDF4,UDF5,CreateUser) values ( ";
                         sqlDetailStr += $"'{model.ASNNo}','{detailModel.SkuNo}','{detailModel.SkuName}','{detailModel.Standard}', ";
                         sqlDetailStr += $"'{detailModel.LotNo}','{detailModel.LotText}','{detailModel.Qty}','{detailModel.PackagNo}','{detailModel.Price}', ";
-                        sqlDetailStr += $"{detailModel.Money},'{detailModel.IsBale}','{detailModel.IsBelt}','{detailModel.SupplierLot}','0','{detailModel.UDF1}','{detailModel.UDF2}','{detailModel.UDF3}','{detailModel.UDF4}','{detailModel.UDF5}','{model.CreateUser}');";
+                        sqlDetailStr += $"'{detailModel.Money},'{detailModel.IsBale}','{detailModel.IsBelt}','{detailModel.SupplierLot}','0','{detailModel.Lot1}','{detailModel.Lot2}', ";
+                        sqlDetailStr += $"'{detailModel.UDF1}','{detailModel.UDF2}','{detailModel.UDF3}','{detailModel.UDF4}','{detailModel.UDF5}','{model.CreateUser}');";
+
                     }
                     else
                     {
@@ -455,6 +601,8 @@
                                          && it.SupplierLot == detailModel.SupplierLot
                                          && it.IsBale == detailModel.IsBale
                                          && it.IsBelt == detailModel.IsBelt
+                                         && it.Lot1 == detailModel.Lot1                                 // 鐢熶骇鏃ユ湡
+                                         && it.Lot2 == detailModel.Lot2                                 // 杩囨湡鏃ユ湡
                                          && it.UDF1 == detailModel.UDF1
                                          && it.UDF2 == detailModel.UDF2
                                          && it.UDF3 == detailModel.UDF3
@@ -470,6 +618,7 @@
                         sqlDetailStr += $"Qty = '{detailModel.Qty}',LotNo = '{detailModel.LotNo}',Money='{detailModel.Money}', ";
                         sqlDetailStr += $"LotText = '{detailModel.LotText}',SupplierLot = '{detailModel.SupplierLot}', ";
                         sqlDetailStr += $"IsBale = '{detailModel.IsBale}',IsBelt = '{detailModel.IsBelt}', ";
+                        sqlDetailStr += $" Lot1= '{detailModel.Lot1}',Lot2 = '{detailModel.Lot2}', ";
                         sqlDetailStr += $"UDF1 = '{detailModel.UDF1}',UDF2 = '{detailModel.UDF2}',UDF3 = '{detailModel.UDF3}',UDF4 = '{detailModel.UDF4}',UDF5 = '{detailModel.UDF5}',";
                         sqlDetailStr += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' ";
                         sqlDetailStr += $"WHERE Id = {detailModel.Id};";
@@ -533,6 +682,7 @@
 
                 //鍒ゆ柇鏄惁涓洪噰璐叆搴撳崟鎹垨杞﹂棿浣欐枡閫�鍥炲叆搴�
                 // 0锛氭垚鍝佸叆搴� 1锛氶噰璐叆搴� 2锛氫腑闂村搧鍏ュ簱 3锛氶��璐у叆搴� 4锛氳溅闂翠綑鏂欓��鍥炲叆搴� 5锛氬叾瀹冨叆搴� 6锛氫唬鍌ㄥ叆搴� 7锛氬瘎瀛樺叆搴�
+                int notdel = 0;
                 if (model.Type == "1" || model.Type == "4")
                 {
                     //鑾峰彇鍗曟嵁鐢熸垚瀵瑰簲鏍囩
@@ -548,10 +698,11 @@
                     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 < 3)
+                if (rowCount < 2 + notdel)
                 {
                     Db.RollbackTran();
                     return "-1:鍒犻櫎澶辫触锛�";
@@ -639,6 +790,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 = "";
 
@@ -735,16 +891,35 @@
                     }
 
                     var info = boxInfo.First(m => m.BindNo == item.Id);
-                    if (!msgS.Contains(info.SkuNo))
+                    //鑾峰彇鎵樼洏缁戝畾瀵瑰簲鍗曟嵁
+                    var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(a => a.IsDel == "0" && a.Id == item.ASNDetailNo);
+                    if (info != null)
                     {
-                        msgS += info.SkuNo + ";";
+                        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 + ";";
+
+                        }
                     }
 
-                    if (!msgL.Contains(info.LotNo))
-                    {
-                        msgL += info.LotNo + ";";
-
-                    }
                 }
                 var time = DateTime.Now;
                 var log = new BllAuditLog()
@@ -812,11 +987,11 @@
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
-        public ErpModel CreateAsn(AsnInfo model)
+        public HttpReturnModel HttpCreateAsn(AsnInfo model)
         {
             try
             {
-                var resultModel = new ErpModel() { Success = -1, Message = "" };
+                var resultModel = new HttpReturnModel() { Success = "-1", Message = "" };
                 if (string.IsNullOrEmpty(model.AsnType))
                 {
                     resultModel.Message = "鍗曟嵁绫诲瀷涓嶅彲涓虹┖!";
@@ -852,7 +1027,7 @@
                 {
                     ASNNo = asnNo,
                     Type = model.AsnType,
-                    Origin = model.Origin,
+                    Origin = string.IsNullOrEmpty(model.Origin) ? "ERP" : model.Origin,
                     CustomerNo = model.Customer,
                     CustomerName = CustomerModel.CustomerName,
                     OrderCode = model.OrderCode,
@@ -915,7 +1090,7 @@
                 Db.Insertable(detailModels).ExecuteCommand();
                 Db.CommitTran();
 
-                resultModel.Success = 0;
+                resultModel.Success = "0";
                 resultModel.Message = "鎴愬姛";
                 return resultModel;
             }
@@ -927,23 +1102,52 @@
         }
 
         //璁㈠崟鍥炰紶涓婃父绯荤粺
-        public bool FinishAsn(int id, string url, int userId)
+        public bool FinishAsn(int id, string erpUrl, string mesUrl,string mesTokenUrl,string userNo,string pwd, int userId)
         {
             try
             {
+                var loginPwd = Md5Tools.CalcMd5(pwd);
+                var date = Db.Queryable<SysUserInfor>().First(m =>m.IsDel=="0" && m.UserName == userNo && m.PassWord == loginPwd);
+
+                if (date == null) //璐﹀彿瀵嗙爜鏄惁姝g‘
+                {
+                   throw new Exception("璐﹀彿瀵嗙爜涓嶆纭垨娌℃湁姝よ处鍙�");
+                }
+                if (date.Status != "0") //褰撳墠璐﹀彿鏄惁姝e父鍚敤
+                {
+                    throw new Exception("褰撳墠璐﹀彿闈炲惎鐢ㄧ姸鎬�");
+                }
+
                 var notice = Db.Queryable<BllArrivalNotice>().First(m => m.Id == id && m.IsDel == "0");
                 if (notice == null)
                 {
                     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)
                 {
                     throw new Exception("鏈煡璇㈠埌鍗曟嵁鏄庣粏淇℃伅");
                 }
-                if (userId == notice.UpdateUser)
+                if (date.Id == notice.UpdateUser)
                 {
                     throw new Exception("澶嶆牳澶辫触锛屽鏍镐汉鍛樺拰鍏抽棴璁㈠崟浜哄憳涓嶈兘鐩稿悓锛�");
+                }
+                //鍗曟嵁绫诲瀷鏄� 鎴愬搧鍏ュ簱鎴栭噰璐叆搴� 鍒ゆ柇鍏ュ簱鐗╂枡鏄惁鍚堟牸
+                if (notice.Type == "0" || notice.Type == "1")
+                {
+                    foreach (var item in detail)
+                    {
+                        var instStatus = Db.Queryable<BllQualityInspect>().Count(m => m.IsDel == "0" && m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.IsQualified == "1");
+                        if (instStatus == 0)
+                        {
+                            throw new Exception($"{item.SkuNo}銆亄item.LotNo}璐ㄩ噺鐘舵�佷笉鏄悎鏍肩殑锛屼笉鑳藉洖浼狅紒");
+                        }
+                    }
+                    
                 }
                 var list = new List<AsnDetail>();
                 foreach (var d in detail)
@@ -958,31 +1162,61 @@
                     };
                     list.Add(item);
                 }
-                var soInfo = new AsnInfo()
+                var asnInfo = new AsnInfo()
                 {
                     OrderCode = notice.OrderCode,
                     AsnDetails = list
                 };
 
-                #region 閫氳繃鎺ュ彛鍙戦�佽嚦erp 
+                #region 閫氳繃鎺ュ彛鍙戦�佽嚦erp 鎴� mes
                 //绯荤粺瀵规帴鍚庢斁寮�
-                /*var jsonData = JsonConvert.SerializeObject(soInfo);
+                var jsonData = JsonConvert.SerializeObject(asnInfo);
+                var mesList = new List<string>() { "0", "4" };  //0 鎴愬搧鍏ュ簱 4浣欐枡閫�鍥炲叆搴�
+                var erpList = new List<string>() { "1", "2", "3" }; //1 閲囪喘鍏ュ簱  2涓棿鍝佸叆搴�  3 閫�璐у叆搴�
 
-                var response = HttpHelper.DoPost(url, jsonData, "鍏ュ簱鍗曞畬鎴愪笂浼�", "ERP");
-
-                var obj = JsonConvert.DeserializeObject<ErpModel>(response);//瑙f瀽杩斿洖鏁版嵁
-                if (obj.Success != 0)
+                if (mesList.Contains(notice.Type)) // mes 
                 {
-                    throw new Exception("涓婁紶澶辫触" + obj.Message);
-                }*/
+                    //鑾峰彇浠ょ墝
+                    var token = new Token().GetMesToken(mesTokenUrl);
+                    Dictionary<string, string> mesDic = new Dictionary<string, string>()
+                    {
+                        {"Authorization",token }
+                    };
+                    var mesData = new FinishAsnModel()
+                    {
+                        no = asnInfo.OrderCode,
+                        qty = asnInfo.AsnDetails.Sum(m=>m.Qty)
+                    };
+                    jsonData = JsonConvert.SerializeObject(mesData);
+                    //璋冪敤鎺ュ彛
+                    var response = HttpHelper.DoPost(mesUrl, jsonData, "鍏ュ簱鍗曞畬鎴愪笂浼�", "MES", mesDic);
+
+                    var obj = JsonConvert.DeserializeObject<MesModel>(response);//瑙f瀽杩斿洖鏁版嵁
+                    if (obj.status != "0")
+                    {
+                        throw new Exception("涓婁紶澶辫触" + obj.message);
+                    }
+                }
+                else if (erpList.Contains(notice.Type)) //erp  
+                {
+                    var response = HttpHelper.DoPost(erpUrl, jsonData, "鍏ュ簱鍗曞畬鎴愪笂浼�", "ERP");
+
+                    var obj = JsonConvert.DeserializeObject<ErpModel>(response);//瑙f瀽杩斿洖鏁版嵁
+                    if (obj.Success != 0)
+                    {
+                        throw new Exception("涓婁紶澶辫触" + obj.Message);
+                    }
+                }
+
+                
                 #endregion
 
                 notice.Status = "4";
                 notice.CheckTime = DateTime.Now;
-                notice.CheckUser = userId;
+                notice.CheckUser = date.Id;
                 Db.Updateable(notice).ExecuteCommand();
 
-                new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鍏ュ簱鍗曟嵁", notice.ASNNo, "澶嶆牳", $"澶嶆牳浜嗗崟鎹彿涓簕notice.ASNNo}鐨勫崟鎹俊鎭�", userId);
+                new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鍏ュ簱鍗曟嵁", notice.ASNNo, "澶嶆牳", $"{date.RealName}澶嶆牳浜嗗崟鎹彿涓簕notice.ASNNo}鐨勫崟鎹俊鎭�", userId);
                 return true;
             }
             catch (Exception e)
@@ -991,6 +1225,29 @@
             }
         }
 
+        public void UpLocate(string wareNo,string locatNo)
+        {
+            try
+            {
+                if (string.IsNullOrWhiteSpace(wareNo) || string.IsNullOrWhiteSpace(locatNo))
+                {
+                    throw new Exception("浠撳簱鎴栧偍浣嶄笉鑳戒负绌�");
+                }
+                var locate = Db.Queryable<SysStorageLocat>().First(m=>m.IsDel == "0" && m.LocatNo == locatNo && m.WareHouseNo == wareNo);
+                if (locate == null)
+                {
+                    throw new Exception("鏈煡璇㈠埌鍌ㄤ綅淇℃伅");
+                }
+                locate.Status = "0";//鍌ㄤ綅鐘舵�佸彉鏇寸┖鍌ㄤ綅
+                Db.Updateable(locate).ExecuteCommand();
+
+            }
+            catch (Exception e)
+            {
+                throw new Exception(e.Message);
+            }
+        }
+
         #endregion
     }
 

--
Gitblit v1.8.0