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/BllPdaServer/PdaAsnServer.cs |  557 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 523 insertions(+), 34 deletions(-)

diff --git a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
index d2c75d7..bae79e7 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
@@ -25,6 +25,11 @@
 using System.Security.Policy;
 using Newtonsoft.Json; 
 using Utility.Tools;
+using Model.ModelDto.SysDto;
+using Model.ModelVm.SysVm;
+using System.Security.Cryptography.X509Certificates;
+using AutoMapper.Configuration.Annotations;
+using Utility;
 
 namespace WMS.BLL.BllPdaServer
 {
@@ -73,14 +78,15 @@
                 else
                 {
                     //浠庣墿鏂欏悕绉�-鎵规涓彇鍑烘壒娆�
-                    int indexOfDash = model.LotNo.IndexOf("-");
+                    int indexOfDash = model.LotNo.IndexOf("=>");
                     if (indexOfDash != -1)
                     {
-                        model.LotNo = model.LotNo.Substring(indexOfDash + 1);
+                        model.LotNo = model.LotNo.Substring(indexOfDash + 2);
                     }
                     else
                     {
-                        throw new Exception("鐗╂枡-鎵规涓嶅彲涓虹┖!");
+                        model.LotNo = "";
+                        //throw new Exception("鐗╂枡-鎵规涓嶅彲涓虹┖!");
                     }
                 }
 
@@ -527,7 +533,7 @@
                     #endregion
 
                     #region 璐ㄦ璇烽獙
-                    if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1")
+                    if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1" && sku.IsControlled != "1")
                     {
                         var qualityRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo && m.SupplierLot == bind.SupplierLot);
                         if (qualityRequest == null)
@@ -1043,7 +1049,7 @@
                         #endregion
 
                         #region 璐ㄦ璇烽獙
-                        if ((arrNotice.Type == "1" || arrNotice.Type == "4" || arrNotice.Type == "5") && sku.IsInspect != "1")
+                        if ((arrNotice.Type == "1" || arrNotice.Type == "4" || arrNotice.Type == "5") && sku.IsInspect != "1" && sku.IsControlled != "1")
                         {
                             var qualityRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo && m.SupplierLot == bind.SupplierLot);
                             if (qualityRequest == null)
@@ -1132,14 +1138,15 @@
                 else
                 {
                     //浠庣墿鏂欏悕绉�-鎵规涓彇鍑烘壒娆�
-                    int indexOfDash = model.LotNo.IndexOf("-");
+                    int indexOfDash = model.LotNo.IndexOf("=>");
                     if (indexOfDash != -1)
                     {
-                        model.LotNo = model.LotNo.Substring(indexOfDash + 1);
+                        model.LotNo = model.LotNo.Substring(indexOfDash + 2);
                     }
                     else
                     {
-                        throw new Exception("鐗╂枡鎵规涓嶅彲涓虹┖!");
+                        model.LotNo = "";
+                        //throw new Exception("鐗╂枡鎵规涓嶅彲涓虹┖!");
                     }
                 }
 
@@ -1493,7 +1500,7 @@
                 #endregion
 
                 #region 璐ㄦ璇烽獙
-                if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1")
+                if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1" && sku.IsControlled != "1")
                 {
                     var qualityRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo && m.SupplierLot == bind.SupplierLot);
                     if (qualityRequest == null)
@@ -2222,15 +2229,17 @@
 
                 };
                 //鑾峰彇鐘舵�佹槸鏈粍鎵樼殑鏍囩淇℃伅
