From 3a050b4d542dd2aefa65de27a6acecca1d9dda3d Mon Sep 17 00:00:00 2001 From: chengsc <11752@DESKTOP-DS49RCP> Date: 星期日, 25 五月 2025 14:27:04 +0800 Subject: [PATCH] 修改问题 --- Wms/WMS.BLL/HttpServer.cs | 678 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 666 insertions(+), 12 deletions(-) diff --git a/Wms/WMS.BLL/HttpServer.cs b/Wms/WMS.BLL/HttpServer.cs index 61228b3..81d4d68 100644 --- a/Wms/WMS.BLL/HttpServer.cs +++ b/Wms/WMS.BLL/HttpServer.cs @@ -1,13 +1,17 @@ 锘縰sing Model.InterFaceModel; +using Model.ModelVm; +using Newtonsoft.Json; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; +using Utility.Tools; using WMS.BLL.Logic; using WMS.BLL.LogServer; using WMS.DAL; using WMS.Entity.BllAsnEntity; +using WMS.Entity.BllQualityEntity; using WMS.Entity.BllSoEntity; using WMS.Entity.Context; using WMS.Entity.DataEntity; @@ -27,10 +31,10 @@ /// </summary> /// <param name="palletNo"></param> /// <param name="houseNo"></param> - /// <param name="roadwayNo"></param> + /// <param name="ceng"></param> /// <returns></returns> /// <exception cref="Exception"></exception> - public OutCommandDto RequestLocation(string palletNo, string houseNo) + public OutCommandDto RequestLocation(string palletNo, string houseNo,string ceng) { try { @@ -80,7 +84,7 @@ } } var upShelfOldList = Db.Queryable<BllPalletUpShelf>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo && (m.Status == "0" || m.Status == "1")).ToList(); - if (upShelfOldList != null) //鏌ヨ鍒板叆搴撲俊鎭� + if (upShelfOldList.Count != 0) //鏌ヨ鍒板叆搴撲俊鎭� { var upShelfOld = upShelfOldList.First(); var beingTask = Db.Queryable<LogTask>().First(m => m.IsDel == "0" && m.TaskNo == upShelfOld.TaskNo); @@ -239,7 +243,7 @@ areaList.Add(item); } - locate = allotLocate.GetSuiTableLocate(houseNo, areaList, ""); + locate = allotLocate.GetSuiTableLocate(houseNo, areaList, "",ceng); #endregion @@ -287,8 +291,8 @@ // 娣诲姞鎵樼洏缁戝畾琛ㄦ墭鐩樺叆搴撲换鍔″彿 liudl foreach (DataStockDetail stockModel in stockDetail) { - var bindModel = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.Status == "2" - && m.PalletNo == stockModel.PalletNo && m.ASNNo == stockModel.ASNNo && m.ASNDetailNo == stockModel.ASNDetailNo); + var bindModel = Db.Queryable<BllPalletBind>().Where(m => m.IsDel == "0" && m.Status == "2" + && m.PalletNo == stockModel.PalletNo && m.ASNNo == stockModel.ASNNo && m.ASNDetailNo == stockModel.ASNDetailNo).OrderByDescending(m=>m.CreateTime).First(); if (bindModel != null && string.IsNullOrWhiteSpace(bindModel.TaskNo)) { bindModel.TaskNo = taskNo; @@ -416,6 +420,10 @@ foreach (var item in stockDetail) { var skuItem = skuList.First(m => m.SkuNo == item.SkuNo); + if (skuItem.SkuNo == "100099") + { + continue; + } if (skuItem.Type != "2") { throw new Exception("鎵樼洏涓婃湁涓嶆槸鎴愬搧鐨勭墿鏂�"); @@ -526,9 +534,9 @@ { areaList.Add(item); } - + var roadStr = Db.Queryable<SysStorageRoadway>().Where(m => m.IsDel == "0" && m.Status == "0").Select(m=>m.RoadwayNo).ToList(); //宸烽亾缁勪俊鎭� - var roadList = Db.Queryable<SysStorageLocat>().Where(m => m.WareHouseNo == houseNo && areaList.Contains(m.AreaNo)) + var roadList = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && m.WareHouseNo == houseNo && areaList.Contains(m.AreaNo) && !string.IsNullOrWhiteSpace(m.RoadwayNo) && roadStr.Contains(m.RoadwayNo)) .GroupBy(m => m.RoadwayNo).OrderBy(m => m.RoadwayNo).Select(m => m.RoadwayNo).ToList(); #endregion @@ -586,8 +594,8 @@ foreach (DataStockDetail stockModel in stockDetail) { - var bindModel = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.Status == "2" - && m.PalletNo == stockModel.PalletNo && m.ASNNo == stockModel.ASNNo && m.ASNDetailNo == stockModel.ASNDetailNo); + var bindModel = Db.Queryable<BllPalletBind>().Where(m => m.IsDel == "0" && m.Status == "2" + && m.PalletNo == stockModel.PalletNo && m.ASNNo == stockModel.ASNNo && m.ASNDetailNo == stockModel.ASNDetailNo).OrderByDescending(m=>m.CreateTime).First(); if (bindModel != null && string.IsNullOrWhiteSpace(bindModel.TaskNo)) { bindModel.TaskNo = taskNo; @@ -719,6 +727,10 @@ foreach (var item in stockDetail) { var skuItem = skuList.First(m => m.SkuNo == item.SkuNo); + if (skuItem.SkuNo == "100099") + { + continue; + } if (skuItem.Type != "2") { throw new Exception("鎵樼洏涓婃湁涓嶆槸鎴愬搧鐨勭墿鏂�"); @@ -839,7 +851,10 @@ } locate = allotLocate.GetMiJiSuiTableLocate(roadwayNo, areaList); - + if (locate == null) + { + throw new Exception($"娌℃湁绌哄偍浣�"); + } #endregion @@ -1021,12 +1036,21 @@ { throw new Exception($"鏈煡璇㈠埌浠诲姟涓殑鍌ㄤ綅淇℃伅"); } - var pingAreaStr = Db.Queryable<SysStorageArea>().Where(m => m.IsDel == "0" && m.WareHouseNo == "W04" && m.AreaNo != "B06" && m.AreaNo != "B07").Select(m => m.AreaNo).ToList(); + var pingAreaStr = Db.Queryable<SysStorageArea>().Where(m => m.IsDel == "0" && m.WareHouseNo == "W04").Select(m => m.AreaNo).ToList(); var pingLocateInfo = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == locate.LocatNo && pingAreaStr.Contains(m.AreaNo) && m.IsDel == "0"); if (pingLocateInfo == null) { throw new Exception("褰撳墠浠诲姟璧峰鍌ㄤ綅涓嶅湪骞冲簱鍌ㄤ綅"); } + var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == task.PalletNo).ToList(); + foreach (var item in stockDetail) + { + item.WareHouseNo = ""; + item.RoadwayNo = ""; + item.AreaNo = ""; + item.LocatNo = ""; + } + Db.Updateable(stockDetail).ExecuteCommand(); locate.Status = "0"; Db.Updateable(locate).ExecuteCommand(); } @@ -1117,7 +1141,637 @@ } } + /// <summary> + /// 绉诲簱鍗曠殑 绉诲簱浠诲姟瀹屾垚JC34 鍏煎AGV灏忚溅绉诲簱 + /// </summary> + /// <param name="taskNo"></param> + /// <param name="userId"></param> + /// <exception cref="Exception"></exception> + public void MoveSuccess(string taskNo, int userId) + { + try + { + Db.BeginTran(); + //姝e父鍏ュ簱 + var task = Db.Queryable<LogTask>().First(m => m.IsDel == "0" && m.TaskNo == taskNo); + if (task == null) + { + throw new Exception("鏈煡璇㈠埌浠诲姟淇℃伅"); + } + if (task.Status == "2") + { + throw new Exception("褰撳墠浠诲姟宸插畬鎴�"); + } + var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToList(); + //鍒ゆ柇鏄惁鏄洖娴佸叆搴撳畬鎴� + if (!stockDetail.Any()) + { + throw new Exception("娌℃湁鏌ヨ鍒板簱瀛樹俊鎭�"); + } + //褰撳墠浠诲姟涓殑鍌ㄤ綅淇℃伅 + var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.StartLocat); + if (locate == null) + { + throw new Exception($"鏈煡璇㈠埌浠诲姟涓殑璧峰鍌ㄤ綅淇℃伅"); + } + //褰撳墠浠诲姟涓殑鍌ㄤ綅淇℃伅 + var locate2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.EndLocat); + if (locate2 == null) + { + throw new Exception($"鏈煡璇㈠埌浠诲姟涓殑鐩爣鍌ㄤ綅淇℃伅"); + } + + task.Status = "2";//浠诲姟鐘舵�� + task.IsSend = 0; + task.IsCancel = 0; + task.IsFinish = 0; + task.FinishDate = DateTime.Now;//瀹屾垚鏃堕棿 + Db.Updateable(task).ExecuteCommand(); + if (userId != 0) + { + //娣诲姞鎿嶄綔鏃ュ織璁板綍 + var k = new OperationASNServer().AddLogOperationAsn("搴撳唴浣滀笟", "搴撳唴鏃ュ織", taskNo, "瀹屾垚", $"鐐瑰嚮瀹屾垚鎸夐挳銆佸畬鎴愪换鍔″彿涓猴細{taskNo}鐨勪换鍔�", userId); + } + + foreach (var item in stockDetail) + { + if (locate2.LocatNo == "B040101") + { + item.WareHouseNo = ""; + item.RoadwayNo = ""; + item.AreaNo = ""; + item.LocatNo = ""; + } + else + { + item.WareHouseNo = locate2.WareHouseNo; + item.RoadwayNo = locate2.RoadwayNo; + item.AreaNo = locate2.AreaNo; + item.LocatNo = locate2.LocatNo; + } + item.UpdateTime = DateTime.Now; + if (userId != 0) + { + item.UpdateUser = userId; + } + } + + if (locate.WareHouseNo != "W04") + { + locate.Status = "0"; + Db.Updateable(locate).ExecuteCommand(); + } + + if (locate2.LocatNo == "B040101") + { + locate2.Status = "0"; + Db.Updateable(locate2).ExecuteCommand(); + } + else + { + locate2.Status = "1"; + Db.Updateable(locate2).ExecuteCommand(); + } + + Db.Updateable(stockDetail).ExecuteCommand(); + Db.CommitTran(); + + } + catch (Exception e) + { + Db.RollbackTran(); + throw new Exception(e.Message); + } + } + + /// <summary> + /// 鍑哄簱鍗曠殑绉诲簱浠诲姟锛孞C34 璐ф灦鎵樼洏涓嬫灦 + /// </summary> + /// <param name="taskNo">浠诲姟鍙�</param> + /// <param name="userId">鎿嶄綔浜�</param> + /// <exception cref="Exception"></exception> + public void ExMoveSuccess(string taskNo, int userId) + { + try + { + //褰撳墠浠诲姟淇℃伅 + var task = Db.Queryable<LogTask>().First(m => m.TaskNo == taskNo && m.IsDel == "0"); + if (task == null) + { + throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹taskNo}鈥欑殑浠诲姟淇℃伅"); + } + if (task.Status == "2") + { + throw new Exception("褰撳墠浠诲姟宸插畬鎴�"); + } + Db.BeginTran(); + //搴撳瓨涓綋鍓嶆墭鐩樼殑淇℃伅 + var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToList(); + //褰撳墠浠诲姟涓殑鐩爣鍌ㄤ綅淇℃伅 + //褰撳墠浠诲姟涓殑鍘熷偍浣� + var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.StartLocat); + if (locate == null) + { + throw new Exception($"WMS绯荤粺涓病鏈夎{task.StartLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�"); + } + var locate2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.EndLocat); + if (locate2 == null) + { + throw new Exception($"WMS绯荤粺涓病鏈夎{task.EndLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�"); + } + //骞冲簱涓偍浣嶉泦鍚� + var pingKuLocate = Db.Queryable<SysStorageLocat>().Where(m => m.WareHouseNo == "W04" && m.IsDel == "0").ToList(); + var pingKuList = pingKuLocate.Select(m => m.LocatNo).ToList(); + try + { + + //task.Status = "5";//浠诲姟鐘舵�� + ////鍒ゆ柇璧峰鐩爣浣嶇疆閮芥槸骞冲簱 + //if (pingKuList.Contains(task.StartLocat) && pingKuList.Contains(task.EndLocat)) + //{ + task.Status = "2"; + //} + + task.IsSend = 0; + task.IsCancel = 0; + task.IsFinish = 0; + task.FinishDate = DateTime.Now;//瀹屾垚鏃堕棿 + Db.Updateable(task).ExecuteCommand(); + + #region 淇敼鍌ㄤ綅鐘舵�� + + if (!pingKuList.Contains(task.StartLocat)) + { + //鍘熷偍浣嶆敼涓虹┖鍌ㄤ綅 0 + locate.Status = "0"; + Db.Updateable(locate).ExecuteCommand(); + } + + + //鐩爣鍌ㄤ綅鏀逛负鏈夎揣鐗� 1 + locate2.Status = "1"; + Db.Updateable(locate2).ExecuteCommand(); + + foreach (var item in stockDetail) + { + item.WareHouseNo = locate2.WareHouseNo; + item.AreaNo = locate2.AreaNo; + item.RoadwayNo = locate2.RoadwayNo; + item.LocatNo = locate2.LocatNo; + } + Db.Updateable(stockDetail).ExecuteCommand(); + + + + #endregion + + Db.CommitTran(); + } + catch (Exception ex) + { + Db.RollbackTran(); + throw new Exception(ex.Message); + } + } + catch (Exception ex) + { + throw new Exception("瀹屾垚鍙嶉澶辫触锛�" + ex.Message); + } + } + + + + /// <summary> + /// PDA涓嬪彂鍑哄簱 + /// </summary> + /// <param name="soNo"></param> + /// <param name="detailId"></param> + /// <param name="outMode"></param> + /// <param name="palletNo"></param> + /// <param name="userId"></param> + /// <param name="url"></param> + /// <param name="str"></param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + public List<OutCommandDto> IssueOutHouseLk(string soNo, string detailId,string outMode, string palletNo, int userId, string url, out string str) + { + try + { + var outDto1 = new List<OutCommandDto>(); //鍑哄簱鏁版嵁鐨勯泦鍚堬紙娣卞害涓�1鐨勫偍浣嶏級 + //璁板綍閿欒淇℃伅鐨勯泦鍚� //1:褰撳墠瑕佸嚭搴撶殑鍌ㄤ綅姝e湪绉诲嚭銆�2 鍑哄簱鐨勬墭鐩樺偍浣嶄俊鎭敊璇�(鍦ㄥ偍浣嶈〃涓湭鏌ヨ鍒�)銆�3鍌ㄤ綅鎹熷潖涓嶈兘鍑哄簱銆�4 瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱 + + + var com = new Common(); + var notice = Db.Queryable<BllExportNotice>().First(m => m.SONo == soNo && m.IsDel == "0"); + if (notice == null) + { + throw new Exception($"鏈壘鍒皗soNo}鍑哄簱鍗曚俊鎭�"); + } + if (notice.WareHouseNo != "W02") + { + throw new Exception("浠撳簱鍙烽敊璇�"); + } + var intDetailId = int.Parse(detailId); + if (intDetailId <=0) + { + throw new Exception("閫夋嫨鐨勫嚭搴撳崟鏄庣粏鍙傛暟閿欒"); + } + //鎵�鏈夎鍑哄簱鐨勫嚭搴撳垎閰嶄俊鎭�(鏈笅鍙戠殑淇℃伅鍜屽緟鎷h揣鐨勪俊鎭�) + var item = Db.Queryable<BllExportAllot>().First(a => a.IsDel == "0" && a.SONo == soNo && a.SODetailNo == intDetailId && a.Status == "0" ); + if (item == null) //鍒ゆ柇鏄惁鏈夐渶瑕佷笅鍙戠殑鍑哄簱娴佹按 + { + throw new Exception("褰撳墠鍑哄簱鍗曟嵁鏃犻渶瑕佷笅鍙戠殑鎵樼洏"); + } + + #region 闆嗗悎 + + //瑕佸嚭搴撶殑鏄庣粏闆嗗悎 + var outStockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == item.PalletNo).ToList(); + //鐗╂枡缂栫爜琛� + var skuList = Db.Queryable<SysMaterials>().Where(w => w.IsDel == "0"); + //鍖呰琛� + var packagList = Db.Queryable<SysPackag>().Where(w => w.IsDel == "0"); + Db.BeginTran(); + try + { + List<LogTask> logTaskList = new List<LogTask>();//姝ゆ鍑哄簱浠诲姟闆嗗悎锛屼负搴斿鍚屾墭鐩樹笉鍚岀墿鏂欏嚭搴� + var i = 0; + str = string.Empty; + var outLocatelist1 = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && m.AreaNo == "B02" && m.Flag == "0").ToList(); + var outLocatelist2 = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && m.AreaNo == "B05" && m.Flag == "0").ToList(); + //寰幆鍒嗛厤鐨勪俊鎭敓鎴愬嚭搴撲换鍔� + + var outModeLocate = outMode; + + var taskNoStr = ""; + + // 鍌ㄤ綅鍙� + var locateNo = outStockDetail.First(m => m.PalletNo == item.PalletNo).LocatNo; + + #region 鍒ゆ柇 + + //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱鍐� + if (string.IsNullOrWhiteSpace(locateNo)) //搴撳 + { + //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ叆搴撲腑 + var imBl = com.GetImTask(item.PalletNo); + if (imBl != null) + { + str = "瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱"; + return outDto1; + } + //鍒ゆ柇鏄惁鏄凡缁忓嚭杩囧簱鍙堝洖搴� + if (item.Status == "0") + { + //濡傛灉涓嶅湪浠撳簱鍐咃紝褰撳墠鍒嗛厤淇℃伅鐩存帴鏇存柊鍑哄簱瀹屾垚 + item.Status = "2";//鐘舵�� + item.OutMode = outModeLocate;//鍑哄簱鍙� + Db.Updateable(item).ExecuteCommand(); + var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.Id == item.SODetailNo); + if (noticeDetail != null) //鏇存柊鍑哄簱鍗曟嵁鐨勪笅鍙戞暟閲� + { + noticeDetail.FactQty += item.Qty; + Db.Updateable(noticeDetail).ExecuteCommand(); + } + + //var notice2 = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == item.SONo); + if (notice.Status == "0" || notice.Status == "1" || notice.Status == "2") + { + var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == item.SONo).ToList(); + if (detailList.Count(m => m.Qty >= m.AllotQty) > 0) + { + notice.Status = "3"; //鍙樻洿鐘舵�佷负姝e湪鎵ц + Db.Updateable(notice).ExecuteCommand(); + } + } + str = "瑕佸嚭搴撶殑鎵樼洏宸插湪搴撳"; + return outDto1; + } + str = "瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱"; + return outDto1; + } + + var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == locateNo && m.IsDel == "0");//褰撳墠鍑哄簱鐨勫偍浣嶄俊鎭� + if (locate == null) + { + str = "鍑哄簱鐨勬墭鐩樺偍浣嶄俊鎭敊璇�(鍦ㄥ偍浣嶈〃涓湭鏌ヨ鍒�)"; + return outDto1; + } + //鍒ゆ柇鍌ㄤ綅鏍囧織鏄惁涓烘崯鍧� + if (locate.Flag == "2") + { + str = "鍌ㄤ綅鎹熷潖涓嶈兘鍑哄簱"; + return outDto1; + } + if (locate.WareHouseNo != "W02") + { + str = "鎵樼洏涓嶅湪璐ф灦搴撲笂"; + return outDto1; + } + var locateEnd = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == outModeLocate && m.IsDel == "0");//褰撳墠鍑哄簱鐨勭洰鏍囧偍浣嶄俊鎭� + if (locateEnd == null) + { + str = "鍑哄簱鐨勬墭鐩樺偍浣嶄俊鎭敊璇�(鍦ㄥ偍浣嶈〃涓湭鏌ヨ鍒�)"; + return outDto1; + } + else if (locateEnd.Status != "0") + { + str = "鐩爣鍌ㄤ綅鐘舵�佷笉鏄┖鍌ㄤ綅"; + return outDto1; + } + #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 = outModeLocate,//鐩爣浣嶇疆 + PalletNo = item.PalletNo,//鎵樼洏鐮� + IsSend = 1,//鏄惁鍙啀娆′笅鍙� + IsCancel = 1,//鏄惁鍙彇娑� + IsFinish = 1,//鏄惁鍙畬鎴� + Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 + Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 + OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� + Msg = "浠�" + locate.LocatNo + "鍒�" + outModeLocate + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅 + }; + Db.Insertable(exTask).ExecuteCommand(); + logTaskList.Add(exTask); + + outDto1.Add(new OutCommandDto() + { + TaskNo = exTask.TaskNo, // 浠诲姟鍙� + TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)0鍏� 1鍑� 2绉� + + PalletNo = item.PalletNo,//鎵樼洏鍙� + StartLocate = locate.LocatNo, // 璧峰浣嶇疆 + StartRoadway = locate.RoadwayNo,//鍏跺疄宸烽亾 + EndLocate = outModeLocate, // 鐩爣浣嶇疆 + + Order = 999, + Type = PLCTypeEnum.AGV + + }); + taskNoStr = exTask.TaskNo; + + #endregion + + #region 鏀瑰彉鏁版嵁 + if (item.Status == "0")//鍒ゆ柇鎵樼洏鏄惁涓嬪彂杩� + { + var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.Id == item.SODetailNo); + if (noticeDetail != null) //鏇存柊鍑哄簱鍗曟嵁鐨勪笅鍙戞暟閲� + { + noticeDetail.FactQty += item.Qty; + Db.Updateable(noticeDetail).ExecuteCommand(); + } + + //var notice2 = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == item.SONo); + if (notice.Status == "0" || notice.Status == "1" || notice.Status == "2") + { + var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == item.SONo).ToList(); + if (detailList.Count(m => m.Qty >= m.AllotQty) > 0) + { + notice.Status = "3"; //鍙樻洿鐘舵�佷负姝e湪鎵ц + Db.Updateable(notice).ExecuteCommand(); + } + } + } + locate.Status = "3"; //瑕佸嚭搴撶殑鍌ㄤ綅鏀瑰彉鐘舵�� 姝e湪鍑哄簱 + Db.Updateable(locate).ExecuteCommand(); + var locate2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == outModeLocate && m.IsDel == "0");//褰撳墠鍑哄簱鐨勭洰鏍囧偍浣嶄俊鎭� + locate2.Status = "4"; + Db.Updateable(locate2).ExecuteCommand(); + + item.TaskNo = taskNoStr; // 鍑哄簱鍒嗛厤淇℃伅涓洿鏂颁换鍔″彿 + item.Status = "1"; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛� + //item.UnstackingMode = unstackingMode2;//鎷嗗灈鏂瑰紡 + item.OutMode = outModeLocate;//鍑哄簱鍙� + //item.LoadingAddre = unstackingMode2 == "0" ? loadingAddre : "";//瑁呰溅鍙� + Db.Updateable(item).ExecuteCommand(); + + #endregion + + } + else if (locate.Status == "3") //鍑哄簱涓� + { + #region 鏀瑰彉鏁版嵁 + //鍒ゆ柇鏄惁鏄凡缁忓嚭杩囧簱鍙堝洖搴擄紙鐘舵�佷负寰呮嫞璐х殑 1锛� + if (item.Status == "0") + { + var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.Id == item.SODetailNo); + if (noticeDetail != null) //鏇存柊鍑哄簱鍗曟嵁鐨勪笅鍙戞暟閲� + { + noticeDetail.FactQty += item.Qty; + Db.Updateable(noticeDetail).ExecuteCommand(); + } + + //var notice2 = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == item.SONo); + if (notice.Status == "0" || notice.Status == "1" || notice.Status == "2") + { + var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == item.SONo).ToList(); + if (detailList.Count(m => m.Qty >= m.AllotQty) > 0) + { + notice.Status = "3"; //鍙樻洿鐘舵�佷负姝e湪鎵ц + Db.Updateable(notice).ExecuteCommand(); + } + } + } + var taskNo = Db.Queryable<LogTask>().First(m => m.OrderType == "1" && m.TaskNo != item.TaskNo && m.Status == "1" && m.PalletNo == item.PalletNo); + if (taskNo == null) + { + taskNo = logTaskList.FirstOrDefault(m => m.PalletNo == item.PalletNo);//褰撳墠鏈夊悓鎵樼洏涓嶅悓鐗╂枡鍑哄簱 + } + if (taskNo == null) + { + throw new Exception($"鎵樼洏鍙凤細{item.PalletNo},鍑哄簱寮傚父"); + } + item.TaskNo = taskNo.TaskNo; + item.Status = "1"; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛� + item.OutMode = item.OutMode;//鍑哄簱鍙� + //item.UnstackingMode = unstackingMode2;//鎷嗗灈妯″紡 + Db.Updateable(item).ExecuteCommand(); + + #endregion + } + else if (locate.Status == "5") //绉诲嚭涓� + { + str = "褰撳墠瑕佸嚭搴撶殑鍌ㄤ綅姝e湪绉诲嚭"; + return outDto1; + } + + + //娣诲姞鎿嶄綔鏃ュ織璁板綍 + var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "涓嬪彂鍑哄簱", soNo, "鍑哄簱", $"鐐瑰嚮鍑哄簱鎸夐挳鍑哄簱鍗曞彿涓猴細{soNo}鐨勫嚭搴撳崟", userId); + Db.CommitTran(); + + if (outDto1.Count > 0) + { + // 姝e紡杩愯绋嬪簭鏀惧紑 + var list2 = outDto1.Select(m => m.TaskNo).ToList(); + var jsonData = JsonConvert.SerializeObject(outDto1); + string response = ""; + + try + { + var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss") + response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS"); + var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss") + + //瑙f瀽杩斿洖鏁版嵁 + var wcsModel = JsonConvert.DeserializeObject<WcsModel2>(response); + if (wcsModel.code == 200) + { + //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�// + new TaskServer().EditTaskIssueOk(list2, time1, time2); + str = "涓嬪彂鎴愬姛"; + } + else + { + new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.message); + throw new Exception(wcsModel.message); + } + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + + } + + return outDto1; + } + catch (Exception e) + { + Db.RollbackTran(); + throw new Exception(e.Message); + } + + + #endregion + } + catch (Exception e) + { + throw new Exception(e.Message); + } + } + + + #region MyRegion + + + /// <summary> + /// 鍚慙imes鍙戦�佽楠屼俊鎭� + /// </summary> + /// <param name="model">model.Id:璇烽獙鍗曚富閿紱model.Code:鍑哄簱鍙� </param> + /// <param name="userId">鎿嶄綔鐢ㄦ埛</param> + /// <param name="url">Wcs鍦板潃</param> + /// <returns></returns> + public bool SendInspectionRequest(IdVm model, int userId, string url, string userName) + { + try + { + // 鍒ゆ柇璇烽獙鍗曠姸鎬� + var data = Db.Queryable<BllQualityInspectionRequest>() + .Where(m => m.QcNo == model.Code && m.IsDel == "0" && m.Status == "0").ToList().FirstOrDefault(); + if (data == null) + { + throw new Exception("鎿嶄綔澶辫触!璇烽獙鍗曠姸鎬佸彉鏇�."); + } + + // 璁板綍浠诲姟鏃ュ織 + //var taskNo = new Common().GetMaxNo("TK"); + //var exTask = new LogTask() + //{ + // TaskNo = taskNo, + // Sender = "WMS", + // Receiver = "Limes", + // IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 + // StartLocat = "", //璧峰浣嶇疆 + // PalletNo = "", //鎵樼洏鐮� + // IsSend = 1, //鏄惁鍙啀娆′笅鍙� + // IsCancel = 1, //鏄惁鍙彇娑� + // IsFinish = 1, //鏄惁鍙畬鎴� + // Status = "0", //浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 + // OrderType = "5", //0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� 4 鍙栨牱鍑哄簱鍗� 5 鍏朵粬 + // EndLocat = "", //鐩爣浣嶇疆 + // Type = "3", //浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 + // Msg = "璇烽獙浠诲姟" + //}; + + //// 鎻掑叆浠诲姟鏃ュ織 + //Db.Insertable(exTask).ExecuteCommand(); + + + // 璋冪敤Limes鎺ュ彛鍙戣捣璇烽獙 + var sendModel = new SendLimesModel() + { + QcNo = data.QcNo, + SkuNo = data.SkuNo, + Qty = data.Qty.ToString(), + LotNo = data.LotNo, + SupplierLot = data.SupplierLot, + RequestUser = userName, // 璇烽獙浜� + }; + var jsonData = JsonConvert.SerializeObject(sendModel); + string response = ""; + + try + { + var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss") + //response = HttpHelper.DoPost(url, jsonData, "涓婁紶Limes绯荤粺鍙戣捣璇烽獙", "Limes"); + var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss") + + ////瑙f瀽杩斿洖鏁版嵁 + //var limesModel = JsonConvert.DeserializeObject<LimesModel>(response); + //if (limesModel.Success == 0) + //{ + + + // 鏇存柊璇烽獙鍗曚俊鎭� + data.Status = "1"; + data.SamplingQty = 10;//decimal.Parse(limesModel.SamplingQty); + data.RequestUser = userId; + data.RequestTime = DateTime.Now; + data.UpdateTime = DateTime.Now; + data.UpdateUser = userId; + + Db.Updateable(data).ExecuteCommand(); + //} + //if (limesModel.Success == -1) + //{ + + // throw new Exception(limesModel.Message); + //} + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + + //娣诲姞鎿嶄綔鏃ュ織璁板綍 + var k = new OperationCrServer() + .AddLogOperationCr("璐ㄩ噺绠$悊", "璐ㄦ璇烽獙", model.Code, "璇烽獙", $"鍚戣川閲忛儴鍒嗗彂璧疯楠�!", userId); + + return true; + } + catch (Exception e) + { + throw new Exception(e.Message); + } + } + + #endregion } -- Gitblit v1.8.0