From 5c4192f0b813d72a427eaca183d08d42046f1b41 Mon Sep 17 00:00:00 2001 From: jinxin <1013386558@qq.com> Date: 星期一, 23 六月 2025 14:43:44 +0800 Subject: [PATCH] 11 --- C#/HH.WCS.Mobox3.WeiLi/process/TaskProcess.cs | 154 ++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 109 insertions(+), 45 deletions(-) diff --git "a/C\043/HH.WCS.Mobox3.WeiLi/process/TaskProcess.cs" "b/C\043/HH.WCS.Mobox3.WeiLi/process/TaskProcess.cs" index 01ec719..57ffbc3 100644 --- "a/C\043/HH.WCS.Mobox3.WeiLi/process/TaskProcess.cs" +++ "b/C\043/HH.WCS.Mobox3.WeiLi/process/TaskProcess.cs" @@ -51,6 +51,7 @@ /// <param name="mst"></param> internal static void CacheBitCancelUpdate(WCSTask mst) { + LogHelper.Info($"浠诲姟鍙栨秷 浠诲姟璋冨害绫诲瀷{mst.S_SCHEDULE_TYPE}"); var db = new SqlHelper<object>().GetInstance(); //浠诲姟鍙栨秷锛屽彇璐у畬鎴愬墠鐨勶紝璧风偣鐨刲oadingCount鍜岀粓鐐箄nLoadingCount閮芥竻闄わ紝鍙栬揣瀹屾垚鐨勫彧澶勭悊缁堢偣 if (mst.S_SCHEDULE_TYPE == "WCS") @@ -86,12 +87,11 @@ //缁堢偣鏁伴噺缃� db.Updateable<Location>().SetColumns(it => new Location() { N_CURRENT_NUM = 0 }).Where(a => a.S_CODE == mst.S_END_LOC).ExecuteCommand(); } - else + else { db.Updateable<Location>().SetColumns(it => new Location() { N_CURRENT_NUM = 0 }).Where(a => a.S_CODE == mst.S_START_LOC).ExecuteCommand(); } - db.Deleteable<LocCntrRel>().Where(a => a.S_CNTR_CODE == mst.S_CNTR_CODE).ExecuteCommand(); - db.Deleteable<CntrItemRel>().Where(a => a.S_CNTR_CODE == mst.S_CNTR_CODE).ExecuteCommand(); + LocationHelper.UnLockLoc(mst.S_START_LOC); LocationHelper.UnLockLoc(mst.S_END_LOC); @@ -99,12 +99,52 @@ if (wmsTask != null) { LocationHelper.UnLockLoc(wmsTask.S_END_LOC); + Reducequantity(wmsTask); } + db.Deleteable<LocCntrRel>().Where(a => a.S_CNTR_CODE == mst.S_CNTR_CODE).ExecuteCommand(); + db.Deleteable<CntrItemRel>().Where(a => a.S_CNTR_CODE == mst.S_CNTR_CODE).ExecuteCommand(); + } + } + + public static void Reducequantity(WMSTask wmsTask) + { + var db = new SqlHelper<object>().GetInstance(); + if (wmsTask.S_OP_DEF_NAME == "鐮佺洏鍏ュ簱") + { + //闄嶅叆搴撳崟鏄庣粏鐨勫垎閰嶉噺 + var itemlist = db.Queryable<CntrItemRel>().Where(a => a.S_CNTR_CODE == wmsTask.S_CNTR_CODE).ToList(); + if (itemlist.Count > 0) + { + LogHelper.Info($"鏌ユ壘鍒扮墿鏂欐槑缁唟itemlist.Count}鏉�); + foreach (var item in itemlist) + { + var exp = Expressionable.Create<TN_Inbound_Detail>(); + exp.And(it => it.S_IO_NO == item.S_BS_NO); + exp.And(it => it.N_BS_ROW_NO == item.S_WU); + exp.And(it => it.S_ITEM_CODE == item.S_ITEM_CODE); + exp.AndIF(!string.IsNullOrEmpty(item.S_BATCH_NO), it => it.S_BATCH_NO == item.S_BATCH_NO); + exp.AndIF(!string.IsNullOrEmpty(item.S_ERP_WH_CODE), it => it.S_ERP_WH_CODE == item.S_ERP_WH_CODE); + exp.AndIF(!string.IsNullOrEmpty(item.S_OWNER), it => it.S_OWNER == item.S_OWNER); + exp.AndIF(!string.IsNullOrEmpty(item.S_SUPPLIER_NO), it => it.S_SUPPLIER_NO == item.S_SUPPLIER_NO); + var InWorkOrder = db.Queryable<TN_Inbound_Detail>().Where(exp.ToExpression()).First(); + InWorkOrder.F_ACC_B_QTY = InWorkOrder.F_ACC_B_QTY - item.F_QTY; + db.Updateable(InWorkOrder).UpdateColumns(it => new { it.F_ACC_B_QTY }).ExecuteCommand(); + } + } + else + { + LogHelper.Info($"鏈壘鍒版墭鐩榹wmsTask.S_CNTR_CODE}鐨勭墿鏂欐槑缁�); + } + } + else + { + LogHelper.Info($"浣滀笟绫诲瀷涓簕wmsTask.S_OP_DEF_NAME} 鏃犻』闄嶉噺"); + } } /// <summary> @@ -190,6 +230,8 @@ mst.S_ERR_LOC = ""; db.Updateable(mst).UpdateColumns(a => new { a.S_END_LOC, a.S_END_AREA, a.S_END_WH, a.S_START_LOC, a.S_START_AREA, a.S_START_WH, a.S_ERR_LOC }).ExecuteCommand(); + + TaskProcess.Reducequantity(wmsTask); //NDCApi.ChangeOrderParam(mst.S_CODE, 1, startLoc.S_AGV_SITE); //NDCApi.ChangeOrderParam(mst.S_CODE, 2, endLoc.S_AGV_SITE); //NDCApi.ChangeOrderParam(mst.S_CODE, 4, "0"); @@ -387,47 +429,52 @@ if (codeReader != null) { LogHelper.Info($"agv={codeReader.agv},ip={codeReader.ip}"); - for (int i = 1; i <= 5; i++) + for (int i = 1; i <= 3; i++) { //try //{ //var res = OITcpHelper.HexTransit(new OITcpHelper.StrTransitData { data = "4C 4F 4E 0D", host = codeReader.ip, port = 9004 }); var res = SendHexOnce(codeReader.ip, codeReader.port, "41"); LogHelper.Info($"鎵爜杩斿洖鎶ユ枃{res}"); - if (string.IsNullOrEmpty(res)) - { - NDCApi.ChangeOrderParam(mst.S_CODE, 6, "3"); - } - else + //if (string.IsNullOrEmpty(res)) + //{ + // NDCApi.ChangeOrderParam(mst.S_CODE, 6, "3"); + //} + //else + //{ + if (res.Length >= 18) { res = res.Substring(2, 16); - var code = hexToStr(res); - Console.WriteLine(code); - LogHelper.Info($"鎵樼洏淇℃伅涓�{mst.S_CNTR_CODE},鎵爜缁撴灉涓�{code},缁撴灉锛歿mst.S_CNTR_CODE.Trim() == code.Trim()}"); - if (res != null && code.Trim() != "ERROR") + } + + + var code = hexToStr(res); + Console.WriteLine(code); + LogHelper.Info($"鎵樼洏淇℃伅涓�{mst.S_CNTR_CODE},鎵爜缁撴灉涓�{code},缁撴灉锛歿mst.S_CNTR_CODE.Trim() == code.Trim()}"); + if (!string.IsNullOrEmpty(code) && res.Trim() != "022503") + { + if (mst.S_CNTR_CODE.Trim() == code.Trim()) { - if (mst.S_CNTR_CODE.Trim() == code.Trim()) - { - NDCApi.ChangeOrderParam(mst.S_CODE, 6, "1"); - } - else - { - NDCApi.ChangeOrderParam(mst.S_CODE, 6, "2"); - } - return; + NDCApi.ChangeOrderParam(mst.S_CODE, 6, "1"); } - else if (i == 5) + else { - if (res != null) - { - NDCApi.ChangeOrderParam(mst.S_CODE, 6, "3"); - } - else - { - NDCApi.ChangeOrderParam(mst.S_CODE, 6, "4"); - } + NDCApi.ChangeOrderParam(mst.S_CODE, 6, "2"); + } + return; + } + else if (i == 3) + { + if (!string.IsNullOrEmpty(code)) + { + NDCApi.ChangeOrderParam(mst.S_CODE, 6, "3"); + } + else + { + NDCApi.ChangeOrderParam(mst.S_CODE, 6, "4"); } } + //} //} //catch (Exception ex) @@ -454,28 +501,37 @@ private static string SendHexOnce(string ip, int port, string hex) { var res = string.Empty; - Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); - client.Connect(ip, port); - client.ReceiveTimeout = 2000; - if (client.Connected) + try { - client.Send(Hex2Bytes(hex)); - byte[] buffer = new byte[1024]; - try + Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + //client.Connect(ip, port); + IAsyncResult connectResult = client.BeginConnect(ip, port, null, null); + if (!connectResult.AsyncWaitHandle.WaitOne(5000)) { + client.Close(); + return ""; + } + client.ReceiveTimeout = 2000; + if (client.Connected) + { + client.Send(Hex2Bytes(hex)); + byte[] buffer = new byte[1024]; + var length = client.Receive(buffer, SocketFlags.None); byte[] data = new byte[length]; Array.Copy(buffer, data, length); res = BitConverter.ToString(data).Replace("-", ""); + + + client.Disconnect(true); + client.Dispose(); } - catch (Exception ex) - { - LogHelper.Error(ex.Message, ex); - } - client.Disconnect(true); - client.Dispose(); + client = null; } - client = null; + catch (Exception ex) + { + LogHelper.Error(ex.Message, ex); + } return res; } @@ -873,6 +929,7 @@ /// <param name="mst"></param> internal static bool SendTask(WCSTask mst) { + var db = new SqlHelper<object>().GetInstance(); var result = false; var start = "0"; var end = "0"; var Trow = "0"; @@ -887,6 +944,13 @@ Trow = "1024"; } + var wmsTask = db.Queryable<WMSTask>().Where(a => a.S_CODE == mst.S_OP_CODE).First(); + if (wmsTask != null && wmsTask.N_TRAY_WEIGHT > 0) + { + // 1000 2000 3000 4000 5000 + Trow = (wmsTask.N_TRAY_WEIGHT * 4096).ToString(); + } + Console.WriteLine($"SendTask {mst.S_CODE}"); Console.WriteLine("start=" + start); -- Gitblit v1.9.1