From d66d362ee6d76f02331e56df1fdec1c2114c9f3e Mon Sep 17 00:00:00 2001
From: zxx <Zxx@HanInfo>
Date: 星期三, 16 七月 2025 17:31:41 +0800
Subject: [PATCH] 1

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/process/TaskProcess.cs |  739 +++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 562 insertions(+), 177 deletions(-)

diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/process/TaskProcess.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/process/TaskProcess.cs
index d2a5cdf..6e250bf 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/process/TaskProcess.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/process/TaskProcess.cs
@@ -27,6 +27,9 @@
 using Newtonsoft.Json.Linq;
 using S7.Net;
 using System.Threading.Tasks;
+using HH.WCS.XiaoMi.LISTA.dispatch;
+using static HH.WCS.XiaoMi.LISTA.dispatch.RcsHelper;
+using System.Diagnostics;
 
 namespace HH.WCS.XiaoMi.process
 {
@@ -46,32 +49,14 @@
             {
                 Console.WriteLine($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_START_LOC}鍙栬揣瀹屾垚锛岃捣鐐硅В缁戝鍣▄mst.S_CNTR_CODE}");
                 LogHelper.Info($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_START_LOC}鍙栬揣瀹屾垚锛岃捣鐐硅В缁戝鍣▄mst.S_CNTR_CODE}");
-                if (mst.S_FRAME_CODE != null)
-                {
-                    LocationHelper.UnBindingLocHj(mst.S_START_LOC, mst.S_FRAME_CODE);
+                LocationHelper.UnBindingLoc(mst.S_START_LOC, mst.S_CNTR_CODE.Split(',').ToList());
 
-                }
-                else
-                {
-                    LocationHelper.UnBindingLoc(mst.S_START_LOC, mst.S_CNTR_CODE.Split(',').ToList());
-
-                }
             }
             else
             {
                 Console.WriteLine($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚锛岀粓鐐圭粦瀹氬鍣▄mst.S_CNTR_CODE}");
                 LogHelper.Info($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚锛岀粓鐐圭粦瀹氬鍣▄mst.S_CNTR_CODE}");
-                //濡傛灉璐ф灦鏈夊�鍒欑粦璐ф灦
-                if (mst.S_FRAME_CODE!=null)
-                {
-                    LocationHelper.BindingLocHj(mst.S_END_LOC, mst.S_FRAME_CODE);
-
-                }
-                else
-                {
-                    LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList());
-
-                }
+                LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList());
             }
 
         }
@@ -138,9 +123,15 @@
             if (state == 7)
             {
                 CacheBitCancelUpdate(mst);
+                ////灏忕背璁㈠崟鍙栨秷
+                //CancelModel cancelModel = new CancelModel();
+                //cancelModel.order_name = mst.S_CODE;
+                //cancelModel.order_command_type_id = 2;
+                //RcsHelper.CancelOrder(cancelModel);
+
             }
         }
-        
+
         private static object locLocker = new object();
 
         /// <summary>
@@ -368,7 +359,127 @@
             else { result = true; }
             return result;
         }
