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/api/WmsController.cs          |    8 
 HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/dispatch/GZRobot.cs           |   66 ++++++
 HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/Container.cs           |    1 
 HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/process/TaskProcess.cs        |  334 ++++++++++++++++++++++++++++++---
 HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/HH.WCS.XiaoMi.csproj          |    1 
 HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/CntrItemDetail.cs      |    3 
 HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/bigMaterial.cs         |    1 
 HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/wms/ContainerHelper.cs        |    4 
 HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/dispatch/RcsHelper.cs         |   10 
 HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/core/WMSCore.cs               |   78 +++---
 HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/smallMaterial.cs       |    4 
 HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/wms/WCSHelper.cs              |    9 
 HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/util/HttpHelper.cs            |   40 ++++
 HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/sensorSmallMaterial.cs |   32 +++
 14 files changed, 505 insertions(+), 86 deletions(-)

diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/HH.WCS.XiaoMi.csproj b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/HH.WCS.XiaoMi.csproj
index 04e3936..75c6362 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/HH.WCS.XiaoMi.csproj
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/HH.WCS.XiaoMi.csproj
@@ -221,6 +221,7 @@
     <Compile Include="dispatch\XMWcsHelper.cs" />
     <Compile Include="models\LocFrameRel.cs" />
     <Compile Include="models\bigMaterial.cs" />
+    <Compile Include="models\sensorSmallMaterial.cs" />
     <Compile Include="models\smallMaterial.cs" />
     <Compile Include="models\AutoRepairEmptyTray.cs" />
     <Compile Include="models\TN_ISUSING.cs" />
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/api/WmsController.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/api/WmsController.cs
index 3dc0b70..7f62a82 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/api/WmsController.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/api/WmsController.cs
@@ -41,6 +41,14 @@
             LogHelper.Info("smallMaterial 杩斿洖锛� + JsonConvert.SerializeObject(res), "WMSAPI");
             return res;
         }
+        [HttpPost]
+        public TaskResponse sensorSmallMaterial(sensorSmallMaterial model)
+        {
+            LogHelper.Info("sensorSmallMaterial 鍙傛暟锛� + JsonConvert.SerializeObject(model), "WMSAPI");
+            var res = TaskProcess.sensorSmallMaterial(model);
+            LogHelper.Info("sensorSmallMaterial 杩斿洖锛� + JsonConvert.SerializeObject(res), "WMSAPI");
+            return res;
+        }
 
     }
 }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/core/WMSCore.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/core/WMSCore.cs
index ab3d537..13ad006 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/core/WMSCore.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/core/WMSCore.cs
@@ -324,48 +324,48 @@
         //}
 
 
