From 5e04278c55e10c245a184057b6ae3bd8238dd93a Mon Sep 17 00:00:00 2001
From: zxx <Zxx@HanInfo>
Date: 星期二, 01 七月 2025 14:24:28 +0800
Subject: [PATCH] xiaomi

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/LocCntrRel.cs    |    4 
 HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/core/WMSCore.cs         |   52 ++++++
 HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/process/TaskProcess.cs  |  221 +++++++++++++++++++++++++++
 HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/HH.WCS.XiaoMi.csproj    |    2 
 HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/smallMaterial.cs |   31 +++
 HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/bigMaterial.cs   |   26 ++
 HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/LocFrameRel.cs   |   35 ++++
 HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/wms/WCSHelper.cs        |   27 +++
 HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/WCSTask.cs       |    4 
 HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/wms/LocationHelper.cs   |   59 +++++++
 10 files changed, 453 insertions(+), 8 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 07de4ab..eea54cf 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
@@ -217,6 +217,8 @@
     <Compile Include="dispatch\HanAo.cs" />
     <Compile Include="dispatch\NDC.cs" />
     <Compile Include="core\Monitor.cs" />
+    <Compile Include="models\LocFrameRel.cs" />
+    <Compile Include="models\smallMaterial.cs" />
     <Compile Include="models\bigMaterial.cs" />
     <Compile Include="models\AutoRepairEmptyTray.cs" />
     <Compile Include="models\TN_ISUSING.cs" />
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 24fdb9a..ab3d537 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/core/WMSCore.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/core/WMSCore.cs
@@ -366,5 +366,57 @@
             }
 
         }
+
+
+        /// <summary>
+        /// 搴旀�绌烘枡鏋朵笂绾縚AMR
+        /// </summary>
+        /// <returns></returns>
+        public static void EmergencyEmptyMaterial()
+        {
+            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);
+                    if (startLoc!=null)
+                    {
+                        var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLoc.S_CODE).First();
+                        //鍒涘缓浠诲姟
+                        LogHelper.Info($"鍒涘缓浠诲姟 璧风偣:{startLoc.S_CODE}缁堢偣:{endLoc.S_CODE}", "搴旀�绌烘枡鏋朵笂绾縚AMR");
+                        var res = TaskProcess.CreateTransport(startLoc.S_CODE, endLoc.S_CODE, "搴旀�绌烘枡鏋朵笂绾縚AMR", 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("EmergencyEmptyMaterial:" + ex.Message + ex.StackTrace);
+                LogHelper.Error("EmergencyEmptyMaterial:" + ex.Message, ex);
+                throw;
+            }
+
+        }
+
+
+
+
     }
 }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/LocCntrRel.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/LocCntrRel.cs
index cfdfa07..d7e4b14 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/LocCntrRel.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/LocCntrRel.cs
@@ -24,6 +24,10 @@
         public int N_BIND_ORDER { get; set; }
 
 
+        //货架  zxx
+        public string S_FRAME_CODE { get; set; }
+
+
         [SugarColumn(IsIgnore = true)]
         [Navigate(NavigateType.OneToMany, nameof(S_CNTR_CODE))]
         public List<CntrItemDetail> CntrItemRels { get; set; }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/LocFrameRel.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/LocFrameRel.cs
new file mode 100644
index 0000000..0145ee8
--- /dev/null
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/LocFrameRel.cs
@@ -0,0 +1,35 @@
+using HH.WCS.XiaoMi.models;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+
+namespace HH.WCS.XiaoMi
+{
+    //TN_Loc_Container
+    //LocCntrRel
+    [SugarTable("TN_Frame_Container")]
+    public class LocFrameRel : BaseModel
+    {
+        
+        
+        [SugarColumn(IsPrimaryKey = true)]
+        //货位
+        public string S_LOC_CODE { get; set; }
+        //货架
+        public string S_FRAME_CODE { get; set; }
+        //public string S_ACTION_SRC { get; set; }
+        //public string S_BINDING_METHOD { get; set; }
+        //public int N_BINDING_METHOD { get; set; }
+        //public string S_STATE_PRE { get; set; }
+        //public int N_REVIEW_RESULT { get; set; }
+        
+        //public int N_BIND_ORDER { get; set; }
+
+
+        [SugarColumn(IsIgnore = true)]
+        [Navigate(NavigateType.OneToMany, nameof(S_LOC_CODE))]
+        public List<LocCntrRel> LocCntrRels { get; set; }
+
+       
+    }
+}
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/WCSTask.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/WCSTask.cs
index 1b83510..ea15476 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/WCSTask.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/WCSTask.cs
@@ -47,6 +47,10 @@
         public int N_REVIEW_RESULT { get; set; }
 
         public string S_CNTR_CODE { get; set; }
