From 78279bd340545f8c07d1ff08764bd859ba404c83 Mon Sep 17 00:00:00 2001 From: wxw <Administrator@DESKTOP-5BIMHQ3> Date: 星期四, 19 十二月 2024 10:42:23 +0800 Subject: [PATCH] 修改问题 --- Wms/WMS.BLL/BllTransServer/RcsServer.cs | 477 ++++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 343 insertions(+), 134 deletions(-) diff --git a/Wms/WMS.BLL/BllTransServer/RcsServer.cs b/Wms/WMS.BLL/BllTransServer/RcsServer.cs index 9c651a2..afa76e9 100644 --- a/Wms/WMS.BLL/BllTransServer/RcsServer.cs +++ b/Wms/WMS.BLL/BllTransServer/RcsServer.cs @@ -1,5 +1,7 @@ 锘縰sing Model.InterFaceModel; using Model.ModelDto; +using Model.ModelDto.DataDto; +using Model.ModelDto.LogDto; using Newtonsoft.Json; using SqlSugar; using System; @@ -7,7 +9,9 @@ using System.Linq; using System.Security.Policy; using System.Text; +using System.Threading.Tasks; using Utility.Tools; +using WMS.BLL.LogServer; using WMS.DAL; using WMS.Entity.BllAsnEntity; using WMS.Entity.BllSoEntity; @@ -17,6 +21,7 @@ using WMS.Entity.SysEntity; using WMS.IBLL.IBllTransServer; using static Model.InterFaceModel.RCSModel; +using static System.Collections.Specialized.BitVector32; namespace WMS.BLL.BllTransServer { @@ -87,7 +92,6 @@ throw new Exception("鏆傛棤娣锋枡妗跺彲鍒嗛厤"); } pallet.Status = "2";//鍒嗛厤鐘舵�� 0:寰呭垎閰嶏紝1锛氶儴鍒嗗垎閰� 锛� 2:宸插垎閰� - pallet.LotNo = model.LotNo;//鎵规鍙� //鏇存柊妗跺簱瀛樻槑缁� Db.Updateable(pallet).ExecuteCommand(); @@ -203,7 +207,7 @@ IsCancel = 1,//鏄惁鍙彇娑� IsFinish = 1,//鏄惁鍙畬鎴� Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 - OrderType = "3",//鍗曟嵁绫诲瀷 0 鍏ュ簱 1 鍑哄簱 3鍏朵粬 + OrderType = "3",//鍗曟嵁绫诲瀷 0 鍏ュ簱 1 鍑哄簱 3 绉诲簱 Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 NoticeDetailNo = int.Parse(noticeNo), Msg = taskMsg, //鍏抽敭淇℃伅 @@ -215,18 +219,17 @@ Startport = item.LocatNo, Endport = model.Location, Pallno = item.PalletNo, - Type = model.Type, - Crtype = "1", - Noticedetailno = int.Parse(noticeNo), + Crtype = "1",//鍙《 }; - CreateLotTask(task2, url); //缁欎笅杞︿笅鍙戜换鍔� logTaskEntry2.SendDate = DateTime.Now;//鍙戦�佹椂闂� - var agvResult2 = CreateLotTask(task2, url); + 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(); @@ -277,7 +280,7 @@ IsCancel = 1,//鏄惁鍙彇娑� IsFinish = 1,//鏄惁鍙畬鎴� Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 - OrderType = "3",//鍗曟嵁绫诲瀷 0 鍏ュ簱 1 鍑哄簱 3鍏朵粬 + OrderType = "3",//鍗曟嵁绫诲瀷 0 鍏ュ簱 1 鍑哄簱 3绉诲簱 Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 NoticeDetailNo = int.Parse(noticeNo), Msg = taskMsg, //鍏抽敭淇℃伅 @@ -291,18 +294,18 @@ Endport = model.Location,//鐩爣浣嶇疆 Pallno = pallet.PalletNo,//妗跺彿 Crtype = "1",//鍙《 - Noticedetailno = int.Parse(noticeNo), - LotNo = model.LotNo, }; //缁欎笅杞︿笅鍙戜换鍔� logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂� - var agvResult = CreateLotTask(task, url); + var agvResult = CreateTaskForAgv(task, url); if (agvResult)//鎴愬姛 { //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� logTaskEntry.IsSuccess = 1; + logTaskEntry.IsSend = 0; + //logTaskEntry.IsCancel = 0; logTaskEntry.BackDate = DateTime.Now; - logTaskEntry.Status = "1"; + logTaskEntry.Status = "1";//姝e湪鎵ц Db.Insertable(logTaskEntry).ExecuteCommand(); startLoction.Status = "3";//鍑哄簱涓� @@ -340,6 +343,12 @@ 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 deviceLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == model.Location); if (deviceLocatInfo == null) @@ -348,6 +357,12 @@ } var houseNo = deviceLocatInfo.WareHouseNo;//鐢宠鍌ㄤ綅璁惧鎵�鍦ㄨ溅闂寸紪鍙� var noticeno = "0";//鍑哄叆搴撳崟鎹槑缁咺D + //妗跺簱瀛樹俊鎭� + var palletInfo = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == model.PalletNo); + if (palletInfo == null) + { + throw new Exception($"鏈煡璇㈠埌璇ユ《鐨勫簱瀛樹俊鎭紝PalletNo:{model.PalletNo}"); + } var storageLocat = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0"); //寮�鍚簨鍔� @@ -358,8 +373,9 @@ { 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(); + //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) && w.Status == "0" && w.Flag == "0").OrderByDescending(o => o.CreateTime).First(); + loction = GetLocatModel(houseNo, "0"); if (loction == null) { throw new Exception("璇ヨ溅闂村噣妗跺尯鏆傛棤绌轰綑鍌ㄤ綅"); @@ -374,12 +390,16 @@ 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(); + //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) && w.Status == "0" && w.Flag == "0").OrderByDescending(o => o.CreateTime).First(); + loction = GetLocatModel(houseNo, "1"); if (loction == null) { throw new Exception("璇ヨ溅闂撮娣峰尯鏆傛棤绌轰綑鍌ㄤ綅"); } + palletInfo.LotNo = model.LotNo;//鎵规鍙� + //鏇存柊妗跺簱瀛樹俊鎭� + Db.Updateable(palletInfo).ExecuteCommand(); taskMsg = "鎺ユ枡璁惧锛堥娣锋枡妗讹級鐢宠鍌ㄤ綅浠诲姟"; break; @@ -407,8 +427,9 @@ Db.Updateable(notice).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(); - loction = storageLocat.Where(w => w.WareHouseNo == houseNo && areaNoList3.Contains(w.AreaNo)).OrderByDescending(o => o.CreateTime).First(); + //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) && w.Status == "0" && w.Flag == "0").OrderByDescending(o => o.CreateTime).First(); + loction = GetLocatModel(houseNo, "2"); if (loction == null) { throw new Exception("璇ヨ溅闂村崐鎴愬搧鍖烘殏鏃犵┖浣欏偍浣�"); @@ -418,8 +439,9 @@ 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(); + //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) && w.Status == "0" && w.Flag == "0").OrderByDescending(o => o.CreateTime).First(); + loction = GetLocatModel(houseNo, "3"); if (loction == null) { throw new Exception("璇ヨ溅闂磋剰妗跺尯鏆傛棤绌轰綑鍌ㄤ綅"); @@ -440,36 +462,36 @@ SendDate = DateTime.Now, //鍙戦�佹椂闂� //BackDate = DateTime.Now, //杩斿洖鏃堕棿 StartLocat = model.Location,//璧峰浣嶇疆 - EndLocat = model.Location,//鐩爣浣嶇疆 + EndLocat = loction.LocatNo,//鐩爣浣嶇疆 PalletNo = model.PalletNo,//妗跺彿 IsSend = 1,//鏄惁鍙啀娆′笅鍙� IsCancel = 1,//鏄惁鍙彇娑� IsFinish = 1,//鏄惁鍙畬鎴� Type = "0",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 - OrderType = "3",//鍗曟嵁绫诲瀷 0 鍏ュ簱 1 鍑哄簱 3鍏朵粬 + OrderType = "3",//鍗曟嵁绫诲瀷 0 鍏ュ簱 1 鍑哄簱 3 绉诲簱 Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 NoticeDetailNo = int.Parse(noticeno), Msg = taskMsg, //鍏抽敭淇℃伅 }; var task = new TaskDetial { + Taskno = taskNo,//浠诲姟鍙� Startport = model.Location, Endport = loction.LocatNo, Pallno = model.PalletNo, - Type = model.Type, Crtype = "0",//鍏ュ簱 - Noticedetailno = int.Parse(noticeno), - LotNo = model.LotNo, }; //缁欎笅杞︿笅鍙戜换鍔� logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂� - var agvResult = CreateLotTask(task, url); + var agvResult = CreateTaskForAgv(task, url); if (agvResult)//鎴愬姛 { //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� logTaskEntry.IsSuccess = 1; + logTaskEntry.IsSend = 0; + //logTaskEntry.IsCancel = 0; logTaskEntry.BackDate = DateTime.Now; - logTaskEntry.Status = "1"; + logTaskEntry.Status = "1";//姝e湪鎵ц Db.Insertable(logTaskEntry).ExecuteCommand(); deviceLocatInfo.Status = "3";//鍑哄簱涓� @@ -490,6 +512,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); } } @@ -535,12 +584,10 @@ Startport = detail.LocatNo, Endport = endLocat.LocatNo, Pallno = PalletNo, - Type = "3", Crtype = "2", - Noticedetailno = 0, }; string taskNo = ""; - CreateLotTask(ztask, url); + CreateTaskForAgv(ztask, url); statrtLocat.Status = "3";//鍑哄簱涓� //淇敼璧峰鍌ㄤ綅鐘舵�� @@ -579,13 +626,10 @@ Startport = detail.LocatNo, Endport = pallnetmsg.Location, Pallno = detail.PalletNo, - Type = "3", Crtype = "1", - Noticedetailno = 0, - LotNo = "", }; string taskNo = ""; - CreateLotTask(task,url); + CreateTaskForAgv(task,url); } catch (Exception ex) { @@ -594,128 +638,37 @@ } /// <summary> - /// 鐢熸垚浠诲姟鍗曞埌LogTask - /// </summary> - /// <param name="req"></param> - /// <returns></returns> - public bool CreateLotTask(TaskDetial taskDetial,string url) - { - bool result = false; - - #region 鍛煎彨灏忚溅浠g爜 - List<AgvSchedulingTask> agvTaskList = new List<AgvSchedulingTask>(); - - List<PositionCodePath> pahtList = new List<PositionCodePath>(); - //璧峰浣嶇疆 - PositionCodePath path1 = new PositionCodePath(); - path1.positionCode = taskDetial.Startport; - if (taskDetial.Crtype == "1")//鍙《锛堟《鍑哄簱锛� - { - path1.type = "05"; - } - else//鐢宠鍌ㄤ綅锛堟《鍏ュ簱锛� - { - path1.type = "05"; - } - pahtList.Add(path1); - - //鐩爣浣嶇疆 - PositionCodePath path2 = new PositionCodePath(); - path2.positionCode = taskDetial.Endport; - if (taskDetial.Crtype == "1")//鍙《锛堟《鍑哄簱锛� - { - path2.type = "05"; - } - else//鐢宠鍌ㄤ綅锛堟《鍏ュ簱锛� - { - path2.type = "05"; - } - pahtList.Add(path2); - - //涓嬭溅浠诲姟鍗� - AgvSchedulingTask agvTask = new AgvSchedulingTask(); - agvTask.reqCode = taskDetial.Taskno;//璇锋眰缂栧彿 - agvTask.taskCode= taskDetial.Taskno;//浠诲姟鍙� - agvTask.ctnrCode = taskDetial.Pallno;//妗跺彿 - agvTask.ctnrTyp = "1"; - agvTask.reqTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");//璇锋眰鏃堕棿 - agvTask.wbCode = ""; - agvTask.positionCodePath = pahtList;//灏忚溅璺緞 - agvTask.podCode = ""; - agvTask.userCallCode = "";//taskDetial.Endport;//鐩爣浣嶇疆 - if (taskDetial.Crtype == "1")//鍙《锛堟《鍑哄簱锛� - { - agvTask.taskTyp = "Z3";//浠诲姟绫诲瀷 绾胯竟鍒版墭鐩樻敹闆嗗櫒 Z1锛� 鎵樼洏鍨涚敵璇峰叆搴� Z2 - } - else//鐢宠鍌ㄤ綅锛堟《鍏ュ簱锛� - { - agvTask.taskTyp = "Z4";//浠诲姟绫诲瀷 绾胯竟鍒版墭鐩樻敹闆嗗櫒 Z1锛� 鎵樼洏鍨涚敵璇峰叆搴� Z2 - } - agvTaskList.Add(agvTask); - - // 姝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); - - string response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV"); - //瑙f瀽杩斿洖鏁版嵁 - var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response); - if (agvModel.Code == "0") - { - result = true;//缁欎笅杞︿笅鍙戜换鍔℃垚鍔� - } - else - { - string logMsg = ""; - if (taskDetial.Crtype == "1")//鍙《锛堟《鍑哄簱锛� - { - logMsg = "鐢宠鍙《"; - } - else if(taskDetial.Crtype == "0")//鐢宠鍌ㄤ綅锛堟《鍏ュ簱锛� - { - logMsg = "鐢宠鍌ㄤ綅"; - } - var logStr = $@".\log\AGV\AGV{logMsg}" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; - LogFile.SaveLogToFile($"AGV{logMsg}寮傚父锛�( {agvModel.Message} ),", logStr); - } - return result; - #endregion - } - - /// <summary> /// 浠诲姟瀹屾垚 /// </summary> /// <param name="TaskNo"></param> /// <param name="Status"></param> /// <exception cref="Exception"></exception> - public void RCSFinishTask(string TaskNo, string Status) + public void RCSFinishTask(string taskNo, string status, string comeFrom, int userId = 0) { try { #region 鏉′欢鍒ゆ柇 var resultModel = new ErpModel() { Success = -1, Message = "" }; - if (string.IsNullOrEmpty(TaskNo)) + if (string.IsNullOrEmpty(taskNo)) { throw new Exception("浠诲姟鍙蜂笉鍙负绌�"); } //浠诲姟淇℃伅 - var taskInfo = Db.Queryable<LogTask>().First(w => w.TaskNo == TaskNo); + var taskInfo = Db.Queryable<LogTask>().First(w => w.TaskNo == taskNo); if (taskInfo == null) { - throw new Exception($"浠诲姟鍙蜂负:{TaskNo}鐨勪换鍔′笉瀛樺湪!"); + throw new Exception($"浠诲姟鍙蜂负:{taskNo}鐨勪换鍔′笉瀛樺湪!"); } - if (taskInfo.Status != "1") + if (taskInfo.Status != "1" && comeFrom != "WMS") { - throw new Exception($"浠诲姟鍙蜂负:{TaskNo}鐨勪换鍔$姸鎬佸紓甯�"); + throw new Exception($"浠诲姟鍙蜂负:{taskNo}鐨勪换鍔$姸鎬佸紓甯�"); } #endregion //寮�鍚簨鍔� Db.BeginTran(); var comTime = DateTime.Now; - if (Status == "0") + if (status == "0") { taskInfo.Status = "3";//寮傚父缁撴潫 //淇敼浠诲姟鐘舵�� @@ -766,7 +719,7 @@ stockDetail.RoadwayNo = endLocatInfo.RoadwayNo;//鎵�灞炲贩閬� stockDetail.AreaNo = endLocatInfo.AreaNo;//鎵�灞炲尯鍩� stockDetail.LocatNo = endLocatInfo.LocatNo;//鍌ㄤ綅鍦板潃 - if (endAreaInfo.Type=="0")//娲佸噣鍖� + if (endAreaInfo.Type == "0")//娲佸噣鍖� { stockDetail.PalletStatus = "0"; stockDetail.Status = "0";//寰呭垎閰� @@ -793,7 +746,7 @@ //淇敼搴撳瓨鏄庣粏 Db.Updateable(stockDetail).ExecuteCommand(); //鍏ュ簱浠诲姟锛屽鐞嗗叆搴撳崟 - if (taskInfo.Type == "0" && taskInfo.NoticeDetailNo!=0) + if (taskInfo.Type == "0" && taskInfo.NoticeDetailNo != 0) { var notice = Db.Queryable<BllArrivalNotice>().First(w => w.IsDel == "0" && w.Status == "1"); if (notice != null) @@ -825,9 +778,18 @@ #endregion taskInfo.Status = "2";//鎵ц瀹屾垚 + taskInfo.IsSend = 0; + taskInfo.IsCancel = 0; + taskInfo.IsFinish = 0; + taskInfo.FinishDate = DateTime.Now;//瀹屾垚鏃堕棿 //淇敼浠诲姟鐘舵�� Db.Updateable(taskInfo).ExecuteCommand(); + if (comeFrom == "WMS") + { + //娣诲姞鎿嶄綔鏃ュ織璁板綍 + var k = new OperationCrServer().AddLogOperationCr("搴撳唴浣滀笟", "搴撳唴鏃ュ織", taskInfo.TaskNo, "瀹屾垚", $"鐐瑰嚮瀹屾垚鎸夐挳銆佷换鍔″彿涓猴細{taskInfo.TaskNo}鐨勪换鍔�", userId); + } //鎻愪氦浜嬪姟 Db.CommitTran(); } @@ -838,5 +800,252 @@ throw new Exception(ex.Message); } } + + /// <summary> + /// 鎵嬪姩鍙栨秷浠诲姟 + /// </summary> + /// <param name="taskNo"></param> + /// <param name="userId"></param> + /// <exception cref="Exception"></exception> + public void CancelTask(string taskNo, int userId) + { + try + { + //寮�鍚簨鍔� + Db.BeginTran(); + //浠诲姟淇℃伅 + var task = Db.Queryable<LogTask>().First(m => m.TaskNo == taskNo && m.IsDel == "0"); + if (task == null) + { + throw new Exception("鏈煡璇㈠埌浠诲姟淇℃伅"); + } + //if (task.Status != "0") + //{ + // throw new Exception("鍙湁绛夊緟鎵ц鐨勪换鍔℃墠鍙彇娑�"); + //} + //淇敼浠诲姟 + task.IsSuccess = 0; + task.IsSend = 0; + task.IsCancel = 0; + task.IsFinish = 0; + task.Status = "4";//宸插彇娑� + task.CancelDate = DateTime.Now; + Db.Updateable(task).ExecuteCommand(); + + //淇敼璧峰鍌ㄤ綅淇℃伅 + var locat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.LocatNo == task.StartLocat); + if (locat == null) + { + throw new Exception("鏈煡璇㈠埌璧峰浣嶇疆鍌ㄤ綅淇℃伅锛岃鏍稿疄锛�"); + } + locat.Status = "1"; //鏈夌墿鍝� + Db.Updateable(locat).ExecuteCommand(); + + //淇敼鐩爣鍌ㄤ綅淇℃伅 + var locatEnd = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.LocatNo == task.EndLocat); + if (locatEnd == null) + { + throw new Exception("鏈煡璇㈠埌鐩爣浣嶇疆鍌ㄤ綅淇℃伅锛岃鏍稿疄锛�"); + } + locatEnd.Status = "0"; //绌哄偍浣� + Db.Updateable(locatEnd).ExecuteCommand(); + + if (task.Type == "1")//鍑哄簱浠诲姟 + { + //淇敼搴撳瓨鏄庣粏 + var stockDetail = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == task.PalletNo && w.Status == "2"); + if (stockDetail == null) + { + throw new Exception("鏈煡璇㈠埌璇ユ《搴撳瓨淇℃伅,璇锋鏌�!"); + } + stockDetail.Status = "0";//寰呭垎閰� + Db.Updateable(stockDetail).ExecuteCommand(); + } + //娣诲姞鎿嶄綔鏃ュ織璁板綍 + var k = new OperationCrServer().AddLogOperationCr("搴撳唴浣滀笟", "搴撳唴鏃ュ織", taskNo, "鍙栨秷", $"鐐瑰嚮鍙栨秷鎸夐挳銆佸彇娑堜簡浠诲姟鍙蜂负锛歿taskNo}鐨勪换鍔�", userId); + Db.CommitTran(); + } + catch (Exception e) + { + Db.RollbackTran(); + throw new Exception(e.Message); + } + } + /// <summary> + /// 鎵嬪姩涓嬪彂浠诲姟 + /// </summary> + /// <param name="taskNo"></param> + /// <param name="userId"></param> + /// <exception cref="Exception"></exception> + public void DownTask(string taskNo, int userId,string url) + { + try + { + //寮�鍚簨鍔� + Db.BeginTran(); + //浠诲姟淇℃伅 + var logTaskEntry = Db.Queryable<LogTask>().First(m => m.TaskNo == taskNo && m.IsDel == "0"); + if (logTaskEntry == null) + { + throw new Exception("鏈煡璇㈠埌浠诲姟淇℃伅"); + } + if (logTaskEntry.Status != "0") + { + throw new Exception("鍙湁绛夊緟鎵ц鐨勪换鍔℃墠鍙墜鍔ㄤ笅鍙�"); + } + //鏌ユ壘璇ユ《鏈夋病鏈夋鍦ㄦ墽琛岀殑浠诲姟 + var tasking = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.Status == "1" && w.PalletNo == logTaskEntry.PalletNo); + if (tasking != null) + { + throw new Exception($"璇ユ《鏈夋鍦ㄦ墽琛岀殑浠诲姟"); + } + //璧峰鍌ㄤ綅淇℃伅 + var startLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == logTaskEntry.StartLocat); + if (startLocatInfo == null) + { + throw new Exception($"鏈煡璇㈠埌璧峰鍌ㄤ綅淇℃伅"); + } + if (startLocatInfo.Status != "1") + { + throw new Exception($"璧峰鍌ㄤ綅鐘舵�佸紓甯�"); + } + //鐩爣鍌ㄤ綅淇℃伅 + var endLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == logTaskEntry.EndLocat); + if (endLocatInfo == null) + { + throw new Exception($"鏈煡璇㈠埌鐩爣鍌ㄤ綅淇℃伅"); + } + if (endLocatInfo.Status != "0") + { + throw new Exception($"鐩爣鍌ㄤ綅鐘舵�佸紓甯�"); + } + //缁勭粐缁欏皬杞︿笅鍙戜换鍔′俊鎭� + var task = new TaskDetial + { + Taskno = taskNo,//浠诲姟鍙� + Startport = logTaskEntry.StartLocat, + Endport = logTaskEntry.EndLocat, + Pallno = logTaskEntry.PalletNo, + Crtype = logTaskEntry.Type, + }; + //缁欎笅杞︿笅鍙戜换鍔� + logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂� + var agvResult = CreateTaskForAgv(task, url); + if (agvResult)//鎴愬姛 + { + //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� + logTaskEntry.IsSuccess = 1; + logTaskEntry.IsSend = 0; + logTaskEntry.IsCancel = 0; + logTaskEntry.BackDate = DateTime.Now; + logTaskEntry.Status = "1";//姝e湪鎵ц + Db.Insertable(logTaskEntry).ExecuteCommand(); + + startLocatInfo.Status = "3";//鍑哄簱涓� + Db.Updateable(startLocatInfo).ExecuteCommand(); + + endLocatInfo.Status = "2";//鍏ュ簱涓� + Db.Updateable(endLocatInfo).ExecuteCommand(); + } + else//澶辫触 + { + logTaskEntry.IsSuccess = 0; + Db.Insertable(logTaskEntry).ExecuteCommand(); + } + + //娣诲姞鎿嶄綔鏃ュ織璁板綍 + var k = new OperationCrServer().AddLogOperationCr("搴撳唴浣滀笟", "搴撳唴鏃ュ織", taskNo, "涓嬪彂", $"鐐瑰嚮涓嬪彂鎸夐挳銆佷换鍔″彿涓猴細{taskNo}鐨勪换鍔�", userId); + Db.CommitTran(); + } + catch (Exception e) + { + Db.RollbackTran(); + throw new Exception(e.Message); + } + } + + /// <summary> + /// 鐢熸垚浠诲姟鍗曞埌LogTask + /// </summary> + /// <param name="req"></param> + /// <returns></returns> + public bool CreateTaskForAgv(TaskDetial taskDetial, string url) + { + bool result = false; + + #region 鍛煎彨灏忚溅浠g爜 + List<PositionCodePath> pahtList = new List<PositionCodePath>(); + //璧峰浣嶇疆 + PositionCodePath path1 = new PositionCodePath(); + path1.positionCode = taskDetial.Startport; + if (taskDetial.Crtype == "1")//鍙《锛堟《鍑哄簱锛� + { + path1.type = "05"; + } + else//鐢宠鍌ㄤ綅锛堟《鍏ュ簱锛� + { + path1.type = "05"; + } + pahtList.Add(path1); + + //鐩爣浣嶇疆 + PositionCodePath path2 = new PositionCodePath(); + path2.positionCode = taskDetial.Endport; + if (taskDetial.Crtype == "1")//鍙《锛堟《鍑哄簱锛� + { + path2.type = "05"; + } + else//鐢宠鍌ㄤ綅锛堟《鍏ュ簱锛� + { + path2.type = "05"; + } + pahtList.Add(path2); + + //涓嬭溅浠诲姟鍗� + AgvSchedulingTask agvTask = new AgvSchedulingTask(); + agvTask.reqCode = taskDetial.Taskno;//璇锋眰缂栧彿 + agvTask.taskCode = taskDetial.Taskno;//浠诲姟鍙� + agvTask.ctnrCode = taskDetial.Pallno;//妗跺彿 + agvTask.ctnrTyp = "1";// 1:妗� 3锛氭墭鐩� + agvTask.reqTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");//璇锋眰鏃堕棿 + agvTask.wbCode = ""; + agvTask.positionCodePath = pahtList;//灏忚溅璺緞 + agvTask.podCode = ""; + agvTask.userCallCode = "";//taskDetial.Endport;//鐩爣浣嶇疆 + if (taskDetial.Crtype == "1")//鍙《锛堟《鍑哄簱锛� + { + agvTask.taskTyp = "Z3";//浠诲姟绫诲瀷 绾胯竟鍒版墭鐩樻敹闆嗗櫒 Z1锛� 鎵樼洏鍨涚敵璇峰叆搴� Z2 + } + else//鐢宠鍌ㄤ綅锛堟《鍏ュ簱锛� + { + agvTask.taskTyp = "Z4";//浠诲姟绫诲瀷 绾胯竟鍒版墭鐩樻敹闆嗗櫒 Z1锛� 鎵樼洏鍨涚敵璇峰叆搴� Z2 + } + + // 姝e紡杩愯绋嬪簭鏀惧紑 + var jsonData = JsonConvert.SerializeObject(agvTask); + string response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV"); + //瑙f瀽杩斿洖鏁版嵁 + var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response); + if (agvModel.Code == "0") + { + result = true;//缁欎笅杞︿笅鍙戜换鍔℃垚鍔� + } + else + { + string logMsg = ""; + if (taskDetial.Crtype == "1")//鍙《锛堟《鍑哄簱锛� + { + logMsg = "鐢宠鍙《"; + } + else if (taskDetial.Crtype == "0")//鐢宠鍌ㄤ綅锛堟《鍏ュ簱锛� + { + logMsg = "鐢宠鍌ㄤ綅"; + } + var logStr = $@".\log\AGV\AGV{logMsg}" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; + LogFile.SaveLogToFile($"AGV{logMsg}寮傚父锛�( {agvModel.Message} ),", logStr); + } + return result; + #endregion + } } } -- Gitblit v1.8.0