-        /// <summary>
-        /// 澶т欢鍖哄埌鍖�鍛煎彨绌虹
-        /// </summary>
-        /// <param name="model"></param>
-        /// <returns></returns>
-        public static void bigMateriala2a()
-        {
-            var db = new SqlHelper<Location>().GetInstance();
-            try
-            {
-                var startLoc = new Location();
-                var endLoc = new Location();
-                var endReservoirs = Settings.ReservoirAreas.Where(s => s.areaName == "").FirstOrDefault();
-                endLoc =TaskProcess.InWorkTransport(endReservoirs.areaCode);
-                if (endLoc != null)
-                {
-                    var startReservoirs = Settings.ReservoirAreas.Where(s => s.areaName == "").FirstOrDefault();
-                    startLoc = TaskProcess.OutWorkTransport(startReservoirs.areaCode);
-                    var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLoc.S_CODE).First();
-                    //鍒涘缓浠诲姟
-                    LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{startLoc.S_CODE}缁堢偣:{endLoc.S_CODE}", "鑷姩琛ョ┖绠�);
-                    var res = TaskProcess.CreateTransport(startLoc.S_CODE, endLoc.S_CODE, "鑷姩琛ョ┖绠�, locCntrRel.S_CNTR_CODE, 1, 1);
-                    if (res)
-                    {
-                        LogHelper.Info($"璧风偣:{startLoc.S_CODE}缁堢偣:{endLoc.S_CODE}浠诲姟鍒涘缓鎴愬姛");
-                    }
-                    else
-                    {
-                        LogHelper.Info($"璧风偣:{startLoc.S_CODE}缁堢偣:{endLoc.S_CODE}浠诲姟鍒涘缓澶辫触");
-                    }
-                }
+        ///// <summary>
+        ///// 澶т欢鍖哄埌鍖�鍛煎彨绌虹
+        ///// </summary>
+        ///// <param name="model"></param>
+        ///// <returns></returns>
+        //public static void bigMateriala2a()
+        //{
+        //    var db = new SqlHelper<Location>().GetInstance();
+        //    try
+        //    {
+        //        var startLoc = new Location();
+        //        var endLoc = new Location();
+        //        var endReservoirs = Settings.ReservoirAreas.Where(s => s.areaName == "").FirstOrDefault();
+        //        endLoc =TaskProcess.InWorkTransport(endReservoirs.areaCode);
+        //        if (endLoc != null)
+        //        {
+        //            var startReservoirs = Settings.ReservoirAreas.Where(s => s.areaName == "").FirstOrDefault();
+        //            startLoc = TaskProcess.OutWorkTransport(startReservoirs.areaCode);
+        //            var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLoc.S_CODE).First();
+        //            //鍒涘缓浠诲姟
+        //            LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{startLoc.S_CODE}缁堢偣:{endLoc.S_CODE}", "鑷姩琛ョ┖绠�);
+        //            var res = TaskProcess.CreateTransport(startLoc.S_CODE, endLoc.S_CODE, "鑷姩琛ョ┖绠�, locCntrRel.S_CNTR_CODE, 1, 1);
+        //            if (res)
+        //            {
+        //                LogHelper.Info($"璧风偣:{startLoc.S_CODE}缁堢偣:{endLoc.S_CODE}浠诲姟鍒涘缓鎴愬姛");
+        //            }
+        //            else
+        //            {
+        //                LogHelper.Info($"璧风偣:{startLoc.S_CODE}缁堢偣:{endLoc.S_CODE}浠诲姟鍒涘缓澶辫触");
+        //            }
+        //        }
                 
 
-            }
-            catch (Exception ex)
-            {
-                Console.WriteLine("bigMateriala2a:" + ex.Message + ex.StackTrace);
-                LogHelper.Error("bigMateriala2a:" + ex.Message, ex);
-                throw;
-            }
+        //    }
+        //    catch (Exception ex)
+        //    {
+        //        Console.WriteLine("bigMateriala2a:" + ex.Message + ex.StackTrace);
+        //        LogHelper.Error("bigMateriala2a:" + ex.Message, ex);
+        //        throw;
+        //    }
 
-        }
+        //}
 
 
         /// <summary>
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/dispatch/GZRobot.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/dispatch/GZRobot.cs
index 03e4151..4fc5e9a 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/dispatch/GZRobot.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/dispatch/GZRobot.cs
@@ -1,11 +1,13 @@
 锘縰sing HH.WCS.XiaoMi.api;
 using HH.WCS.XiaoMi.core;
 using HH.WCS.XiaoMi.LISTA.dispatch;
+using HH.WCS.XiaoMi.process;
 using HH.WCS.XiaoMi.util;
 using HH.WCS.XiaoMi.wms;
 using Newtonsoft.Json;
 using System;
 using System.Collections.Generic;
+using System.ComponentModel;
 using static HH.WCS.XiaoMi.api.ApiModel;
 using static HH.WCS.XiaoMi.LISTA.dispatch.XMWcsHelper;
 
