From 27e00e4c0d354727728ac4b8770b1575b5077399 Mon Sep 17 00:00:00 2001
From: 海波 张 <2956280567@qq.com>
Date: 星期一, 14 七月 2025 17:30:59 +0800
Subject: [PATCH] 出库修改

---
 wms/TaskHelper.cs |  602 ++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 488 insertions(+), 114 deletions(-)

diff --git a/wms/TaskHelper.cs b/wms/TaskHelper.cs
index 7b16b6d..dda45de 100644
--- a/wms/TaskHelper.cs
+++ b/wms/TaskHelper.cs
@@ -1,6 +1,9 @@
-锘縰sing HH.WCS.ZhongCeJinTan.device;
+锘縰sing HH.WCS.ZhongCeJinTan.api;
+using HH.WCS.ZhongCeJinTan.core;
+using HH.WCS.ZhongCeJinTan.device;
 using HH.WCS.ZhongCeJinTan.dispatch;
 using HH.WCS.ZhongCeJinTan.util;
+using ICSharpCode.SharpZipLib.Zip;
 using Newtonsoft.Json;
 using SqlSugar;
 using System;
@@ -12,6 +15,8 @@
 using System.Xml.Linq;
 using static HH.WCS.ZhongCeJinTan.util.Settings;
 using static HH.WCS.ZhongCeJinTan.wms.WcsModel;
+
+
 
 namespace HH.WCS.ZhongCeJinTan.wms
 {
@@ -48,6 +53,21 @@
             var task = db.Queryable<WMSTask>().Where(a => a.S_CODE.Trim() == no).First();
             return task;
         }
+
+        //鏌ユ壘WCS绔嬪簱浠诲姟 鍙傛暟浣滀笟缂栫爜,璋冨害绫诲瀷 agv/wcs
+        internal static WMSTask GetTaskByWorkNo(string no,string type)
+        {
+            var db = new SqlHelper<WMSTask>().GetInstance();
+            var task = db.Queryable<WMSTask>().Where(a => a.S_OP_CODE == no && a.S_SCHEDULE_TYPE== type).First();
+            return task;
+        }
+
+
+        internal static WmsWork GetWmsWork(string no) {
+            var db = new SqlHelper<WmsWork>().GetInstance();
+            return db.Queryable<WmsWork>().Where(it => it.S_CODE == no).First();
+        }
+      
 
 
         internal static WMSTask GetTaskByCntrCode(string cntrCode)
@@ -204,6 +224,7 @@
                     CreateOneTask(operation);
                     break;
                 case 7:
+                    //鍑哄簱涓ゆ浠诲姟
                     CreateOutTowTask(operation);
                     break;
                 case 9:
@@ -235,13 +256,15 @@
         {
             var tasks = new List<Task>();
 
+            
+
             // 浠诲姟1
             var task1 = new WMSTask()
             {
                 // 浣滀笟缂栫爜
                 S_OP_CODE = operation.S_CODE,
                 // 浠诲姟鍙�-                S_CODE = GenerateTaskNo(),
+                S_CODE = operation.S_CODE + "_1",
                 // 浠诲姟绫诲瀷
                 N_TYPE = operation.N_TYPE,
                 // 浠诲姟绫诲瀷
@@ -250,6 +273,10 @@
                 S_START_LOC = operation.S_START_LOC,
                 // 璧风偣搴撳尯
                 S_START_AREA = operation.S_START_AREA,
+                //璧风偣搴撳尯鍚嶇О
+                S_START_AREA_NAME = operation.S_START_AREA_NAME,
+                //缁堢偣搴撳尯鍚嶇О
+                S_END_AREA_NAME = operation.S_END_AREA_NAME,
                 // 缁堢偣璐т綅
                 S_END_LOC = operation.S_END_LOC,
                 // 缁堢偣搴撳尯
@@ -266,6 +293,10 @@
                 N_PRIORITY = operation.N_PRIORITY,
                 //宸ヨ绫诲瀷
                 TOOLSTYPE = operation.TOOLSTYPE,
+
+               
+
+
             };
 
             try
@@ -278,12 +309,14 @@
                 {
                     LocationHelper.LockLoc(operation.S_START_LOC, "鍑哄簱閿�, 2);
                     LocationHelper.LockLoc(operation.S_END_LOC, "鍏ュ簱閿�, 1);
-                    LogHelper.Info($"浠诲姟{task1.S_OP_CODE}鍒涘缓鎴愬姛", "浠诲姟");
+                    LogHelper.Info($"浠诲姟{task1.S_CODE}鍒涘缓鎴愬姛", "浠诲姟");
                     var db = new SqlHelper<object>().GetInstance();
                     db.Updateable(operation).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE }).ExecuteCommand();
+
+                    TaskHelper.opMesTask(task1, 0);
                 }
                 else {
-                    LogHelper.Info($"浠诲姟{task1.S_OP_CODE}鍒涘缓澶辫触", "浠诲姟");
+                    LogHelper.Info($"浠诲姟{task1.S_CODE}鍒涘缓澶辫触", "浠诲姟");
                 }
 
             }