+
+        //璐ф灦鍙�zxx
+        public string S_FRAME_CODE { get; set; }
+
         public string S_OP_NAME { get; set; }
         public string S_WORKSHOP_NO { get; set; }
         public string S_WORKSHOP_NAME { 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 f77d984..ef74360 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/bigMaterial.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/bigMaterial.cs
@@ -1,28 +1,44 @@
 using HH.WCS.XiaoMi.models;
 using SqlSugar;
 using System;
+using System.Collections.Generic;
 
 namespace HH.WCS.XiaoMi
 {
-    public class bigMaterial : BaseModel
+    public class smallMaterial : BaseModel
     {
-        
+        //订单TS名字
         public string ts_name { get; set; }
         public string createdNamne { get; set; }
-
-        public parameters parameter { get; set; }
+        public string routeType { get; set; }
+        //订单优先级
+        public string priority { get; set; }
+        //任务类型 自动,人工
+        public string taskType { get; set; }
+        //料架编码
+        public string rackCode { get; set; }
+        //TS订单参数
+        public List<Parameters> parameters { get; set; }
 
 
         public string taskID { get; set; }
+        //任务明细号
         public string order_name { get; set; }
+        //订单创建时间(传时间戳)
         public DateTime dead_line { get; set; }
         
     }
-    public class parameters
+    public class Parameters
     {
+        //立库起点、大件起点
         public string src { get; set; }
+        //料架仓位明细
+        public string trayCode { get; set; }
+        //流利料架位置
         public string dst { get; set; }
+        //零件类
         public string sku { get; set; }
+        //任务号
         public string BatchNo { get; set; }
         public int num { 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
new file mode 100644
index 0000000..f77d984
--- /dev/null
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/models/smallMaterial.cs
@@ -0,0 +1,31 @@
+using HH.WCS.XiaoMi.models;
+using SqlSugar;
+using System;
+
+namespace HH.WCS.XiaoMi
+{
+    public class bigMaterial : BaseModel
+    {
+        
+        public string ts_name { get; set; }
+        public string createdNamne { get; set; }
+
+        public parameters parameter { get; set; }
+
+
+        public string taskID { get; set; }
+        public string order_name { get; set; }
+        public DateTime dead_line { get; set; }
+        
+    }
+    public class parameters
+    {
+        public string src { get; set; }
+        public string dst { get; set; }
+        public string sku { get; set; }
+        public string BatchNo { get; set; }
+        public int num { 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 e47f1b8..1a4c96a 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/process/TaskProcess.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/process/TaskProcess.cs
@@ -46,13 +46,32 @@
             {
                 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}");
-                LocationHelper.UnBindingLoc(mst.S_START_LOC, mst.S_CNTR_CODE.Split(',').ToList());
+                if (mst.S_FRAME_CODE != null)
+                {
+                    LocationHelper.UnBindingLocHj(mst.S_START_LOC, mst.S_FRAME_CODE);
+
+                }
+                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}");
-                LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList());
+                //濡傛灉璐ф灦鏈夊�鍒欑粦璐ф灦
+                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());
+
+                }
             }
 
         }
@@ -380,7 +399,24 @@
             }
             return result;
         }
+        //灏忕背璐ф灦浠诲姟
+        public static bool CreateTransportHj(string start, string end, string taskType, string frame, int startLayer, int endLayer, int trayCarryCount = 1, int priority = 1)
+        {
+            var result = false;
+            var trayCodes = frame;
+            var taskNo = DateTime.Now.Ticks.ToString();
 
+
+            var res = WCSHelper.CreateTaskHj(taskNo, start.Trim(), end.Trim(), taskType, priority, trayCodes, trayCarryCount, startLayer, endLayer);
+            if (res)
+            {
+                result = true;
+                //浠诲姟鍒涘缓鎴愬姛锛岃捣鐐硅揣浣嶅嚭搴撻攣瀹氾紝缁堢偣璐т綅鍏ュ簱閿佸畾
+                LocationHelper.LockLoc(start, 2);
+                LocationHelper.LockLoc(end, 1);
+            }
+            return result;
+        }
         /// <summary>
         /// 鍒涘缓鎼繍浠诲姟
         /// </summary>