@@ -249,14 +251,72 @@
                 {
                     //2琛ㄧず鐢宠鐩爣搴撲綅
                     var apply = new ApplyModel() { wcsTaskCode = wcsTask.S_WORKSHOP_NO };
-                    var end = XMWcsHelper.GetPositionApply(apply);
-                    if (!string.IsNullOrEmpty(end.body.pointCode))
+
+                    #region 鍐欐娴嬭瘯鐢�+                    if (!string.IsNullOrEmpty("HC43"))
                     {
                         result.resultCode = 0;
                         result.msg = "鐩爣搴撲綅宸茬敵璇�;
-                        result.orderData = end.body.pointCode;
+                        result.orderData = "HC43";
+                        //浠诲姟琛ㄨˉ涓�+                        var db = new SqlHelper<WCSTask>().GetInstance();
+                        var task = db.Queryable<WCSTask>().Where(a => a.S_CODE == model.orderName).First();
+                        LogHelper.Info($"task鍙傛暟======={JsonConvert.SerializeObject(task)}");
+                        var endLoc = LocationHelper.GetLocation("HC43");
+                        LogHelper.Info($"endLoc鍙傛暟======={JsonConvert.SerializeObject(endLoc)}");
+                        task.S_END_LOC = "HC43";
+                        task.S_END_AREA = endLoc.S_AREA_CODE;
+                        var res = db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC, it.S_END_AREA }).ExecuteCommand() > 0;
+                        //閿佷綇缁堢偣璐т綅
+                        LogHelper.Info($"task2鍙傛暟======={JsonConvert.SerializeObject(task)}");
+                        LocationHelper.LockLoc("HC43", 1);
+                        if (!res)
+                        {
+                            result.resultCode = 1;
+                            result.success = false;
+                            result.msg = $"缁堢偣搴撲綅{task.S_END_LOC}鏇存柊澶辫触";
+                        }
+                        LogHelper.Info($"result鍙傛暟======={JsonConvert.SerializeObject(result)}");
                         return result;
                     }