@@ -335,6 +368,10 @@
                 N_PRIORITY = operation.N_PRIORITY,
                 //宸ヨ绫诲瀷
                 TOOLSTYPE = operation.TOOLSTYPE,
+                //璧风偣搴撳尯鍚嶇О
+                S_START_AREA_NAME = operation.S_START_AREA_NAME,
+                //缁堢偣搴撳尯鍚嶇О
+                S_END_AREA_NAME = operation.CONNECTION_AREA,
 
             };
 
@@ -369,6 +406,10 @@
                 N_PRIORITY = operation.N_PRIORITY,
                 //宸ヨ绫诲瀷
                 TOOLSTYPE = operation.TOOLSTYPE,
+                //璧风偣搴撳尯鍚嶇О
+                S_START_AREA_NAME = operation.CONNECTION_AREA,
+                //缁堢偣搴撳尯鍚嶇О
+                S_END_AREA_NAME = operation.S_END_AREA_NAME,
             };
 
             try
@@ -379,12 +420,14 @@
 
                 if (CreateTask(task1) && CreateTask(task2))
                 {
-                    LocationHelper.LockLoc(operation.S_START_LOC, "鍑哄簱閿�, 2);
-                    LocationHelper.LockLoc(operation.S_END_LOC, "鍏ュ簱閿�, 1);
-                    LocationHelper.LockLoc(operation.CONNECTION, "鍏朵粬閿�, 3);
+                    //LocationHelper.LockLoc(operation.S_START_LOC, "鍑哄簱閿�, 2);
+                    //LocationHelper.LockLoc(operation.S_END_LOC, "鍏ュ簱閿�, 1);
+                    //LocationHelper.LockLoc(operation.CONNECTION, "鍏朵粬閿�, 3);
                     LogHelper.Info($"浠诲姟{task1.S_CODE},{task2.S_CODE}鍒涘缓鎴愬姛", "浠诲姟");
                     var db = new SqlHelper<object>().GetInstance();
                     db.Updateable(operation).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE }).ExecuteCommand();
+                    LogHelper.Info($"鍥炴姤{task1.S_OP_CODE}", "鍥炴姤Mes浠诲姟");
+                    TaskHelper.opMesTask(task1, 0);
                 }
                 else
                 {
@@ -404,99 +447,117 @@
 
             var ConnectionLoc = LocationHelper.GetLocOne(operation.CONNECTION);
 
-
-            // 浠诲姟1
-            var task1 = new WMSTask()
+            var count = LocationHelper.GetConnectionTaskCount(operation.CONNECTION);
+            LogHelper.Info($"CreateOneTask 浣滀笟:{operation.S_CODE},鎺ラ┏浣�{operation.CONNECTION}锛屼换鍔℃暟閲忥細{count}", "浠诲姟");
+            if (count<=2)
             {
-                // 浣滀笟缂栫爜
-                S_OP_CODE = operation.S_CODE,
-                // 浠诲姟鍙�-                S_CODE = operation.S_CODE + "_2",
-                // 浠诲姟绫诲瀷
-                N_TYPE = operation.N_TYPE,
-                // 浠诲姟绫诲瀷
-                S_TYPE = operation.S_TYPE,
-                // 璧风偣璐т綅
-                S_START_LOC = operation.S_START_LOC,
-                // 璧风偣搴撳尯
-                S_START_AREA = operation.S_START_AREA,
-                // 缁堢偣璐т綅
-                S_END_LOC = operation.CONNECTION,
-                // 缁堢偣搴撳尯
-                S_END_AREA = ConnectionLoc.S_AREA_CODE,
-                // 璁惧绫诲瀷
-                N_SCHEDULE_TYPE = 2,
-                // 璁惧绫诲瀷
-                S_SCHEDULE_TYPE = "wcs",
-                // 瀹瑰櫒缂栫爜
-                S_CNTR_CODE = operation.S_CNTR_CODE,
-                //浠诲姟鐘舵�
-                S_B_STATE = "鏈墽琛�,
-                // 浼樺厛绾�-                N_PRIORITY = operation.N_PRIORITY,
-                //宸ヨ绫诲瀷
-                TOOLSTYPE = operation.TOOLSTYPE,
-            };
 
-            // 浠诲姟2
-            var task2 = new WMSTask()
-            {
-                // 浣滀笟缂栫爜
-                S_OP_CODE = operation.S_CODE,
-                // 浠诲姟鍙�-                S_CODE = operation.S_CODE + "_1",
-                // 浠诲姟绫诲瀷
-                N_TYPE = operation.N_TYPE,
-                // 浠诲姟绫诲瀷
-                S_TYPE = operation.S_TYPE,
-                // 璧风偣璐т綅
-                S_START_LOC = operation.CONNECTION,
-                // 璧风偣搴撳尯
-                S_START_AREA = ConnectionLoc.S_AREA_CODE,
-                // 缁堢偣璐т綅
-                S_END_LOC = operation.S_END_LOC,
-                // 缁堢偣搴撳尯
-                S_END_AREA = operation.S_END_AREA,
-                // 璁惧绫诲瀷
-                N_SCHEDULE_TYPE = 3,
-                // 璁惧绫诲瀷
-                S_SCHEDULE_TYPE = "agv",
-                // 瀹瑰櫒缂栫爜
-                S_CNTR_CODE = operation.S_CNTR_CODE,
-                //浠诲姟鐘舵�
-                S_B_STATE = "鏈墽琛�,
-                // 浼樺厛绾�-                N_PRIORITY = operation.N_PRIORITY,
-                //宸ヨ绫诲瀷
-                TOOLSTYPE = operation.TOOLSTYPE,
-            };
-
-            try
-            {
-                // 淇敼浣滀笟鐘舵�涓烘墽琛屼腑
-                operation.N_B_STATE = 1;
-                operation.S_B_STATE = "鎵ц";
-
-                if (CreateTask(task1) && CreateTask(task2))
+                // 浠诲姟1
+                var task1 = new WMSTask()
                 {
-                    LocationHelper.LockLoc(operation.S_START_LOC, "鍑哄簱閿�, 2);
-                    LocationHelper.LockLoc(operation.S_END_LOC, "鍏ュ簱閿�, 1);
-                    LocationHelper.LockLoc(operation.CONNECTION, "鍏ュ簱閿�, 1);
-                    LogHelper.Info($"浠诲姟{task1.S_CODE},{task2.S_CODE}鍒涘缓鎴愬姛", "浠诲姟");
-                    var db = new SqlHelper<object>().GetInstance();
-                    db.Updateable(operation).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE }).ExecuteCommand();
-                }
-                else
-                {
-                    LogHelper.Info($"浠诲姟{task1.S_CODE},{task2.S_CODE}鍒涘缓澶辫触", "浠诲姟");
-                }
+                    // 浣滀笟缂栫爜
+                    S_OP_CODE = operation.S_CODE,
+                    // 浠诲姟鍙�+                    S_CODE = operation.S_CODE + "_1",
+                    // 浠诲姟绫诲瀷
+                    N_TYPE = operation.N_TYPE,
+                    // 浠诲姟绫诲瀷
+                    S_TYPE = operation.S_TYPE,
+                    // 璧风偣璐т綅
+                    S_START_LOC = operation.S_START_LOC,
+                    // 璧风偣搴撳尯
+                    S_START_AREA = operation.S_START_AREA,
+                    // 缁堢偣璐т綅
+                    S_END_LOC = operation.CONNECTION,
+                    // 缁堢偣搴撳尯
+                    S_END_AREA = ConnectionLoc.S_AREA_CODE,
+                    // 璁惧绫诲瀷
+                    N_SCHEDULE_TYPE = 2,
+                    // 璁惧绫诲瀷
+                    S_SCHEDULE_TYPE = "wcs",
+                    // 瀹瑰櫒缂栫爜
+                    S_CNTR_CODE = operation.S_CNTR_CODE,
+                    //浠诲姟鐘舵�
+                    S_B_STATE = "鏈墽琛�,
+                    // 浼樺厛绾�+                    N_PRIORITY = operation.N_PRIORITY,
+                    //宸ヨ绫诲瀷
+                    TOOLSTYPE = operation.TOOLSTYPE,
+                    //璧风偣搴撳尯鍚嶇О
+                    S_START_AREA_NAME = operation.S_START_AREA_NAME,
+                    //缁堢偣搴撳尯鍚嶇О
+                    S_END_AREA_NAME = operation.CONNECTION_AREA,
+                };
 
+                // 浠诲姟2
+                var task2 = new WMSTask()
+                {
+                    // 浣滀笟缂栫爜
+                    S_OP_CODE = operation.S_CODE,
+                    // 浠诲姟鍙�+                    S_CODE = operation.S_CODE + "_2",
+                    // 浠诲姟绫诲瀷
+                    N_TYPE = operation.N_TYPE,
+                    // 浠诲姟绫诲瀷
+                    S_TYPE = operation.S_TYPE,
+                    // 璧风偣璐т綅
+                    S_START_LOC = operation.CONNECTION,
+                    // 璧风偣搴撳尯
+                    S_START_AREA = ConnectionLoc.S_AREA_CODE,
+                    // 缁堢偣璐т綅
+                    S_END_LOC = operation.S_END_LOC,
+                    // 缁堢偣搴撳尯
+                    S_END_AREA = operation.S_END_AREA,
+                    // 璁惧绫诲瀷
+                    N_SCHEDULE_TYPE = 3,
+                    // 璁惧绫诲瀷
+                    S_SCHEDULE_TYPE = "agv",
+                    // 瀹瑰櫒缂栫爜
+                    S_CNTR_CODE = operation.S_CNTR_CODE,
+                    //浠诲姟鐘舵�
+                    S_B_STATE = "鏈墽琛�,
+                    // 浼樺厛绾�+                    N_PRIORITY = operation.N_PRIORITY,
+                    //宸ヨ绫诲瀷
+                    TOOLSTYPE = operation.TOOLSTYPE,
+                    //璧风偣搴撳尯鍚嶇О
+                    S_START_AREA_NAME = operation.CONNECTION_AREA,
+                    //缁堢偣搴撳尯鍚嶇О
+                    S_END_AREA_NAME = operation.S_END_AREA_NAME,
+                };
+
+                try
+                {
+                    // 淇敼浣滀笟鐘舵�涓烘墽琛屼腑
+                    operation.N_B_STATE = 1;
+                    operation.S_B_STATE = "鎵ц";
+
+                    if (CreateTask(task1) && CreateTask(task2))
+                    {
+                        //LocationHelper.LockLoc(operation.S_START_LOC, "鍑哄簱閿�, 2);
+                        //LocationHelper.LockLoc(operation.S_END_LOC, "鍏ュ簱閿�, 1);
+                        //LocationHelper.LockLoc(operation.CONNECTION, "鍏ュ簱閿�, 1);
+                        LogHelper.Info($"浠诲姟{task1.S_CODE},{task2.S_CODE}鍒涘缓鎴愬姛", "浠诲姟");
+                        var db = new SqlHelper<object>().GetInstance();
+                        db.Updateable(operation).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE }).ExecuteCommand();
+
+                        TaskHelper.opMesTask(task2, 0);
+                    }
+                    else
+                    {
+                        LogHelper.Info($"浠诲姟{task1.S_CODE},{task2.S_CODE}鍒涘缓澶辫触", "浠诲姟");
+                    }
+
+                }
+                catch (Exception e)
+                {
+                    LogHelper.Info("CreateOneTask寮傚父淇℃伅" + e.Message, "浠诲姟");
+                    throw;
+                }
             }
