From 86e443e42c4bee972c5b795def4917e02f98ce40 Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期五, 11 七月 2025 16:45:08 +0800
Subject: [PATCH] 修改问题

---
 Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs |  205 +++++++++++++++++++++++++++++++++-----------------
 1 files changed, 135 insertions(+), 70 deletions(-)

diff --git a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
index 16cb84d..715a0b7 100644
--- a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
+++ b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
@@ -1,5 +1,6 @@
 锘縰sing Model.InterFaceModel;
 using Model.ModelDto;
+using Model.ModelDto.BllAsnDto;
 using Model.ModelDto.SysDto;
 using Model.ModelVm;
 using Model.ModelVm.SysVm;
@@ -138,7 +139,7 @@
         }
 
         //鑾峰彇鍏ュ簱鍗曟槑缁嗗墿浣欐墦鍗版暟閲�
-        public string GetAsnDetailQtyList(int id)
+        public LabelPrintInfoDto GetAsnDetailQtyList(int id)
         {
             try
             {
@@ -147,14 +148,23 @@
                 {
                     throw new Exception("鏈煡璇㈠埌鍏ュ簱鍗曟槑缁�");
                 }
+                var data = new LabelPrintInfoDto();
 
+                data.ProductionTime = string.IsNullOrEmpty(detail.Lot1) ? "" : Convert.ToDateTime(detail.Lot1).ToString("yyyy-MM-dd");
+                data.ExpirationTime = string.IsNullOrEmpty(detail.Lot2) ? "" : Convert.ToDateTime(detail.Lot2).ToString("yyyy-MM-dd");
+                data.SupplierLot = detail.SupplierLot;
                 var labelQty = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNDetailNo == id).Sum(m => m.Qty + (m.SamplingQty == null? 0: m.SamplingQty));
+                if (labelQty == null)
+                {
+                    labelQty = 0;
+                }
                 var qty = detail.Qty - labelQty;
                 if (qty<0)
                 {
                     qty = 0;
                 }
-                return qty.ToString();
+                data.Qty = qty.ToString();
+                return data;
             }
             catch (Exception e)
             {
@@ -297,6 +307,8 @@
                     };
 
                     List<BllArrivalNoticeDetail> details = new List<BllArrivalNoticeDetail>();
+                    var skuList = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0").ToList();
+
                     foreach (ArrivalNoticeDetailVm detailModel in model.AsnDetail)
                     {
                         if (string.IsNullOrEmpty(detailModel.SkuNo))
@@ -314,7 +326,7 @@
                             strMessage = "-1:鏁伴噺蹇呴』澶т簬0;";
                             continue;
                         }
-
+                        
                         if ( model.Type == "5" || model.Type == "6" || model.Type == "7")
                         {
                             if (!string.IsNullOrWhiteSpace(detailModel.LotNo))
@@ -347,12 +359,29 @@
                                 detailModel.LotNo = maxLotNo;
                             }
                         }
-                        if (model.Type == "0" || model.Type == "1" || model.Type == "2" || model.Type == "3" || model.Type == "4" && model.Type == "8")
+                        //if (model.Type == "0" || model.Type == "1" || model.Type == "2" || model.Type == "3" || model.Type == "4" && model.Type == "8")
+                        //{
+                        //    if (string.IsNullOrWhiteSpace(detailModel.LotNo))
+                        //    {
+                        //        throw new Exception("褰撳墠鍗曟嵁绫诲瀷鎵规涓嶅彲涓虹┖!");
+                        //    }
+                        //}
+                        detailModel.BoxCodeStr = detailModel.LotNo;
+                        if (string.IsNullOrWhiteSpace(detailModel.LotNo))
                         {
-                            if (string.IsNullOrWhiteSpace(detailModel.LotNo))
+                            string toDayTime = DateTime.Now.ToString("yyyyMM");
+                            var maxBoxCodeStr = Db.Queryable<BllArrivalNoticeDetail>()
+                                .Where(m => m.IsDel == "0" && m.BoxCodeStr.Contains("BK") 
+                                && m.CreateTime.ToString("yyyyMM") == DateTime.Now.ToString("yyyyMM")).Max(m => m.BoxCodeStr);
+                            if(string.IsNullOrWhiteSpace(maxBoxCodeStr))
                             {
-                                throw new Exception("褰撳墠鍗曟嵁绫诲瀷鎵规涓嶅彲涓虹┖!");
+                                maxBoxCodeStr = "BK" + toDayTime.Substring(2, 4) + "0001";
                             }
+                            else
+                            {
+                                maxBoxCodeStr = "BK" + (int.Parse(maxBoxCodeStr.Replace("BK", "")) + 1).ToString();                         
+                            }
+                            detailModel.BoxCodeStr = maxBoxCodeStr;
                         }
 
                         // 鍒ゆ柇鏄惁宸插瓨鍦ㄥ綋鍓嶆槑缁�
