From 265fbfa342cc03991c79934b162f26c0a6699f95 Mon Sep 17 00:00:00 2001
From: 海波 张 <2956280567@qq.com>
Date: 星期五, 25 七月 2025 17:31:20 +0800
Subject: [PATCH] 0725

---
 wms/TaskHelper.cs |  115 +++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 102 insertions(+), 13 deletions(-)

diff --git a/wms/TaskHelper.cs b/wms/TaskHelper.cs
index ee18278..a4dd619 100644
--- a/wms/TaskHelper.cs
+++ b/wms/TaskHelper.cs
@@ -1,4 +1,5 @@
 锘縰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;
@@ -12,6 +13,7 @@
 using System.Threading.Tasks;
 using System.Web.Services.Description;
 using System.Xml.Linq;
+using Top.Api;
 using static HH.WCS.ZhongCeJinTan.util.Settings;
 using static HH.WCS.ZhongCeJinTan.wms.WcsModel;
 
@@ -52,6 +54,21 @@
             var task = db.Queryable<WMSTask>().Where(a => a.S_CODE.Trim() == no).First();
             return task;
         }
+        internal static WMSTask GetTaskByNoType(string no, string type)
+        {
+            var db = new SqlHelper<WMSTask>().GetInstance();
+            var task = db.Queryable<WMSTask>().Where(a => a.S_CODE == no && a.S_SCHEDULE_TYPE == type).First();
+            return task;
+        }
+
+        internal static List<WMSTask> GetTaskByNoTypeList(string no, string type)
+        {
+            var db = new SqlHelper<WMSTask>().GetInstance();
+            var task = db.Queryable<WMSTask>().Where(a => a.S_CODE == no && a.S_SCHEDULE_TYPE == type).ToList();
+            return task;
+        }
+
+
 
         //鏌ユ壘WCS绔嬪簱浠诲姟 鍙傛暟浣滀笟缂栫爜,璋冨害绫诲瀷 agv/wcs
         internal static WMSTask GetTaskByWorkNo(string no,string type)
@@ -64,7 +81,7 @@
 
         internal static WmsWork GetWmsWork(string no) {
             var db = new SqlHelper<WmsWork>().GetInstance();
-            return db.Queryable<WmsWork>().Where(it => it.S_CODE == no).First();
+            return db.Queryable<WmsWork>().Where(it => it.S_CODE == no).OrderByDescending(b=>b.T_CREATE).First();
         }
       
 
@@ -239,6 +256,10 @@
                     break;
                 case 12:
                     CreateOneTask(operation);
+                    break;
+                case 99:
+                    //澶栧舰妫�祴鍑哄簱涓ゆ浠诲姟
+                    CreateOutTowTask(operation);
                     break;
                 case 20:
                     CreateOneTask(operation);
@@ -425,7 +446,7 @@
                     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
@@ -597,16 +618,48 @@
                 var cntrItem = ContainerHelper.GetCntrItem(task.S_CNTR_CODE);
                 if (cntrItem == null)
                 {
-                    LogHelper.Info($"浠诲姟{task.S_CODE}娌℃煡鍒板鍣ㄧ墿鏂檣task.S_CNTR_CODE}", "涓婁笅鏋惰褰�);
+                    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 = task.S_END_LOC,//缁堢偣
+                    endStock = endArea,//缁堢偣
                     taskStatus = state,//0锛氬垵濮嬬姸鎬侊紝1锛氳繘琛屼腑锛�锛氬畬鎴愶紝3锛氫换鍔″彇娑�                     updateTime = DateTime.Now.ToString(),//鎿嶄綔鏃堕棿
                     TurnCardNum  = cntrItem.TurnCardNum,//鍛ㄨ浆鍗″彿
@@ -650,6 +703,17 @@
             
             return ac;
         }
+        internal static WcsSafety GetWcsSafety(string taskNo, string action)
+        {
+            var db = new SqlHelper<WcsSafety>().GetInstance();
+
+            var ac = db.Queryable<WcsSafety>().Where(a => a.TaskNo == taskNo && a.Sign.ToString() == action).First();
+
+            return ac;
+        }
+
+
+
 
         /// <summary>
         /// 浠诲姟鎷︽埅
@@ -798,6 +862,22 @@
                 LocationHelper.LockLoc(task.S_END_LOC, "鍑哄簱閿�, 2);
             }
 
+            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();
@@ -807,15 +887,6 @@
                 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();
             }
-
-
-            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();
-            }
-
-
         }
 
 
@@ -835,6 +906,14 @@
 
         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;
 
         }
@@ -884,6 +963,8 @@
             return db.Queryable<WorkFlow>().Where(a => a.FLOWCODE == flowCode && a.TOOLSTYPE == type).First();
         }
 
+
+
         //鏍规嵁娴佺▼缂栧彿鍜岃捣鐐瑰簱鍖烘煡鎵句綔涓氭祦绋�         public static WorkFlow selectWorkFlowByStratArea(string flowCode, string startArea)
         {
@@ -891,6 +972,14 @@
             return db.Queryable<WorkFlow>().Where(a => a.FLOWCODE == flowCode && a.STARTAREA==startArea).First();
         }
 
+        //鏍规嵁娴佺▼缂栧彿鍜岀粓鐐瑰簱鍖烘煡鎵句綔涓氭祦绋�+        public static WorkFlow selectWorkFlowByEndArea(string flowCode, string endArea)
+        {
+            var db = new SqlHelper<WorkFlow>().GetInstance();
+            return db.Queryable<WorkFlow>().Where(a => a.FLOWCODE == flowCode && a.ENDAREA == endArea).First();
+        }
+
+
         /// <summary>
         /// 鏍规嵁浠诲姟鐘舵�鑾峰彇agv浠诲姟
         /// </summary>

--
Gitblit v1.9.1