-                var models = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo && m.ASNDetailNo == asnDetailId ).GroupBy(m=> new { m.ProductionTime,m.ExpirationTime }).Select(m=>new { m.ProductionTime ,m.ExpirationTime}).OrderBy(m=>m.ProductionTime).ToList();//&& m.Status == "0"
+                var models = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo && m.ASNDetailNo == asnDetailId && m.Status == "0")
+                    .GroupBy(m=> new { m.ProductionTime,m.ExpirationTime })
+                    .Select(m=>new { m.ProductionTime ,m.ExpirationTime}).OrderBy(m=>m.ProductionTime).ToList();//&& m.Status == "0"
                 foreach (var item in models)
                 {
-                    var boxNoList = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo && m.ASNDetailNo == asnDetailId && m.ProductionTime == item.ProductionTime).Select(m => m.BoxNo).ToList();
+                    var boxNoList = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.Status == "0" && m.ASNNo == asnNo && m.ASNDetailNo == asnDetailId && m.ProductionTime == item.ProductionTime).Select(m => m.BoxNo).ToList();
                     if (boxNoList.Count > 0)
                     {
                         data.BoxNoList = boxNoList;
-                        data.Date1 = item.ProductionTime.ToString();
-                        data.Date2 = item.ExpirationTime.ToString();
+                        data.Date1 = item.ProductionTime == null ? "" : Convert.ToDateTime(item.ProductionTime).ToString("yyyy-MM-dd");
+                        data.Date2 = item.ExpirationTime == null ? "" : Convert.ToDateTime(item.ExpirationTime).ToString("yyyy-MM-dd");
 
                         break;
                     }
@@ -2444,7 +2453,7 @@
             }
         }
 
-
+        // 杞﹂棿缁戝畾鎵樼洏-璐存爣
         public void ChejianIn(string palletNo,string boxNo,decimal qty,string areaNo,int userId)
         {
             try
@@ -2635,6 +2644,22 @@
                         //娣诲姞搴撳瓨绠辩爜鏄庣粏
                         Db.Insertable(box2).ExecuteCommand();
                         #endregion
+
+                        #region  鎻掑叆杞﹂棿鍑哄叆搴撹褰曡〃
+                        //鎻掑叆鍏ュ簱鏃ュ織
+                        var _log = new LogWorkShop
+                        {
+                            Type = "0",//绫诲瀷锛�0锛氬叆搴� 1锛氬嚭搴�
+                            PalletNo = palletNo,
+                            BoxNo=box.BoxNo,
+                            LotNo=box.LotNo,
+                            SkuNo=box.SkuNo,
+                            SkuName=box.SkuName,
+                            Qty=box.Qty
+                        };
+                        //娣诲姞搴撳瓨绠辩爜鏄庣粏
+                        Db.Insertable(_log).ExecuteCommand();
+                        #endregion
                     }
                     if (boxFullQty > bNum)
                     {
@@ -2643,7 +2668,6 @@
                 }
                 //鏇存敼绠辨敮鍏崇郴琛ㄤ俊鎭�
                 Db.Updateable(boxInfoList).ExecuteCommand();
-
 
                 #region 搴撳瓨
                 var dataStock = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == boxInfoOne.LotNo);
@@ -2673,11 +2697,12 @@
                 }
                 #endregion
 
+                
                 // 鏇存敼鎵樼洏浣跨敤鐘舵��
                 var sqlStr = $"update SysPallets set Status = '1' where PalletNo = '{palletNo}';";
                 ////娣诲姞鎵樼洏璁板綍琛ㄦ暟鎹�
                 //sqlStr += $"insert into LogPalletTrack values('{palletNo}','{boxNo}','缁勭洏','0',getDate(),{userId},NULL,NULL);";
-                //Db.Ado.ExecuteCommand(sqlStr);
+                Db.Ado.ExecuteCommand(sqlStr);
                 new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "杞﹂棿鍏ュ簱", boxNo, "娣诲姞", $"娣诲姞浜嗘墭鐩樼爜涓猴細{palletNo}銆亄msgStr}鐨勫叆搴撲俊鎭�", userId);
 
                 //鎻愪氦浜嬪姟
@@ -2743,8 +2768,6 @@
                 new Common().GetPackQtyInfo(pack.PackagNo, ref pNum, ref bNum);
 
                 #endregion
-
-                 
 
                 #region 搴撳瓨鏄庣粏
 
@@ -2819,7 +2842,6 @@
                 // 鏇存敼绠辨敮鍏崇郴琛�
                 decimal factQty = 0.00m;//鎵樼洏鎬绘暟閲�
 
-
                 #region 搴撳瓨
                 var dataStock = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == skuInfo.SkuNo && m.LotNo == lotNo);
                 if (dataStock != null)
@@ -2848,6 +2870,21 @@
                 }
                 #endregion
 
