From cfe19c291c3c8362372c60a10f1d5a11927639f8 Mon Sep 17 00:00:00 2001
From: hwh <332078369@qq.com>
Date: 星期三, 17 七月 2024 17:00:29 +0800
Subject: [PATCH] Merge branch 'hwh'

---
 Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs |  355 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 352 insertions(+), 3 deletions(-)

diff --git a/Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs b/Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs
index 07e232b..a93d0a0 100644
--- a/Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs
+++ b/Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs
@@ -909,7 +909,7 @@
             {
                 throw Oops.Bah("闇�閰嶇疆鐩樼偣鏂瑰紡");
             }
-            var list = await Db.Queryable<BllStockCheckDetail>().Where(a => a.IsDel == "0" && a.CRNo == crNo && a.Status == 0).ToListAsync();
+            var list = await Db.Queryable<BllStockCheckDetail>().Where(a => a.IsDel == "0" && a.CRNo == crNo && (a.Status == 0 || a.Status == 1 || a.Status == 2)).ToListAsync();
             if (list.Count == 0) //鍒ゆ柇鏄惁鏈夐渶瑕佷笅鍙戠殑鐩樼偣鏄庣粏
             {
                 throw Oops.Bah("褰撳墠鐩樼偣鍗曟嵁鏃犻渶瑕佷笅鍙戠殑鎵樼洏");
@@ -921,6 +921,10 @@
                     throw Oops.Bah("宸叉湁姝e湪鍑哄簱鎴栧緟鐩樼偣鐨勬暟鎹紝璇峰畬鎴愮洏鐐瑰悗鍐嶅嚭搴�");
                 }
                 list = new List<BllStockCheckDetail>() { list.FirstOrDefault() };
+            }
+            else
+            {
+                list = list.Where(s => s.Status == 0).ToList();
             }
             #region 
             //瑕佸嚭搴撶殑鎵樼洏闆嗗悎
@@ -1182,11 +1186,11 @@
             }
             if (flagList.Count(m => m == 3) > 0)
             {
-                str += "4.鍌ㄤ綅鎹熷潖涓嶈兘鍑哄簱銆�";
+                str += "3.鍌ㄤ綅鎹熷潖涓嶈兘鍑哄簱銆�";
             }
             if (flagList.Count(m => m == 4) > 0)
             {
-                str += "3.瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱銆�";
+                str += "4.瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱銆�";
             }
             if (flagList.Count(m => m == 5) > 0)
             {
@@ -1222,7 +1226,352 @@
             return outDtoList;
             #endregion
         }