-            catch (Exception e)
-            {
-                LogHelper.Info("CreateOneTask寮傚父淇℃伅" + e.Message, "浠诲姟");
-                throw;
-            }
+
+
+
         }
 
 
@@ -518,6 +579,7 @@
             var db = new SqlHelper<WmsTaskAction>().GetInstance();
             var action = new WmsTaskAction() {
                 S_ACTION = state.ToString(),
+                N_ACTION_CODE = state,
                 S_TASK_CODE = no,
                 S_EQ_CODE = forkliftNo,
                 S_EQ_TYPE = "agv",
@@ -525,7 +587,95 @@
             };
             return db.Insertable(action).ExecuteCommand() > 0;
         }
-        internal static WmsTaskAction GetActionRecord(string taskNo,string action)
+
+        internal static bool opMesTask(WMSTask task, int state)
+        {
+
+            HttpHelper apiHelper = new HttpHelper();
+            string baseUrl = Settings.MesApiAddres;
+            try
+            {
+                var cntrItem = ContainerHelper.GetCntrItem(task.S_CNTR_CODE);
+                if (cntrItem == null)
+                {
+                    LogHelper.Info($"浠诲姟{task.S_CODE}娌℃煡鍒板鍣ㄧ墿鏂檣task.S_CNTR_CODE}", "鍥炴姤Mes浠诲姟");
+                    return false;
+                }
+
+                var work = TaskHelper.GetWmsWork(task.S_OP_CODE);
+
+                if (work == null) {
+                    LogHelper.Info($"浠诲姟{task.S_CODE}娌℃煡鍒颁綔涓歿task.S_OP_CODE}", "鍥炴姤Mes浠诲姟");
+                    return false;
+                }
+                var endArea = "";
+
+                if (LocationHelper.GetErroArea(task.S_END_AREA))
+                {
+                    if (task.S_TYPE.Contains("鍑哄簱"))
+                    {
+                        endArea = task.S_END_LOC;
+                    }
+                    else {
+                        endArea = task.S_END_AREA;
+                    }
+
+                    
+                }
+                else {
+                    if (task.S_TYPE.Contains("鍑哄簱"))
+                    {
+                        endArea = task.S_END_LOC;
+                    }
+                    else {
+                        endArea = work.S_END_AREA;
+                    }
+                }
+
+
+
+
+                var interact = new
+                {
+                    taskNo = task.S_OP_CODE,//浠诲姟鍙�+                    updater = "WMS",// 鎿嶄綔浜�濡俉MS/MES绛�+                    endStock = endArea,//缁堢偣
+                    taskStatus = state,//0锛氬垵濮嬬姸鎬侊紝1锛氳繘琛屼腑锛�锛氬畬鎴愶紝3锛氫换鍔″彇娑�+                    updateTime = DateTime.Now.ToString(),//鎿嶄綔鏃堕棿
+                    TurnCardNum  = cntrItem.TurnCardNum,//鍛ㄨ浆鍗″彿
+                    TOOLS_NO = task.S_CNTR_CODE//宸ヨ缂栧彿
+                    
+                };
+                LogHelper.Info("Mes鏇存柊浠诲姟鐘舵� 鍦板潃淇℃伅:" + baseUrl + "updateTask", "鍥炴姤Mes浠诲姟");
+                LogHelper.Info("Mes鏇存柊浠诲姟鐘舵� 鍙傛暟淇℃伅:" + JsonConvert.SerializeObject(interact), "鍥炴姤Mes浠诲姟");
+                var result = apiHelper.Post(baseUrl + "updateTask", JsonConvert.SerializeObject(interact));
+                LogHelper.Info("Mes鏇存柊浠诲姟鐘舵� 杩斿洖淇℃伅:" + JsonConvert.SerializeObject(result), "鍥炴姤Mes浠诲姟");
+                if (!string.IsNullOrEmpty(result))
+                {
+                    var res = JsonConvert.DeserializeObject<MesTaskReturn>(result);
+                    if (res.success && res.code == "0")
+                    {
+                        return true;
+                    }
+                    else
+                    {
+                        return false;
+                    }
+                }
+                else
+                {
+                    LogHelper.Info("Mes鏇存柊浠诲姟鐘舵� 杩斿洖淇℃伅涓虹┖", "鍥炴姤Mes浠诲姟");
+                    return false;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Info("Mes鏇存柊浠诲姟鐘舵�寮傚父"+ex.Message, "鍥炴姤Mes浠诲姟");
+                return false;
+            }
+
+        }
+            internal static WmsTaskAction GetActionRecord(string taskNo,string action)
         {
             var db = new SqlHelper<WmsTaskAction>().GetInstance();
 
@@ -534,7 +684,26 @@
             return ac;
         }
 
-      
+        /// <summary>
+        /// 浠诲姟鎷︽埅
+        /// </summary>
+        /// <param name="task"></param>
+        /// <returns></returns>
+        internal static bool Intercept()
+        {
+                var db = new SqlHelper<object>().GetInstance();
+              
+                var model = db.Queryable<ManualTaskSwitch>().First();
+                if (model != null && model.State == "Y")
+                {
+                    return false;
+                }
+                else
+                {
+                    return true;
+                }
+            
+        }
 
 
         internal static bool WcsAddActionRecord(string no, string state, string forkliftNo, string extData = "0")
@@ -543,6 +712,7 @@
             var action = new WmsTaskAction()
             {
                 S_ACTION = state.ToString(),
+                N_ACTION_CODE = int.Parse(state),
                 S_TASK_CODE = no,
                 S_EQ_CODE = forkliftNo,
                 S_EQ_TYPE = "wcs",
@@ -558,18 +728,18 @@
             var db = new SqlHelper<WmsTaskAction>().GetInstance();
             return db.Queryable<WmsTaskAction>().Count(a => a.S_TASK_CODE.Trim() == no.Trim() && a.S_ACTION == code) > 0;
         }
-        internal static void Begin(WMSTask task,string avgNo) {
-            var db = new SqlHelper<WMSTask>().GetInstance();
-            if (task != null) {
-                if (task.S_B_STATE.Trim() == "宸叉帹閫�) {
-                    task.S_B_STATE = "鎵ц涓�;
-                    task.T_START_TIME = DateTime.Now;
-                    task.S_EQ_NO = avgNo;
-                    db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE, it.T_START_TIME,it.S_EQ_NO }).ExecuteCommand();
-                }
+        //internal static void Begin(WMSTask task,string avgNo) {
+        //    var db = new SqlHelper<WMSTask>().GetInstance();
+        //    if (task != null) {
+        //        if (task.S_B_STATE.Trim() == "宸叉帹閫�) {
+        //            task.S_B_STATE = "鎵ц涓�;
+        //            task.T_START_TIME = DateTime.Now;
+        //            task.S_EQ_NO = avgNo;
+        //            db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE, it.T_START_TIME,it.S_EQ_NO }).ExecuteCommand();
+        //        }
 
-            }
-        }
+        //    }
+        //}
 
 
         internal static WcsRfidCheckoutEntitys GetRfid(string TaskCode) {
@@ -581,7 +751,7 @@
 
 
 
-        internal static void Begin(WMSTask task)
+        internal static void Begin(WMSTask task, string avgNo="")
         {
             var db = new SqlHelper<WMSTask>().GetInstance();
             if (task != null)
@@ -590,8 +760,9 @@
                 {
                     task.N_B_STATE = 2;
                     task.S_B_STATE = WMSTask.GetStateStr(task.N_B_STATE);
+                    task.S_EQ_NO = avgNo;
                     task.T_START_TIME = DateTime.Now;
-                    db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_START_TIME }).ExecuteCommand();
+                    db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_START_TIME,it.S_EQ_NO }).ExecuteCommand();
                 }
             }
         }
