From 2d2342157638cab98a4c59b0c687808cc2f98ea1 Mon Sep 17 00:00:00 2001 From: 杨张扬 <634643841@qq.com> Date: 星期五, 25 七月 2025 17:24:57 +0800 Subject: [PATCH] 增加空托堆叠和空托入货架的新逻辑,增加拆盘入库和回炉胶和废料的逻辑 --- models/TN_CG_Detail.cs | 4 Program.cs | 6 wms/LocationHelper.cs | 6 core/Monitor.cs | 132 ++++++++++++++++++++- models/TN_TN_SPE.cs | 5 api/ApiHelper.cs | 139 +++++++--------------- api/ApiModel.cs | 15 ++ process/TaskProcess.cs | 6 core/WCSCore.cs | 6 9 files changed, 203 insertions(+), 116 deletions(-) diff --git a/Program.cs b/Program.cs index 1e3de45..4cd32be 100644 --- a/Program.cs +++ b/Program.cs @@ -138,17 +138,19 @@ tasks.Add(GetTask(Monitor.CheckCntAndBoard));//鍚屾 TN_Container 鍧囪瀹炴椂鏄剧ず - tasks.Add(GetTask(Monitor.CheckNoOkCg));//妫�祴婊℃墭缂撳瓨搴撳尯涓嶅悎鏍肩殑鐗╁搧锛屾弧鎵樺嚭搴撳妫�+ tasks.Add(GetTask(Monitor.CheckNoOkCg));//妫�祴婊℃墭缂撳瓨搴撳尯涓嶅悎鏍肩殑鐗╁搧锛屾弧鎵樺嚭搴撳埌澶嶆鍖猴紝鏇夸唬浜嗘媶鐩樺嚭搴� //鏍规嵁S7/Modbus鍗忚鍒ゆ柇杈撻�绾跨殑淇″彿 鍘熸潗鏂欎骇绾垮簱鍖�>婊℃墭缂撳瓨搴撳尯锛岀┖鎵樼紦瀛樺簱鍖�>鍘熸潗鏂欎骇绾垮簱鍖� tasks.Add(GetTask(Monitor.CheckS7Devices)); tasks.Add(GetTask(Monitor.SynchronizationEquipPro));//鍚屾 TN_EquipProDetail TN_InventoryM 骞存湀鏃ラ噸閲忚〃 - tasks.Add(GetTask(Monitor.FullOutTime));//婊℃墭杩囨湡鍑哄簱 杩囨湡鍚堟牸鍥炲簱锛岃繃鏈熸鍝佸洖鐐�+ //tasks.Add(GetTask(Monitor.FullOutTime));//婊℃墭杩囨湡鍑哄簱 杩囨湡鍚堟牸鍥炲簱锛岃繃鏈熸鍝佸洖鐐� tasks.Add(GetTask(Monitor.CGOkCheck));// 鍦ㄥ妫�尯妫�祴鐗╁搧鍚堟牸锛屽悎鏍肩殑鐗╁搧鑷姩鍥炲簱 + tasks.Add(GetTask(Monitor.CGNGCheck));// 鍦ㄥ妫�尯妫�祴鐗╁搧鍥炵倝鑳惰繕鏄姤搴�+ //tasks.Add(GetTask(Monitor.XBChekcFull));//绾胯竟婊℃墭璐т綅鑷姩瑙g粦 Task.WaitAll(tasks.ToArray()); diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs index 0cb6082..ef52fbb 100644 --- a/api/ApiHelper.cs +++ b/api/ApiHelper.cs @@ -202,10 +202,10 @@ && o.C_ENABLE == "Y" && o.N_CURRENT_NUM == 0). OrderBy(o => o.T_MODIFY, OrderByType.Asc).First();//鏌ヨ鍚堥�鐨勭粓鐐硅揣浣� } - else if (model.cgState == 6)//涓�骇鏂欎簩绾ф枡鍥炲簱 + else if (model.cgState == 6)//E绾ф枡浜岀骇鏂欏洖搴� { cG_Detail.N_ITEM_STATE = 6; - cG_Detail.S_ITEM_STATE = "涓�骇鏂�; + cG_Detail.S_ITEM_STATE = "E绾ф枡"; endLoc = db.Queryable<TN_Location>(). Where(o => o.S_AREA_CODE == Settings.Areas[2] && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃� @@ -213,7 +213,7 @@ && o.C_ENABLE == "Y" && o.N_CURRENT_NUM == 0). OrderBy(o => o.T_MODIFY, OrderByType.Asc).First();//鏌ヨ鍚堥�鐨勭粓鐐硅揣浣� } - else if (model.cgState == 7)//涓�骇鏂欎簩绾ф枡鍥炲簱 + else if (model.cgState == 7)//E绾ф枡浜岀骇鏂欏洖搴� { cG_Detail.N_ITEM_STATE = 7; cG_Detail.S_ITEM_STATE = "浜岀骇鏂�; @@ -227,7 +227,7 @@ else { result.resultCode = 6; - result.resultMsg = $"鐗╂枡鐘舵�鍙兘涓�鍚堟牸1寰呮2涓嶅悎鏍硷紝涓嬬嚎鍗冲緟妫�紝3杩囨湡锛�鎶�湳鍒ゅ畾锛�娣峰悎锛�涓�骇鏂欍�7浜岀骇鏂欙紝濡傛灉涓哄叾浠栧�锛屽垯涓嶅鐞�; + result.resultMsg = $"鐗╂枡鐘舵�鍙兘涓�鍚堟牸1寰呮2涓嶅悎鏍硷紝涓嬬嚎鍗冲緟妫�紝3杩囨湡锛�鎶�湳鍒ゅ畾锛�娣峰悎锛�E绾ф枡銆�浜岀骇鏂欙紝濡傛灉涓哄叾浠栧�锛屽垯涓嶅鐞�; LogHelper.Info(result.resultMsg); return result; } @@ -421,7 +421,7 @@ if ( db.Updateable<TN_Location>(startLoc).UpdateColumns(it => new { it.N_CURRENT_NUM, it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand() == 1 && db.Updateable<TN_Location>(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE }).ExecuteCommand() == 1 && - db.Insertable<TN_Loc_Container>(locCntList).ExecuteCommand() == 1 && + db.Insertable<TN_Loc_Container>(locCntList).ExecuteCommand() == locCntList.Count && db.Insertable<TN_Task>(task).ExecuteCommand() == 1 ) { @@ -1828,7 +1828,7 @@ if (model.new_IsOK == model.old_IsOK) { result.resultCode = 19; - result.resultMsg = $"浜哄伐鎷嗙洏鍏ュ簱锛岀墿鏂欓渶瑕佷竴涓緟妫�竴涓笉鍚堟牸"; + result.resultMsg = $"浜哄伐鎷嗙洏鍏ュ簱锛岀墿鏂欓渶瑕佷竴涓悎鏍�鍜�涓�釜涓嶅悎鏍硷紙鍥炵倝鑳舵垨搴熸枡锛�; LogHelper.Info(result.resultMsg); return result; } @@ -1857,6 +1857,8 @@ LogHelper.Info(result.resultMsg); return result; } + cG_old_Detail.S_ITEM_SPEC = model.old_Spec; + cG_old_Detail.S_SPE = model.old_Spec; var startLoc_Old = db.Queryable<TN_Location>(). First(o => o.S_CODE == model.old_StartLoc && o.N_CURRENT_NUM == 0 && o.S_AREA_CODE == Settings.Areas[5] && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃�); @@ -1920,13 +1922,12 @@ { S_CNTR_CODE = model.new_CntIds, S_BATCH_NO = cG_old_Detail.S_BATCH_NO, - S_ITEM_SPEC = cG_old_Detail.S_ITEM_SPEC, - S_SPE = cG_old_Detail.S_SPE, + S_ITEM_SPEC = model.new_Spec, + S_SPE = model.new_Spec, S_ITEM_STATE = LocationHelper.GetStrByOk(model.new_IsOK), N_ITEM_STATE = model.new_IsOK, S_CAR_CODE = cG_old_Detail.S_CAR_CODE, T_MODIFY = System.DateTime.Now, - //C_ITEM_MERGE = model.new_CntIds, S_ITEM_CODE = cG_old_Detail.S_ITEM_CODE, S_Separate_ID = cG_old_Detail.S_Separate_ID }; @@ -1936,7 +1937,7 @@ if (db.Queryable<TN_Task>().Count(a => a.N_B_STATE < 3 && a.S_END_LOC == weightPoint) > 2) { result.resultCode = 11; - result.resultMsg = $"缁堢偣绉伴噸璐т綅{weightPoint}鐨勬鍦ㄦ墽琛岀殑浠诲姟鏁伴噺澶т簬2"; + result.resultMsg = $"缁堢偣绉伴噸璐т綅{weightPoint}鐨勬鍦ㄦ墽琛岀殑浠诲姟鏁伴噺澶т簬2锛岀箒蹇欙紝璇风瓑寰�; LogHelper.Info(result.resultMsg); return result; } @@ -1945,11 +1946,6 @@ First(o => o.S_AREA_CODE == Settings.Areas[9] && o.S_CODE == weightPoint);//鏌ヨ鍚堥�鐨勭粓鐐硅揣浣嶏紝鍘荤О閲� - var endLoc_NG = db.Queryable<TN_Location>(). - Where(o => o.S_AREA_CODE == Settings.Areas[8] - && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃� - && SqlFunc.Subqueryable<TN_Loc_Container>().Where(b => b.S_LOC_CODE == o.S_CODE).NotAny()//涓嶈兘鏈夎揣 - && o.N_CURRENT_NUM == 0).First();//鏌ヨ鍚堥�鐨勭粓鐐硅揣浣� if (endLoc_Ok == null) { @@ -1959,53 +1955,48 @@ return result; } - if (endLoc_NG == null) - { - result.resultCode = 16; - result.resultMsg = $"涓嶅悎鏍肩殑鐗╂枡鏈壘鍒板悎閫傜殑鎷嗙洏涓嶅悎鏍煎尯缁堢偣璐т綅{Settings.Areas[8]}"; - LogHelper.Info(result.resultMsg); - return result; - } - var taskLog1_Old = $"鏃у鍣ㄥ彿{model.old_CntId}锛屾棫瀹瑰櫒鍙风殑璧风偣{startLoc_Old.S_CODE}锛岀粓鐐箋endLoc_Ok.S_CODE}"; - var taskLog_New = $"鏂板鍣ㄥ彿{model.new_CntIds}锛屾柊瀹瑰櫒鍙风殑璧风偣{model.new_StartLoc}锛岀粓鐐箋endLoc_NG.S_CODE}"; + var taskLog_New = $"鏂板鍣ㄥ彿{model.new_CntIds}锛屾柊瀹瑰櫒鍙风殑璧风偣{model.new_StartLoc}"; List<CreateTasks> modesCreateTask = new List<CreateTasks>(); - var newTaskCreate = new CreateTasks() + if (model.new_IsOK == 0) { - taskNo = WCSHelper.GenerateTaskNo(), - from = model.new_StartLoc, - fromArea = startLoc_New.S_AREA_CODE, - to = (model.new_IsOK == 2) ? endLoc_NG.S_CODE : endLoc_Ok.S_CODE, - toArea = (model.new_IsOK == 2) ? endLoc_NG.S_AREA_CODE : endLoc_Ok.S_AREA_CODE, - taskType = (model.new_IsOK == 2) ? "浜哄伐鎷嗙洏鍥炰笉鍚堟牸鍖� : "浜哄伐鎷嗙洏鍥炲簱", - pri = 3, - cntrInfo = model.new_CntIds, - spec = cG_new_Detail_Ins.S_SPE, - }; - - modesCreateTask.Add(newTaskCreate); - - var oldTaskCreate = new CreateTasks() + var newTaskCreate = new CreateTasks() + { + taskNo = WCSHelper.GenerateTaskNo(), + from = model.new_StartLoc, + fromArea = startLoc_New.S_AREA_CODE, + to = endLoc_Ok.S_CODE, + toArea = endLoc_Ok.S_AREA_CODE, + taskType = "浜哄伐鎷嗙洏鍚堟牸鍥炲簱", + pri = 3, + cntrInfo = model.new_CntIds, + spec = cG_new_Detail_Ins.S_SPE, + }; + modesCreateTask.Add(newTaskCreate); + } + else if (model.old_IsOK == 1) { - taskNo = WCSHelper.GenerateTaskNo(), - from = startLoc_Old.S_CODE, - fromArea = startLoc_Old.S_AREA_CODE, - to = (model.old_IsOK == 2) ? endLoc_NG.S_CODE : endLoc_Ok.S_CODE, - toArea = (model.old_IsOK == 2) ? endLoc_NG.S_AREA_CODE : endLoc_Ok.S_AREA_CODE, - taskType = (model.old_IsOK == 2) ? "浜哄伐鎷嗙洏鍥炰笉鍚堟牸鍖� : "浜哄伐鎷嗙洏鍥炲簱", - pri = 3, - cntrInfo = model.old_CntId, - spec = cG_old_Detail.S_SPE, - }; - modesCreateTask.Add(oldTaskCreate); + var newTaskCreate = new CreateTasks() + { + taskNo = WCSHelper.GenerateTaskNo(), + from = model.old_StartLoc, + fromArea = startLoc_Old.S_AREA_CODE, + to = endLoc_Ok.S_CODE, + toArea = endLoc_Ok.S_AREA_CODE, + taskType = "浜哄伐鎷嗙洏鍚堟牸鍥炲簱", + pri = 3, + cntrInfo = model.old_CntId, + spec = cG_old_Detail.S_SPE, + }; + modesCreateTask.Add(newTaskCreate); + } startLoc_Old.N_LOCK_STATE = 2; startLoc_Old.S_LOCK_STATE = "鍑哄簱閿�; startLoc_Old.N_CURRENT_NUM = 1; - startLoc_New.N_LOCK_STATE = 2; startLoc_New.S_LOCK_STATE = "鍑哄簱閿�; @@ -2041,49 +2032,11 @@ if (WCSHelper.CreateTask(modesCreateTask))//鍒涘缓鎼�浠诲姟锛岃捣鐐圭粓鐐瑰鍣� { tran.CommitTran(); - LogHelper.Info($"鐢熸垚浜哄伐鎷嗙洏鍏ュ簱浠诲姟鎴愬姛锛� + taskLog_New + taskLog1_Old); + LogHelper.Info($"鐢熸垚浜哄伐鎷嗙洏鍚堟牸鍥炲簱浠诲姟鎴愬姛锛� + taskLog_New + taskLog1_Old); Task task1 = Task.Run(() => { - WMSHelper.InsertOpInfo(model.staff, "浜哄伐鎷嗙洏鍏ュ簱", model.new_CntIds + "," + model.old_CntId); - }); - - Task task2 = Task.Run(() => - { - if (model.old_IsOK == 1) - { - var target = new TN_RemeltDetail() - { - TASKNO = oldTaskCreate.taskNo, - CNTCODE = cG_old_Detail.S_CNTR_CODE, - STARTLOC = startLoc_Old.S_CODE, - LOGINNAME = model.staff, - ITEMCODE = cG_old_Detail.S_ITEM_CODE, - SPEC = cG_old_Detail.S_SPE, - CARCODE = cG_old_Detail.S_CAR_CODE, - WEIGHT = cG_old_Detail.F_QTY, - REMELTTIME = DateTime.Now, - SHIFT = model.shift, - }; - SpecHelper.InsertRemeltDetail(target); - } - if (model.new_IsOK == 1) - { - var target = new TN_RemeltDetail() - { - TASKNO = newTaskCreate.taskNo, - CNTCODE = cG_new_Detail_Ins.S_CNTR_CODE, - STARTLOC = startLoc_New.S_CODE, - LOGINNAME = model.staff, - ITEMCODE = cG_new_Detail_Ins.S_ITEM_CODE, - SPEC = cG_new_Detail_Ins.S_SPE, - CARCODE = cG_new_Detail_Ins.S_CAR_CODE, - WEIGHT = cG_new_Detail_Ins.F_QTY, - REMELTTIME = DateTime.Now, - SHIFT = model.shift, - }; - SpecHelper.InsertRemeltDetail(target); - } + WMSHelper.InsertOpInfo(model.staff, "浜哄伐鎷嗙洏鍚堟牸鍥炲簱", model.new_CntIds + "," + model.old_CntId); }); Task task27 = Task.Run(() => @@ -2126,7 +2079,7 @@ { tran.RollbackTran(); result.resultCode = 17; - result.resultMsg = $"鐢熸垚浜哄伐鎷嗙洏鍏ュ簱浠诲姟澶辫触锛� + taskLog_New + taskLog1_Old; + result.resultMsg = $"鐢熸垚浜哄伐鎷嗙洏鍚堟牸鍥炲簱浠诲姟澶辫触锛� + taskLog_New + taskLog1_Old; LogHelper.Info(result.resultMsg); return result; } @@ -2135,7 +2088,7 @@ { tran.RollbackTran(); result.resultCode = 18; - result.resultMsg = $"鐢熸垚浜哄伐鎷嗙洏鍏ュ簱浠诲姟澶辫触锛� + taskLog_New + taskLog1_Old; + result.resultMsg = $"鐢熸垚浜哄伐鎷嗙洏鍚堟牸鍥炲簱浠诲姟澶辫触锛� + taskLog_New + taskLog1_Old; LogHelper.Info(result.resultMsg); return result; } diff --git a/api/ApiModel.cs b/api/ApiModel.cs index 14f623e..94dd817 100644 --- a/api/ApiModel.cs +++ b/api/ApiModel.cs @@ -431,18 +431,27 @@ { public string old_CntId { get; set; }//鏃у鍣↖D锛岃鎷嗙殑 public string old_StartLoc { get; set; }//鏃у鍣ㄧ殑璧风偣 - /// <summary> - /// 0鍚堟牸1寰呮2涓嶅悎鏍硷紝涓嬬嚎鍗冲緟妫�紝3杩囨湡锛�鎶�湳鍒ゅ畾锛�娣峰悎锛�涓�骇鏂欍�7浜岀骇鏂�+ /// 0鍚堟牸1寰呮2涓嶅悎鏍硷紝涓嬬嚎鍗冲緟妫�紝3杩囨湡锛�鎶�湳鍒ゅ畾锛�娣峰悎锛�E绾ф枡銆�浜岀骇鏂欍�8鍥炵倝鑳躲�9搴熸枡 /// </summary> public int old_IsOK { get; set; }//鏃у鍣↖D锛屾棫瀹瑰櫒鐨勮揣鍝佺殑 + + public string old_Spec { get; set; }//鏃у鍣ㄧ殑璐у搧鐨勮鏍�+ + public string old_CarCode { get; set; }//鏃у鍣ㄧ殑璐у搧鐨勮溅鍙�+ public string new_CntIds { get; set; }//鎷嗗悗鐨勬柊瀹瑰櫒ID public string new_StartLoc { get; set; }//鏂板鍣↖D璧风偣 /// <summary> - /// 0鍚堟牸1寰呮2涓嶅悎鏍硷紝涓嬬嚎鍗冲緟妫�紝3杩囨湡锛�鎶�湳鍒ゅ畾锛�娣峰悎锛�涓�骇鏂欍�7浜岀骇鏂�+ /// 0鍚堟牸1寰呮2涓嶅悎鏍硷紝涓嬬嚎鍗冲緟妫�紝3杩囨湡锛�鎶�湳鍒ゅ畾锛�娣峰悎锛�E绾ф枡銆�浜岀骇鏂欍�8鍥炵倝鑳躲�9搴熸枡 /// </summary> public int new_IsOK { get; set; }//鏂板鍣↖D鐨勮揣鍝佺殑 + + public string new_Spec { get; set; }//鏂板鍣ㄧ殑璐у搧鐨勮鏍�+ + public string new_CarCode { get; set; }//鏂板鍣ㄧ殑璐у搧鐨勮溅鍙�+ public string staff { get; set; } = "None";//鎿嶄綔浜� public string shift { get; set; } = "None";//鐝 } diff --git a/core/Monitor.cs b/core/Monitor.cs index 42f7747..5669c96 100644 --- a/core/Monitor.cs +++ b/core/Monitor.cs @@ -469,22 +469,38 @@ var startLoc = db.Queryable<TN_Location>() .LeftJoin<TN_Loc_Container>((o, i) => o.S_CODE == i.S_LOC_CODE) .LeftJoin<TN_CG_Detail>((o, i, s) => i.S_CNTR_CODE == s.S_CNTR_CODE) - .Where((o, i, s) => s.N_ITEM_STATE == 0 && s.S_ITEM_STATE == "鍚堟牸" + .Where((o, i, s) => + s.N_ITEM_STATE == 6 && s.S_ITEM_STATE == "E绾ф枡" && o.S_AREA_CODE == Settings.Areas[7] && o.N_CURRENT_NUM > 0 && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃�).First(); + var typename = "澶嶆E绾ф枡鑷姩鍥炲簱"; + + if (startLoc == null) + { + startLoc = db.Queryable<TN_Location>() + .LeftJoin<TN_Loc_Container>((o, i) => o.S_CODE == i.S_LOC_CODE) + .LeftJoin<TN_CG_Detail>((o, i, s) => i.S_CNTR_CODE == s.S_CNTR_CODE) + .Where((o, i, s) => + s.N_ITEM_STATE == 0 && s.S_ITEM_STATE == "鍚堟牸" + && o.S_AREA_CODE == Settings.Areas[7] && o.N_CURRENT_NUM > 0 + && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃�).First(); + + typename = "澶嶆鍚堟牸鑷姩鍥炲簱"; + } + + if (startLoc== null) { - LogHelper.Info("澶嶆鍖烘病鏈夊悎鏍肩殑鐗╁搧锛屾棤闇�嚜鍔ㄨ繑鍥�); + LogHelper.Info("澶嶆鍖烘病鏈夊悎鏍肩殑鎴朎绾ф枡鐨勭墿鍝侊紝鏃犻渶鑷姩杩斿洖"); return; } var endLoc = db.Queryable<TN_Location>() - .OrderBy(a => a.N_LAYER, OrderByType.Asc) - .First(a => a.S_AREA_CODE == Settings.Areas[1] + .Where(a => a.S_AREA_CODE == Settings.Areas[1] && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && SqlFunc.Subqueryable<TN_Loc_Container>().Where(b => b.S_LOC_CODE == a.S_CODE).NotAny()//涓嶈兘鏈夎揣 - ); + ).OrderBy(a => a.N_LAYER, OrderByType.Asc).First(); if (endLoc == null) { @@ -496,15 +512,15 @@ .LeftJoin<TN_Loc_Container>((o, i) => o.S_CNTR_CODE == i.S_CNTR_CODE) .Where((o, i) => i.S_LOC_CODE == startLoc.S_CODE).First(); - if (WCSHelper.CreateTask(startLoc.S_CODE, endLoc.S_CODE, "澶嶆鍚堟牸鑷姩鍥炲簱", 3, cginfo.S_CNTR_CODE, out string taskNo, cginfo.S_SPE))//鍒涘缓鎼�浠诲姟锛岃捣鐐圭粓鐐瑰鍣�+ if (WCSHelper.CreateTask(startLoc.S_CODE, endLoc.S_CODE, typename, 3, cginfo.S_CNTR_CODE, out string taskNo, cginfo.S_SPE))//鍒涘缓鎼�浠诲姟锛岃捣鐐圭粓鐐瑰鍣� { LocationHelper.LockLoc(startLoc.S_CODE, 2);//璧风偣鍑哄簱閿侊紝 LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿�- LogHelper.Info($"鐢熸垚澶嶆鍚堟牸鑷姩鍥炲簱浠诲姟鎴愬姛锛屽鍣ㄥ彿{cginfo.S_CNTR_CODE}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐箋endLoc.S_CODE}"); + LogHelper.Info($"鐢熸垚{typename}浠诲姟鎴愬姛锛屽鍣ㄥ彿{cginfo.S_CNTR_CODE}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐箋endLoc.S_CODE}"); Task task99 = Task.Run(() => { - WMSHelper.InsertOpInfo("鑷姩杞", "澶嶆鍚堟牸鑷姩鍥炲簱", cginfo.S_CNTR_CODE); + WMSHelper.InsertOpInfo("鑷姩杞", typename, cginfo.S_CNTR_CODE); }); Task task27 = Task.Run(() => @@ -528,7 +544,7 @@ } else { - LogHelper.Info($"鐢熸垚澶嶆鍚堟牸鑷姩鍥炲簱浠诲姟澶辫触锛屽鍣ㄥ彿{cginfo.S_CNTR_CODE}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐箋endLoc.S_CODE}"); + LogHelper.Info($"鐢熸垚{typename}浠诲姟澶辫触锛屽鍣ㄥ彿{cginfo.S_CNTR_CODE}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐箋endLoc.S_CODE}"); return; } @@ -536,6 +552,100 @@ catch(Exception ex) { LogHelper.Error("CGOkCheck鍙戠敓浜嗗紓甯�, ex); + } + } + + /// <summary> + /// 鍦ㄥ妫�尯妫�祴鐗╁搧鍥炵倝鑳惰繕鏄姤搴�+ /// </summary> + public static void CGNGCheck() + { + var db = new SqlHelper<object>().GetInstance(); + try + { + // 搴熸枡鐩存帴鍒犻櫎 + var locCntFeiLiao = db.Queryable<TN_CG_Detail>() + .LeftJoin<TN_Loc_Container>((o, i) => o.S_CNTR_CODE == i.S_CNTR_CODE) + .LeftJoin<TN_Location>((o, i, s) => i.S_LOC_CODE == s.S_CODE) + .Where((o, i, s) => + o.N_ITEM_STATE == 9 && o.S_ITEM_STATE == "搴熸枡" + && s.S_AREA_CODE == Settings.Areas[7] && s.N_CURRENT_NUM > 0 + && s.N_LOCK_STATE == 0 && s.S_LOCK_STATE == "鏃�).First(); + + if (locCntFeiLiao != null) + { + var reuslt1 = db.Deleteable<TN_CG_Detail>().Where(a => a.S_CNTR_CODE == locCntFeiLiao.S_CNTR_CODE).ExecuteCommand(); + var reuslt2 = db.Deleteable<TN_Loc_Container>().Where(a => a.S_CNTR_CODE == locCntFeiLiao.S_CNTR_CODE).ExecuteCommand(); + LogHelper.Info($"鍒犻櫎浜嗗簾鏂檣locCntFeiLiao.S_CNTR_CODE},褰卞搷鐨勮鏁帮細{reuslt1}銆亄reuslt2}"); + } + + var startLoc = db.Queryable<TN_Location>() + .LeftJoin<TN_Loc_Container>((o, i) => o.S_CODE == i.S_LOC_CODE) + .LeftJoin<TN_CG_Detail>((o, i, s) => i.S_CNTR_CODE == s.S_CNTR_CODE) + .Where((o, i, s) => + s.N_ITEM_STATE == 8 && s.S_ITEM_STATE == "鍥炵倝鑳� + && o.S_AREA_CODE == Settings.Areas[7] && o.N_CURRENT_NUM > 0 + && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃�).First(); + + var typename = "澶嶆鍖哄洖鐐夎兌鑷姩鍥炵倝"; + + if (startLoc == null) + { + LogHelper.Info("澶嶆鍖烘病鏈夊洖鐐夎兌锛屾棤闇�嚜鍔ㄨ繑鍥�); + return; + } + + var cginfo = db.Queryable<TN_CG_Detail>() + .LeftJoin<TN_Loc_Container>((o, i) => o.S_CNTR_CODE == i.S_CNTR_CODE) + .Where((o, i) => i.S_LOC_CODE == startLoc.S_CODE).First(); + + if (cginfo == null) + { + LogHelper.Info($"鏈壘鍒拌捣鐐箋startLoc.S_CODE}鐨勭墿鏂欎俊鎭�); + return; + } + + var endArea = db.Queryable<TN_TN_SPE>().First(a => a.S_SPE == cginfo.S_SPE || a.S_SPE == cginfo.S_ITEM_SPEC); + if (endArea == null || string.IsNullOrWhiteSpace(endArea.S_RETURN_AREA)) + { + LogHelper.Info($"鏈壘鍒拌鏍納cginfo.S_SPE}銆亄cginfo.S_ITEM_SPEC}鐨勮鏍奸厤缃俊鎭�鎶ヨ鐗╂枡鏈厤缃洖鐐夊簱鍖�); + return; + } + + var endLoc = db.Queryable<TN_Location>() + .Where(a => a.S_AREA_CODE == endArea.S_RETURN_AREA + && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� + && SqlFunc.Subqueryable<TN_Loc_Container>().Where(b => b.S_LOC_CODE == a.S_CODE).NotAny()//涓嶈兘鏈夎揣 + ).OrderBy(a => a.N_LAYER, OrderByType.Asc).First(); + + if (endLoc == null) + { + LogHelper.Info($"鍥炵倝缁堢偣搴撳尯{endArea.S_RETURN_AREA}宸叉弧鎴栬�宸插叏閮ㄩ攣浣�); + return; + } + + if (WCSHelper.CreateTask(startLoc.S_CODE, endLoc.S_CODE, typename, 3, cginfo.S_CNTR_CODE, out string taskNo, cginfo.S_SPE))//鍒涘缓鎼�浠诲姟锛岃捣鐐圭粓鐐瑰鍣�+ { + LocationHelper.LockLoc(startLoc.S_CODE, 2);//璧风偣鍑哄簱閿侊紝 + LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿�+ LogHelper.Info($"鐢熸垚{typename}浠诲姟鎴愬姛锛屽鍣ㄥ彿{cginfo.S_CNTR_CODE}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐箋endLoc.S_CODE}"); + + Task task99 = Task.Run(() => + { + WMSHelper.InsertOpInfo("鑷姩杞", typename, cginfo.S_CNTR_CODE); + }); + + return; + } + else + { + LogHelper.Info($"鐢熸垚{typename}浠诲姟澶辫触锛屽鍣ㄥ彿{cginfo.S_CNTR_CODE}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐箋endLoc.S_CODE}"); + return; + } + } + catch (Exception ex) + { + LogHelper.Error("CGNGCheck鍙戠敓浜嗗紓甯�, ex); } } @@ -643,7 +753,7 @@ { var cntCode = db.Queryable<TN_Loc_Container>().First(a => a.S_LOC_CODE == startLoc_3.S_CODE); var outTimeCg = db.Queryable<TN_CG_Detail>().First(a => a.S_CNTR_CODE == cntCode.S_CNTR_CODE); - if (WCSHelper.CreateTask(startLoc_3.S_CODE, endLoc_3.S_CODE, "杩囨湡娆″搧鍥炵倝", 3, outTimeCg.S_CNTR_CODE,out string taskno, outTimeCg.S_SPE)) + if (WCSHelper.CreateTask(startLoc_3.S_CODE, endLoc_3.S_CODE, "杩囨湡娆″搧鍥炵倝", 3, outTimeCg.S_CNTR_CODE, out string taskno, outTimeCg.S_SPE)) { LocationHelper.LockLoc(startLoc_3.S_CODE, 2);//璧风偣鍑哄簱閿侊紝 LocationHelper.LockLoc(endLoc_3.S_CODE, 1);//缁堢偣鍏ュ簱閿�@@ -1002,7 +1112,7 @@ } /// <summary> - /// 妫�祴婊℃墭缂撳瓨搴撳尯涓嶅悎鏍肩殑鐗╁搧锛屾弧鎵樺嚭搴撳妫�+ /// 妫�祴婊℃墭缂撳瓨搴撳尯涓嶅悎鏍肩殑鐗╁搧锛屾弧鎵樺嚭搴撳埌澶嶆鍖猴紝鏇夸唬浜嗘媶鐩樺嚭搴� /// </summary> internal static void CheckNoOkCg() { diff --git a/core/WCSCore.cs b/core/WCSCore.cs index 68db574..041a691 100644 --- a/core/WCSCore.cs +++ b/core/WCSCore.cs @@ -69,7 +69,11 @@ WCSHelper.Begin(tN_Task, model.forklift_no);//宸叉帹閫佺殑浠诲姟鐨勭姸鎬佹敼鎴愭墽琛� Task task4 = Task.Run(() => { - if (tN_Task.S_TYPE.Contains("鐐瑰鐐�) || tN_Task.S_TYPE.Contains("婊℃墭鍑哄簱涓婄嚎") || tN_Task.S_TYPE.Contains("婊℃墭鍑哄簱澶嶆")) + if (tN_Task.S_TYPE.Contains("鐐瑰鐐�) + || tN_Task.S_TYPE.Contains("婊℃墭鍑哄簱涓婄嚎") + || tN_Task.S_TYPE.Contains("婊℃墭鍑哄簱澶嶆") + || tN_Task.S_TYPE.Contains("绌烘墭") + ) { //涓嶅紑鍚壂鐮� } diff --git a/models/TN_CG_Detail.cs b/models/TN_CG_Detail.cs index 81fb2b2..d653164 100644 --- a/models/TN_CG_Detail.cs +++ b/models/TN_CG_Detail.cs @@ -27,12 +27,12 @@ public string S_SPE { get; set; }//货品规格 /// <summary> - /// 0合格1待检2不合格,下线即待检,3过期,4技术判定,5混合,6一级料、7二级料 + /// 0合格1待检2不合格,下线即待检,3过期,4技术判定,5混合,6E级料、7二级料、8回炉胶、9废料 /// </summary> public string S_ITEM_STATE { get; set; }//货品状态 /// <summary> - ///0合格1待检2不合格,下线即待检,3过期,4技术判定,5混合,6一级料、7二级料 + ///0合格1待检2不合格,下线即待检,3过期,4技术判定,5混合,6E级料、7二级料、8回炉胶、9废料 /// </summary> public int N_ITEM_STATE { get; set; }//货品状态_字典 public string S_BATCH_NO { get; set; }//批次号 diff --git a/models/TN_TN_SPE.cs b/models/TN_TN_SPE.cs index eba87b9..1b392de 100644 --- a/models/TN_TN_SPE.cs +++ b/models/TN_TN_SPE.cs @@ -19,6 +19,11 @@ public string S_SPE { get; set; } /// <summary> + /// 瀵瑰簲鐨勫洖鐐夊尯 + /// </summary> + public string S_RETURN_AREA { get; set; } + + /// <summary> /// 杩囨湡鏃堕棿锛屽崟浣嶏細灏忔椂 /// </summary> public int? N_EXPIRE_TIME { get; set; } diff --git a/process/TaskProcess.cs b/process/TaskProcess.cs index b3bc424..0d4ac1d 100644 --- a/process/TaskProcess.cs +++ b/process/TaskProcess.cs @@ -155,7 +155,11 @@ dic.Add(new param() { name = "IKey", value = "IKey" }); dic.Add(new param() { name = "From", value = start.ToString() }); - if (mst.S_TYPE.Contains("鐐瑰鐐�) || mst.S_TYPE.Contains("婊℃墭鍑哄簱涓婄嚎") || mst.S_TYPE.Contains("婊℃墭鍑哄簱澶嶆")) + if (mst.S_TYPE.Contains("鐐瑰鐐�) + || mst.S_TYPE.Contains("婊℃墭鍑哄簱涓婄嚎") + || mst.S_TYPE.Contains("婊℃墭鍑哄簱澶嶆") + || mst.S_TYPE.Contains("绌烘墭") + ) { dic.Add(new param() { name = "FUNC", value = "0" }); } diff --git a/wms/LocationHelper.cs b/wms/LocationHelper.cs index 926ea92..3527034 100644 --- a/wms/LocationHelper.cs +++ b/wms/LocationHelper.cs @@ -522,7 +522,7 @@ } /// <summary> - /// 0鍚堟牸1寰呮2涓嶅悎鏍硷紝涓嬬嚎鍗冲緟妫�紝3杩囨湡锛�鎶�湳鍒ゅ畾锛�娣峰悎锛�涓�骇鏂欍�7浜岀骇鏂�+ /// 0鍚堟牸1寰呮2涓嶅悎鏍硷紝涓嬬嚎鍗冲緟妫�紝3杩囨湡锛�鎶�湳鍒ゅ畾锛�娣峰悎锛�E绾ф枡銆�浜岀骇鏂� /// </summary> /// <param name="state"></param> /// <returns></returns> @@ -554,7 +554,7 @@ } if (state == 6) { - return "涓�骇鏂�; + return "E绾ф枡"; } if (state == 7) { @@ -610,7 +610,7 @@ public string rfId { get; set; }//瀹瑰櫒鍙� /// <summary> - /// 0鍚堟牸1寰呮2涓嶅悎鏍硷紝3杩囨湡锛�鎶�湳鍒ゅ畾锛�娣峰悎锛�涓�骇鏂欍�7浜岀骇鏂�+ /// 0鍚堟牸1寰呮2涓嶅悎鏍硷紝3杩囨湡锛�鎶�湳鍒ゅ畾锛�娣峰悎锛�E绾ф枡銆�浜岀骇鏂� /// </summary> public int cgState { get; set; }//鐗╂枡鐘舵� -- Gitblit v1.9.1