@@ -371,6 +400,33 @@
                         {
                             detailModel.Price = 0;
                         }
+                        var sku = skuList.FirstOrDefault(m => m.SkuNo == detailModel.SkuNo);
+                        if (sku == null)
+                        {
+                            throw new Exception("鏈煡璇㈠嚭鐗╂枡淇℃伅!");
+                        }
+                        string lot1 = detailModel.Lot1;
+                        string lot2 = detailModel.Lot2;
+                        if (sku.IsInspect == "0")//鏄惁鍏嶆锛�0锛氬惁 1锛氭槸
+                        {
+                            //涓嶅厤妫�鐗╂枡 鐢熶骇鏃ユ湡銆佹湁鏁堟湡涓嶈兘涓虹┖
+                            DateTime lot12;
+                            DateTime lot22;
+                            if (!DateTime.TryParse(detailModel.Lot1, out lot12))
+                            {
+                                throw new Exception("涓嶅厤妫�鐗╂枡鐢熶骇鏃ユ湡杞崲澶辫触");
+                            }
+                            if (!DateTime.TryParse(detailModel.Lot2, out lot22))
+                            {
+                                throw new Exception("涓嶅厤妫�鐗╂枡杩囨湡鏃ユ湡杞崲澶辫触");
+                            }
+                            lot1 = lot12.ToString();
+                            lot2 = lot22.ToString();
+                        }
+                        if (string.IsNullOrWhiteSpace(detailModel.PackagNo))
+                        {
+                            throw new Exception("鍖呰涓嶈兘涓虹┖");
+                        }
                         // 璁$畻鍑烘�婚噾棰�
                         detailModel.Money = detailModel.Price * detailModel.Qty;
                         BllArrivalNoticeDetail detail = new BllArrivalNoticeDetail()
@@ -379,7 +435,7 @@
                             SkuNo = detailModel.SkuNo,
                             SkuName = detailModel.SkuName,
                             Standard = detailModel.Standard,
-                            LotNo = detailModel.LotNo.Trim(),
+                            LotNo = detailModel.LotNo == null ? "" : detailModel.LotNo.Trim(),
                             LotText = detailModel.LotText,
                             Qty = (decimal)detailModel.Qty,
                             PackagNo = detailModel.PackagNo,
@@ -393,6 +449,9 @@
                             Status = "0",
                             IsSampling = "0",
                             InspectStatus = "0",
+                            Lot1 = lot1, //鐢熶骇鏃ユ湡
+                            Lot2 = lot2, // 杩囨湡鏃ユ湡
+                            BoxCodeStr = detailModel.BoxCodeStr,
                             UDF1 = detailModel.UDF1,
                             UDF2 = detailModel.UDF2,
                             UDF3 = detailModel.UDF3,
@@ -518,13 +577,13 @@
                             return strMessage;
                         }
                     