@@ -1834,9 +1870,188 @@
 
         }
 
-        
+
+        /// <summary>
+        /// 灏忎欢
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        internal static TaskResponse smallMaterial(smallMaterial model)
+        {
+            try
+            {
+                var startLoc = new Location();
+                var endLoc = new Location();
+                string Message = null;
+
+                if (model.taskType=="鑷姩")
+                {
+                    
+                    autoSmallMaterial(model);
 
 
+                }
+                else if (model.taskType == "浜哄伐")
+                {
+                    artificialSmallMaterial(model);
+
+                }
+
+
+
+
+
+
+                    
+                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;
+
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine("bigMaterial:" + ex.Message + ex.StackTrace);
+                LogHelper.Error("bigMaterial:" + ex.Message, ex);
+                throw;
+            }
+
+        }
+        //鑷姩 鎷嗗垎
+        private static string 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)
+            {
+                Message = $"{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 Message="鑷姩涓婄嚎浠诲姟鍒涘缓澶辫触";
+                }
+            }
+            //鏂欐灦涓婄殑鎵樼洏鍒版寚瀹氱殑宸ヤ綅
+            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 = $"{model.parameters[0].src}搴撲綅宸茶閿佸畾!";
+                }
+                //璐ф灦涓婄殑璐у垽鏂竴涓嬭揣鏋舵湁娌℃湁閿�+                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)
+                    {
+                        Message = $"{startFrameParent.S_FRAME_CODE}搴撲綅宸茶閿佸畾!";
+                    }
+                }
+
+
+
+
+            }
+
+            return Message;
+            //switch (model.ts_name)
+            //{
+            //    case "p2p":
+            //        startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameter.src).First();
+            //        if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y")
+            //        {
+            //            Message = $"{model.parameter.src}搴撲綅宸茶閿佸畾!";
+            //        }
+
+            //        endLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameter.dst).First();
+            //        if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y")
+            //        {
+            //            Message = $"{model.parameter.dst}搴撲綅宸茶閿佸畾!";
+            //        }
+
+            //        break;
+            //    case "p2a":
+            //        startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameter.src).First();
+            //        if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y")
+            //        {
+            //            Message = $"{model.parameter.src}搴撲綅宸茶閿佸畾!";
+            //        }
+            //        endLoc = InWorkTransport(model.parameter.dst);
+            //        if (endLoc == null)
+            //        {
+            //            Message = $"{model.parameter.dst}搴撳尯娌℃湁鍙叆璐т綅!";
+            //        }
+            //        break;
+            //    case "a2p":
+            //        startLoc = OutWorkTransport(model.parameter.src);
+            //        if (startLoc == null)
+            //        {
+            //            Message = $"{model.parameter.dst}搴撳尯娌℃湁鍙嚭璐т綅!";
+            //        }
+
+            //        endLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameter.dst).First();
+            //        if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y")
+            //        {
+            //            Message = $"{model.parameter.dst}搴撲綅宸茶閿佸畾!";
+            //        }
+            //        break;
+            //}
+
+            //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.CreateTransport(startLoc.S_CODE, endLoc.S_CODE, model.ts_name, locCntrRel.S_CNTR_CODE, 1, 1);
+            //if (!res)
+            //{
+            //    return new TaskResponse
+            //    {
+            //        header = new ResponseHead { code = 1, desc = Message }
+            //    };
+
+            //}
+        }
+        //浜哄伐 涓嶆媶鍒�+        private static void artificialSmallMaterial(smallMaterial model)
+        {
+            var db = new SqlHelper<Location>().GetInstance();
+
+
+        }
 
 
     }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/wms/LocationHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/wms/LocationHelper.cs
index 4a375c0..c63ebbd 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/wms/LocationHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/wms/LocationHelper.cs
@@ -1,4 +1,5 @@
 锘縰sing HH.WCS.XiaoMi.util;
