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