From b9f7560cbe0e562a40e9515a0559a3e951f0fee6 Mon Sep 17 00:00:00 2001
From: zhaowc <526854230@qq.com>
Date: 星期一, 07 四月 2025 09:16:01 +0800
Subject: [PATCH] 问题修改

---
 Wms/WMS.BLL/DataServer/StockServer.cs |  892 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 879 insertions(+), 13 deletions(-)

diff --git a/Wms/WMS.BLL/DataServer/StockServer.cs b/Wms/WMS.BLL/DataServer/StockServer.cs
index 76b0595..9c802dc 100644
--- a/Wms/WMS.BLL/DataServer/StockServer.cs
+++ b/Wms/WMS.BLL/DataServer/StockServer.cs
@@ -4,14 +4,24 @@
 using System.Linq;
 using System.Runtime.Intrinsics.X86;
 using System.Security.Claims;
+using System.Security.Policy;
 using System.Text;
+using Model.InterFaceModel;
 using Model.ModelDto;
 using Model.ModelDto.DataDto;
+using Model.ModelDto.LogDto;
+using Model.ModelDto.SysDto;
 using Model.ModelVm.DataVm;
+using Newtonsoft.Json;
 using SqlSugar;
+using Utility.Tools;
+using WMS.BLL.LogServer;
 using WMS.DAL;
+using WMS.Entity.BllAsnEntity;
+using WMS.Entity.BllSoEntity;
 using WMS.Entity.Context;
 using WMS.Entity.DataEntity;
+using WMS.Entity.LogEntity;
 using WMS.Entity.SysEntity;
 using WMS.IBLL.IDataServer;
 
@@ -80,9 +90,27 @@
 
             //搴撳瓨鎬婚噺
             List<MateDataStockDto> StockListDto = new List<MateDataStockDto>();
+            DataStockDetail detail = new DataStockDetail();
 
             foreach (var item in StockList)
             {
+
+                detail = Db.Queryable<DataStockDetail>().First(w => w.SkuNo == item.SkuNo && w.LotNo == item.LotNo && w.IsDel == "0");
+                if (detail != null)
+                {
+                    if (!string.IsNullOrEmpty(detail.ProductionTime.ToString()))
+                    {
+                        item.ProductionTime = (DateTime)detail.ProductionTime;
+                    }
+                    if (!string.IsNullOrEmpty(detail.ExpirationTime.ToString()))
+                    {
+                        item.ExpirationTime = (DateTime)detail.ExpirationTime;
+                    }
+                    item.InspectStatus = detail.InspectStatus;
+                }
+                
+
+                
                 StockListDto.Add(item);
                 ////鍒ゆ柇搴撳瓨鎬婚噺鏄惁鎷ユ湁鐗╂枡
                 //if (StockListDto.Count > 0)
@@ -129,16 +157,23 @@
         /// <param name="palletNo">鎵樼洏鏉$爜</param>
         /// <param name="status">搴撳瓨鐘舵��</param>
         /// <param name="inspectStatus">璐ㄦ鐘舵��</param>
+        /// <param name="houseNo">鎵�灞炰粨搴�</param>
+        /// <param name="areaNo">鎵�灞炲尯鍩�</param>
+        /// <param name="type">鐗╂枡绫诲瀷</param>
+        /// <param name="ownerNo">璐т富缂栧彿</param>
+        /// <param name="ownerName">璐т富鍚嶇О</param>
         /// <returns></returns>
         public List<StockDetailDto> GetInventoryList1(string skuNo, string skuName, string lotNo, string locatNo, string palletNo, 
-            string status, string inspectStatus, string ownerNo, string ownerName)
+            string status, string inspectStatus, string ownerNo, string ownerName, string houseNo, string areaNo, string categoryNo, string type)
         {
-            string str = "select detail.*,house.WareHouseNo + '-' + house.WareHouseName as WareHouseName," +
+            string str = "select detail.*,sku.Type,house.WareHouseNo + '-' + house.WareHouseName as WareHouseName," +
                 "roadway.RoadwayNo + '-' + roadway.RoadwayName as RoadwayName,area.AreaNo + '-' + area.AreaName as AreaName  " +
                 "from DataStockDetail detail " +
                 "left join SysStorageRoadway roadway on detail.RoadwayNo = roadway.RoadwayNo " +
                 "left join SysWareHouse house on detail.WareHouseNo = house.WareHouseNo " +
                 "left join SysStorageArea area on detail.AreaNo = area.AreaNo " +
+                "left join SysMaterials as sku on detail.skuNo = sku.skuNo " +
+                "left join SysMaterialCategory as cat on sku.CategoryNo = cat.CategoryNo " +
                 "Where detail.IsDel = @isdel";
             //鍒ゆ柇鐗╂枡缂栫爜鏄惁涓虹┖
             if (!string.IsNullOrEmpty(skuNo))
@@ -184,26 +219,107 @@
             if (!string.IsNullOrEmpty(ownerName))
             {
                 str += " and detail.OwnerName like @ownerName";
+            }   
+            if (!string.IsNullOrEmpty(houseNo))     
+            {
+                str += " and house.WareHouseNo = @wareHouseNo";
             }
+            if (!string.IsNullOrEmpty(areaNo))
+            {
+                str += " and area.AreaNo = @areaNo";
+            }
+            if (!string.IsNullOrEmpty(categoryNo))
+            {
+                str += " and cat.CategoryNo = @categoryNo";
+            }
+            if (!string.IsNullOrEmpty(type))
+            {
+                str += " and sku.Type = @type";
+            }
+
             //鎺掑簭
             str += " order by detail.SkuNo,detail.PalletNo,detail.LotNo";
             List<StockDetailDto> stockDetailsList = Db.Ado.SqlQuery<StockDetailDto>(str, new
             {
-                isdel = "0", //鏄惁鍒犻櫎
-                skuno = "%" + skuNo + "%", //鐗╂枡缂栫爜
-                skuname = "%" + skuName + "%", //鐗╂枡鍚嶇О
-                lotno = "%" + lotNo + "%", //鎵规
-                locatno = "%" + locatNo + "%", //鍌ㄤ綅鍦板潃
-                palletno = "%" + palletNo + "%", //鎵樼洏鏉$爜
-                status = status, //搴撳瓨鐘舵��
-                inspectstatus = inspectStatus, //璐ㄦ鐘舵��
-                ownerNo = "%" + ownerNo + "%", //璐т富缂栫爜
-                ownerName = "%" + ownerName + "%" //璐т富鍚嶇О
+                isdel = "0",                                //鏄惁鍒犻櫎
+                skuno = "%" + skuNo + "%",                  //鐗╂枡缂栫爜
+                skuname = "%" + skuName + "%",              //鐗╂枡鍚嶇О
+                lotno = "%" + lotNo + "%",                  //鎵规
+                locatno = "%" + locatNo + "%",              //鍌ㄤ綅鍦板潃
+                palletno = "%" + palletNo + "%",            //鎵樼洏鏉$爜
+                status = status,                            //搴撳瓨鐘舵��
+                inspectstatus = inspectStatus,              //璐ㄦ鐘舵��
+                ownerNo = "%" + ownerNo + "%",              //璐т富缂栫爜
+                ownerName = "%" + ownerName + "%",          //璐т富鍚嶇О
+                wareHouseNo = houseNo,                      
+                areaNo = areaNo,                         //鎵�灞炲尯鍩�
+                categoryNo = categoryNo,                //閫昏緫搴撳尯
+                type = type
             });
+            foreach (var item in stockDetailsList)
+            {
+                if (!string.IsNullOrEmpty(item.LocatNo))
+                {
+                    if (item.WareHouseNo == "W01") 
+                    { 
+                        item.PLCLocatNo = GetDjAdress(item.LocatNo.Substring(1, 2), item.LocatNo.Substring(0, 2), item.LocatNo.Substring(6, 2)).ToString() + item.LocatNo.Substring(2, 2) + item.LocatNo.Substring(4, 2);
+                    }
+                }
+               
+            }
             return stockDetailsList;
         }
 
         #endregion
