From 6167bf4c8fe617d9f9861585042149d48ad15dbb Mon Sep 17 00:00:00 2001
From: chengsc <11752@DESKTOP-DS49RCP>
Date: 星期二, 13 五月 2025 17:54:50 +0800
Subject: [PATCH] 修改问题,添加PDA下发出库页面

---
 Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs |  393 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 369 insertions(+), 24 deletions(-)

diff --git a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
index b0f88b6..2027c39 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
@@ -22,6 +22,9 @@
 using System.Xml.Schema;
 using ZXing.OneD;
 using System.Threading.Tasks;
+using System.Security.Policy;
+using Newtonsoft.Json; 
+using Utility.Tools;
 
 namespace WMS.BLL.BllPdaServer
 {
@@ -1720,7 +1723,7 @@
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
-        public List<BoxInfoDto> GetBindBoxInfos(BoxInfoVm model)
+        public List<BoxInfoDto> GetBindBoxInfos(BoxInfoVm model,string url)
         {
             try
             {
@@ -1728,27 +1731,307 @@
                 {
                     throw new Exception("璇锋壂鎻忓绠辨潯鐮�!");
                 }
-                string sqlString = $@"SELECT 
-                                        ASNNo,
-                                        BoxNo, 
-                                        SkuNo,
-                                        SkuName, 
-                                        LotNo,
-                                        BitBoxMark,
-                                        SUM(Qty) as Qty 
-                                      FROM BllBoxInfo 
-                                      WHERE IsDel = '0' 
-                                        AND Status='0'  
-                                        AND BoxNo = '{model.BoxNo}'
-                                      GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
-                var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString);
-
-                if (models.Count == 0)
+                if (string.IsNullOrWhiteSpace(model.ASNNo))
                 {
-                    throw new Exception("绠辩爜淇℃伅涓嶅瓨鍦�!");
+                    throw new Exception("璇烽�夋嫨鍏ュ簱鍗曞彿!");
                 }
+                var noticeList = Db.Queryable<BllArrivalNotice>().Where(m => m.IsDel == "0" && m.ASNNo == model.ASNNo).ToList();
+                if (noticeList.Count != 1)
+                {
+                    throw new Exception("鍏ュ簱鍗曞彿閲嶅!");
+                }
+                var notice = noticeList.First();
+                if (notice.Type == "0")  //鎴愬搧鍏ュ簱
+                {
+                    string sqlString = $@"SELECT 
+                                            ASNNo,
+                                            BoxNo, 
+                                            SkuNo,
+                                            SkuName, 
+                                            LotNo,
+                                            BitBoxMark,
+                                            SUM(Qty) as Qty 
+                                          FROM BllBoxInfo 
+                                          WHERE IsDel = '0' 
+                                            AND Status='0'  
+                                            AND BoxNo = '{model.BoxNo}'
+                                          GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
+                    var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString);
 
-                return models;
+                    if (models.Count != 0)
+                    {
+                        return models;
+                    }
+                    else
+                    {
+                        var boxInfo = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == model.BoxNo).ToList();
+
+                        if (boxInfo.Count == 0)
+                        {
+                            models = GetFMBindBoxInfos(model.BoxNo, url);
+                            return models;
+                        }
+                        else
+                        {
+                            if (boxInfo.Count(m => m.Status != "0") > 0)
+                            {
+                                throw new Exception("绠辩爜淇℃伅鐘舵�佷笉鏄瓑寰呮墽琛�");
+                            }
+                            return models;
+                        }
+
+
+
+                    }
+                }
+                else if (notice.Type == "1" || notice.Type == "4") //閲囪喘鍏ュ簱
+                {
+                    string sqlString = $@"SELECT 
+                                            ASNNo,
+                                            BoxNo, 
+                                            SkuNo,
+                                            SkuName, 
+                                            LotNo,
+                                            BitBoxMark,
+                                            SUM(Qty) as Qty 
+                                          FROM BllBoxInfo 
+                                          WHERE IsDel = '0' 
+                                            AND Status='0'  
+                                            AND BoxNo = '{model.BoxNo}'
+                                          GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
+                    var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString);
+
+                    if (models.Count != 0)
+                    {
+                        return models;
+                    }
+                    else
+                    {
+                        throw new Exception("娌℃湁鏌ヨ鍒扮鐮佷俊鎭�");
+                    }
+                }
+                else if (notice.Type == "3") //閫�璐у叆搴�
+                {
+                    string sqlString = $@"SELECT 
+                                            ASNNo,
+                                            BoxNo, 
+                                            SkuNo,
+                                            SkuName, 
+                                            LotNo,
+                                            BitBoxMark,
+                                            SUM(Qty) as Qty 
+                                          FROM BllBoxInfo 
+                                          WHERE IsDel = '0' 
+                                            AND Status='0'  
+                                            AND BoxNo = '{model.BoxNo}'
+                                          GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
+                    var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString);
+
+                    if (models.Count != 0)
+                    {
+                        return models;
+                    }
+                    else
+                    {
+                        sqlString = $@"SELECT 
+                                            ASNNo,
+                                            BoxNo, 
+                                            SkuNo,
+                                            SkuName, 
+                                            LotNo,
+                                            BitBoxMark,
+                                            SUM(Qty) as Qty 
+                                          FROM BllBoxInfo 
+                                          WHERE IsDel = '0' 
+                                            AND Status='0'  
+                                            AND BoxNo2 = '{model.BoxNo}'
+                                          GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
+                        models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString);
+                        if (models.Count != 0)
+                        {
+                            return models;
+                        }
+                        else
+                        {
+                            sqlString = $@"SELECT 
+                                            ASNNo,
+                                            BoxNo, 
+                                            SkuNo,
+                                            SkuName, 
+                                            LotNo,
+                                            BitBoxMark,
+                                            SUM(Qty) as Qty 
+                                          FROM BllBoxInfo 
+                                          WHERE IsDel = '0' 
+                                            AND Status='0'  
+                                            AND BoxNo3 = '{model.BoxNo}'
+                                          GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
+                            models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString);
+                            if (models.Count != 0)
+                            {
+                                return models;
+                            }
+                        }
+                    }
+
+                    #region 鑾峰彇鏈�鍚庝竴娆″嚭搴撴嫞璐т腑鐨勭鐮佷俊鎭�
+
+                    var comBox = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.BoxNo == model.BoxNo).GroupBy(m => m.ExportAllotId).Select(m => m.ExportAllotId).ToList();
+                    if (comBox.Count == 0)
+                    {
+                        comBox = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.BoxNo2 == model.BoxNo).GroupBy(m => m.ExportAllotId).Select(m => m.ExportAllotId).ToList();
+                        if (comBox.Count == 0)
+                        {
+                            comBox = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.BoxNo3 == model.BoxNo).GroupBy(m => m.ExportAllotId).Select(m => m.ExportAllotId).ToList();
+                        }
+                    }
+                    var i = 0;//寰幆娆℃暟
+                    DateTime time = DateTime.Now;
+                    var allotId = 0;
+                    foreach (var item in comBox)
+                    {
+                        var comBoxList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == item).OrderByDescending(m => m.CreateTime).First();
+                        if (i == 0)
+                        {
+                            time = comBoxList.CreateTime;
+                            allotId = comBoxList.ExportAllotId;
+                        }
+                        else if (comBoxList.CreateTime > time)
+                        {
+                            time = comBoxList.CreateTime;
+                            allotId = comBoxList.ExportAllotId;
+                        }
+                        i++;
+                    }
+                    if (allotId != 0)
+                    {
+                        var addComBox = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allotId).ToList();
+                        var addComList = addComBox.GroupBy(m => m.BoxNo).ToList();
+                        var sku = Db.Queryable<SysMaterials>().First(m => m.SkuNo == addComBox.First().SkuNo);
+                        var pNum = 0;
+                        var bNum = 0;
+                        new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum);
+                        var boxList = new List<BllBoxInfo>();
+                        foreach (var com in addComList)
+                        {
+                            //绠卞唴鎬绘暟鍜�
+                            var qtySum = addComBox.Where(m => m.BoxNo == com.Key).Sum(m => m.CompleteQty);
+                            var bitBox = "1";
+                            if (qtySum == bNum)
+                            {
+                                bitBox = "0";
+                            }
+                            foreach (var item in com)
+                            {
+                                if (item.BoxNo != model.BoxNo)
+                                {
+                                    if (item.BoxNo2 != model.BoxNo)
+                                    {
+                                        if (item.BoxNo3 != model.BoxNo)
+                                        {
+                                            continue;
+                                        }
+                                    }
+                                }
+                                var boxInfo = new BllBoxInfo()
+                                {
+                                    BoxNo = item.BoxNo,
+                                    BoxNo2 = item.BoxNo2,
+                                    BoxNo3 = item.BoxNo3,
+                                    SkuNo = item.SkuNo,
+                                    SkuName = item.SkuName,
+                                    LotNo = item.LotNo,
+                                    LotText = item.LotText,
+                                    Qty = (decimal)item.CompleteQty,
+                                    FullQty = bNum,
+                                    //ProductionTime = ,
+                                    //ExpirationTime = ,
+                                    InspectMark = "0",
+                                    InspectStatus = "0",
+                                    BitBoxMark = bitBox,
+                                    Origin = "WMS",
+                                    Status = "0",
+                                    CreateUser = 0
+                                };
+                                boxList.Add(boxInfo);
+                            }
+
+                        }
+                        Db.Insertable(boxList).ExecuteCommand();
+
+                        string sqlString2 = $@"SELECT 
+                                            ASNNo,
+                                            BoxNo, 
+                                            SkuNo,
+                                            SkuName, 
+                                            LotNo,
+                                            BitBoxMark,
+                                            SUM(Qty) as Qty 
+                                          FROM BllBoxInfo 
+                                          WHERE IsDel = '0' 
+                                            AND Status='0'  
+                                            AND BoxNo = '{model.BoxNo}'
+                                          GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
+                        var models2 = Db.Ado.SqlQuery<BoxInfoDto>(sqlString2);
+
+                        if (models2.Count != 0)
+                        {
+                            return models2;
+                        }
+                        else
+                        {
+                            sqlString2 = $@"SELECT 
+                                            ASNNo,
+                                            BoxNo, 
+                                            SkuNo,
+                                            SkuName, 
+                                            LotNo,
+                                            BitBoxMark,
+                                            SUM(Qty) as Qty 
+                                          FROM BllBoxInfo 
+                                          WHERE IsDel = '0' 
+                                            AND Status='0'  
+                                            AND BoxNo2 = '{model.BoxNo}'
+                                          GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
+                            models2 = Db.Ado.SqlQuery<BoxInfoDto>(sqlString2);
+                            if (models2.Count != 0)
+                            {
+                                return models2;
+                            }
+                            else
+                            {
+                                sqlString2 = $@"SELECT 
+                                            ASNNo,
+                                            BoxNo, 
+                                            SkuNo,
+                                            SkuName, 
+                                            LotNo,
+                                            BitBoxMark,
+                                            SUM(Qty) as Qty 
+                                          FROM BllBoxInfo 
+                                          WHERE IsDel = '0' 
+                                            AND Status='0'  
+                                            AND BoxNo3 = '{model.BoxNo}'
+                                          GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
+                                models2 = Db.Ado.SqlQuery<BoxInfoDto>(sqlString2);
+                                if (models2.Count != 0)
+                                {
+                                    return models2;
+                                }
+                            }
+                        }
+
+
+                    }
+
+                    throw new Exception("绠辩爜淇℃伅涓嶅瓨鍦�!");
+                    #endregion
+
+                }
+                else
+                {
+                    throw new Exception("鍗曟嵁绫诲瀷閿欒");
+                }
             }
             catch (Exception ex)
             {
@@ -1761,21 +2044,83 @@
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
-        public List<BoxInfoDto> GetFMBindBoxInfos(string boxno)
+        public List<BoxInfoDto> GetFMBindBoxInfos(string boxno,string url)
         {
             try
             {
                 #region 绠辩爜璇锋眰鎺ュ彛锛屾寮忕郴缁熸斁寮�
-                /*var jsonData = JsonConvert.SerializeObject(boxno);
+                var data = new
+                {
+                    BoxCode = boxno
+                };
+                var jsonData = JsonConvert.SerializeObject(data);
 
                 var response = HttpHelper.DoPost(url, jsonData, "绠辩爜淇℃伅璇锋眰", "FM");
 
-                var obj = JsonConvert.DeserializeObject<ErpModel>(response);//瑙f瀽杩斿洖鏁版嵁
-                if (obj.Success != 0)
+                var obj = JsonConvert.DeserializeObject<FumaGetBoxModel>(response);//瑙f瀽杩斿洖鏁版嵁
+                if (obj.Success != "0")
                 {
                     throw new Exception("璇锋眰澶辫触" + obj.Message);
-                }*/
+                }
                 #endregion
+                var sku = Db.Queryable<SysMaterials>().First(m => m.SkuNo == obj.Product.SkuNo);
+                var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺 
+                var bNum = 0;//绠辩爜鐗╁搧鏁伴噺 
+                if (sku == null)
+                {
+                    throw new Exception($"鏈煡璇㈠埌鐗╂枡{obj.Product.SkuNo}淇℃伅");
+                }
+                new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum);
+                if (pNum == 0 || bNum == 0)
+                {
+                    throw new Exception($"{sku.SkuNo}鐗╁搧鍖呰鏈壘鍒帮紒");
+                }
+
+                var boxList = new List<BllBoxInfo>();
+                var comTime = DateTime.Now;
+                //娣诲姞绠辩爜淇℃伅
+                foreach (var box in obj.Product.BoxInfoList)
+                {
+                    foreach (var box2 in box.BoxInfo2List)
+                    {
+                        foreach (var box3 in box2.BoxInfo3List)
+                        {
+                            var boxInfo = new BllBoxInfo()
+                            {
+                                BoxNo = box.BoxNo,
+                                BoxNo2 = box2.BoxNo2,
+                                BoxNo3 = box3.BoxNo3,
+                                Qty = box3.Qty,
+                                BitBoxMark = box.BitBoxMark,
+
+                                ASNNo = "",
+                                //ASNDetailNo = noticeDetail.Id,
+                                OrderCode = "",//notice.OrderCode
+                                //BindNo = bindId,
+                                //PalletNo = model.PallNo,
+                                FullQty = bNum,
+                                Status = "2",
+                                SkuNo = sku.SkuNo,
+                                SkuName = sku.SkuName,
+                                LotNo = obj.Product.LotNo,
+                                LotText = obj.Product.LotText,
+                                ProductionTime = DateTime.Parse(obj.Product.ProductionTime),
+                                ExpirationTime = DateTime.Parse(obj.Product.ExpirationTime),
+                                //CompleteTime = "",
+                                InspectMark = "0",
+                                InspectStatus = "0",
+                                Origin = "璧嬬爜",
+                                CreateTime = comTime,
+                                CreateUser = 0
+                            };
+                            boxList.Add(boxInfo);
+                        }
+
+                    }
+                }
+                Db.Fastest<BllBoxInfo>().BulkCopy(boxList);
+
+
                 string sqlString = $@"SELECT 
                                         ASNNo,
                                         BoxNo, 

--
Gitblit v1.8.0