+        //灏忕背鎺ㄩ�浠诲姟
+        internal static bool SendXmTask(WCSTask mst)
+        {
+            var result = false;
+            var taskState = mst.N_B_STATE;
+            if (taskState == 0)
+            {
+                Console.WriteLine($"浠诲姟mst {JsonConvert.SerializeObject(mst)}");
+                LogHelper.Info($"浠诲姟mst {JsonConvert.SerializeObject(mst)}", "浠诲姟");
+                //var startLoc = LocationHelper.GetLoc(mst.S_START_LOC);
+                //var endLoc = LocationHelper.GetLoc(mst.S_END_LOC);
+                if (mst.S_START_LOC != null && mst.S_END_LOC != null)
+                {
+                    bool res = false;
+                    if (mst.S_TYPE == "澶т欢")
+                    {
+                        string src = $"\"src\":\"{mst.S_START_LOC}\",";
+                        string dst = $"\"dst\":\"{mst.S_END_LOC}\",";
+                        string carrier_type_id = $"\"carrier_type_id\":\"1\"";
+                        string parmeS = "{";
+                        string parmeD = "}";
+                        string parme = parmeS + src + dst + carrier_type_id + parmeD;
 
+                        LogHelper.Info($"鎺ㄩ�浠诲姟鍙傛暟{parme}", "浠诲姟");
+                        AntsTaskModel model = new AntsTaskModel();
+                        model.order_name = mst.S_CODE;
+                        model.priority = 1;
+                        model.dead_line = DateTime.Now.ToString();
+                        model.ts_name = "p2p";
+                        model.parameters = parme;
+                        //model.parameters = new AntsParasModel { 
+                        //    src = mst.S_START_LOC,
+                        //    dst = mst.S_END_LOC,
+                        //    carrier_type_id="-99"
+                        //};
+                        res = RcsHelper.CreateAntsOrder(model);
+                    }
+                    else if (mst.S_TYPE == "灏忎欢閫氱敤杞﹀瀷")
+                    {
+                        string src = $"\"src\":\"{mst.S_START_LOC}\",";
+                        string dst = $"\"dst\":\"{mst.S_END_LOC}\",";
+                        string car_type = $"\"car_type\":\"1\",";
+                        string src_ort = $"\"src_ort\":\"-1\",";
+                        string dst_ort = $"\"dst_ort\":\"-1\"";
+                        string parmeS = "{";
+                        string parmeD = "}";
+                        string parme = parmeS + src + dst + car_type + src_ort + dst_ort + parmeD;
+
+                        LogHelper.Info($"鎺ㄩ�浠诲姟鍙傛暟{parme}", "浠诲姟");
+
+                        PickingTaskModel model = new PickingTaskModel();
+                        model.order_name = mst.S_CODE;
+                        model.priority = 1;
+                        model.dead_line = DateTime.Now.ToString();
+                        model.ts_name = "p2p";
+                        model.parameters = parme;
+                        //model.parameters = new AntsParasModel { 
+                        //    src = mst.S_START_LOC,
+                        //    dst = mst.S_END_LOC,
+                        //    carrier_type_id="-99"
+                        //};
+                        res = RcsHelper.CreatePickingOrder(model);
+                    }
+                    else if (mst.S_TYPE == "inbound")
+                    {
+                        //鏌ュ嚭璐ф灦缂栫爜
+                        var db = new SqlHelper<Object>().GetInstance();
+                        var locFrameRel = db.Queryable<LocFrameRel>().Where(a => a.S_LOC_CODE == mst.S_START_LOC).First();
+                        string tote_id = $"\"tote_id\":\"{locFrameRel.S_FRAME_CODE}\",";
+                        string task_type = $"\"task_type\":\"{mst.S_TYPE}\",";
+                        string src = $"\"src\":\"{mst.S_START_LOC}\",";
+                        string dst = $"\"dst\":\"{mst.S_END_LOC}\",";
+
+                        string extra_info = $"\"extra_info\":";
+                        string layer = $"\"layer\":[1,2,3,4],";
+                        string put = $"\"put\":true";
+                        string parmeS = "{";
+                        string parmeD = "}";
+                        string parmezS = "[";
+                        string parmezD = "]";
+                        string parme = parmeS + tote_id + task_type + src + dst + extra_info + parmezS+ parmeS  + layer + put + parmeD + parmezD + parmeD;
+
+                        LogHelper.Info($"鎺ㄩ�浠诲姟鍙傛暟{parme}", "浠诲姟");
+
+                        PickingTaskModel model = new PickingTaskModel();
+                        model.order_name = mst.S_CODE;
+                        model.priority = 1;
+                        model.dead_line = DateTime.Now.ToString();
+                        model.ts_name = "picking_ts";
+                        model.parameters = parme;
+                        //model.parameters = new AntsParasModel { 
+                        //    src = mst.S_START_LOC,
+                        //    dst = mst.S_END_LOC,
+                        //    carrier_type_id="-99"
+                        //};
+                        res = RcsHelper.CreatePickingOrder(model);
+                    }
+
+
+                    if (res)
+                    {
+                        //鏇存柊浠诲姟鐘舵�
+                        mst.N_B_STATE = 1;
+                        //mst.S_EQ_TASK_CODE = res.ToString();
+                        WCSHelper.UpdateStatus(mst);
+                        WCSHelper.UpdateEQNo(mst);
+                        ////鎺ㄩ�鎴愬姛锛屼慨鏀逛换鍔$姸鎬�+                        //TaskHelper.UpdateStatus(mst, "宸叉帹閫�);
+                        ////鎺ㄩ�鎴愬姛锛屼慨鏀瑰浗鑷狪D
+                        //TaskHelper.UpdateGzId(mst, res);
+                        LogHelper.Info($"浠诲姟mst {mst.S_CODE}鎺ㄩ�鎴愬姛", "浠诲姟");
+                        result = true;
+                    }
+
+                }
+
+            }
+
+            else { result = true; }
+            return result;
+        }
 
         /// <summary>
         /// 鍒涘缓鎼繍浠诲姟
@@ -396,6 +507,28 @@
                 //浠诲姟鍒涘缓鎴愬姛锛岃捣鐐硅揣浣嶅嚭搴撻攣瀹氾紝缁堢偣璐т綅鍏ュ簱閿佸畾
                 LocationHelper.LockLoc(start, 2);
                 LocationHelper.LockLoc(end, 1);
+            }
+            return result;
+        }
+        //灏忕背澶т欢
+        public static bool CreateTransportDj(string start, string end, string taskType, string cntrs, string orderName, int startLayer, int endLayer, int trayCarryCount = 1, int priority = 1)
+        {
+            var result = false;
+            var trayCodes = cntrs;
+            var taskNo = DateTime.Now.Ticks.ToString();
+
+
+
+            var res = WCSHelper.CreateTaskDj(taskNo, start.Trim(), end.Trim(), taskType, priority, trayCodes, orderName, trayCarryCount, startLayer, endLayer);
+            if (res)
+            {
+                result = true;
+                //浠诲姟鍒涘缓鎴愬姛锛岃捣鐐硅揣浣嶅嚭搴撻攣瀹氾紝缁堢偣璐т綅鍏ュ簱閿佸畾
+                LocationHelper.LockLoc(start, 2);
+                if (end!=null&& end != "")
+                {
+                    LocationHelper.LockLoc(end, 1);
+                }
             }
             return result;
         }