+
+        /// <summary>
+        /// 鏍规嵁鍌ㄤ綅鎺掕幏鍙栬泛鏈哄搴旂殑鍦板潃鎺�03010302
+        /// </summary>
+        /// <param name="road">鎺�02</param>
+        /// <param name="pai">鎺�03</param>
+        /// <param name="dept">娣卞害02</param>
+        /// <returns></returns>
+        public static int GetDjAdress(string road, string pai, string dept)
+        {
+            var roadNum = int.Parse(road);
+            var paiNum = int.Parse(pai);
+            var deptNum = int.Parse(dept);
+
+            var paiVal = 0;
+
+            // 鍒ゆ柇鎺掑鍋舵暟
+            if (paiNum % 2 == 0)
+            {
+                if (deptNum == 1)
+                {
+                    paiVal = 3;
+                }
+                else
+                {
+                    paiVal = 4;
+                }
+            }
+            else
+            {
+                if (deptNum == 1)
+                {
+                    paiVal = 2;
+
+                }
+                else
+                {
+                    paiVal = 1;
+
+                }
+            }
+
+            if (paiVal == 0)
+            {
+                throw new Exception("鎺掕浆鎹㈠け璐�");
+            }
+            return paiVal;
+
+        }
 
         #region 浣庡簱瀛橀璀�
 
@@ -327,9 +443,12 @@
                 //startTime = startTime,
                 //endTime = endTime
             });
+            DataStock stock = new DataStock();
+            stock = Db.Queryable<DataStock>().First();
 
             //鍚堝苟鏁版嵁
             int a = 0;