@@ -659,12 +830,28 @@
             if (task.S_TYPE.Contains("鍑哄簱") && task.S_SCHEDULE_TYPE.Contains("wcs")) {
                 LocationHelper.LockLoc(task.S_END_LOC, "鍑哄簱閿�, 2);
             }
-                
-            if (task.S_TYPE.Contains("鍑哄簱")&&task.S_SCHEDULE_TYPE.Contains("agv") )
+
+            if (task.S_SCHEDULE_TYPE.Contains("agv"))
+            {
+
+                if (LocationHelper.GetErroArea(task.S_END_AREA))
+                {
+                    db.Deleteable<Container>().Where(it => it.S_CODE == task.S_CNTR_CODE).ExecuteCommand();
+                    db.Deleteable<LocCntrRel>().Where(it => it.S_CNTR_CODE == task.S_CNTR_CODE).ExecuteCommand();
+                    db.Deleteable<CntrItemRel>().Where(it => it.S_CNTR_CODE == task.S_CNTR_CODE).ExecuteCommand();
+                }
+                else
+                {
+                    TaskHelper.opMesTask(task, 2);
+                }
+            }
+         
+
+            if (task.S_TYPE.Contains("鍑哄簱") && task.S_SCHEDULE_TYPE.Contains("agv"))
             {
                 var location = db.Queryable<Location>().Where(a => a.S_CODE == task.S_END_LOC).First();
                 location.N_CURRENT_NUM = 0;
-                db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM}).ExecuteCommand();
+                db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM }).ExecuteCommand();
                 db.Deleteable<Container>().Where(it => it.S_CODE == task.S_CNTR_CODE).ExecuteCommand();
                 db.Deleteable<LocCntrRel>().Where(it => it.S_CNTR_CODE == task.S_CNTR_CODE).ExecuteCommand();
                 db.Deleteable<CntrItemRel>().Where(it => it.S_CNTR_CODE == task.S_CNTR_CODE).ExecuteCommand();
