From cee2bc19f3e1b0cf528affb23e3819bf94672eea Mon Sep 17 00:00:00 2001 From: lss <2538410689@qq.com> Date: 星期五, 27 六月 2025 00:35:21 +0800 Subject: [PATCH] 优化 --- HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs | 340 ++++++++++++++++++++++++++++---------------------------- 1 files changed, 168 insertions(+), 172 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 ac7cbf3..bd476cd 100644 --- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs +++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs @@ -693,63 +693,23 @@ try { string[] state = new string[] { "鍙栨秷", "澶辫触", "閿欒", "瀹屾垚" }; - if (model.type == "1") + //鎵惧埌浠诲姟 + var task = db.Queryable<WCSTask>().Where(a => a.S_EQ_NO.Trim() == model.task_no && !state.Contains(a.S_B_STATE)).First(); + if (task != null) { - //鎵惧埌浠诲姟 - var task = db.Queryable<WCSTask>().Where(a => a.S_START_LOC.Trim() == model.loc && !state.Contains(a.S_B_STATE)).ToList(); - if (task.Count > 0) + if (model.type == "1" || model.type == "2") { - foreach (var item in task) - { - var taskAction = db.Queryable<TaskAction>().Where(a => a.S_TASK_CODE == item.S_CODE).OrderByDescending(a => a.T_CREATE).First(); - if (taskAction.N_ACTION_CODE == 1101) - { - NDCApi.ChangeOrderParam(item.S_CODE.Trim(), 6, "1"); - return result; - } - result.code = "1"; - result.msg = $"鏍规嵁涓嬪彂璐т綅{model.loc}鏈壘鍒板搴旂敵璇峰彇璐х姸鎬佷换鍔�; - AddErrorInfo("鏈壘鍒颁换鍔�, result.msg, "", model.task_no); - return result; - } + NDCApi.ChangeOrderParam(task.S_CODE.Trim(), 6, "1"); } - else - { - result.code = "1"; - result.msg = $"鏍规嵁涓嬪彂璐т綅{model.loc}鏈壘鍒板搴斾换鍔�; - AddErrorInfo("鏈壘鍒颁换鍔�, result.msg, "", model.task_no); - return result; - } - } - else if (model.type == "2") - { - //鎵惧埌浠诲姟 - var task = db.Queryable<WCSTask>().Where(a => a.S_END_LOC.Trim() == model.loc && !state.Contains(a.S_B_STATE)).ToList(); - if (task.Count > 0) - { - foreach (var item in task) - { - var taskAction = db.Queryable<TaskAction>().Where(a => a.S_TASK_CODE == item.S_CODE).OrderByDescending(a => a.T_CREATE).First(); - if (taskAction.N_ACTION_CODE == 1103) - { - NDCApi.ChangeOrderParam(item.S_CODE.Trim(), 6, "1"); - return result; - } - } - result.code = "1"; - result.msg = $"鏍规嵁涓嬪彂璐т綅{model.loc}鏈壘鍒板搴旂敵璇峰嵏璐х姸鎬佷换鍔�; - AddErrorInfo("鏈壘鍒颁换鍔�, result.msg, "", model.task_no); - return result; - } - else - { - result.code = "1"; - result.msg = $"鏍规嵁涓嬪彂璐т綅{model.loc}鏈壘鍒板搴斾换鍔�; - AddErrorInfo("鏈壘鍒颁换鍔�, result.msg, "", model.task_no); - return result; - } - } + } + else + { + result.code = "1"; + result.msg = $"鏍规嵁涓嬪彂浠诲姟鍙穥model.task_no}鏈壘鍒板搴斾换鍔�; + AddErrorInfo("鏈壘鍒颁换鍔�, result.msg, "", model.task_no); + return result; + } return result; } catch (Exception ex) @@ -920,6 +880,7 @@ return result; } + loc = StorageCompute(itemcode, areacode); if (loc != null) @@ -1064,6 +1025,10 @@ { areacode = whcode.PMK; cntrType = "PM"; + } + else if (model.PartNumber.StartsWith("32")) + { + areacode = whcode.ZCW2; } else { @@ -1230,37 +1195,49 @@ { lock (_lockEmpty) { - #region 鍒ゆ柇鎵樼洏缁戝畾璐т綅鏄惁鍜屼笅鍙戠粦瀹氳捣鐐圭浉鍚�- //var CntrLoc = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).First(); - //if (CntrLoc != null) - //{ - // if (CntrLoc.S_LOC_CODE != Start) - // { - // LogHelper.Info($"ItemBack锛氬垱寤轰换鍔″け璐ワ紝鎵樼洏:{model.Rfid}缁戝畾浣嶇疆涓嶆槸璧风偣锛歿Start}"); - // result.code = "1"; - // result.msg = $"鍒涘缓浠诲姟澶辫触锛屾墭鐩�{model.Rfid}缁戝畾浣嶇疆涓嶆槸璧风偣锛歿Start}"; - // AddErrorInfo("鎵樼洏缁戝畾浣嶇疆涓嶅悓", result.msg); - // return result; - // } - //} - //else - //{ - // LogHelper.Info($"ItemBack锛氬垱寤轰换鍔″け璐ワ紝鎵樼洏:{model.Rfid}鏈壘鍒扮粦瀹氳揣浣�); - // result.code = "1"; - // result.msg = $"鍒涘缓浠诲姟澶辫触锛屾墭鐩�{model.Rfid}鏈壘鍒扮粦瀹氳揣浣�; - // AddErrorInfo("鏌ユ壘鎵樼洏璐т綅澶辫触", result.msg); - // return result; - //} - #endregion + #region 鏍规嵁璐т綅妤煎眰鍒ゆ柇锛�妤煎幓寰�彔鐩樹綅 鍏朵粬鐨勫洖搴� var startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == Start).First(); if (startloc != null) { - if (startloc.N_LAYER == 3) + if (!string.IsNullOrEmpty(startloc.S_NOTE1)) { //鍙犵洏璐т綅璁$畻鍙犵洏璐т綅 - var dploc = db.Queryable<Location>().Where(a => a.S_NOTE.Trim() == "鍙犵洏" && a.N_LAYER == startloc.N_LAYER && a.S_WH_CODE.Trim() == startloc.S_WH_CODE && a.C_ENABLE == "Y").ToList(); + // var dploc = db.Queryable<Location>().Where(a => a.S_NOTE.Trim() == "鍙犵洏" && a.N_LAYER == startloc.N_LAYER && a.S_WH_CODE.Trim() == startloc.S_WH_CODE && a.C_ENABLE == "Y").ToList(); + var dploc = db.Queryable<Location>().Where(a => a.S_NOTE1.Trim() == startloc.S_NOTE1 + "鍙犵洏" && a.S_WH_CODE.Trim() == startloc.S_WH_CODE).ToList(); + if (dploc.Count > 0) + { + // LogHelper.Info($"鑾峰彇鍙犵洏璐т綅:{JsonConvert.SerializeObject(dploc)}"); + loc = dploc.FindAll(a => a.N_LOCK_STATE == 0 && a.N_CURRENT_NUM < 6).OrderByDescending(a => a.N_CURRENT_NUM).FirstOrDefault(); + if (loc == null) + { + LogHelper.Info($"{startloc.S_NOTE1}鍙犵洏浣嶏紝閮藉凡缁忔湁閿佹垨鑰呭凡缁忓彔婊★紝璇锋鏌ヨ揣浣嶇姸鎬�); + result.code = "1"; + result.msg = $"{startloc.S_NOTE1}鍙犵洏璐т綅涓嶅彲鐢紝缁堢偣搴撳尯娌℃湁鍙敤璐т綅锛岃妫�煡閿佺姸鎬佸拰鏁伴噺"; + AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source); + return result; + } + else + { + endlayer = loc.N_CURRENT_NUM + 1; + } + } + else + { + // LogHelper.Info($"鏍规嵁璐т綅妤煎眰锛歿startloc.N_LAYER}锛屼粨搴撶紪鐮侊細{startloc.S_WH_CODE}锛岃揣浣嶅娉細鍙犵洏锛屾湭鎵惧埌鍙犵洏璐т綅"); + result.code = "1"; + result.msg = $"{startloc.S_NOTE1}鍙犵洏璐т綅涓嶅彲鐢紝鏈壘鍒板彲鍙犵洏璐т綅"; + LogHelper.Info($"鏍规嵁璐т綅澶囨敞锛歿startloc.S_NOTE1}鍙犵洏锛岃揣浣嶄粨搴�{startloc.S_WH_CODE}锛屾壘涓嶅埌鍙犵洏璐т綅"); + AddErrorInfo("鏌ユ壘璐т綅澶辫触", result.msg, Source); + return result; + } + } + else if (startloc.N_LAYER == 3) + { + //鍙犵洏璐т綅璁$畻鍙犵洏璐т綅 + // var dploc = db.Queryable<Location>().Where(a => a.S_NOTE.Trim() == "鍙犵洏" && a.N_LAYER == startloc.N_LAYER && a.S_WH_CODE.Trim() == startloc.S_WH_CODE && a.C_ENABLE == "Y").ToList(); + var dploc = db.Queryable<Location>().Where(a => a.S_NOTE.Trim() == "鍙犵洏" && a.N_LAYER == startloc.N_LAYER && a.S_WH_CODE.Trim() == startloc.S_WH_CODE).ToList(); if (dploc.Count > 0) { // LogHelper.Info($"鑾峰彇鍙犵洏璐т綅:{JsonConvert.SerializeObject(dploc)}"); @@ -1291,7 +1268,8 @@ else if (startloc.S_NOTE == "PB") { //鎵惧潡鑳跺爢鍙犲尯 - var KjDploc = db.Queryable<Location>().Where(a => a.S_NOTE.Trim() == "鐗囪兌鍫嗗彔浣� && a.S_WH_CODE.Trim() == startloc.S_WH_CODE && a.C_ENABLE == "Y").ToList(); + // var KjDploc = db.Queryable<Location>().Where(a => a.S_NOTE.Trim() == "鐗囪兌鍫嗗彔浣� && a.S_WH_CODE.Trim() == startloc.S_WH_CODE && a.C_ENABLE == "Y").ToList(); + var KjDploc = db.Queryable<Location>().Where(a => a.S_NOTE.Trim() == "鐗囪兌鍫嗗彔浣� && a.S_WH_CODE.Trim() == startloc.S_WH_CODE).ToList(); if (KjDploc.Count > 0) { loc = KjDploc.FindAll(a => a.N_LOCK_STATE == 0 && a.N_CURRENT_NUM < 6).OrderByDescending(a => a.N_CURRENT_NUM).FirstOrDefault(); @@ -1343,15 +1321,14 @@ loc = StorageCompute(itemcode, areacode); if (loc == null) { - loc = emptyRow(areacode); - if (loc == null) - { - result.code = "1"; - result.msg = $"搴撳尯锛歿areacode}娌℃湁鍙敤璐т綅"; - LogHelper.Info($" {result.msg}"); - AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source); - // LogHelper.Info($"搴撳尯锛歿areacode}娌℃湁鍙敤璐т綅"); - } + + result.code = "1"; + result.msg = $"搴撳尯锛歿areacode}娌℃湁鍙敤璐т綅"; + LogHelper.Info($" {result.msg}"); + AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg, Source); + return result; + // LogHelper.Info($"搴撳尯锛歿areacode}娌℃湁鍙敤璐т綅"); + } //else //{ @@ -1376,7 +1353,7 @@ } #endregion - #region 鍒涘缓浠诲姟 + #region 鍒涘缓浠诲姟 if (startloc != null && loc != null) { if (startloc.N_LOCK_STATE != 0 && loc.N_LOCK_STATE != 0) @@ -1386,6 +1363,7 @@ AddErrorInfo("璐т綅鏈夐攣", result.msg); return result; } + LogHelper.Info("鍒涘缓绌烘墭鍥炲簱浠诲姟,缁堢偣璐т綅涓虹┖锛� + JsonConvert.SerializeObject(loc)); //鍒涘缓wcs浠诲姟 var wcsTask = new WCSTask { @@ -1413,6 +1391,12 @@ // 绌烘墭鍥炲簱鍒ゆ柇鎵樼洏鏈夋棤缁戝畾鐗╂枡淇℃伅 濡傛灉鏈夊垯鍒犻櫎 var itemcntr = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).First(); if (itemcntr != null) { db.Deleteable<CntrItemDetail>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).ExecuteCommand(); } + var container = db.Queryable<Container>().Where(a => a.S_CODE.Trim() == model.Rfid).First(); + if (container == null) + { + container = new Container { S_CODE = model.Rfid }; + db.Insertable<Container>(container).ExecuteCommand(); + } LogHelper.Info("鍒涘缓浠诲姟鎴愬姛"); } else @@ -1478,11 +1462,24 @@ { lock (_lockcallfixture) { + + #region 鏍规嵁浠撳簱缂栫爜鍒ゆ柇搴撳尯 骞惰绠楀嚭搴撹揣浣� var endloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == End).First(); //鏍规嵁浠撳簱 璁$畻搴撳尯 if (endloc != null) { + #region 鏍¢獙缁堢偣鏄惁鍙� + if (endloc.N_CURRENT_NUM >= 1 || endloc.N_LOCK_STATE != 0) + { + result.code = "1"; + result.msg = $"缁堢偣璐т綅锛歿End}涓嶅彲鐢�; + LogHelper.Info($"Putin==> {result.msg}"); + AddErrorInfo("璐т綅涓嶅彲鐢�, result.msg, Source); + return result; + } + #endregion + var whcode = Settings.wareLoc.Where(a => a.AreaCode == endloc.S_WH_CODE).FirstOrDefault(); if (whcode != null) { @@ -1640,34 +1637,7 @@ { lock (_lockItemBack) { - #region 浣欐枡杩斿洖鏍规嵁鎵樼洏鎵惧嚭搴撲换鍔�- //浣欐枡杩斿洖鏍规嵁鎵樼洏鎵惧嚭搴撲换鍔�- //msts = WCSHelper.GetTaskBycntrcode(model.Rfid); - //if (msts.Count() > 0) - //{ - // msts.RemoveAll(a => string.IsNullOrEmpty(a.S_CNTR_CODE)); - // mst = msts.OrderByDescending(a => a.T_CREATE).FirstOrDefault(); - //} - //if (mst != null) - //{ - // areacode = mst.S_START_AREA; - //} - //else - //{ - // result.code = "1"; - // result.msg = $"鍒涘缓浠诲姟澶辫触锛屾牴鎹墭鐩樼紪鐮亄model.Rfid}鏈壘鍒版墭鐩樺嚭搴撲换鍔�; - // AddErrorInfo("鏌ユ壘浠诲姟澶辫触", result.msg); - // return result; - //} - //if (string.IsNullOrEmpty(areacode)) - //{ - // LogHelper.Info($"鍒涘缓浠诲姟澶辫触锛屾牴鎹墭鐩樼紪鐮亄model.Rfid}鎵惧埌鍑哄簱浠诲姟{mst.S_CODE}鐨勮捣鐐瑰簱鍖轰负绌�); - // result.code = "1"; - // result.msg = $"鍒涘缓浠诲姟澶辫触锛屾牴鎹墭鐩樼紪鐮亄model.Rfid}鎵惧埌鍑哄簱浠诲姟{mst.S_CODE}鐨勮捣鐐瑰簱鍖轰负绌�; - // AddErrorInfo("鏌ユ壘搴撳尯澶辫触", result.msg); - // return result; - //} - #endregion + #region 鍒ゆ柇鎵樼洏缁戝畾璐т綅鏄惁鍜屼笅鍙戠粦瀹氳捣鐐圭浉鍚� var CntrLoc = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE.Trim() == model.Rfid).First(); @@ -1715,17 +1685,18 @@ // loc = emptyRow(areacode); //} } + else if (model.PartNumber.StartsWith("32")) + { + areacode = whcode.ZCW2; + } else { - - if (model.PartNumber.StartsWith("3")) { areacode = whcode.ZCW; } else { - result.code = "1"; result.msg = $"鍒涘缓浠诲姟澶辫触锛岀墿鏂欏彿{model.PartNumber}涓嶅睘浜庤瀹氱墿鏂�; LogHelper.Info($"ItemBack锛歿result.msg}"); @@ -1870,9 +1841,6 @@ } #endregion } - - - return result; } @@ -2134,7 +2102,8 @@ var startloc = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == model.Data.start_loc_code).First(); - var endloc = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == model.Data.end_loc_code && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y").First(); + // var endloc = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == model.Data.end_loc_code && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y").First(); + var endloc = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == model.Data.end_loc_code && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0).First(); //鍒ゆ柇妤煎眰鏄惁鐩哥瓑锛屽鏋滀笉鐩稿悓闇�鐢熸垚鍒嗘浠诲姟杩涜鐢垫璋冪敤 @@ -2389,8 +2358,8 @@ } } - - + + return result; } @@ -2586,53 +2555,24 @@ /// <returns></returns> internal static Location StorageCompute(string itemcode, string areacode) { + //Location result = db.Queryable<Location>().Where(a => a.N_CURRENT_NUM == 0 && a.S_AREA_CODE.Trim() == areacode && a.N_LOCK_STATE == 0).First(); var db = new SqlHelper<object>().GetInstance(); - Location result = db.Queryable<Location>().Where(a => a.N_CURRENT_NUM == 0 && a.S_AREA_CODE.Trim() == areacode && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y").First(); - //鏌ヨ鎵�湁鏈夋墭鐩樼殑鎺掓病閿佺殑鎺�- // var list = db.Queryable<Location>().Where(a => a.N_CURRENT_NUM > 0 && a.S_AREA_CODE.Trim() == areacode && a.N_LOCK_STATE == 0).OrderByDescending(a => a.N_COL).Take(1).PartitionBy(a => a.N_ROW).ToList(); - // if (list.Count > 0) - //{ - // for (int i = 0; i < list.Count; i++) - // { - // LogHelper.Info($"鏈夋墭鐩樻帓鍙穥list[i].N_ROW}锛岀墿鏂欑紪鐮亄itemcode},搴撳尯{areacode}"); - // //鏌ヨ璐т綅缁戝畾鎵樼洏 - // var cntr = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == list[i].S_CODE).First(); - // if (cntr != null) - // { - // //鏌ヨ鎵樼洏鐗╂枡淇℃伅 - // var iteminfo = ContainerHelper.GetCntrItemRel(cntr.S_CNTR_CODE).FirstOrDefault(); + Location result = null; + // 867C567A-183C-413B-9891-15D8F6DE1620 - // if (string.IsNullOrEmpty(itemcode))//绌烘墭鍏ュ簱 - // { - // if (iteminfo == null) - // { - // //鐗╂枡鐩稿悓鍏ヨ揣浣嶅悗涓�綅璐т綅 - // result = db.Queryable<Location>().OrderBy(a => a.N_COL).Where(a => a.S_AREA_CODE.Trim() == areacode && a.N_ROW == list[i].N_ROW && a.N_COL > list[i].N_COL && a.N_LOCK_STATE == 0 && a.N_CURRENT_NUM == 0).First(); - // } - // } - // else//婊℃嫋鍏ュ簱 - // { - // if (iteminfo != null) - // { - // if (iteminfo.S_ITEM_CODE == itemcode) - // { - // //鐗╂枡鐩稿悓鍏ヨ揣浣嶅悗涓�綅璐т綅 - // result = db.Queryable<Location>().OrderBy(a => a.N_COL).Where(a => a.S_AREA_CODE.Trim() == areacode && a.N_ROW == list[i].N_ROW && a.N_COL > list[i].N_COL && a.N_LOCK_STATE == 0 && a.N_CURRENT_NUM == 0).First(); + // var aaa = db.Deleteable<Location>(a => a.S_ID == "867C567A-183C-413B-9891-15D8F6DE1620").ExecuteCommand(); + // var aaa = db.Deleteable<Location>(a => a.S_ID.Trim() == "867C567A-183C-413B-9891-15D8F6DE1620").ExecuteCommand(); + LogHelper.Info($"鏂规硶锛歋torageCompute"); + var list = db.Queryable<Location>().Where(a => a.N_CURRENT_NUM == 0 && a.S_AREA_CODE == areacode && a.N_LOCK_STATE == 0 && a.N_ROW > 0 && a.N_COL > 0).ToList(); + LogHelper.Info($"鍒涘缓绌烘墭鍥炲簱浠诲姟,缁堢偣璐т綅闆嗗悎锛氭牴鎹簱鍖虹紪鐮侊細{areacode}" + list.Count); + //list.RemoveAll(a => string.IsNullOrEmpty(a.S_CODE.Trim()) || a.S_CODE == null || string.IsNullOrWhiteSpace(a.S_CODE.Trim())); + list = list.FindAll(a => a.N_ROW > 0 && a.N_COL > 0); + LogHelper.Info("鍒涘缓绌烘墭鍥炲簱浠诲姟,缁堢偣璐т綅闆嗗悎杩囨护锛� + list.Count); + if (list.Count > 0) + { + result = FindEndcolByLocList(list); + } - // } - // } - // } - // if (result != null) - // { - // return result; - // } - // } - // else - // { - // LogHelper.Info($"鏍规嵁璐х墿缂栫爜{list[i].S_CODE}鏈壘鍒版墭鐩樿揣浣嶇粦瀹氬叧绯�); - // } - // } - //} return result; } @@ -2784,7 +2724,7 @@ lock (_lockLocation) { - var loc = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == jtcode.Trim() && a.S_NOTE == cntrType && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y").First(); + var loc = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == jtcode.Trim() && a.S_NOTE == cntrType && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃�).First(); if (loc != null) { End = loc; @@ -2851,13 +2791,16 @@ var rows = locations.Select(a => a.N_ROW).Distinct().ToList(); for (int i = 0; i < rows.Count; i++) { + var rowList = locations.Where(r => r.N_ROW == rows[i]).ToList(); + LogHelper.Info($"褰撳墠鎺�{rows[i]},鑾峰緱璐т綅{JsonConvert.SerializeObject(rowList)}"); if (rowList.Count(a => a.N_CURRENT_NUM == 0) > 0) { Location other = null; //褰撳墠鎺掓病鏈夐攣骞朵笖鏈夌┖浣嶇疆 - //鍏堟壘婊′綅锛岀劧鍚庡悗闈竴灞傝涔堟槸绌猴紝瑕佷箞涓嶅瓨鍦�- other = rowList.OrderBy(a => a.N_COL).Where(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y").FirstOrDefault(); + + // other = rowList.OrderBy(a => a.N_COL).Where(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y").FirstOrDefault(); + other = rowList.OrderBy(a => a.N_COL).Where(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && !string.IsNullOrEmpty(a.S_CODE.Trim()) && !string.IsNullOrWhiteSpace(a.S_CODE.Trim())).FirstOrDefault(); //if (full == null) //{ // //娌℃湁婊′綅锛岄偅灏辨壘鏈�皬鐨勭┖浣�@@ -2873,6 +2816,59 @@ // other = db.Queryable<Location>().OrderBy(a => a.N_LAYER).Where(a => (string.IsNullOrEmpty(a.C_ENABLE) || a.C_ENABLE.Trim() != "绂佺敤") && a.S_AREA_CODE == other.S_AREA_CODE && a.N_ROW == other.N_ROW && a.N_COL > other.N_COL).First(); // //LogHelper.Info($"绂佺敤閫夋嫨鍚庝竴涓揣浣峽result}", "鎴愬搧"); //} + + if (other != null) + { + if (other.S_CODE != null && !string.IsNullOrEmpty(other.S_CODE)) + { + end = other; + break; + } + } + } + } + return end; + } + catch (Exception) + { + + throw; + } + + } + + /// <summary> + /// 鎵剧粓鐐圭┖璐т綅璁$畻鎺掗攣 + /// </summary> + /// <param name="locations"></param> + /// <returns></returns> + internal static Location FindEndcolByLocListLock(List<Location> locations) + { + try + { + var db = new SqlHelper<object>().GetInstance(); + Location end = null; + //鏍规嵁缁堢偣璐т綅鎵剧┖闂茶揣浣�+ var rows = locations.Select(a => a.N_ROW).Distinct().ToList(); + for (int i = 0; i < rows.Count; i++) + { + var rowList = locations.Where(r => r.N_ROW == rows[i]).ToList(); + if (rowList.Count(a => a.S_LOCK_STATE != "鏃�) == 0 && rowList.Count(a => a.N_CURRENT_NUM == 0) > 0) + { + Location other = null; + //褰撳墠鎺掓病鏈夐攣骞朵笖鏈夌┖浣嶇疆 + //鍏堟壘婊′綅锛岀劧鍚庡悗闈竴浣嶈涔堟槸绌猴紝瑕佷箞涓嶅瓨鍦�+ var full = rowList.OrderByDescending(a => a.N_COL).Where(a => a.N_CURRENT_NUM == 1).FirstOrDefault(); + if (full == null) + { + //娌℃湁婊′綅锛岄偅灏辨壘鏈�皬鐨勭┖浣�+ other = rowList.OrderBy(a => a.N_COL).FirstOrDefault(); + } + else + { + other = rowList.OrderBy(a => a.N_COL).Where(a => a.N_COL > full.N_COL).FirstOrDefault(); + } + if (other != null) { end = other; -- Gitblit v1.9.1