+using Opc.Ua;
 using SqlSugar;
 using System;
 using System.Collections.Generic;
@@ -404,6 +405,29 @@
             }
             return res;
         }
+        public static bool UnBindingLocHj(string loc, string frame)
+        {
+            var res = false;
+            var db = new SqlHelper<object>().GetInstance();
+            var location = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == loc).First();
+            try
+            {
+                db.BeginTran();
+                var lcrList = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == loc).ToList();
+                var count = db.Deleteable<LocCntrRel>().Where(it => frame==it.S_FRAME_CODE.Trim() && it.S_LOC_CODE.Trim() == loc).ExecuteCommand();
+                location.N_CURRENT_NUM = lcrList.Count - count;
+                location.S_LOCK_STATE = "鏃�;
+                location.N_LOCK_STATE = 0;
+                db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM, it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand();
+                db.CommitTran();
+                res = true;
+            }
+            catch (Exception ex)
+            {
+                db.RollbackTran();
+            }
+            return res;
+        }
         /// <summary>
         /// 璐т綅缁戝畾瀹瑰櫒
         /// </summary>
@@ -443,7 +467,42 @@
             }
             return res;
         }
+        /// <summary>
+        /// 璐т綅缁戝畾璐ф灦 灏忕背
+        /// </summary>
+        /// <param name="loc"></param>
+        /// <param name="cntrs"></param>
+        /// <returns></returns>
+        public static bool BindingLocHj(string loc, string frame)
+        {
+            var res = false;
+            var db = new SqlHelper<object>().GetInstance();
+            var location = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == loc).First();
+            try
+            {
+                var lcrList = db.Queryable<LocCntrRel>().Includes(a => a.Container).Where(a => a.S_LOC_CODE.Trim() == loc).ToList();
+                db.BeginTran();
+                int count = 0;
+                if (lcrList.Count(b => b.S_CNTR_CODE.Trim() == frame) == 0)
+                {
+                    db.Insertable<LocCntrRel>(new LocCntrRel { S_LOC_CODE = loc, S_FRAME_CODE = frame }).ExecuteCommand();
+                    count++;
+                }
+                location.N_CURRENT_NUM = lcrList.Count + count;
+                location.N_LOCK_STATE = 0;
+                location.S_LOCK_STATE = "鏃�;
+                db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM, it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand();
 
+                db.CommitTran();
+                res = true;
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine(ex.Message);
+                db.RollbackTran();
+            }
+            return res;
+        }
         /// <summary>
         /// 鍒ゆ柇閫昏緫搴撳尯鏄惁鏈夊彲鐢ㄨ揣浣�         /// </summary>
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 f78dc90..77d3e09 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/wms/WCSHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.XiaoMi/wms/WCSHelper.cs
@@ -114,6 +114,33 @@
 
             return CreateTask(TN_Task);
         }
+        //灏忕背璐ф灦
+        internal static bool CreateTaskHj(string no, string from, string to, string taskType, int pri, string cntrInfo, int cntrCount = 1, int startLayer = 1, int endLayer = 1)
+        {
+            var fromLoc = LocationHelper.GetLocation(from);
+            var endLoc = LocationHelper.GetLocation(to);
+            WCSTask TN_Task = new WCSTask()
+            {
+                S_CODE = GenerateTaskNo(),
+                S_START_AREA = fromLoc.S_AREA_CODE,
+                S_END_AREA = endLoc.S_AREA_CODE,
+                S_START_LOC = from,
+                S_END_LOC = to,
+                S_TYPE = taskType,
+                S_OP_CODE = no,
+                N_PRIORITY = pri,
+                N_SCHEDULE_TYPE = 1,
+                N_B_STATE = 0,
+                S_B_STATE = WCSTask.GetStateStr(0),
+                S_FRAME_CODE = cntrInfo,
+                //N_START_LAYER = startLayer,
+                //N_END_LAYER = endLayer,
+                //N_CNTR_COUNT = cntrCount
+
+            };
+
+            return CreateTask(TN_Task);
+        }
         internal static bool CreateTask(string no, Location from, Location to, string taskType, int scheduleType, int pri, string cntrInfo, int cntrCount = 1, int startLayer = 1, int endLayer = 1)
         {
             WCSTask TN_Task = new WCSTask()

--
Gitblit v1.9.1