+                    #endregion
+
+                    //var db = new SqlHelper<Object>().GetInstance();
+                    //var end = XMWcsHelper.GetPositionApply(apply);
+                    //string endPointCode = null;
+                    //if (end.body.targetType.Equals("AREA")) {
+                    //    var endLoc1 =TaskProcess.InWorkTransport(end.body.pointCode);
+                    //    if (endLoc1!=null)
+                    //    {
+                    //        //濡傛灉娌℃壘鍒板氨绛夌涓�潯
+                    //        endPointCode = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == end.body.pointCode).OrderByDescending(a => a.N_ROW).ToList()[0].S_CODE;
+                    //    }
+                    //} else if (end.body.targetType.Equals("STATION")) {
+                    //    endPointCode= end.body.pointCode;
+                    //}
+
+                    //if (!string.IsNullOrEmpty(endPointCode))
+                    //{
+                    //    result.resultCode = 0;
+                    //    result.msg = "鐩爣搴撲綅宸茬敵璇�;
+                    //    result.orderData = endPointCode;
+                    //    //浠诲姟琛ㄨˉ涓�+                    //    var task = db.Queryable<WCSTask>().Where(a => a.S_CODE == model.orderName).First();
+                    //    var endLoc = LocationHelper.GetLocation(endPointCode);
+                    //    task.S_END_LOC = endPointCode;
+                    //    task.S_END_AREA = endLoc.S_AREA_CODE;
+                    //    var res = db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC, it.S_END_AREA }).ExecuteCommand() > 0;
+                    //    //閿佷綇缁堢偣璐т綅
+                    //    LocationHelper.LockLoc(endPointCode, 1);
+                    //    if (!res)
+                    //    {
+                    //        result.resultCode = 1;
+                    //        result.success = false;
+                    //        result.msg = $"缁堢偣搴撲綅{task.S_END_LOC}鏇存柊澶辫触";
+                    //    }
+                    //    return result;
+                    //}
+
                     else
                     {
                         result.resultCode = 1;
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/dispatch/RcsHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/dispatch/RcsHelper.cs
index a796d4c..1046d0c 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/dispatch/RcsHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/dispatch/RcsHelper.cs
@@ -37,7 +37,8 @@
                     {
                         var db = new SqlHelper<WCSTask>().GetInstance();
                         //瀛樿鍗曞彿
-                        var task = db.Queryable<WCSTask>().Where(a => a.S_CODE == model.ts_name).First();
+                        var task = db.Queryable<WCSTask>().Where(a => a.S_CODE == model.order_name).First();
+                        LogHelper.Info($"CreateAntsOrder task鍙傛暟==========={JsonConvert.SerializeObject(task)}");
                         task.S_WORKSHOP_NO = dataResult.data[0].in_order_id;
                         var res = db.Updateable(task).UpdateColumns(it => it.S_WORKSHOP_NO).ExecuteCommand() > 0;
                         if (res)
@@ -118,7 +119,8 @@
             bool result = false;
             string msg = "";
             var request = JsonConvert.SerializeObject(model);
-            var response = apiHelper.Post(baseUrl + ":9002/wcs-admin/api/cancel", request);
+            //var response = apiHelper.Post(baseUrl + ":9002/wcs-admin/api/cancel", request);
+            var response = apiHelper.Put(baseUrl + ":2000/api/om/order/order-command", request);
             msg = $"[hanao-CancelOrder] request={request};response={response}";
             Console.WriteLine(msg);
             if (response != "")
@@ -276,11 +278,11 @@
             /// <summary>
             /// 
             /// </summary>
-            public string order_id { get; set; }
+            public string order_name { get; set; }
             /// <summary>
             /// 
             /// </summary>
-            public string order_command_type_id { get; set; }
+            public int order_command_type_id { get; set; }
             
         }
 
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/CntrItemDetail.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/CntrItemDetail.cs
index b3a66d9..61b9eee 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/CntrItemDetail.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/CntrItemDetail.cs
@@ -16,6 +16,7 @@
         public string S_SERIAL_NO { get; set; }
         public string S_ITEM_CODE { get; set; }
         public string S_ITEM_NAME { get; set; } = "";
+        //
         public string S_ITEM_SPEC { get; set; }
         public string S_ITEM_STATE { get; set; } = "合格";
         /// <summary>
@@ -33,6 +34,8 @@
         public float F_QTY { get; set; }
         public string S_UOM { get; set; } = "kg";
         public string S_CNTR_CODE { get; set; }
+
+        //箱子型号用
         public string S_BS_TYPE { get; set; } = "";
         public string S_BS_NO { get; set; } = "";
         
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/Container.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/Container.cs
index 19283ca..b0ca321 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/Container.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/Container.cs
@@ -10,6 +10,7 @@
 
         public string S_CODE { get; set; }
         public string S_TYPE { get; set; }
+        //用作箱子类型
         public string S_SPEC { get; set; }
         public float F_WEIGHT { get; set; }
         public float F_LOAD_WEIGHT { get; set; }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/bigMaterial.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/bigMaterial.cs
index 4a1bd12..f67c9c2 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/bigMaterial.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/bigMaterial.cs
@@ -28,6 +28,7 @@
         public string BatchNo { get; set; }
         public string issueMode { get; set; }
         public int num { get; set; }
+        public string boxType { get; set; }
 
 
     }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/sensorSmallMaterial.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/sensorSmallMaterial.cs
