From 6cd2a2d6991f13ac11796abd11d61c098cdd3ce1 Mon Sep 17 00:00:00 2001 From: wxw <Administrator@DESKTOP-5BIMHQ3> Date: 星期六, 28 十二月 2024 08:32:39 +0800 Subject: [PATCH] 修改问题 --- Wms/WMS.BLL/BllTransServer/RcsServer.cs | 840 +++++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 529 insertions(+), 311 deletions(-) diff --git a/Wms/WMS.BLL/BllTransServer/RcsServer.cs b/Wms/WMS.BLL/BllTransServer/RcsServer.cs index 270b6ef..d6f6333 100644 --- a/Wms/WMS.BLL/BllTransServer/RcsServer.cs +++ b/Wms/WMS.BLL/BllTransServer/RcsServer.cs @@ -42,216 +42,264 @@ string taskMsg = ""; if (string.IsNullOrEmpty(model.Location)) { - throw new Exception("璁惧鎵�鍦ㄤ綅缃笉鍙负绌�"); + throw new Exception("璁惧缂栫爜涓嶅彲涓虹┖"); } - //鍙《璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙鐩爣鍌ㄤ綅锛� - var endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == model.Location); - if (endLoction == null) + //閫氳繃璁惧鍙锋煡鎵惧埌鎵�灞炶澶囷紙鍖哄煙锛� + var deviceInfo = Db.Queryable<SysStorageArea>().First(w => w.IsDel == "0" && w.DeviceCode.Contains(model.Location)); + if (deviceInfo == null) { - throw new Exception("璁惧鍌ㄤ綅淇℃伅涓嶅瓨鍦�"); + throw new Exception("璁惧淇℃伅涓嶅瓨鍦�"); } - var houseNo = endLoction.WareHouseNo;//鍙《浣嶇疆锛屽悗缁牴鎹綅缃叧鑱旀垨瀹氫箟锛屾潵鍒ゆ柇鍙《浣嶇疆鎵�灞炶溅闂� + var houseNo = deviceInfo.WareHouseNo;//鍙《璁惧鎵�灞炶溅闂寸紪鍙� + + //鍙《璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙鐩爣鍌ㄤ綅锛� + var endLoction = new SysStorageLocat(); + var urlMes = "";//鍥炰紶MES鐨勬帴鍙e湴鍧� var noticeNo = "0";//鍑哄叆搴撳崟鎹槑缁咺D - var stockDetail = Db.Queryable<DataStockDetail>().Where(w => w.Status == "0");//鎵�鏈夊緟鍒嗛厤鐨勬《 + + //鎵�鏈夊緟鍒嗛厤鐨勬《 + var stockDetail = Db.Queryable<DataStockDetail>().Where(w => w.Status == "0"); + //鍒嗛厤妗朵俊鎭� + var pallet = new DataStockDetail(); //寮�濮嬩簨鍔� Db.BeginTran(); - DataStockDetail pallet = new DataStockDetail(); + switch (model.Type) { - case "0"://鍙噣妗� - //鏌ユ壘鍒拌杞﹂棿鍑�妗跺尯 - 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 (pallet == null) + case "0"://鎺ユ枡璁惧鍙噣妗� { - throw new Exception("鏆傛棤鍑�妗跺彲鍒嗛厤"); + //鍙《鐩爣鍌ㄤ綅鍦板潃淇℃伅 + 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(); + //鏌ユ壘鍑�妗� + pallet = stockDetail.Where(w => w.WareHouseNo == houseNo && w.PalletStatus == "0" && w.Status == "0" + && areaNoList.Contains(w.AreaNo)).OrderByDescending(o => o.CreateTime).First(); + if (pallet == null) + { + throw new Exception("鏆傛棤鍑�妗跺彲鍒嗛厤"); + } + 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)).OrderByDescending(o => o.CompleteTime).First(); + if (pallet == null) + { + throw new Exception("鏆傛棤娣锋枡妗跺彲鍒嗛厤"); + } + pallet.Status = "2";//鍒嗛厤鐘舵�� 0:寰呭垎閰嶏紝1锛氶儴鍒嗗垎閰� 锛� 2:宸插垎閰� + //鏇存柊妗跺簱瀛樻槑缁� + Db.Updateable(pallet).ExecuteCommand(); + + taskMsg = "璁惧鍙枡妗舵贩鏂欎换鍔�"; + } + 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(); + + //鏌ユ壘鍒拌杞﹂棿鍗婃垚鍝佸尯 + 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(); + if (pallet == null) + { + 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 = stockDetail.Where(w => w.WareHouseNo == houseNo && w.PalletStatus == "3" && w.Status == "0" + && areaNoList4.Contains(w.AreaNo)).OrderByDescending(o => o.CompleteTime).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("TK");//浠诲姟鍙� + 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, //鍏抽敭淇℃伅 + }; + //缁勭粐涓嬪彂灏忚溅浠诲姟淇℃伅 + 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); + 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; + Db.Insertable(logTaskEntry2).ExecuteCommand(); + + } + //鎻愪氦浜嬪姟 + Db.CommitTran(); + return; + } } - pallet.Status = "2";//鍒嗛厤鐘舵�� 0:寰呭垎閰嶏紝1锛氶儴鍒嗗垎閰� 锛� 2:宸插垎閰� - //鏇存柊妗跺簱瀛樻槑缁� - Db.Updateable(pallet).ExecuteCommand(); - - taskMsg = "璁惧鍙噣妗朵换鍔�"; - break; - case "1"://鍙枡妗讹紙娣锋枡锛� - //鍒ゆ柇鏄惁鏈夋壒娆″彿 - 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)).OrderByDescending(o => o.CompleteTime).First(); - if (pallet == null) - { - throw new Exception("鏆傛棤娣锋枡妗跺彲鍒嗛厤"); - } - pallet.Status = "2";//鍒嗛厤鐘舵�� 0:寰呭垎閰嶏紝1锛氶儴鍒嗗垎閰� 锛� 2:宸插垎閰� - //鏇存柊妗跺簱瀛樻槑缁� - Db.Updateable(pallet).ExecuteCommand(); - - taskMsg = "璁惧鍙枡妗舵贩鏂欎换鍔�"; - break; - case "2"://鍙枡妗讹紙涓嬫枡锛� - //鍒ゆ柇鏄惁鏈夋壒娆″彿 - 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)).OrderByDescending(o => o.CompleteTime).First(); - if (pallet == null) - { - throw new Exception("鏆傛棤涓嬫枡妗跺彲鍒嗛厤"); - } - pallet.Status = "2";//鍒嗛厤鐘舵�� 0:寰呭垎閰嶏紝1锛氶儴鍒嗗垎閰� 锛� 2:宸插垎閰� - //鏇存柊妗跺簱瀛樻槑缁� - Db.Updateable(pallet).ExecuteCommand(); - - taskMsg = "璁惧鍙枡妗朵笅鏂欎换鍔�"; - break; - case "3"://鍙剰妗� - //鏌ユ壘鍒拌杞﹂棿鑴忔《鍖� - 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(); - if (palletList.Count <= 0) - { - throw new Exception("鏆傛棤鑴忔《鍙垎閰�"); - } - //閬嶅巻搴撳瓨鑴忔《锛岃繑鍥濵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("TK");//浠诲姟鍙� - var logTaskEntry2 = new LogTask - { - TaskNo = taskNo, - Sender = "WMS", - Receiver = "RCS", - //IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 - SendDate = DateTime.Now, //鍙戦�佹椂闂� - //BackDate = DateTime.Now, //杩斿洖鏃堕棿 - StartLocat = item.LocatNo,//璧峰浣嶇疆 - EndLocat = model.Location,//鐩爣浣嶇疆 - 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, //鍏抽敭淇℃伅 - }; - //缁勭粐涓嬪彂灏忚溅浠诲姟淇℃伅 - var task2 = new TaskDetial - { - Taskno = taskNo,//浠诲姟鍙� - Startport = item.LocatNo, - Endport = model.Location, - Pallno = item.PalletNo, - Crtype = "1",//鍙《 - }; - //缁欎笅杞︿笅鍙戜换鍔� - logTaskEntry2.SendDate = DateTime.Now;//鍙戦�佹椂闂� - var agvResult2 = CreateTaskForAgv(task2, url); - 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; - Db.Insertable(logTaskEntry2).ExecuteCommand(); - - } - //鎻愪氦浜嬪姟 - Db.CommitTran(); - return; - } - - taskMsg = "璁惧鍙剰妗朵换鍔�"; break; default: throw new Exception("浠诲姟绫诲瀷鏃犳晥"); @@ -274,7 +322,7 @@ SendDate = DateTime.Now, //鍙戦�佹椂闂� //BackDate = DateTime.Now, //杩斿洖鏃堕棿 StartLocat = pallet.LocatNo,//璧峰浣嶇疆 - EndLocat = model.Location,//鐩爣浣嶇疆 + EndLocat = endLoction.LocatNo,//鐩爣浣嶇疆 PalletNo = pallet.PalletNo,//鎵樼洏鐮� IsSend = 1,//鏄惁鍙啀娆′笅鍙� IsCancel = 1,//鏄惁鍙彇娑� @@ -289,11 +337,12 @@ //缁勭粐涓嬪彂灏忚溅浠诲姟淇℃伅 var task = new TaskDetial { - Taskno= taskNo,//浠诲姟鍙� + Taskno = taskNo,//浠诲姟鍙� Startport = pallet.LocatNo,//璧峰浣嶇疆 - Endport = model.Location,//鐩爣浣嶇疆 + Endport = model.Location,//endLoction.LocatNo,//鐩爣浣嶇疆 Pallno = pallet.PalletNo,//妗跺彿 Crtype = "1",//鍙《 + WareHouseNo = houseNo//杞﹂棿缂栫爜 }; //缁欎笅杞︿笅鍙戜换鍔� logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂� @@ -343,107 +392,202 @@ try { string taskMsg = ""; - //鏌ユ壘璇ユ《鏈夋病鏈夋鍦ㄦ墽琛岀殑浠诲姟 - var tasking = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.Status == "1" && w.PalletNo == model.PalletNo); - if (tasking != null) + + //閫氳繃璁惧鍙锋煡鎵惧埌鎵�灞炶澶囷紙鍖哄煙锛� + var deviceInfo = Db.Queryable<SysStorageArea>().First(w => w.IsDel == "0" && w.DeviceCode.Contains(model.Location)); + if (deviceInfo == null) { - throw new Exception($"璇ユ《鏈夋鍦ㄦ墽琛岀殑浠诲姟锛孭alletNo:{model.PalletNo}"); + throw new Exception("璁惧淇℃伅涓嶅瓨鍦�"); } + //鐢宠鍌ㄤ綅璁惧鎵�鍦ㄨ溅闂寸紪鍙� + var houseNo = deviceInfo.WareHouseNo; //璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙璧峰鍌ㄤ綅锛� - var deviceLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == model.Location); - if (deviceLocatInfo == null) - { - throw new Exception($"鏈煡璇㈠埌璇ヨ澶囨墍鍦ㄥ偍浣嶄俊鎭紝Location:{model.Location}"); - } - var houseNo = deviceLocatInfo.WareHouseNo;//鐢宠鍌ㄤ綅璁惧鎵�鍦ㄨ溅闂寸紪鍙� - 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"://娓呮礂璁惧鐢宠鍌ㄤ綅锛堝噣妗剁敵璇峰偍浣嶏級 - //鏌ユ壘鍒拌杞﹂棿鍑�妗跺尯 - 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(); - loction = storageLocat.Where(w => w.WareHouseNo == houseNo && areaNoList.Contains(w.AreaNo)).OrderByDescending(o => o.CreateTime).First(); - 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 = "娓呮礂璁惧锛堝噣妗讹級鐢宠鍌ㄤ綅浠诲姟"; + //璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙璧峰鍌ㄤ綅锛� + 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("璇ヨ溅闂村噣妗跺尯鏆傛棤绌轰綑鍌ㄤ綅"); + } + + taskMsg = "娓呮礂璁惧锛堝噣妗讹級鐢宠鍌ㄤ綅浠诲姟"; + } break; case "0"://鎺ユ枡璁惧鐢宠鍌ㄤ綅锛堥娣锋枡妗剁敵璇峰偍浣嶏級 - //鍒ゆ柇鏄惁鏈夋壒娆″彿 - 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(); - loction = storageLocat.Where(w => w.WareHouseNo == houseNo && areaNoList2.Contains(w.AreaNo)).OrderByDescending(o => o.CreateTime).First(); - if (loction == 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); + 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(); - taskMsg = "鎺ユ枡璁惧锛堥娣锋枡妗讹級鐢宠鍌ㄤ綅浠诲姟"; + //鏌ユ壘璇ユ《鏈夋病鏈夋鍦ㄦ墽琛岀殑浠诲姟 + 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 = "鎺ユ枡璁惧锛堥娣锋枡妗讹級鐢宠鍌ㄤ綅浠诲姟"; + } break; case "1"://娣锋枡璁惧鐢宠鍌ㄤ綅锛堝崐鎴愬搧妗剁敵璇峰偍浣嶏級 - //鍒ゆ柇鏄惁鏈夋壒娆″彿 - 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(); + //璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙璧峰鍌ㄤ綅锛� + 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}"); + } - //鏌ユ壘鍒拌杞﹂棿鍗婃垚鍝佸尯 - 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(); - loction = storageLocat.Where(w => w.WareHouseNo == houseNo && areaNoList3.Contains(w.AreaNo)).OrderByDescending(o => o.CreateTime).First(); - if (loction == null) - { - throw new Exception("璇ヨ溅闂村崐鎴愬搧鍖烘殏鏃犵┖浣欏偍浣�"); - } + //鍒ゆ柇鏄惁鏈夋壒娆″彿 + 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(); - taskMsg = "鎺ユ枡璁惧锛堟贩鏂欐《锛夌敵璇峰偍浣嶄换鍔�"; + //鏌ユ壘鍒拌杞﹂棿鍗婃垚鍝佸尯 + loction = GetLocatModel(houseNo, "2"); + if (loction == null) + { + throw new Exception("璇ヨ溅闂村崐鎴愬搧鍖烘殏鏃犵┖浣欏偍浣�"); + } + + taskMsg = "鎺ユ枡璁惧锛堟贩鏂欐《锛夌敵璇峰偍浣嶄换鍔�"; + } break; case "2"://涓嬫枡璁惧鐢宠鍌ㄤ綅锛堣剰妗剁敵璇峰偍浣嶏級 - //鏌ユ壘鍒拌杞﹂棿鑴忔《鍖� - 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(); - loction = storageLocat.Where(w => w.WareHouseNo == houseNo && areaNoList4.Contains(w.AreaNo)).OrderByDescending(o => o.CreateTime).First(); - 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}"); + } + 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 = "涓嬫枡璁惧锛堣剰妗讹級鐢宠鍌ㄤ綅浠诲姟"; + taskMsg = "涓嬫枡璁惧锛堣剰妗讹級鐢宠鍌ㄤ綅浠诲姟"; + } break; } @@ -457,9 +601,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,//鏄惁鍙畬鎴� @@ -472,10 +616,11 @@ 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 }; //缁欎笅杞︿笅鍙戜换鍔� logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂� @@ -508,6 +653,33 @@ { //鍥炴粴浜嬪姟 Db.RollbackTran(); + throw new Exception(ex.Message); + } + } + /// <summary> + /// 鑾峰彇绌哄偍浣� + /// </summary> + /// <param name="houseNo">杞﹂棿缂栧彿</param> + /// <param name="Type">绫诲埆 0:鍑�妗跺尯 1:棰勬贩鍖� 2:鍗婃垚鍝佸尯 3:鑴忔《鍖�</param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + private SysStorageLocat GetLocatModel(string houseNo,string type) + { + try + { + //閫氳繃绫诲埆鏌ユ壘杞﹂棿鍖哄煙 + List<string> areaNoList = Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Type == type && w.WareHouseNo == houseNo).Select(s => s.AreaNo).ToList(); + //鏌ユ壘鍌ㄤ綅 + 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("璇ヨ溅闂村噣妗跺尯鏆傛棤绌轰綑鍌ㄤ綅"); + } + return loctionModel; + } + catch (Exception ex) + { throw new Exception(ex.Message); } } @@ -687,7 +859,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"; @@ -717,28 +890,59 @@ //鍏ュ簱浠诲姟锛屽鐞嗗叆搴撳崟 if (taskInfo.Type == "0" && taskInfo.NoticeDetailNo != 0) { - var notice = Db.Queryable<BllArrivalNotice>().First(w => w.IsDel == "0" && w.Status == "1"); - if (notice != null) - { - notice.Status = "2";//鎵ц瀹屾垚 - notice.UpdateTime = DateTime.Now; - notice.CompleteTime = DateTime.Now; - //淇敼鍏ュ簱鍗曠姸鎬� - Db.Updateable(notice).ExecuteCommand(); + //鍏ュ簱鍗曟槑缁� + var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(w => w.IsDel == "0" && w.Id == taskInfo.NoticeDetailNo); + if (noticeDetail != null) + { + noticeDetail.CompleteQty += 1;//瀹屾垚鏁伴噺 + + if (noticeDetail.CompleteQty >= noticeDetail.Qty) + { + noticeDetail.CompleteTime = DateTime.Now;//瀹屾垚鏃堕棿 + + //鍏ュ簱鍗� + var notice = Db.Queryable<BllArrivalNotice>().First(w => w.IsDel == "0" && w.ASNNo == noticeDetail.ASNNo); + + var noticeDetailList = Db.Queryable<BllArrivalNoticeDetail>().Where(w => w.IsDel == "0" && w.CompleteQty < w.Qty && w.Id != noticeDetail.Id).ToList(); + if (noticeDetailList.Count <= 0) + { + notice.Status = "2";//鎵ц瀹屾垚 + notice.UpdateTime = DateTime.Now; + notice.CompleteTime = DateTime.Now; + //淇敼鍏ュ簱鍗曠姸鎬� + Db.Updateable(notice).ExecuteCommand(); + } + } + //淇敼鍏ュ簱鍗曟槑缁� + Db.Updateable(noticeDetail).ExecuteCommand(); } } //鍑哄簱浠诲姟锛屽鐞嗗嚭搴撳崟 if (taskInfo.Type == "1" && taskInfo.NoticeDetailNo != 0)//鍏ュ簱 { - var notice = Db.Queryable<BllExportNotice>().First(w => w.IsDel == "0" && w.Status == "3"); - if (notice != null) + var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(w => w.IsDel == "0" && w.Id==taskInfo.NoticeDetailNo); + if (noticeDetail != null) { - notice.Status = "4";//鎵ц瀹屾垚 - notice.UpdateTime = DateTime.Now; - notice.CompleteTime = DateTime.Now; - //淇敼鍏ュ簱鍗曠姸鎬� - Db.Updateable(notice).ExecuteCommand(); + noticeDetail.CompleteQty += 1;//瀹屾垚鏁伴噺 + + if (noticeDetail.CompleteQty >= noticeDetail.Qty) + { + var notice = Db.Queryable<BllExportNotice>().First(w => w.IsDel == "0" && w.SONo == noticeDetail.SONo); + + var noticeDetailList = Db.Queryable<BllExportNoticeDetail>().Where(w => w.IsDel == "0" && w.CompleteQty < w.Qty && w.Id != noticeDetail.Id).ToList(); + if (noticeDetailList.Count <= 0) + { + notice.Status = "4";//鎵ц瀹屾垚 + notice.UpdateTime = DateTime.Now; + notice.CompleteTime = DateTime.Now; + //淇敼鍏ュ簱鍗曠姸鎬� + Db.Updateable(notice).ExecuteCommand(); + } + } + //淇敼鍏ュ簱鍗曟槑缁� + Db.Updateable(noticeDetail).ExecuteCommand(); } + } #region 鍘绘帀MES @@ -943,8 +1147,6 @@ bool result = false; #region 鍛煎彨灏忚溅浠g爜 - List<AgvSchedulingTask> agvTaskList = new List<AgvSchedulingTask>(); - List<PositionCodePath> pahtList = new List<PositionCodePath>(); //璧峰浣嶇疆 PositionCodePath path1 = new PositionCodePath(); @@ -953,7 +1155,11 @@ { path1.type = "05"; } - else//鐢宠鍌ㄤ綅锛堟《鍏ュ簱锛� + else if (taskDetial.Crtype == "0")//鐢宠鍌ㄤ綅锛堟《鍏ュ簱锛� + { + path1.type = "00"; + } + else//鍚岃溅闂村钩灞傛惉杩� { path1.type = "05"; } @@ -964,9 +1170,13 @@ path2.positionCode = taskDetial.Endport; if (taskDetial.Crtype == "1")//鍙《锛堟《鍑哄簱锛� { + path2.type = "00"; + } + else if (taskDetial.Crtype == "1")//鐢宠鍌ㄤ綅锛堟《鍏ュ簱锛� + { path2.type = "05"; } - else//鐢宠鍌ㄤ綅锛堟《鍏ュ簱锛� + else //鍚岃溅闂村钩灞傛惉杩� { path2.type = "05"; } @@ -976,29 +1186,37 @@ AgvSchedulingTask agvTask = new AgvSchedulingTask(); agvTask.reqCode = taskDetial.Taskno;//璇锋眰缂栧彿 agvTask.taskCode = taskDetial.Taskno;//浠诲姟鍙� - agvTask.ctnrCode = taskDetial.Pallno;//妗跺彿 - agvTask.ctnrTyp = "1"; + agvTask.ctnrCode = taskDetial.Pallno;//妗跺彿 agvTask.reqTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");//璇锋眰鏃堕棿 agvTask.wbCode = ""; agvTask.positionCodePath = pahtList;//灏忚溅璺緞 agvTask.podCode = ""; agvTask.userCallCode = "";//taskDetial.Endport;//鐩爣浣嶇疆 + //鍒ゆ柇瀹瑰櫒绫诲瀷 + if (taskDetial.WareHouseNo == "M04")//鍠峰共杞﹂棿 + { + agvTask.ctnrTyp = "2";// 1锛氭《 2锛氭《锛堝皬锛� 3锛氭墭鐩� + } + else + { + agvTask.ctnrTyp = "1";// 1锛氭《 2锛氭《锛堝皬锛� 3锛氭墭鐩� + } + //鍒ゆ柇浠诲姟绫诲瀷 if (taskDetial.Crtype == "1")//鍙《锛堟《鍑哄簱锛� { agvTask.taskTyp = "Z3";//浠诲姟绫诲瀷 绾胯竟鍒版墭鐩樻敹闆嗗櫒 Z1锛� 鎵樼洏鍨涚敵璇峰叆搴� Z2 } - else//鐢宠鍌ㄤ綅锛堟《鍏ュ簱锛� + else if (taskDetial.Crtype == "0")//鐢宠鍌ㄤ綅锛堟《鍏ュ簱锛� { agvTask.taskTyp = "Z4";//浠诲姟绫诲瀷 绾胯竟鍒版墭鐩樻敹闆嗗櫒 Z1锛� 鎵樼洏鍨涚敵璇峰叆搴� Z2 } - agvTaskList.Add(agvTask); + else//鍚岃溅闂村钩灞傛惉杩� + { + agvTask.taskTyp = "Z5"; + } // 姝e紡杩愯绋嬪簭鏀惧紑 - var list2 = agvTaskList.Select(m => m.reqCode).ToList(); - var jsonData = JsonConvert.SerializeObject(agvTaskList); - jsonData = jsonData.Substring(1); - jsonData = jsonData.Substring(0, jsonData.Length - 1); - + var jsonData = JsonConvert.SerializeObject(agvTask); string response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV"); //瑙f瀽杩斿洖鏁版嵁 var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response); -- Gitblit v1.8.0