-                        if (model.Type == "0" || model.Type == "2" || model.Type == "3" || model.Type == "4")
-                        {
-                            if (string.IsNullOrWhiteSpace(detailModel.LotNo))
-                            {
-                                throw new Exception("褰撳墠鍗曟嵁绫诲瀷鎵规涓嶅彲涓虹┖!");
-                            }
-                        }
+                        //if (model.Type == "0" || model.Type == "2" || model.Type == "3" || model.Type == "4")
+                        //{
+                        //    if (string.IsNullOrWhiteSpace(detailModel.LotNo))
+                        //    {
+                        //        throw new Exception("褰撳墠鍗曟嵁绫诲瀷鎵规涓嶅彲涓虹┖!");
+                        //    }
+                        //}
 
                         if (TypeLot.Contains(model.Type)) 
                         {
@@ -554,29 +613,41 @@
                         //鐢熸垚鑷湁鎵规
                         if (detailModel.Id == 0 || detailModel.Id == null || string.IsNullOrWhiteSpace(detailModel.LotNo))
                         {
-                            var notice = Db.Queryable<BllArrivalNotice>().Where(m => m.IsDel == "0" && TypeLot.Contains(m.Type)).Select(m => m.ASNNo).ToList();
-                            if (string.IsNullOrWhiteSpace(maxLotNo))
+                            //var notice = Db.Queryable<BllArrivalNotice>().Where(m => m.IsDel == "0" && TypeLot.Contains(m.Type)).Select(m => m.ASNNo).ToList();
+                            //if (string.IsNullOrWhiteSpace(maxLotNo))
+                            //{
+                            //    maxLotNo = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && !string.IsNullOrWhiteSpace(m.LotNo) && notice.Contains(m.ASNNo)).Max(m => m.LotNo);
+                            //}
+                            //if (string.IsNullOrWhiteSpace(maxLotNo))
+                            //{
+                            //    maxLotNo = toDayTime.Substring(2, 6) + "0001";
+                            //}
+                            //else
+                            //{
+                            //    var lotStr = maxLotNo.Substring(0, 6);
+                            //    var timeStr = toDayTime.Substring(2, 6);
+                            //    if (lotStr == timeStr)
+                            //    {
+                            //        maxLotNo = toDayTime.Substring(2, 6) + (int.Parse(maxLotNo.Substring(6, 4)) + 1).ToString().PadLeft(4, '0');
+                            //    }
+                            //    else
+                            //    {
+                            //        maxLotNo = timeStr + "0001";
+                            //    }
+                            //}
+                            //detailModel.LotNo = maxLotNo;
+                            var maxBoxCodeStr = Db.Queryable<BllArrivalNoticeDetail>()
+                                .Where(m => m.IsDel == "0" && m.BoxCodeStr.Contains("BK") 
+                                && m.CreateTime.ToString("yyyyMM") == DateTime.Now.ToString("yyyyMM")).Max(m => m.BoxCodeStr);
+                            if (string.IsNullOrWhiteSpace(maxBoxCodeStr))
                             {
-                                maxLotNo = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && !string.IsNullOrWhiteSpace(m.LotNo) && notice.Contains(m.ASNNo)).Max(m => m.LotNo);
-                            }
-                            if (string.IsNullOrWhiteSpace(maxLotNo))
-                            {
-                                maxLotNo = toDayTime.Substring(2, 6) + "0001";
+                                maxBoxCodeStr = "BK" + toDayTime.Substring(2, 4) + "0001";
                             }
                             else
                             {
-                                var lotStr = maxLotNo.Substring(0, 6);
-                                var timeStr = toDayTime.Substring(2, 6);
-                                if (lotStr == timeStr)
-                                {
-                                    maxLotNo = toDayTime.Substring(2, 6) + (int.Parse(maxLotNo.Substring(6, 4)) + 1).ToString().PadLeft(4, '0');
-                                }
-                                else
-                                {
-                                    maxLotNo = timeStr + "0001";
-                                }
+                                maxBoxCodeStr = "BK" + (int.Parse(maxBoxCodeStr.Replace("BK", "")) + 1).ToString();
                             }
-                            detailModel.LotNo = maxLotNo;
+                            detailModel.BoxCodeStr = maxBoxCodeStr;
                         }
 
                         if (detailModel.Id == 0 || detailModel.Id == null)
@@ -595,7 +666,7 @@
                                 SkuNo = detailModel.SkuNo,
                                 SkuName = detailModel.SkuName,
                                 Standard = detailModel.Standard,