@@ -714,7 +847,7 @@
                         result = list.OrderBy(s => s.N_ROW).ThenBy(x => x.N_COL).FirstOrDefault();
 
                     }
-                    
+
                 }
 
             }
@@ -728,7 +861,7 @@
 
 
         /// <summary>
-        /// 鍑哄簱绠楁硶
+        /// 鍑哄簱绠楁硶 鍏堣繘鍏堝嚭
         /// </summary>
         /// <param name="area">搴撳尯</param>
         /// <returns></returns>
@@ -767,6 +900,108 @@
                 LogHelper.Error("OutWorkTransport:" + ex.Message, ex);
             }
             return result;
+        }
+
+        /// <summary>
+        /// 灏忕背鍑哄簱绠楁硶 鍏堣繘鍏堝嚭
+        /// </summary>
+        /// <param name="area">搴撳尯</param>
+        /// <returns></returns>
+        public static Location OutWorkTransportXm(string area, string issueMode)
+        {
+            Location result = null;
+            try
+            {
+                var db = new SqlHelper<Object>().GetInstance();
+
+                // 鑾峰彇鎵�湁绗﹀悎鏉′欢鐨勮揣浣�+                var query = db.Queryable<Location>().Where(a => a.S_AREA_CODE == area);
+
+                // 鏍规嵁鍙戞枡鏂瑰紡搴旂敤涓嶅悓鐨勭瓫閫夊拰鎺掑簭閫昏緫
+                switch (issueMode)
+                {
+                    case "9": // 鍙戞弧绠憋紝鏁伴噺澶т簬0鐨勫厛杩涘厛鍑�+                        query = query.Where(a => a.N_CURRENT_NUM > 0);
+                        var list9 = query.ToList()
+                            .OrderBy(s => s.T_CREATE) // 鍏堣繘鍏堝嚭
+                            .ToList();
+                        result = GetFirstAvailableLocation(list9);
+                        break;
+
+                    case "0": // 鍙戠┖绠憋紝鏁伴噺=0鐨勫厛杩涘厛鍑�+                        query = query.Where(a => a.N_CURRENT_NUM == 0);
+                        var list0 = query.ToList()
+                            .OrderBy(s => s.T_CREATE) // 鍏堣繘鍏堝嚭
+                            .ToList();
+                        result = GetFirstAvailableLocation(list0);
+                        break;
+
+                    case "8": // 绠卞瓙鍨嬪彿浼樺厛绾э細娈嬬>绌虹锛堟畫鍐呰‖锛�婊$>绌虹>绌虹锛堟弧鍐呰‖锛�鍏跺畠
+                        var list8 = query.ToList()
+                            .OrderBy(s => GetBoxTypePriority(s,new[] { "2", "4", "1", "3", "5" })) // 鎸夋寚瀹氫紭鍏堢骇鎺掑簭
+                            .ThenBy(s => s.T_CREATE) // 鐩稿悓浼樺厛绾ф寜鍏堣繘鍏堝嚭
+                            .ToList();
+                        result = GetFirstAvailableLocation(list8);
+                        break;
+
+                    case "1": // 绠卞瓙鍨嬪彿浼樺厛绾э細娈嬬>绌虹锛堟畫鍐呰‖锛�绌虹>绌虹锛堟弧鍐呰‖锛�婊$>鍏跺畠
+                        var list1 = query.ToList()
+                            .OrderBy(s => GetBoxTypePriority(s,new[] { "2", "4", "3", "5", "1" })) // 鎸夋寚瀹氫紭鍏堢骇鎺掑簭
+                            .ThenBy(s => s.T_CREATE) // 鐩稿悓浼樺厛绾ф寜鍏堣繘鍏堝嚭
+                            .ToList();
+                        result = GetFirstAvailableLocation(list1);
+                        break;
+
+                    default: // 涓嶅~-鎸夊厛杩涘厛鍑�+                        var listDefault = query.ToList()
+                            .OrderBy(s => s.T_CREATE) // 鍏堣繘鍏堝嚭
+                            .ToList();
+                        result = GetFirstAvailableLocation(listDefault);
+                        break;
+                }
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine("OutWorkTransport:" + ex.Message + ex.StackTrace);
+                LogHelper.Error("OutWorkTransport:" + ex.Message, ex);
+            }
+            return result;
+        }
+
+        // 杈呭姪鏂规硶锛氭牴鎹瀛愬瀷鍙疯幏鍙栦紭鍏堢骇
+        private static int GetBoxTypePriority(Location location, string[] priorityOrder)
+        {
+            var db = new SqlHelper<Object>().GetInstance();
+            var locCntrRel = db.Queryable<LocCntrRel>().Where(s => s.S_LOC_CODE == location.S_CODE).First();
+            if (locCntrRel != null)
+            {
+                var container = db.Queryable<Container>().Where(c => c.S_CODE == locCntrRel.S_CNTR_CODE).First();
+                if (container != null)
+                {
+                    // 鏌ユ壘绠卞瓙鍨嬪彿鍦ㄤ紭鍏堢骇鏁扮粍涓殑浣嶇疆
+                    var index = Array.IndexOf(priorityOrder, container.S_SPEC);
+                    return index >= 0 ? index : priorityOrder.Length; // 涓嶅湪浼樺厛绾у垪琛ㄤ腑鐨勬帓鍦ㄦ渶鍚�+                }
+            }
+            return priorityOrder.Length; // 娌℃湁鍏宠仈瀹瑰櫒鐨勬帓鍦ㄦ渶鍚�+        }
+
+        // 杈呭姪鏂规硶锛氳幏鍙栫涓�釜鍙敤鐨勮揣浣�+        private static Location GetFirstAvailableLocation(List<Location> locations)
+        {
+            var db = new SqlHelper<Object>().GetInstance();
+            foreach (var location in locations)
+            {
+                if (location.N_LOCK_STATE == 0) // 鍒ゆ柇璐т綅鏄惁琚攣浣�+                {
+                    var locCntrRel = db.Queryable<LocCntrRel>().Where(s => s.S_LOC_CODE == location.S_CODE).First();
+                    if (locCntrRel != null) // 鍒ゆ柇鏄惁鏈夋墭鐩�+                    {
+                        return location;
+                    }
+                }
+            }
+            return null;
         }
         /// <summary>
         /// WMS鍑哄簱杞繍