new file mode 100644
index 0000000..034ab00
--- /dev/null
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/sensorSmallMaterial.cs
@@ -0,0 +1,32 @@
+using HH.WCS.XiaoMi.models;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+
+namespace HH.WCS.XiaoMi
+{
+    public class sensorSmallMaterial : BaseModel
+    {
+        //料架编号
+        public string rackNumber { get; set; }
+        //配送路径
+        public string shippingRoute { get; set; }
+        //任务编号
+        public string taskID { get; set; }
+        //
+        public string order_name { get; set; }
+        //截止时间
+        public DateTime dead_line { get; set; }
+        //脚本名称
+        public string ts_name { get; set; }
+        //创建者名称
+        public string createdName { get; set; }
+        //订单优先级
+        public string priority { get; set; }
+        //TS订单参数
+        public Parameters parameters { get; set; }
+
+    }
+    
+    
+}
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/smallMaterial.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/smallMaterial.cs
index 69f0fcc..8685043 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/smallMaterial.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/smallMaterial.cs
@@ -46,8 +46,6 @@
     }
     public class Parameters
     {
-        //任务号
-        public string BatchNo { get; set; }
         //起点
         public string src { get; set; }
         //起点缓存区
@@ -58,6 +56,8 @@
         public string dst_area { get; set; }
         //零件类
         public string sku { get; set; }
+        //任务号
+        public string BatchNo { get; set; }
         //起点缓存区发料方式
         public string issueMode { get; set; }
         //数量
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 943814b..6e250bf 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/process/TaskProcess.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/process/TaskProcess.cs
@@ -29,6 +29,7 @@
 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
 {
@@ -124,8 +125,8 @@
                 CacheBitCancelUpdate(mst);
                 ////灏忕背璁㈠崟鍙栨秷
                 //CancelModel cancelModel = new CancelModel();
-                //cancelModel.order_id = mst.S_WORKSHOP_NO;
-                //cancelModel.order_command_type_id = "2";
+                //cancelModel.order_name = mst.S_CODE;
+                //cancelModel.order_command_type_id = 2;
                 //RcsHelper.CancelOrder(cancelModel);
 
             }
@@ -386,7 +387,7 @@
                         model.order_name = mst.S_CODE;
                         model.priority = 1;
                         model.dead_line = DateTime.Now.ToString();
-                        model.ts_name = mst.S_TYPE;
+                        model.ts_name = "p2p";
                         model.parameters = parme;
                         //model.parameters = new AntsParasModel { 
                         //    src = mst.S_START_LOC,
@@ -524,7 +525,10 @@
                 result = true;
                 //浠诲姟鍒涘缓鎴愬姛锛岃捣鐐硅揣浣嶅嚭搴撻攣瀹氾紝缁堢偣璐т綅鍏ュ簱閿佸畾
                 LocationHelper.LockLoc(start, 2);
-                LocationHelper.LockLoc(end, 1);
+                if (end!=null&& end != "")
+                {
+                    LocationHelper.LockLoc(end, 1);
+                }
             }
             return result;
         }
@@ -857,7 +861,7 @@
 
 
         /// <summary>
-        /// 鍑哄簱绠楁硶
+        /// 鍑哄簱绠楁硶 鍏堣繘鍏堝嚭
         /// </summary>
         /// <param name="area">搴撳尯</param>
         /// <returns></returns>
@@ -896,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鍑哄簱杞繍
@@ -1020,6 +1126,15 @@
                 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":
@@ -1027,6 +1142,10 @@
                         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 = model.parameters.dst;
 
@@ -1036,6 +1155,10 @@
                         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 }
+                            };
                         }
                         var endLoc = InWorkTransport(model.parameters.dst_area);
                         if (endLoc == null)
@@ -1046,19 +1169,27 @@
                         }
                         break;
                     case "a2p":
-                        startLoc = OutWorkTransport(model.parameters.src_area);
+                        startLoc = OutWorkTransportXm(model.parameters.src_area, model.parameters.issueMode);
                         if (startLoc == null)
                         {
                             Message = $"{model.parameters.dst}搴撳尯娌℃湁鍙嚭璐т綅!";
+                            return new TaskResponse
+                            {
+                                header = new ResponseHead { code = 0, desc = Message }
+                            };
                         }
 
                         endLocStr = model.parameters.dst;
                         break;
                     case "a2a":