-                                LotNo = detailModel.LotNo.Trim(),
+                                LotNo = detailModel.LotNo == null ? "" : detailModel.LotNo.Trim(),
                                 LotText = detailModel.LotText,
                                 Qty = (decimal)detailModel.Qty,
                                 PackagNo = detailModel.PackagNo,
@@ -607,8 +678,11 @@
                                 IsBelt = detailModel.IsBelt,
                                 SupplierLot = detailModel.SupplierLot,
                                 Status = "0",
+                                IsSampling = "0",
+                                InspectStatus = "0",
                                 Lot1 = detailModel.Lot1,
                                 Lot2 = detailModel.Lot2,
+                                BoxCodeStr = detailModel.BoxCodeStr,
                                 UDF1 = detailModel.UDF1,
                                 UDF2 = detailModel.UDF2,
                                 UDF3 = detailModel.UDF3,
@@ -631,6 +705,7 @@
                                              && it.IsBelt == detailModel.IsBelt
                                              && it.Lot1 == detailModel.Lot1                                 // 鐢熶骇鏃ユ湡
                                              && it.Lot2 == detailModel.Lot2                                 // 杩囨湡鏃ユ湡
+                                             && it.BoxCodeStr == detailModel.BoxCodeStr
                                              && it.UDF1 == detailModel.UDF1
                                              && it.UDF2 == detailModel.UDF2
                                              && it.UDF3 == detailModel.UDF3
@@ -658,13 +733,14 @@
                             detailModel.Money = detailModel.Price * detailModel.Qty;
 
                             dbDetail.Qty = (decimal)detailModel.Qty;
-                            dbDetail.LotNo = detailModel.LotNo;
+                            dbDetail.LotNo = detailModel.LotNo == null ? "" : detailModel.LotNo.Trim();
                             dbDetail.Money = detailModel.Money;
                             dbDetail.LotText = detailModel.LotText;
                             dbDetail.SupplierLot = detailModel.SupplierLot;
                             dbDetail.IsBale = detailModel.IsBale;
                             dbDetail.Lot1 = detailModel.Lot1;
                             dbDetail.Lot2 = detailModel.Lot2;
+                            dbDetail.BoxCodeStr = detailModel.BoxCodeStr;
                             dbDetail.UDF1 = detailModel.UDF1;
                             dbDetail.UDF2 = detailModel.UDF2;
                             dbDetail.UDF3 = detailModel.UDF3;
