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