-                        startLoc = OutWorkTransport(model.parameters.src_area);
+                        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)
@@ -1069,10 +1200,26 @@
                         }
                         break;
                     case "p2u":
-                        startLoc = OutWorkTransport(model.parameters.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.parameters.src}搴撳尯娌℃湁鍙嚭璐т綅!";
+                            return new TaskResponse
+                            {
+                                header = new ResponseHead { code = 0, desc = Message }
+                            };
                         }
                         endLocStr = "";
                         break;
@@ -1082,29 +1229,14 @@
                 //鍒涘缓鎵樼洏璐т綅缁戝畾鍏崇郴
                 string trayCode = ContainerHelper.GenerateCntrNo();
                 //缁戝畾璧风偣璐т綅(浜х嚎)鍜岀墿鏂�-                ContainerHelper.BindLocCntrsXm(startLoc.S_CODE, trayCode, model.parameters.sku, "", model.parameters.BatchNo, model.parameters.issueMode, model.parameters.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}", "澶т欢");
                 var res = TaskProcess.CreateTransportDj(startLoc.S_CODE, endLocStr, "澶т欢", locCntrRel.S_CNTR_CODE, model.order_name, 1, 1);
-                if (!res)
-                {
-                    return new TaskResponse
-                    {
-                        header = new ResponseHead { code = 1, desc = Message }
-                    };
-
-                }
                 var result = new TaskResponse();
-                if (Message != null)
-                {
-                    result = new TaskResponse
-                    {
-                        header = new ResponseHead { code = 0, desc = Message }
-                    };
-                }
-                else
+                if (res)
                 {
                     result = new TaskResponse
                     {
@@ -1113,10 +1245,17 @@
                         {
                             msg = "success",
                             app_name = "Guozi client",
-                            data = new List<ResponseData> { new ResponseData { in_order_id = model.taskID } },
+                            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;
 
@@ -1155,6 +1294,15 @@
                     
                     //鎵緋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);
@@ -1162,15 +1310,25 @@
                     {
                         return new TaskResponse
                         {
-                            header = new ResponseHead { code = 0, desc = "鑷姩涓婄嚎浠诲姟鍒涘缓澶辫触" }
+                            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);
 
@@ -1187,24 +1345,133 @@
                         //鍒涘缓鎵樼洏璐т綅缁戝畾鍏崇郴
                         string trayCode = ContainerHelper.GenerateCntrNo();
                         //缁戝畾璧风偣璐т綅(浜х嚎)鍜岀墿鏂�-                        ContainerHelper.BindLocCntrsXm(startloc.S_CODE, trayCode, tasklist.parameters.sku, "", tasklist.parameters.BatchNo, tasklist.parameters.issueMode, tasklist.parameters.num);
+                        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)
+                        
+                        if (res)
                         {
-                            return new TaskResponse
+                            result = new TaskResponse
                             {
-                                header = new ResponseHead { code = 1, desc = Message }
+                                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)
                 {
@@ -1222,7 +1489,7 @@
                         {
                             msg = "success",
                             app_name = "Guozi client",
-                            data = new List<ResponseData> { new ResponseData { in_order_id = model.taskList[0].taskID } },
+                            data = new List<ResponseData> { new ResponseData { in_order_id = model.taskID } },
                             version = ""
                         }
                     };
@@ -1239,7 +1506,6 @@
                 throw;
             }
         }
-
 
 
     }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/util/HttpHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/util/HttpHelper.cs
index 05b5941..47b6c9d 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/util/HttpHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/util/HttpHelper.cs
@@ -129,6 +129,46 @@
             }
 
         }