@@ -1180,77 +1256,64 @@
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
-        public ErpModel CreateAsn(AsnInfo model)
+        public ErpModel CreateAsn(SendAsnVm model,string userName)
         {
             try
             {
                 var resultModel = new ErpModel() { Success = -1, Message = "" };
-                if (string.IsNullOrEmpty(model.AsnType))
+                if (string.IsNullOrEmpty(model.billType.ToString()))
                 {
                     resultModel.Message = "鍗曟嵁绫诲瀷涓嶅彲涓虹┖!";
                     return resultModel;
                 }
-                if (string.IsNullOrEmpty(model.Customer))
-                {
-                    resultModel.Message = "瀹㈡埛涓嶅彲涓虹┖!";
-                    return resultModel;
-                }
-                if (string.IsNullOrEmpty(model.OrderCode))
+               
+                if (string.IsNullOrEmpty(model.orderNo.ToString()))
                 {
                     resultModel.Message = "涓婃父绯荤粺鍗曞彿涓嶅彲涓虹┖!";
                     return resultModel;
                 }
-                if (model.AsnDetails.Count <= 0)
+                if (model.orderDCmdList.Count <= 0)
                 {
                     resultModel.Message = "鍏ュ簱鍗曟槑缁嗕笉鍙负绌�!";
                     return resultModel;
                 }
-
-                // 鏍规嵁瀹㈡埛缂栧彿鑾峰彇瀹㈡埛鍚嶇О
-                var CustomerModel = Db.Queryable<SysCustomer>().First(it => it.CustomerNo == model.Customer && it.IsDel == "0");
-                if (CustomerModel == null)
-                {
-                    resultModel.Message = "瀹㈡埛缂栧彿涓嶅瓨鍦�!";
-                    return resultModel;
-                }
-
                 // 鍏ュ簱鎬昏〃淇℃伅
                 string asnNo = new Common().GetMaxNo("ASN");
                 var asnModel = new BllArrivalNotice()
                 {
                     ASNNo = asnNo,
                     Status = "0",//绛夊緟鎵ц
-                    Type = model.AsnType,
-                    Origin = string.IsNullOrEmpty(model.Origin) ? "ERP" : model.Origin,
-                    CustomerNo = model.Customer,
-                    CustomerName = CustomerModel.CustomerName,
-                    OrderCode = model.OrderCode,
-                    UserName = model.Username
+                    Type = model.billType.ToString(),
+                    Origin = "SAP",
+                    CustomerNo = model.vendorNo,
+                    CustomerName = model.vendorName,
+                    OrderCode = model.orderNo.ToString(),
+                    UserName = userName
                 };
 
                 // 鍏ュ簱鏄庣粏琛ㄤ俊鎭�
                 List<BllArrivalNoticeDetail> detailModels = new List<BllArrivalNoticeDetail>();
-                foreach (AsnDetail asnDetailModel in model.AsnDetails)
+                foreach (var asnDetailModel in model.orderDCmdList)
                 {
-                    if (string.IsNullOrEmpty(asnDetailModel.SkuNo))
+                    if (string.IsNullOrEmpty(asnDetailModel.skuNo.ToString()))
                     {
                         resultModel.Message = "鐗╂枡缂栫爜涓嶅彲涓虹┖!";
                         return resultModel;
                     }
 
-                    if (asnDetailModel.Qty <= 0)
+                    if (Convert.ToDecimal(asnDetailModel.expectedQty) <= 0)
                     {
-                        resultModel.Message = "鏁伴噺搴斾负姝f暣鏁�!";
+                        resultModel.Message = "搴旀敹鐗╂枡鏁伴噺搴斿ぇ浜�0!";
                         return resultModel;
                     }
-                    if (string.IsNullOrEmpty(asnDetailModel.LotNo))
+                    if (string.IsNullOrEmpty(asnDetailModel.lotNo.ToString()))
                     {
                         resultModel.Message = "鎵规鍙蜂笉鍙负绌�!";
                         return resultModel;
                     }
 
                     // 鑾峰彇鐗╂枡璇︾粏淇℃伅
-                    var skuModel = Db.Queryable<SysMaterials>().First(it => it.SkuNo == asnDetailModel.SkuNo && it.IsDel == "0");
+                    var skuModel = Db.Queryable<SysMaterials>().First(it => it.SkuNo == asnDetailModel.skuNo.ToString() && it.IsDel == "0");
                     if (skuModel == null)
                     {
                         resultModel.Message = "涓嶅瓨鍦ㄥ綋鍓嶇墿鏂欎俊鎭�!";
@@ -1262,16 +1325,18 @@
                     var detailModel = new BllArrivalNoticeDetail()
                     {
                         ASNNo = asnNo,
-                        SkuNo = asnDetailModel.SkuNo,
+                        SkuNo = asnDetailModel.skuNo.ToString(),
                         SkuName = skuModel.SkuName,
                         Standard = skuModel.Standard,
-                        LotNo = asnDetailModel.LotNo,
+                        LotNo = asnDetailModel.lotNo.ToString(),
                         LotText = "",
-                        Qty = (decimal)asnDetailModel.Qty,
-                        FactQty=0,
-                        CompleteQty=0,
+                        Qty = Convert.ToDecimal(asnDetailModel.expectedQty),
+                        FactQty = 0,
+                        CompleteQty = 0,
                         PackagNo = skuModel.PackagNo,
-                        SupplierLot = asnDetailModel.SupplierLot,
+                        SupplierLot = asnDetailModel.supplyBatch,//鐢熶骇鏃ユ湡
+                        Lot1 = asnDetailModel.productionDate,//杩囨湡鏃ユ湡
+                        Lot2 = asnDetailModel.expireDate,
                         Status = "0",
                         IsSampling = "0",
                         InspectStatus = "0",

--
Gitblit v1.8.0