@@ -891,81 +1126,352 @@
                 var startLoc = new Location();
                 string endLocStr = null;
                 string Message = null;
+                //鏍¢獙浠诲姟缂栧彿鏄惁瀛樺湪
+                if (repeatTaskCode(model.order_name))
+                {
+                    Message = model.order_name+"浠诲姟缂栧彿宸插瓨鍦�;
+                    return new TaskResponse
+                    {
+                        header = new ResponseHead { code = 0, desc = Message }
+                    };
+                }
                 switch (model.ts_name)
                 {
                     case "p2p":
-                        startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameter.src).First();
+                        startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameters.src).First();
                         if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y")
                         {
-                            Message = $"{model.parameter.src}搴撲綅宸茶閿佸畾!";
+                            Message = $"{model.parameters.src}搴撲綅宸茶閿佸畾!";
+                            return new TaskResponse
+                            {
+                                header = new ResponseHead { code = 0, desc = Message }
+                            };
                         }
-                        endLocStr = model.parameter.dst;
-                        
+                        endLocStr = model.parameters.dst;
+
                         break;
                     case "p2a":
-                        startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameter.src).First();
+                        startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameters.src).First();
                         if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y")
                         {
-                            Message = $"{model.parameter.src}搴撲綅宸茶閿佸畾!";
+                            Message = $"{model.parameters.src}搴撲綅宸茶閿佸畾!";
+                            return new TaskResponse
+                            {
+                                header = new ResponseHead { code = 0, desc = Message }
+                            };
                         }
-                        var endLoc = InWorkTransport(model.parameter.dst_area);
-                        if (endLoc==null)
+                        var endLoc = InWorkTransport(model.parameters.dst_area);
+                        if (endLoc == null)
                         {
                             //濡傛灉娌℃壘鍒板氨绛夌涓�潯
-                            endLocStr = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == model.parameter.dst).OrderByDescending(a => a.N_ROW).ToList()[0].S_CODE;
+                            endLocStr = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == model.parameters.dst).OrderByDescending(a => a.N_ROW).ToList()[0].S_CODE;
 
                         }
                         break;
                     case "a2p":
-                        startLoc = OutWorkTransport(model.parameter.src_area);
-                        if (startLoc==null)
-                        {
-                            Message = $"{model.parameter.dst}搴撳尯娌℃湁鍙嚭璐т綅!";
-                        }
-
-                        endLocStr = model.parameter.dst;
-                        break;
-                    case "a2a":
-                        startLoc = OutWorkTransport(model.parameter.src_area);
+                        startLoc = OutWorkTransportXm(model.parameters.src_area, model.parameters.issueMode);
                         if (startLoc == null)
                         {
-                            Message = $"{model.parameter.src}搴撳尯娌℃湁鍙嚭璐т綅!";
+                            Message = $"{model.parameters.dst}搴撳尯娌℃湁鍙嚭璐т綅!";
+                            return new TaskResponse
+                            {
+                                header = new ResponseHead { code = 0, desc = Message }
+                            };
                         }
-                        var endLoc1 = InWorkTransport(model.parameter.dst_area);
+
+                        endLocStr = model.parameters.dst;
+                        break;
+                    case "a2a":
+                        startLoc = OutWorkTransportXm(model.parameters.src_area,model.parameters.issueMode);
+                        if (startLoc == null)
+                        {
+                            Message = $"{model.parameters.src}搴撳尯娌℃湁鍙嚭璐т綅!";
+                            return new TaskResponse
+                            {
+                                header = new ResponseHead { code = 0, desc = Message }
+                            };
+                        }
+                        var endLoc1 = InWorkTransport(model.parameters.dst_area);
                         if (endLoc1 == null)
                         {
                             //濡傛灉娌℃壘鍒板氨绛夌涓�潯
-                            endLocStr = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == model.parameter.dst).OrderByDescending(a => a.N_ROW).ToList()[0].S_CODE;
+                            endLocStr = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == model.parameters.dst).OrderByDescending(a => a.N_ROW).ToList()[0].S_CODE;
 
                         }
                         break;
                     case "p2u":
