From d0b3abf74ac5f94f5373922172ed79fbfc24e6be Mon Sep 17 00:00:00 2001 From: lss <Lss@HanInfo> Date: 星期二, 17 六月 2025 17:28:53 +0800 Subject: [PATCH] 电梯流程开发 --- HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs | 198 +++++++++++++++++++++++++++++-------------------- 1 files changed, 118 insertions(+), 80 deletions(-) diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs index d9a1195..95b74ba 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs @@ -12,6 +12,7 @@ using System.Collections.Generic; using System.Linq; using System.Reflection.Emit; +using System.Runtime.CompilerServices; using System.ServiceModel; using System.Threading; using System.Threading.Tasks; @@ -172,7 +173,18 @@ var CntrRel = LocationHelper.GetLocCntrRel(startloc.S_CODE).FirstOrDefault(); if (CntrRel != null) { - CntrCode = CntrRel.S_CNTR_CODE; + if (CntrRel.S_CNTR_CODE!= partData.rfid) + { + result.code = "1"; + result.msg = $"鏍规嵁璧风偣锛歿Start}鑾峰彇鎵樼洏:{CntrRel.S_CNTR_CODE}涓庝笅鍙戞墭鐩橈細{partData.rfid}涓嶄竴鑷达紝璇锋鏌ユ墭鐩樼爜鏄惁姝g‘"; + AddErrorInfo("鎵樼洏鐮佹牎妫�け璐�, result.msg, Source); + return result; + } + else + { + CntrCode = CntrRel.S_CNTR_CODE; + } + } //else //{ @@ -1076,56 +1088,60 @@ #endregion #region 浠诲姟鍒涘缓 - if (!string.IsNullOrEmpty(Start) && !string.IsNullOrEmpty(End)) + if (string.IsNullOrEmpty(Start)) { - if (loc.N_LOCK_STATE != 0) - { - result.code = "1"; - result.msg = $"鍒涘缓浠诲姟澶辫触锛岃捣鐐箋Start}鏈夐攣"; - AddErrorInfo("璐т綅鏈夐攣", result.msg, Source); - return result; - } - //鍒涘缓wcs浠诲姟 - var wcsTask = new WCSTask - { - S_CODE = WCSHelper.GenerateTaskNo(), - S_TYPE = "鍑哄钩搴�, - S_EQ_NO = model.TaskNumber, - S_START_LOC = Start, - S_END_LOC = End, - S_START_WH = loc.S_WH_CODE, - S_START_AREA = loc.S_AREA_CODE, - S_END_WH = Endloc.S_WH_CODE, - S_END_AREA = Endloc.S_AREA_CODE, - N_CNTR_COUNT = 1, - N_SCHEDULE_TYPE = 1, - S_CNTR_CODE = CntrCode, - N_START_LAYER = 1, - N_END_LAYER = 1, - Z_TYPE = n_type + result.code = "1"; + result.msg = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫彇璐х偣"; + return result; + } + if (string.IsNullOrEmpty(End)) + { + result.code = "1"; + result.msg = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫嵏璐х偣"; + return result; + } + if (loc.N_LOCK_STATE != 0) + { + result.code = "1"; + result.msg = $"鍒涘缓浠诲姟澶辫触锛岃捣鐐箋Start}鏈夐攣"; + AddErrorInfo("璐т綅鏈夐攣", result.msg, Source); + return result; + } + //鍒涘缓wcs浠诲姟 + var wcsTask = new WCSTask + { + S_CODE = WCSHelper.GenerateTaskNo(), + S_TYPE = "鍑哄钩搴�, + S_EQ_NO = model.TaskNumber, + S_START_LOC = Start, + S_END_LOC = End, + S_START_WH = loc.S_WH_CODE, + S_START_AREA = loc.S_AREA_CODE, + S_END_WH = Endloc.S_WH_CODE, + S_END_AREA = Endloc.S_AREA_CODE, + N_CNTR_COUNT = 1, + N_SCHEDULE_TYPE = 1, + S_CNTR_CODE = CntrCode, + N_START_LAYER = 1, + N_END_LAYER = 1, + Z_TYPE = n_type - }; - LogHelper.Info("鍒涘缓鍑哄钩搴撲换鍔★細" + JsonConvert.SerializeObject(wcsTask)); - if (WCSHelper.CreateTask(wcsTask)) - { - LogHelper.Info("鍒涘缓浠诲姟鎴愬姛"); - //LocationHelper.LockLoc(Start, 2); - //LocationHelper.LockLoc(End, 1); - } - else - { - result.code = "1"; - result.msg = $"浠诲姟鍒涘缓澶辫触"; - AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source); - return result; - } + }; + LogHelper.Info("鍒涘缓鍑哄钩搴撲换鍔★細" + JsonConvert.SerializeObject(wcsTask)); + if (WCSHelper.CreateTask(wcsTask)) + { + LogHelper.Info("鍒涘缓浠诲姟鎴愬姛"); + //LocationHelper.LockLoc(Start, 2); + //LocationHelper.LockLoc(End, 1); } else { result.code = "1"; - result.msg = "鍒涘缓浠诲姟澶辫触锛屾湭鎵惧埌瀵瑰簲鐨勫彇璐х偣鎴栧嵏璐х偣"; + result.msg = $"浠诲姟鍒涘缓澶辫触"; + AddErrorInfo("浠诲姟鍒涘缓澶辫触", result.msg, Source); return result; } + #endregion return result; @@ -1424,7 +1440,6 @@ #region 鏍规嵁浠撳簱缂栫爜鍒ゆ柇搴撳尯 骞惰绠楀嚭搴撹揣浣� var endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == End).First(); //鏍规嵁浠撳簱 璁$畻搴撳尯 - if (endloc != null) { var whcode = Settings.wareLoc.Where(a => a.AreaCode == endloc.S_WH_CODE).FirstOrDefault(); @@ -1440,7 +1455,6 @@ AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source); return result; } - //璁$畻鍑哄簱鎵樼洏 startloc = LocationHelper.GetLocByAreacode(areacode, model.CarrierType); @@ -1460,7 +1474,14 @@ AddErrorInfo("鏌ユ壘鎵樼洏澶辫触", result.msg, Source); return result; } - + } + else + { + result.code = "1"; + result.msg = $"鍒涘缓绌哄伐瑁呭懠鍙换鍔�=>鏍规嵁搴撳尯锛歿areacode}锛屾墭鐩樼被鍨嬶細{model.CarrierType}鎵句笉鍒板搴旂┖鎵�; + LogHelper.Info($"callfixture:{result.msg}"); + AddErrorInfo("鏌ユ壘鎵樼洏澶辫触", result.msg, Source); + return result; } } @@ -2055,11 +2076,11 @@ /// </summary> /// <param name="model"></param> /// <returns></returns> - internal static Result CreatelevatorTask(Elevator model) + internal static Result CreatelevatorTask(ElevatorModel model) { - Result result = new Result() { code = "200", msg = "鐐瑰鐐逛换鍔″垱寤烘垚鍔� }; - string Source = "MES"; - if (model == null) + Result result = new Result() { code = "200", msg = "鐢垫鎼繍浠诲姟鍒涘缓鎴愬姛" }; + string Source = "WMS"; + if (model.Data == null) { result.code = "1"; result.msg = "鍙傛暟涓簄ull"; @@ -2082,11 +2103,10 @@ if (startloc.N_LOCK_STATE != 0) { result.code = "1"; - result.msg = $"鍒涘缓浠诲姟澶辫触锛岃捣鐐箋startloc.S_CODE}鏈夐攣"; + result.msg = $"鍒涘缓浠诲姟澶辫触锛岃捣鐐箋startloc.S_CODE}鏈夐攣锛岀數姊湁鍏朵粬浠诲姟锛岃绛夊緟鐢垫浠诲姟瀹屾垚"; AddErrorInfo("璐т綅鏈夐攣", result.msg, Source); return result; } - var cntr = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == startloc.S_CODE).First(); if (cntr == null) { @@ -2115,26 +2135,7 @@ //鏍规嵁浠诲姟鏁伴噺鍒ゆ柇閫佸線鍝釜鐢垫 锛堝叿浣撶數姊祦绋嬫牴鎹幇鍦虹數姊暟閲忥級 var elevatorLoc = LocationHelper.GetElevatorLoc(); - //鍒涘缓wcs鍒嗘浠诲姟 var wcsTask = new WCSTask - { - - S_CODE = WCSHelper.GenerateTaskNo(), - S_TYPE = "鐢垫1", - S_EQ_NO = model.Data.task_no, - S_START_LOC = startloc.S_CODE, - S_END_LOC = elevatorLoc.S_CODE, - N_CNTR_COUNT = 1, - S_START_WH = startloc.S_WH_CODE, - S_START_AREA = startloc.S_AREA_CODE, - S_END_WH = elevatorLoc.S_WH_CODE, - S_END_AREA = elevatorLoc.S_AREA_CODE, - N_SCHEDULE_TYPE = 1, - S_CNTR_CODE = cntr.S_CNTR_CODE, - N_END_LAYER = 1, - Z_TYPE = 6 - }; - var wcsTask1 = new WCSTask { S_CODE = WCSHelper.GenerateTaskNo(), S_TYPE = "鐢垫2", @@ -2152,13 +2153,34 @@ Z_TYPE = 6 }; - LogHelper.Info("鍒涘缓浠诲姟锛� + JsonConvert.SerializeObject(wcsTask), "CreateTask"); - if (WCSHelper.CreateTask(wcsTask) && WCSHelper.CreateTask(wcsTask1)) + + if (WCSHelper.CreateTask(wcsTask) ) { + LogHelper.Info("鍒涘缓浠诲姟鎴愬姛"); + var device = Settings.deviceInfos.Where(a => a.TN_Location == startloc.S_CODE).FirstOrDefault(); + var loc = LocationHelper.GetLocByLoc(endloc.S_CODE); + if (device == null) + { + LogHelper.Info($"鏍规嵁浠诲姟璧风偣:{startloc.S_CODE},鏈壘鍒板搴旂數姊厤缃枃浠�); + } + if (loc == null) + { + LogHelper.Info($"鏍规嵁浠诲姟璧风偣:{endloc.S_CODE},鏈壘鍒板搴旇揣浣�); + } + if (device!=null&&loc!=null) + { + int value = 0; + if (loc.N_LAYER == 1) value = 1; + else if (loc.N_LAYER == 2) value = 3; + else if (loc.N_LAYER == 3) value = 5; + ModbusHelper.WriteSingleRegister(40089, value, device.address, 1024); + ModbusHelper.WriteSingleRegister(40102, 1, device.address, 1024); + } + //LocationHelper.LockLoc(startloc.S_CODE, 2); //LocationHelper.LockLoc(endloc.S_CODE, 1); - LogHelper.Info("鍒涘缓浠诲姟鎴愬姛"); + } else { @@ -2182,7 +2204,7 @@ { result.code = "1"; - result.msg = $"鐗╂枡涓绘暟鎹垱寤哄け璐�閿欒淇℃伅锛歿ex}"; + result.msg = $"鐢垫鎼繍浠诲姟鍒涘缓澶辫触 閿欒淇℃伅锛歿ex}"; LogHelper.Error("鐐瑰鐐逛换鍔�Error锛� + ex.ToString(), ex); return result; } @@ -2285,19 +2307,20 @@ if (loccntr != null) { - string cntrcode = loccntr.S_CNTR_CODE; var CntrItem = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == cntrcode).First(); if (CntrItem != null) { - if (LocationHelper.UnBindingLoc(loc, new List<string>() { cntrcode })) - { - LogHelper.Info($"娓呴櫎鎵樼洏璐т綅鍏崇郴鎴愬姛"); - } + //娓呴櫎鎵樼洏鐗╂枡缁戝畾鍏崇郴 + db.Deleteable<CntrItemDetail>().Where(it => it.S_CNTR_CODE.Trim() == CntrItem.S_CNTR_CODE).ExecuteCommand(); } else { LogHelper.Info($"ClearLocCntr 鎵樼洏{cntrcode}鏃犵墿鏂欑粦瀹氬叧绯�); + } + if (LocationHelper.UnBindingLoc(loc, new List<string>() { cntrcode })) + { + LogHelper.Info($"娓呴櫎鎵樼洏璐т綅鍏崇郴鎴愬姛"); } } @@ -2683,6 +2706,21 @@ } } + + //internal static bool CreateCntrLoc(taskData taskData) + //{ + // if ( taskData == null) + // { + // LogHelper.Info($"CreateCntrIteminfo==> 绔嬪簱浠诲姟涓嬪彂鍙傛暟鏈夌┖锛屽垱寤虹墿鏂欐墭鐩樼粦瀹氬叧绯诲け璐�); + // return false; + // } + // else + // { + // LocationHelper.BindingLoc(taskData.pickStation,new List<string>() { taskData.rfid }); + + // } + + //} private static object _lockLocation = new object(); /// <summary> /// 鏍规嵁鎵樼洏缂栫爜锛屾満鍙扮紪鐮侊紝宸ヨ绫诲瀷璁$畻鏈哄彴绾胯竟鍖哄煙 -- Gitblit v1.9.1