+                #region
+                //鎻掑叆鍏ュ簱鏃ュ織
+                var _log = new LogWorkShop
+                {
+                    Type = "0",//绫诲瀷锛�0锛氬叆搴� 1锛氬嚭搴�
+                    PalletNo = palletNo,
+                    BoxNo = "",
+                    LotNo = lotNo,
+                    SkuNo = sd1.SkuNo,
+                    SkuName = sd1.SkuName,
+                    Qty = qty
+                };
+                //娣诲姞搴撳瓨绠辩爜鏄庣粏
+                Db.Insertable(_log).ExecuteCommand();
+                #endregion
                 // 鏇存敼鎵樼洏浣跨敤鐘舵��
                 var sqlStr = $"update SysPallets set Status = '1' where PalletNo = '{palletNo}';";
                 ////娣诲姞鎵樼洏璁板綍琛ㄦ暟鎹�
@@ -2868,13 +2905,6 @@
         }
 
         #endregion
-
-
-
-
-
-
-
         // 鑾峰彇鍗曟嵁鍒楄〃
         public List<ArrivalNoticeDto> GetArrivalNotices(ArrivalNoticeVm model)
         {
@@ -2909,11 +2939,6 @@
                 throw ex;
             }
         }
-
-       
-
-
-        
 
         // 鏍规嵁绠辩爜鎴栨墭鐩樺彿鑾峰彇绠辨敮淇℃伅   liudl 
         public List<BoxInfoDto> GetBoxInfos(BoxInfoVm model)
@@ -5970,7 +5995,7 @@
                 #endregion
 
                 #region 璐ㄦ璇烽獙
-                if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1")
+                if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1"  && sku.IsControlled != "1")
                 {
                     var qualityRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo && m.SupplierLot == bind.SupplierLot);
                     if (qualityRequest == null)
@@ -6049,9 +6074,12 @@
                 {
                     foreach (var item in stockDetail)
                     {
-                        if (!string.IsNullOrEmpty(item.WareHouseNo))
+                        if (!string.IsNullOrEmpty(item.WareHouseNo) && !string.IsNullOrEmpty(item.AreaNo))
                         {
-                            throw new Exception("璇ユ墭鐩樻湭鍦ㄥ簱澶栵紝璇锋牳鏌�!");
+                            if (item.AreaNo != "B06" && item.AreaNo != "B07" && item.AreaNo != "B09") 
+                            {
+                                throw new Exception("璇ユ墭鐩樻湭鍦ㄥ簱澶栵紝璇锋牳鏌�!");
+                            }
                         }
                     }
                     iscount = 1; //鍥炴祦鍏ュ簱
@@ -6488,6 +6516,113 @@
         }
         #endregion
 