-                        startLoc = OutWorkTransport(model.parameter.src);
+                        startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameters.src).First();
+                        if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y")
+                        {
+                            Message = $"{model.parameters.src}搴撲綅宸茶閿佸畾!";
+                            return new TaskResponse
+                            {
+                                header = new ResponseHead { code = 0, desc = Message }
+                            };
+                        }
+                        endLocStr = "";
+                        break;
+                    case "a2u":
+                        startLoc = OutWorkTransportXm(model.parameters.src, model.parameters.issueMode);
                         if (startLoc == null)
                         {
-                            Message = $"{model.parameter.src}搴撳尯娌℃湁鍙嚭璐т綅!";
+                            Message = $"{model.parameters.src}搴撳尯娌℃湁鍙嚭璐т綅!";
+                            return new TaskResponse
+                            {
+                                header = new ResponseHead { code = 0, desc = Message }
+                            };
                         }
                         endLocStr = "";
                         break;
                 }
 
+                LogHelper.Info($"bigMaterial  鎺ユ敹鍙傛暟{JsonConvert.SerializeObject(model)}");
                 //鍒涘缓鎵樼洏璐т綅缁戝畾鍏崇郴
                 string trayCode = ContainerHelper.GenerateCntrNo();
                 //缁戝畾璧风偣璐т綅(浜х嚎)鍜岀墿鏂�-                ContainerHelper.BindLocCntrsXm(startLoc.S_CODE, trayCode, model.parameter.sku, "", model.parameter.BatchNo, model.parameter.issueMode, model.parameter.num);
+                ContainerHelper.BindLocCntrsXm(startLoc.S_CODE, trayCode, model.parameters.sku, "", model.parameters.BatchNo, model.parameters.issueMode, model.parameters.num, model.parameters.boxType);
 
                 var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLoc.S_CODE).First();
                 //鍒涘缓浠诲姟
