From 7631b07ef475e8372811b01563a9719033a0a074 Mon Sep 17 00:00:00 2001 From: wxw <Administrator@DESKTOP-5BIMHQ3> Date: 星期二, 11 三月 2025 19:57:08 +0800 Subject: [PATCH] Merge branch 'wxw' --- Wms/WMS.BLL/BllTransServer/RcsServer.cs | 1248 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 628 insertions(+), 620 deletions(-) diff --git a/Wms/WMS.BLL/BllTransServer/RcsServer.cs b/Wms/WMS.BLL/BllTransServer/RcsServer.cs index 4eda808..219fec2 100644 --- a/Wms/WMS.BLL/BllTransServer/RcsServer.cs +++ b/Wms/WMS.BLL/BllTransServer/RcsServer.cs @@ -27,6 +27,8 @@ { public class RcsServer:IRcsServer { + private readonly object RcsLock = new object(); + private static readonly SqlSugarScope Db = DataContext.Db; /// <summary> /// RCS鍙《 @@ -36,401 +38,404 @@ /// <param name="taskNo"></param> /// <exception cref="Exception"></exception> public void GetPalletNo(Pallnetmsg model, string url, out string taskNo) - { - try + { + lock (RcsLock) { - string taskMsg = ""; - if (string.IsNullOrEmpty(model.Location)) + try { - throw new Exception("璁惧缂栫爜涓嶅彲涓虹┖"); - } - //閫氳繃璁惧鍙锋煡鎵惧埌鎵�灞炶澶囷紙鍖哄煙锛� - 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;//鍙《璁惧鎵�灞炶溅闂寸紪鍙� + string taskMsg = ""; + if (string.IsNullOrEmpty(model.Location)) + { + throw new Exception("璁惧缂栫爜涓嶅彲涓虹┖"); + } + //閫氳繃璁惧鍙锋煡鎵惧埌鎵�灞炶澶囷紙鍖哄煙锛� + 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 endLoction = new SysStorageLocat(); - - var urlMes = "";//鍥炰紶MES鐨勬帴鍙e湴鍧� - var noticeNo = "0";//鍑哄叆搴撳崟鎹槑缁咺D + //鍙《璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙鐩爣鍌ㄤ綅锛� + var endLoction = new SysStorageLocat(); - //鎵�鏈夊緟鍒嗛厤鐨勬《 - var stockDetail = Db.Queryable<DataStockDetail>().Where(w => w.Status == "0"); - //鍒嗛厤妗朵俊鎭� - var pallet = new DataStockDetail(); + var urlMes = "";//鍥炰紶MES鐨勬帴鍙e湴鍧� + var noticeNo = "0";//鍑哄叆搴撳崟鎹槑缁咺D - //寮�濮嬩簨鍔� - Db.BeginTran(); - //鍒ゆ柇鍙枡璁惧鏄惁鏄疉鍖虹殑娣锋枡璁惧03锛岃璁惧鏄帴鏂欐贩鏂欎竴浣撴満锛孉GV鍙《搴旇鍙噣妗舵帴鏂� - if (houseNo=="M03" && model.Location == "125" && model.Type=="1") - { - model.Type = "0"; - } - string agvMsg = string.Empty; - switch (model.Type) - { - case "0"://鎺ユ枡璁惧鍙噣妗� - { - //鍙《鐩爣鍌ㄤ綅鍦板潃淇℃伅 - 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("鍙《璁惧鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦�"); - } - //鏌ユ壘鍒拌杞﹂棿鍑�妗跺尯 - 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(); - //鏌ユ壘鍑�妗� - 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("绉诲簱澶辫触"); - } + //鎵�鏈夊緟鍒嗛厤鐨勬《 + var stockDetail = Db.Queryable<DataStockDetail>().Where(w => w.Status == "0"); + //鍒嗛厤妗朵俊鎭� + var pallet = new DataStockDetail(); - pallet.Status = "2";//鍒嗛厤鐘舵�� 0:寰呭垎閰嶏紝1锛氶儴鍒嗗垎閰� 锛� 2:宸插垎閰� - //鏇存柊妗跺簱瀛樻槑缁� - Db.Updateable(pallet).ExecuteCommand(); - - taskMsg = "璁惧鍙噣妗朵换鍔�"; - } - break; - case "1"://娣锋枡璁惧鍙枡妗讹紙娣锋枡锛� - { - //鍙《鐩爣鍌ㄤ綅鍦板潃淇℃伅 - 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("鍙《璁惧鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦�"); - } - //鍒ゆ柇鏄惁鏈夋壒娆″彿 - if (string.IsNullOrWhiteSpace(model.LotNo)) - { - throw new Exception("鎵规鍙蜂负绌猴紒"); - } - //鏌ユ壘鍒拌杞﹂棿棰勬贩鍖� - 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)).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(); - - taskMsg = "璁惧鍙枡妗舵贩鏂欎换鍔�"; - } - break; - case "2"://涓嬫枡璁惧鍙枡妗讹紙涓嬫枡锛� - { - if (houseNo == "M04")//闄や簡鍠峰共杞﹂棿涓嬫枡鍙i兘鏄�2涓偍浣嶏紙鎶曟枡鍌ㄤ綅銆佹姇瀹屾枡鍌ㄤ綅锛� + //寮�濮嬩簨鍔� + Db.BeginTran(); + //鍒ゆ柇鍙枡璁惧鏄惁鏄疉鍖虹殑娣锋枡璁惧03锛岃璁惧鏄帴鏂欐贩鏂欎竴浣撴満锛孉GV鍙《搴旇鍙噣妗舵帴鏂� + if (houseNo == "M03" && model.Location == "125" && model.Type == "1") + { + model.Type = "0"; + } + string agvMsg = string.Empty; + switch (model.Type) + { + case "0"://鎺ユ枡璁惧鍙噣妗� { //鍙《鐩爣鍌ㄤ綅鍦板潃淇℃伅 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("鍙《璁惧鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦�"); + } + //鏌ユ壘鍒拌杞﹂棿鍑�妗跺尯 + 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(); + //鏌ユ壘鍑�妗� + 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(); + + taskMsg = "璁惧鍙噣妗朵换鍔�"; } - else + break; + case "1"://娣锋枡璁惧鍙枡妗讹紙娣锋枡锛� { //鍙《鐩爣鍌ㄤ綅鍦板潃淇℃伅 - endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo && w.Column == 1);// Column=1 鎶曟枡鍌ㄤ綅锛孋olumn=2 鎶曞畬鏂欏偍浣� - } - if (endLoction == null) - { - throw new Exception("鍙《璁惧鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦�"); - } - //鍒ゆ柇鏄惁鏈夋壒娆″彿 - if (string.IsNullOrWhiteSpace(model.LotNo)) - { - throw new Exception("鎵规鍙蜂负绌猴紒"); - } - //鏌ユ壘鏄惁鏈夋鎵规鍑哄簱鍗曟槑缁� - /*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("璇ユ壒娆℃病鏈夊搴旂殑鍑哄簱鍗曟槑缁�"); - } - noticeNo = soNoticeDetail.Id.ToString(); - //鍑哄簱鎬诲崟 - var soNotice = Db.Queryable<BllExportNotice>().Where(w => w.IsDel == "0" && w.SONo == soNoticeDetail.SONo).First(); - if (soNotice == null) - { - throw new Exception("璇ユ壒娆℃病鏈夊搴旂殑鍑哄簱鍗�"); - } - soNotice.Status = "3";//姝e湪鎵ц - soNotice.UpdateTime = DateTime.Now; - //鏇存柊鍑哄簱鍗� - 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)).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(); - - taskMsg = "璁惧鍙枡妗朵笅鏂欎换鍔�"; - } - break; - case "3"://娓呮礂璁惧鍙剰妗� - { - //鍙《鐩爣鍌ㄤ綅鍦板潃淇℃伅 - endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo && w.Column == 1);// Column=1 娓呮礂鍌ㄤ綅锛孋olumn=2 娓呮礂瀹屾枡鍌ㄤ綅 - if (endLoction == null) - { - throw new Exception("鍙《璁惧鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦�"); - } - //鏌ユ壘鍒拌杞﹂棿鑴忔《鍖� - 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 = 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("鏆傛棤鑴忔《鍙垎閰�"); - } - taskMsg = "璁惧鍙剰妗朵换鍔�"; - //閬嶅巻搴撳瓨鑴忔《锛岃繑鍥濵ES楠岃瘉 - foreach (var item in palletList) - { - #region 鍘绘帀MES - //string jsonReq = JsonConvert.SerializeObject(item.PalletNo); - //var response = HttpHelper.DoPost(urlMes, jsonReq, "鍥炰紶MES鑴忔《缂栧彿", "RCS").ToString(); - //var obj = JsonConvert.DeserializeObject<ReMes>(response);//瑙f瀽杩斿洖鏁版嵁 - //if (obj.Success == "0") - //{ - // if (obj.Result != "1")//涓嶅彲娓呮礂锛屽皢鑴忔《鍐荤粨 - // { - // item.Status = "5";//寮傚父鍐荤粨 - // //淇敼璇ユ《搴撳瓨鐘舵�� - // Db.Updateable(item).ExecuteCommand(); - - // continue; - // } - // //涓嬪彂灏忚溅浠诲姟 - // var task2 = new TaskDetial - // { - // Startport = item.LocatNo, - // Endport = model.Location, - // Pallno = item.PalletNo, - // Type = model.Type, - // Crtype = "1", - // Noticedetailno = int.Parse(noticeno), - // }; - // CreateLotTask(task2); - // return; - //} - //else - //{ - // throw new Exception("鍥炰紶MES鍑�妗剁紪鍙峰け璐ワ紒"); - //} - #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); - if (startLoction2 == null) + 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($"璧峰鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦紝妗跺彿锛歿item.LocatNo}"); + throw new Exception("鍙《璁惧鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦�"); + } + //鍒ゆ柇鏄惁鏈夋壒娆″彿 + if (string.IsNullOrWhiteSpace(model.LotNo)) + { + throw new Exception("鎵规鍙蜂负绌猴紒"); + } + //鏌ユ壘鍒拌杞﹂棿棰勬贩鍖� + 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)).OrderBy(o => o.UpdateTime).First(); + if (pallet == null) + { + throw new Exception("鏆傛棤娣锋枡妗跺彲鍒嗛厤"); + } + //鍒嗛厤妗跺悗鍒ゆ柇璇ユ《澶栦晶鍌ㄤ綅鏄惁闇�瑕佺Щ搴� + bool yikuResult = YikuTask(pallet.PalletNo, url); + if (!yikuResult) + { + throw new Exception("绉诲簱澶辫触"); } - taskNo = new Common().GetMaxNo("TN");//浠诲姟鍙� - var logTaskEntry2 = new LogTask - { - TaskNo = taskNo, - Sender = "WMS", - Receiver = "RCS", - //IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 - SendDate = DateTime.Now, //鍙戦�佹椂闂� - //BackDate = DateTime.Now, //杩斿洖鏃堕棿 - StartLocat = item.LocatNo,//璧峰浣嶇疆 - EndLocat = endLoction.LocatNo,//鐩爣浣嶇疆 - PalletNo = item.PalletNo,//鎵樼洏鐮� - IsSend = 1,//鏄惁鍙啀娆′笅鍙� - IsCancel = 1,//鏄惁鍙彇娑� - IsFinish = 1,//鏄惁鍙畬鎴� - Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 - OrderType = "3",//鍗曟嵁绫诲瀷 0 鍏ュ簱 1 鍑哄簱 3 绉诲簱 - 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,//endLoction.LocatNo, - Pallno = item.PalletNo, - Crtype = "1",//鍙《 - WareHouseNo = houseNo - }; - //缁欎笅杞︿笅鍙戜换鍔� - logTaskEntry2.SendDate = DateTime.Now;//鍙戦�佹椂闂� - var agvResult2 = CreateTaskForAgv(task2, url, out agvMsg); - if (agvResult2)//鎴愬姛 - { - //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� - logTaskEntry2.IsSuccess = 1; - logTaskEntry2.IsSend = 0; - //logTaskEntry2.IsCancel = 0; - logTaskEntry2.BackDate = DateTime.Now; - logTaskEntry2.Status = "1"; - Db.Insertable(logTaskEntry2).ExecuteCommand(); + pallet.Status = "2";//鍒嗛厤鐘舵�� 0:寰呭垎閰嶏紝1锛氶儴鍒嗗垎閰� 锛� 2:宸插垎閰� + //鏇存柊妗跺簱瀛樻槑缁� + Db.Updateable(pallet).ExecuteCommand(); - startLoction2.Status = "3";//鍑哄簱涓� - Db.Updateable(startLoction2).ExecuteCommand(); - - endLoction.Status = "2";//鍏ュ簱涓� - Db.Updateable(endLoction).ExecuteCommand(); - } - else//澶辫触 - { - logTaskEntry2.IsSuccess = 0; - logTaskEntry2.Information = agvMsg; - Db.Insertable(logTaskEntry2).ExecuteCommand(); - - } - //鎻愪氦浜嬪姟 - Db.CommitTran(); - return; + taskMsg = "璁惧鍙枡妗舵贩鏂欎换鍔�"; } - } - break; - default: - throw new Exception("浠诲姟绫诲瀷鏃犳晥"); - } - //璧峰鍌ㄤ綅鍦板潃淇℃伅 - var startLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == pallet.LocatNo); - if (startLoction == null) - { - throw new Exception($"璧峰鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦紝妗跺彿锛歿pallet.LocatNo}"); - } + break; + case "2"://涓嬫枡璁惧鍙枡妗讹紙涓嬫枡锛� + { + if (houseNo == "M04")//闄や簡鍠峰共杞﹂棿涓嬫枡鍙i兘鏄�2涓偍浣嶏紙鎶曟枡鍌ㄤ綅銆佹姇瀹屾枡鍌ㄤ綅锛� + { + //鍙《鐩爣鍌ㄤ綅鍦板潃淇℃伅 + endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo && w.Column == 1); + } + else + { + //鍙《鐩爣鍌ㄤ綅鍦板潃淇℃伅 + endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo && w.Column == 1);// Column=1 鎶曟枡鍌ㄤ綅锛孋olumn=2 鎶曞畬鏂欏偍浣� + } + if (endLoction == null) + { + throw new Exception("鍙《璁惧鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦�"); + } + //鍒ゆ柇鏄惁鏈夋壒娆″彿 + if (string.IsNullOrWhiteSpace(model.LotNo)) + { + throw new Exception("鎵规鍙蜂负绌猴紒"); + } + //鏌ユ壘鏄惁鏈夋鎵规鍑哄簱鍗曟槑缁� + /*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("璇ユ壒娆℃病鏈夊搴旂殑鍑哄簱鍗曟槑缁�"); + } + noticeNo = soNoticeDetail.Id.ToString(); + //鍑哄簱鎬诲崟 + var soNotice = Db.Queryable<BllExportNotice>().Where(w => w.IsDel == "0" && w.SONo == soNoticeDetail.SONo).First(); + if (soNotice == null) + { + throw new Exception("璇ユ壒娆℃病鏈夊搴旂殑鍑哄簱鍗�"); + } + soNotice.Status = "3";//姝e湪鎵ц + soNotice.UpdateTime = DateTime.Now; + //鏇存柊鍑哄簱鍗� + Db.Updateable(soNotice).ExecuteCommand();*/ - taskNo = new Common().GetMaxNo("TN");//浠诲姟鍙� - //浠诲姟淇℃伅 - var logTaskEntry = new LogTask - { - TaskNo = taskNo, - Sender = "WMS", - Receiver = "RCS", - //IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 - SendDate = DateTime.Now, //鍙戦�佹椂闂� - //BackDate = DateTime.Now, //杩斿洖鏃堕棿 - StartLocat = pallet.LocatNo,//璧峰浣嶇疆 - EndLocat = endLoction.LocatNo,//鐩爣浣嶇疆 - PalletNo = pallet.PalletNo,//鎵樼洏鐮� - IsSend = 1,//鏄惁鍙啀娆′笅鍙� - IsCancel = 1,//鏄惁鍙彇娑� - IsFinish = 1,//鏄惁鍙畬鎴� - Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 - OrderType = "3",//鍗曟嵁绫诲瀷 0 鍏ュ簱 1 鍑哄簱 3绉诲簱 - Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 - NoticeDetailNo = int.Parse(noticeNo), - Msg = taskMsg, //鍏抽敭淇℃伅 - LotNo = pallet.LotNo//鎵规鍙� - }; + //鏌ユ壘鍒拌杞﹂棿鍗婃垚鍝佸尯 + 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)).OrderBy(o => o.UpdateTime).First(); + if (pallet == null) + { + throw new Exception("鏆傛棤涓嬫枡妗跺彲鍒嗛厤"); + } + //鍒嗛厤妗跺悗鍒ゆ柇璇ユ《澶栦晶鍌ㄤ綅鏄惁闇�瑕佺Щ搴� + bool yikuResult = YikuTask(pallet.PalletNo, url); + if (!yikuResult) + { + throw new Exception("绉诲簱澶辫触"); + } - //缁勭粐涓嬪彂灏忚溅浠诲姟淇℃伅 - var task = new TaskDetial - { - Taskno = taskNo,//浠诲姟鍙� - Startport = pallet.LocatNo,//璧峰浣嶇疆 - Endport = model.Location,//endLoction.LocatNo,//鐩爣浣嶇疆 - Pallno = pallet.PalletNo,//妗跺彿 - Crtype = "1",//鍙《 - WareHouseNo = houseNo//杞﹂棿缂栫爜 - }; - //缁欎笅杞︿笅鍙戜换鍔� - logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂� - var agvResult = CreateTaskForAgv(task, url, out agvMsg); - if (agvResult)//鎴愬姛 - { - //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� - logTaskEntry.IsSuccess = 1; - logTaskEntry.IsSend = 0; - //logTaskEntry.IsCancel = 0; - logTaskEntry.BackDate = DateTime.Now; - logTaskEntry.Status = "1";//姝e湪鎵ц - Db.Insertable(logTaskEntry).ExecuteCommand(); + pallet.Status = "2";//鍒嗛厤鐘舵�� 0:寰呭垎閰嶏紝1锛氶儴鍒嗗垎閰� 锛� 2:宸插垎閰� + //鏇存柊妗跺簱瀛樻槑缁� + Db.Updateable(pallet).ExecuteCommand(); - startLoction.Status = "3";//鍑哄簱涓� - Db.Updateable(startLoction).ExecuteCommand(); + taskMsg = "璁惧鍙枡妗朵笅鏂欎换鍔�"; + } + break; + case "3"://娓呮礂璁惧鍙剰妗� + { + //鍙《鐩爣鍌ㄤ綅鍦板潃淇℃伅 + endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo && w.Column == 1);// Column=1 娓呮礂鍌ㄤ綅锛孋olumn=2 娓呮礂瀹屾枡鍌ㄤ綅 + if (endLoction == null) + { + throw new Exception("鍙《璁惧鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦�"); + } + //鏌ユ壘鍒拌杞﹂棿鑴忔《鍖� + 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(); - endLoction.Status = "2";//鍏ュ簱涓� - Db.Updateable(endLoction).ExecuteCommand(); + 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("鏆傛棤鑴忔《鍙垎閰�"); + } + taskMsg = "璁惧鍙剰妗朵换鍔�"; + //閬嶅巻搴撳瓨鑴忔《锛岃繑鍥濵ES楠岃瘉 + foreach (var item in palletList) + { + #region 鍘绘帀MES + //string jsonReq = JsonConvert.SerializeObject(item.PalletNo); + //var response = HttpHelper.DoPost(urlMes, jsonReq, "鍥炰紶MES鑴忔《缂栧彿", "RCS").ToString(); + //var obj = JsonConvert.DeserializeObject<ReMes>(response);//瑙f瀽杩斿洖鏁版嵁 + //if (obj.Success == "0") + //{ + // if (obj.Result != "1")//涓嶅彲娓呮礂锛屽皢鑴忔《鍐荤粨 + // { + // item.Status = "5";//寮傚父鍐荤粨 + // //淇敼璇ユ《搴撳瓨鐘舵�� + // Db.Updateable(item).ExecuteCommand(); + + // continue; + // } + // //涓嬪彂灏忚溅浠诲姟 + // var task2 = new TaskDetial + // { + // Startport = item.LocatNo, + // Endport = model.Location, + // Pallno = item.PalletNo, + // Type = model.Type, + // Crtype = "1", + // Noticedetailno = int.Parse(noticeno), + // }; + // CreateLotTask(task2); + // return; + //} + //else + //{ + // throw new Exception("鍥炰紶MES鍑�妗剁紪鍙峰け璐ワ紒"); + //} + #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); + if (startLoction2 == null) + { + throw new Exception($"璧峰鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦紝妗跺彿锛歿item.LocatNo}"); + } + + taskNo = new Common().GetMaxNo("TN");//浠诲姟鍙� + var logTaskEntry2 = new LogTask + { + TaskNo = taskNo, + Sender = "WMS", + Receiver = "RCS", + //IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 + SendDate = DateTime.Now, //鍙戦�佹椂闂� + //BackDate = DateTime.Now, //杩斿洖鏃堕棿 + StartLocat = item.LocatNo,//璧峰浣嶇疆 + EndLocat = endLoction.LocatNo,//鐩爣浣嶇疆 + PalletNo = item.PalletNo,//鎵樼洏鐮� + IsSend = 1,//鏄惁鍙啀娆′笅鍙� + IsCancel = 1,//鏄惁鍙彇娑� + IsFinish = 1,//鏄惁鍙畬鎴� + Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 + OrderType = "3",//鍗曟嵁绫诲瀷 0 鍏ュ簱 1 鍑哄簱 3 绉诲簱 + 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,//endLoction.LocatNo, + Pallno = item.PalletNo, + Crtype = "1",//鍙《 + WareHouseNo = houseNo + }; + //缁欎笅杞︿笅鍙戜换鍔� + logTaskEntry2.SendDate = DateTime.Now;//鍙戦�佹椂闂� + var agvResult2 = CreateTaskForAgv(task2, url, out agvMsg); + if (agvResult2)//鎴愬姛 + { + //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� + logTaskEntry2.IsSuccess = 1; + logTaskEntry2.IsSend = 0; + //logTaskEntry2.IsCancel = 0; + logTaskEntry2.BackDate = DateTime.Now; + logTaskEntry2.Status = "1"; + Db.Insertable(logTaskEntry2).ExecuteCommand(); + + startLoction2.Status = "3";//鍑哄簱涓� + Db.Updateable(startLoction2).ExecuteCommand(); + + endLoction.Status = "2";//鍏ュ簱涓� + Db.Updateable(endLoction).ExecuteCommand(); + } + else//澶辫触 + { + logTaskEntry2.IsSuccess = 0; + logTaskEntry2.Information = agvMsg; + Db.Insertable(logTaskEntry2).ExecuteCommand(); + + } + //鎻愪氦浜嬪姟 + Db.CommitTran(); + return; + } + } + break; + default: + throw new Exception("浠诲姟绫诲瀷鏃犳晥"); + } + //璧峰鍌ㄤ綅鍦板潃淇℃伅 + var startLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == pallet.LocatNo); + if (startLoction == null) + { + throw new Exception($"璧峰鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦紝妗跺彿锛歿pallet.LocatNo}"); + } + + taskNo = new Common().GetMaxNo("TN");//浠诲姟鍙� + //浠诲姟淇℃伅 + var logTaskEntry = new LogTask + { + TaskNo = taskNo, + Sender = "WMS", + Receiver = "RCS", + //IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 + SendDate = DateTime.Now, //鍙戦�佹椂闂� + //BackDate = DateTime.Now, //杩斿洖鏃堕棿 + StartLocat = pallet.LocatNo,//璧峰浣嶇疆 + EndLocat = endLoction.LocatNo,//鐩爣浣嶇疆 + PalletNo = pallet.PalletNo,//鎵樼洏鐮� + IsSend = 1,//鏄惁鍙啀娆′笅鍙� + IsCancel = 1,//鏄惁鍙彇娑� + IsFinish = 1,//鏄惁鍙畬鎴� + Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 + OrderType = "3",//鍗曟嵁绫诲瀷 0 鍏ュ簱 1 鍑哄簱 3绉诲簱 + Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 + NoticeDetailNo = int.Parse(noticeNo), + Msg = taskMsg, //鍏抽敭淇℃伅 + LotNo = pallet.LotNo//鎵规鍙� + }; + + //缁勭粐涓嬪彂灏忚溅浠诲姟淇℃伅 + var task = new TaskDetial + { + Taskno = taskNo,//浠诲姟鍙� + Startport = pallet.LocatNo,//璧峰浣嶇疆 + Endport = model.Location,//endLoction.LocatNo,//鐩爣浣嶇疆 + Pallno = pallet.PalletNo,//妗跺彿 + Crtype = "1",//鍙《 + WareHouseNo = houseNo//杞﹂棿缂栫爜 + }; + //缁欎笅杞︿笅鍙戜换鍔� + logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂� + var agvResult = CreateTaskForAgv(task, url, out agvMsg); + if (agvResult)//鎴愬姛 + { + //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� + logTaskEntry.IsSuccess = 1; + logTaskEntry.IsSend = 0; + //logTaskEntry.IsCancel = 0; + logTaskEntry.BackDate = DateTime.Now; + logTaskEntry.Status = "1";//姝e湪鎵ц + Db.Insertable(logTaskEntry).ExecuteCommand(); + + startLoction.Status = "3";//鍑哄簱涓� + Db.Updateable(startLoction).ExecuteCommand(); + + endLoction.Status = "2";//鍏ュ簱涓� + Db.Updateable(endLoction).ExecuteCommand(); + } + else//澶辫触 + { + logTaskEntry.IsSuccess = 0; + logTaskEntry.Information = agvMsg; + Db.Insertable(logTaskEntry).ExecuteCommand(); + + } + //鎻愪氦浜嬪姟 + Db.CommitTran(); } - else//澶辫触 + catch (Exception ex) { - logTaskEntry.IsSuccess = 0; - logTaskEntry.Information = agvMsg; - Db.Insertable(logTaskEntry).ExecuteCommand(); - + //鍥炴粴浜嬪姟 + Db.RollbackTran(); + throw new Exception(ex.Message); } - //鎻愪氦浜嬪姟 - Db.CommitTran(); - } - catch (Exception ex) - { - //鍥炴粴浜嬪姟 - Db.RollbackTran(); - throw new Exception(ex.Message); } } @@ -442,275 +447,278 @@ /// <param name="taskNo"></param> /// <exception cref="Exception"></exception> public void ApplyLocatNo(Pallnetmsg model, string url, out string taskNo) - { - try + { + lock (RcsLock) { - string taskMsg = ""; - - //閫氳繃璁惧鍙锋煡鎵惧埌鎵�灞炶澶囷紙鍖哄煙锛� - var deviceInfo = Db.Queryable<SysStorageArea>().First(w => w.IsDel == "0" && w.DeviceCode.Contains(model.Location)); - if (deviceInfo == null) + try { - throw new Exception("璁惧淇℃伅涓嶅瓨鍦�"); - } - //鐢宠鍌ㄤ綅璁惧鎵�鍦ㄨ溅闂寸紪鍙� - var houseNo = deviceInfo.WareHouseNo; - //璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙璧峰鍌ㄤ綅锛� - var deviceLocatInfo = new SysStorageLocat(); - //鍑哄叆搴撳崟鎹槑缁咺D - var noticeno = "0"; - //鐩爣鍌ㄤ綅淇℃伅 - var loction = new SysStorageLocat(); - //妗跺簱瀛樹俊鎭� - var palletInfo = new DataStockDetail(); + string taskMsg = ""; - //寮�鍚簨鍔� - Db.BeginTran(); - 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}"); - } + //閫氳繃璁惧鍙锋煡鎵惧埌鎵�灞炶澶囷紙鍖哄煙锛� + 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 deviceLocatInfo = new SysStorageLocat(); + //鍑哄叆搴撳崟鎹槑缁咺D + var noticeno = "0"; + //鐩爣鍌ㄤ綅淇℃伅 + var loction = new SysStorageLocat(); + //妗跺簱瀛樹俊鎭� + var palletInfo = new DataStockDetail(); - //璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙璧峰鍌ㄤ綅锛� - 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) + //寮�鍚簨鍔� + Db.BeginTran(); + switch (model.Type) + { + case "3"://娓呮礂璁惧鐢宠鍌ㄤ綅锛堝噣妗剁敵璇峰偍浣嶏級 { - throw new Exception($"鏈煡璇㈠埌璇ヨ澶囨墍鍦ㄥ偍浣嶄俊鎭紝Location:{model.Location}"); - } - //鏌ユ壘鍒拌杞﹂棿鍑�妗跺尯; - loction = GetLocatModel(houseNo, "0"); - if (loction == null) - { - throw new Exception("璇ヨ溅闂村噣妗跺尯鏆傛棤绌轰綑鍌ㄤ綅"); - } + //璁惧鏀炬《鍌ㄤ綅淇℃伅锛堝師濮嬪彨妗剁洰鏍囧偍浣嶏級 + 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}"); + } - taskMsg = "娓呮礂璁惧锛堝噣妗讹級鐢宠鍌ㄤ綅浠诲姟"; - } - break; - case "0"://鎺ユ枡璁惧鐢宠鍌ㄤ綅锛堥娣锋枡妗剁敵璇峰偍浣嶏級 - { - //璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙璧峰鍌ㄤ綅锛� - 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}"); - } - //鏌ユ壘妗跺簱瀛樹俊鎭� - 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(); + //璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙璧峰鍌ㄤ綅锛� + 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) + { + throw new Exception($"鏈煡璇㈠埌璇ヨ澶囨墍鍦ㄥ偍浣嶄俊鎭紝Location:{model.Location}"); + } + //鏌ユ壘鍒拌杞﹂棿鍑�妗跺尯; + loction = GetLocatModel(houseNo, "0"); + if (loction == 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}"); + taskMsg = "娓呮礂璁惧锛堝噣妗讹級鐢宠鍌ㄤ綅浠诲姟"; } - - //鍒ゆ柇鏄惁鏈夋壒娆″彿 - if (string.IsNullOrWhiteSpace(model.LotNo)) - { - throw new Exception("鎵规鍙蜂负绌猴紒"); - } - //鏌ユ壘鍒拌杞﹂棿棰勬贩鍖� - loction = GetLocatModel(houseNo, "1"); - if (loction == null) - { - throw new Exception("璇ヨ溅闂撮娣峰尯鏆傛棤绌轰綑鍌ㄤ綅"); - } - - - taskMsg = "鎺ユ枡璁惧锛堥娣锋枡妗讹級鐢宠鍌ㄤ綅浠诲姟"; - } - break; - case "1"://娣锋枡璁惧鐢宠鍌ㄤ綅锛堝崐鎴愬搧妗剁敵璇峰偍浣嶏級 - { - //璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙璧峰鍌ㄤ綅锛� - 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}"); - } - //鏌ユ壘妗跺簱瀛樹俊鎭� - 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(); - if (noticeDetail == null) - { - throw new Exception("璇ユ壒娆℃病鏈夊搴旂殑鍏ュ簱鍗曟槑缁�"); - } - noticeno = noticeDetail.Id.ToString(); - //鍏ュ簱鎬诲崟 - var notice = Db.Queryable<BllArrivalNotice>().Where(w => w.IsDel == "0" && w.ASNNo == noticeDetail.ASNNo).First(); - if (notice == null) - { - throw new Exception("璇ユ壒娆℃病鏈夊搴旂殑鍏ュ簱鍗�"); - } - notice.Status = "1";//姝e湪鎵ц - //鏇存柊鍏ュ簱鍗曠姸鎬� - Db.Updateable(notice).ExecuteCommand();*/ - - //鏌ユ壘鍒拌杞﹂棿鍗婃垚鍝佸尯 - loction = GetLocatModel(houseNo, "2"); - if (loction == null) - { - throw new Exception("璇ヨ溅闂村崐鎴愬搧鍖烘殏鏃犵┖浣欏偍浣�"); - } - - taskMsg = "鎺ユ枡璁惧锛堟贩鏂欐《锛夌敵璇峰偍浣嶄换鍔�"; - } - 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涓偍浣嶏紙鎶曟枡鍌ㄤ綅銆佹姇瀹屾枡鍌ㄤ綅锛� + break; + case "0"://鎺ユ枡璁惧鐢宠鍌ㄤ綅锛堥娣锋枡妗剁敵璇峰偍浣嶏級 { //璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙璧峰鍌ㄤ綅锛� - deviceLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo && w.Column == 1); + 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}"); + } + //鏌ユ壘妗跺簱瀛樹俊鎭� + 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)) + { + throw new Exception("鎵规鍙蜂负绌猴紒"); + } + //鏌ユ壘鍒拌杞﹂棿棰勬贩鍖� + loction = GetLocatModel(houseNo, "1"); + if (loction == null) + { + throw new Exception("璇ヨ溅闂撮娣峰尯鏆傛棤绌轰綑鍌ㄤ綅"); + } + + + taskMsg = "鎺ユ枡璁惧锛堥娣锋枡妗讹級鐢宠鍌ㄤ綅浠诲姟"; } - else + break; + case "1"://娣锋枡璁惧鐢宠鍌ㄤ綅锛堝崐鎴愬搧妗剁敵璇峰偍浣嶏級 { //璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙璧峰鍌ㄤ綅锛� - 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) - { - throw new Exception($"鏈煡璇㈠埌璇ヨ澶囨墍鍦ㄥ偍浣嶄俊鎭紝Location:{model.Location}"); + 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}"); + } + //鏌ユ壘妗跺簱瀛樹俊鎭� + 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(); + if (noticeDetail == null) + { + throw new Exception("璇ユ壒娆℃病鏈夊搴旂殑鍏ュ簱鍗曟槑缁�"); + } + noticeno = noticeDetail.Id.ToString(); + //鍏ュ簱鎬诲崟 + var notice = Db.Queryable<BllArrivalNotice>().Where(w => w.IsDel == "0" && w.ASNNo == noticeDetail.ASNNo).First(); + if (notice == null) + { + throw new Exception("璇ユ壒娆℃病鏈夊搴旂殑鍏ュ簱鍗�"); + } + notice.Status = "1";//姝e湪鎵ц + //鏇存柊鍏ュ簱鍗曠姸鎬� + Db.Updateable(notice).ExecuteCommand();*/ + + //鏌ユ壘鍒拌杞﹂棿鍗婃垚鍝佸尯 + loction = GetLocatModel(houseNo, "2"); + if (loction == null) + { + throw new Exception("璇ヨ溅闂村崐鎴愬搧鍖烘殏鏃犵┖浣欏偍浣�"); + } + + taskMsg = "鎺ユ枡璁惧锛堟贩鏂欐《锛夌敵璇峰偍浣嶄换鍔�"; } - //鏌ユ壘鍒拌杞﹂棿鑴忔《鍖� - loction = GetLocatModel(houseNo, "3"); - if (loction == null) + break; + case "2"://涓嬫枡璁惧鐢宠鍌ㄤ綅锛堣剰妗剁敵璇峰偍浣嶏級 { - throw new Exception("璇ヨ溅闂磋剰妗跺尯鏆傛棤绌轰綑鍌ㄤ綅"); + //璁惧鏀炬《鍌ㄤ綅淇℃伅锛堝師濮嬪彨妗剁洰鏍囧偍浣嶏級 + 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 && w.Column == 1); + } + else + { + //璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙璧峰鍌ㄤ綅锛� + 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) + { + throw new Exception($"鏈煡璇㈠埌璇ヨ澶囨墍鍦ㄥ偍浣嶄俊鎭紝Location:{model.Location}"); + } + //鏌ユ壘鍒拌杞﹂棿鑴忔《鍖� + loction = GetLocatModel(houseNo, "3"); + if (loction == null) + { + throw new Exception("璇ヨ溅闂磋剰妗跺尯鏆傛棤绌轰綑鍌ㄤ綅"); + } + + taskMsg = "涓嬫枡璁惧锛堣剰妗讹級鐢宠鍌ㄤ綅浠诲姟"; } + break; + } - taskMsg = "涓嬫枡璁惧锛堣剰妗讹級鐢宠鍌ㄤ綅浠诲姟"; - } - break; + taskNo = new Common().GetMaxNo("TN");//浠诲姟鍙� + //浠诲姟淇℃伅 + var logTaskEntry = new LogTask + { + TaskNo = taskNo, + Sender = "WMS", + Receiver = "RCS", + //IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 + SendDate = DateTime.Now, //鍙戦�佹椂闂� + //BackDate = DateTime.Now, //杩斿洖鏃堕棿 + StartLocat = deviceLocatInfo.LocatNo,//璧峰浣嶇疆 + EndLocat = loction.LocatNo,//鐩爣浣嶇疆 + PalletNo = palletInfo.PalletNo,//妗跺彿 + IsSend = 1,//鏄惁鍙啀娆′笅鍙� + IsCancel = 1,//鏄惁鍙彇娑� + IsFinish = 1,//鏄惁鍙畬鎴� + Type = "0",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 + OrderType = "3",//鍗曟嵁绫诲瀷 0 鍏ュ簱 1 鍑哄簱 3 绉诲簱 + Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 + NoticeDetailNo = int.Parse(noticeno), + Msg = taskMsg, //鍏抽敭淇℃伅 + LotNo = palletInfo.LotNo//鎵规鍙� + }; + var task = new TaskDetial + { + Taskno = taskNo,//浠诲姟鍙� + Startport = model.Location,//deviceLocatInfo.LocatNo,//璧峰浣嶇疆 + Endport = loction.LocatNo,//鐩爣浣嶇疆 + Pallno = palletInfo.PalletNo, + Crtype = "0",//鍏ュ簱 + WareHouseNo = houseNo + }; + string agvMsg = string.Empty; + //缁欎笅杞︿笅鍙戜换鍔� + logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂� + var agvResult = CreateTaskForAgv(task, url, out agvMsg); + if (agvResult)//鎴愬姛 + { + //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� + logTaskEntry.IsSuccess = 1; + logTaskEntry.IsSend = 0; + //logTaskEntry.IsCancel = 0; + logTaskEntry.BackDate = DateTime.Now; + logTaskEntry.Status = "1";//姝e湪鎵ц + Db.Insertable(logTaskEntry).ExecuteCommand(); + + deviceLocatInfo.Status = "3";//鍑哄簱涓� + Db.Updateable(deviceLocatInfo).ExecuteCommand(); + + loction.Status = "2";//鍏ュ簱涓� + Db.Updateable(loction).ExecuteCommand(); + } + else//澶辫触 + { + logTaskEntry.IsSuccess = 0; + logTaskEntry.Information = agvMsg; + Db.Insertable(logTaskEntry).ExecuteCommand(); + } + //鎻愪氦浜嬪姟 + Db.CommitTran(); } - - taskNo = new Common().GetMaxNo("TN");//浠诲姟鍙� - //浠诲姟淇℃伅 - var logTaskEntry = new LogTask + catch (Exception ex) { - TaskNo = taskNo, - Sender = "WMS", - Receiver = "RCS", - //IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 - SendDate = DateTime.Now, //鍙戦�佹椂闂� - //BackDate = DateTime.Now, //杩斿洖鏃堕棿 - StartLocat = deviceLocatInfo.LocatNo,//璧峰浣嶇疆 - EndLocat = loction.LocatNo,//鐩爣浣嶇疆 - PalletNo = palletInfo.PalletNo,//妗跺彿 - IsSend = 1,//鏄惁鍙啀娆′笅鍙� - IsCancel = 1,//鏄惁鍙彇娑� - IsFinish = 1,//鏄惁鍙畬鎴� - Type = "0",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 - OrderType = "3",//鍗曟嵁绫诲瀷 0 鍏ュ簱 1 鍑哄簱 3 绉诲簱 - Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 - NoticeDetailNo = int.Parse(noticeno), - Msg = taskMsg, //鍏抽敭淇℃伅 - LotNo = palletInfo.LotNo//鎵规鍙� - }; - var task = new TaskDetial - { - Taskno = taskNo,//浠诲姟鍙� - Startport = model.Location,//deviceLocatInfo.LocatNo,//璧峰浣嶇疆 - Endport = loction.LocatNo,//鐩爣浣嶇疆 - Pallno = palletInfo.PalletNo, - Crtype = "0",//鍏ュ簱 - WareHouseNo = houseNo - }; - string agvMsg = string.Empty; - //缁欎笅杞︿笅鍙戜换鍔� - logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂� - var agvResult = CreateTaskForAgv(task, url, out agvMsg); - if (agvResult)//鎴愬姛 - { - //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� - logTaskEntry.IsSuccess = 1; - logTaskEntry.IsSend = 0; - //logTaskEntry.IsCancel = 0; - logTaskEntry.BackDate = DateTime.Now; - logTaskEntry.Status = "1";//姝e湪鎵ц - Db.Insertable(logTaskEntry).ExecuteCommand(); - - deviceLocatInfo.Status = "3";//鍑哄簱涓� - Db.Updateable(deviceLocatInfo).ExecuteCommand(); - - loction.Status = "2";//鍏ュ簱涓� - Db.Updateable(loction).ExecuteCommand(); + //鍥炴粴浜嬪姟 + Db.RollbackTran(); + throw new Exception(ex.Message); } - else//澶辫触 - { - logTaskEntry.IsSuccess = 0; - logTaskEntry.Information = agvMsg; - Db.Insertable(logTaskEntry).ExecuteCommand(); - } - //鎻愪氦浜嬪姟 - Db.CommitTran(); - } - catch (Exception ex) - { - //鍥炴粴浜嬪姟 - Db.RollbackTran(); - throw new Exception(ex.Message); } } /// <summary> -- Gitblit v1.8.0