From 3a5257be69608f4301fe1a1e207db7d95cc4178c Mon Sep 17 00:00:00 2001 From: chengsc <11752@DESKTOP-DS49RCP> Date: 星期日, 11 五月 2025 16:31:40 +0800 Subject: [PATCH] 修改问题 --- Wms/WMS.BLL/HttpServer.cs | 1192 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 1,190 insertions(+), 2 deletions(-) diff --git a/Wms/WMS.BLL/HttpServer.cs b/Wms/WMS.BLL/HttpServer.cs index 210df4f..4175a56 100644 --- a/Wms/WMS.BLL/HttpServer.cs +++ b/Wms/WMS.BLL/HttpServer.cs @@ -1,8 +1,14 @@ -锘縰sing SqlSugar; +锘縰sing Model.InterFaceModel; +using SqlSugar; using System; using System.Collections.Generic; +using System.Linq; using System.Text; +using WMS.BLL.Logic; 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; @@ -16,6 +22,991 @@ private static readonly SqlSugarScope Db = DataContext.Db; public HttpServer() { } + /// <summary> + /// 鐢宠鍌ㄤ綅 锛堢珛浣撳簱锛� + /// </summary> + /// <param name="palletNo"></param> + /// <param name="houseNo"></param> + /// <param name="roadwayNo"></param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + public OutCommandDto RequestLocation(string palletNo, string houseNo) + { + try + { + //楠岃瘉鎵樼洏鏉$爜鏄惁涓虹┖ + if (string.IsNullOrEmpty(palletNo)) + { + throw new Exception("璇疯緭鍏ヨ鐢宠鐨勬墭鐩樻潯鐮�"); + } + //楠岃瘉鎵�灞炰粨搴撴槸鍚︿负绌� + if (string.IsNullOrEmpty(houseNo)) + { + throw new Exception("璇烽�夋嫨鎵�灞炰粨搴�"); + } + //楠岃瘉鏄惁涓哄钩搴撳叆搴� + var houseType = Db.Queryable<SysWareHouse>().First(a => a.WareHouseNo == houseNo);//鑾峰彇浠撳簱绫诲瀷 + //楠岃瘉鏄惁涓虹珛浣撳簱鍏ュ簱 + if (houseType.Type != "1") + { + throw new Exception("浠撳簱绫诲瀷閿欒锛岃閫夋嫨绔嬩綋搴撲粨搴�"); + } + + OutCommandDto comDto;//杩斿洖wcs鐨勫叆搴撳懡浠� + + var stock = Db.Queryable<SysPallets>().First(a => a.PalletNo == palletNo);//鎵樼洏淇℃伅 + + //鍒ゆ柇鎵樼洏鏉$爜鏄惁鏈夋晥 + if (stock == null) + throw new Exception("鎵樼洏鏉$爜涓嶅彈WMS绠$悊锛屼笉鍙叆搴擄紒"); + + #region + + + var skuList = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0").ToList(); + //鐗╂枡绫诲埆淇℃伅 + var skuCategoryList = Db.Queryable<SysMaterialCategory>().Where(m => m.IsDel == "0").ToList(); + + var skuNo = ""; //鍏ュ簱鐗╂枡 + var starLocate = ""; // 璧峰鍌ㄤ綅 + var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == palletNo).ToList(); + //楠岃瘉鐗╂枡鏄惁鏈夋垚鍝� + foreach (var item in stockDetail) + { + var skuItem = skuList.First(m => m.SkuNo == item.SkuNo); + if (skuItem.Type == "2") + { + throw new Exception("鎴愬搧鐗╂枡璇峰叆鎴愬搧搴�"); + } + } + var upShelfOldList = Db.Queryable<BllPalletUpShelf>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo && (m.Status == "0" || m.Status == "1")).ToList(); + if (upShelfOldList != null) //鏌ヨ鍒板叆搴撲俊鎭� + { + var upShelfOld = upShelfOldList.First(); + var beingTask = Db.Queryable<LogTask>().First(m => m.IsDel == "0" && m.TaskNo == upShelfOld.TaskNo); + if (beingTask == null) + { + throw new Exception("璇ユ墭鐩樻鍦ㄥ叆搴擄紝浣嗘湭鏌ヨ鍒颁换鍔′俊鎭�"); + } + if (!string.IsNullOrWhiteSpace(beingTask.EndLocat)) + { + comDto = new OutCommandDto() + { + TaskNo = beingTask.TaskNo, // 浠诲姟鍙� + TaskType = "0",// 浠诲姟绫诲瀷 + PalletNo = palletNo,//鎵樼洏鍙� + + StartRoadway = beingTask.StartRoadway, // 璧峰宸烽亾 + StartLocate = beingTask.StartLocat, // 璧峰浣嶇疆 + EndLocate = beingTask.EndLocat, // 鐩爣浣嶇疆 + EndRoadway = beingTask.EndRoadway, // 鐩爣宸烽亾 + + Order = 999, + Type = PLCTypeEnum.AGV + }; + if (beingTask.IsSuccess == 0) + { + beingTask.IsSuccess = 1; + } + beingTask.Status = "1"; + Db.Updateable(beingTask).ExecuteCommand(); + + foreach (var item in upShelfOldList) + { + if (item.Status == "0") + { + upShelfOld.Status = "1"; + Db.Updateable(upShelfOld).ExecuteCommand(); + } + } + + return comDto; + } + else + { + throw new Exception("鏌ヨ鍒颁换鍔′絾鐩殑鍌ㄤ綅涓虹┖"); + } + } + else //鐢宠鍏ュ簱 + { + if (stockDetail.Count == 0) + { + throw new Exception($"{palletNo}鎵樼洏鏉$爜涓嶅叿鏈夌鐮佷俊鎭紝涓嶅彲鍏ュ簱锛�"); + } + if (stockDetail.Count(m => !string.IsNullOrWhiteSpace(m.LocatNo)) == 0) + { + throw new Exception("褰撳墠鎵樼洏娌℃湁鍦ㄥ钩搴撳偍浣嶄笂锛岃鏍稿疄"); + } + starLocate = stockDetail.First().LocatNo; + + 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 pingLocateInfo = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == starLocate && pingAreaStr.Contains(m.AreaNo) && m.IsDel == "0"); + if (pingLocateInfo == null) + { + throw new Exception("褰撳墠鎵樼洏鎵�鍦ㄧ殑鍌ㄤ綅娌℃湁鍦ㄧ郴缁熶腑鎵惧埌淇℃伅"); + } + if (pingLocateInfo.Status != "1") + { + throw new Exception("褰撳墠鎵樼洏鎵�鍦ㄧ殑鍌ㄤ綅鐘舵�侀敊璇紝涓嶆槸绌哄偍浣�"); + } + skuNo = stockDetail.First().SkuNo; + + var beingTask = Db.Queryable<LogTask>().First(m => m.IsDel == "0" + && (m.Status == "0" || m.Status == "1") && m.PalletNo == palletNo && m.Type == "0"); + if (beingTask != null) + { + if (!string.IsNullOrWhiteSpace(beingTask.EndLocat)) + { + comDto = new OutCommandDto() + { + PalletNo = palletNo,//鎵樼洏鍙� + StartRoadway = beingTask.StartRoadway, // 璧峰宸烽亾 + StartLocate = beingTask.StartLocat, // 璧峰浣嶇疆 + EndLocate = beingTask.EndLocat, // 鐩爣浣嶇疆 + EndRoadway = beingTask.EndRoadway, // 鐩爣宸烽亾 + TaskNo = beingTask.TaskNo, // 浠诲姟鍙� + TaskType = "0",// 浠诲姟绫诲瀷 (鍑哄簱) + OutMode = "", //鐩爣鍦板潃 + Order = 1, + Type = PLCTypeEnum.AGV + }; + if (beingTask.IsSuccess == 0) + { + beingTask.IsSuccess = 1; + + } + beingTask.Status = "1"; + Db.Updateable(beingTask).ExecuteCommand(); + return comDto; + } + else + { + throw new Exception("鏌ヨ鍒颁换鍔′絾鐩殑鍌ㄤ綅涓虹┖"); + } + } + + //鑾峰彇瀵瑰簲鍥炲簱瑙勫垯 + var function = Db.Queryable<SysFunSetting>().First(a => a.IsDel == "0" && a.FunSetName == "鎵樼洏鍥炲簱楠岃瘉" && a.IsEnable == "NO"); + #region 鎵樼洏鍥炲簱瑙勫垯 + + if (function != null) + { + //鎷h揣瀹屾垚鍚庡厑璁告墭鐩樺洖搴� + if (function.SetValue == "CompletePick") + { + var allot = Db.Queryable<BllExportAllot>().First(a => a.IsDel == "0" && a.LotNo == stockDetail[0].LotNo && a.PalletNo == palletNo && a.SkuNo == stockDetail[0].SkuNo); + + //楠岃瘉鎷h揣鏄庣粏鏄惁瀛樺湪 + if (allot != null) + { + //楠岃瘉褰撳墠鎵樼洏鎷h揣淇℃伅鏄惁宸插畬鎴� + if (allot.Status != "5") + { + throw new Exception("褰撳墠鎵樼洏鎷h揣淇℃伅鏈畬鎴愶紝璇峰畬鎴愬悗鍥炲簱锛�"); + } + } + } + } + #endregion + } + + var allotLocate = new AllotLocation(); + + #region 鐢宠鍌ㄤ綅 + + SysStorageLocat locate; + var sku = skuList.FirstOrDefault(m => m.SkuNo == skuNo); + if (sku == null) + { + throw new Exception("鐗╂枡淇℃伅涓湭鏌ヨ鍒板叆搴撳崟鏄庣粏鍖呭惈鐨勭墿鏂欎俊鎭紝涓嶅彲鍏ュ簱"); + } + //鍒ゆ柇鐗╂枡鏄惁鍚湁绫诲埆淇℃伅 + if (string.IsNullOrWhiteSpace(sku.CategoryNo)) + { + throw new Exception($"鐗╂枡锛歿sku.SkuNo}鏈煡璇㈠埌绫诲埆淇℃伅"); + } + + var skuCategory = skuCategoryList.FirstOrDefault(m => m.CategoryNo == sku.CategoryNo); + if (skuCategory == null) + { + throw new Exception($"鏈湪绫诲埆淇℃伅涓煡璇㈠埌鐗╂枡锛歿sku.SkuNo}鍖呭惈鐨勭被鍒�"); + } + + var areaStr = skuCategory.AreaNo.Split(","); + var areaList = new List<string>(); + foreach (var item in areaStr) + { + areaList.Add(item); + } + + locate = allotLocate.GetSuiTableLocate(houseNo, areaList, ""); + + + #endregion + + Db.BeginTran(); + try + { + + + //娣诲姞宸烽亾浣跨敤璁板綍 + var log = new SysRoadwayUseLog + { + RoadwayNo = locate.RoadwayNo, + WareHouseNo = houseNo, + Row = 0, + Column = 0, + Layer = 0, + }; + Db.Insertable(log).ExecuteCommand(); + var taskNo = new Common().GetMaxNo("TK"); + var inTask = new LogTask //鍏ュ簱浠诲姟 + { + TaskNo = taskNo, + Sender = "WMS", + Receiver = "WCS", + IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 + SendDate = DateTime.Now, //鍙戦�佹椂闂� + BackDate = DateTime.Now, //杩斿洖鏃堕棿 + StartRoadway = "", // 璧峰宸烽亾 + StartLocat = starLocate,//璧峰浣嶇疆 + EndLocat = locate.LocatNo,//鐩爣浣嶇疆 + EndRoadway = locate.RoadwayNo, // 鐩爣宸烽亾 + PalletNo = palletNo,//鎵樼洏鐮� + IsSend = 1,//鏄惁鍙啀娆′笅鍙� + IsCancel = 1,//鏄惁鍙彇娑� + IsFinish = 1,//鏄惁鍙畬鎴� + Type = "0",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 + Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 + OrderType = "0",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� + Msg = "鍏ュ簱鍙e埌=>>" + locate.LocatNo + "鐨勫叆搴撲换鍔�", //鍏抽敭淇℃伅 + + }; + Db.Insertable(inTask).ExecuteCommand(); + var asnNo = ""; + // 娣诲姞鎵樼洏缁戝畾琛ㄦ墭鐩樺叆搴撲换鍔″彿 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); + if (bindModel != null && string.IsNullOrWhiteSpace(bindModel.TaskNo)) + { + bindModel.TaskNo = taskNo; + bindModel.WareHouseNo = locate.WareHouseNo; + bindModel.RoadwayNo = locate.RoadwayNo; + bindModel.LocatNo = locate.LocatNo; + Db.Updateable(bindModel).ExecuteCommand(); + asnNo = stockModel.ASNNo; + } + } + foreach (DataStockDetail stockModel in stockDetail) + { + //娣诲姞鎵樼洏涓婃灦璁板綍 + var upShelf = new BllPalletUpShelf() + { + TaskNo = inTask.TaskNo, + TraceNo = asnNo, + PalletNo = palletNo, + SkuNo = stockModel.SkuNo, + SkuName = stockModel.SkuName, + LotNo = stockModel.LotNo, + Status = "1", + + WareHouseNo = houseNo, + RoadwayNo = locate.RoadwayNo, + AreaNo = locate.AreaNo, + LocatNo = locate.LocatNo, + + CreateUser = 0, + }; + Db.Insertable(upShelf).ExecuteCommand(); + } + + + locate.Status = "2"; + Db.Updateable(locate).ExecuteCommand(); + + Db.CommitTran(); + comDto = new OutCommandDto() + { + TaskNo = taskNo, // 浠诲姟鍙� + TaskType = "0",// 浠诲姟绫诲瀷 + PalletNo = palletNo,//鎵樼洏鍙� + + StartRoadway = inTask.StartRoadway, + StartLocate = inTask.StartLocat, // 璧峰浣嶇疆 + EndLocate = inTask.EndLocat, // 鐩爣浣嶇疆 + EndRoadway = inTask.EndRoadway, // 鐩爣宸烽亾 + + Order = 999, + Type = PLCTypeEnum.AGV + }; + + } + catch (Exception ex) + { + Db.RollbackTran(); + throw new Exception(ex.Message); + } + #endregion + + + return comDto; + } + catch (Exception e) + { + throw new Exception(e.Message); + } + } + + /// <summary> + /// 鐢宠宸烽亾(瀵嗛泦搴�) + /// </summary> + /// <param name="palletNo"></param> + /// <param name="houseNo"></param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + public OutCommandDto RequestMiJiRoadWay(string palletNo, string houseNo) + { + try + { + #region 楠岃瘉鎵樼洏鍚堟硶鎬� + //楠岃瘉鎵樼洏鏉$爜鏄惁涓虹┖ + if (string.IsNullOrEmpty(palletNo)) + { + throw new Exception("璇疯緭鍏ヨ鐢宠鐨勬墭鐩樻潯鐮�"); + } + //楠岃瘉鎵�灞炰粨搴撴槸鍚︿负绌� + if (string.IsNullOrEmpty(houseNo)) + { + throw new Exception("璇烽�夋嫨鎵�灞炰粨搴�"); + } + //鑾峰彇浠撳簱绫诲瀷 + var houseType = Db.Queryable<SysWareHouse>().First(a => a.WareHouseNo == houseNo); + //楠岃瘉鏄惁涓哄瘑闆嗗簱 + if (houseType.Type != "3") + { + throw new Exception("浠撳簱涓嶆槸瀵嗛泦搴�"); + } + + var stock = Db.Queryable<SysPallets>().First(a => a.PalletNo == palletNo);//鎵樼洏淇℃伅 + //鍒ゆ柇鎵樼洏鏉$爜鏄惁鏈夋晥 + if (stock == null) + { + throw new Exception("鎵樼洏鏉$爜涓嶅彈WMS绠$悊锛屼笉鍙叆搴擄紒"); + } + #endregion + + OutCommandDto comDto;//杩斿洖wcs鐨勫叆搴撳懡浠� + + #region 浠g爜鍧� + + //鏌ヨ鎵樼洏缁戝畾淇℃伅(鐘舵�佷负绛夊緟鍏ュ簱/姝e湪鎵ц鐨�) + + var skuNo = ""; //鍏ュ簱鐗╂枡 + var lotNo = ""; //鍏ュ簱鎵规 + + //鐗╂枡淇℃伅 + var skuList = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0").ToList(); + //鐗╂枡绫诲埆淇℃伅 + var skuCategoryList = Db.Queryable<SysMaterialCategory>().Where(m => m.IsDel == "0").ToList(); + //鎵樼洏搴撳瓨淇℃伅 + var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == palletNo).ToList(); + //楠岃瘉鐗╂枡鏄惁鏈夋垚鍝� + 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("鎵樼洏涓婃湁涓嶆槸鎴愬搧鐨勭墿鏂�"); + } + } + var upShelfOld = Db.Queryable<BllPalletUpShelf>().First(m => m.IsDel == "0" && m.PalletNo == palletNo && (m.Status == "0" || m.Status == "1")); + + if (upShelfOld != null) //姝e父鍏ュ簱 + { + var beingTask = Db.Queryable<LogTask>().First(m => m.IsDel == "0" && m.TaskNo == upShelfOld.TaskNo); + if (beingTask == null) + { + throw new Exception("璇ユ墭鐩樻鍦ㄥ叆搴擄紝浣嗘湭鏌ヨ鍒颁换鍔′俊鎭�"); + } + if (!string.IsNullOrWhiteSpace(beingTask.EndRoadway)) + { + comDto = new OutCommandDto() + { + TaskNo = beingTask.TaskNo, // 浠诲姟鍙� + TaskType = "0",// 浠诲姟绫诲瀷 + PalletNo = palletNo,//鎵樼洏鍙� + + StartRoadway = beingTask.StartRoadway, // 璧峰宸烽亾 + StartLocate = beingTask.StartLocat, // 璧峰浣嶇疆 + EndLocate = beingTask.EndLocat, // 鐩爣浣嶇疆 + EndRoadway = beingTask.EndRoadway, // 鐩爣宸烽亾 + + Order = 999, + Type = PLCTypeEnum.ConveyorLine + }; + if (beingTask.IsSuccess == 0) + { + beingTask.IsSuccess = 1; + } + beingTask.Status = "1"; + Db.Updateable(beingTask).ExecuteCommand(); + if (upShelfOld.Status == "0") + { + upShelfOld.Status = "1"; + Db.Updateable(upShelfOld).ExecuteCommand(); + } + return comDto; + } + else + { + throw new Exception("鏌ヨ鍒颁换鍔′絾鐩殑宸烽亾涓虹┖"); + } + } + else //鐢宠鍏ュ簱 + { + if (stockDetail.Count == 0) + { + throw new Exception($"{palletNo}鎵樼洏涓嶅瓨鍦ㄥ簱瀛樹俊鎭紝涓嶅彲鍏ュ簱锛�"); + } + if (stockDetail.Count(m => !string.IsNullOrWhiteSpace(m.LocatNo)) > 0) + { + throw new Exception("褰撳墠鎵樼洏宸插湪搴撳唴锛岃鏍稿疄"); + } + skuNo = stockDetail.First().SkuNo; + lotNo = stockDetail.First().LotNo; + + #region 鍒ゆ柇璇ユ墭鐩橈紝鏄惁绗﹀悎鍥炲簱鍔熻兘璁惧畾鐨勫洖搴撹鍒� + //鑾峰彇瀵瑰簲鍥炲簱瑙勫垯 + var function = Db.Queryable<SysFunSetting>().First(a => a.IsDel == "0"&& a.FunSetNo == "Fun041" && a.IsEnable == "NO"); + if (function != null) + { + //鎷h揣瀹屾垚鍚庡厑璁告墭鐩樺洖搴� + var allot = Db.Queryable<BllExportAllot>().First(a => a.IsDel == "0"&& a.LotNo == stockDetail[0].LotNo && a.PalletNo == palletNo && a.SkuNo == stockDetail[0].SkuNo); + + //楠岃瘉鎷h揣鏄庣粏鏄惁瀛樺湪 + if (allot != null) + { + //楠岃瘉褰撳墠鎵樼洏鎷h揣淇℃伅鏄惁宸插畬鎴� + if (allot.Status != "5") + { + throw new Exception("褰撳墠鎵樼洏鎷h揣淇℃伅鏈畬鎴愶紝璇峰畬鎴愬悗鍥炲簱锛�"); + } + } + } + #endregion + } + + var allotLocate = new AllotLocation(); + + #region 鏍规嵁sku纭鍖哄煙鍒掑垎 + + //鐗╂枡淇℃伅 + var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == skuNo); + if (sku == null) + { + throw new Exception("鐗╂枡缂栫爜涓嶅瓨鍦紝涓嶅彲鍏ュ簱"); + } + //鍒ゆ柇鐗╂枡鏄惁鍚湁绫诲埆淇℃伅 + if (string.IsNullOrWhiteSpace(sku.CategoryNo)) + { + throw new Exception($"鐗╂枡锛歿sku.SkuNo}鏈缃被鍒�,涓嶅彲鍏ュ簱"); + } + //鐗╂枡绫诲埆淇℃伅 + var skuCategory = Db.Queryable<SysMaterialCategory>().First(m => m.IsDel == "0" && m.CategoryNo == sku.CategoryNo); + if (skuCategory == null) + { + throw new Exception($"{sku.SkuNo}鐗╂枡绫诲埆涓嶅瓨鍦紝涓嶅彲鍏ュ簱"); + } + //鏁寸悊鍖哄煙淇℃伅 + var areaStr = skuCategory.AreaNo.Split(","); + var areaList = new List<string>(); + foreach (var item in areaStr) + { + areaList.Add(item); + } + + //宸烽亾缁勪俊鎭� + var roadList = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && m.WareHouseNo == houseNo && areaList.Contains(m.AreaNo) && !string.IsNullOrWhiteSpace(m.RoadwayNo)) + .GroupBy(m => m.RoadwayNo).OrderBy(m => m.RoadwayNo).Select(m => m.RoadwayNo).ToList(); + + #endregion + + //鑾峰彇鐢宠鐨勫瘑闆嗗簱宸烽亾 + var roadNo = allotLocate.GetMiJiSuiTableRoad(houseNo, roadList, areaList, skuNo, lotNo); + + if (string.IsNullOrWhiteSpace(roadNo)) + { + throw new Exception("鏈煡璇㈠埌瀛樺湪绌哄偍浣嶅贩閬�"); + } + + Db.BeginTran(); + try + { + //娣诲姞宸烽亾浣跨敤璁板綍 + var log = new SysRoadwayUseLog + { + RoadwayNo = roadNo, + WareHouseNo = houseNo, + Row = 0, + Column = 0, + Layer = 0, + }; + Db.Insertable(log).ExecuteCommand(); + + // 娣诲姞鍏ュ簱鏃ュ織璁板綍 + var taskNo = new Common().GetMaxNo("TK"); + var inTask = new LogTask //鍏ュ簱浠诲姟 + { + TaskNo = taskNo, + Sender = "WMS", + Receiver = "WCS", + IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 + SendDate = DateTime.Now, //鍙戦�佹椂闂� + BackDate = DateTime.Now, //杩斿洖鏃堕棿 + StartRoadway = "", // 璧峰宸烽亾 + StartLocat = "",//璧峰浣嶇疆 + EndLocat = "",//鐩爣浣嶇疆 + EndRoadway = roadNo, // 鐩爣宸烽亾 + PalletNo = palletNo,//鎵樼洏鐮� + IsSend = 1,//鏄惁鍙啀娆′笅鍙� + IsCancel = 1,//鏄惁鍙彇娑� + IsFinish = 1,//鏄惁鍙畬鎴� + Type = "0",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 + Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 + OrderType = "0",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� + Msg = "鍏ュ簱鍙e埌=>>" + roadNo + "宸烽亾鐨勫叆搴撲换鍔�", //鍏抽敭淇℃伅 + + }; + Db.Insertable(inTask).ExecuteCommand(); + + var asnNo = ""; + // 娣诲姞鎵樼洏缁戝畾琛ㄦ墭鐩樺叆搴撲换鍔″彿 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); + if (bindModel != null && string.IsNullOrWhiteSpace(bindModel.TaskNo)) + { + bindModel.TaskNo = taskNo; + bindModel.WareHouseNo = houseNo; + bindModel.RoadwayNo = roadNo; + Db.Updateable(bindModel).ExecuteCommand(); + asnNo = stockModel.ASNNo; + } + + } + + foreach (DataStockDetail stockModel in stockDetail) + { + //娣诲姞鎵樼洏涓婃灦璁板綍 + var upShelf = new BllPalletUpShelf() + { + TaskNo = inTask.TaskNo, + TraceNo = asnNo, + PalletNo = palletNo, + SkuNo = stockModel.SkuNo, + SkuName = stockModel.SkuName, + LotNo = stockModel.LotNo, + Status = "1", + + WareHouseNo = houseNo, + RoadwayNo = roadNo, + AreaNo = "", + LocatNo = "", + + CreateUser = 0, + }; + Db.Insertable(upShelf).ExecuteCommand(); + } + + Db.CommitTran(); + + comDto = new OutCommandDto() + { + TaskNo = taskNo, // 浠诲姟鍙� + TaskType = "0",// 浠诲姟绫诲瀷:鍏ュ簱浠诲姟 + PalletNo = palletNo,//鎵樼洏鍙� + + StartRoadway = inTask.StartRoadway,// 璧峰宸烽亾 + StartLocate = inTask.StartLocat, // 璧峰浣嶇疆 + EndLocate = inTask.EndLocat, // 鐩爣浣嶇疆 + EndRoadway = inTask.EndRoadway, // 鐩爣宸烽亾 + + Order = 999, + Type = PLCTypeEnum.ConveyorLine + }; + } + catch (Exception ex) + { + Db.RollbackTran(); + throw new Exception(ex.Message); + } + #endregion + + return comDto; + } + catch (Exception e) + { + throw new Exception(e.Message); + } + } + + /// <summary> + /// 1 鐢宠鍌ㄤ綅 锛堢敵璇峰贩閬撳悗 鍐嶇敵璇峰偍浣嶅偍浣� 锛� + /// </summary> + /// <param name="palletNo"></param> + /// <param name="houseNo"></param> + /// <param name="roadwayNo"></param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + public OutCommandDto RequestMiJiLocation(string palletNo, string houseNo, string roadwayNo) + { + try + { + #region 楠岃瘉 + + //楠岃瘉鎵樼洏鏉$爜鏄惁涓虹┖ + if (string.IsNullOrEmpty(palletNo)) + { + throw new Exception("璇疯緭鍏ヨ鐢宠鐨勬墭鐩樻潯鐮�"); + } + //楠岃瘉鎵�灞炰粨搴撴槸鍚︿负绌� + if (string.IsNullOrEmpty(houseNo)) + { + throw new Exception("璇烽�夋嫨鎵�灞炰粨搴�"); + } + //楠岃瘉鎵�灞炰粨搴撴槸鍚︿负绌� + if (string.IsNullOrEmpty(roadwayNo)) + { + throw new Exception("宸烽亾涓嶈兘涓虹┖"); + } + //鑾峰彇浠撳簱绫诲瀷 + var houseType = Db.Queryable<SysWareHouse>().First(a => a.WareHouseNo == houseNo); + //楠岃瘉鏄惁涓哄瘑闆嗗簱 + if (houseType.Type != "3") + { + throw new Exception("浠撳簱涓嶆槸瀵嗛泦搴�"); + } + var stock = Db.Queryable<SysPallets>().First(a => a.PalletNo == palletNo);//鎵樼洏淇℃伅 + + //鍒ゆ柇鎵樼洏鏉$爜鏄惁鏈夋晥 + if (stock == null) + { + throw new Exception("鎵樼洏鏉$爜涓嶅彈WMS绠$悊锛屼笉鍙叆搴擄紒"); + } + + #endregion + + OutCommandDto comDto;//杩斿洖wcs鐨勫叆搴撳懡浠� + + #region + + //鏌ヨ鎵樼洏缁戝畾淇℃伅(鐘舵�佷负绛夊緟鍏ュ簱鐨�) + + + var skuList = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0").ToList(); + //鐗╂枡绫诲埆淇℃伅 + var skuCategoryList = Db.Queryable<SysMaterialCategory>().Where(m => m.IsDel == "0").ToList(); + + var skuNo = "";//鍏ュ簱鐗╂枡 + var isAddTask = true; //鏄惁娣诲姞鏂颁换鍔� + var oldTaskNo = ""; //鏃т换鍔″彿 + var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == palletNo).ToList(); + //楠岃瘉鐗╂枡鏄惁鏈夋垚鍝� + 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("鎵樼洏涓婃湁涓嶆槸鎴愬搧鐨勭墿鏂�"); + } + } + + var upShelfOld = Db.Queryable<BllPalletUpShelf>().First(m => m.IsDel == "0" && m.PalletNo == palletNo && (m.Status == "0" || m.Status == "1")); + + if (upShelfOld != null) //鏈変笂鏋跺叆搴撲俊鎭� + { + + var beingTask = Db.Queryable<LogTask>().First(m => m.IsDel == "0" && m.TaskNo == upShelfOld.TaskNo); + if (beingTask == null) + { + throw new Exception("璇ユ墭鐩樻鍦ㄥ叆搴擄紝浣嗘湭鏌ヨ鍒颁换鍔′俊鎭�"); + } + if (!string.IsNullOrWhiteSpace(beingTask.EndLocat)) + { + comDto = new OutCommandDto() + { + TaskNo = beingTask.TaskNo, // 浠诲姟鍙� + TaskType = "0",// 浠诲姟绫诲瀷 + PalletNo = palletNo,//鎵樼洏鍙� + + StartRoadway = beingTask.StartRoadway, // 璧峰宸烽亾 + StartLocate = beingTask.StartRoadway, // 璧峰浣嶇疆 + EndLocate = beingTask.EndLocat, // 鐩爣浣嶇疆 + EndRoadway = beingTask.EndRoadway, // 鐩爣宸烽亾 + + Order = 999, + Type = PLCTypeEnum.ShuttleCar, + }; + if (beingTask.IsSuccess == 0) + { + beingTask.IsSuccess = 1; + Db.Updateable(beingTask).ExecuteCommand(); + } + if (upShelfOld.Status == "0") + { + upShelfOld.Status = "1"; + Db.Updateable(upShelfOld).ExecuteCommand(); + } + return comDto; + } + else + { + isAddTask = false; + oldTaskNo = beingTask.TaskNo; + skuNo = upShelfOld.SkuNo;//鍏ュ簱鐗╂枡 + } + + } + else //鐢宠鍏ュ簱 + { + if (stockDetail.Count == 0) + { + throw new Exception($"{palletNo}鎵樼洏鏉$爜娌℃湁搴撳瓨淇℃伅锛屼笉鍙叆搴擄紒"); + } + if (stockDetail.Count(m => !string.IsNullOrWhiteSpace(m.LocatNo)) > 0) + { + throw new Exception("褰撳墠鎵樼洏宸插湪搴撳唴锛岃鏍稿疄"); + } + skuNo = stockDetail.First().SkuNo;//鍏ュ簱鐗╂枡 + + //鑾峰彇瀵瑰簲鍥炲簱瑙勫垯 + var function = Db.Queryable<SysFunSetting>().First(a => a.IsDel == "0" && a.FunSetName == "鎵樼洏鍥炲簱楠岃瘉" && a.IsEnable == "NO"); + #region 鎵樼洏鍥炲簱瑙勫垯 + + if (function != null) + { + //鎷h揣瀹屾垚鍚庡厑璁告墭鐩樺洖搴� + if (function.SetValue == "CompletePick") + { + var allot = Db.Queryable<BllExportAllot>().First(a => a.IsDel == "0" && a.LotNo == stockDetail[0].LotNo && a.PalletNo == palletNo && a.SkuNo == stockDetail[0].SkuNo); + + //楠岃瘉鎷h揣鏄庣粏鏄惁瀛樺湪 + if (allot != null) + { + //楠岃瘉褰撳墠鎵樼洏鎷h揣淇℃伅鏄惁宸插畬鎴� + if (allot.Status != "5") + { + throw new Exception("褰撳墠鎵樼洏鎷h揣淇℃伅鏈畬鎴愶紝璇峰畬鎴愬悗鍥炲簱锛�"); + } + } + } + } + #endregion + } + + var allotLocate = new AllotLocation(); + + #region 鐢宠鍌ㄤ綅 + + SysStorageLocat locate; + + var sku = skuList.FirstOrDefault(m => m.SkuNo == skuNo); + if (sku == null) + { + throw new Exception("鐗╂枡淇℃伅涓湭鏌ヨ鍒板叆搴撳崟鏄庣粏鍖呭惈鐨勭墿鏂欎俊鎭紝涓嶅彲鍏ュ簱"); + } + //鍒ゆ柇鐗╂枡鏄惁鍚湁绫诲埆淇℃伅 + if (string.IsNullOrWhiteSpace(sku.CategoryNo)) + { + throw new Exception($"鐗╂枡锛歿sku.SkuNo}鏈煡璇㈠埌绫诲埆淇℃伅"); + } + + var skuCategory = skuCategoryList.FirstOrDefault(m => m.CategoryNo == sku.CategoryNo); + if (skuCategory == null) + { + throw new Exception($"鏈湪绫诲埆淇℃伅涓煡璇㈠埌鐗╂枡锛歿sku.SkuNo}鍖呭惈鐨勭被鍒�"); + } + + var areaStr = skuCategory.AreaNo.Split(","); + var areaList = new List<string>(); + foreach (var item in areaStr) + { + areaList.Add(item); + } + + locate = allotLocate.GetMiJiSuiTableLocate(roadwayNo, areaList); + if (locate == null) + { + throw new Exception($"娌℃湁绌哄偍浣�"); + } + + #endregion + + Db.BeginTran(); + try + { + + if (isAddTask) + { + var taskNo = new Common().GetMaxNo("TK"); + var inTask = new LogTask //鍏ュ簱浠诲姟 + { + TaskNo = taskNo, + Sender = "WMS", + Receiver = "WCS", + IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 + SendDate = DateTime.Now, //鍙戦�佹椂闂� + BackDate = DateTime.Now, //杩斿洖鏃堕棿 + StartRoadway = "", // 璧峰宸烽亾 + StartLocat = "",//璧峰浣嶇疆 + EndLocat = locate.LocatNo,//鐩爣浣嶇疆 + EndRoadway = locate.RoadwayNo, // 鐩爣宸烽亾 + PalletNo = palletNo,//鎵樼洏鐮� + IsSend = 1,//鏄惁鍙啀娆′笅鍙� + IsCancel = 1,//鏄惁鍙彇娑� + IsFinish = 1,//鏄惁鍙畬鎴� + Type = "0",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 + Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 + OrderType = "0",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� + Msg = "鍏ュ簱鍙e埌=>>" + locate.LocatNo + "鐨勫叆搴撲换鍔�", //鍏抽敭淇℃伅 + + }; + Db.Insertable(inTask).ExecuteCommand(); + var asnNo = ""; + // 娣诲姞鎵樼洏缁戝畾琛ㄦ墭鐩樺叆搴撲换鍔″彿 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); + if (bindModel != null && string.IsNullOrWhiteSpace(bindModel.TaskNo)) + { + bindModel.TaskNo = taskNo; + bindModel.WareHouseNo = locate.WareHouseNo; + bindModel.RoadwayNo = locate.RoadwayNo; + bindModel.LocatNo = locate.LocatNo; + Db.Updateable(bindModel).ExecuteCommand(); + asnNo = stockModel.ASNNo; + } + } + foreach (DataStockDetail stockModel in stockDetail) + { + //娣诲姞鎵樼洏涓婃灦璁板綍 + var upShelf = new BllPalletUpShelf() + { + TaskNo = inTask.TaskNo, + TraceNo = asnNo, + PalletNo = palletNo, + SkuNo = stockModel.SkuNo, + SkuName = stockModel.SkuName, + LotNo = stockModel.LotNo, + Status = "1", + + WareHouseNo = houseNo, + RoadwayNo = locate.RoadwayNo, + AreaNo = locate.AreaNo, + LocatNo = locate.LocatNo, + + CreateUser = 0, + }; + Db.Insertable(upShelf).ExecuteCommand(); + } + + oldTaskNo = taskNo; + } + else + { + var oldTask = Db.Queryable<LogTask>().First(m => m.IsDel == "0" && m.TaskNo == oldTaskNo); + oldTask.EndLocat = locate.LocatNo; + oldTask.EndRoadway = locate.RoadwayNo; + if (oldTask.IsSuccess == 0) + { + oldTask.IsSuccess = 1; + oldTask.Status = "1"; + } + Db.Updateable(oldTask).ExecuteCommand(); + + + var bindModelList = Db.Queryable<BllPalletBind>().Where(m => m.IsDel == "0" && m.Status == "2" + && m.PalletNo == oldTask.PalletNo && m.TaskNo == oldTaskNo).ToList(); + foreach (var bindModel in bindModelList) + { + if (string.IsNullOrWhiteSpace(bindModel.LocatNo)) + { + bindModel.TaskNo = oldTask.TaskNo; + bindModel.WareHouseNo = locate.WareHouseNo; + bindModel.RoadwayNo = locate.RoadwayNo; + bindModel.LocatNo = locate.LocatNo; + Db.Updateable(bindModel).ExecuteCommand(); + + } + } + //鏇存敼涓婃灦淇℃伅 + var upShelfList = Db.Queryable<BllPalletUpShelf>().Where(m => m.IsDel == "0" && m.TaskNo == oldTask.TaskNo && m.PalletNo == palletNo).ToList(); + foreach (var upShelf in upShelfList) + { + upShelf.WareHouseNo = locate.WareHouseNo; + upShelf.RoadwayNo = locate.RoadwayNo; + upShelf.LocatNo = locate.LocatNo; + upShelf.Status = "1"; + Db.Updateable(upShelf).ExecuteCommand(); + + } + + } + + locate.Status = "2"; + Db.Updateable(locate).ExecuteCommand(); + + Db.CommitTran(); + comDto = new OutCommandDto() + { + TaskNo = oldTaskNo, // 浠诲姟鍙� + TaskType = "0",// 浠诲姟绫诲瀷 + PalletNo = palletNo,//鎵樼洏鍙� + + StartRoadway = "", + StartLocate = "", // 璧峰浣嶇疆 + EndLocate = locate.LocatNo, // 鐩爣浣嶇疆 + EndRoadway = locate.RoadwayNo, // 鐩爣宸烽亾 + + Order = 999, //鐩爣鍦板潃 + Type = PLCTypeEnum.ShuttleCar + }; + + } + catch (Exception ex) + { + Db.RollbackTran(); + throw new Exception(ex.Message); + } + #endregion + + + return comDto; + } + catch (Exception e) + { + throw new Exception(e.Message); + } + } + + /// <summary> + /// agv璧板嚭鍌ㄤ綅淇敼鍌ㄤ綅淇℃伅锛屼粎闄愬钩搴撳偍浣� + /// </summary> + /// <param name="taskNo"></param> + /// <param name="userId"></param> public void UpLocateByAgvOut(string taskNo, int userId) { try @@ -41,12 +1032,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(); } @@ -55,5 +1055,193 @@ throw new Exception(e.Message); } } + + /// <summary> + /// 鍏ュ簱浠诲姟瀹屾垚JC34 + /// </summary> + /// <param name="taskNo"></param> + /// <param name="userId"></param> + /// <exception cref="Exception"></exception> + public void ArrivalSuccess2(string taskNo, int userId) + { + try + { + //姝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(); + var upShelf = Db.Queryable<BllPalletUpShelf>().First(m => m.TaskNo == taskNo); + if (upShelf == null) + { + throw new Exception("娌℃湁鎵惧埌鎵樼洏涓婃灦淇℃伅"); + } + //褰撳墠浠诲姟涓殑鍌ㄤ綅淇℃伅 + var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.EndLocat); + if (locate == null) + { + throw new Exception($"鏈煡璇㈠埌浠诲姟涓殑鍌ㄤ綅淇℃伅"); + } + Db.BeginTran(); + + 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); + } + + //鍒ゆ柇鏄惁鏄洖娴佸叆搴撳畬鎴� + if (!stockDetail.Any()) + { + throw new Exception("娌℃湁鏌ヨ鍒板簱瀛樹俊鎭�"); + } + + foreach (var item in stockDetail) + { + item.WareHouseNo = locate.WareHouseNo; + item.RoadwayNo = locate.RoadwayNo; + item.AreaNo = locate.AreaNo; + item.LocatNo = locate.LocatNo; + item.UpdateTime = DateTime.Now; + if (userId != 0) + { + item.UpdateUser = userId; + } + } + upShelf.Status = "2"; + Db.Updateable(upShelf).ExecuteCommand(); + + locate.Status = "1"; + Db.Updateable(locate).ExecuteCommand(); + Db.Updateable(stockDetail).ExecuteCommand(); + Db.CommitTran(); + + } + catch (Exception e) + { + Db.RollbackTran(); + throw new Exception(e.Message); + } + } + + + /// <summary> + /// 绉诲簱浠诲姟瀹屾垚JC34 + /// </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(locate).ExecuteCommand(); + } + + Db.Updateable(stockDetail).ExecuteCommand(); + Db.CommitTran(); + + } + catch (Exception e) + { + Db.RollbackTran(); + throw new Exception(e.Message); + } + } + + } } -- Gitblit v1.8.0