+        
+        /// <summary>
+        /// 瑙嗚鐩樼偣
+        /// </summary>
+        /// <param name="crNo"></param>
+        /// <param name="url"></param>
+        /// <param name="str"></param>
+        /// <returns></returns>
+        public async Task<List<OutCommandDto>> CheckVision(string crNo, string url, string str)
+        {
+            #region 闆嗗悎 
+            var outDtoList = new List<OutCommandDto>(); //鍑哄簱鏁版嵁鐨勯泦鍚� 
+                                                        //璁板綍閿欒淇℃伅鐨勯泦鍚� 
+            var flagList = new List<int>();//1:褰撳墠瑕佸嚭搴撶殑鍌ㄤ綅姝e湪绉诲嚭銆�2 鍑哄簱鐨勬墭鐩樺偍浣嶄俊鎭敊璇�(鍦ㄥ偍浣嶈〃涓湭鏌ヨ鍒�)銆�3鍌ㄤ綅鎹熷潖涓嶈兘鍑哄簱銆�4 瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱
 
+            #endregion
+            var com = new Common();
+            //assign.IsHavePyTask();
+            var notice = await Db.Queryable<BllStockCheck>().FirstAsync(m => m.CRNo == crNo && m.IsDel == "0");
+            if (notice == null)
+            {
+                throw Oops.Bah($"鏈壘鍒皗crNo}鐩樼偣鍗曚俊鎭�");
+            }
+            //鎵�鏈夎鍑哄簱鐨勭洏鐐规槑缁嗕俊鎭�(绛夊緟鐨勪俊鎭拰寰呮嫞璐х殑淇℃伅)
+            var funSetting = Db.Queryable<SysFunSetting>().First(a => a.IsDel == "0" && a.FunSetNo == "InventoryCheckMethod");
+            if (funSetting == null || funSetting.IsEnable == "OFF")
+            {
+                throw Oops.Bah("闇�閰嶇疆鐩樼偣鏂瑰紡");
+            }
+            var list = await Db.Queryable<BllStockCheckDetail>().Where(a => a.IsDel == "0" && a.CRNo == crNo && (a.Status == 0 || a.Status == 1 || a.Status == 2)).ToListAsync();
+            if (list.Count == 0) //鍒ゆ柇鏄惁鏈夐渶瑕佷笅鍙戠殑鐩樼偣鏄庣粏
+            {
+                throw Oops.Bah("褰撳墠鐩樼偣鍗曟嵁鏃犻渶瑕佷笅鍙戠殑鎵樼洏");
+            }
+            if (funSetting.SetValue == "once")
+            {
+                if (list.Any(s => s.Status == 1 || s.Status == 2))
+                {
+                    throw Oops.Bah("宸叉湁姝e湪鍑哄簱鎴栧緟鐩樼偣鐨勬暟鎹紝璇峰畬鎴愮洏鐐瑰悗鍐嶅嚭搴�");
+                }
+                list = new List<BllStockCheckDetail>() { list.FirstOrDefault() };
+            }
+            else
+            {
+                list = list.Where(s => s.Status == 0).ToList();
+            }
+            #region 
+            //瑕佸嚭搴撶殑鎵樼洏闆嗗悎
+            var outLpnList = list.Select(m => m.PalletNo).Distinct().ToList();
+            //瑕佸嚭搴撶殑鏄庣粏闆嗗悎
+            var outStockDetail = await Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToListAsync();
+            var outStockBox = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToListAsync();
+            //鑾峰彇鐗╂枡淇℃伅
+            var skuNo = await Db.Queryable<SysMaterials>().Where(a => a.IsDel == "0" && a.Type == "4").Select(a => a.SkuNo).ToListAsync();
+            var time = DateTime.Now;
+            //Db.BeginTran();
+            //寰幆鐩樼偣鏄庣粏鐨勪俊鎭敓鎴愬嚭搴撲换鍔�
+            foreach (var item in list)
+            {
+                if (item.Status == 0)
+                {
+                    var logList = new List<BllStockCheckLog>();
+                    //鍒ゆ柇鏄惁涓烘棤鐮佺墿鏂�
+                    if (skuNo.Contains(item.SkuNo))
+                    {
+                        var de = outStockDetail.First(m => m.IsDel == "0" &&
+                        m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo);
+
+                        var checkLog = new BllStockCheckLog()
+                        {
+                            CRNo = item.CRNo,
+                            PalletNo = item.PalletNo,
+                            BoxNo = "",
+                            BoxNo2 = "",
+                            BoxNo3 = "",
+                            Qty = (int?)de.Qty,
+                            SkuNo = de.SkuNo,
+                            SkuName = de.SkuName,
+                            Standard = de.Standard,
+                            LotNo = de.LotNo,
+                            LotText = de.LotText,
+                            SupplierLot = de.SupplierLot,
+
+                            CreateUser = _userManager.UserId,
+                            CreateTime = time
+                        };
+                        logList.Add(checkLog);
+
+                    }
+                    else
+                    {
+                        var de = outStockDetail.Where(m =>
+                        m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo).Select(m => m.Id).ToList();
+                        var bo = outStockBox.Where(m => de.Contains(m.StockDetailId)).ToList();
+                        foreach (var b in bo)
+                        {
+                            var checkLog = new BllStockCheckLog()
+                            {
+                                CRNo = item.CRNo,
+                                PalletNo = item.PalletNo,
+                                BoxNo = b.BoxNo,
+                                BoxNo2 = b.BoxNo2,
+                                BoxNo3 = b.BoxNo3,
+                                Qty = b.Qty,
+                                SkuNo = b.SkuNo,
+                                SkuName = b.SkuName,
+                                Standard = b.Standard,
+                                LotNo = b.LotNo,
+                                LotText = b.LotText,
+                                SupplierLot = b.SupplierLot,
+
+                                CreateUser = _userManager.UserId,
+                                CreateTime = time
+                            };
+                            logList.Add(checkLog);
+                        }
+                    }
+
+                    //鐢熸垚鐩樼偣璁板綍
+                    await Db.Insertable(logList).ExecuteCommandAsync();
+                }
+                // 鍌ㄤ綅鍙�
+                var locateNo = outStockDetail.First(m => m.PalletNo == item.PalletNo && m.SkuNo == item.SkuNo && m.LotNo == item.LotNo).LocatNo;
+
+                #region 鍒ゆ柇
+                //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱鍐�
+                if (string.IsNullOrWhiteSpace(locateNo))
+                {
+                    var de = outStockDetail.First(m => m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo);
+                    //鍒ゆ柇鏄惁鏄浂绠卞簱锛屽綋鍓嶆槑缁嗕俊鎭洿鎺ユ洿鏂板嚭搴撳畬鎴� 
+                    if (de != null && de.WareHouseNo == "W02")
+                    {
+                        //鐩樼偣鏄庣粏鐘舵�佹敼涓哄緟鐩樼偣 
+                        item.Status = 2;
+                        await Db.Updateable(item).ExecuteCommandAsync();
+                        //鐩樼偣淇℃伅淇敼
+                        if (notice.Status == 0)
+                        {
+                            notice.CheckDate = DateTime.Now;
+                            notice.Status = 1;
+                            notice.UpdateUser = _userManager.UserId;
+                            notice.UpdateTime = time;
+                            await Db.Updateable(notice).ExecuteCommandAsync();
+                        }
+                        //搴撳瓨涓綋鍓嶆墭鐩樼殑淇℃伅
+                        var stockDetail = await Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == item.PalletNo).ToListAsync();
+                        foreach (var s in stockDetail)
+                        {
+                            s.LocatNo = "";//鍌ㄤ綅鏇存敼锛堟敼涓虹┖锛�
+                            s.WareHouseNo = "";//鎵�灞炰粨搴撴洿鏀癸紙鏀逛负绌猴級
+                            s.RoadwayNo = "";//鎵�灞炲贩閬撴洿鏀癸紙鏀逛负绌猴級
+                            s.AreaNo = "";//鎵�灞炲尯鍩熸洿鏀癸紙鏀逛负绌猴級
+                            await Db.Updateable(s).ExecuteCommandAsync();
+                        }
+                        flagList.Add(5);
+                        continue;
+                    }
+                    //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ叆搴撲腑
+                    var imBl = com.GetImTask(item.PalletNo);
+                    if (imBl != null)
+                    {
+                        flagList.Add(4);
+                        continue;
+                    }
+                    //鍒ゆ柇鏄惁鏄凡缁忓嚭杩囧簱鍙堝洖搴擄紙鐘舵�佷负寰呮嫞璐х殑 1锛�
+                    if (item.Status == 0)
+                    {
+                        //濡傛灉涓嶅湪浠撳簱鍐咃紝褰撳墠鏄庣粏淇℃伅鐩存帴鏇存柊鍑哄簱瀹屾垚 
+                        item.Status = 2;//鐘舵�� 
+                        await Db.Updateable(item).ExecuteCommandAsync();
+                        if (notice.Status == 0)
+                        {
+                            notice.CheckDate = DateTime.Now;
+                            notice.Status = 1;
+                            notice.UpdateUser = _userManager.UserId;
+                            notice.UpdateTime = time;
+                            await Db.Updateable(notice).ExecuteCommandAsync();
+                        }
+                    }
+                    continue;
+                }
+                //褰撳墠鍑哄簱鐨勫偍浣嶄俊鎭�
+                var locate = await Db.Queryable<SysStorageLocat>().FirstAsync(m => m.LocatNo == locateNo && m.IsDel == "0");
+                if (locate == null)
+                {
+                    flagList.Add(2);
+                    continue;
+                }
+                //鍒ゆ柇鍌ㄤ綅鏍囧織鏄惁涓烘崯鍧�
+                if (locate.Flag == "2")
+                {
+                    flagList.Add(3);
+                    continue;
+                }
+                #endregion
+                if (locate.Status == "1") //鏈夌墿鍝�
+                {
+                    #region 娣诲姞鍑哄簱浠诲姟
+                    var taskNo = new Common().GetMaxNo("TK");
+                    //娣诲姞鍑哄簱浠诲姟
+                    var exTask = new LogTask
+                    {
+                        TaskNo = taskNo,
+                        Sender = "WMS",
+                        Receiver = "WCS",
+                        IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+                        StartLocat = locate.LocatNo,//璧峰浣嶇疆
+                        //EndLocat = outMode,//鐩爣浣嶇疆
+                        PalletNo = item.PalletNo,//鎵樼洏鐮�
+                        IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+                        IsCancel = 1,//鏄惁鍙彇娑�
+                        IsFinish = 1,//鏄惁鍙畬鎴�
+                        Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
+                        Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+                        OrderType = "4",//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗� 4瑙嗚鐩樼偣
+
+                        CreateTime = time
+                    };
+                    await Db.Insertable(exTask).ExecuteCommandAsync();
+
+                    outDtoList.Add(new OutCommandDto()
+                    {
+                        PalletNo = item.PalletNo,//鎵樼洏鍙�
+                        StartLocate = locate.LocatNo, // 璧峰浣嶇疆
+                        StartRoadway = locate.RoadwayNo,
+                        EndLocate = "", // 鐩爣浣嶇疆 
+                        TaskNo = exTask.TaskNo, // 浠诲姟鍙�
+                        TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
+                        OutMode = "",  //鐩爣鍦板潃
+                        Order = 1
+                    });
+                    #endregion
+
+                    #region 鏀瑰彉鏁版嵁
+                    if (item.Status == 0)//鍒ゆ柇鎵樼洏鏄惁涓嬪彂杩�
+                    {
+                        if (notice.Status == 0)
+                        {
+                            notice.CheckDate = DateTime.Now;
+                            notice.Status = 1;
+                            notice.UpdateUser = _userManager.UserId;
+                            notice.UpdateTime = time;
+                            await Db.Updateable(notice).ExecuteCommandAsync();
+                        }
+                    }
+                    locate.Status = "3"; //瑕佸嚭搴撶殑鍌ㄤ綅鏀瑰彉鐘舵�� 姝e湪鍑哄簱
+                    await Db.Updateable(locate).ExecuteCommandAsync();
+
+                    item.TaskNo = exTask.TaskNo; // 鍑哄簱鍒嗛厤淇℃伅涓洿鏂颁换鍔″彿
+                    item.Status = 1; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛� 
+                    await Db.Updateable(item).ExecuteCommandAsync();
+                    #endregion
+
+                    flagList.Add(0);
+                }
+                else if (locate.Status == "3") //鍑哄簱涓�
+                {
+                    #region 鏀瑰彉鏁版嵁
+                    //鍒ゆ柇鏄惁鏄凡缁忓嚭杩囧簱鍙堝洖搴擄紙鐘舵�佷负寰呮嫞璐х殑 1锛�
+                    if (item.Status == 0)
+                    {
+                        if (notice.Status == 0)
+                        {
+                            notice.CheckDate = DateTime.Now;
+                            notice.Status = 1;
+                            notice.UpdateUser = _userManager.UserId;
+                            notice.UpdateTime = time;
+                            await Db.Updateable(notice).ExecuteCommandAsync();
+
+                        }
+                    }
+                    var taskNo = Db.Queryable<LogTask>().First(m => m.OrderType == "2" && m.TaskNo != item.TaskNo && m.Status == "1" && m.PalletNo == item.PalletNo);
+                    item.TaskNo = taskNo.TaskNo;
+                    item.Status = 1; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛� 
+                    await Db.Updateable(item).ExecuteCommandAsync();
+
+                    #endregion
+                }
+                else if (locate.Status == "5") //绉诲嚭涓�
+                {
+                    flagList.Add(1);
+                }
+            }
+            //娣诲姞鎿嶄綔鏃ュ織璁板綍
+            //var k = new OperationCrServer().AddLogOperationCr("搴撳唴浣滀笟", "鐩樼偣鍗曟嵁", crNo, "鍑哄簱", $"鐐瑰嚮鍑哄簱鎸夐挳鐩樼偣鍗曞彿涓猴細{crNo}鐨勭洏鐐瑰崟", userId);
+            await _operation.AddLogOperationCr(new OperationInputVm()
+            {
+                ParentName = "搴撳唴浣滀笟",
+                MenuName = "鐩樼偣鍗曟嵁",
+                FkNo = crNo,
+                TypeName = "鍑哄簱",
+                Msg = $"鐐瑰嚮鍑哄簱鎸夐挳鐩樼偣鍗曞彿涓猴細{crNo}鐨勭洏鐐瑰崟"
+            });
+            //Db.CommitTran();
+
+            str = string.Empty;
+            if (flagList.Count(m => m == 1) > 0)
+            {
+                str += "1.褰撳墠瑕佸嚭搴撶殑鍌ㄤ綅姝e湪绉诲嚭銆�";
+            }
+            if (flagList.Count(m => m == 2) > 0)
+            {
+                str += "2.鍑哄簱鐨勬墭鐩樺偍浣嶄俊鎭敊璇�(鍦ㄥ偍浣嶈〃涓湭鏌ヨ鍒�)銆�";
+            }
+            if (flagList.Count(m => m == 3) > 0)
+            {
+                str += "3.鍌ㄤ綅鎹熷潖涓嶈兘鍑哄簱銆�";
+            }
+            if (flagList.Count(m => m == 4) > 0)
+            {
+                str += "4.瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱銆�";
+            }
+            if (flagList.Count(m => m == 5) > 0)
+            {
+                str += "5.瑕佸嚭搴撶殑鎵樼洏鍦ㄩ浂绠卞簱銆�";
+            }
+            if (!string.IsNullOrEmpty(str))
+                throw Oops.Bah(str);
+            if (outDtoList.Count > 0)
+            {
+                // 姝e紡杩愯绋嬪簭鏀惧紑
+                var list2 = outDtoList.Select(m => m.TaskNo).ToList();
+                var jsonData = JsonConvert.SerializeObject(outDtoList);
+                string response = "";
+
+                var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss")
+                                         //response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS"); //姝e紡鐗堟湰鏀惧紑
+                var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss")
+
+                ////瑙f瀽杩斿洖鏁版嵁 
+                //var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
+                //if (wcsModel.StatusCode == 0)
+                //{
+                //    //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
+                //    new TaskServer().EditTaskIssueOk(list2, time1, time2);
+                //    str += "涓嬪彂鎴愬姛";
+                //}
+                //if (wcsModel.StatusCode == -1)
+                //{
+                //    new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg);
+                //    throw Oops.Bah(wcsModel.Msg);
+                //}
+            }
+            return outDtoList;
+            #endregion
+        }
         //鐩樼偣鍑哄簱瀹屾垚
         public async Task CheckSuccess(string taskNo, int userId)
         {

--
Gitblit v1.8.0