From 88604ff346c6dc6caf07612aa99a688d3f0428c1 Mon Sep 17 00:00:00 2001 From: wxw <Administrator@DESKTOP-5BIMHQ3> Date: 星期五, 07 三月 2025 09:37:25 +0800 Subject: [PATCH] 修改问题 --- Wms/WMS.BLL/BllTransServer/RcsServer.cs | 378 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 319 insertions(+), 59 deletions(-) diff --git a/Wms/WMS.BLL/BllTransServer/RcsServer.cs b/Wms/WMS.BLL/BllTransServer/RcsServer.cs index da97210..f771a83 100644 --- a/Wms/WMS.BLL/BllTransServer/RcsServer.cs +++ b/Wms/WMS.BLL/BllTransServer/RcsServer.cs @@ -65,13 +65,17 @@ //寮�濮嬩簨鍔� Db.BeginTran(); - + //鍒ゆ柇鍙枡璁惧鏄惁鏄疉鍖虹殑娣锋枡璁惧03锛岃璁惧鏄帴鏂欐贩鏂欎竴浣撴満锛孉GV鍙《搴旇鍙噣妗舵帴鏂� + if (houseNo=="M03" && model.Location == "125" && model.Type=="1") + { + model.Type = "0"; + } switch (model.Type) { case "0"://鎺ユ枡璁惧鍙噣妗� { //鍙《鐩爣鍌ㄤ綅鍦板潃淇℃伅 - endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo); + endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo && w.Column == 1); if (endLoction == null) { throw new Exception("鍙《璁惧鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦�"); @@ -79,12 +83,28 @@ //鏌ユ壘鍒拌杞﹂棿鍑�妗跺尯 List<string> areaNoList = Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Type == "0" && w.WareHouseNo == houseNo).Select(s => s.AreaNo).ToList(); //鏌ユ壘鍑�妗� - pallet = stockDetail.Where(w => w.WareHouseNo == houseNo && w.PalletStatus == "0" && w.Status == "0" - && areaNoList.Contains(w.AreaNo)).OrderByDescending(o => o.CreateTime).First(); + if (houseNo == "M03")//澶у崟浣撹溅闂村噣妗舵槸缁戝畾鎺ユ枡璁惧鐨� + { + pallet = stockDetail.Where(w => w.WareHouseNo == houseNo && w.PalletStatus == "0" && w.Status == "0" + && areaNoList.Contains(w.AreaNo) && w.UDF1 == deviceInfo.DeviceCode).OrderBy(o => o.UpdateTime).First(); + } + else + { + pallet = stockDetail.Where(w => w.WareHouseNo == houseNo && w.PalletStatus == "0" && w.Status == "0" + && areaNoList.Contains(w.AreaNo)).OrderBy(o => o.UpdateTime).First(); + } + if (pallet == null) { throw new Exception("鏆傛棤鍑�妗跺彲鍒嗛厤"); } + //鍒嗛厤妗跺悗鍒ゆ柇璇ユ《澶栦晶鍌ㄤ綅鏄惁闇�瑕佺Щ搴� + bool yikuResult = YikuTask(pallet.PalletNo, url); + if (!yikuResult) + { + throw new Exception("绉诲簱澶辫触"); + } + pallet.Status = "2";//鍒嗛厤鐘舵�� 0:寰呭垎閰嶏紝1锛氶儴鍒嗗垎閰� 锛� 2:宸插垎閰� //鏇存柊妗跺簱瀛樻槑缁� Db.Updateable(pallet).ExecuteCommand(); @@ -95,7 +115,7 @@ case "1"://娣锋枡璁惧鍙枡妗讹紙娣锋枡锛� { //鍙《鐩爣鍌ㄤ綅鍦板潃淇℃伅 - endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo); + endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo && w.Column == 1); if (endLoction == null) { throw new Exception("鍙《璁惧鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦�"); @@ -109,11 +129,18 @@ List<string> areaNoList2 = Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Type == "1" && w.WareHouseNo == houseNo).Select(s => s.AreaNo).ToList(); //鏌ユ壘搴撳瓨涓槸鍚︽湁鍙敤鐨勬鎵规鐨勬贩鏂欐《 pallet = stockDetail.Where(w => w.WareHouseNo == houseNo && w.PalletStatus == "1" && w.Status == "0" && w.LotNo == model.LotNo - && areaNoList2.Contains(w.AreaNo)).OrderByDescending(o => o.CompleteTime).First(); + && areaNoList2.Contains(w.AreaNo)).OrderBy(o => o.UpdateTime).First(); if (pallet == null) { throw new Exception("鏆傛棤娣锋枡妗跺彲鍒嗛厤"); } + //鍒嗛厤妗跺悗鍒ゆ柇璇ユ《澶栦晶鍌ㄤ綅鏄惁闇�瑕佺Щ搴� + bool yikuResult = YikuTask(pallet.PalletNo, url); + if (!yikuResult) + { + throw new Exception("绉诲簱澶辫触"); + } + pallet.Status = "2";//鍒嗛厤鐘舵�� 0:寰呭垎閰嶏紝1锛氶儴鍒嗗垎閰� 锛� 2:宸插垎閰� //鏇存柊妗跺簱瀛樻槑缁� Db.Updateable(pallet).ExecuteCommand(); @@ -126,7 +153,7 @@ if (houseNo == "M04")//闄や簡鍠峰共杞﹂棿涓嬫枡鍙i兘鏄�2涓偍浣嶏紙鎶曟枡鍌ㄤ綅銆佹姇瀹屾枡鍌ㄤ綅锛� { //鍙《鐩爣鍌ㄤ綅鍦板潃淇℃伅 - endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo); + endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo && w.Column == 1); } else { @@ -143,7 +170,7 @@ throw new Exception("鎵规鍙蜂负绌猴紒"); } //鏌ユ壘鏄惁鏈夋鎵规鍑哄簱鍗曟槑缁� - var soNoticeDetail = Db.Queryable<BllExportNoticeDetail>().Where(w => w.IsDel == "0" && w.LotNo == model.LotNo).OrderBy(o => o.CreateTime).First(); + /*var soNoticeDetail = Db.Queryable<BllExportNoticeDetail>().Where(w => w.IsDel == "0" && w.LotNo == model.LotNo).OrderBy(o => o.CreateTime).First(); if (soNoticeDetail == null) { throw new Exception("璇ユ壒娆℃病鏈夊搴旂殑鍑哄簱鍗曟槑缁�"); @@ -158,17 +185,24 @@ soNotice.Status = "3";//姝e湪鎵ц soNotice.UpdateTime = DateTime.Now; //鏇存柊鍑哄簱鍗� - Db.Updateable(soNotice).ExecuteCommand(); + Db.Updateable(soNotice).ExecuteCommand();*/ //鏌ユ壘鍒拌杞﹂棿鍗婃垚鍝佸尯 List<string> areaNoList3 = Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Type == "2" && w.WareHouseNo == houseNo).Select(s => s.AreaNo).ToList(); //鏌ユ壘搴撳瓨涓槸鍚︽湁姝ゆ壒娆$殑鍚堟牸涓嬫枡妗� pallet = stockDetail.Where(w => w.WareHouseNo == houseNo && w.PalletStatus == "2" && w.Status == "0" && w.LotNo == model.LotNo && w.InspectStatus == "1" - && areaNoList3.Contains(w.AreaNo)).OrderByDescending(o => o.CompleteTime).First(); + && areaNoList3.Contains(w.AreaNo)).OrderBy(o => o.UpdateTime).First(); if (pallet == null) { throw new Exception("鏆傛棤涓嬫枡妗跺彲鍒嗛厤"); } + //鍒嗛厤妗跺悗鍒ゆ柇璇ユ《澶栦晶鍌ㄤ綅鏄惁闇�瑕佺Щ搴� + bool yikuResult = YikuTask(pallet.PalletNo, url); + if (!yikuResult) + { + throw new Exception("绉诲簱澶辫触"); + } + pallet.Status = "2";//鍒嗛厤鐘舵�� 0:寰呭垎閰嶏紝1锛氶儴鍒嗗垎閰� 锛� 2:宸插垎閰� //鏇存柊妗跺簱瀛樻槑缁� Db.Updateable(pallet).ExecuteCommand(); @@ -186,8 +220,23 @@ } //鏌ユ壘鍒拌杞﹂棿鑴忔《鍖� List<string> areaNoList4 = Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Type == "3" && w.WareHouseNo == houseNo).Select(s => s.AreaNo).ToList(); - List<DataStockDetail> palletList = stockDetail.Where(w => w.WareHouseNo == houseNo && w.PalletStatus == "3" && w.Status == "0" - && areaNoList4.Contains(w.AreaNo)).OrderByDescending(o => o.CompleteTime).ToList(); + + List<DataStockDetail> palletList = new List<DataStockDetail>(); + if (houseNo == "M01") + { + palletList = Db.Queryable<DataStockDetail>() + .LeftJoin<SysStorageLocat>((d, l) => d.LocatNo == l.LocatNo) + .Where(d => d.WareHouseNo == houseNo && d.PalletStatus == "3" && d.Status == "0" && areaNoList4.Contains(d.AreaNo)) + .OrderBy((d, l) => l.Row) + .OrderBy((d, l) => l.Column) + .ToList(); + } + else + { + palletList = stockDetail.Where(w => w.WareHouseNo == houseNo && w.PalletStatus == "3" && w.Status == "0" + && areaNoList4.Contains(w.AreaNo)).OrderBy(o => o.UpdateTime).ToList(); + } + if (palletList.Count <= 0) { throw new Exception("鏆傛棤鑴忔《鍙垎閰�"); @@ -230,7 +279,7 @@ #endregion item.Status = "2";//鍒嗛厤鐘舵�� 0:寰呭垎閰嶏紝1锛氶儴鍒嗗垎閰� 锛� 2:宸插垎閰� - //鏇存柊妗跺簱瀛樻槑缁� + //鏇存柊妗跺簱瀛樻槑缁� Db.Updateable(item).ExecuteCommand(); //璧峰鍌ㄤ綅鍦板潃淇℃伅 var startLoction2 = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == item.LocatNo); @@ -247,9 +296,9 @@ Receiver = "RCS", //IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 SendDate = DateTime.Now, //鍙戦�佹椂闂� - //BackDate = DateTime.Now, //杩斿洖鏃堕棿 + //BackDate = DateTime.Now, //杩斿洖鏃堕棿 StartLocat = item.LocatNo,//璧峰浣嶇疆 - EndLocat = model.Location,//鐩爣浣嶇疆 + EndLocat = endLoction.LocatNo,//鐩爣浣嶇疆 PalletNo = item.PalletNo,//鎵樼洏鐮� IsSend = 1,//鏄惁鍙啀娆′笅鍙� IsCancel = 1,//鏄惁鍙彇娑� @@ -259,13 +308,14 @@ Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 NoticeDetailNo = int.Parse(noticeNo), Msg = taskMsg, //鍏抽敭淇℃伅 + LotNo = item.LotNo//鎵规鍙� }; //缁勭粐涓嬪彂灏忚溅浠诲姟淇℃伅 var task2 = new TaskDetial { Taskno = taskNo,//浠诲姟鍙� Startport = item.LocatNo, - Endport = model.Location, + Endport = model.Location,//endLoction.LocatNo, Pallno = item.PalletNo, Crtype = "1",//鍙《 WareHouseNo = houseNo @@ -322,7 +372,7 @@ SendDate = DateTime.Now, //鍙戦�佹椂闂� //BackDate = DateTime.Now, //杩斿洖鏃堕棿 StartLocat = pallet.LocatNo,//璧峰浣嶇疆 - EndLocat = model.Location,//鐩爣浣嶇疆 + EndLocat = endLoction.LocatNo,//鐩爣浣嶇疆 PalletNo = pallet.PalletNo,//鎵樼洏鐮� IsSend = 1,//鏄惁鍙啀娆′笅鍙� IsCancel = 1,//鏄惁鍙彇娑� @@ -332,6 +382,7 @@ Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 NoticeDetailNo = int.Parse(noticeNo), Msg = taskMsg, //鍏抽敭淇℃伅 + LotNo = pallet.LotNo//鎵规鍙� }; //缁勭粐涓嬪彂灏忚溅浠诲姟淇℃伅 @@ -339,7 +390,7 @@ { Taskno = taskNo,//浠诲姟鍙� Startport = pallet.LocatNo,//璧峰浣嶇疆 - Endport = model.Location,//鐩爣浣嶇疆 + Endport = model.Location,//endLoction.LocatNo,//鐩爣浣嶇疆 Pallno = pallet.PalletNo,//妗跺彿 Crtype = "1",//鍙《 WareHouseNo = houseNo//杞﹂棿缂栫爜 @@ -392,43 +443,49 @@ try { string taskMsg = ""; - //鏌ユ壘璇ユ《鏈夋病鏈夋鍦ㄦ墽琛岀殑浠诲姟 - var tasking = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.Status == "1" && w.PalletNo == model.PalletNo); - if (tasking != null) - { - throw new Exception($"璇ユ《鏈夋鍦ㄦ墽琛岀殑浠诲姟锛孭alletNo:{model.PalletNo}"); - } + //閫氳繃璁惧鍙锋煡鎵惧埌鎵�灞炶澶囷紙鍖哄煙锛� - var deviceInfo = Db.Queryable<SysStorageArea>().First(w => w.IsDel == "0" && w.DeviceCode == model.Location); + var deviceInfo = Db.Queryable<SysStorageArea>().First(w => w.IsDel == "0" && w.DeviceCode.Contains(model.Location)); if (deviceInfo == null) { throw new Exception("璁惧淇℃伅涓嶅瓨鍦�"); } - var houseNo = deviceInfo.WareHouseNo;//鐢宠鍌ㄤ綅璁惧鎵�鍦ㄨ溅闂寸紪鍙� + //鐢宠鍌ㄤ綅璁惧鎵�鍦ㄨ溅闂寸紪鍙� + var houseNo = deviceInfo.WareHouseNo; //璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙璧峰鍌ㄤ綅锛� - var deviceLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo); - if (deviceLocatInfo == null) - { - throw new Exception($"鏈煡璇㈠埌璇ヨ澶囨墍鍦ㄥ偍浣嶄俊鎭紝Location:{model.Location}"); - } - - var noticeno = "0";//鍑哄叆搴撳崟鎹槑缁咺D + var deviceLocatInfo = new SysStorageLocat(); + //鍑哄叆搴撳崟鎹槑缁咺D + var noticeno = "0"; + //鐩爣鍌ㄤ綅淇℃伅 + var loction = new SysStorageLocat(); //妗跺簱瀛樹俊鎭� - var palletInfo = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == model.PalletNo); - if (palletInfo == null) - { - throw new Exception($"鏈煡璇㈠埌璇ユ《鐨勫簱瀛樹俊鎭紝PalletNo:{model.PalletNo}"); - } + var palletInfo = new DataStockDetail(); - var storageLocat = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0"); //寮�鍚簨鍔� Db.BeginTran(); - - SysStorageLocat loction = new SysStorageLocat();//鐩爣鍌ㄤ綅淇℃伅 switch (model.Type) { case "3"://娓呮礂璁惧鐢宠鍌ㄤ綅锛堝噣妗剁敵璇峰偍浣嶏級 { + //璁惧鏀炬《鍌ㄤ綅淇℃伅锛堝師濮嬪彨妗剁洰鏍囧偍浣嶏級 + var deviceLocatInfo2 = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo && w.Column == 1);// Column=1 娓呮礂鍌ㄤ綅锛孋olumn=2 娓呮礂瀹屾枡鍌ㄤ綅 + if (deviceLocatInfo2 == null) + { + throw new Exception($"鏈煡璇㈠埌璇ヨ澶囨墍鍦ㄥ偍浣嶄俊鎭紝Location:{model.Location}"); + } + //鏌ユ壘妗跺簱瀛樹俊鎭� + palletInfo = Db.Queryable<DataStockDetail>().Where(w => w.IsDel == "0" && w.WareHouseNo == deviceLocatInfo2.WareHouseNo && w.AreaNo == deviceLocatInfo2.AreaNo && w.LocatNo == deviceLocatInfo2.LocatNo).OrderBy(o => o.UpdateTime).First(); + if (palletInfo == null) + { + throw new Exception($"鏈煡璇㈠埌璇ヨ澶囦笂妗剁殑搴撳瓨淇℃伅"); + } + //鏌ユ壘璇ユ《鏈夋病鏈夋鍦ㄦ墽琛岀殑浠诲姟 + var tasking = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.Status == "1" && w.PalletNo == palletInfo.PalletNo); + if (tasking != null) + { + throw new Exception($"璇ユ《鏈夋鍦ㄦ墽琛岀殑浠诲姟锛孭alletNo:{palletInfo.PalletNo}"); + } + //璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙璧峰鍌ㄤ綅锛� deviceLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo && w.Column == 2);// Column=1 娓呮礂鍌ㄤ綅锛孋olumn=2 娓呮礂瀹屾枡鍌ㄤ綅 if (deviceLocatInfo == null) @@ -453,6 +510,23 @@ { throw new Exception($"鏈煡璇㈠埌璇ヨ澶囨墍鍦ㄥ偍浣嶄俊鎭紝Location:{model.Location}"); } + //鏌ユ壘妗跺簱瀛樹俊鎭� + palletInfo = Db.Queryable<DataStockDetail>().Where(w => w.IsDel == "0" && w.WareHouseNo == deviceLocatInfo.WareHouseNo && w.AreaNo == deviceLocatInfo.AreaNo && w.LocatNo == deviceLocatInfo.LocatNo).OrderBy(o => o.UpdateTime).First(); + if (palletInfo == null) + { + throw new Exception($"鏈煡璇㈠埌璇ヨ澶囦笂妗剁殑搴撳瓨淇℃伅"); + } + palletInfo.LotNo = model.LotNo;//鎵规鍙� + //鏇存柊妗跺簱瀛樹俊鎭� + Db.Updateable(palletInfo).ExecuteCommand(); + + //鏌ユ壘璇ユ《鏈夋病鏈夋鍦ㄦ墽琛岀殑浠诲姟 + var tasking = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.Status == "1" && w.PalletNo == palletInfo.PalletNo); + if (tasking != null) + { + throw new Exception($"璇ユ《鏈夋鍦ㄦ墽琛岀殑浠诲姟锛孭alletNo:{palletInfo.PalletNo}"); + } + //鍒ゆ柇鏄惁鏈夋壒娆″彿 if (string.IsNullOrWhiteSpace(model.LotNo)) { @@ -464,9 +538,7 @@ { throw new Exception("璇ヨ溅闂撮娣峰尯鏆傛棤绌轰綑鍌ㄤ綅"); } - palletInfo.LotNo = model.LotNo;//鎵规鍙� - //鏇存柊妗跺簱瀛樹俊鎭� - Db.Updateable(palletInfo).ExecuteCommand(); + taskMsg = "鎺ユ枡璁惧锛堥娣锋枡妗讹級鐢宠鍌ㄤ綅浠诲姟"; } @@ -479,13 +551,26 @@ { throw new Exception($"鏈煡璇㈠埌璇ヨ澶囨墍鍦ㄥ偍浣嶄俊鎭紝Location:{model.Location}"); } + //鏌ユ壘妗跺簱瀛樹俊鎭� + palletInfo = Db.Queryable<DataStockDetail>().Where(w => w.IsDel == "0" && w.WareHouseNo == deviceLocatInfo.WareHouseNo && w.AreaNo == deviceLocatInfo.AreaNo && w.LocatNo == deviceLocatInfo.LocatNo).OrderBy(o => o.UpdateTime).First(); + if (palletInfo == null) + { + throw new Exception($"鏈煡璇㈠埌璇ヨ澶囦笂妗剁殑搴撳瓨淇℃伅"); + } + //鏌ユ壘璇ユ《鏈夋病鏈夋鍦ㄦ墽琛岀殑浠诲姟 + var tasking = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.Status == "1" && w.PalletNo == palletInfo.PalletNo); + if (tasking != null) + { + throw new Exception($"璇ユ《鏈夋鍦ㄦ墽琛岀殑浠诲姟锛孭alletNo:{palletInfo.PalletNo}"); + } + //鍒ゆ柇鏄惁鏈夋壒娆″彿 if (string.IsNullOrWhiteSpace(model.LotNo)) { throw new Exception("鎵规鍙蜂负绌猴紒"); } //鏍¢獙姝ゆ壒娆℃槸鍚︽湁鍏ュ簱鍗� - var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().Where(w => w.IsDel == "0" && w.Status == "0" && w.LotNo == model.LotNo).OrderByDescending(o => o.CreateTime).First(); + /*var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().Where(w => w.IsDel == "0" && w.Status == "0" && w.LotNo == model.LotNo).OrderByDescending(o => o.CreateTime).First(); if (noticeDetail == null) { throw new Exception("璇ユ壒娆℃病鏈夊搴旂殑鍏ュ簱鍗曟槑缁�"); @@ -498,8 +583,8 @@ throw new Exception("璇ユ壒娆℃病鏈夊搴旂殑鍏ュ簱鍗�"); } notice.Status = "1";//姝e湪鎵ц - //鏇存柊鍏ュ簱鍗曠姸鎬� - Db.Updateable(notice).ExecuteCommand(); + //鏇存柊鍏ュ簱鍗曠姸鎬� + Db.Updateable(notice).ExecuteCommand();*/ //鏌ユ壘鍒拌杞﹂棿鍗婃垚鍝佸尯 loction = GetLocatModel(houseNo, "2"); @@ -513,10 +598,28 @@ break; case "2"://涓嬫枡璁惧鐢宠鍌ㄤ綅锛堣剰妗剁敵璇峰偍浣嶏級 { + //璁惧鏀炬《鍌ㄤ綅淇℃伅锛堝師濮嬪彨妗剁洰鏍囧偍浣嶏級 + var deviceLocatInfo2 = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo && w.Column == 1);// Column=1 鎶曟枡鍌ㄤ綅锛孋olumn=2 鎶曞畬鏂欏偍浣� + if (deviceLocatInfo2 == null) + { + throw new Exception($"鏈煡璇㈠埌璇ヨ澶囨墍鍦ㄥ偍浣嶄俊鎭紝Location:{model.Location}"); + } + //鏌ユ壘妗跺簱瀛樹俊鎭� + palletInfo = Db.Queryable<DataStockDetail>().Where(w => w.IsDel == "0" && w.WareHouseNo == deviceLocatInfo2.WareHouseNo && w.AreaNo == deviceLocatInfo2.AreaNo && w.LocatNo == deviceLocatInfo2.LocatNo).OrderBy(o => o.UpdateTime).First(); + if (palletInfo == null) + { + throw new Exception($"鏈煡璇㈠埌璇ヨ澶囦笂妗剁殑搴撳瓨淇℃伅"); + } + //鏌ユ壘璇ユ《鏈夋病鏈夋鍦ㄦ墽琛岀殑浠诲姟 + var tasking = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.Status == "1" && w.PalletNo == palletInfo.PalletNo); + if (tasking != null) + { + throw new Exception($"璇ユ《鏈夋鍦ㄦ墽琛岀殑浠诲姟锛孭alletNo:{palletInfo.PalletNo}"); + } if (houseNo == "M04")//闄や簡鍠峰共杞﹂棿涓嬫枡鍙i兘鏄�2涓偍浣嶏紙鎶曟枡鍌ㄤ綅銆佹姇瀹屾枡鍌ㄤ綅锛� { //璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙璧峰鍌ㄤ綅锛� - deviceLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo); + deviceLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo && w.Column == 1); } else { @@ -549,9 +652,9 @@ //IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 SendDate = DateTime.Now, //鍙戦�佹椂闂� //BackDate = DateTime.Now, //杩斿洖鏃堕棿 - StartLocat = model.Location,//璧峰浣嶇疆 + StartLocat = deviceLocatInfo.LocatNo,//璧峰浣嶇疆 EndLocat = loction.LocatNo,//鐩爣浣嶇疆 - PalletNo = model.PalletNo,//妗跺彿 + PalletNo = palletInfo.PalletNo,//妗跺彿 IsSend = 1,//鏄惁鍙啀娆′笅鍙� IsCancel = 1,//鏄惁鍙彇娑� IsFinish = 1,//鏄惁鍙畬鎴� @@ -560,13 +663,14 @@ Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 NoticeDetailNo = int.Parse(noticeno), Msg = taskMsg, //鍏抽敭淇℃伅 + LotNo = palletInfo.LotNo//鎵规鍙� }; var task = new TaskDetial { Taskno = taskNo,//浠诲姟鍙� - Startport = model.Location, - Endport = loction.LocatNo, - Pallno = model.PalletNo, + Startport = model.Location,//deviceLocatInfo.LocatNo,//璧峰浣嶇疆 + Endport = loction.LocatNo,//鐩爣浣嶇疆 + Pallno = palletInfo.PalletNo, Crtype = "0",//鍏ュ簱 WareHouseNo = houseNo }; @@ -620,10 +724,10 @@ //鏌ユ壘鍌ㄤ綅 var loctionModel = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Flag == "0" && w.WareHouseNo == houseNo && areaNoList.Contains(w.AreaNo)) .OrderBy(o => o.Row).OrderByDescending(o => o.Column).First(); - if (loctionModel == null) - { - throw new Exception("璇ヨ溅闂村噣妗跺尯鏆傛棤绌轰綑鍌ㄤ綅"); - } + //if (loctionModel == null) + //{ + // throw new Exception("璇ヨ溅闂村噣妗跺尯鏆傛棤绌轰綑鍌ㄤ綅"); + //} return loctionModel; } catch (Exception ex) @@ -807,7 +911,8 @@ stockDetail.WareHouseNo = endLocatInfo.WareHouseNo;//鎵�灞炰粨搴� stockDetail.RoadwayNo = endLocatInfo.RoadwayNo;//鎵�灞炲贩閬� stockDetail.AreaNo = endLocatInfo.AreaNo;//鎵�灞炲尯鍩� - stockDetail.LocatNo = endLocatInfo.LocatNo;//鍌ㄤ綅鍦板潃 + stockDetail.LocatNo = endLocatInfo.LocatNo;//鍌ㄤ綅鍦板潃 + stockDetail.UpdateTime = DateTime.Now;//鏇存柊鏃堕棿 if (endAreaInfo.Type == "0")//娲佸噣鍖� { stockDetail.PalletStatus = "0"; @@ -1089,7 +1194,7 @@ /// </summary> /// <param name="req"></param> /// <returns></returns> - public bool CreateTaskForAgv(TaskDetial taskDetial, string url) + public bool CreateTaskForAgv(TaskDetial taskDetial, string url,string priority=null) { bool result = false; @@ -1139,6 +1244,7 @@ agvTask.positionCodePath = pahtList;//灏忚溅璺緞 agvTask.podCode = ""; agvTask.userCallCode = "";//taskDetial.Endport;//鐩爣浣嶇疆 + agvTask.priority = priority;//浼樺厛绾� //鍒ゆ柇瀹瑰櫒绫诲瀷 if (taskDetial.WareHouseNo == "M04")//鍠峰共杞﹂棿 { @@ -1188,5 +1294,159 @@ return result; #endregion } + + /// <summary> + /// 鍒嗛厤妗跺悗鍒ゆ柇璇ユ《澶栦晶鍌ㄤ綅鏄惁闇�瑕佺Щ搴� + /// </summary> + /// <param name="palletNo"></param> + /// <param name="url"></param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + private bool YikuTask(string palletNo,string url) + { + try + { + //鍒嗛厤妗剁殑搴撳瓨淇℃伅 + var palletInfo = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo); + if (palletInfo == null) + { + throw new Exception("鏈煡璇㈠埌鍒嗛厤妗剁殑搴撳瓨淇℃伅"); + } + //鍒ゆ柇鍒嗛厤鐨勬《鏈夋病鏈夋鍦ㄦ墽琛岀殑浠诲姟锛堢Щ搴撲腑锛� + var taskIng= Db.Queryable<LogTask>().First(w => w.IsDel == "0" && (w.Status == "0" || w.Status == "1") && w.PalletNo == palletNo); + if (taskIng != null) + { + throw new Exception("鍒嗛厤鐨勬《鏈夋鍦ㄦ墽琛岀殑浠诲姟锛岃绋嶅悗鍐嶈瘯"); + } + //鍒嗛厤妗剁殑鍌ㄤ綅淇℃伅 + var locatInfo = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletInfo.LocatNo); + if (locatInfo == null) + { + throw new Exception("鏈煡璇㈠埌鍒嗛厤妗舵墍鍦ㄧ殑鍌ㄤ綅淇℃伅"); + } + + //鍒ゆ柇璇ュ偍浣嶆槸鍚︽槸鍐呬晶鍌ㄤ綅 + if (!string.IsNullOrEmpty(locatInfo.AisleOne)) + { + //鍒ゆ柇澶栦晶鍌ㄤ綅鏄惁鏈夋《 + var palletInfoYi = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.LocatNo == locatInfo.AisleOne); + if (palletInfoYi != null) + { + //鍒ゆ柇瑕佺Щ搴撶殑妗舵槸鍚﹁鍒嗛厤 + if (palletInfoYi.Status != "0") + { + throw new Exception("瑕佺Щ搴撶殑妗跺凡琚垎閰嶏紝璇风◢鍚庡啀璇�"); + } + //鍒ゆ柇瑕佺Щ搴撶殑妗舵槸鍚︽湁姝e湪鎵ц鐨勪换鍔� + var taskInfo = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && (w.Status == "0" || w.Status == "1") && w.PalletNo == palletInfoYi.PalletNo); + if (taskInfo != null) + { + throw new Exception("瑕佺Щ搴撶殑妗舵湁姝e湪鎵ц鐨勪换鍔★紝璇风◢鍚庡啀璇�"); + } + #region#缁欒绉诲簱鐨勬《鍒嗛厤鏂板偍浣� + var locatInfoNew = new SysStorageLocat(); + //浼樺厛鍒嗛厤鍐呬晶鍌ㄤ綅 + var locatListNei = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0" && !string.IsNullOrEmpty(w.AisleOne) && w.WareHouseNo == palletInfoYi.WareHouseNo && w.AreaNo == palletInfoYi.AreaNo).ToList(); + foreach (var item in locatListNei) + { + //鍒ゆ柇璇ュ唴渚у偍浣嶇殑澶栦晶鍌ㄤ綅鏄惁鏈夋《 + var detailWai = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.LocatNo == item.AisleOne); + if (detailWai != null) + { + continue; + } + locatInfoNew = item; + break; + } + if (locatInfoNew == null) + { + //娌℃湁鍐呬晶鍌ㄤ綅锛屽啀鏌ユ壘澶栦晶鍌ㄤ綅 + var locatListWai = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0" && string.IsNullOrEmpty(w.AisleOne) && w.WareHouseNo == palletInfoYi.WareHouseNo && w.AreaNo == palletInfoYi.AreaNo).OrderBy(o => o.Row).ToList(); + foreach (var item in locatListWai) + { + //鍒ゆ柇璇ュ偍浣嶇殑鍐呬晶鍌ㄤ綅鏄惁鏈夋鍦ㄦ墽琛岀殑浠诲姟 + var locatItemNei = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.AisleOne == item.LocatNo); + if (locatItemNei != null && locatItemNei.Status != "0") + { + continue; + } + locatInfoNew = item; + break; + } + } + if (locatInfoNew == null) + { + throw new Exception("娌℃湁绌轰綑鐨勭┖鍌ㄤ綅杩涜绉诲簱"); + } + #endregion + + //缁欎笅杞︿笅鍙戠Щ搴撲换鍔� + var taskNo = new Common().GetMaxNo("TK");//浠诲姟鍙� + //浠诲姟淇℃伅 + var logTaskEntry = new LogTask + { + TaskNo = taskNo, + Sender = "WMS", + Receiver = "RCS", + //IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 + SendDate = DateTime.Now, //鍙戦�佹椂闂� + //BackDate = DateTime.Now, //杩斿洖鏃堕棿 + StartLocat = palletInfoYi.LocatNo,//璧峰浣嶇疆 + EndLocat = locatInfoNew.LocatNo,//鐩爣浣嶇疆 + PalletNo = palletInfoYi.PalletNo,//鎵樼洏鐮� + IsSend = 1,//鏄惁鍙啀娆′笅鍙� + IsCancel = 1,//鏄惁鍙彇娑� + IsFinish = 1,//鏄惁鍙畬鎴� + Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 + OrderType = "3",//鍗曟嵁绫诲瀷 0 鍏ュ簱 1 鍑哄簱 3绉诲簱 + Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 + NoticeDetailNo = 0, + Msg = $"灏嗘《{palletInfoYi.PalletNo}浠巤palletInfoYi.LocatNo}绉诲埌{locatInfoNew.LocatNo}", //鍏抽敭淇℃伅 + LotNo = ""//鎵规鍙� + }; + + //缁勭粐涓嬪彂灏忚溅浠诲姟淇℃伅 + var task = new TaskDetial + { + Taskno = taskNo,//浠诲姟鍙� + Startport = palletInfoYi.LocatNo,//璧峰浣嶇疆 + Endport = locatInfoNew.LocatNo,//endLoction.LocatNo,//鐩爣浣嶇疆 + Pallno = palletInfoYi.PalletNo,//妗跺彿 + Crtype = "1",//鍙《 + WareHouseNo = palletInfoYi.WareHouseNo//杞﹂棿缂栫爜 + }; + //缁欎笅杞︿笅鍙戜换鍔� + logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂� + var agvResult = CreateTaskForAgv(task, url, "70"); + if (agvResult)//鎴愬姛 + { + //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� + logTaskEntry.IsSuccess = 1; + logTaskEntry.IsSend = 0; + //logTaskEntry.IsCancel = 0; + logTaskEntry.BackDate = DateTime.Now; + logTaskEntry.Status = "1";//姝e湪鎵ц + Db.Insertable(logTaskEntry).ExecuteCommand(); + + + locatInfo.Status = "5";//绉诲嚭涓� + Db.Updateable(locatInfo).ExecuteCommand(); + + locatInfoNew.Status = "4";//绉诲叆涓� + Db.Updateable(locatInfoNew).ExecuteCommand(); + } + else//澶辫触 + { + throw new Exception($"缁欏皬杞︿笅鍙戠Щ搴撲换鍔″け璐ワ紝妗跺彿锛歿palletInfoYi.PalletNo}"); + } + } + } + return true; + } + catch (Exception e) + { + throw new Exception(e.Message); + } + } } } -- Gitblit v1.8.0