From f3ad86fe50a0d2ba81b203517184264eea7bf0c0 Mon Sep 17 00:00:00 2001 From: hudong <Administrator@PC-20250329JZUF> Date: 星期四, 05 六月 2025 17:04:44 +0800 Subject: [PATCH] 入库审核逻辑更改 代码修改 --- process/TaskProcess.cs | 257 ++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 201 insertions(+), 56 deletions(-) diff --git a/process/TaskProcess.cs b/process/TaskProcess.cs index 2df9515..a777b0d 100644 --- a/process/TaskProcess.cs +++ b/process/TaskProcess.cs @@ -14,6 +14,7 @@ using System.Threading.Tasks; using static HH.WCS.Mobox3.pinggao.models.SapRoot.WcReturnRoot; using static HH.WCS.Mobox3.pinggao.api.OtherModel; +using NLog.Fluent; namespace HH.WCS.Mobox3.pinggao.process { @@ -80,14 +81,65 @@ /// <param name="forkliftNo">杞﹀彿</param> /// <param name="extData">閲嶉噺</param> /// <param name="Ext1">楂樺害</param> - internal static void OperateReq(WCSTask TN_Task, int state, string forkliftNo, string extData,string Ext1) + internal static void OperateReq(WCSTask TN_Task, int state, string forkliftNo, string extData) { if (state == 1002)//淇″彿 { - LogHelper.Info($"绉伴噸鍒嗛厤鍏ュ簱缁堢偣璐т綅楂樺害閲嶉噺{extData}锛岄珮搴Ext1}"); + + } + else if (state == 2000)//淇″彿 + { var db = new SqlHelper<object>().GetInstance(); - var WMStask= db.Queryable<WMSTask>().Where(s=>s.S_CODE==TN_Task.S_OP_CODE).First(); - if (WMStask==null) + TN_Task.S_EQ_TASK_CODE = extData;//楂樺害 + db.Updateable<WCSTask>(TN_Task).UpdateColumns(a => new { a.S_EQ_TASK_CODE }).ExecuteCommand(); + db.CommitTran(); + if (!string.IsNullOrEmpty(TN_Task.S_STATE_PRE) && !string.IsNullOrEmpty(TN_Task.S_EQ_TASK_CODE)) + { + if (TN_Task.S_START_LOC == TN_Task.S_END_LOC) + { + weight(TN_Task); + } + } + + + + } + else if (state == 2001)//淇″彿 + { + var db = new SqlHelper<object>().GetInstance(); + TN_Task.S_STATE_PRE = extData;//楂樺害 + db.Updateable<WCSTask>(TN_Task).UpdateColumns(a => new { a.S_STATE_PRE }).ExecuteCommand(); + db.CommitTran(); + if (!string.IsNullOrEmpty(TN_Task.S_STATE_PRE) && !string.IsNullOrEmpty(TN_Task.S_EQ_TASK_CODE)) + { + if (TN_Task.S_START_LOC == TN_Task.S_END_LOC) + { + weight(TN_Task); + } + } + + } + + if (state == 1103) + { + //澶ч搧妗嗗弶璧颁互鍚庨�鐭ワ紝鎴戜滑瑕侀�鐭ヨ緭閫佺嚎 + } + } + + + + internal static void weight(WCSTask TN_Task) + { + + + if (!string.IsNullOrEmpty(TN_Task.S_STATE_PRE) && !string.IsNullOrEmpty(TN_Task.S_EQ_TASK_CODE)) + { + string extData = TN_Task.S_STATE_PRE; + string Ext1 = TN_Task.S_EQ_TASK_CODE; + LogHelper.Info($"绉伴噸鍒嗛厤鍏ュ簱缁堢偣璐т綅楂樺害閲嶉噺{extData}锛岄珮搴Ext1},瀹瑰櫒{TN_Task.S_CNTR_CODE}"); + var db = new SqlHelper<object>().GetInstance(); + var WMStask = db.Queryable<WMSTask>().Where(s => s.S_CODE == TN_Task.S_OP_CODE).First(); + if (WMStask == null) { LogHelper.Info($"鏈壘鍒版浠诲姟瀵瑰簲鐨勪綔涓�); } @@ -101,25 +153,30 @@ //鑾峰彇闆嗗悎 var locklist = db.Queryable<Location>(); - + if (TN_Task.S_CNTR_CODE.Substring(0, 2) == "TP")//鎵樼洏 { var endlist = locklist - .Where(it => it.N_CURRENT_NUM < it.N_CAPACITY && it.N_LAYER < 3 && it.S_AREA_CODE == "HJQ") + .Where(it => it.N_CURRENT_NUM < it.N_CAPACITY && it.N_LAYER < 3 && it.N_LOCK_STATE == 0 && it.S_AREA_CODE == "HJQ") .OrderBy(it => it.N_COL) .PartitionBy(it => it.N_ROW) .PartitionBy(it => it.N_LAYER) .Take(1) .ToList(); + if (TN_Task.N_ERR == 2)//鍓嶇Щ杞�+ { + + endlist = endlist.Where(s => s.N_LAYER < 7).ToList(); + } foreach (var item in endlist) { LogHelper.Info($"閲嶉噺{decimal.Parse(extData)}"); //澶т簬800kg - if (decimal.Parse(extData) > 800) + if (decimal.Parse(extData) > 1) { - LogHelper.Info($"楂樺害{decimal.Parse(Ext1)}"); + LogHelper.Info($"楂樺害{Ext1}"); //楂樺害澶т簬1050mm 鍙斁鍦ㄧ涓�眰 - if (decimal.Parse(Ext1) <= 1050) + if (decimal.Parse(Ext1) <= 3) { var lockinfo = locklist.Where(it => it.N_LOCK_STATE != 0 && it.N_LOCK_STATE != 0 && it.N_ROW == item.N_ROW && it.N_LAYER == 1).First(); @@ -128,38 +185,41 @@ result = item; break; } - else { + else + { LogHelper.Info($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�); - throw new Exception($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�); + //throw new Exception($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�); } } else { LogHelper.Info($"楂樺害{decimal.Parse(Ext1)}杩囬珮 鑱旂郴浜哄伐澶勭悊"); throw new Exception($"楂樺害{decimal.Parse(Ext1)}杩囬珮 鑱旂郴浜哄伐澶勭悊"); - + } } else//涓嶈秴閲�鍗�涓嶈秴杩�00kg { //楂樺害<450mm 2-9灞�- if (decimal.Parse(Ext1) < 450) + if (decimal.Parse(Ext1) < 2) { + LogHelper.Info($"楂樺害<450mm 2-9灞�); var lockinfo = locklist.Where(it => it.N_LOCK_STATE != 0 && it.N_ROW == item.N_ROW - && it.N_LAYER == 2).First(); + && it.N_LAYER == 2).First(); if (lockinfo == null) { result = item; break; } - else { + else + { LogHelper.Info($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�); - throw new Exception($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�); + //throw new Exception($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�); } } - else if (decimal.Parse(Ext1) >= 450 && decimal.Parse(Ext1) < 1050) + else if (decimal.Parse(Ext1) >= 2 && decimal.Parse(Ext1) < 4) { var lockinfo = locklist.Where(it => it.N_LOCK_STATE != 0 && it.N_ROW == item.N_ROW && it.N_LAYER >= 1 && it.N_LAYER <= 2).First(); @@ -175,14 +235,14 @@ else { LogHelper.Info($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�); - throw new Exception($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�); + //throw new Exception($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�); } } else { LogHelper.Info($"鎵樼洏楂樺害{decimal.Parse(Ext1)}杩囬珮 鑱旂郴浜哄伐澶勭悊"); throw new Exception($"鎵樼洏楂樺害{decimal.Parse(Ext1)}杩囬珮 鑱旂郴浜哄伐澶勭悊"); - + } } } @@ -191,24 +251,28 @@ { //瀹瑰櫒涓烘枡绠�鍒欐斁鍒�-9灞� var endlist = locklist - .Where(it => it.N_CURRENT_NUM < it.N_CAPACITY && it.N_LAYER >=3&&it.S_AREA_CODE== "HJQ") + .Where(it => it.N_CURRENT_NUM < it.N_CAPACITY && it.N_LAYER >= 3 && it.N_LOCK_STATE == 0 && it.S_AREA_CODE == "HJQ") .OrderBy(it => it.N_COL) .PartitionBy(it => it.N_ROW) .PartitionBy(it => it.N_LAYER) .Take(1) .ToList(); + if (TN_Task.N_ERR == 2)//鍓嶇Щ杞�+ { + endlist = endlist.Where(s => s.N_LAYER < 7).ToList(); + } foreach (var item in endlist) { LogHelper.Info($"閲嶉噺{decimal.Parse(extData)}"); //澶т簬800kg - if (decimal.Parse(extData) > 800) + if (decimal.Parse(extData) > 1) { LogHelper.Info($"鏂欑閲嶉噺瓒呰繃800kg"); throw new Exception($"鏂欑閲嶉噺瓒呰繃800kg"); } else { - if (decimal.Parse(Ext1) < 1050) + if (decimal.Parse(Ext1) < 4) { var lockinfo = locklist.Where(it => it.N_LOCK_STATE != 0 && it.N_LOCK_STATE != 0 && it.S_AREA_CODE == item.S_AREA_CODE && it.N_ROW == item.N_ROW && it.N_LAYER >= 3 && it.N_LAYER <= 9).First(); @@ -220,7 +284,8 @@ break; } - else { + else + { LogHelper.Info($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�); throw new Exception($"璐т綅{lockinfo.S_CODE} 鏈夐攣 褰撴帓灞備笉鍙娇鐢�); } @@ -235,41 +300,68 @@ } - if (result==null) + if (result == null) { LogHelper.Info($"灏忚溅鍥炶皟鏈壘鍒板彲鐢ㄥ簱浣�); throw new Exception($"灏忚溅鍥炶皟鏈壘鍒板彲鐢ㄥ簱浣�); } + + //var lcrList = db.Queryable<LocCntrRel>().Includes(a => a.Container).Where(a => a.S_LOC_CODE == TN_Task.S_CNTR_CODE).ToList(); + //if (lcrList.Count == 0) { TN_Task.S_END_LOC = result.S_CODE; TN_Task.S_END_AREA = result.S_AREA_CODE; TN_Task.S_END_WH = result.S_WH_CODE; - db.Updateable<WCSTask>(TN_Task).UpdateColumns(a => new { a.S_END_LOC, a.S_END_AREA, a.S_END_WH }).ExecuteCommand(); WMStask.S_END_LOC = result.S_CODE; WMStask.S_END_AREA = result.S_AREA_CODE; WMStask.S_END_WH = result.S_WH_CODE; db.Updateable<WMSTask>(WMStask).UpdateColumns(a => new { a.S_END_LOC, a.S_END_AREA, a.S_END_WH }).ExecuteCommand(); + //} - //璇锋眰鍗歌揣锛�+ var S_AGV_SITE = ""; + if (TN_Task.N_ERR == 1)//鍓嶇Щ杞�+ { + //鍓嶇Щ杞�+ S_AGV_SITE = LocationHelper.GetAgvSite(TN_Task.S_END_LOC); + } + else //鍫嗗灈杞�+ { + + //鍫嗗灈杞�+ S_AGV_SITE = db.Queryable<TN_Location_Ext>().Where(a => a.S_LOC_CODE == TN_Task.S_END_LOC).First()?.S_AGV_SITE; + } var dic = new Dictionary<string, string>(); dic.Add("No", TN_Task.S_CODE); dic.Add("ParamNo", "2"); - dic.Add("Param1", TN_Task.S_END_LOC); - + dic.Add("Param1", S_AGV_SITE); + //dic.Add("Pri", TN_Task.N_PRIORITY.ToString()); + //dic.Add("No", TN_Task.S_CODE.Trim()); + //dic.Add("From", TN_Task.S_START_LOC); + //dic.Add("To", TN_Task.S_END_LOC); + //dic.Add("Func", "0"); + //dic.Add("Data", "512"); + //dic.Add("FRow", "0"); var res = NDC.ChangeOrder(dic); - LogHelper.Info($"淇敼缁堢偣璐т綅"+ JsonConvert.SerializeObject(res)); + LogHelper.Info($"淇敼缁堢偣璐т綅" + JsonConvert.SerializeObject(res)); if (res.Res.ErrCode != -1) { var dics = new Dictionary<string, string>(); dics.Add("No", TN_Task.S_CODE); dics.Add("ParamNo", "6"); dics.Add("Param1", "2"); - var ss= NDC.ChangeOrder(dics); + var ss = NDC.ChangeOrder(dics); LogHelper.Info($"灏忚溅鍓嶅線鏂板簱浣� + JsonConvert.SerializeObject(ss)); + + + //if (lcrList.Count()==0) + //{ LocationHelper.BindingLoc(TN_Task.S_END_LOC, TN_Task.S_CNTR_CODE.Split(',').ToList()); + LocationHelper.LockLoc(TN_Task.S_END_LOC, 1); + //} } + db.CommitTran(); } catch (Exception) @@ -277,14 +369,10 @@ db.RollbackTran(); throw; } + } - - } - if (state == 1103) - { - //澶ч搧妗嗗弶璧颁互鍚庨�鐭ワ紝鎴戜滑瑕侀�鐭ヨ緭閫佺嚎 - } } + internal static void UpdateAgvNo(WCSTask mst, string forkliftNo) { @@ -479,6 +567,26 @@ } + + public static bool SendCd() { + + + + var result=false; + + var dic = new Dictionary<string, string>(); + var dic1 = new Dictionary<string, string>(); + + dic.Add("ExtDeviceNo", "1"); + + //鍒ゆ柇 + var res = NDC.OrderAdd(99, dic, dic1); + if (res != null && (res.Res.ErrCode == 0 || res.Res.ErrCode == 50009)) + { + result = true; + } + return result; + } /// <summary> /// 鎺ㄩ�浠诲姟 /// </summary> @@ -490,7 +598,7 @@ var taskType = mst.S_TYPE.Trim(); try { - LogHelper.Info($"鎺ㄩ�浠诲姟{ mst.S_CODE}"); + LogHelper.Info($"鎺ㄩ�浠诲姟{mst.S_CODE}"); Console.WriteLine("鎺ㄩ�浠诲姟", mst.S_CODE); //鍓嶇Щ杞� var startlocs = LocationHelper.GetAgvSite(mst.S_START_LOC); @@ -499,18 +607,18 @@ var db = new SqlHelper<object>().GetInstance(); var dstart = db.Queryable<TN_Location_Ext>().Where(a => a.S_LOC_CODE == mst.S_START_LOC).First()?.S_AGV_SITE; var dend = db.Queryable<TN_Location_Ext>().Where(a => a.S_LOC_CODE == mst.S_END_LOC).First()?.S_AGV_SITE; - LogHelper.Info($"鑾峰彇搴撲綅{mst.S_START_LOC}{ mst.S_END_LOC}||{mst.N_B_STATE}"); + LogHelper.Info($"鑾峰彇搴撲綅{mst.S_START_LOC}{mst.S_END_LOC}||{mst.N_B_STATE}"); LogHelper.Info($"绔欑偣鏁版嵁淇℃伅{dstart}/{dend}||{startlocs}/{endlocs}"); if (mst.N_B_STATE == 0) { //鍫嗗灈杞﹀幓绔欑偣琛ㄦ壘 if (mst.S_SCHEDULE_TYPE == "NDC") { - + var startloc = LocationHelper.GetLoc(mst.S_START_LOC); var endloc = LocationHelper.GetLoc(mst.S_END_LOC); LogHelper.Info($"鑾峰彇绔欑偣{startloc.N_LAYER}"); - if (startloc.N_LAYER > 7 || endloc.N_LAYER > 7)//澶т簬涓冨眰 鎵炬湁鏃�鍓嶇Щ杞︾殑浠诲姟 鏈�涓嶆帹 鏃犳帹閫�+ if (mst.S_TYPE.Contains("鍏ュ簱")) { var task = WCSHelper.GetWaitingTaskGoList();//鏌ヨ鏄惁鏈夊墠绉昏溅姝e湪鎵ц鐨勪换鍔� if (task.Count() == 0) @@ -519,29 +627,66 @@ start = startlocs; end = endlocs; } - } - else //灏忎簬 - { - LogHelper.Info($"灏忎簬7"); - var task = WCSHelper.GetWaitingTaskGoBackList();//鏌ヨ鏄惁鏈夊爢鍨涜溅姝e湪鎵ц鐨勪换鍔°� - LogHelper.Info($"count{task.Count()}"); - if (task.Count() == 0) - { //鍫嗗灈杞�鍘�绔欑偣琛ㄥ幓鏌�- mst.N_ERR = 2; - start = dstart; - end = dend; - } else { - var task1 = WCSHelper.GetWaitingTaskGoList();///鏌ヨ鏄惁鏈夊墠绉昏溅姝e湪鎵ц鐨勪换鍔�- LogHelper.Info($"鏌ヨ鏄惁鏈夊墠绉昏溅姝e湪鎵ц鐨勪换鍔ount{task1.Count()}"); - if (task1.Count() == 0) + var task12 = WCSHelper.GetWaitingTaskGoBackList();//鏌ヨ鏄惁鏈夊爢鍨涜溅姝e湪鎵ц鐨勪换鍔°� + LogHelper.Info($"count{task12.Count()}"); + if (task12.Count() == 0) + { //鍫嗗灈杞�鍘�绔欑偣琛ㄥ幓鏌�+ mst.N_ERR = 2; + start = dstart; + end = dend; + } + else + { + var task1 = WCSHelper.GetWaitingTaskGoList();///鏌ヨ鏄惁鏈夊墠绉昏溅姝e湪鎵ц鐨勪换鍔�+ LogHelper.Info($"鏌ヨ鏄惁鏈夊墠绉昏溅姝e湪鎵ц鐨勪换鍔ount{task1.Count()}"); + if (task1.Count() == 0) + { + mst.N_ERR = 1; + start = startlocs; + end = endlocs; + } + } + } + + } + else + { + if (startloc.N_LAYER > 7 || endloc.N_LAYER > 7)//澶т簬涓冨眰 鎵炬湁鏃�鍓嶇Щ杞︾殑浠诲姟 鏈�涓嶆帹 鏃犳帹閫�+ { + var task = WCSHelper.GetWaitingTaskGoList();//鏌ヨ鏄惁鏈夊墠绉昏溅姝e湪鎵ц鐨勪换鍔�+ if (task.Count() == 0) { mst.N_ERR = 1; start = startlocs; end = endlocs; } } + else //灏忎簬 + { + LogHelper.Info($"灏忎簬7"); + var task = WCSHelper.GetWaitingTaskGoBackList();//鏌ヨ鏄惁鏈夊爢鍨涜溅姝e湪鎵ц鐨勪换鍔°� + LogHelper.Info($"count{task.Count()}"); + if (task.Count() == 0) + { //鍫嗗灈杞�鍘�绔欑偣琛ㄥ幓鏌�+ mst.N_ERR = 2; + start = dstart; + end = dend; + } + else + { + var task1 = WCSHelper.GetWaitingTaskGoList();///鏌ヨ鏄惁鏈夊墠绉昏溅姝e湪鎵ц鐨勪换鍔�+ LogHelper.Info($"鏌ヨ鏄惁鏈夊墠绉昏溅姝e湪鎵ц鐨勪换鍔ount{task1.Count()}"); + if (task1.Count() == 0) + { + mst.N_ERR = 1; + start = startlocs; + end = endlocs; + } + } + } + } LogHelper.Info($"绔欑偣{start}/{end}"); if (!string.IsNullOrEmpty(start) && !string.IsNullOrEmpty(end)) @@ -555,7 +700,7 @@ dic1.Add("Func", "0"); if (mst.S_TYPE.Contains("鍏ュ簱")) { - dic1.Add("Data", "0x200"); + dic1.Add("Data", "512"); } else { -- Gitblit v1.9.1