+            decimal qty = 0;
             foreach (var h in totalHListData)
             {
                 if (a >= totalCListData.Count)
@@ -338,16 +457,23 @@
                 }
                 foreach (var c in totalCListData)
                 {
+                    
                     //鍒ゆ柇鍑哄簱鏄惁鎷ユ湁鐩稿悓鎵规 涓旂墿鏂欑浉鍚�
                     if (h.LotNo == c.LotNo)
                     {
                         if (h.SkuNo == c.SkuNo && h.SkuName == c.SkuName)
                         {
+                            stock = Db.Queryable<DataStock>().First(w=>w.SkuNo == h.SkuNo && w.SkuName == h.SkuName && w.LotNo == h.LotNo && w.IsDel == "0");
+                            if (stock != null)
+                            {
+                                qty = stock.Qty;
+                            }
                             h.CQty = c.CQty; //鍑哄簱鏁伴噺
                             h.CAllotQty = c.CAllotQty; //鍒嗛厤鏁伴噺
                             h.CFactQty = c.CFactQty; //涓嬫灦鏁伴噺
                             h.CompleteQty = c.CompleteQty; //鎷h揣鏁伴噺
-                            //h.SONo = c.SONo; //鍑哄簱鍗曞彿
+                            h.Qty = qty;  //褰撳墠搴撳瓨
+
 
                             a += 1;
 
@@ -992,5 +1118,745 @@
             return stockDetailsList;
         }
         #endregion
+
+        #region AGV灏忚溅浠诲姟瀹屾垚鏇存柊搴撳瓨
+
+        /// <summary>
+        /// AGV鍏ュ簱瀹屾垚
+        /// </summary>
+        /// <param name="TaskCode">浠诲姟鍙�</param>
+        /// <param name="wcsurl">涓嬪彂WCS鏀捐揣瀹屾垚鍦板潃</param>
+        /// <returns></returns>
+        public void ArriveFinish(string TaskCode,string wcsurl)
+        {
+            try
+            {
+                var palletNo = Db.Queryable<LogTask>().First(m => m.TaskNo == TaskCode && m.OrderType == "0" && m.Status == "1");//鑾峰彇姝e湪鎵ц鐨勪换鍔′俊鎭�
+                if (palletNo == null)
+                {
+                    throw new Exception("姝や换鍔″凡瀹屾垚");
+
+                }
+                var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.StartLocat); //鑾峰彇搴撲綅淇℃伅
+                var stockDetail = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo.PalletNo);
+                //寮�鍚簨鍔�
+                Db.BeginTran();
+               
+                //淇敼璧峰搴撲綅鐘舵��
+                storageLocat.Status = "0";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 
+                Db.Updateable(storageLocat).ExecuteCommand();
+
+                //淇敼浠诲姟鐘舵��
+                palletNo.Status = "2";   //宸插畬鎴�
+                Db.Updateable(palletNo).ExecuteCommand();
+
+                
+                if (stockDetail !=null)
+                {
+                    //淇敼搴撳瓨鏄庣粏
+                    stockDetail.Status = "0";//寰呭垎閰�
+                    stockDetail.LocatNo = "";
+                    stockDetail.AreaNo = "";
+                    stockDetail.RoadwayNo = "";
+                    stockDetail.WareHouseNo = "";
+                    Db.Updateable(stockDetail).ExecuteCommand();
+                }
+                
+
+                #region 涓嬪彂WCS鏀捐揣瀹屾垚
+                var data = new
+                {
+                    Port = palletNo.EndLocat
+                };
+                var jsonData = JsonConvert.SerializeObject(data);
+                string response = "";
+                try
+                {
+                    var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss")
+                    response = HttpHelper.DoPost(wcsurl, jsonData, "涓嬪彂缁橶CS鏀捐揣瀹屾垚鍛戒护", "WCS");
+                    var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss")
+
+                    //////瑙f瀽杩斿洖鏁版嵁 
+                    var res = JsonConvert.DeserializeObject<WcsModel>(response);
+                    if (res.StatusCode == -1)
+                    {
+                        throw new Exception("鏀捐揣澶辫触锛學CS杩斿洖淇℃伅閿欒");
+                    }
+                }
+
+                catch (Exception ex)
+                {
+                    throw new Exception(ex.Message);
+                }
+
+                #endregion
+                palletNo.IsCancel = 0;
+                palletNo.IsSend = 0;
+                palletNo.IsFinish = 0;
+                Db.Updateable(palletNo).ExecuteCommand();
+
+                Db.CommitTran();
+
+            }
+            catch (Exception ex)
+            {
+                Db.RollbackTran();
+                throw new Exception("AGV杩斿洖鍏ュ簱瀹屾垚淇″彿澶勭悊閿欒锛岄敊璇俊鎭細" + ex);
+            }
+        }
+
+        /// <summary>
+        /// AGV鍑哄簱瀹屾垚
+        /// </summary>
+        /// <param name="TaskCode">浠诲姟鍙�</param>
+        /// <param name="url">鍙嶉MES澶囨枡瀹屾垚鍦板潃</param>
+        /// <returns></returns>
+        public void SoFinish(string TaskCode,string url)
+        {
+            try
+            {
+                var palletNo = Db.Queryable<LogTask>().First(m => m.TaskNo == TaskCode && m.OrderType == "1" && m.Status == "1");//鑾峰彇姝e湪鎵ц鐨勪换鍔′俊鎭�
+                if (palletNo == null)
+                {
+                    throw new Exception("姝や换鍔″凡瀹屾垚");
+                }
+                var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.EndLocat); //鑾峰彇搴撲綅淇℃伅
+                var storageStart = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.StartLocat); //鑾峰彇搴撲綅淇℃伅
+                var stockDetail = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo.PalletNo); //鑾峰彇搴撳瓨淇℃伅
+
+                //寮�鍚簨鍔�
+                Db.BeginTran();
+                //淇敼鐩殑搴撲綅鐘舵��
+                storageLocat.Status = "1";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 
+                Db.Updateable(storageLocat).ExecuteCommand();
+
+                //淇敼浠诲姟鐘舵��
+                palletNo.Status = "2";   //宸插畬鎴�
+                Db.Updateable(palletNo).ExecuteCommand();
+
+                //淇敼搴撳瓨鏄庣粏
+                stockDetail.Status = "2";// 0:寰呭垎閰�   1:閮ㄥ垎鍒嗛厤 2锛氬凡鍒嗛厤 3锛氱洏鐐归攣瀹氾細 4绉诲簱閿佸畾
+                stockDetail.LocatNo = storageLocat.LocatNo;
+                stockDetail.AreaNo = storageLocat.AreaNo;
+                stockDetail.RoadwayNo = storageLocat.RoadwayNo;
+                stockDetail.WareHouseNo = storageLocat.WareHouseNo;
+                Db.Updateable(stockDetail).ExecuteCommand();
+
+
+                Db.CommitTran();
+
+            }
+            catch (Exception ex )
+            {
+
+                throw new Exception("AGV杩斿洖鍑哄簱瀹屾垚淇″彿澶勭悊閿欒锛岄敊璇俊鎭細" + ex);
+            }
+        }
+
+
+        //瀹屾垚鎺ュ彛淇敼锛堟湭瀹屾垚锛�
+        //try
+        //{
+        //    var palletNo = Db.Queryable<LogTask>().First(m => m.TaskNo == TaskCode && m.Status == "1");//鑾峰彇姝e湪鎵ц鐨勪换鍔′俊鎭�
+        //    if (palletNo == null)
+        //    {
+        //        throw new Exception("姝や换鍔″凡瀹屾垚");
+        //    }
+        //    var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.EndLocat); //鑾峰彇搴撲綅淇℃伅
+        //    var storageStart = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.StartLocat); //鑾峰彇搴撲綅淇℃伅
+        //    var stockDetail = Db.Queryable<DataStockDetail>().Where(w => w.IsDel == "0" && w.PalletNo == palletNo.PalletNo).ToList();
+        //    if (stockDetail.Count == 0)
+        //    {
+        //        throw new Exception("鎵樼洏涓婄墿鏂欏簱瀛樻槑缁嗕俊鎭笉瀛樺湪,璇锋鏌�!");
+        //    }
+        //    //寮�鍚簨鍔�
+        //    Db.BeginTran();
+        //    if (storageLocat != null)
+        //    {
+        //        if (storageLocat.AreaNo == "B12")//杞﹂棿缂撳瓨浣嶉渶瑕侀�氱煡MES 
+        //        {
+        //            var data = new List<RequertBeiliaoInfoModel>();
+        //            //鏇存敼搴撳瓨鏄庣粏
+        //            foreach (var item in stockDetail)
+        //            {
+        //                item.LocatNo = item.LocatNo;//鍌ㄤ綅鏇存敼
+        //                item.WareHouseNo = item.WareHouseNo;//鎵�灞炰粨搴撴洿鏀�
+        //                item.RoadwayNo = item.RoadwayNo;//鎵�灞炲贩閬撴洿鏀�
+        //                item.AreaNo = item.AreaNo;//鎵�灞炲尯鍩熸洿鏀� 
+
+        //                Db.Updateable(item).ExecuteCommand();
+
+
+        //                if (string.IsNullOrWhiteSpace(item.SONo))
+        //                {
+        //                    throw new Exception("褰撳墠鎵樼洏涓嶆槸鎷兼墭鍑哄簱鎵樼洏");
+        //                }
+        //                var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == item.Id).ToList();
+        //                if (boxInfo.Count == 0)
+        //                {
+        //                    throw new Exception("鎵樼洏涓婄墿鏂欑鐮佷俊鎭笉瀛樺湪,璇锋鏌�!");
+        //                }
+        //                //var boxno = boxInfo.GroupBy(w => w.BoxNo).ToList();
+        //                var boxno = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == item.Id).GroupBy(m => new
+        //                {
+        //                    m.BoxNo
+        //                }).Select(it => new DataBoxInfo()
+        //                {
+        //                    BoxNo = it.BoxNo
+        //                }).ToList();
+
+        //                //璁板綍鎵樼洏涓婁俊鎭粰MES
+        //                foreach (var item2 in boxno)
+        //                {
+        //                    var a = item.ProductionTime.ToString();
+        //                    data.Add(new RequertBeiliaoInfoModel()
+        //                    {
+        //                        no = item2.BoxNo,
+        //                        materiel_no = item.SkuNo,
+        //                        materiel_name = item.SkuName,
+        //                        qty = item.Qty,
+        //                        batch = item.LotNo,
+        //                        producttime = item.ProductionTime.ToString().Substring(0, 10),
+        //                        expiry = item.ExpirationTime.ToString().Substring(0, 10)
+
+        //                    });
+        //                }
+        //                //搴撳瓨绠辩爜鏄庣粏鍒犻櫎
+        //                Db.Deleteable(boxInfo).ExecuteCommand();
+        //                //鍒犻櫎搴撳瓨鎵樼洏淇℃伅
+        //                Db.Deleteable(item).ExecuteCommand();
+        //                //鏇存敼搴撳瓨鎬昏〃
+        //                var stock = Db.Queryable<DataStock>().First(w => w.IsDel == "0" && w.SkuNo == item.SkuNo && w.LotNo == item.LotNo);
+        //                stock.LockQty -= (decimal)item.Qty;
+        //                stock.Qty -= (decimal)item.Qty;
+        //                Db.Updateable(stock).ExecuteCommand();
+        //                //鏇存敼鎵樼洏鐘舵��
+        //                var pallet = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNo);
+        //                if (pallet != null)
+        //                {
+        //                    pallet.Status = "0";
+        //                    Db.Updateable(pallet).ExecuteCommand();
+        //                }
+
+        //            }
+
+        //            //鑾峰彇浠ょ墝
+        //            //var token = new Token().GetMesToken(mesTokenUrl);
+        //            var token = "";
+        //            Dictionary<string, string> mesDic = new Dictionary<string, string>()
+        //        {
+        //        {"Authorization",token }
+        //        };
+        //            var endlono = palletNo.EndLocat;
+        //            //缂撳瓨搴撲綅杞崲
+        //            switch (palletNo.EndLocat.ToString().Substring(4, 1))
+        //            {
+        //                case "1":
+        //                    endlono = "Y003_00" + palletNo.EndLocat.ToString().Substring(6, 1);
+        //                    break;
+        //                case "2":
+        //                    endlono = "Y138_0" + palletNo.EndLocat.ToString().Substring(5, 2);
+        //                    break;
+        //                case "3":
+        //                    endlono = "Y128_0" + palletNo.EndLocat.ToString().Substring(5, 2);
+        //                    break;
+        //                default:
+        //                    break;
+        //            }
+        //            var mescode = Db.Queryable<BllExportNotice>().Where(w => w.SONo == stockDetail.First().SONo).First();
+        //            var mesData = new RequertBeiliaoModel()
+        //            {
+        //                morder_no = mescode.OrderCode,
+        //                pallet = stockDetail.First().PalletNo,
+        //                layer_no = endlono,
+        //                items = data
+        //            };
+        //            var jsonData = JsonConvert.SerializeObject(mesData);
+        //            //璋冪敤鎺ュ彛
+        //            var response = HttpHelper.DoPost(url, jsonData, "澶囨枡瀹屾垚杩愯嚦缂撳瓨鍖哄弽棣堣嚦MES", "MES", mesDic);
+
+        //            var obj = JsonConvert.DeserializeObject<MesModel>(response);//瑙f瀽杩斿洖鏁版嵁
+        //            if (obj.status != "success")
+        //            {
+        //                throw new Exception("澶囨枡鍚屾MES澶辫触锛�" + obj.message);
+        //            }
+
+
+        //        }
+        //        //淇敼鐩殑搴撲綅鐘舵��
+        //        storageLocat.Status = "1";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 
+        //        Db.Updateable(storageLocat).ExecuteCommand();
+
+        //        //淇敼浠诲姟鐘舵��
+        //        palletNo.Status = "2";   //宸插畬鎴�
+        //        Db.Updateable(palletNo).ExecuteCommand();
+
+        //        //淇敼搴撳瓨鏄庣粏
+        //        item.Status = "2";// 0:寰呭垎閰�   1:閮ㄥ垎鍒嗛厤 2锛氬凡鍒嗛厤 3锛氱洏鐐归攣瀹氾細 4绉诲簱閿佸畾
+        //        stockDetail.LocatNo = storageLocat.LocatNo;
+        //        stockDetail.AreaNo = storageLocat.AreaNo;
+        //        stockDetail.RoadwayNo = storageLocat.RoadwayNo;
+        //        stockDetail.WareHouseNo = storageLocat.WareHouseNo;
+        //        Db.Updateable(stockDetail).ExecuteCommand();
+        //    }
+        //    Db.CommitTran();
+
+        //}
+        /// <summary>
+        /// AGV绉诲簱瀹屾垚
+        /// </summary>
+        /// <param name="TaskCode">浠诲姟鍙�</param>
+        /// <param name="url">鍙嶉MES澶囨枡瀹屾垚鍦板潃</param>
+        /// <returns></returns>
+        public void MoveFinish(string TaskCode,string url)
+        {
+            try
+            {
+                var palletNo = Db.Queryable<LogTask>().First(m => m.TaskNo == TaskCode && m.OrderType == "3" && m.Status == "1");//鑾峰彇姝e湪鎵ц鐨勪换鍔′俊鎭�
+                if (palletNo == null)
+                {
+                    throw new Exception("姝や换鍔″凡瀹屾垚");
+                }
+                var startLocat = new SysStorageLocat();
+
+                var endLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.EndLocat); //鑾峰彇鐩殑搴撲綅淇℃伅
+                if (endLocat == null)
+                {
+                    throw new Exception("鏈壘鍒扮浉搴旂殑鐩殑搴撲綅");
+                }
+                var storageStart = new SysStorageLocat();
+                
+                int isstock = 1;
+                var bindDetail = new BllPalletBind();
+                var sysPanlno = new SysPallets();
+
+                var stockDetail = Db.Queryable<DataStockDetail>().Where(w => w.IsDel == "0" && w.PalletNo == palletNo.PalletNo).ToList(); //鑾峰彇搴撳瓨淇℃伅
+                if (stockDetail.Count == 0)
+                {
+                    //鏈壘鍒板簱瀛樺悗闇�瑕佸垽鏂槸鍚︽槸绌烘墭鐩樼Щ搴�
+                    isstock = 0;
+                    bindDetail = Db.Queryable<BllPalletBind>().OrderByDescending(w=>w.Id).First(w => w.IsDel == "0" && w.LocatNo == palletNo.StartLocat);//鑾峰彇缁勬墭鐩樹俊鎭�
+                    if (bindDetail == null)
+                    {
+                        bindDetail = Db.Queryable<BllPalletBind>().OrderByDescending(w => w.Id).First(w => w.IsDel == "0" && w.LocatNo == palletNo.EndLocat);//鑾峰彇缁勬墭鐩樹俊鎭�
+                        if (bindDetail == null)
+                        {
+                            throw new Exception("鏈壘鍒扮┖鎵樼洏缁勬墭淇℃伅");
+                        }
+                    }
+                }
+                else  
+                {
+                    storageStart = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.StartLocat); //鑾峰彇璧峰搴撲綅淇℃伅
+                    if (storageStart == null)
+                    {
+                        isstock = 2; //搴撳彛鍒扮紦瀛樹綅浠诲姟
+                    }
+                }
+                //var soAllot = Db.Queryable<BllExportAllot>().First(m => m.IsDel == "0" && m.PalletNo == palletNo.PalletNo);//鑾峰彇鍒嗛厤淇℃伅
+                
+                
+                //寮�鍚簨鍔�
+                Db.BeginTran();
+
+                //淇敼鐩殑搴撲綅鐘舵��
+                endLocat.Status = "1";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 
+                Db.Updateable(endLocat).ExecuteCommand();
+
+                //淇敼浠诲姟鐘舵��
+                palletNo.Status = "2";   //宸插畬鎴�
+                Db.Updateable(palletNo).ExecuteCommand();
+
+                if (isstock == 1)
+                {
+                    startLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.StartLocat);
+                    //淇敼璧峰搴撲綅鐘舵��
+                    startLocat.Status = "0";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 
+                    Db.Updateable(startLocat).ExecuteCommand();
+
+
+                    #region  
+                    var data = new List<RequertBeiliaoInfoModel>();
+
+                    //鏇存敼搴撳瓨鏄庣粏
+                    foreach (var item in stockDetail)
+                    {
+                        item.LocatNo = endLocat.LocatNo;//鍌ㄤ綅鏇存敼
+                        item.WareHouseNo = endLocat.WareHouseNo;//鎵�灞炰粨搴撴洿鏀�
+                        item.RoadwayNo = endLocat.RoadwayNo;//鎵�灞炲贩閬撴洿鏀�
+                        item.AreaNo = endLocat.AreaNo;//鎵�灞炲尯鍩熸洿鏀� 
+
+                        Db.Updateable(item).ExecuteCommand();
+
+                        if (endLocat != null && endLocat.AreaNo == "B12") //鏄惁鏄�3妤肩紦瀛樺尯 鏄細鍒犻櫎搴撳瓨
+                        {
+                            if (string.IsNullOrWhiteSpace(item.SONo))
+                            {
+                                throw new Exception("褰撳墠鎵樼洏涓嶆槸鎷兼墭鍑哄簱鎵樼洏");
+                            }
+                            var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == item.Id).ToList();
+                            if (boxInfo.Count == 0)
+                            {
+                                throw new Exception("鎵樼洏涓婄墿鏂欑鐮佷俊鎭笉瀛樺湪,璇锋鏌�!");
+                            }
+                            //var boxno = boxInfo.GroupBy(w => w.BoxNo).ToList();
+                            var boxno = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == item.Id).GroupBy(m => new
+                            {
+                                m.BoxNo,
+                                m.ProductionTime,
+                                m.ExpirationTime,
+                            }).Select(it => new DataBoxInfo()
+                            {
+                                BoxNo = it.BoxNo,
+                                ProductionTime = it.ProductionTime,
+                                ExpirationTime = it.ExpirationTime,
+                            }).ToList();
+
+                            //璁板綍鎵樼洏涓婁俊鎭粰MES
+                            foreach (var item2 in boxno)
+                            {
+                                //var a = item.ProductionTime.ToString();
+                                data.Add(new RequertBeiliaoInfoModel()
+                                {
+                                    no = item2.BoxNo,
+                                    materiel_no = item.SkuNo,
+                                    materiel_name = item.SkuName,
+                                    qty = item.Qty,
+                                    batch = item.LotNo,
+                                    producttime = item2.ProductionTime.ToString().Substring(0, 10),
+                                    expiry = item2.ExpirationTime.ToString().Substring(0, 10)
+
+                                });
+                            }
+                            //搴撳瓨绠辩爜鏄庣粏鍒犻櫎
+                            Db.Deleteable(boxInfo).ExecuteCommand();
+                            //鍒犻櫎搴撳瓨鎵樼洏淇℃伅
+                            Db.Deleteable(item).ExecuteCommand();
+                            //鏇存敼搴撳瓨鎬昏〃
+                            var stock = Db.Queryable<DataStock>().First(w => w.IsDel == "0" && w.SkuNo == item.SkuNo && w.LotNo == item.LotNo);
+                            stock.LockQty -= (decimal)item.Qty;
+                            stock.Qty -= (decimal)item.Qty;
+                            Db.Updateable(stock).ExecuteCommand();
+                            //鏇存敼鎵樼洏鐘舵��
+                            var pallet = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNo.PalletNo);
+                            if (pallet != null)
+                            {
+                                pallet.Status = "0";
+                                Db.Updateable(pallet).ExecuteCommand();
+                            }
+                        }
+                    }
+
+
+                    if (endLocat != null && endLocat.AreaNo == "B12")
+                    {
+                        //鑾峰彇浠ょ墝
+                        //var token = new Token().GetMesToken(mesTokenUrl);
+                        var token = "";
+                        Dictionary<string, string> mesDic = new Dictionary<string, string>()
+                        {
+                            {"Authorization",token }
+                        };
+                        var endlono = endLocat.LocatNo;
+                        //缂撳瓨搴撲綅杞崲
+                        switch (endLocat.LocatNo.ToString().Substring(4, 1))
+                        {
+                            case "1":
+                                endlono = "Y003_0" + endLocat.LocatNo.ToString().Substring(5, 2);
+                                break;
+
+                        }
+                        var mescode = Db.Queryable<BllExportNotice>().Where(w => w.SONo == stockDetail.First().SONo).First();
+                        var mesData = new RequertBeiliaoModel()
+                        {
+                            morder_no = mescode.OrderCode,
+                            pallet = stockDetail.First().PalletNo,
+                            layer_no = endlono,
+                            items = data
+                        };
+                        var jsonData = JsonConvert.SerializeObject(mesData);
+                        //璋冪敤鎺ュ彛
+                        var response = HttpHelper.DoPost(url, jsonData, "澶囨枡瀹屾垚杩愯嚦缂撳瓨鍖哄弽棣堣嚦MES", "MES", mesDic);
+
+                        var obj = JsonConvert.DeserializeObject<MesModel>(response);//瑙f瀽杩斿洖鏁版嵁
+                        if (obj.status != "success")
+                        {
+                            throw new Exception("澶囨枡鍚屾MES澶辫触锛�" + obj.message);
+                        }
+
+                    }
+                    #endregion
+                }
+                else if (isstock == 0)
+                {
+                    //淇敼缁勬墭淇℃伅
+                    if (bindDetail.WareHouseNo == "W01") //1銆佺┖鎵樼洏鍨涘埌绌烘墭鐩樻敹闆嗗櫒锛�
+                    {
+                        bindDetail.WareHouseNo = "W02";
+                        bindDetail.LocatNo = endLocat.LocatNo;
+                        bindDetail.RoadwayNo = "";
+                        //淇敼璧峰搴撲綅鐘舵��
+                        startLocat.Status = "0";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 
+                        Db.Updateable(startLocat).ExecuteCommand();
+                    }
+                    else//2銆佹嫞璐у彨绌烘墭鐩橈紝灏忚溅瀹屾垚涓�娆★紝鎵e噺涓�涓┖鎵樼洏鍨涗笂鏁伴噺
+                    {
+                        bindDetail.Qty = bindDetail.Qty - 1;
+                        if (bindDetail.Qty == 0)//鏁伴噺涓�0鍚庢洿鏀圭粍鎵樼姸鎬佸拰鎵樼洏浣跨敤鐘舵��
+                        {
+                            bindDetail.Status = "2";
+                            bindDetail.IsDel = "1";
+                            //淇敼璧峰搴撲綅鐘舵��
+                            startLocat.Status = "0";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 
+                            Db.Updateable(startLocat).ExecuteCommand();
+                        }
+                        else
+                        {
+                            bindDetail.LocatNo = startLocat.LocatNo;//?????鎷h揣浣嶆墭鐩樺浣曞鐞嗭紝鎷h揣浣嶆槸鍚﹂渶瑕佹洿鏀圭姸鎬侊紝鏄惁闇�瑕佸鍔犲簱瀛橈紱
+                        }
+                    }
+                    Db.Updateable(bindDetail).ExecuteCommand();
+
+                }
+                else //搴撳彛绉诲簱鍒扮紦瀛樹綅
+                {
+
+                    foreach (var item in stockDetail)
+                    {
+                        item.LocatNo = endLocat.LocatNo;//鍌ㄤ綅鏇存敼
+                        item.WareHouseNo = endLocat.WareHouseNo;//鎵�灞炰粨搴撴洿鏀�
+                        item.RoadwayNo = endLocat.RoadwayNo;//鎵�灞炲贩閬撴洿鏀�
+                        item.AreaNo = endLocat.AreaNo;//鎵�灞炲尯鍩熸洿鏀� 
+
+                        Db.Updateable(item).ExecuteCommand();
+                    }
+                }
+                palletNo.IsCancel = 0;
+                palletNo.IsSend = 0;
+                palletNo.IsFinish = 0;
+                Db.Updateable(palletNo).ExecuteCommand();
+                Db.CommitTran();
+            }
+            catch (Exception ex)
+            {
+                Db.RollbackTran();
+                throw new Exception("AGV杩斿洖绉诲簱瀹屾垚淇″彿澶勭悊閿欒锛岄敊璇俊鎭細"+ex);
+            }
+        }
+        #endregion
+
+        #region 鏁板瓧瀛敓绯荤粺鍙嶉淇℃伅
+
+        /// <summary>
+        /// 鍙嶉鏁板瓧瀛敓绯荤粺搴撳瓨淇℃伅
+        /// </summary>
+        /// <param name=""></param>
+        /// <returns></returns>
+        public List<ReLocateDataModel> GetLocateList()
+        {
+            try
+            {
+
+                //搴撳瓨淇℃伅
+                var stockDetailsList = Db.Queryable<DataStockDetail>().ToList();
+                var sql = "select LocatNo,PalletNo,SkuName,Standard,LotNo,InspectStatus,Qty,ExpirationTime as Warranty from DataStockDetail ";
+
+                List<ReLocateDataModel> list = Db.Ado.SqlQuery<ReLocateDataModel>(sql);
+
+                //if (stockDetailsList.Count == 0)
+                //{
+                //    return list;
+                //}
+                //foreach (var item in stockDetailsList)
+                //{
+                //    list.Add(item);
+
+                //}
+                //for (int i = 0; i < stockDetailsList.Count; i++)
+                //{
+
+                //    list.Add(stockDetailsList);
+                //    list[i].LocatNo = stockDetailsList[i].LocatNo;                  //搴撲綅
+                //    list[i].PalletNo = stockDetailsList[i].PalletNo;                //鎵樼洏鍙�
+                //    list[i].SkuName = stockDetailsList[i].SkuName;                  //鐗╂枡鍚嶇О
+                //    list[i].Stadard = stockDetailsList[i].Standard;                  //瑙勬牸
+                //    list[i].LotNo = stockDetailsList[i].LotNo;                      //鎵规
+                //    list[i].InspectStatus = stockDetailsList[i].InspectStatus;      //璐ㄩ噺鐘舵��
+                //    list[i].Qty = stockDetailsList[i].Qty.ToString();                           //搴撳瓨鏁伴噺
+                //    list[i].Warranty = stockDetailsList[i].ExpirationTime.ToString();           //鏈夋晥鏈�   ??杩囨湡鏃堕棿锛屾槸鍚﹁鏇存敼
+                //}
+                return list;
+            }
+            catch (Exception ex)
+            {
+
+                throw new Exception("杩斿洖搴撳瓨淇℃伅鏈夎锛岄敊璇俊鎭細" + ex);
+            }
+        }
+
+
+
+        /// <summary>
+        /// 鍙嶉鏁板瓧瀛敓绯荤粺鎿嶄綔淇℃伅
+        /// </summary>
+        /// <param name=""></param>
+        /// <returns></returns>
+        public List<ReLogDataModel> GetLogDataList()
+        {
+            try
+            {
+
+                //搴撳瓨淇℃伅
+                var stockDetailsList = Db.Queryable<DataStockDetail>().ToList();
+                var sql = "select LocatNo,PalletNo,SkuName,Standard,LotNo,InspectStatus,Qty,ExpirationTime as Warranty from DataStockDetail ";
+
+
+                var item2 = Expressionable.Create<LogOperationSO>()
+                   .And(it => it.IsDel == "0")
+                   .ToExpression();//娉ㄦ剰 杩欎竴鍙� 涓嶈兘灏�
+
+                var list2 = Db.Queryable<LogOperationSO>().Where(item2)
+                    .LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString())
+                    .LeftJoin<SysUserInfor>((it, dic, users) => it.CreateUser == users.Id)
+                    .Select((it, dic, users) => new OperationDto()
+                    {
+                        Id = it.Id,
+                        ParentNo = it.ParentNo,
+                        MenuNo = it.MenuNo,
+                        MenuName = it.MenuName,
+                        FkNo = it.FkNo,
+                        Type = dic.DictName,
+                        Msg = it.Msg,
+                        CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"),
+                        CreateUserName = users.RealName,
+                    });
+
+                List<ReLogDataModel> list = Db.Ado.SqlQuery<ReLogDataModel>(sql);
+               
+                return list;
+            }
+            catch (Exception ex)
+            {
+
+                throw new Exception("杩斿洖搴撳瓨淇℃伅鏈夎锛岄敊璇俊鎭細" + ex);
+            }
+        }
+
+
+        /// <summary>
+        /// 鏌ヨ鎿嶄綔鏃ュ織
+        /// </summary>
+        /// <param name="menuName">鑿滃崟鍚嶇О</param>
+        /// <param name="type">绫诲瀷</param>
+        /// <returns></returns>
+        public List<OperationDto> ReLogData()
+        {
+            try
+            {
+                var total = 0;
+                #region asn
+
+                var item = Expressionable.Create<LogOperationASN>()
+                    .And(it => it.IsDel == "0")
+                    .ToExpression();//娉ㄦ剰 杩欎竴鍙� 涓嶈兘灏�
+
+                var list = Db.Queryable<LogOperationASN>().Where(item)
+                    .LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString())
+                    .LeftJoin<SysUserInfor>((it, dic, users) => it.CreateUser == users.Id)
+                    .Select((it, dic, users) => new OperationDto()
+                    {
+                        Id = it.Id,
+                        ParentNo = it.ParentNo,
+                        MenuNo = it.MenuNo,
+                        MenuName = it.MenuName,
+                        FkNo = it.FkNo,
+                        Type = dic.DictName,
+                        Msg = it.Msg,
+                        CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"),
+                        CreateUserName = users.RealName,
+                    });
+
+                #endregion
+
+                #region so
+
+                var item2 = Expressionable.Create<LogOperationSO>()
+                   .And(it => it.IsDel == "0")
+                   .ToExpression();//娉ㄦ剰 杩欎竴鍙� 涓嶈兘灏�
+
+                var list2 = Db.Queryable<LogOperationSO>().Where(item2)
+                    .LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString())
+                    .LeftJoin<SysUserInfor>((it, dic, users) => it.CreateUser == users.Id)
+                    .Select((it, dic, users) => new OperationDto()
+                    {
+                        Id = it.Id,
+                        ParentNo = it.ParentNo,
+                        MenuNo = it.MenuNo,
+                        MenuName = it.MenuName,
+                        FkNo = it.FkNo,
+                        Type = dic.DictName,
+                        Msg = it.Msg,
+                        CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"),
+                        CreateUserName = users.RealName,
+                    });
+
+                #endregion
+
+                #region cr
+
+                var item3 = Expressionable.Create<LogOperationCR>()
+                    .And(it => it.IsDel == "0")
+                    .ToExpression();//娉ㄦ剰 杩欎竴鍙� 涓嶈兘灏�
+
+                var list3 = Db.Queryable<LogOperationCR>().Where(item3)
+                    .LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString())
+                    .LeftJoin<SysUserInfor>((it, dic, users) => it.CreateUser == users.Id)
+                    .Select((it, dic, users) => new OperationDto()
+                    {
+                        Id = it.Id,
+                        ParentNo = it.ParentNo,
+                        MenuNo = it.MenuNo,
+                        MenuName = it.MenuName,
+                        FkNo = it.FkNo,
+                        Type = dic.DictName,
+                        Msg = it.Msg,
+                        CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"),
+                        CreateUserName = users.RealName,
+                    });
+
+                #endregion
+
+                #region sys
+
+                var item4 = Expressionable.Create<LogOperationSys>()
+                    .ToExpression();//娉ㄦ剰 杩欎竴鍙� 涓嶈兘灏�
+
+                var list4 = Db.Queryable<LogOperationSys>().Where(item4)
+                    .LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString())
+                    .LeftJoin<SysUserInfor>((it, dic, users) => it.CreateUser == users.Id)
+                    .Select((it, dic, users) => new OperationDto()
+                    {
+                        Id = it.Id,
+                        ParentNo = it.ParentNo,
+                        MenuNo = it.MenuNo,
+                        MenuName = it.MenuName,
+                        FkNo = it.FkNo,
+                        Type = dic.DictName,
+                        Msg = it.Msg,
+                        CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"),
+                        CreateUserName = users.RealName,
+                    });
+
+                #endregion
+
+                var data = Db.UnionAll(list, list2, list3, list4).OrderByDescending(it => it.CreateTime);
+                return data.OrderByDescending(m => m.CreateTime).ToList();
+            }
+            catch (Exception e)
+            {
+                throw new Exception(e.Message);
+            }
+        }
+        #endregion
     }
 }

--
Gitblit v1.8.0