-                LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{startLoc.S_CODE}缁堢偣:{endLocStr}", model.ts_name);
-                var res = TaskProcess.CreateTransport(startLoc.S_CODE, endLocStr, model.ts_name, locCntrRel.S_CNTR_CODE, 1, 1);
-                if (!res)
+                LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{startLoc.S_CODE}缁堢偣:{endLocStr}", "澶т欢");
+                var res = TaskProcess.CreateTransportDj(startLoc.S_CODE, endLocStr, "澶т欢", locCntrRel.S_CNTR_CODE, model.order_name, 1, 1);
+                var result = new TaskResponse();
+                if (res)
+                {
+                    result = new TaskResponse
+                    {
+                        header = new ResponseHead { code = 200, desc = "SUCCESS" },
+                        body = new ResponseBody
+                        {
+                            msg = "success",
+                            app_name = "Guozi client",
+                            data = new List<ResponseData> { new ResponseData { in_order_id = model.order_name } },
+                            version = ""
+                        }
+                    };
+                }
+                else {
+                    Message = $"鍒涘缓浠诲姟 璧风偣:{startLoc.S_CODE}缁堢偣:{endLocStr}澶辫触";
+                    result = new TaskResponse
+                    {
+                        header = new ResponseHead { code = 0, desc = Message }
+                    }; 
+                }
+                return result;
+
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine("bigMaterial:" + ex.Message + ex.StackTrace);
+                LogHelper.Error("bigMaterial:" + ex.Message, ex);
+                throw;
+            }
+
+        }
+
+        //灏忎欢
+        public static TaskResponse smallMaterial(smallMaterial model)
+        {
+            var db = new SqlHelper<Location>().GetInstance();
+            try
+            {
+                string Message = null;
+
+                //鎷嗗垎鎴愪袱鏉′换鍔★紝涓�潯鏄枡鏋跺埌鎸囧畾鐨勭紦瀛樺尯锛屼簩鏄枡鏋朵笂鐨勬墭鐩樺埌鎸囧畾鐨勫伐浣嶏紙灏忕背wcs浼狅級涓�澶�+                var startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.taskList[0].parameters.src).First();
+                if (startLoc == null || startLoc.N_LOCK_STATE != 0)
                 {
                     return new TaskResponse
                     {
-                        header = new ResponseHead { code = 1, desc = Message }
+                        header = new ResponseHead { code = 0, desc = $"{model.taskList[0].parameters.src}搴撲綅宸茶閿佸畾!" }
                     };
+                }
+                var endLoc = TaskProcess.InWorkTransport(model.shippingRoute);
+                if (endLoc != null)
+                {
+                    ////鍒涘缓鍒扮紦瀛樺尯浠诲姟
+                    //var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLoc.S_CODE).First();
+                    
+                    //鎵緋2a鐨勪换鍔$紪鐮�+                    var order_name = model.taskList.Find(s=>s.ts_name=="p2a").order_name;
+                    //鏍¢獙浠诲姟缂栧彿鏄惁瀛樺湪
+                    if (repeatTaskCode(order_name))
+                    {
+                        Message = order_name + "浠诲姟缂栧彿宸插瓨鍦�;
+                        return new TaskResponse
+                        {
+                            header = new ResponseHead { code = 0, desc = Message }
+                        };
+                    }
+                    //鍒涘缓浠诲姟
+                    LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{startLoc.S_CODE}缁堢偣:{endLoc.S_CODE}", "灏忎欢閫氱敤杞﹀瀷");
+                    var res = TaskProcess.CreateTransportDj(startLoc.S_CODE, endLoc.S_CODE, "灏忎欢閫氱敤杞﹀瀷", model.rackNumber, order_name, 1, 1);
+                    if (!res)
+                    {
+                        return new TaskResponse
+                        {
+                            header = new ResponseHead { code = 0, desc = $"鍒涘缓浠诲姟 璧风偣:{startLoc.S_CODE}缁堢偣:{endLoc.S_CODE}澶辫触" }
+                        };
+                    }
+                }
+                var result = new TaskResponse();
+                //鏂欐灦涓婄殑鎵樼洏鍒版寚瀹氱殑宸ヤ綅
+                foreach (var tasklist in model.taskList)
+                {
+                    if (tasklist.ts_name == "p2p")
+                    {
+                        //鏍¢獙浠诲姟缂栧彿鏄惁瀛樺湪
+                        if (repeatTaskCode(tasklist.order_name))
+                        {
+                            Message = tasklist.order_name + "浠诲姟缂栧彿宸插瓨鍦�;
+                            return new TaskResponse
+                            {
+                                header = new ResponseHead { code = 0, desc = Message }
+                            };
+                        }
+                        //鍏堢粦瀹氭枡鏋跺拰鏂欑浣�+                        ContainerHelper.BindLocCntrsXmLj(tasklist.rackPosition, model.rackNumber);
+
+                        var startloc = db.Queryable<Location>().Where(a => a.S_CODE == tasklist.rackPosition).First();
+                        if (startloc == null || startloc.N_LOCK_STATE != 0)
+                        {
+                            return new TaskResponse
+                            {
+                                header = new ResponseHead { code = 0, desc = $"{startloc.S_CODE}搴撲綅宸茶閿佸畾!" }
+                            };
+                        }
+                        var endlocstr = tasklist.parameters.dst;
+
+                        //鍒涘缓鎵樼洏璐т綅缁戝畾鍏崇郴
+                        string trayCode = ContainerHelper.GenerateCntrNo();
+                        //缁戝畾璧风偣璐т綅(浜х嚎)鍜岀墿鏂�+                        ContainerHelper.BindLocCntrsXm(startloc.S_CODE, trayCode, tasklist.parameters.sku, "", tasklist.parameters.BatchNo, tasklist.parameters.issueMode, tasklist.parameters.num,"");
+
+                        var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startloc.S_CODE).First();
+                        //鍒涘缓浠诲姟
+                        LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{startloc.S_CODE}缁堢偣:{endlocstr}", "inbound");
+                        var res = TaskProcess.CreateTransportDj(startloc.S_CODE, endlocstr, "inbound", locCntrRel.S_CNTR_CODE, tasklist.order_name, 1, 1);
+                        
+                        if (res)
+                        {
+                            result = new TaskResponse
+                            {
+                                header = new ResponseHead { code = 200, desc = "SUCCESS" },
+                                body = new ResponseBody
+                                {
+                                    msg = "success",
+                                    app_name = "Guozi client",
+                                    data = new List<ResponseData> { new ResponseData { in_order_id = tasklist.order_name } },
+                                    version = ""
+                                }
+                            };
+                        }
+                        else
+                        {
+                            Message = $"鍒涘缓浠诲姟 璧风偣:{startloc.S_CODE}缁堢偣:{endlocstr}澶辫触";
+                            result = new TaskResponse
+                            {
+                                header = new ResponseHead { code = 0, desc = Message }
+                            };
+                        }
+
+                    }
 
                 }
+                return result;
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine("smallMaterial:" + ex.Message + ex.StackTrace);
+                LogHelper.Error("smallMaterial:" + ex.Message, ex);
+                throw;
+            }
+        }
+        //浠诲姟鍙烽噸澶嶅垽鏂�+        private static bool repeatTaskCode(string orderName) {
+            var db = new SqlHelper<WCSTask>().GetInstance();
+            var result = db.Queryable<WCSTask>().Where(a => a.S_CODE == orderName).Count();
+            return result > 0;
+
+        }
+
+        //浼犳劅鍣ㄥ皬浠�+        public static TaskResponse sensorSmallMaterial(sensorSmallMaterial model)
+        {
+            var db = new SqlHelper<Location>().GetInstance();
+            try
+            {
+                string Message = null;
+
+
+
+                ////鎷嗗垎鎴愪袱鏉′换鍔★紝涓�潯鏄枡鏋跺埌鎸囧畾鐨勭紦瀛樺尯锛屼簩鏄枡鏋朵笂鐨勬墭鐩樺埌鎸囧畾鐨勫伐浣嶏紙灏忕背wcs浼狅級涓�澶�+                //var startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.taskList[0].parameters.src).First();
+                //if (startLoc == null || startLoc.N_LOCK_STATE != 0)
+                //{
+                //    return new TaskResponse
+                //    {
+                //        header = new ResponseHead { code = 0, desc = $"{model.taskList[0].parameters.src}搴撲綅宸茶閿佸畾!" }
+                //    };
+                //}
+                //var endLoc = TaskProcess.InWorkTransport(model.shippingRoute);
+                //if (endLoc != null)
+                //{
+                //    ////鍒涘缓鍒扮紦瀛樺尯浠诲姟
+                //    //var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLoc.S_CODE).First();
+
+                //    //鎵緋2a鐨勪换鍔$紪鐮�+                //    var order_name = model.taskList.Find(s => s.ts_name == "p2a").order_name;
+                //    //鍒涘缓浠诲姟
+                //    LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{startLoc.S_CODE}缁堢偣:{endLoc.S_CODE}", "灏忎欢閫氱敤杞﹀瀷");
+                //    var res = TaskProcess.CreateTransportDj(startLoc.S_CODE, endLoc.S_CODE, "灏忎欢閫氱敤杞﹀瀷", model.rackNumber, order_name, 1, 1);
+                //    if (!res)
+                //    {
+                //        return new TaskResponse
+                //        {
+                //            header = new ResponseHead { code = 0, desc = "鑷姩涓婄嚎浠诲姟鍒涘缓澶辫触" }
+                //        };
+                //    }
+                //}
+                ////鏂欐灦涓婄殑鎵樼洏鍒版寚瀹氱殑宸ヤ綅
+                //foreach (var tasklist in model.taskList)
+                //{
+                //    if (tasklist.ts_name == "p2p")
+                //    {
+                //        //鍏堢粦瀹氭枡鏋跺拰鏂欑浣�+                //        ContainerHelper.BindLocCntrsXmLj(tasklist.rackPosition, model.rackNumber);
+
+                //        var startloc = db.Queryable<Location>().Where(a => a.S_CODE == tasklist.rackPosition).First();
+                //        if (startloc == null || startloc.N_LOCK_STATE != 0)
+                //        {
+                //            return new TaskResponse
+                //            {
+                //                header = new ResponseHead { code = 0, desc = $"{startloc.S_CODE}搴撲綅宸茶閿佸畾!" }
+                //            };
+                //        }
+                //        var endlocstr = tasklist.parameters.dst;
+
+                //        //鍒涘缓鎵樼洏璐т綅缁戝畾鍏崇郴
+                //        string trayCode = ContainerHelper.GenerateCntrNo();
+                //        //缁戝畾璧风偣璐т綅(浜х嚎)鍜岀墿鏂�+                //        ContainerHelper.BindLocCntrsXm(startloc.S_CODE, trayCode, tasklist.parameters.sku, "", tasklist.parameters.BatchNo, tasklist.parameters.issueMode, tasklist.parameters.num);
+
+                //        var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startloc.S_CODE).First();
+                //        //鍒涘缓浠诲姟
+                //        LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{startloc.S_CODE}缁堢偣:{endlocstr}", "inbound");
+                //        var res = TaskProcess.CreateTransportDj(startloc.S_CODE, endlocstr, "inbound", locCntrRel.S_CNTR_CODE, tasklist.order_name, 1, 1);
+                //        if (!res)
+                //        {
+                //            return new TaskResponse
+                //            {
+                //                header = new ResponseHead { code = 1, desc = Message }
+                //            };
+
+                //        }
+
+                //    }
+
+                //}
                 var result = new TaskResponse();
                 if (Message != null)
                 {
@@ -990,137 +1496,16 @@
                 }
                 return result;
 
+
+
             }
             catch (Exception ex)
             {
-                Console.WriteLine("bigMaterial:" + ex.Message + ex.StackTrace);
-                LogHelper.Error("bigMaterial:" + ex.Message, ex);
+                Console.WriteLine("smallMaterial:" + ex.Message + ex.StackTrace);
+                LogHelper.Error("smallMaterial:" + ex.Message, ex);
                 throw;
             }
-
         }