+        #region 浠撳簱鏀惰揣
+        /// <summary>
+        /// 浠撳簱纭鏀惰揣
+        /// </summary>
+        /// <param name="model"></param>
+        public void ConfirmTakeOf(string palletNo,int userId)
+        {
+            try
+            {
+                #region 楠岃瘉淇℃伅
+                if (string.IsNullOrEmpty(palletNo))
+                {
+                    throw new Exception("鎵樼洏鏉$爜涓嶈兘涓虹┖!");
+                }
+
+                //鑾峰彇鎵樼洏淇℃伅
+                var pallet = Db.Queryable<SysPallets>().First(w => w.IsDel == "0" && w.PalletNo == palletNo);
+                //楠岃瘉鎵樼洏淇℃伅鏄惁涓虹┖
+                if (pallet == null)
+                {
+                    throw new Exception("鎵樼洏淇℃伅涓嶅瓨鍦紝璇锋鏌�!");
+                }
+                if (pallet.Status == "0")
+                {
+                    throw new Exception("鎵樼洏鏈娇鐢紝璇锋鏌�!");
+                }
+                #endregion
+
+                //鑾峰彇搴撳瓨鏄庣粏淇℃伅
+                var stockDetailList = Db.Queryable<DataStockDetail>().Where(s => s.IsDel == "0" && s.PalletNo == palletNo).ToList();
+                //楠岃瘉搴撳瓨鏄庣粏淇℃伅鏄惁瀛樺湪
+                if (stockDetailList.Count<=0)
+                {
+                    throw new Exception("搴撳瓨鏄庣粏涓嶅瓨鍦紝璇锋鏌ュ簱瀛樹俊鎭�!");
+                }
+                //寮�鍚簨鍔�
+                Db.BeginTran();
+
+                foreach (var item in stockDetailList)
+                {
+                    if (item.AreaNo != "B06" && item.AreaNo != "B07" && item.AreaNo != "B09")
+                    {
+                        throw new Exception("璇ユ墭鐩橀潪绾胯竟鍥炲簱鎵樼洏!");
+                    }
+                    //搴撳瓨鎬昏〃
+                    var stock = Db.Queryable<DataStock>().First(w => w.IsDel == "0" && w.SkuNo == item.SkuNo && w.LotNo == item.LotNo);
+                    if (stock == null)
+                    {
+                        throw new Exception($"鏈煡璇㈠埌璇ユ墭鐩樹笂鐗╂枡缂栫爜涓�:{item.SkuNo}鐨勫簱瀛樹俊鎭�!");
+                    }
+
+                    var boxInfoList = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.PalletNo == palletNo && w.SkuNo == item.SkuNo && w.LotNo == item.LotNo).ToList();
+                    if (boxInfoList.Count > 0)
+                    {
+                        foreach (var box in boxInfoList)
+                        {
+                            var bllBox = Db.Queryable<BllBoxInfo>().First(w => w.IsDel == "0" && w.Status != "0" && w.BoxNo == box.BoxNo);
+                            if (bllBox != null)
+                            {
+                                bllBox.Status = "0";
+                                bllBox.ASNDetailNo = null;
+                                bllBox.BindNo = null;
+                                bllBox.PalletNo = "";
+                                //鏇存柊绠辨敮鏄庣粏琛�
+                                Db.Updateable(bllBox).ExecuteCommand();
+                            }
+                        }
+                        //鍒犻櫎搴撳瓨绠辩爜淇℃伅
+                        Db.Deleteable(boxInfoList).ExecuteCommand();
+                    }
+                    
+                    //鍒犻櫎鎴栦慨鏀瑰簱瀛�
+                    stock.Qty -= (decimal)item.Qty;
+                    if (stock.Qty <= 0)
+                    {
+                        Db.Deleteable(stock).ExecuteCommand();
+                    }
+                    else
+                    {
+                        Db.Updateable(stock).ExecuteCommand();
+                    }
+                    //鍒犻櫎搴撳瓨鏄庣粏
+                    Db.Deleteable(item).ExecuteCommand();
+
+                    //鍒ゆ柇鎵樼洏涓婅繕鏈夋病鏈夊叾浠栫墿鏂�
+                    var palletData = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo && w.Id != item.Id);
+                    if (palletData == null)
+                    {
+                        pallet.Status = "0";
+                        Db.Updateable(pallet).ExecuteCommand();
+                    }
+                }
+
+                new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "浠撳簱鏀惰揣", palletNo, "瀹屾垚", $"鍦≒DA涓婂畬鎴愭墭鐩樼爜涓猴細{palletNo}鐨勪粨搴撴敹璐ф搷浣�", userId);
+
+                //鎻愪氦浜嬪姟
+                Db.CommitTran();
+            }
+            catch (Exception ex)
+            {
+                //鍥炴粴浜嬪姟
+                Db.RollbackTran();
+                throw ex;
+            }
+        }
+        #endregion
+
         #region JC23鍙栨牱涓氬姟鎺ュ彛
 
         //鑾峰彇鏈粍鎵樻垨宸茬粍鎵樼殑绠辩爜绾у埆
@@ -6812,5 +6947,359 @@
 
         #endregion
 
