From 470d5135f9cb53898e167eeb4c7f74a80bb5f4dc Mon Sep 17 00:00:00 2001 From: cjs <2216046164@qq.com> Date: 星期二, 24 六月 2025 17:30:16 +0800 Subject: [PATCH] 111 --- HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs | 257 +++++++++++++++++++++++++++------------------------ 1 files changed, 137 insertions(+), 120 deletions(-) diff --git a/HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs b/HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs index 84f4f6a..e604cac 100644 --- a/HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs +++ b/HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs @@ -1285,127 +1285,136 @@ if (action) { //鐡剁洊搴撳尯锛屼袱灞傚瘑闆嗗瀷搴撳尯 绌烘弧鍦ㄥ悓涓�釜搴撳尯锛岄渶瑕佸尯鍒嗕笉鍚屾帓 - var areaInfo = Settings.areaInfos.Where(a => a.areaName == areaName && a.enable == 1).First(); - if (areaInfo != null) + var areaInfo = Settings.areaInfos.Where(a => a.areaName.Contains(areaName) && a.enable == 1).OrderBy(a => a.pri).ToList(); + if (areaInfo.Count > 0) { - //搴撳尯璐т綅绾﹀畾锛氬垪鍙疯秺灏忚秺闈犻噷 - LogHelper.Info($"鍏ュ簱绠楁硶01:area锛歿areaInfo.areaCode},itemCode:{itemCode}"); - try + foreach(var it in areaInfo) { - if (result == null) + //搴撳尯璐т綅绾﹀畾锛氬垪鍙疯秺灏忚秺闈犻噷 + LogHelper.Info($"鍏ュ簱绠楁硶01:area锛歿it.areaCode},itemCode:{itemCode}"); + try { - var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM > 0).OrderBy(a => a.N_ROW).OrderByDescending(a => a.N_COL) - .PartitionBy(a => a.N_ROW).Take(1) - .ToList(); - if (locInfo.Count > 0) + if (result == null) { - LogHelper.Info($"鍏ュ簱绠楁硶02:鏌ヨ鍒板彲鍏ヨ揣浣嶇殑鏁伴噺涓猴細{locInfo.Count}"); - foreach (var a in locInfo) + var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == it.areaCode && a.N_CURRENT_NUM > 0).OrderBy(a => a.N_ROW).OrderByDescending(a => a.N_COL) + .PartitionBy(a => a.N_ROW).Take(1) + .ToList(); + if (locInfo.Count > 0) { - LogHelper.Info($"鍏ュ簱绠楁硶03:鏌ヨ璐т綅锛歿a.S_CODE},閿佺姸鎬侊細{a.S_LOCK_STATE}锛屽綋鍓嶆暟閲忥細{a.N_CURRENT_NUM}"); - //鍘绘帀褰撳墠璐т綅鏈夐攣锛屾垨鑰呬负绌烘墭鐨勮揣浣�- if (a.S_LOCK_STATE == "鏃�) + LogHelper.Info($"鍏ュ簱绠楁硶02:鏌ヨ鍒板彲鍏ヨ揣浣嶇殑鏁伴噺涓猴細{locInfo.Count}"); + foreach (var a in locInfo) { - string endItemCode = ""; - var endCntrInfo = db.Queryable<LocCntrRel>().Where(b => b.S_LOC_CODE == a.S_CODE).First(); - if (endCntrInfo != null) + LogHelper.Info($"鍏ュ簱绠楁硶03:鏌ヨ璐т綅锛歿a.S_CODE},閿佺姸鎬侊細{a.S_LOCK_STATE}锛屽綋鍓嶆暟閲忥細{a.N_CURRENT_NUM}"); + //鍘绘帀褰撳墠璐т綅鏈夐攣锛屾垨鑰呬负绌烘墭鐨勮揣浣�+ if (a.S_LOCK_STATE == "鏃�) { - var endItemInfo = db.Queryable<CntrItemRel>().Where(b => b.S_CNTR_CODE == endCntrInfo.S_CNTR_CODE).First(); - if (endItemInfo != null) + string endItemCode = ""; + var endCntrInfo = db.Queryable<LocCntrRel>().Where(b => b.S_LOC_CODE == a.S_CODE).First(); + if (endCntrInfo != null) { - endItemCode = endItemInfo.S_ITEM_CODE; - } - } - else - { - LogHelper.Info($"缁堢偣璐т綅鏈粦瀹氭墭鐩樹俊鎭�); - continue; - } - LogHelper.Info($"鍏ュ簱绠楁硶04:鏌ヨ鍒板綋鍓嶈揣浣嶇粦瀹氱殑鐗╂枡缂栫爜涓�{endItemCode}"); - //鍒ゆ柇鏄惁鍜屽綋鍓嶈揣浣嶇殑鐗╂枡缂栫爜鐩稿悓 - if (itemCode == endItemCode) - { - //鏌ヨ褰撳墠鎺掓槸鍚﹀彲鍏ワ紙鍒ゆ柇鏄槸鍚︽湁鍏ュ簱閿佸拰鍑哄簱閿侊級 - var lockInfo = db.Queryable<Location>().Where(b => b.S_AREA_CODE == a.S_AREA_CODE && b.N_ROW == a.N_ROW && (b.S_LOCK_STATE == "鍏ュ簱閿� || b.S_LOCK_STATE == "鍑哄簱閿�)).First(); - if (lockInfo == null) - { - //褰撳墠鎺掓棤浠诲姟 - if (a.N_CURRENT_NUM < a.N_CAPACITY) result = a; - else + var endItemInfo = db.Queryable<CntrItemRel>().Where(b => b.S_CNTR_CODE == endCntrInfo.S_CNTR_CODE).First(); + if (endItemInfo != null) { - //鏌ヨ鍚庨潰褰撳墠璐т綅鍚庝竴涓�- result = db.Queryable<Location>().Where(b => b.S_AREA_CODE == a.S_AREA_CODE && b.N_ROW > a.N_ROW && b.S_LOCK_STATE == "鏃�).OrderBy(b => b.N_COL).First(); - } - if (result != null) - { - break; + endItemCode = endItemInfo.S_ITEM_CODE; } } else { - LogHelper.Info($"鍏ュ簱绠楁硶05:鏌ヨ鍒板綋鍓嶆帓鏈夐攣锛屾帓鍙凤細{a.N_ROW}"); - + LogHelper.Info($"缁堢偣璐т綅鏈粦瀹氭墭鐩樹俊鎭�); + continue; } - } - } - } - } - else - { - LogHelper.Info($"鍏ュ簱绠楁硶02:鏈煡璇㈠埌鍙叆璐т綅"); - } - if (result == null) - { - //todo 杩橀渶瑕佸垽鏂攣 - #region 鏌ユ壘鎵�湁鏁伴噺鏄┖鐨勬帓 - LogHelper.Info($"鍏ュ簱绠楁硶06:鏃犲彲鐢ㄨ揣浣嶏紝鑾峰彇绌烘帓璐т綅銆�, "WMSAlgoRithm"); - //2.0 绠�寲鏌ヨ鍙煡姣忎竴鎺掔涓�垪 - var list = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode).OrderBy(a => a.N_ROW).OrderBy(a => a.N_COL).PartitionBy(a => a.N_ROW).ToList().Where(a => a.N_CURRENT_NUM == 0).ToList(); - //2.1 閫変竴涓┖鎺�- if (list.Count > 0) - { - LogHelper.Info($"鍏ュ簱绠楁硶06:鏃犲彲鐢ㄨ揣浣嶏紝鑾峰彇绌烘帓璐т綅鏁伴噺涓猴細{list.Count}銆�, "WMSAlgoRithm"); - for (int i = 0; i < list.Count; i++) - { - LogHelper.Info($"鍏ュ簱绠楁硶07:鑾峰彇绌烘帓璐т綅锛氳揣浣嶇紪鐮侊細{list[i].S_CODE.Trim()},褰撳墠鏁伴噺锛歿list[i].N_CURRENT_NUM},鎺掑彿锛歿list[i].N_ROW},搴撳尯缂栫爜锛歿list[i].S_AREA_CODE.Trim()}", "WMSAlgoRithm"); - if (list[i].S_LOCK_STATE.Trim().Contains("鏃�)) - { - //浜屾鏍¢獙褰撳墠鎺掓墍鏈夎揣浣嶉兘鏄┖鐨勶紝闃叉绯荤粺鏁版嵁閿欎贡 - int row = list[i].N_ROW; - string areaCode = list[i].S_AREA_CODE.Trim(); - var lockInfo = db.Queryable<Location>().Where(b => b.S_AREA_CODE == areaCode && b.N_ROW == row && (b.S_LOCK_STATE == "鍏ュ簱閿� || b.S_LOCK_STATE == "鍑哄簱閿�)).First(); - if (lockInfo == null) + LogHelper.Info($"鍏ュ簱绠楁硶04:鏌ヨ鍒板綋鍓嶈揣浣嶇粦瀹氱殑鐗╂枡缂栫爜涓�{endItemCode}"); + //鍒ゆ柇鏄惁鍜屽綋鍓嶈揣浣嶇殑鐗╂枡缂栫爜鐩稿悓 + if (itemCode == endItemCode) { - var locInfo1 = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaCode && a.N_ROW == row).Select(a => new { sum = SqlFunc.AggregateSum(a.N_CURRENT_NUM) }).First(); - if (locInfo1 != null) + //鏌ヨ褰撳墠鎺掓槸鍚﹀彲鍏ワ紙鍒ゆ柇鏄槸鍚︽湁鍏ュ簱閿佸拰鍑哄簱閿侊級 + var lockInfo = db.Queryable<Location>().Where(b => b.S_AREA_CODE == a.S_AREA_CODE && b.N_ROW == a.N_ROW && (b.S_LOCK_STATE == "鍏ュ簱閿� || b.S_LOCK_STATE == "鍑哄簱閿�)).First(); + if (lockInfo == null) { - LogHelper.Info($"{locInfo1.sum},row:{row}"); - if (locInfo1.sum == 0) + //褰撳墠鎺掓棤浠诲姟 + if (a.N_CURRENT_NUM < a.N_CAPACITY) result = a; + else { - //绌烘帓 - result = list[i]; + //鏌ヨ鍚庨潰褰撳墠璐т綅鍚庝竴涓�+ result = db.Queryable<Location>().Where(b => b.S_AREA_CODE == a.S_AREA_CODE && b.N_ROW > a.N_ROW && b.S_LOCK_STATE == "鏃�).OrderBy(b => b.N_COL).First(); + } + if (result != null) + { break; } } - else LogHelper.Info("鏈壘鍒拌鎺�); - } - else - { - LogHelper.Info("璇ユ帓鏈夐攣"); + else + { + LogHelper.Info($"鍏ュ簱绠楁硶05:鏌ヨ鍒板綋鍓嶆帓鏈夐攣锛屾帓鍙凤細{a.N_ROW}"); + + } } } } } - else LogHelper.Info($"鏈幏鍙栧埌绌烘帓锛屽簱鍖虹紪鐮侊細{areaInfo.areaCode}"); - #endregion + else + { + LogHelper.Info($"鍏ュ簱绠楁硶02:鏈煡璇㈠埌鍙叆璐т綅"); + } + if (result == null) + { + //todo 杩橀渶瑕佸垽鏂攣 + #region 鏌ユ壘鎵�湁鏁伴噺鏄┖鐨勬帓 + LogHelper.Info($"鍏ュ簱绠楁硶06:鏃犲彲鐢ㄨ揣浣嶏紝鑾峰彇绌烘帓璐т綅銆�, "WMSAlgoRithm"); + //2.0 绠�寲鏌ヨ鍙煡姣忎竴鎺掔涓�垪 + var list = db.Queryable<Location>().Where(a => a.S_AREA_CODE == it.areaCode).OrderBy(a => a.N_ROW).OrderBy(a => a.N_COL).PartitionBy(a => a.N_ROW).ToList().Where(a => a.N_CURRENT_NUM == 0).ToList(); + //2.1 閫変竴涓┖鎺�+ if (list.Count > 0) + { + LogHelper.Info($"鍏ュ簱绠楁硶06:鏃犲彲鐢ㄨ揣浣嶏紝鑾峰彇绌烘帓璐т綅鏁伴噺涓猴細{list.Count}銆�, "WMSAlgoRithm"); + for (int i = 0; i < list.Count; i++) + { + LogHelper.Info($"鍏ュ簱绠楁硶07:鑾峰彇绌烘帓璐т綅锛氳揣浣嶇紪鐮侊細{list[i].S_CODE.Trim()},褰撳墠鏁伴噺锛歿list[i].N_CURRENT_NUM},鎺掑彿锛歿list[i].N_ROW},搴撳尯缂栫爜锛歿list[i].S_AREA_CODE.Trim()}", "WMSAlgoRithm"); + if (list[i].S_LOCK_STATE.Trim().Contains("鏃�)) + { + //浜屾鏍¢獙褰撳墠鎺掓墍鏈夎揣浣嶉兘鏄┖鐨勶紝闃叉绯荤粺鏁版嵁閿欎贡 + int row = list[i].N_ROW; + string areaCode = list[i].S_AREA_CODE.Trim(); + var lockInfo = db.Queryable<Location>().Where(b => b.S_AREA_CODE == areaCode && b.N_ROW == row && (b.S_LOCK_STATE == "鍏ュ簱閿� || b.S_LOCK_STATE == "鍑哄簱閿�)).First(); + if (lockInfo == null) + { + var locInfo1 = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaCode && a.N_ROW == row).Select(a => new { sum = SqlFunc.AggregateSum(a.N_CURRENT_NUM) }).First(); + if (locInfo1 != null) + { + LogHelper.Info($"{locInfo1.sum},row:{row}"); + if (locInfo1.sum == 0) + { + //绌烘帓 + result = list[i]; + break; + } + } + else LogHelper.Info("鏈壘鍒拌鎺�); + } + else + { + LogHelper.Info("璇ユ帓鏈夐攣"); + } + } + } + } + else LogHelper.Info($"鏈幏鍙栧埌绌烘帓锛屽簱鍖虹紪鐮侊細{it.areaCode}"); + #endregion + } + + if(result != null) + { + break; + } } } + catch (Exception ex) + { + Console.WriteLine("GetLocationIn:" + ex.Message + ex.StackTrace); + LogHelper.Error("GetLocationIn:" + ex.Message, ex); + } } - catch (Exception ex) - { - Console.WriteLine("GetLocationIn:" + ex.Message + ex.StackTrace); - LogHelper.Error("GetLocationIn:" + ex.Message, ex); - } + } else { @@ -1414,47 +1423,55 @@ } else { - LogHelper.Info($"鍑哄簱绠楁硶01:area锛歿areaName},itemCode:{itemCode}"); - var areaInfo = Settings.areaInfos.Where(a => a.areaName == areaName && a.enable == 1).FirstOrDefault(); - if(areaInfo != null) + var areaInfo = Settings.areaInfos.Where(a => a.areaName.Contains(areaName) && a.enable == 1).OrderBy(a => a.pri).ToList(); + if(areaInfo.Count > 0) { - var locList = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM > 0).OrderBy(a => a.N_ROW).OrderByDescending(a => a.N_COL).Take(1).PartitionBy(a => a.N_ROW).Includes(a => a.LocCntrRel).ToList(); - if(locList.Count > 0) + foreach(var it in areaInfo) { - LogHelper.Info($"鍑哄簱绠楁硶02:鏌ヨ鍒板彲鍑鸿揣浣嶆暟閲忥細{locList.Count}"); - foreach (var a in locList) + LogHelper.Info($"鍑哄簱绠楁硶01:area锛歿it.areaName},itemCode:{itemCode}"); + var locList = db.Queryable<Location>().Where(a => a.S_AREA_CODE == it.areaCode && a.N_CURRENT_NUM > 0).OrderBy(a => a.N_ROW).OrderByDescending(a => a.N_COL).Take(1).PartitionBy(a => a.N_ROW).Includes(a => a.LocCntrRel).ToList(); + if (locList.Count > 0) { - LogHelper.Info($"鍑哄簱绠楁硶03:鏌ヨ璐т綅锛歿a.S_CODE},閿佺姸鎬侊細{a.S_LOCK_STATE}"); - if (a.S_LOCK_STATE == "鏃�) + LogHelper.Info($"鍑哄簱绠楁硶02:鏌ヨ鍒板彲鍑鸿揣浣嶆暟閲忥細{locList.Count}"); + foreach (var a in locList) { - var cntrInfo = db.Queryable<LocCntrRel>().Where(b => b.S_LOC_CODE == a.S_CODE).First(); - if(cntrInfo != null) + LogHelper.Info($"鍑哄簱绠楁硶03:鏌ヨ璐т綅锛歿a.S_CODE},閿佺姸鎬侊細{a.S_LOCK_STATE}"); + if (a.S_LOCK_STATE == "鏃�) { - LogHelper.Info($"鍑哄簱绠楁硶04:褰撳墠璐т綅缁戝畾鐨勬墭鐩樼爜涓猴細{cntrInfo.S_CNTR_CODE}"); - string endItemCode = ""; - var itemInfo = db.Queryable<CntrItemRel>().Where(b => b.S_CNTR_CODE == cntrInfo.S_CNTR_CODE).First(); - if(itemInfo != null && itemInfo.S_ITEM_CODE == itemCode) + var cntrInfo = db.Queryable<LocCntrRel>().Where(b => b.S_LOC_CODE == a.S_CODE).First(); + if (cntrInfo != null) { - endItemCode = itemInfo.S_ITEM_CODE; - } - if(endItemCode == itemCode) - { - //鍒ゆ柇褰撳墠鎺掓湁鏃犻攣 - var lockInfo = db.Queryable<Location>().Where(b => b.S_AREA_CODE == areaInfo.areaCode && b.N_ROW == a.N_ROW && (b.S_LOCK_STATE == "鍏ュ簱閿� || b.S_LOCK_STATE == "鍑哄簱閿�)).First(); - if (lockInfo == null) + LogHelper.Info($"鍑哄簱绠楁硶04:褰撳墠璐т綅缁戝畾鐨勬墭鐩樼爜涓猴細{cntrInfo.S_CNTR_CODE}"); + string endItemCode = ""; + var itemInfo = db.Queryable<CntrItemRel>().Where(b => b.S_CNTR_CODE == cntrInfo.S_CNTR_CODE).First(); + if (itemInfo != null && itemInfo.S_ITEM_CODE == itemCode) { - result = a; - break; + endItemCode = itemInfo.S_ITEM_CODE; } - else + if (endItemCode == itemCode) { - LogHelper.Info($"鍑哄簱绠楁硶05:褰撳墠鎺掓湁閿侊紝璐т綅鍙凤細{lockInfo.S_CODE}"); + //鍒ゆ柇褰撳墠鎺掓湁鏃犻攣 + var lockInfo = db.Queryable<Location>().Where(b => b.S_AREA_CODE == it.areaCode && b.N_ROW == a.N_ROW && (b.S_LOCK_STATE == "鍏ュ簱閿� || b.S_LOCK_STATE == "鍑哄簱閿�)).First(); + if (lockInfo == null) + { + result = a; + break; + } + else + { + LogHelper.Info($"鍑哄簱绠楁硶05:褰撳墠鎺掓湁閿侊紝璐т綅鍙凤細{lockInfo.S_CODE}"); + } } } } } } + if(result != null) + { + break; + } } + } else { -- Gitblit v1.9.1