-
-        
-        public static TaskResponse autoSmallMaterial(smallMaterial model) {
-            var db = new SqlHelper<Location>().GetInstance();
-
-            string Message = null;
-
-            //鎷嗗垎鎴愪袱鏉′换鍔★紝涓�潯鏄枡鏋跺埌鎸囧畾鐨勭紦瀛樺尯锛屼簩鏄枡鏋朵笂鐨勬墭鐩樺埌鎸囧畾鐨勫伐浣嶏紙灏忕背wcs浼狅級涓�澶�-            var startFrame = db.Queryable<LocFrameRel>().Where(a => a.S_LOC_CODE == model.parameters[0].src).First();
-
-            var startLoc = db.Queryable<Location>().Where(a => a.S_CODE == startFrame.S_FRAME_CODE).First();
-            if (startLoc == null || startLoc.N_LOCK_STATE != 0)
-            {
-                return new TaskResponse
-                {
-                    header = new ResponseHead { code = 0, desc = $"{model.parameters[0].src}搴撲綅宸茶閿佸畾!" }
-                };
-            }
-            var endReservoirs = Settings.ReservoirAreas.Where(s => s.areaName == model.routeType).FirstOrDefault();
-            var endLoc = TaskProcess.InWorkTransport(endReservoirs.areaCode);
-            if (endLoc != null)
-            {
-                //鍒涘缓鍒扮紦瀛樺尯浠诲姟
-                var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLoc.S_CODE).First();
-                //鍒涘缓浠诲姟
-                LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{startLoc.S_CODE}缁堢偣:{endLoc.S_CODE}", model.ts_name);
-                var res = TaskProcess.CreateTransportHj(startLoc.S_CODE, endLoc.S_CODE, model.ts_name, locCntrRel.S_FRAME_CODE, 1, 1);
-                if (!res)
-                {
-                    return new TaskResponse
-                    {
-                        header = new ResponseHead { code = 0, desc = "鑷姩涓婄嚎浠诲姟鍒涘缓澶辫触" }
-                    }; 
-                }
-            }
-            //鏂欐灦涓婄殑鎵樼洏鍒版寚瀹氱殑宸ヤ綅
-            foreach (var parameter in model.parameters)
-            {
-                var startLocHj = db.Queryable<Location>().Where(a => a.S_CODE == parameter.src).First();
-                if (startLocHj == null || startLocHj.N_LOCK_STATE != 0)
-                {
-                     Message = Message==null? $"{model.parameters[0].src}搴撲綅宸茶閿佸畾!": Message+ $"{model.parameters[0].src}搴撲綅宸茶閿佸畾!";
-                }
-                else
-                {
-                    //璐ф灦涓婄殑璐у垽鏂竴涓嬭揣鏋舵湁娌℃湁閿�-                    var startFrameParent = db.Queryable<LocFrameRel>().Where(a => a.S_LOC_CODE == parameter.src).First();
-                    if (startFrameParent != null)
-                    {
-                        var startLocParent = db.Queryable<Location>().Where(a => a.S_CODE == startFrameParent.S_FRAME_CODE).First();
-                        if (startLocParent == null || startLocParent.N_LOCK_STATE != 0)
-                        {
-                            return new TaskResponse
-                            {
-                                header = new ResponseHead { code = 0, desc = $"{startFrameParent.S_FRAME_CODE}璐ф灦宸茶閿佸畾!" }
-                            };
-                        }
-                    }
-                    var endLocHj = db.Queryable<Location>().Where(a => a.S_CODE == parameter.dst).First();
-                    if (endLocHj == null || endLocHj.N_LOCK_STATE != 0 || endLocHj.C_ENABLE != "Y")
-                    {
-                        //搴旇缁曡矾
-
-                        Message = Message == null ? $"{parameter.dst}搴撲綅宸茶閿佸畾!" : Message + $"{parameter.dst}搴撲綅宸茶閿佸畾!";
-                    }
-                    else
-                    {
-                        //璐ф灦涓婄殑璐у垽鏂竴涓嬭揣鏋舵湁娌℃湁閿�-                        var endFrameParent = db.Queryable<LocFrameRel>().Where(a => a.S_LOC_CODE == parameter.dst).First();
-                        if (endFrameParent != null)
-                        {
-                            var endLocParent = db.Queryable<Location>().Where(a => a.S_CODE == endFrameParent.S_FRAME_CODE).First();
-                            if (endLocParent == null || endLocParent.N_LOCK_STATE != 0)
-                            {
-                                return new TaskResponse
-                                {
-                                    header = new ResponseHead { code = 0, desc = $"{endFrameParent.S_FRAME_CODE}璐ф灦宸茶閿佸畾!" }
-                                };
-                            }
-                        }
-                        //鍒涘缓鍒扮紦瀛樺尯浠诲姟
-                        var locCntrRel1 = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLocHj.S_CODE).First();
-                        //鍒涘缓浠诲姟
-                        LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{startLocHj.S_CODE}缁堢偣:{endLocHj.S_CODE}", model.ts_name);
-                        var res = TaskProcess.CreateTransport(startLocHj.S_CODE, endLocHj.S_CODE, model.ts_name, locCntrRel1.S_CNTR_CODE, 1, 1);
-                        if (!res)
-                        {
-                            return new TaskResponse
-                            {
-                                header = new ResponseHead { code = 0, desc = "鑷姩涓婄嚎浠诲姟2鍒涘缓澶辫触" }
-                            };
-                        }
-
-                    }
-                    
-                }
-            }
-            var result = new TaskResponse();
-            if (Message != null)
-            {
-                result = new TaskResponse
-                {
-                    header = new ResponseHead { code = 0, desc = Message }
-                };
-            }
-            else
-            {
-                result = new TaskResponse
-                {
-                    header = new ResponseHead { code = 200, desc = "SUCCESS" },
-                    body = new ResponseBody
-                    {
-                        msg = "success",
-                        app_name = "Guozi client",
-                        data = new List<ResponseData> { new ResponseData { in_order_id = model.taskID } },
-                        version = ""
-                    }
-                };
-            }
-            return result;
-        }
-        
 
 
     }

--
Gitblit v1.9.1