From 2c4c080fc6e90d8c92355d779372cd24ae67b02e Mon Sep 17 00:00:00 2001
From: Administrator <Administrator@DESKTOP-JIE70N9>
Date: 星期一, 26 五月 2025 16:13:51 +0800
Subject: [PATCH] 线边库标签打印

---
 Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs |  370 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 358 insertions(+), 12 deletions(-)

diff --git a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
index ad302b4..d4719d4 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
@@ -25,6 +25,10 @@
 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;
 
 namespace WMS.BLL.BllPdaServer
 {
@@ -2410,13 +2414,6 @@
         }
 
         #endregion
-
-
-
-
-
-
-
         // 鑾峰彇鍗曟嵁鍒楄〃
         public List<ArrivalNoticeDto> GetArrivalNotices(ArrivalNoticeVm model)
         {
@@ -2451,11 +2448,6 @@
                 throw ex;
             }
         }
-
-       
-
-
-        
 
         // 鏍规嵁绠辩爜鎴栨墭鐩樺彿鑾峰彇绠辨敮淇℃伅   liudl 
         public List<BoxInfoDto> GetBoxInfos(BoxInfoVm model)
@@ -6354,5 +6346,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