From 06a8b6963d6d4f229d4e196b4b09ce57e2cbf2dd Mon Sep 17 00:00:00 2001
From: 杨前锦 <1010338399@qq.com>
Date: 星期四, 24 七月 2025 17:21:40 +0800
Subject: [PATCH] 印尼佳通-GT服务开发

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs |  715 ++++++++++++++++++----------------------------------------
 1 files changed, 225 insertions(+), 490 deletions(-)

diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs
index 4a352b9..fce8014 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs
@@ -28,6 +28,7 @@
 
         }
 
+
         /// <summary>
         /// 1.鍒涘缓鍏ュ簱浠诲姟
         /// </summary>
@@ -36,7 +37,7 @@
             ReturnResult result = new ReturnResult();
             try
             {
-                if (model.taskType == "鏈哄彴鍗婂埗鍝佸叆搴� || model.taskType == "鎴愬瀷鏈轰綑鏂欏洖搴�) 
+                if (model.taskType.Contains("鏈哄彴鍗婂埗鍝佸叆搴�) || model.taskType.Contains("鎴愬瀷鏈轰綑鏂欏叆搴�) || model.taskType.Contains("鍗婂埗鍝佹娊妫�叆搴�)) 
                 {
                     var itemInfos = model.itemInfo;
                     if (itemInfos == null || itemInfos.Count == 0)
@@ -44,38 +45,6 @@
                         result.ResultCode = 1;
                         result.ResultMsg = "鐗╂枡淇℃伅涓嶈兘涓虹┖";
                         return result;
-                    }
-                    else 
-                    {
-                        foreach (var item in itemInfos)
-                        {
-                            // 灏哅ES鐨勭墿鏂欑姸鎬佽浆鍖栨垚WMS鍙瘑鍒殑鐗╂枡鐘舵�
-                            if (item.jdge == "" || item.jdge == null)
-                            {
-                                item.jdge = "OK";
-                            }
-                            else if(item.jdge != "OK")
-                            {
-                                item.jdge = "HOLD";
-                            }
-
-                            // 璁$畻鐢熸晥鏃堕棿銆佸け鏁堟椂闂�-                            var overage = WMSHelper.getOverage(item.bc_entried);
-                            if (overage != null)
-                            {
-                                DateTime txndate = DateTime.Parse(item.txndate);
-                                DateTime minTime = txndate.AddHours(overage.MINHOUR);
-                                DateTime maxTime = txndate.AddDays(overage.OVERAGE);
-                                item.effective_time = minTime.ToString("yyyy-MM-dd HH:mm:ss");
-                                item.expiration_time = maxTime.ToString("yyyy-MM-dd HH:mm:ss");
-                            }
-                            else 
-                            {
-                                result.ResultCode = 1;
-                                result.ResultMsg = $"鏈煡璇㈠埌鐗╂枡瀛樻斁鏃堕棿閰嶇疆淇℃伅锛屾潯褰㈢爜锛歿item.bc_entried}";
-                                return result;
-                            }
-                        }
                     }
                 }
 
@@ -223,9 +192,10 @@
             try
             {
                 Location endLoc = LocationHelper.GetLoc(model.endLoc);
-                if (endLoc.N_CURRENT_NUM == 0) 
+                if (endLoc.N_CURRENT_NUM == 0)
                 {
-                    for (int i = 0; i < endLoc.N_CAPACITY; i++) 
+                    int taskNum = 0;
+                    for (int i = 0; i < endLoc.N_CAPACITY; i++)
                     {
                         Location startLoc = WMSHelper.GetoutStockStartLoc(model.itemCode);
                         Location middleLoc = null;
@@ -233,13 +203,6 @@
                         string cntrCode = "";
                         if (startLoc != null)
                         {
-                            // 鏌ヨ鎺ラ┏浣�-                            var locCodes = Settings.getAgvJBLocList(startLoc.N_ROADWAY, 2);
-                            if (locCodes.Count > 0)
-                            {
-                                middleLoc = LocationHelper.GetLoc(locCodes[0]);
-                            }
-
                             // 鏌ヨ璐т綅瀹瑰櫒缂栫爜 銆佺洰鏍囧鍣ㄧ紪鐮�                             var locCntrRels = LocationHelper.GetLocCntrRel(startLoc.S_CODE);
                             if (locCntrRels.Count > 0)
@@ -258,61 +221,95 @@
                         }
                         else
                         {
-                            result.ResultCode = 1;
-                            result.ResultMsg = "搴撳唴娌℃湁婊¤冻鏉′欢鐨勭墿鏂�;
-                            return result;
+                            LogHelper.Info($"搴撳唴娌℃湁鐗╂枡:{model.itemCode}", "WMS");
+                            break;
                         }
-
-                        
-                        if (endLoc != null)
+                       
+                        var container = ContainerHelper.GetCntr(descCntrCode);
+                        if (container != null)
                         {
-                            var wmsTask = new WMSTask()
+                            int isExistBaseTray = 2;
+                            if (container.N_TYPE == 4)
                             {
-                                S_CNTR_CODE = descCntrCode,
-                                S_CODE = WMSHelper.GenerateTaskNo(),
-                                S_START_LOC = startLoc.S_CODE,
-                                S_START_AREA = startLoc.S_AREA_CODE,
-                                S_END_LOC = endLoc.S_CODE,
-                                S_END_AREA = endLoc.S_AREA_CODE,
-                                S_TYPE = "鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔�,
-                                S_OP_DEF_CODE = model.taskNo,
-                                S_OP_DEF_NAME = "鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔�,
-                                N_PRIORITY = model.priority,
-                                T_START_TIME = DateTime.Now,
-                            };
+                                isExistBaseTray = 1;
+                            }
 
-                            if (WMSHelper.CreateWmsTask(wmsTask))
+                            // 鏌ヨ鎺ラ┏浣�+                            middleLoc = WMSHelper.getAgvJBLoc(startLoc.N_ROADWAY, 2, isExistBaseTray, 2);
+
+                            if (endLoc != null)
                             {
-                                // 鍒涘缓涓�鍑哄簱浠诲姟
-                                WCSTask wcsTask = new WCSTask()
+                                string taskType = "鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔�;
+                                if (model.taskType == 2)
                                 {
-                                    S_OP_NAME = wmsTask.S_OP_DEF_NAME,
-                                    S_OP_CODE = wmsTask.S_CODE,
-                                    S_CODE = WCSHelper.GenerateTaskNo(),
-                                    S_CNTR_CODE = cntrCode,
-                                    S_TYPE = wmsTask.S_TYPE + "-1",
+                                    taskType = "鎶芥鍙枡鍑哄簱浠诲姟";
+                                }
+
+                                var wmsTask = new WMSTask()
+                                {
+                                    S_CNTR_CODE = descCntrCode,
+                                    S_CODE = WMSHelper.GenerateTaskNo(),
                                     S_START_LOC = startLoc.S_CODE,
                                     S_START_AREA = startLoc.S_AREA_CODE,
-                                    S_END_LOC = middleLoc.S_CODE,
-                                    S_END_AREA = middleLoc.S_AREA_CODE,
-                                    S_SCHEDULE_TYPE = "WCS",
-                                    N_PRIORITY = 1,
+                                    S_END_LOC = endLoc.S_CODE,
+                                    S_END_AREA = endLoc.S_AREA_CODE,
+                                    S_TYPE = taskType,
+                                    S_OP_DEF_CODE = model.taskNo,
+                                    S_OP_DEF_NAME = "鍙枡鍑哄簱浠诲姟",
+                                    N_PRIORITY = model.priority,
                                     T_START_TIME = DateTime.Now,
                                 };
 
-                                if (WCSHelper.CreateTask(wcsTask))
+                                if (WMSHelper.CreateWmsTask(wmsTask))
                                 {
-                                    // 璧风偣銆佹帴椹崇偣鍔犻攣
-                                    LocationHelper.LockLoc(wcsTask.S_START_LOC, 2);
-                                    LocationHelper.LockLoc(wcsTask.S_END_LOC, 1);
+                                    // 鍒涘缓涓�鍑哄簱浠诲姟
+                                    WCSTask wcsTask = new WCSTask()
+                                    {
+                                        S_OP_NAME = wmsTask.S_OP_DEF_NAME,
+                                        S_OP_CODE = wmsTask.S_CODE,
+                                        S_CODE = WCSHelper.GenerateTaskNo(),
+                                        S_CNTR_CODE = cntrCode,
+                                        S_TYPE = wmsTask.S_TYPE + "-1",
+                                        S_START_LOC = startLoc.S_CODE,
+                                        S_START_AREA = startLoc.S_AREA_CODE,
+                                        S_END_LOC = middleLoc.S_CODE,
+                                        S_END_AREA = middleLoc.S_AREA_CODE,
+                                        S_SCHEDULE_TYPE = "WCS",
+                                        N_PRIORITY = 1,
+                                        T_START_TIME = DateTime.Now,
+                                    };
 
-                                    // 鏇存柊浣滀笟浠诲姟鐘舵�
-                                    wmsTask.N_B_STATE = 1;
-                                    WMSHelper.UpdateTaskState(wmsTask);
+                                    if (WCSHelper.CreateTask(wcsTask))
+                                    {
+                                        // 璧风偣銆佹帴椹崇偣鍔犻攣
+                                        LocationHelper.LockLoc(wcsTask.S_START_LOC, 2);
+                                        LocationHelper.LockLoc(wcsTask.S_END_LOC, 1);
+
+                                        // 鏇存柊浣滀笟浠诲姟鐘舵�
+                                        wmsTask.N_B_STATE = 1;
+                                        WMSHelper.UpdateTaskState(wmsTask);
+                                        taskNum++;
+                                    }
                                 }
                             }
                         }
+                        else 
+                        {
+                            result.ResultCode = 1;
+                            result.ResultMsg = $"瀹瑰櫒锛歿cntrCode}涓嶅瓨鍦�;
+                        }
                     }
+
+                    if (taskNum < endLoc.N_CAPACITY) 
+                    {
+                        result.ResultCode = 1;
+                        result.ResultMsg = $"搴撳唴鐗╂枡涓嶈冻锛屽凡鐢熸垚鍑哄簱浠诲姟鏁�{taskNum}";
+                    }
+                }
+                else 
+                {
+                    result.ResultCode = 1;
+                    result.ResultMsg = "缁堢偣璐т綅褰撳墠瀹归噺涓嶄负0锛屾棤娉曞彨鏂�;
                 }
             }
             catch (Exception ex)
@@ -334,46 +331,14 @@
             ReturnResult result = new ReturnResult();
             try
             {
-                if(model.itemInfo != null && model.itemInfo.Count > 0)
-                {
-                    foreach (var item in model.itemInfo)
-                    {
-                        // 灏哅ES鐨勭墿鏂欑姸鎬佽浆鍖栨垚WMS鍙瘑鍒殑鐗╂枡鐘舵�
-                        if (item.jdge == "" || item.jdge == null)
-                        {
-                            item.jdge = "OK";
-                        }
-                        else if (item.jdge != "OK")
-                        {
-                            item.jdge = "HOLD";
-                        }
-
-                        var overage = WMSHelper.getOverage(item.bc_entried);
-                        if (overage != null && overage.OVERAGE != 0)
-                        {
-                            DateTime txndate = DateTime.Parse(item.txndate);
-                            DateTime minTime = txndate.AddHours(overage.MINHOUR);
-                            DateTime maxTime = txndate.AddDays(overage.OVERAGE);
-                            item.effective_time = minTime.ToString("yyyy-MM-dd HH:mm:ss");
-                            item.expiration_time = maxTime.ToString("yyyy-MM-dd HH:mm:ss");
-                        }
-                        else
-                        {
-                            result.ResultCode = 1;
-                            result.ResultMsg = $"鏈煡璇㈠埌鐗╂枡瀛樻斁鏃堕棿閰嶇疆淇℃伅锛屾潯褰㈢爜锛歿item.bc_entried}";
-                            return result;
-                        }
-                    }
-                }
-
                 var container = ContainerHelper.GetCntr(model.trayCode);
-                if (container != null) 
+                if (container != null)
                 {
                     Location startLoc = LocationHelper.GetLoc(model.startLoc);
-                    Location endLoc = WMSHelper.GetInstockEndLoc(container.N_TYPE, model.startLoc, 2);
-
-                    if (endLoc != null)
+                    var instockEndLocResult = WMSHelper.GetInstockEndLoc( 0, container.N_TYPE, 0, null, model.startLoc);
+                    if (instockEndLocResult.endLoc != null && instockEndLocResult.agvLoc != null)
                     {
+                        var endLoc = instockEndLocResult.endLoc;
                         string cntrCode = model.trayCode;
                         var locCntrRels = LocationHelper.GetLocCntr(model.startLoc);
                         if (locCntrRels.Count > 0)
@@ -433,8 +398,13 @@
                     else
                     {
                         result.ResultCode = 1;
-                        result.ResultMsg = "娌℃湁绌轰綑鐨勮揣浣�;
+                        result.ResultMsg = "绔嬪簱娌℃湁绌轰綑鐨勮揣浣�;
                     }
+                }
+                else 
+                {
+                    result.ResultCode = 1;
+                    result.ResultMsg = "WMS绯荤粺涓病鏈夎瀹瑰櫒";
                 }
             }
             catch (Exception ex)
@@ -552,117 +522,19 @@
             try
             {
                 Location startLoc = LocationHelper.GetLoc(loc);
-                Location endLoc = WMSHelper.GetInstockEndLoc(0, loc, 2);
-
-                if (endLoc != null && startLoc != null)
-                {
-                    string trayCode = null;
-                    var locCntrRels = LocationHelper.GetLocCntrRel(loc);
-                    if (locCntrRels.Count > 0)
-                    {
-                       var container = ContainerHelper.GetCntr(locCntrRels[0].S_CNTR_CODE);
-                        if (container.N_TYPE == 0) 
-                        {
-                            trayCode = container.S_CODE;
-                        }
-                    }
-                    else 
-                    {
-                        trayCode = ContainerHelper.GenerateCntrNo();
-                        ContainerHelper.AddCntr(trayCode, 0);
-                    }
-
-                    if (trayCode != null) 
-                    {
-                        var wmsTask = new WMSTask()
-                        {
-                            S_CNTR_CODE = trayCode,
-                            S_CODE = WMSHelper.GenerateTaskNo(),
-                            S_START_LOC = startLoc.S_CODE,
-                            S_START_AREA = startLoc.S_AREA_CODE,
-                            S_END_LOC = endLoc.S_CODE,
-                            S_END_AREA = endLoc.S_AREA_CODE,
-                            S_TYPE = "姣嶆嫋鍏ュ簱浠诲姟",
-                            S_OP_DEF_CODE = taskNo,
-                            S_OP_DEF_NAME = "姣嶆嫋鍏ュ簱浠诲姟",
-                            N_PRIORITY = 1,
-                            T_START_TIME = DateTime.Now,
-                        };
-                        if (WMSHelper.CreateWmsTask(wmsTask))
-                        {
-                            // 鍒涘缓涓�鍏ュ簱浠诲姟
-                            WCSTask wcsTask = new WCSTask()
-                            {
-                                S_OP_NAME = wmsTask.S_OP_DEF_NAME,
-                                S_OP_CODE = wmsTask.S_CODE,
-                                S_CODE = WCSHelper.GenerateTaskNo(),
-                                S_CNTR_CODE = wmsTask.S_CNTR_CODE,
-                                S_TYPE = wmsTask.S_TYPE + "-1",
-                                S_START_LOC = startLoc.S_CODE,
-                                S_START_AREA = startLoc.S_AREA_CODE,
-                                S_END_LOC = endLoc.S_CODE,
-                                S_END_AREA = endLoc.S_AREA_CODE,
-                                S_SCHEDULE_TYPE = "WCS",
-                                N_PRIORITY = 1,
-                                T_START_TIME = DateTime.Now,
-                            };
-
-                            if (WCSHelper.CreateTask(wcsTask))
-                            {
-                                // 璧风偣銆佹帴椹崇偣銆佺粓鐐瑰姞閿�-                                LocationHelper.LockLoc(wcsTask.S_START_LOC, 2);
-                                LocationHelper.LockLoc(wcsTask.S_END_LOC, 1);
-
-                                // 鏇存柊浣滀笟浠诲姟鐘舵�
-                                wmsTask.N_B_STATE = 1;
-                                WMSHelper.UpdateTaskState(wmsTask);
-                            }
-                        }
-                    }
-                }
-                else
+                if (startLoc == null) 
                 {
                     result.ResultCode = 1;
-                    result.ResultMsg = "娌℃湁绌轰綑鐨勮揣浣�;
+                    result.ResultMsg = "寮�璐т綅涓嶅瓨鍦紒";
+                    return result;
                 }
-            }
-            catch (Exception ex)
-            {
-                result.ResultCode = 1;
-                result.ResultMsg = "WMS鍐呴儴閿欒锛岃鑱旂郴寮�彂浜哄憳鎺掓煡";
-                LogHelper.Info($"WMS鍐呴儴閿欒锛岄敊璇師鍥狅細{ex.Message}", "WMS");
-            }
-            return result;
-        }
-
-        /// <summary>
-        /// 6.1.姣嶆嫋鍏ュ簱浠诲姟
-        /// </summary>
-        /// <param name="loc"></param>
-        /// <param name="wmsTaskNo"></param>
-        /// <returns></returns>
-        public static ReturnResult autoBaseTrayInStock(string loc, string wmsTaskNo)
-        {
-            ReturnResult result = new ReturnResult();
-            try
-            {
                 var cst = WCSHelper.GetTaskByStart(loc);
-                if (cst == null) 
+                if (cst == null)
                 {
-                    Location startLoc = LocationHelper.GetLoc(loc);
-                    Location endLoc = null;
-                    var baseTrayBufferLoc = Settings.baseTrayBufferLocList.Where(a => a.bufferOutLoc == loc).FirstOrDefault();
-                    if (baseTrayBufferLoc != null) 
+                    var instockEndLocResult = WMSHelper.GetInstockEndLoc(0, 0, 0, null, loc);
+                    if (instockEndLocResult.endLoc != null && instockEndLocResult.agvLoc != null)
                     {
-                        endLoc = LocationHelper.GetLoc(baseTrayBufferLoc.bufferInLoc);
-                    }
-                    if (endLoc == null || endLoc.N_CURRENT_NUM > 0)
-                    {
-                        endLoc = WMSHelper.GetInstockEndLoc(0, loc, 2);
-                    }
-
-                    if (endLoc != null && startLoc != null)
-                    {
+                        var endLoc = instockEndLocResult.endLoc;
                         string trayCode = null;
                         var locCntrRels = LocationHelper.GetLocCntrRel(loc);
                         if (locCntrRels.Count > 0)
@@ -681,27 +553,49 @@
 
                         if (trayCode != null)
                         {
-                            // 鍒涘缓涓�鍏ュ簱浠诲姟
-                            WCSTask wcsTask = new WCSTask()
+                            var wmsTask = new WMSTask()
                             {
-                                S_OP_CODE = wmsTaskNo,
-                                S_CODE = WCSHelper.GenerateTaskNo(),
                                 S_CNTR_CODE = trayCode,
-                                S_TYPE = "姣嶆嫋鍏ュ簱浠诲姟",
+                                S_CODE = WMSHelper.GenerateTaskNo(),
                                 S_START_LOC = startLoc.S_CODE,
                                 S_START_AREA = startLoc.S_AREA_CODE,
                                 S_END_LOC = endLoc.S_CODE,
                                 S_END_AREA = endLoc.S_AREA_CODE,
-                                S_SCHEDULE_TYPE = "WCS",
+                                S_TYPE = "姣嶆嫋鍏ュ簱浠诲姟",
+                                S_OP_DEF_CODE = taskNo,
+                                S_OP_DEF_NAME = "姣嶆嫋鍏ュ簱浠诲姟",
                                 N_PRIORITY = 1,
                                 T_START_TIME = DateTime.Now,
                             };
-
-                            if (WCSHelper.CreateTask(wcsTask))
+                            if (WMSHelper.CreateWmsTask(wmsTask))
                             {
-                                // 璧风偣銆佺粓鐐瑰姞閿�-                                LocationHelper.LockLoc(wcsTask.S_START_LOC, 2);
-                                LocationHelper.LockLoc(wcsTask.S_END_LOC, 1);
+                                // 鍒涘缓涓�鍏ュ簱浠诲姟
+                                WCSTask wcsTask = new WCSTask()
+                                {
+                                    S_OP_NAME = wmsTask.S_OP_DEF_NAME,
+                                    S_OP_CODE = wmsTask.S_CODE,
+                                    S_CODE = WCSHelper.GenerateTaskNo(),
+                                    S_CNTR_CODE = wmsTask.S_CNTR_CODE,
+                                    S_TYPE = wmsTask.S_TYPE + "-1",
+                                    S_START_LOC = startLoc.S_CODE,
+                                    S_START_AREA = startLoc.S_AREA_CODE,
+                                    S_END_LOC = endLoc.S_CODE,
+                                    S_END_AREA = endLoc.S_AREA_CODE,
+                                    S_SCHEDULE_TYPE = "WCS",
+                                    N_PRIORITY = 1,
+                                    T_START_TIME = DateTime.Now,
+                                };
+
+                                if (WCSHelper.CreateTask(wcsTask))
+                                {
+                                    // 璧风偣銆佹帴椹崇偣銆佺粓鐐瑰姞閿�+                                    LocationHelper.LockLoc(wcsTask.S_START_LOC, 2);
+                                    LocationHelper.LockLoc(wcsTask.S_END_LOC, 1);
+
+                                    // 鏇存柊浣滀笟浠诲姟鐘舵�
+                                    wmsTask.N_B_STATE = 1;
+                                    WMSHelper.UpdateTaskState(wmsTask);
+                                }
                             }
                         }
                     }
@@ -711,6 +605,7 @@
                         result.ResultMsg = "娌℃湁绌轰綑鐨勮揣浣�;
                     }
                 }
+                
             }
             catch (Exception ex)
             {
@@ -727,106 +622,17 @@
         /// <param name="loc"></param>
         /// <param name="taskNo"></param>
         /// <returns></returns>
-        public static ReturnResult baseTrayOutStock(string loc ,string taskNo ,int exclude = 1)
+        public static ReturnResult baseTrayOutStock(string loc ,string taskNo)
         {
             LogHelper.Info("銆愭瘝鎷栧嚭搴撲换鍔°�寮�涓嬪彂姣嶆嫋鍑哄簱浠诲姟", "WMS");
             ReturnResult result = new ReturnResult();
             try
             {
-                Location startLoc = WMSHelper.GetEmptyTrayStartLoc(0, exclude);
-                Location endLoc = LocationHelper.GetLoc(loc);
-                var agvJBLoc = Settings.getAgvJBLoc(loc);
-
-                if (startLoc != null)
-                {
-                    string trayCode = null;
-                    var locCntrRels = LocationHelper.GetLocCntr(startLoc.S_CODE);
-                    if (locCntrRels.Count == 1) 
-                    {
-                        trayCode = locCntrRels[0].S_CNTR_CODE;
-                    }
-                    if (trayCode != null) 
-                    {
-                        var wmsTask = new WMSTask()
-                        {
-                            S_CNTR_CODE = trayCode,
-                            S_CODE = WMSHelper.GenerateTaskNo(),
-                            S_START_LOC = startLoc.S_CODE,
-                            S_START_AREA = startLoc.S_AREA_CODE,
-                            S_END_LOC = endLoc.S_CODE,
-                            S_END_AREA = endLoc.S_AREA_CODE,
-                            S_TYPE = "姣嶆嫋鍑哄簱浠诲姟",
-                            S_OP_DEF_CODE = taskNo,
-                            S_OP_DEF_NAME = "姣嶆嫋鍑哄簱浠诲姟",
-                            N_PRIORITY = 1,
-                            T_START_TIME = DateTime.Now,
-                        };
-
-                        if (WMSHelper.CreateWmsTask(wmsTask))
-                        {
-                            // 鍒涘缓涓�鍏ュ簱浠诲姟
-                            WCSTask wcsTask = new WCSTask()
-                            {
-                                S_OP_NAME = wmsTask.S_OP_DEF_NAME,
-                                S_OP_CODE = wmsTask.S_CODE,
-                                S_CODE = WCSHelper.GenerateTaskNo(),
-                                S_CNTR_CODE = wmsTask.S_CNTR_CODE,
-                                S_TYPE = wmsTask.S_TYPE + "-1",
-                                S_START_LOC = startLoc.S_CODE,
-                                S_START_AREA = startLoc.S_AREA_CODE,
-                                S_END_LOC = endLoc.S_CODE,
-                                S_END_AREA = endLoc.S_AREA_CODE,
-                                S_SCHEDULE_TYPE = "WCS",
-                                N_PRIORITY = 1,
-                                T_START_TIME = DateTime.Now,
-                            };
-
-                            if (WCSHelper.CreateTask(wcsTask))
-                            {
-                                // 璧风偣銆佹帴椹崇偣銆佺粓鐐瑰姞閿�-                                LocationHelper.LockLoc(wcsTask.S_START_LOC, 2);
-                                LocationHelper.LockLoc(wcsTask.S_END_LOC, 1);
-
-                                // 鏇存柊浣滀笟浠诲姟鐘舵�
-                                wmsTask.N_B_STATE = 1;
-                                WMSHelper.UpdateTaskState(wmsTask);
-                            }
-                        }
-                    }
-                }
-                else
-                {
-                    result.ResultCode = 1;
-                    result.ResultMsg = "娌℃湁绌轰綑鐨勬瘝鎷�;
-                    LogHelper.Info("銆愭瘝鎷栧嚭搴撲换鍔°�搴撳唴娌℃湁绌轰綑鐨勬瘝鎷�, "WMS");
-                }
-            }
-            catch (Exception ex)
-            {
-                result.ResultCode = 1;
-                result.ResultMsg = "WMS鍐呴儴閿欒锛岃鑱旂郴寮�彂浜哄憳鎺掓煡";
-                LogHelper.Info($"WMS鍐呴儴閿欒锛岄敊璇師鍥狅細{ex.Message}", "WMS");
-            }
-            return result;
-        }
-
-        /// <summary>
-        /// 7.1.姣嶆嫋鍑哄簱浠诲姟锛圓GV锛�-        /// </summary>
-        /// <param name="loc"></param>
-        /// <param name="wmsTaskNo"></param>
-        /// <returns></returns>
-        public static ReturnResult autoBaseTrayOutStock(string loc, string wmsTaskNo)
-        {
-            ReturnResult result = new ReturnResult();
-            try
-            {
                 var cst = WCSHelper.GetTaskByEnd(loc);
-                if (cst == null) 
+                if (cst == null)
                 {
-                    Location startLoc = WMSHelper.GetEmptyTrayStartLoc(0, 0);
+                    Location startLoc = WMSHelper.GetEmptyTrayStartLoc(0);
                     Location endLoc = LocationHelper.GetLoc(loc);
-
                     if (startLoc != null)
                     {
                         string trayCode = null;
@@ -835,30 +641,52 @@
                         {
                             trayCode = locCntrRels[0].S_CNTR_CODE;
                         }
-
                         if (trayCode != null)
                         {
-                            // 鍒涘缓鍏ュ簱浠诲姟
-                            WCSTask wcsTask = new WCSTask()
+                            var wmsTask = new WMSTask()
                             {
-                                S_OP_CODE = wmsTaskNo,
-                                S_CODE = WCSHelper.GenerateTaskNo(),
                                 S_CNTR_CODE = trayCode,
-                                S_TYPE = "姣嶆嫋鍑哄簱浠诲姟",
+                                S_CODE = WMSHelper.GenerateTaskNo(),
                                 S_START_LOC = startLoc.S_CODE,
                                 S_START_AREA = startLoc.S_AREA_CODE,
                                 S_END_LOC = endLoc.S_CODE,
                                 S_END_AREA = endLoc.S_AREA_CODE,
-                                S_SCHEDULE_TYPE = "WCS",
+                                S_TYPE = "姣嶆嫋鍑哄簱浠诲姟",
+                                S_OP_DEF_CODE = taskNo,
+                                S_OP_DEF_NAME = "姣嶆嫋鍑哄簱浠诲姟",
                                 N_PRIORITY = 1,
                                 T_START_TIME = DateTime.Now,
                             };
 
-                            if (WCSHelper.CreateTask(wcsTask))
+                            if (WMSHelper.CreateWmsTask(wmsTask))
                             {
-                                // 璧风偣銆佹帴椹崇偣銆佺粓鐐瑰姞閿�-                                LocationHelper.LockLoc(wcsTask.S_START_LOC, 2);
-                                LocationHelper.LockLoc(wcsTask.S_END_LOC, 1);
+                                // 鍒涘缓涓�鍏ュ簱浠诲姟
+                                WCSTask wcsTask = new WCSTask()
+                                {
+                                    S_OP_NAME = wmsTask.S_OP_DEF_NAME,
+                                    S_OP_CODE = wmsTask.S_CODE,
+                                    S_CODE = WCSHelper.GenerateTaskNo(),
+                                    S_CNTR_CODE = wmsTask.S_CNTR_CODE,
+                                    S_TYPE = wmsTask.S_TYPE + "-1",
+                                    S_START_LOC = startLoc.S_CODE,
+                                    S_START_AREA = startLoc.S_AREA_CODE,
+                                    S_END_LOC = endLoc.S_CODE,
+                                    S_END_AREA = endLoc.S_AREA_CODE,
+                                    S_SCHEDULE_TYPE = "WCS",
+                                    N_PRIORITY = 1,
+                                    T_START_TIME = DateTime.Now,
+                                };
+
+                                if (WCSHelper.CreateTask(wcsTask))
+                                {
+                                    // 璧风偣銆佹帴椹崇偣銆佺粓鐐瑰姞閿�+                                    LocationHelper.LockLoc(wcsTask.S_START_LOC, 2);
+                                    LocationHelper.LockLoc(wcsTask.S_END_LOC, 1);
+
+                                    // 鏇存柊浣滀笟浠诲姟鐘舵�
+                                    wmsTask.N_B_STATE = 1;
+                                    WMSHelper.UpdateTaskState(wmsTask);
+                                }
                             }
                         }
                     }
@@ -866,8 +694,9 @@
                     {
                         result.ResultCode = 1;
                         result.ResultMsg = "娌℃湁绌轰綑鐨勬瘝鎷�;
+                        LogHelper.Info("銆愭瘝鎷栧嚭搴撲换鍔°�搴撳唴娌℃湁绌轰綑鐨勬瘝鎷�, "WMS");
                     }
-                }
+                }  
             }
             catch (Exception ex)
             {
@@ -984,84 +813,6 @@
         }
 
         /// <summary>
-        /// 璇荤爜鍙嶉
-        /// </summary>
-        /// <param name="model"></param>
-        /// <returns></returns>
-        public static ReturnResult readCodeFeedback(ReadCodeFeedbackModel model)
-        {
-            ReturnResult responseResult = new ReturnResult();
-            var locCntrRels = LocationHelper.GetLocCntr(model.locCode);
-            if (locCntrRels.Count > 0) 
-            {
-                foreach (var locCntr in locCntrRels)
-                {
-                    var container = ContainerHelper.GetCntr(locCntr.S_CNTR_CODE);
-                    if (container != null && container.N_TYPE != 0) 
-                    {
-                        var mst = WMSHelper.GetWmsTaskByCntr(locCntr.S_CNTR_CODE);
-                        if (mst != null)
-                        {
-                            int actType = 1;
-                            if (locCntr.S_CNTR_CODE == model.trayCode)
-                            {
-                                if (mst.S_END_LOC == "铏氭嫙璐т綅") 
-                                {
-                                    // 鑾峰彇鍏ュ簱缁堢偣
-                                    var endLoc = WMSHelper.GetInstockEndLoc(container.N_TYPE, model.locCode, 1);
-                                    if (endLoc != null)
-                                    {
-                                        mst.S_END_LOC = endLoc.S_CODE;
-                                        mst.S_END_AREA = endLoc.S_AREA_CODE;
-                                    }
-                                    else
-                                    {
-                                        LogHelper.Info("銆怶CS璇荤爜鍙嶉銆戯紝娌℃湁鑾峰彇鍒扮粓鐐硅揣浣嶏紝鍙兘绔嬪簱娌℃湁绌轰綑璐т綅", "WMS");
-                                        responseResult.ResultCode = 1;
-                                        responseResult.ResultMsg = "娌℃湁鑾峰彇鍒扮粓鐐硅揣浣嶏紝鍙兘绔嬪簱娌℃湁绌轰綑璐т綅";
-                                        return responseResult;
-                                    }
-                                }
-                            }
-                            else
-                            {
-                                LogHelper.Info($"銆怶CS璇荤爜鍙嶉銆戯紝鎵樼洏鐮佸尮閰嶅け璐ワ紝鍙嶉鎵樼洏鐮侊細{model.trayCode} ,璐т綅{model.locCode}鎵樼洏鐮侊細{locCntr.S_CNTR_CODE}", "WMS");
-                                // 鑾峰彇鍏ュ簱缁堢偣
-                                var endLoc = WMSHelper.getErrorBufferAreaLoc();
-                                if (endLoc != null)
-                                {
-                                    actType = 2;
-                                    LocationHelper.UnLockLoc(mst.S_END_LOC);
-                                    mst.S_END_LOC = endLoc.S_CODE;
-                                    mst.S_END_AREA = endLoc.S_AREA_CODE;
-                                }
-                                else
-                                {
-                                    LogHelper.Info("銆怶CS璇荤爜鍙嶉銆戯紝娌℃湁鑾峰彇鍒扮紦瀛樿揣浣�, "WMS");
-                                    responseResult.ResultCode = 1;
-                                    responseResult.ResultMsg = "娌℃湁鑾峰彇鍒扮紦瀛樿揣浣�;
-                                    return responseResult;
-                                }
-                            }
-
-                            // 鍒涘缓涓嬩釜浠诲姟
-                            if (mst.S_END_LOC != "铏氭嫙璐т綅")
-                            {
-                                WMSHelper.UpdateTaskEnd(mst);
-                                WCSCore.createLastTask(model.locCode, mst, actType);
-                            }
-                        }
-                        else
-                        {
-                            LogHelper.Info($"銆怶CS璇荤爜鍙嶉銆戯紝瀹瑰櫒:{model.trayCode}娌℃湁鏌ヨ鍒版墽琛屼腑浠诲姟", "WMS");
-                        }
-                    }
-                }
-            }
-            return responseResult;
-        }
-
-        /// <summary>
         /// 鍚屾鐗╂枡淇℃伅
         /// </summary>
         /// <param name="matls"></param>
@@ -1075,22 +826,19 @@
             {
                 ItemBarcodeInfo itemBarcodeInfo = new ItemBarcodeInfo() 
                 {
+                    N_RECID = matl.recid,
                     S_ITEM = matl.item,
-                    S_BC_ENTRIED = matl.bc_entried,
+                    S_BC_ENTRIED = matl.barcode,
+                    S_TOOLING_CODE = matl.toolineCode,
                     S_MCN = matl.mcn,
-                    S_OPR = matl.opr,
                     TXNDATE = DateTime.Parse(matl.txndate, enGB) ,
                     S_SHIFT = matl.shift,
                     N_QTY = matl.qty,
-                    N_STOCK = matl.stock,
-                    S_LOKASI = matl.lokasi,
-                    S_SARANA = matl.sarana,
-                    BOM1 = matl.bom1,
-                    BOM2 = matl.bom2,
-                    BOM3 = matl.bom3,
-                    S_FOVRAGE = matl.fovrage,
                     S_JDGE = matl.jdge,
-                    LAST_MODIFY_TIME = matl.last_modify_time
+                    N_OVERAGE = matl.overagv,
+                    N_MINHOUR = matl.minhour,
+                    N_PRODUCT_TYPE_CODE = matl.productTypeCode,
+                    LAST_MODIFY_TIME = matl.last_modify_time,
                 };
                 itemBarcodeInfos.Add(itemBarcodeInfo);
             }
@@ -1099,102 +847,89 @@
             if (!bo) 
             {
                 responseResult.ResultCode = 1;
-                responseResult.ResultMsg = "鍚屾鐗╂枡鏉$爜淇℃伅澶辫触";
+                responseResult.ResultMsg = "鍚屾GT鏉$爜鐗╂枡淇℃伅澶辫触";
             }
             return responseResult;
         }
 
         /// <summary>
-        /// 鍚屾鐗╂枡鐘舵�淇℃伅
+        /// 鍚屾鏉$爜鐘舵�淇℃伅
         /// </summary>
         /// <param name="updateMatlStatuses"></param>
         /// <returns></returns>
-        public static ReturnResult synUpdateMatlStatus(List<UpdateMatlStatus> updateMatlStatuses)
+        public static ReturnResult synBarcodeStatus(List<UpdateMatlStatus> updateMatlStatuses)
         {
             ReturnResult responseResult = new ReturnResult();
-            var bo = WMSHelper.batchUpdateItemStatus(updateMatlStatuses);
-            if (!bo)
+            List<IwmsSemiBldBcstatus> list = new List<IwmsSemiBldBcstatus> ();
+            if (updateMatlStatuses.Count > 0) 
             {
-                responseResult.ResultCode = 1;
-                responseResult.ResultMsg = "鍚屾鐗╂枡鐘舵�淇℃伅澶辫触";
-            }
-            return responseResult;
-        }
-
-        /// <summary>
-        /// 鍚屾鏇存柊鐗╂枡瀛樻斁鏃堕棿閰嶇疆淇℃伅
-        /// </summary>
-        /// <param name="overages"></param>
-        /// <returns></returns>
-        public static ReturnResult synUpdateMatlTimeConfig(List<MatlOverage> overages)
-        {
-            ReturnResult responseResult = new ReturnResult();
-            if (overages != null && overages.Count > 0) 
-            {
-                List<Overage> overageList = new List<Overage>();
-                foreach (var item in overages)
+                foreach (var item in updateMatlStatuses)
                 {
-                    Overage overage = new Overage
+                    IwmsSemiBldBcstatus bCstatus = new IwmsSemiBldBcstatus() 
                     {
-                        MCNGRP = item.mcngrp,
-                        ITEMPATT = item.itempatt,
-                        OVERAGE = item.overage,
-                        MINHOUR = float.Parse(item.minhour.ToString()),
-                        FLAG_STS = item.flag_sts,
-                        RECID = item.recid,
+                        N_RECID = item.recid,
+                        S_BC_ENTRIED = item.barcode,
+                        S_MCNGRP = item.mcngrp,
+                        S_JDGE = item.jdge,
+                        LAST_MODIFY_TIME = item.last_modify_time
                     };
-                    overageList.Add(overage);
+                    list.Add(bCstatus);
                 }
-                var bo = WMSHelper.batchUpdateMatlTimeConfig(overageList);
+
+                var bo = WMSHelper.synBarcodeStatus(list);
                 if (!bo)
                 {
                     responseResult.ResultCode = 1;
-                    responseResult.ResultMsg = "鍚屾鐗╂枡鐘舵�淇℃伅澶辫触";
+                    responseResult.ResultMsg = "鍚屾鏉$爜鐘舵�淇℃伅澶辫触";
                 }
             }
             return responseResult;
         }
 
         /// <summary>
-        /// 璁板綍鏁版嵁鍚屾鏃堕棿
+        /// 鍚屾鏉$爜鐘舵�淇℃伅
         /// </summary>
-        /// <param name="model"></param>
+        /// <param name="updateMatlStatuses"></param>
         /// <returns></returns>
-        public static ReturnResult recordDataSynTime(RecordDataSynTimeModel model)
+        public static ReturnResult synSampleStatus(List<UpdateMatlStatus> updateMatlStatuses)
         {
             ReturnResult responseResult = new ReturnResult();
-            SynDataTimeRecord record = new SynDataTimeRecord() 
+            List<IwmsSemiBldBcsample> list = new List<IwmsSemiBldBcsample>();
+            if (updateMatlStatuses.Count > 0)
             {
-                S_SYN_TIME = model.sysTime,
-                N_SYN_NUM = model.synNum,
-                RECORD_TABLE = model.recordTable
-            }; 
-            var bo = WMSHelper.addSynDataTimeReord(record);
-            if (!bo)
-            {
-                responseResult.ResultCode = 1;
-                responseResult.ResultMsg = "璁板綍鏁版嵁鍚屾鏃堕棿澶辫触";
+                foreach (var item in updateMatlStatuses)
+                {
+                    IwmsSemiBldBcsample bCstatus = new IwmsSemiBldBcsample()
+                    {
+                        N_RECID= item.recid,
+                        S_BC_ENTRIED = item.barcode,
+                        S_MCNGRP = item.mcngrp,
+                        S_JDGE = item.jdge,
+                        LAST_MODIFY_TIME = item.last_modify_time
+                    };
+                    list.Add(bCstatus);
+                }
+
+                var bo = WMSHelper.synSamplingStatus(list);
+                if (!bo)
+                {
+                    responseResult.ResultCode = 1;
+                    responseResult.ResultMsg = "鍚屾鏉$爜鐘舵�淇℃伅澶辫触";
+                }
             }
             return responseResult;
         }
-
 
         /// <summary>
         /// 鏌ヨ涓婁竴娆$殑鏁版嵁鍚屾鏃堕棿
         /// </summary>
-        /// <param name="recordTable"></param>
+        /// <param name="tableType"></param>
         /// <returns></returns>
-        public static ReturnResult findLastDataSynTime(string recordTable)
+        public static ReturnResult findDataLastSynTime(int tableType)
         {
             ReturnResult responseResult = new ReturnResult();
-            var synDataTime = WMSHelper.getLastDataSynTime(recordTable);
-            if (synDataTime != null) 
-            {
-                Dictionary<string, string> map = new Dictionary<string, string>();
-                map.Add("S_SYN_TIME", synDataTime.S_SYN_TIME);
-                map.Add("RECORD_TABLE", synDataTime.RECORD_TABLE);
-                responseResult.data = map;
-            }
+            var synDataTime = WMSHelper.getDataLastSynTime(tableType);
+            responseResult.data = synDataTime;
             return responseResult;
         }
 
@@ -1259,10 +994,11 @@
         public class CreateOutOrderModel
         {
             public string taskNo { get; set; } // 浠诲姟鍙�-            public string trayCode { get; set; } // 浠诲姟鍙�+            public string trayCode { get; set; } // 鎵樼洏鍙�             public string itemCode { get; set; } // 鐗╂枡缂栫爜
             public string endLoc { get; set; } // 缁堢偣璐т綅
             public int priority { get; set; } = 0; // 浼樺厛绾�榛樿0
+            public int taskType { get; set; } = 1; // 1.鎴愬瀷鏈哄彨鏂欎换鍔�2.鎶芥鍑哄簱浠诲姟
         }
 
         public class EmptyTrayOutOrderModel
@@ -1277,7 +1013,7 @@
         {
             public string taskNo { get; set; } // 浠诲姟鍙�             public string startLoc { get; set; } // 璧风偣璐т綅
-            public string taskType { get; set; } // 浠诲姟绫诲瀷 鍏ュ簱鍥炲簱绫诲瀷锛�锛氭満鍙板崐鍒跺搧鍏ュ簱锛�锛氭垚鍨嬫満浣欐枡鍥炲簱锛�锛氭垚鍨嬫満绌烘墭鍥炲簱
+            public string taskType { get; set; } // 浠诲姟绫诲瀷 鍏ュ簱鍥炲簱绫诲瀷锛�锛氭満鍙板崐鍒跺搧鍏ュ簱锛�锛氭垚鍨嬫満浣欐枡鍏ュ簱锛�锛氭垚鍨嬫満绌烘墭鍏ュ簱锛�锛氬崐鍒跺搧鎶芥鍏ュ簱
             public string trayCode { get; set; } // 鎵樼洏鍙�             public int priority { get; set; } = 0;// 浼樺厛绾�榛樿浼�
             public List<GTItemInfo> itemInfo { get; set; }
@@ -1287,16 +1023,15 @@
         {
             public string item { get; set; } // 鐗╁搧浠g爜
             public string bc_entried { get; set; } // 鏉″舰鐮佺紪鍙�+            public string toolineCode { get; set; } // 宸ヨ鏉$爜
             public string mcn { get; set; } // 鏈哄櫒浠g爜缂栧彿
-            public string opr { get; set; } // 鎿嶄綔鍛�             public string txndate { get; set; } // 鐢熶骇鏃堕棿
             public string shift { get; set; } // 宸ヤ綔鐝
             public int qty { get; set; } // 浜у搧鏁伴噺
-            public string sarana { get; set; } // 浜у搧鏉愭枡鐨勬墭鐩�鐩�鎺ㄨ溅/璐ц溅ID
-            public string fovrage { get; set; } // 鏄惁杩囨湡鐨勭姸鎬�Y=杩囨湡锛孨=鏈繃鏈�-            public string jdge { get; set; } // 璐ㄩ噺鐘舵� OK=浜у搧鍚堟牸锛孨G=浜у搧涓嶅悎鏍硷紝HLM=浜у搧寰呭畾
-            public string effective_time { get; set; } // 鐢熸晥鏃堕棿 (yyyy-MM-dd HH:mm:ss)
-            public string expiration_time { get; set; } // 澶辨晥鏃堕棿 (yyyy-MM-dd HH:mm:ss)
+            public string jdge { get; set; } // 璐ㄩ噺鐘舵� OK=浜у搧鍚堟牸锛孒OLD = 浜у搧寰呭畾
+            public int overage { get; set; } // 鐢熸晥鏃堕棿 (yyyy-MM-dd HH:mm:ss)
+            public int minhour { get; set; } // 澶辨晥鏃堕棿 (yyyy-MM-dd HH:mm:ss)
+            public int productTypeCode { get; set; } // 澶辨晥鏃堕棿 (yyyy-MM-dd HH:mm:ss)
         }
 
         

--
Gitblit v1.9.1