+        public string Put(string url, string putData, string contentType = "application/json", string sessionId = "")
+        {
+            Console.WriteLine(url);
+            WebRequest request = WebRequest.Create(url);
+            request.Method = "PUT";
+            byte[] byteArray = Encoding.UTF8.GetBytes(putData);
+            request.ContentType = contentType;
+            request.ContentLength = byteArray.Length;
+            request.Timeout = 3000;
+            if (sessionId != "")
+            {
+                request.Headers.Set("ASP.NET_SessionId", sessionId);
+            }
+            StreamReader reader = null;
+            Stream stream = null;
+            WebResponse rsp = null;
+            try
+            {
+                stream = request.GetRequestStream();
+                stream.Write(byteArray, 0, byteArray.Length);
+                stream.Close();
+                rsp = request.GetResponse();
+                stream = rsp.GetResponseStream();
+                reader = new StreamReader(stream);
+                return reader.ReadToEnd();
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine($"{url} err={ex.Message}");
+                return "";
+            }
+            finally
+            {
+                // 閲婃斁璧勬簮
+                if (reader != null) reader.Close();
+                if (stream != null) stream.Close();
+                if (rsp != null) rsp.Close();
+            }
+
+        }
 
 
         public string Post(string url, Dictionary<string, string> dic) {
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/wms/ContainerHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/wms/ContainerHelper.cs
index d350e92..7fec69c 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/wms/ContainerHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/wms/ContainerHelper.cs
@@ -581,7 +581,7 @@
         /// </summary>
         /// <param name="cntr"></param>
         /// <returns></returns>
-        internal static bool BindLocCntrsXm(string loc, string cntr, string itemCode, string itemName, string BatchNo, string issueMode, int num)
+        internal static bool BindLocCntrsXm(string loc, string cntr, string itemCode, string itemName, string BatchNo, string issueMode, int num, string boxType)
         {
             bool result = true;
             List<string> list = new List<string>(cntr.Split(','));
@@ -594,7 +594,7 @@
                     if (db.Queryable<LocCntrRel>().Count(a => a.S_CNTR_CODE.Trim() == cntrCode) == 0)
                     {
                         var cir = new LocCntrRel { S_LOC_CODE = loc, S_CNTR_CODE = cntrCode };
-                        var con = new Container { S_CODE = cntrCode, N_DETAIL_COUNT = 1, C_FULL = "2" };//榛樿婊�涓诲姩缁戝畾鏈嶅姟鐢�+                        var con = new Container { S_CODE = cntrCode, N_DETAIL_COUNT = 1, S_SPEC = boxType, C_FULL = "2" };//榛樿婊�涓诲姩缁戝畾鏈嶅姟鐢�                         db.Insertable<LocCntrRel>(cir).ExecuteCommand();
                         db.Insertable<Container>(con).ExecuteCommand();
                         if (!string.IsNullOrEmpty(itemCode))
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/wms/WCSHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/wms/WCSHelper.cs
index 5ce86b3..e9c99ed 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/wms/WCSHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/wms/WCSHelper.cs
@@ -124,13 +124,18 @@
         internal static bool CreateTaskDj(string no, string from, string to, string taskType, int pri, string cntrInfo,string orderName, int cntrCount = 1, int startLayer = 1, int endLayer = 1)
         {
             var fromLoc = LocationHelper.GetLocation(from);
-            var endLoc = LocationHelper.GetLocation(to);
+            //鍥犱负鏈夌偣鍒版湭鐭ョ殑鎯呭喌
+            string endLocAreaStr = null;
+            if (to!=null && to != "")
+            {
+                endLocAreaStr = LocationHelper.GetLocation(to).S_AREA_CODE;
+            }
             WCSTask TN_Task = new WCSTask()
             {
                 //S_CODE = GenerateTaskNo(),
                 S_CODE = orderName,
                 S_START_AREA = fromLoc.S_AREA_CODE,
-                S_END_AREA = endLoc.S_AREA_CODE,
+                S_END_AREA = endLocAreaStr,
                 S_START_LOC = from,
                 S_END_LOC = to,
                 S_TYPE = taskType,

--
Gitblit v1.9.1