From bc3d7a828114cb9df154da869ec986cf6733a779 Mon Sep 17 00:00:00 2001 From: pulg <plg@Haninfo> Date: 星期二, 27 五月 2025 17:14:40 +0800 Subject: [PATCH] 1 --- HH.WCS.ZCQTJ/util/LogHelper.cs | 2 HH.WCS.ZCQTJ/Entitys/S_AGV_CONDITIONEntitys.cs | 78 ++++++ HH.WCS.ZCQTJ/util/STAttribute .cs | 21 + HH.WCS.ZCQTJ/wms/WMSModel.cs | 8 HH.WCS.ZCQTJ/Bll/ZCBLL.cs | 105 ++++++-- HH.WCS.ZCQTJ/api/WmsController.cs | 144 +++++++++++ HH.WCS.ZCQTJ/process/TaskProcess.cs | 31 ++ HH.WCS.ZCQTJ/Config/Config.json | 16 + HH.WCS.ZCQTJ/dispatch/WcsTask.cs | 36 +++ HH.WCS.ZCQTJ/Bll/StateTaskBLL.cs | 178 +++++++++----- HH.WCS.ZCQTJ/Entitys/ConfigJsonEntitys.cs | 45 +++ HH.WCS.ZCQTJ/core/TaskCore.cs | 38 ++ HH.WCS.ZCQTJ/wms/LocationHelper.cs | 5 13 files changed, 593 insertions(+), 114 deletions(-) diff --git a/HH.WCS.ZCQTJ/Bll/StateTaskBLL.cs b/HH.WCS.ZCQTJ/Bll/StateTaskBLL.cs index 3693c00..8f77ff0 100644 --- a/HH.WCS.ZCQTJ/Bll/StateTaskBLL.cs +++ b/HH.WCS.ZCQTJ/Bll/StateTaskBLL.cs @@ -1,6 +1,7 @@ 锘縰sing HH.WCS.Hexafluo; using HH.WCS.Hexafluo.device; using HH.WCS.Hexafluo.dispatch; +using HH.WCS.Hexafluo.process; using HH.WCS.Hexafluo.util; using HH.WCS.Hexafluo.wms; using HH.WCS.SJML.Comm; @@ -1209,36 +1210,7 @@ } var chi = new SqlHelper<object>().GetInstance(); var newDb = chi.CopyNew(); - List<string> AreaLo = new List<string>() { "TCXB", "TTXB", "NCXB", "DSXB", "TMXB", "TQXB", "TQJT" }; - WMSTask PritTask = null; - //鏌ヨ鏄惁鏄浉鍏冲簱鍖�- if (executeStatePara.transportTask.S_TYPE == "鍑哄簱" && AreaLo.Contains(executeStatePara.transportTask.S_END_LAREA)) - { - LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟浼樺厛绾�浠诲姟鍙凤細" + executeStatePara.transportTask.S_TASK_NO + " 缁堢偣搴撳尯鏄惁绛変簬DSXB 鏈换鍔�" + executeStatePara.transportTask.S_END_LAREA); - //鏌ヨ閰嶅埗琛�- var transportTask = newDb.Queryable<ConfigJsonEntitys>().Where(e => e.Autoindex == executeStatePara.transportTask.S_END_LAREA + "-閫佹弧鍙栫┖")?.First(); - if (transportTask != null) - { - var ListString = JsonConvert.DeserializeObject<List<ConfigValueList>>(transportTask.TypeJson); - if (ListString != null && ListString.Count > 0) - { - var Strin = ListString.Find(e => e.LocationCode1 == executeStatePara.transportTask.S_END_LOC); - LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟浼樺厛绾�浠诲姟鍙凤細" + executeStatePara.transportTask.S_TASK_NO + "鏄惁鍖归厤鍒颁簡闃熷弸鐨勮揣浣嶄俊鎭� + JsonConvert.SerializeObject(Strin)); - if (Strin != null) - { - //鏌ヨ鏃佽竟鐨勮揣浣嶆槸鍚︽湁宸叉帹閫佷絾鏄病鎵ц鐨勪换鍔�- var SfgLo = newDb.Queryable<WMSTask>().Where(e => e.S_START_LOC == Strin.LocationCode2 && e.S_NOTE.Equals("agv浠诲姟") && (e.S_B_STATE == "宸叉帹閫� || e.S_B_STATE == "鎵ц涓�))?.First(); - LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟浼樺厛绾�浠诲姟鍙凤細" + executeStatePara.transportTask.S_TASK_NO + "鍖归厤鍒扮殑璐т綅 鏄惁瀛樺湪 鏄痑gv浠诲姟 骞朵笖浠诲姟涓婂凡鎺ㄩ�" + JsonConvert.SerializeObject(SfgLo)); - if (SfgLo != null)//鏈夎繖涓换鍔�- { - var Agvstr = NDCHelper.ChangeParamPri(SfgLo.S_TASK_NO, 60); - LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟浼樺厛绾�浠诲姟鍙凤細" + SfgLo.S_TASK_NO + "浼樺厛绾т负锛� + 60 + " 鏄惁鎴愬姛 :" + Agvstr); - PritTask = SfgLo; - } - } - } - } - } + try { LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟鐘舵� 浜嬪姟寮�:" + executeStatePara.transportTask.S_TASK_NO); @@ -1249,12 +1221,7 @@ { throw new Exception("鏇存柊浠诲姟鐘舵�澶辫触"); } - if (PritTask != null) - { - // var ddd = executeStatePara.transportTaskSrc.Select(e => e.S_ID).ToList(); - var ggj = newDb.Updateable<WMSTask>().SetColumns(it => new WMSTask() { N_PRIORITY = 40 }).Where(e => e.S_ID == PritTask.S_ID).ExecuteCommand(); - LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟浼樺厛绾�浠诲姟鍙凤細" + PritTask.S_TASK_NO + "浼樺厛绾т负锛� + 40 + " 鏄惁鎴愬姛 鏀箇ms浠诲姟 褰卞搷琛屾暟:" + ggj); - } + newDb.CommitTran(); LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟鐘舵� 浜嬪姟缁撴潫:" + executeStatePara.transportTask.S_TASK_NO); return OperateResult.Succeed(); @@ -2201,24 +2168,24 @@ var newDb = chi.CopyNew(); Location location2 = null; List<ConfigValueList> ListValues = new List<ConfigValueList>(); - if (executeStatePara.startIsCurrentTask.S_NOTE == "鏅鸿兘绌烘《婊℃墭") - { - //鏌ヨ閰嶇疆琛ㄤ俊鎭�- var transport = newDb.Queryable<ConfigJsonEntitys>().Where(e => e.Autoindex == "鏅鸿兘绌烘《缂撳瓨")?.First(); - if (transport != null) - { - ListValues = JsonConvert.DeserializeObject<List<ConfigValueList>>(transport.TypeJson); - if (ListValues.Count() > 0) - { - //鏌ヨ鍑哄搴旂殑绌烘墭缂撳瓨浣�- var ggf = ListValues.Find(e => e.LocationCode1 == executeStatePara.transportTask.S_START_LOC); - if (ggf != null) - { - location2 = newDb.Queryable<Location>().Where(e => e.S_LOC_CODE == ggf.LocationCode2)?.First(); - } - } - } - } + //if (executeStatePara.startIsCurrentTask.S_NOTE == "鏅鸿兘绌烘《婊℃墭") + //{ + // //鏌ヨ閰嶇疆琛ㄤ俊鎭�+ // var transport = newDb.Queryable<ConfigJsonEntitys>().Where(e => e.Autoindex == "鏅鸿兘绌烘《缂撳瓨")?.First(); + // if (transport != null) + // { + // ListValues = JsonConvert.DeserializeObject<List<ConfigValueList>>(transport.TypeJson); + // if (ListValues.Count() > 0) + // { + // //鏌ヨ鍑哄搴旂殑绌烘墭缂撳瓨浣�+ // var ggf = ListValues.Find(e => e.LocationCode1 == executeStatePara.transportTask.S_START_LOC); + // if (ggf != null) + // { + // location2 = newDb.Queryable<Location>().Where(e => e.S_LOC_CODE == ggf.LocationCode2)?.First(); + // } + // } + // } + //} try { LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟鐘舵� 浜嬪姟寮�:" + executeStatePara.transportTask.S_TASK_NO); @@ -2258,22 +2225,22 @@ //} //LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟缁堢偣璐т綅" + executeStatePara.transportTask.S_START_LOC + "鐨勭姸鎬侀攣涓烘棤锛�); } - if (executeStatePara.transportTask.S_TYPE.Equals("鍏ュ簱") && executeStatePara.startIsCurrentTask.S_NOTE == "鏅鸿兘绌烘《婊℃墭") - { - if (location2 != null && (location2.N_CURRENT_NUM - 1 >= 0)) - { - I = newDb.Updateable<Location>().SetColumns(it => new Location() - { - T_MODIFY = DateTime.Now, - N_CURRENT_NUM = it.N_CURRENT_NUM - 1, - T_EMPTY_TIME = DateTime.Now - }).Where(x => x.S_LOC_CODE == location2.S_LOC_CODE).ExecuteCommand(); - if (I == 0) - { - throw new Exception("鏇存柊缁堢偣褰撳墠瀹归噺-1澶辫触"); - } - } - } + //if (executeStatePara.transportTask.S_TYPE.Equals("鍏ュ簱") && executeStatePara.startIsCurrentTask.S_NOTE == "鏅鸿兘绌烘《婊℃墭") + //{ + // if (location2 != null && (location2.N_CURRENT_NUM - 1 >= 0)) + // { + // I = newDb.Updateable<Location>().SetColumns(it => new Location() + // { + // T_MODIFY = DateTime.Now, + // N_CURRENT_NUM = it.N_CURRENT_NUM - 1, + // T_EMPTY_TIME = DateTime.Now + // }).Where(x => x.S_LOC_CODE == location2.S_LOC_CODE).ExecuteCommand(); + // if (I == 0) + // { + // throw new Exception("鏇存柊缁堢偣褰撳墠瀹归噺-1澶辫触"); + // } + // } + //} if (executeStatePara.transportTask.S_TYPE.Equals("鍑哄簱")) { //鍒犻櫎鎵樼洏浜у搧鍏宠仈 @@ -2337,6 +2304,70 @@ } var chi = new SqlHelper<object>().GetInstance(); var newDb = chi.CopyNew(); + + List<string> AreaLo = new List<string>() { "TCXB", "TTXB", "NCXB", "DSXB", "TMXB", "TQXB", "TQJT" }; + WMSTask PritTask = null; + //鏌ヨ鏄惁鏄浉鍏冲簱鍖�+ if (executeStatePara.transportTask.S_TYPE == "鍑哄簱" && AreaLo.Contains(executeStatePara.transportTask.S_END_LAREA)) + { + LogHelper.TaskDetail(logPara, $"鏇存柊浠诲姟浼樺厛绾�浠诲姟鍙凤細{executeStatePara.transportTask.S_TASK_NO} 缁堢偣搴撳尯鏄惁鍖呭惈{JsonConvert.SerializeObject(AreaLo)} 鏈换鍔�" + executeStatePara.transportTask.S_END_LAREA); + //鏌ヨ閰嶇疆鏂囦欢 + var transportTask = STAttribute.GetValueTwo(executeStatePara.transportTask.S_END_LAREA + "-閫佹弧鍙栫┖"); + if (transportTask != null) + { + var ListString = JsonConvert.DeserializeObject<List<ConfigValueListTwo>>(transportTask); + if (ListString != null && ListString.Count > 0) + { + var Strin = ListString.Find(e => e.LocationCode1 == executeStatePara.transportTask.S_END_LOC); + LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟浼樺厛绾�浠诲姟鍙凤細" + executeStatePara.transportTask.S_TASK_NO + "鏄惁鍖归厤鍒颁簡闃熷弸鐨勮揣浣嶄俊鎭� + JsonConvert.SerializeObject(Strin)); + if (Strin != null) + { + //鏌ヨ鏃佽竟鐨勮揣浣嶆槸鍚︽湁宸叉帹閫佷絾鏄病鎵ц鐨勪换鍔�+ // List<string> TaskState2 = new List<string> { "鏈墽琛�, "宸叉帹閫�, "鎵ц涓� }; + var SfgLo = newDb.Queryable<WMSTask>().Where(e => Strin.LocationCode2.Contains(e.S_START_LOC) && e.S_NOTE.Equals("agv浠诲姟") && (e.S_B_STATE == "鏈墽琛� || e.S_B_STATE == "宸叉帹閫� || e.S_B_STATE == "鎵ц涓�)).ToList(); + LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟浼樺厛绾�浠诲姟鍙凤細" + executeStatePara.transportTask.S_TASK_NO + "鍖归厤鍒扮殑璐т綅 鏄惁瀛樺湪 鏄痑gv浠诲姟 骞朵笖浠诲姟鐘舵�涓�鏈墽琛�宸叉帹閫�鎵ц涓�鐨勪换鍔℃湁:" + JsonConvert.SerializeObject(SfgLo)); + if (SfgLo.Count() > 0)//鏈夎繖涓换鍔�+ { + //鐪嬭繖涓换鍔℃槸鍚︽槸鏈夊浜庨厤缃┖鎵樼涓�綅鐨勮揣浣�+ var OneLoc = Strin.LocationCode2.FirstOrDefault(); + LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟浼樺厛绾� 閰嶇疆涓涓�釜璐т綅涓猴細" + OneLoc); + var OneTask = SfgLo.Find(e => e.S_START_LOC == OneLoc); + if (OneTask != null) + { + if (OneTask.S_B_STATE == "鏈墽琛�)//鎺ㄩ�浠诲姟 + { + OneTask.N_PRIORITY = 60; + TaskProcess.SendTask(OneTask); + } + else + { + var Agvstr = NDCHelper.ChangeParamPri(OneTask.S_TASK_NO, 60); + LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟浼樺厛绾�浠诲姟鍙凤細" + OneTask.S_TASK_NO + "浼樺厛绾т负锛� + 60 + " 鏄惁鎴愬姛 :" + Agvstr); + } + PritTask = OneTask; + } + else + { + SfgLo = SfgLo.OrderBy(e => e.T_CREATE).ToList(); + var OneTaskR = SfgLo.FirstOrDefault(); + if (OneTaskR.S_B_STATE == "鏈墽琛�)//鎺ㄩ�浠诲姟 + { + OneTaskR.N_PRIORITY = 60; + TaskProcess.SendTask(OneTaskR); + } + else + { + var Agvstr = NDCHelper.ChangeParamPri(OneTaskR.S_TASK_NO, 60); + LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟浼樺厛绾�浠诲姟鍙凤細" + OneTaskR.S_TASK_NO + "浼樺厛绾т负锛� + 60 + " 鏄惁鎴愬姛 :" + Agvstr); + } + PritTask = OneTaskR; + } + } + } + } + } + } + try { LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟鐘舵� 浜嬪姟寮�:" + executeStatePara.transportTask.S_TASK_NO); @@ -2388,6 +2419,13 @@ } } } + + if (PritTask != null) + { + // var ddd = executeStatePara.transportTaskSrc.Select(e => e.S_ID).ToList(); + var ggj = newDb.Updateable<WMSTask>().SetColumns(it => new WMSTask() { N_PRIORITY = 60 }).Where(e => e.S_ID == PritTask.S_ID).ExecuteCommand(); + LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟浼樺厛绾�浠诲姟鍙凤細" + PritTask.S_TASK_NO + "浼樺厛绾т负锛� + 60 + " 鏄惁鎴愬姛 鏀箇ms浠诲姟 褰卞搷琛屾暟:" + ggj); + } newDb.CommitTran(); LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟鐘舵� 浜嬪姟缁撴潫:" + executeStatePara.transportTask.S_TASK_NO); return OperateResult.Succeed(); diff --git a/HH.WCS.ZCQTJ/Bll/ZCBLL.cs b/HH.WCS.ZCQTJ/Bll/ZCBLL.cs index d976d07..59706da 100644 --- a/HH.WCS.ZCQTJ/Bll/ZCBLL.cs +++ b/HH.WCS.ZCQTJ/Bll/ZCBLL.cs @@ -34,7 +34,7 @@ var newDb = chi.CopyNew(); foreach (var task in TaskList) { - LogHelper.Info("澶勭悊鑷浠诲姟", " 鍑哄簱 寮�------浠诲姟:" + task.S_TASK_NO); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", " 鍑哄簱 寮�------浠诲姟:" + task.S_TASK_NO); try { bool ggf = true; @@ -48,6 +48,7 @@ string lkBit = task.S_START_LOC; var locationBit = LocationHelper.LocationCode(lkBit); + var tTaskNum = newDb.Queryable<OutAreaTaskAnyJbEntitys>().Where(e => e.S_AreaCode == task.S_START_LAREA && e.S_IsUse == "Y")?.First(); //鑾峰彇鎵樼洏鍙� 濡傛灉璧风偣绠℃帶鐨勮瘽 var endArea = newDb.Queryable<TN_AreaEntitys>().Where(e => e.S_AREA_CODE == task.S_END_LAREA)?.First(); if (endArea != null && endArea.S_CONTROL_QTY == "Y") @@ -55,7 +56,7 @@ var locaBit = newDb.Queryable<LocCntrRel>().Where(e => e.S_CNTR_CODE == task.S_CNTRS).First(); if (locaBit == null) { - LogHelper.Info("澶勭悊鑷浠诲姟", "鏈壘鍒版墭鐩樿揣浣嶇粦瀹氾細鍏朵腑 S_CNTRS=" + task.S_CNTRS); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "鏈壘鍒版墭鐩樿揣浣嶇粦瀹氾細鍏朵腑 S_CNTRS=" + task.S_CNTRS); throw new Exception("鏈壘鍒版墭鐩樿揣浣嶇粦瀹氾細鍏朵腑 S_CNTRS=" + task.S_CNTRS); } } @@ -63,7 +64,7 @@ var ToBit = LocationHelper.LocationCodeJbw(task.S_START_LOC); if (ToBit == null) { - LogHelper.Info("澶勭悊鑷浠诲姟", "鏈壘鍒板贩閬撳彿锛氬叾涓�S_START_LOC=" + task.S_START_LOC); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "鏈壘鍒板贩閬撳彿锛氬叾涓�S_START_LOC=" + task.S_START_LOC); throw new Exception("鏈壘鍒板贩閬撳彿锛氬叾涓�S_START_LOC=" + task.S_START_LOC); } if (locationBit == null) @@ -71,7 +72,41 @@ //閫氳繃浠诲姟绫诲瀷鎵炬帴椹充綅 var _bit = ""; string input = task.S_Jb_Bit; - string[] result = input.Split(','); + List<string> result = input.Split(',').ToList(); + if (tTaskNum != null && Itemgh != null) + { + //鏌ヨ璧风偣搴撳尯瀵瑰簲宸烽亾鎬讳换鍔¢噺 + var TaskLis = newDb.Queryable<WMSTask>().Where(e => e.S_START_LAREA == task.S_START_LAREA && e.S_Main_task == "涓讳换鍔� && e.S_B_STATE == "鏈墽琛� && (e.S_Jb_Bit.Contains(result.FirstOrDefault()) || e.S_Jb_Bit.Contains(result.LastOrDefault()))).ToList(); + if (TaskLis.Count > 0) + { + //绛涢�鍑哄簱鐨勫叏閮ㄦ弧鎵樹换鍔�+ var TaskTray = TaskLis.Select(e => e.S_CNTRS).ToList(); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "绛涢�鍑哄簱鐨勫叏閮ㄦ弧鎵樹换鍔� + JsonConvert.SerializeObject(TaskTray)); + //鏌ユ墭鐩樼┖婊�+ var TaskItemghList = newDb.Queryable<CntrItemRel>().Where(e => TaskTray.Contains(e.S_CNTR_CODE)).ToList(); + if (TaskItemghList.Count() > 0) + { + //鑾峰彇婊℃墭鐨勬墭鐩橀泦鍚�+ var MtTray = TaskItemghList.Select(e => e.S_CNTR_CODE).ToList(); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "绛涢�鍑哄簱鐨勫叏閮ㄦ弧鎵樹换鍔� + JsonConvert.SerializeObject(MtTray)); + TaskLis = TaskLis.FindAll(e => MtTray.Contains(e.S_CNTRS)).ToList(); + } + } + if (TaskLis.Count() > 0) + { + LogHelper.DanInfo("澶勭悊鑷浠诲姟", $"璧风偣搴撳尯{task.S_START_LAREA} 鎵�鐨勫贩閬撶殑 鏈墽琛岀殑浠诲姟閲忎负:{TaskLis.Count()}"); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", $"鏈�ぇ浠诲姟鏁颁负{tTaskNum.N_TaskQuantity}"); + if (TaskLis.Count() < tTaskNum.N_TaskQuantity) + { + if (result.Count > 1) + { + LogHelper.DanInfo("澶勭悊鑷浠诲姟", $"鎺掗櫎鍓嶆帴椹充綅鏈墈JsonConvert.SerializeObject(result)}"); + result.RemoveRange(1, result.Count - 1); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", $"鎺掗櫎鍚庢帴椹充綅鏈墈JsonConvert.SerializeObject(result)}"); + } + } + } + } Location connectBit = new Location(); foreach (var item in result) { @@ -129,7 +164,7 @@ if (lstLocation.Count() == 0) { - LogHelper.Info("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟锛氾細 璐т綅琛ㄦ病鏈夊彲鐢ㄨ揣浣�); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟锛氾細 璐т綅琛ㄦ病鏈夊彲鐢ㄨ揣浣�); throw new Exception("娌℃湁鍙敤璐т綅"); } //濡傛灉澶栦晶鏈夐樆鎸★紝灏卞皢澶栦晶鐨勮揣浣嶇殑CN_S_TASK_NO 鑾峰彇鍒�@@ -154,7 +189,7 @@ if (emptyLocation.Count() == 0) { - LogHelper.Info("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟锛氾細 璐т綅琛ㄦ病鏈夎宸烽亾涓殑鍙敤绌鸿揣浣�CN_S_AREA_CODE=" + locationBit.S_AREA_CODE); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟锛氾細 璐т綅琛ㄦ病鏈夎宸烽亾涓殑鍙敤绌鸿揣浣�CN_S_AREA_CODE=" + locationBit.S_AREA_CODE); throw new Exception("娌℃湁鍙敤璐т綅"); } @@ -173,13 +208,13 @@ loca.And(it => it.S_LOCK_STATE == "鍑哄簱閿�); List<Location> locationOutLock = newDb.Queryable<Location>().Where(loca.ToExpression()).ToList(); - LogHelper.Info("澶勭悊鑷浠诲姟", "locationOutLock鏁版嵁:" + JsonConvert.SerializeObject(locationOutLock)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "locationOutLock鏁版嵁:" + JsonConvert.SerializeObject(locationOutLock)); foreach (Location lEntity in locationOutLock) { emptyLocation.RemoveAll(o => o.N_ROW == lEntity.N_ROW && o.N_COL == lEntity.N_COL && o.N_LAYER == lEntity.N_LAYER); } - LogHelper.Info("澶勭悊鑷浠诲姟", "鍘婚櫎棰勫嚭搴撻攣瀹氬悗鐨別mptyLocation鏁版嵁:" + JsonConvert.SerializeObject(emptyLocation)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "鍘婚櫎棰勫嚭搴撻攣瀹氬悗鐨別mptyLocation鏁版嵁:" + JsonConvert.SerializeObject(emptyLocation)); //鍘婚櫎棰勫叆搴撻攣瀹氱殑鎺掑垪灞� var locaIn = Expressionable.Create<Location>(); @@ -187,13 +222,13 @@ locaIn.And(it => it.S_AREA_CODE == obstructBit.S_AREA_CODE); locaIn.And(it => it.S_LOCK_STATE == "鍏ュ簱閿�); List<Location> locationInLock = newDb.Queryable<Location>().Where(locaIn.ToExpression()).ToList(); - LogHelper.Info("澶勭悊鑷浠诲姟", "locationInLock鏁版嵁:" + JsonConvert.SerializeObject(locationInLock)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "locationInLock鏁版嵁:" + JsonConvert.SerializeObject(locationInLock)); foreach (Location lEntity in locationInLock) { emptyLocation.RemoveAll(o => o.N_ROW == lEntity.N_ROW && o.N_COL == lEntity.N_COL && o.N_LAYER == lEntity.N_LAYER); } - LogHelper.Info("澶勭悊鑷浠诲姟", "鍘婚櫎棰勫叆搴撻攣瀹氬悗鐨別mptyLocation鏁版嵁:" + JsonConvert.SerializeObject(emptyLocation)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "鍘婚櫎棰勫叆搴撻攣瀹氬悗鐨別mptyLocation鏁版嵁:" + JsonConvert.SerializeObject(emptyLocation)); //鍘婚櫎琚渚ц揣鐗╅樆鎸$殑璐т綅 var locaWc = Expressionable.Create<Location>(); @@ -203,14 +238,14 @@ locaWc.And(it => it.N_SIDE == 1); lca.And(it => it.N_CURRENT_NUM > 0); List<Location> lstLocationHasItem = newDb.Queryable<Location>().Where(locaWc.ToExpression()).ToList(); - LogHelper.Info("澶勭悊鑷浠诲姟", "lstLocationHasItem鏁版嵁:" + JsonConvert.SerializeObject(lstLocationHasItem)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "lstLocationHasItem鏁版嵁:" + JsonConvert.SerializeObject(lstLocationHasItem)); List<Location> lstLocationHasItemOrder = new List<Location>(); foreach (Location itemC in lstLocationHasItem) { emptyLocation.RemoveAll(o => o.N_ROW == itemC.N_ROW && o.N_COL == itemC.N_COL && o.N_LAYER == itemC.N_LAYER && o.N_SIDE > itemC.N_SIDE); } - LogHelper.Info("澶勭悊鑷浠诲姟", "鍘婚櫎闃绘尅鍚庣殑emptyLocation鏁版嵁:" + JsonConvert.SerializeObject(emptyLocation)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "鍘婚櫎闃绘尅鍚庣殑emptyLocation鏁版嵁:" + JsonConvert.SerializeObject(emptyLocation)); if (emptyLocation.Count() > 0) { var emptyLocation_inside = emptyLocation.FindAll(f => f.N_SIDE == 2); @@ -221,7 +256,7 @@ } else { - LogHelper.Info("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟锛氾細 璐т綅琛ㄦ病鏈夎宸烽亾涓殑鍙敤绌鸿揣浣�S_AREA_CODE=" + locationBit.S_AREA_CODE); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟锛氾細 璐т綅琛ㄦ病鏈夎宸烽亾涓殑鍙敤绌鸿揣浣�S_AREA_CODE=" + locationBit.S_AREA_CODE); throw new Exception("娌℃湁鍙敤璐т綅"); } // @@ -276,7 +311,7 @@ taskEntity1.S_Main_task = "瀛愪换鍔�; taskEntity1.S_TOOLS_TPYE = task.S_TOOLS_TPYE; - LogHelper.Info("澶勭悊鑷浠诲姟", "11---" + JsonConvert.SerializeObject(taskEntity1)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "11---" + JsonConvert.SerializeObject(taskEntity1)); string taskNo2 = task.S_TASK_NO + "_2"; //鍒涘缓绗簩涓换鍔� WMSTask taskEntity2 = new WMSTask() @@ -303,7 +338,7 @@ S_Main_task = "瀛愪换鍔�, S_TOOLS_TPYE = task.S_TOOLS_TPYE }; - LogHelper.Info("澶勭悊鑷浠诲姟", "12---" + JsonConvert.SerializeObject(taskEntity2)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "12---" + JsonConvert.SerializeObject(taskEntity2)); #region 浠诲姟涓嬭揪 #region 濡傛灉鏈夐樆鎸¢渶瑕佺Щ搴撳垯浜х敓绉诲簱浠诲姟 @@ -323,7 +358,7 @@ throw new Exception("閿佸畾缁堢偣璐т綅骞跺彂寮傚父锛� + taskEntityYk.S_END_LOC); } - LogHelper.Info("澶勭悊鑷浠诲姟", "璐т綅缁戝畾浠诲姟鍙�- 璐т綅鐮侊細" + taskEntityYk.S_END_LOC + "--閿佸畾缁堢偣璐т綅 浠诲姟鍙蜂负锛� + taskNoYk); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "璐т綅缁戝畾浠诲姟鍙�- 璐т綅鐮侊細" + taskEntityYk.S_END_LOC + "--閿佸畾缁堢偣璐т綅 浠诲姟鍙蜂负锛� + taskNoYk); A = newDb.Updateable<Location>().SetColumns(it => new Location { S_LOCK_STATE = "鍑哄簱閿�, @@ -334,12 +369,12 @@ newDb.RollbackTran(); throw new Exception("閿佸畾璧风偣璐т綅骞跺彂寮傚父锛� + taskEntityYk.S_START_LOC); } - LogHelper.Info("澶勭悊鑷浠诲姟", "璐т綅缁戝畾浠诲姟鍙�- 璐т綅鐮侊細" + taskEntityYk.S_START_LOC + "--閿佸畾缁堢偣璐т綅 浠诲姟鍙蜂负锛� + taskNoYk); - LogHelper.Info("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟涓嬪彂缁橶CS 鍙傛暟涓� + JsonConvert.SerializeObject(taskEntityYk)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "璐т綅缁戝畾浠诲姟鍙�- 璐т綅鐮侊細" + taskEntityYk.S_START_LOC + "--閿佸畾缁堢偣璐т綅 浠诲姟鍙蜂负锛� + taskNoYk); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟涓嬪彂缁橶CS 鍙傛暟涓� + JsonConvert.SerializeObject(taskEntityYk)); //涓嬪彂浠诲姟缁橶CS--绔嬪簱 var tr = BLLCreator.CreateSingleton<WcsTask>().WcsTaskEntity(taskEntityYk); - LogHelper.Info("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟璋冪敤WCS鎺ュ彛鎵ц浠诲姟 鎵ц缁撴灉锛� + JsonConvert.SerializeObject(tr)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟璋冪敤WCS鎺ュ彛鎵ц浠诲姟 鎵ц缁撴灉锛� + JsonConvert.SerializeObject(tr)); if (!tr.Success) { WCSBOOL = tr.Success; @@ -368,7 +403,7 @@ S_LOCK_STATE = "鍏ュ簱閿�, T_MODIFY = DateTime.Now }).Where(x => x.S_LOC_CODE == taskEntity1.S_END_LOC && x.S_LOCK_STATE == "鏃�).ExecuteCommand(); - LogHelper.Info("澶勭悊鑷浠诲姟", "璐т綅缁戝畾浠诲姟鍙�- 璐т綅鐮侊細" + taskEntity1.S_END_LOC + "--閿佸畾璐т綅涓洪鍏ュ簱 浠诲姟鍙蜂负锛� + taskNo1 + JsonConvert.SerializeObject(B)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "璐т綅缁戝畾浠诲姟鍙�- 璐т綅鐮侊細" + taskEntity1.S_END_LOC + "--閿佸畾璐т綅涓洪鍏ュ簱 浠诲姟鍙蜂负锛� + taskNo1 + JsonConvert.SerializeObject(B)); if (B == 0) { newDb.RollbackTran(); @@ -386,8 +421,8 @@ } #endregion #region 鍙戦�Wcs浠诲姟 - LogHelper.Info("澶勭悊鑷浠诲姟", "涓嬪彂缁橶CS 鍙傛暟涓� + JsonConvert.SerializeObject(taskEntity1)); - LogHelper.Info("澶勭悊鑷浠诲姟", "璋冪敤WCS鎺ュ彛"); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "涓嬪彂缁橶CS 鍙傛暟涓� + JsonConvert.SerializeObject(taskEntity1)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "璋冪敤WCS鎺ュ彛"); var re = BLLCreator.CreateSingleton<WcsTask>().WcsTaskEntity(taskEntity1, Itemgh); //濡傛灉浠诲姟鎴愬姛涓嬭揪 鍒欎富浠诲姟涓嶉渶瑕佸湪寰幆浜� if (!re.Success) @@ -400,7 +435,7 @@ { WCSBOOL = re.Success; } - LogHelper.Info("澶勭悊鑷浠诲姟", "璋冪敤WCS鎺ュ彛鎵ц浠诲姟 鎵ц缁撴灉锛� + JsonConvert.SerializeObject(re)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", "璋冪敤WCS鎺ュ彛鎵ц浠诲姟 鎵ц缁撴灉锛� + JsonConvert.SerializeObject(re)); #endregion #region 娣诲姞绗簩涓瓙浠诲姟 B = newDb.Insertable(taskEntity2).ExecuteCommand(); @@ -412,7 +447,7 @@ #endregion #region agv浠诲姟 //涓嬭揪浠诲姟缁橝gv - //LogHelper.Info("澶勭悊鑷浠诲姟", "璋冪敤agv鎺ュ彛"); + //LogHelper.DanInfo("澶勭悊鑷浠诲姟", "璋冪敤agv鎺ュ彛"); //var Are = TaskProcess.SendTask(taskEntity2); //if (!Are) //{ @@ -447,11 +482,11 @@ ors.Add(OperateResult.Error(ex.Message)); } } - LogHelper.Info("澶勭悊鑷浠诲姟", JsonConvert.SerializeObject(ors)); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", JsonConvert.SerializeObject(ors)); } catch (Exception ex) { - LogHelper.Info("澶勭悊鑷浠诲姟", " Error:" + ex.Message + ex.StackTrace); + LogHelper.DanInfo("澶勭悊鑷浠诲姟", " Error:" + ex.Message + ex.StackTrace); } } @@ -1353,7 +1388,7 @@ return OperateResult.Succeed(); // } } - // return OperateResult.Succeed(); + // return OperateResult.Succeed(); } else { @@ -2130,5 +2165,21 @@ } } + + + private bool ContainsAnyChar(string input, List<string> charList) + { + bool gf = false; + foreach (var item in charList) + { + if (input.Contains(input)) + { + gf = true; + break; + } + } + return gf; + } + } } diff --git a/HH.WCS.ZCQTJ/Config/Config.json b/HH.WCS.ZCQTJ/Config/Config.json index 75a49c1..bfd3542 100644 --- a/HH.WCS.ZCQTJ/Config/Config.json +++ b/HH.WCS.ZCQTJ/Config/Config.json @@ -128,5 +128,19 @@ "TcpClient": { "ip": "", "port": 8801 - } + }, + "TTXB-閫佹弧鍙栫┖": [ + { + "LocationCode1": "LC12A01TCM1", + "LocationCode2": [ "LC12A01TCK", "LC12A02TCK", "LC12A03TCK", "LC12A04TCK", "LC12A05TCK", "LC12A06TCK", "LC12A07TCK", "LC12A08TCK", "LC12A09TCK", "LC12A10TCK", "LC12A11TCK", "LC12A12TCK", "LC12A13TCK", "LC12A14TCK", "LC12A15TCK", "LC12A16TCK", "LC12A17TCK", "LC12A18TCK", "LC12A19TCK", "LC12A20TCK", "LC12A21TCK", "LC12A22TCK" ] + }, + { + "LocationCode1": "LC12A01TCM2", + "LocationCode2": [ "LC12A01TCK", "LC12A02TCK", "LC12A03TCK", "LC12A04TCK", "LC12A05TCK", "LC12A06TCK", "LC12A07TCK", "LC12A08TCK", "LC12A09TCK", "LC12A10TCK", "LC12A11TCK", "LC12A12TCK", "LC12A13TCK", "LC12A14TCK", "LC12A15TCK", "LC12A16TCK", "LC12A17TCK", "LC12A18TCK", "LC12A19TCK", "LC12A20TCK", "LC12A21TCK", "LC12A22TCK" ] + }, + { + "LocationCode1": "LC12A01TCM3", + "LocationCode2": [ "LC12A01TCK", "LC12A02TCK", "LC12A03TCK", "LC12A04TCK", "LC12A05TCK", "LC12A06TCK", "LC12A07TCK", "LC12A08TCK", "LC12A09TCK", "LC12A10TCK", "LC12A11TCK", "LC12A12TCK", "LC12A13TCK", "LC12A14TCK", "LC12A15TCK", "LC12A16TCK", "LC12A17TCK", "LC12A18TCK", "LC12A19TCK", "LC12A20TCK", "LC12A21TCK", "LC12A22TCK" ] + } + ] } \ No newline at end of file diff --git a/HH.WCS.ZCQTJ/Entitys/ConfigJsonEntitys.cs b/HH.WCS.ZCQTJ/Entitys/ConfigJsonEntitys.cs index 45aecc7..9db52f9 100644 --- a/HH.WCS.ZCQTJ/Entitys/ConfigJsonEntitys.cs +++ b/HH.WCS.ZCQTJ/Entitys/ConfigJsonEntitys.cs @@ -56,6 +56,34 @@ public string S_Note { get; set; } } + + /// <summary> + /// 鍑哄簱浠诲姟閲忎复鐣岃〃 + /// </summary> + [ST("鍑哄簱浠诲姟閲忎复鐣岃〃")] + public class OutAreaTaskAnyJbEntitys : BaseModel + { + /// <summary> + /// 鍑哄簱鐨勫簱鍖�+ /// </summary> + public string S_AreaCode { get; set; } + + /// <summary> + /// 浠诲姟鏁伴噺 + /// </summary> + public int N_TaskQuantity { get; set; } + + /// <summary> + /// 寮�叧 + /// </summary> + public string S_IsUse { get; set; } + + /// <summary> + /// 澶囨敞 + /// </summary> + public string S_Note { get; set; } + } + /// <summary> /// 鍔熻兘寮�叧琛� /// </summary> @@ -149,6 +177,17 @@ /// </summary> public string LocationCode2 { get; set; } } + public class ConfigValueListTwo + { + /// <summary> + /// 婊¤揣浣�+ /// </summary> + public string LocationCode1 { get; set; } + /// <summary> + /// 绌鸿揣浣�+ /// </summary> + public List<string> LocationCode2 { get; set; } + } /// <summary> /// 澶у睆搴撳尯浠诲姟鏁扮粺璁�@@ -158,4 +197,10 @@ public string AreaCode { get; set; } public string TrayState { get; set; } } + + public class AgvCodeTs + { + public List<string> LocationCode { get; set; } + public List<string> EndAreaCode { get; set; } + } } diff --git a/HH.WCS.ZCQTJ/Entitys/S_AGV_CONDITIONEntitys.cs b/HH.WCS.ZCQTJ/Entitys/S_AGV_CONDITIONEntitys.cs index e9f2f82..b64b597 100644 --- a/HH.WCS.ZCQTJ/Entitys/S_AGV_CONDITIONEntitys.cs +++ b/HH.WCS.ZCQTJ/Entitys/S_AGV_CONDITIONEntitys.cs @@ -1,6 +1,7 @@ 锘縰sing HH.WCS.Hexafluo.util; using HH.WCS.Hexafluo.wms; using SqlSugar; +using System.Collections.Generic; namespace HH.WCS.ZCQTJ.Entitys { @@ -137,4 +138,81 @@ public string Agvstate_s { get; set; } #endregion } + + + public class AgvWcsCarryMsg + { + /// <summary> + /// Agv杞︿綋淇℃伅 + /// </summary> + public List<AgvCarryMsg> AgvMsgList { get; set; } + /// <summary> + /// Wcs璁惧淇℃伅 + /// </summary> + public List<WcsCarryMsg> WcsMsgList { get; set; } + } + + /// <summary> + /// 缁欑珯鍙扮殑Agv淇℃伅 + /// </summary> + public class AgvCarryMsg + { + /// <summary> + /// 杞﹀彿 + /// </summary> + public string forkliftNo { get; set; } + + /// <summary> + /// agv鐘舵� + /// </summary> + public string Agvstate_s { get; set; } + + /// <summary> + /// 鐢垫睜鐢甸噺 + /// </summary> + public string Battery_Soc { get; set; } + + /// <summary> + /// 鎵樼洏鐮�+ /// </summary> + public string TrayCode { get; set; } + + /// <summary> + /// 杞﹁締XY鍧愭爣(cm) + /// </summary> + public string Pos_XY { get; set; } + } + + public class WcsCarryMsg + { + /// <summary> + /// 璁惧缂栧彿 + /// </summary> + public string dvcNo { get; set; } + + /// <summary> + /// X鍧愭爣 + /// </summary> + public string posX { get; set; } + + /// <summary> + /// Y鍧愭爣 + /// </summary> + public string posY { get; set; } + + /// <summary> + /// Y鍧愭爣 + /// </summary> + public string posZ { get; set; } + + /// <summary> + /// 杩愯鐘舵� + /// </summary> + public string dvcState { get; set; } + + /// <summary> + /// 杞借揣鎵樼洏 + /// </summary> + public string dvcCont { get; set; } + } } diff --git a/HH.WCS.ZCQTJ/api/WmsController.cs b/HH.WCS.ZCQTJ/api/WmsController.cs index 1e65859..d004414 100644 --- a/HH.WCS.ZCQTJ/api/WmsController.cs +++ b/HH.WCS.ZCQTJ/api/WmsController.cs @@ -1570,7 +1570,6 @@ { throw new Exception("鏈煡璇㈠埌璇ヤ换鍔�); } - if (transportTask.S_TYPE == "鍏ュ簱" && !string.IsNullOrEmpty(transportTask.mark)) { if (State.clientType == "1") @@ -1580,6 +1579,7 @@ } else if (transportTask.S_TYPE == "鍏ュ簱") { + if (State.clientType == "1") { NDCHelper.ChangeParam(State.requestPk, 1103, 18); @@ -1587,9 +1587,20 @@ } else if (transportTask.S_TYPE == "鍑哄簱") { - if (State.clientType == "1") + var tac = newDb.Queryable<TN_TcpCont>().Where(a => a.LocationCode == transportTask.S_END_LOC)?.First(); + if (tac?.CtiaMode == "绔嬪簱") { - NDCHelper.ChangeParam(State.requestPk, 1101, 18); + if (State.clientType == "1") + { + NDCHelper.ChangeParam(State.requestPk, 1103, 18); + } + } + else + { + if (State.clientType == "1") + { + NDCHelper.ChangeParam(State.requestPk, 1101, 18); + } } } } @@ -3337,11 +3348,136 @@ } } #endregion + + #region Agv杞借揣淇℃伅鎺ュ彛 + /// <summary> + /// Agv杞借揣淇℃伅鎺ュ彛 + /// </summary> + /// <returns></returns> + [HttpGet] + [Route("ZcAgvVanAge")] + public OperateResult ZcAgvVanAge() + { + try + { + var chi = new SqlHelper<object>().GetInstance(); + var newDb = chi.CopyNew(); + //鏌ヨ鎵�湁姝e湪鎵ц鐨刟gv浠诲姟 骞朵笖鏈夎溅鍙�+ List<string> AgvTaskState = new List<string> { "鏈墽琛�, "宸叉帹閫�, "鎵ц涓�, "瀹屾垚", "鍙栨秷" }; + var AgvtransportTask = newDb.Queryable<WMSTask>().Where(e => e.S_NOTE == "agv浠诲姟" && !AgvTaskState.Contains(e.S_B_STATE)).ToList(); + var agv = newDb.Queryable<S_AGV_CONDITIONEntitys>().ToList(); + //鏍规嵁杞﹀彿鎺掑簭 + agv = agv.OrderBy(e => int.Parse(e.forkliftNo)).ToList(); + AgvWcsCarryMsg agvWcsCar = new AgvWcsCarryMsg(); + List<AgvCarryMsg> AgvMsgL = new List<AgvCarryMsg>(); + foreach (var item in agv) + { + var Model = new AgvCarryMsg(); + Model.forkliftNo = item.forkliftNo; + Model.Agvstate_s = item.Agvstate_s; + Model.Battery_Soc = item.Battery_Soc; + Model.Pos_XY = $"{item.Pos_X},{item.Pos_Y}"; + var agvTask = AgvtransportTask.Find(e => e.S_EQ_NO == item.forkliftNo); + if (agvTask != null) + { + Model.TrayCode = agvTask.S_CNTRS; + } + AgvMsgL.Add(Model); + } + var Wcs = BLLCreator.Create<WcsTask>().WcsdataBoard(); + agvWcsCar.AgvMsgList = AgvMsgL; + agvWcsCar.WcsMsgList = Wcs; + + return OperateResult.Succeed("", JsonConvert.SerializeObject(agvWcsCar)); + } + catch (Exception ex) + { + + return OperateResult.Error(ex.Message); + } + + } + #endregion + #region MES淇敼鏅鸿兘绌烘《瀵瑰簲绌烘墭缂撳瓨鐐瑰閲�+ /// <summary> + /// MES淇敼鏅鸿兘绌烘《瀵瑰簲绌烘墭缂撳瓨鐐瑰閲�+ /// </summary> + /// <param name="LocationCode">婊℃墭鍏ュ簱鐐逛綅</param> + /// <returns></returns> + [HttpGet] + [Route("ZcMesUpdateLoNum")] + public OperateResult ZcMesUpdateLoNum(string LocationCode) + { + LogHelper.Info("MES", $"MES淇敼鏅鸿兘绌烘《瀵瑰簲绌烘墭缂撳瓨鐐瑰閲�鍏ュ弬:{LocationCode}"); + var chi = new SqlHelper<object>().GetInstance(); + var newDb = chi.CopyNew(); + try + { + Location location2 = null; + List<ConfigValueList> ListValues = new List<ConfigValueList>(); + var transport = newDb.Queryable<ConfigJsonEntitys>().Where(e => e.Autoindex == "鏅鸿兘绌烘《缂撳瓨")?.First(); + if (transport != null) + { + ListValues = JsonConvert.DeserializeObject<List<ConfigValueList>>(transport.TypeJson); + if (ListValues.Count() > 0) + { + //鏌ヨ鍑哄搴旂殑绌烘墭缂撳瓨浣�+ var ggf = ListValues.Find(e => e.LocationCode1 == LocationCode); + if (ggf != null) + { + location2 = newDb.Queryable<Location>().Where(e => e.S_LOC_CODE == ggf.LocationCode2)?.First(); + if (location2 != null && (location2.N_CURRENT_NUM - 1 >= 0)) + { + try + { + newDb.BeginTran(); + var I = newDb.Updateable<Location>().SetColumns(it => new Location() + { + T_MODIFY = DateTime.Now, + N_CURRENT_NUM = it.N_CURRENT_NUM - 1, + T_EMPTY_TIME = DateTime.Now + }).Where(x => x.S_LOC_CODE == location2.S_LOC_CODE).ExecuteCommand(); + if (I == 0) + { + throw new Exception("鏇存柊缁堢偣褰撳墠瀹归噺-1澶辫触"); + } + LogHelper.Info("MES", $"MES淇敼鏅鸿兘绌烘《瀵瑰簲绌烘墭缂撳瓨鐐瑰閲� 淇敼鎴愬姛 淇敼鐨勮揣浣嶄负{location2.S_LOC_CODE}"); + newDb.CommitTran(); + return OperateResult.Succeed(); + } + catch (Exception ex) + { + newDb.RollbackTran(); + LogHelper.Info("MES", $"MES淇敼鏅鸿兘绌烘《瀵瑰簲绌烘墭缂撳瓨鐐瑰閲�{ex.Message}"); + return OperateResult.Error(ex.Message); + } + } + else + { + LogHelper.Info("MES", $"MES淇敼鏅鸿兘绌烘《瀵瑰簲绌烘墭缂撳瓨鐐瑰閲�{location2.N_CURRENT_NUM} 鍑忓幓1鍚庝笉鍦ㄥぇ浜�绛変簬0 鏁呰�涓嶅厑璁稿噺灏�); + return OperateResult.Succeed(); + } + } + } + } + throw new Exception("鏈煡璇㈠埌 鏅鸿兘绌烘《缂撳瓨 鐩稿叧閰嶇疆淇℃伅"); + } + catch (Exception ex) + { + LogHelper.Info("MES", $"MES淇敼鏅鸿兘绌烘《瀵瑰簲绌烘墭缂撳瓨鐐瑰閲�鎶ラ敊:{ex.Message}"); + return OperateResult.Error(ex.Message); + } + } + + #endregion #endregion [HttpGet] [Route("asss")] - public OperateResult asss(int T) + public OperateResult asss() { + var transportTask = STAttribute.GetValueTwo("TTXB-閫佹弧鍙栫┖"); + var ListString = JsonConvert.DeserializeObject<List<ConfigValueListTwo>>(transportTask); + return OperateResult.Succeed(JsonConvert.SerializeObject(ListString)); // List<OperateResult> nn = new List<OperateResult>(); //var ca = BLLCreator.Create<IdGuid>().TaskNo("CK"); //LogHelper.Info("浠诲姟涓嬪彂", "MES涓嬪彂浠诲姟鍙傛暟:"); diff --git a/HH.WCS.ZCQTJ/core/TaskCore.cs b/HH.WCS.ZCQTJ/core/TaskCore.cs index 654d8cd..2281b39 100644 --- a/HH.WCS.ZCQTJ/core/TaskCore.cs +++ b/HH.WCS.ZCQTJ/core/TaskCore.cs @@ -2,6 +2,7 @@ using HH.WCS.Hexafluo.process; using HH.WCS.Hexafluo.util; using HH.WCS.Hexafluo.wms; +using HH.WCS.SJML.Entitys; using HH.WCS.SJML.util; using HH.WCS.ZCQTJ.Entitys; using Newtonsoft.Json; @@ -90,11 +91,38 @@ //鑾峰彇鎵�湁鏈墽琛岀殑浠诲姟 lock (locko9) { - var Lo = SqlSugarHelper.Db.Queryable<TaskLockEntitys>().Where(a => a.DeviceName == "AGV")?.First(); + var chi = new SqlHelper<object>().GetInstance(); + var newDb = chi.CopyNew(); + var Lo = newDb.Queryable<TaskLockEntitys>().Where(a => a.DeviceName == "AGV")?.First(); + DateTime date = DateTime.Now; if (Lo != null && Lo.IsEnable == "Y") { List<string> state = new List<string> { "鏈墽琛�, "寰呮帹閫� }; var list = TaskHelper.GetTaskListByState(state); + + //鏌ヨ鏄惁鏈夐�婊″彇绌虹殑 绌哄叆浠诲姟 鏈夌殑璇濋渶瑕佺瓑寰�0鍒嗛挓 + var transportTask = newDb.Queryable<ConfigJsonEntitys>().Where(e => e.Autoindex == "閫佹弧鍙栫┖瀵瑰簲鐨勭┖鎵樼偣浣�)?.First(); + if (transportTask != null) + { + var ListString = JsonConvert.DeserializeObject<List<string>>(transportTask.TypeJson); + if (ListString.Count() > 0) + { + //鍓旈櫎鏃堕棿娌″埌20鍒嗛挓鐨勭┖鎵樺叆搴�-鐗瑰埗 + var TiemTask = list.FindAll(e => ListString.Contains(e.S_START_LOC) && e.S_TYPE == "鍏ュ簱").ToList(); + if (TiemTask.Count() > 0) + { + foreach (var item in TiemTask) + { + if (item.T_CREATE.AddMinutes(20) > date)//娌¤秴鏃�0鍒嗛挓 + { + //鎺掗櫎 + list.Remove(item); + LogHelper.Info("NDC", $"娌¤秴鏃�0鍒嗛挓 鎺掗櫎鐨勪换鍔℃湁:{JsonConvert.SerializeObject(item)}"); + } + } + } + } + } var RkTask = list.FindAll(e => e.S_TYPE == "鍏ュ簱").ToList(); // var CkTask = list.FindAll(e => e.S_TYPE == "鍑哄簱").ToList(); if (RkTask.Count > 0) @@ -105,7 +133,7 @@ TaskProcess.SendTask(item); } } - var CkTaskList = SqlSugarHelper.Db.Queryable<WMSTask>().Where(a => state.Contains(a.S_B_STATE.Trim()) + var CkTaskList = newDb.Queryable<WMSTask>().Where(a => state.Contains(a.S_B_STATE.Trim()) && a.S_NOTE == "agv浠诲姟" && a.S_TYPE == "鍑哄簱" && a.S_START_LAREA != "TMCKJBW").ToList(); if (CkTaskList.Count > 0) { @@ -140,7 +168,7 @@ //else //{ List<string> States = new List<string>() { "宸叉帹閫�, "鎵ц涓�, "寮�鍙栬揣" }; - var taskList = SqlSugarHelper.Db.Queryable<WMSTask>().Where(e => e.S_START_LOC == item.S_START_LOC + var taskList = newDb.Queryable<WMSTask>().Where(e => e.S_START_LOC == item.S_START_LOC && States.Contains(e.S_B_STATE.Trim()) && e.S_NOTE == "agv浠诲姟").ToList(); LogHelper.Info("NDC", $"鍑哄簱姝e湪鍒ゆ柇鏄惁鍙互涓嬪彂鐨�agv浠诲姟 璧风偣搴撳尯涓嶆槸LC11M鐨刟gv浠诲姟(鍒ゆ柇鏄惁鏈夌浉鍚岃捣鐐圭殑鍒殑agv浠诲姟):{JsonConvert.SerializeObject(taskList)}"); if (taskList.Count > 0) @@ -151,7 +179,7 @@ // } } } - var CkTaskList1 = SqlSugarHelper.Db.Queryable<WMSTask>().Where(a => state.Contains(a.S_B_STATE.Trim()) + var CkTaskList1 = newDb.Queryable<WMSTask>().Where(a => state.Contains(a.S_B_STATE.Trim()) && a.S_NOTE == "agv浠诲姟" && a.S_TYPE == "鍑哄簱" && a.S_START_LAREA == "TMCKJBW").OrderBy(e => e.T_CREATE).ToList(); if (CkTaskList1.Count() > 0) @@ -162,7 +190,7 @@ { LogHelper.Info("NDC", $"鍑哄簱姝e湪鍒ゆ柇鏄惁鍙互涓嬪彂鐨�agv浠诲姟鍙�{item.S_TASK_NO}"); //鏌ヨ涓讳换鍔$殑璧风偣搴撳尯 - var ZhuTask = SqlSugarHelper.Db.Queryable<WMSTask>().Where(e => e.S_SRC_NO == item.S_SRC_NO).ToList(); + var ZhuTask = newDb.Queryable<WMSTask>().Where(e => e.S_SRC_NO == item.S_SRC_NO).ToList(); LogHelper.Info("NDC", $"鍑哄簱姝e湪鍒ゆ柇鏄惁鍙互涓嬪彂鐨�agv浠诲姟 鎵�搴旂殑鎵�湁鐩稿叧浠诲姟:{JsonConvert.SerializeObject(ZhuTask)}"); var hh = ZhuTask.FindAll(e => e.S_START_LAREA == "LC11M").ToList(); if (hh.Any()) diff --git a/HH.WCS.ZCQTJ/dispatch/WcsTask.cs b/HH.WCS.ZCQTJ/dispatch/WcsTask.cs index 8c7e326..5cc168f 100644 --- a/HH.WCS.ZCQTJ/dispatch/WcsTask.cs +++ b/HH.WCS.ZCQTJ/dispatch/WcsTask.cs @@ -1,6 +1,8 @@ 锘縰sing HH.WCS.Hexafluo; using HH.WCS.Hexafluo.util; using HH.WCS.Hexafluo.wms; +using HH.WCS.SJML.Bll; +using HH.WCS.SJML.Comm; using HH.WCS.SJML.Dto; using HH.WCS.ZCQTJ.Entitys; using Newtonsoft.Json; @@ -393,10 +395,44 @@ return returnEntity; } } + + + /// <summary> + /// WCS璁惧淇℃伅鏌ヨ + /// </summary> + /// <returns></returns> + public List<WcsCarryMsg> WcsdataBoard() + { + List<WcsCarryMsg> WcsCarry = new List<WcsCarryMsg>(); + try + { + var interact = new + { + requestPk = BLLCreator.Create<IdWorker>().nextId("CX"), + reqTime = DateTime.Now + }; + LogHelper.Info("绔嬪簱", "鏌ヨ绔嬪簱璁惧淇℃伅 鍙傛暟涓�" + JsonConvert.SerializeObject(interact)); + var result = apiHelper.Post(baseUrl + "/wcs-admin/api/dataBoard", JsonConvert.SerializeObject(interact)); + LogHelper.Info("绔嬪簱", "缁欑珛搴撲笅杈惧畨鍏ㄨ姹�绔嬪簱杩斿洖鍙傛暟涓�" + result); + if (string.IsNullOrEmpty(result)) + { + return WcsCarry; + } + var data = JsonConvert.DeserializeObject<List<WcsCarryMsg>>(result); + return data; + + } + catch (Exception ex) + { + LogHelper.Info("绔嬪簱", "鏌ヨ绔嬪簱璁惧淇℃伅 鎶ラ敊:" + ex.Message); + return WcsCarry; + } + } public OperateResult WcsCallbackAnyc(string JsonValue) { try { + var result = apiHelper.Post(baseUrl + "/wcs-admin/api/agvCallback", JsonValue); LogHelper.Info("绔嬪簱", "缁欑珛搴撲笅杈惧畨鍏ㄨ姹�绔嬪簱杩斿洖鍙傛暟涓�" + result); if (string.IsNullOrEmpty(result)) diff --git a/HH.WCS.ZCQTJ/process/TaskProcess.cs b/HH.WCS.ZCQTJ/process/TaskProcess.cs index fc88ee0..6bf2794 100644 --- a/HH.WCS.ZCQTJ/process/TaskProcess.cs +++ b/HH.WCS.ZCQTJ/process/TaskProcess.cs @@ -870,6 +870,11 @@ } } } + else if (tac.CtiaMode == "绔嬪簱") + { + task.S_TYPE = "鍏ュ簱"; + BLLCreator.CreateSingleton<WcsTask>().WcsCallback(task, state, forkliftNo); + } } } } @@ -1028,7 +1033,7 @@ } } - if (tac.CtiaMode == "VMI") + else if (tac.CtiaMode == "VMI") { var Alone = newDb.Queryable<SqlCountEntitys>().Where(e => e.ConfigId == tac.host)?.First(); if (Alone == null) @@ -1105,6 +1110,11 @@ } LogHelper.Info("瀹屽伐鍥炴姤", "鍐欏畨鍏ㄤ俊鍙蜂氦浜掕〃 IMES_AGV_BAST_ENTRY_TRANSF_DONE 瀛楁涓�0鎴愬姛"); } + } + else if (tac.CtiaMode == "绔嬪簱") + { + task.S_TYPE = "鍏ュ簱"; + var tra = BLLCreator.Create<WcsTask>().WcsCallback(task, state, forkliftNo); } } } @@ -2673,18 +2683,31 @@ /// <param name="mst"></param> internal static bool SendTask(WMSTask mst) { - + var chi = new SqlHelper<object>().GetInstance(); + var newDb = chi.CopyNew(); try { + var result = false; var start = 0; var end = 0; var taskType = mst.S_TYPE.Trim(); var taskState = mst.S_B_STATE.Trim(); if (taskState == "鏈墽琛� || taskState == "寰呮帹閫�) { + var dic = new Dictionary<string, string>(); + var dic1 = new Dictionary<string, string>(); LogHelper.Info("NDC", $"agv浠诲姟鍙�{mst.S_TASK_NO}"); LogHelper.Info("NDC", $"agv浠诲姟璧风偣:{mst.S_START_LOC}"); start = LocationHelper.GetAgvSiteZc(mst.S_START_LOC); + var transportTask = newDb.Queryable<ConfigJsonEntitys>().Where(e => e.Autoindex == "鐗规畩娴佺▼绔欑偣")?.First(); + if (transportTask != null) + { + var ListString = JsonConvert.DeserializeObject<AgvCodeTs>(transportTask.TypeJson); + if (ListString != null && ListString.LocationCode != null && ListString.EndAreaCode != null && ListString.LocationCode.Contains(mst.S_START_LOC) && ListString.EndAreaCode.Contains(mst.S_END_LAREA)) + { + start = LocationHelper.GetAgvSiteZc2(mst.S_START_LOC); + } + } LogHelper.Info("NDC", $"agv 鏌ヨ鐨勭珯鐐�璧风偣):{start}"); LogHelper.Info("NDC", $"agv浠诲姟缁堢偣:{mst.S_END_LOC}"); end = LocationHelper.GetAgvSiteZc(mst.S_END_LOC); @@ -2692,8 +2715,6 @@ Console.WriteLine($"SendTask {mst.S_TASK_NO}"); Console.WriteLine("start=" + start); Console.WriteLine("end= " + end); - var dic = new Dictionary<string, string>(); - var dic1 = new Dictionary<string, string>(); dic.Add("Pri", mst.N_PRIORITY.ToString());//浼樺厛绾� dic.Add("No", mst.S_TASK_NO.Trim()); dic1.Add("From", start.ToString());//璧风偣 @@ -2706,7 +2727,7 @@ } else { - var tac = SqlSugarHelper.Db.Queryable<TN_TcpCont>().Where(a => a.LocationCode == mst.S_END_LOC)?.First(); + var tac = newDb.Queryable<TN_TcpCont>().Where(a => a.LocationCode == mst.S_END_LOC)?.First(); if (tac != null && tac.C_IS_RFID == "Y") { diff --git a/HH.WCS.ZCQTJ/util/LogHelper.cs b/HH.WCS.ZCQTJ/util/LogHelper.cs index 3efc4f6..132282f 100644 --- a/HH.WCS.ZCQTJ/util/LogHelper.cs +++ b/HH.WCS.ZCQTJ/util/LogHelper.cs @@ -206,7 +206,7 @@ var loggerNames = new List<string>() { "HosttoagvTask", "HosttoagvCar", "NDC", "MES", "缁戝畾瑙g粦", "閲嶉噺璁$畻", "鐗╂枡鍝佽川淇敼", "鍏ュ簱", "鍏ュ簱绠楁硶", "鍑哄簱", "鍑哄簱绠楁硶", "澶勭悊鑷浠诲姟", "鏇存崲缁堢偣", "鏇存崲璧风偣", "鎵ц鐨凷QL", "ERP浼犲弬", "瀹屽伐鍥炴姤", "浠诲姟涓嬪彂", "缁欑珛搴撲笅杈句换鍔�, "绔嬪簱", "绔嬪簱浠诲姟涓嬭揪", "鍙戦�缁橫ES", "鍥炴粴浠诲姟鏈嶅姟", "INFO", - "Wcs鎶ヨ淇℃伅", "宸烽亾鐢ㄧ鐢�, "鎺ラ┏浣嶇敤绂佺敤", "杞繍", "閽夐拤閫氱煡", "涓嬪彂鏃犳墭鐩樺叆搴撶珛搴撲换鍔�,"璋冩暣浼樺厛绾�,"纭畾鍏ュ簱鎵樼洏淇℃伅","璁$畻AGV鏃堕棿","鍑哄簱鍒版帴椹充綅","鍏ュ簱鏀归亾","ts鍒囨崲璺嚎" }; + "Wcs鎶ヨ淇℃伅", "宸烽亾鐢ㄧ鐢�, "鎺ラ┏浣嶇敤绂佺敤", "杞繍", "閽夐拤閫氱煡", "涓嬪彂鏃犳墭鐩樺叆搴撶珛搴撲换鍔�,"璋冩暣浼樺厛绾�,"纭畾鍏ュ簱鎵樼洏淇℃伅","璁$畻AGV鏃堕棿","鍑哄簱鍒版帴椹充綅","鍏ュ簱鏀归亾","ts鍒囨崲璺嚎","鑾峰彇json鏂囦欢" }; LogManager.Configuration = DefaultConfig(loggerNames); } public static ILogger CreateLogger(string name) diff --git a/HH.WCS.ZCQTJ/util/STAttribute .cs b/HH.WCS.ZCQTJ/util/STAttribute .cs index a4dc5bc..8981c2c 100644 --- a/HH.WCS.ZCQTJ/util/STAttribute .cs +++ b/HH.WCS.ZCQTJ/util/STAttribute .cs @@ -43,7 +43,28 @@ } } + public static string GetValueTwo(string name) + { + try + { + var jsonFile = System.AppDomain.CurrentDomain.BaseDirectory + "Config\\Config.json"; + using (System.IO.StreamReader file = System.IO.File.OpenText(jsonFile)) + { + using (JsonTextReader reader = new JsonTextReader(file)) + { + JObject o = (JObject)JToken.ReadFrom(reader); + var value = o[name].ToString(); + return value.Replace("\r\n", ""); + } + } + } + catch (Exception ex) + { + LogHelper.DanInfo("鑾峰彇json鏂囦欢", "鍊紅imeSpan澶辫触锛佸師鍥狅細" + ex.Message); + return ""; + } + } } diff --git a/HH.WCS.ZCQTJ/wms/LocationHelper.cs b/HH.WCS.ZCQTJ/wms/LocationHelper.cs index 953e8ca..5faa08c 100644 --- a/HH.WCS.ZCQTJ/wms/LocationHelper.cs +++ b/HH.WCS.ZCQTJ/wms/LocationHelper.cs @@ -91,6 +91,11 @@ var location = GetLocZc(loc.Trim()); return location.N_AGV_CODE; } + internal static int GetAgvSiteZc2(string loc) + { + var location = GetLocZc(loc.Trim()); + return location.N_AGV_CODE_T; + } internal static int ZcGetAgvSite(string loc) diff --git a/HH.WCS.ZCQTJ/wms/WMSModel.cs b/HH.WCS.ZCQTJ/wms/WMSModel.cs index dc338e2..2fbc7ea 100644 --- a/HH.WCS.ZCQTJ/wms/WMSModel.cs +++ b/HH.WCS.ZCQTJ/wms/WMSModel.cs @@ -38,11 +38,17 @@ public string S_AGV_SITE { get; set; } /// <summary> - /// 闇�娉ㄦ剰 + /// 闇�娉ㄦ剰 agv绔欑偣1 /// </summary> //[SugarColumn(IsIgnore = true)] public int N_AGV_CODE { get; set; } + + /// <summary> + /// agv绔欑偣2 + /// </summary> + public int N_AGV_CODE_T { get; set; } + /// <summary> /// 鍑哄簱鏃堕棿 /// </summary> -- Gitblit v1.9.1