@@ -680,13 +867,22 @@
             {
                 task.N_B_STATE = 5;
                 task.S_B_STATE = WMSTask.GetStateStr(task.N_B_STATE);
-                db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE }).ExecuteCommand();
+                task.T_END_TIME = DateTime.Now;
+                db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE,it.T_END_TIME}).ExecuteCommand();
             }
         }
 
 
         internal static bool CreateTask(WMSTask wmsTask) {
             var db = new SqlHelper<WMSTask>().GetInstance();
+
+             var task = db.Queryable<WMSTask>().Where(a => a.S_CODE == wmsTask.S_CODE).First();
+
+            if (task!=null)
+            {
+                return false;
+            }
+
             return db.Insertable(wmsTask).ExecuteCommand() > 0;
 
         }
@@ -796,5 +992,183 @@
             }
 
         }
+
+
+        /// <summary>
+        /// 鏍规嵁浠诲姟鐘舵�鍜岃捣鐐瑰拰绫诲瀷鏌ユ壘浠诲姟
+        /// </summary>
+        /// <param name="state"></param>
+        /// <returns></returns>
+        internal static WMSTask GetTaskByType(string start,string type,string state)
+        {
+            try
+            {
+                var db = new SqlHelper<object>().GetInstance();
+                return db.Queryable<WMSTask>().Where(a => a.S_B_STATE.Trim() == state && a.S_TYPE.Contains(type) && a.S_START_LOC.Contains(start)).First();
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Error(ex.Message, ex);
+                return new WMSTask();
+            }
+
+        }
+
+
+
+        /// <summary>
+        /// 鏍规嵁浣滀笟缂栫爜鍜岃澶囩被鍨嬭幏鍙栧崟涓换鍔�+        /// </summary>
+        /// <param name="state"></param>
+        /// <returns></returns>
+        internal static WMSTask GetTaskByWork(string eq, string opCode)
+        {
+            try
+            {
+                var db = new SqlHelper<object>().GetInstance();
+                return db.Queryable<WMSTask>().Where(a =>  a.S_SCHEDULE_TYPE.Contains(eq) && a.S_OP_CODE.Contains(opCode)).First();
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Error(ex.Message, ex);
+                return new WMSTask();
+            }
+
+        }
+
+        /// <summary>
+        /// 杩斿洖褰撳墠鎺ラ┏浣嶆墽琛屼腑浠诲姟鏁伴噺
+        /// </summary>
+        internal static int GetConnectionTask(string Connection)
+        {
+            var db = new SqlHelper<object>().GetInstance();
+
+
+            var ConnectionList = 0;
+            ConnectionList = db.Queryable<WMSTask>().Where(a => a.S_END_LOC.Contains(Connection) && a.S_TYPE.Contains("鍑哄簱") && a.S_B_STATE != "瀹屾垚" && a.S_B_STATE != "鍙栨秷" && a.S_B_STATE != "鏈墽琛�).ToList().Count();
+
+            return ConnectionList;
+        }
+
+
+        //internal static bool CreateAgvState(AgvState agvState)
+        //{
+        //    try
+        //    {
+        //        var db = new SqlHelper<object>().GetInstance();
+
+        //        return db.Insertable<AgvState>(agvState).ExecuteCommand() > 0;
+        //    }
+        //    catch (Exception ex)
+        //    {
+        //        LogHelper.Info($"娣诲姞Agv鍔ㄤ綔缂撳瓨寮傚父" + ex.Message, "NDC");
+        //        throw;
+        //    }
+        //}
+
+
+        internal static bool CreateMesKtTask(MesKtTask cntr)
+        {
+            try
+            {
+                var db = new SqlHelper<object>().GetInstance();
+
+                return db.Insertable<MesKtTask>(cntr).ExecuteCommand() > 0;
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Info($"娣诲姞Mes绌烘墭缂撳瓨寮傚父" + ex.Message, "Mes浠诲姟涓嬪彂");
+                throw;
+            }
+        }
+
+        internal static MesKtTask GetMesKtTask(string end)
+        {
+          
+                var db = new SqlHelper<object>().GetInstance();
+
+                return db.Queryable<MesKtTask>().Where(a => a.Location_To==end && a.Status=="N").First();
+        }
+
+        internal static bool ChangeMesKtTask(MesKtTask kt)
+        {
+
+            var db = new SqlHelper<object>().GetInstance();
+            kt.Status = "Y";
+            return db.Updateable(kt).UpdateColumns(it => new {
+                it.Status
+            }).ExecuteCommand()>0;
+
+            
+        }
+
+        internal static List<UnlimitedLoc> GetMesKtLoc()
+        {
+
+            var db = new SqlHelper<object>().GetInstance();
+
+            return db.Queryable<UnlimitedLoc>().Where(a=>a.Enable=="Y").ToList();
+        }
+
+
+        /// <summary>
+        /// 鑾峰彇鍏ュ簱浼樺厛绾ц〃
+        /// </summary>
+        /// <returns></returns>
+        internal static List<InPri> GetInPri()
+        {
+
+            var db = new SqlHelper<object>().GetInstance();
+
+            return db.Queryable<InPri>().Where(a=>a.Enable=="Y") .ToList();
+        }
+        /// <summary>
+        /// 鑾峰彇鍑哄簱鎻愰珮浼樺厛绾ц〃
+        /// </summary>
+        /// <returns></returns>
+        internal static OutMinutePriority GetOutMinutePriority()
+        {
+
+            var db = new SqlHelper<object>().GetInstance();
+
+            return db.Queryable<OutMinutePriority>().Where(a => a.Enable == "Y").First();
+        }
+
+        
+
+
+        /// <summary>
+        /// 娣诲姞agv鍔ㄤ綔缂撳瓨
+        /// </summary>
+        /// <param name="agv"></param>
+        /// <returns></returns>
+        internal static bool CreateAgvActionState(AgvActionState agv)
+        {
+            try
+            {
+                var db = new SqlHelper<object>().GetInstance();
+                return db.Insertable<AgvActionState>(agv).ExecuteCommand() > 0;
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine(ex.Message);
+                throw;
+            }
+        }
+
+
+        /// <summary>
+        /// 鑾峰彇agv鍔ㄤ綔
+        /// </summary>
+        /// <returns></returns>
+        internal static List<AgvActionState> GetAgvActionState( string taskNo)
+        {
+
+            var db = new SqlHelper<object>().GetInstance();
+
+            return db.Queryable<AgvActionState>().Where(a => a.task_no==taskNo).ToList();
+        }
+
+
     }
 }

--
Gitblit v1.9.1