+        #region 绾胯竟鏍囩
+        /// <summary>
+        /// 鏍规嵁鐗╂枡缂栫爜銆佸悕绉拌幏鍙栫墿鏂欎俊鎭�
+        /// </summary>
+        /// <param name="model">缂栫爜 鍚嶇О</param>
+        /// <returns>鐗╂枡璇︾粏淇℃伅</returns>
+        public MaterialsDto GetSkuInfo(GetMaterialsVm model) 
+        {
+            try
+            {
+                if (string.IsNullOrEmpty(model.SkuNo) && string.IsNullOrEmpty(model.SkuName))
+                {
+                    throw new Exception("璇疯緭鍏ョ墿鏂欑紪鐮佹垨鐗╂枡鍚嶇О!");
+                }
+
+                var skuModels = Db.Queryable<SysMaterials>().Where(m => (m.SkuNo == model.SkuNo || m.SkuName == model.SkuName) && m.IsDel == "0").Select< MaterialsDto>().ToList();
+                if (skuModels.Count <= 0) 
+                {
+                    throw new Exception("鐗╂枡涓嶅瓨鍦紒");
+                }
+
+                return skuModels.First();
+            }
+            catch (Exception ex)
+            {
+                throw ex;
+            }
+        }
+
+        /// <summary>
+        /// 鐢熸垚鏉$爜鏍囩
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        /// <exception cref="Exception"></exception>
+        public List<BllBoxInfo> AddLabels(LabelsVm model) 
+        {
+            try
+            {
+                if (decimal.TryParse(model.SkuNum, out decimal skuQty))
+                {
+                    if (skuQty <= 0) 
+                    {
+                        throw new Exception("绠卞唴鏁伴噺涓嶈兘灏忎簬绛変簬0");
+                    }
+                }
+                else 
+                {
+                    throw new Exception("绠卞唴鏁伴噺璇疯緭鍏ユ暟瀛楋紒");
+                }
+
+                // 楠岃瘉鐗╂枡淇℃伅鏄惁瀛樺湪
+                var skuModels = Db.Queryable<SysMaterials>().Where(m => (m.SkuNo == model.SkuNo || m.SkuName == model.SkuName) && m.IsDel == "0").Select<MaterialsDto>().ToList();
+                if (skuModels.Count <= 0)
+                {
+                    throw new Exception("鐗╂枡涓嶅瓨鍦紒");
+                }
+
+
+                #region 
+                var skuModel = skuModels.First();
+                var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == skuModel.PackagNo);
+                if (pack == null)
+                {
+                    throw new Exception("鏈煡璇㈠埌褰撳墠鐗╂枡鐨勫寘瑁呬俊鎭�");
+                }
+
+                var packStr = "";
+                if (!string.IsNullOrWhiteSpace(pack.L1Name))
+                {
+                    packStr += pack.L1Num + "/" + pack.L1Name;
+                }
+                if (!string.IsNullOrWhiteSpace(pack.L2Name))
+                {
+                    packStr += "-" + pack.L2Num + "/" + pack.L2Name;
+                }
+                if (!string.IsNullOrWhiteSpace(pack.L3Name))
+                {
+                    packStr += "-" + pack.L3Num + "/" + pack.L3Name;
+                }
+                if (!string.IsNullOrWhiteSpace(pack.L4Name))
+                {
+                    packStr += "-" + pack.L4Num + "/" + pack.L4Name;
+                }
+                if (!string.IsNullOrWhiteSpace(pack.L5Name))
+                {
+                    packStr += "-" + pack.L5Num + "/" + pack.L5Name;
+                }
+                #endregion
+
+                #region 鍖呰鏌ヨ
+
+                var bNum = 0;//绠辩墿鍝佹暟閲�
+                var zNum = 0;//鏀墿鍝佹暟閲�
+                var packLevel = 0;
+
+                if (pack.L2Num.HasValue)
+                {
+                    if (pack.L2Name != "鎵�")
+                    {
+                        packLevel = 1;//JC34椤圭洰鍙湁涓�绾ф爣绛�
+                        bNum = Convert.ToInt32(pack.L2Num);
+                    }
+                }
+                if (pack.L1Num.HasValue)
+                {
+                    if (packLevel == 0)
+                    {
+                        packLevel = 1;
+                        bNum = Convert.ToInt32(pack.L1Num);
+                    }
+                    zNum = Convert.ToInt32(pack.L1Num);
+                }
+
+                if (packLevel < 1)//鍖呰绛夌骇灏忎簬1锛屾寜鐓�1绾ф爣绛炬墦鍗�
+                {
+                    throw new Exception("鍖呰淇℃伅鏈夎锛屽皬浜庝竴绾�");
+                }
+
+                if (skuQty > bNum * 5)
+                {
+                    throw new Exception("绠卞唴鏁伴噺澶т簬鍖呰5鍊嶏紝涓嶅彲鎵撳嵃");
+                }
+                #endregion
+                var modelList = new List<BllBoxInfo>();
+                var label = Db.Queryable<BllBoxInfo>().Where(m => m.LotNo == model.LotNo && m.SkuNo == model.SkuNo && m.IsDel == "0").ToList();
+
+                Db.BeginTran();
+                if (packLevel == 1)
+                {
+                    #region 涓�绾у寘瑁�
+                    int labelNum = 1; 
+                    labelNum = int.Parse(Math.Ceiling(skuQty / bNum).ToString());//鏍囩鏁伴噺
+
+
+                    #region 鑾峰彇/鐢熸垚鎵规鍙�
+                    string maxLotNoStr = ""; //鎵规鍙�
+                    string maxBoxCode = ""; //绠辩爜鍙�
+
+                    maxLotNoStr = model.LotNo;
+                    maxBoxCode = label.Where(m => m.LotNo == maxLotNoStr).Max(a => a.BoxNo);
+                    #endregion
+
+                    for (int i = 1; i <= labelNum; i++)
+                    {
+                        decimal boxQty = 0;
+                        if (i == labelNum)
+                        {
+                            // 鏈�鍚庝竴涓潯鐮�
+                            var s = bNum * (i - 1);
+                            if (bNum > skuQty - s)
+                            {
+                                boxQty = skuQty - s;// 鏁伴噺
+                            }
+                            else
+                            {
+                                boxQty = bNum;// 鏁伴噺
+                            }
+                        }
+                        else
+                        {
+                            boxQty = bNum;         // 鏁伴噺
+                        }
+
+                        //鑾峰彇绠辩爜
+                        if (string.IsNullOrWhiteSpace(maxBoxCode))
+                        {
+                            var str = "B" + maxLotNoStr + "000001"; //鎵瑰彿+ 娴佹按  B 230201 0001  000001
+                            maxBoxCode = str;
+                        }
+                        else
+                        {
+                            maxBoxCode = maxBoxCode.Substring(0, maxBoxCode.Length - 6) + (int.Parse(maxBoxCode.Substring(maxBoxCode.Length - 6, 6)) + 1).ToString().PadLeft(6, '0');
+                        }
+
+                        // 灏嗘潯鐮佷繚瀛樺埌鍘熸枡鏉$爜琛�
+                        var labelModel = new BllBoxInfo()
+                        {
+                            BoxNo = maxBoxCode,
+                            Qty = boxQty,
+                            FullQty = bNum,
+                            Status = "0",
+                            SkuNo = model.SkuNo,
+                            SkuName = model.SkuName,
+                            LotNo = maxLotNoStr,
+                            Standard = skuModel.Standard,
+                            PackageStandard = packStr,
+                            InspectMark = "0",
+                            BitBoxMark = bNum > boxQty ? "1" : "0",
+                            InspectStatus = "0",
+
+                            ProductionTime = DateTime.Parse(model.TimeFrom),
+                            StoreTime = DateTime.Parse(model.TimeEnd),
+                            ExpirationTime = DateTime.Parse(model.TimeEnd),
+
+                            Origin = "WMS鐢熸垚",
+                            CreateUser = (int)model.userId,
+                            CreateTime = DateTime.Now,
+                        };
+
+                        Db.Insertable(labelModel).ExecuteCommand();
+                        modelList.Add(labelModel);
+                    }
+
+                    #endregion
+                }
+                else //(packLevel == 2)
+                {
+                    #region 浜岀骇鍖呰
+
+                    if (skuQty > bNum * 5)
+                    {
+                        throw new Exception("绠卞唴鏁伴噺澶т簬鍖呰5鍊嶏紝涓嶅彲鎵撳嵃");
+                    }
+
+                    var qty2 = skuQty;
+                    int labelNum2 = 1; //鐢熶骇绠辨潯鐮佹暟閲�
+
+                    labelNum2 = int.Parse(Math.Ceiling(qty2 / bNum).ToString());
+
+                    var ss = bNum / zNum; //姣忕鏀爣绛炬暟閲�
+                    var labelNumZ2 = Math.Ceiling((decimal)ss);
+
+                    #region 鑾峰彇/鐢熸垚鎵规鍙�
+
+                    string maxCodestr2 = "";    //鎵规
+                    string maxboxcode2 = "";    //绠辩爜
+                    string maxboxcode3 = "";    //鏀爜
+
+                    maxCodestr2 = model.LotNo;
+                    maxboxcode2 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo);
+                    maxboxcode3 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo3);//鏀彿
+                    #endregion
+
+                    for (int i = 1; i <= labelNum2; i++)//绠辩爜鏍囩
+                    {
+                        //绠卞唴鏁伴噺
+                        decimal boxQty = 0;
+                        if (i == labelNum2)
+                        {
+                            // 鏈�鍚庝竴涓潯鐮�
+                            var s = bNum * (i - 1);
+                            if (bNum > qty2 - s)
+                            {
+                                boxQty = qty2 - s;// 鏁伴噺
+                            }
+                            else
+                            {
+                                boxQty = bNum;// 鏁伴噺
+                            }
+                        }
+                        else
+                        {
+                            boxQty = bNum;                                                         // 鏁伴噺
+                        }
+
+                        //鑾峰彇绠辩爜
+                        if (string.IsNullOrWhiteSpace(maxboxcode2))
+                        {
+                            maxboxcode2 = "B" + maxCodestr2 + "000001"; // 绠卞彿     鎵瑰彿+绗嚑绠�
+                        }
+                        else
+                        {
+                            maxboxcode2 = maxboxcode2.Substring(0, 11) + (int.Parse(maxboxcode2.Substring(11, 6)) + 1).ToString().PadLeft(6, '0');
+                        }
+                        //鑾峰彇绠卞唴鏀爣绛炬暟閲�
+                        if (i == labelNum2)
+                        {
+                            var isGo2 = false;
+                            var sl = 0;
+                            for (int j = 1; j <= labelNumZ2; j++)
+                            {
+                                if (isGo2)
+                                {
+                                    break;
+                                }
+                                var s = bNum * (i - 1);
+                                var s2 = zNum * (j - 1);
+                                if (zNum >= qty2 - s - s2)
+                                {
+                                    isGo2 = true;
+                                }
+                                sl++;
+                            }
+                            labelNumZ2 = sl;
+                        }
+
+                        for (int j = 1; j <= labelNumZ2; j++)//鏈�灏忓崟浣嶆爣绛�
+                        {
+
+                            decimal d = zNum;
+                            if (i == labelNum2)
+                            {
+                                var s = bNum * (i - 1);
+                                var s2 = zNum * (j - 1);
+                                if (zNum >= qty2 - s - s2)
+                                {
+                                    d = qty2 - s - s2;    // 鏁伴噺
+                                }
+                            }
+
+                            if (string.IsNullOrWhiteSpace(maxboxcode3))
+                            {
+                                maxboxcode3 = "Z" + maxCodestr2 + "0001"; // 鏀彿     鎵瑰彿+绗嚑绠� 
+                            }
+                            else
+                            {
+                                maxboxcode3 = maxboxcode3.Substring(0, 11) + (int.Parse(maxboxcode3.Substring(11, 4)) + 1).ToString().PadLeft(4, '0');
+                            }
+
+                            // 灏嗘潯鐮佷繚瀛樺埌鍘熸枡鏉$爜琛�
+                            var labelModel = new BllBoxInfo()
+                            {
+                                BoxNo = maxboxcode2,
+                                BoxNo3 = maxboxcode3,
+                                Qty = d,
+                                FullQty = bNum,
+                                Status = "0",
+                                SkuNo = model.SkuNo,
+                                SkuName = skuModel.SkuName,
+                                LotNo = maxCodestr2,
+                                Standard = skuModel.Standard,
+                                PackageStandard = packStr,
+                                InspectMark = "0",
+                                BitBoxMark = bNum > boxQty ? "1" : "0",
+                                InspectStatus = "0",
+
+                                ProductionTime = DateTime.Parse(model.TimeFrom),
+                                StoreTime = DateTime.Parse(model.TimeEnd),
+                                ExpirationTime = DateTime.Parse(model.TimeEnd),
+
+                                Origin = "WMS鐢熸垚",
+                                CreateUser = (int)model.userId,
+                                CreateTime = DateTime.Now,
+                            };
+
+                            Db.Insertable(labelModel).ExecuteCommand();
+                            modelList.Add(labelModel);
+                        }
+                    }
+                    #endregion
+                }
+                Db.CommitTran();
+
+                return modelList;
+            }
+            catch (Exception ex)
+            {
+                Db.RollbackTran();
+                throw new Exception(ex.Message);
+            }
+        }
+        #endregion
+
     }
 }

--
Gitblit v1.8.0