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.FJJT/core/Monitor.cs |  154 +++++++++++++++++++++------------------------------
 1 files changed, 64 insertions(+), 90 deletions(-)

diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/Monitor.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/Monitor.cs
index 889f4cc..807b3c2 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/Monitor.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/Monitor.cs
@@ -62,21 +62,13 @@
                         if (lineSideLoc != null)
                         {
                             LogHelper.Info($"鎴愬瀷鏈哄彨鏂欎换鍔★紝MES浠诲姟ID锛歿mesTask.ID}", "WMS");
-
-                            // 2.1鎴愭柊鏈哄彨鏂�鏂滆)
                             if (mesTask.PALLET_TYPE == "5" || mesTask.PALLET_TYPE == "6")
                             {
+                                // 2.1鎴愭柊鏈哄彨鏂�鏂滆)
                                 var xcTask = WMSHelper.GetLjXcTaskById(mesTask.ID);
                                 if (xcTask == null)
                                 {
                                     ApiHelper.callMaterialXC(mesTask.MATERIAL_CODE, mesTask.POSITION_ID, mesTask.ID);
-                                }
-                                else
-                                {
-                                    mesTask.RETURN_CODE = xcTask.RETURN_CODE;
-                                    mesTask.RECEIVE_FLAG = xcTask.RECEIVE_FLAG;
-                                    mesTask.RECEIVE_DATE = xcTask.RECEIVE_DATE;
-                                    WMSHelper.updateLjMesTask(mesTask);
                                 }
                             }
                             else
@@ -91,94 +83,74 @@
         }
 
         /// <summary>
-        /// 鐩戝惉XC鍑哄簱浠诲姟涓棿琛�-        /// 璇诲彇鏂滆绔嬪簱鍑哄簱浠诲姟琛紝鏌ヨ浠诲姟鏄惁鎵ц瀹屾垚锛屽畬鎴愬垯锛岃Е鍙慉GV浠诲姟
+        /// 鐩戝惉浠诲姟涓棿琛�         /// </summary>
-        public static void MonitorXcOutTask()
+        public static void MonitorXcTask()
         {
-           var xcOutTasks = WMSHelper.getLjXcOutTask("PENDING", "2");
-            foreach (var outTask in xcOutTasks)
+           var ljMesTasks = WMSHelper.GetLjMesTaskListHD();
+            foreach (var mesTask in ljMesTasks)
             {
-               var mesTask = WMSHelper.GetLjMesTaskById(outTask.ID);
-                if (mesTask != null && mesTask.RETURN_CODE == "2")
+               var xcTask = WMSHelper.GetLjXcTaskById(mesTask.ID);
+                if (xcTask != null && xcTask.RETURN_CODE != mesTask.RETURN_CODE)
                 {
-                    Location startLoc = LocationHelper.GetLoc(outTask.POSITION_ID);
-                    if (startLoc == null) 
+                    if (xcTask.RETURN_CODE == "3")
                     {
-                        WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鎴愬瀷鏈哄彨鏂欏嚭搴�鏂滆)锛岃捣鐐�{outTask.POSITION_ID}鍦╓MS绯荤粺涓笉瀛樺湪");
-                    }
-                    Location endLoc = WMSHelper.getCallMaterialLocCode(mesTask.EQP);
-                    if (endLoc != null) 
-                    {
-                        var wmsTask = WMSHelper.GetWmsTaskByCntr(outTask.PALLET_ID);
-                        if (wmsTask == null)
+                        var wcsTask = WCSHelper.GetTask(xcTask.AGVORDER_ID);
+                        if (wcsTask != null) 
                         {
-                            // 1.鍒涘缓鏂滆-鎴愭柊鏈哄彨鏂欎綔涓�-                            wmsTask = new WMSTask()
+                            var wmsTask = WMSHelper.GetWmsTask(wcsTask.S_OP_CODE);
+                            if (wmsTask != null) 
                             {
-                                S_CNTR_CODE = outTask.PALLET_ID,
-                                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 = mesTask.ID.ToString(),
-                                S_OP_DEF_NAME = "鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔�鏂滆)",
-                                T_START_TIME = DateTime.Now,
-                            };
-                            if (WMSHelper.CreateWmsTask(wmsTask))
-                            {
-                                WCSTask wcsTask = new WCSTask()
+                                Location startLoc = LocationHelper.GetLoc(xcTask.POSITION_ID);
+                                if (startLoc != null) 
                                 {
-                                    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,
-                                    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 = "AGV",
-                                    N_PRIORITY = 10,
-                                    T_START_TIME = DateTime.Now,
-                                };
+                                    wcsTask.S_CNTR_CODE = xcTask.PALLET_ID;
+                                    wcsTask.S_START_LOC = startLoc.S_CODE;
+                                    wcsTask.S_START_AREA = startLoc.S_AREA_CODE;
+                                    wcsTask.N_B_STATE = 0;
+                                    wcsTask.S_B_STATE = "绛夊緟";
+                                    WCSHelper.UpdateWcsTask(wcsTask);
 
-                                if (WCSHelper.CreateTask(wcsTask))
-                                {
-                                    // 璧风偣銆佺粓鐐瑰姞閿�-                                    LocationHelper.LockLoc(wcsTask.S_START_LOC, 2);
-                                    LocationHelper.LockLoc(wcsTask.S_END_LOC, 1);
-
-                                    // 鏇存柊浣滀笟浠诲姟鐘舵�
+                                    wmsTask.S_CNTR_CODE = xcTask.PALLET_ID;
+                                    wmsTask.S_START_LOC = startLoc.S_CODE;
+                                    wmsTask.S_START_AREA = startLoc.S_AREA_CODE;
                                     wmsTask.N_B_STATE = 1;
-                                    WMSHelper.UpdateTaskState(wmsTask);
+                                    wmsTask.S_B_STATE = "鎵ц";
+                                    WMSHelper.UpdateWmsTask(wmsTask);
+
+                                    // 鏌ヨ鎵樼洏鐗╂枡淇℃伅琛�+                                    WMSHelper.updateCarrier(mesTask.PALLET_ID);
                                 }
                             }
                         }
                     }
+
+                    mesTask.POSITION_ID = xcTask.POSITION_ID;
+                    mesTask.RETURN_CODE = xcTask.RETURN_CODE;
+                    mesTask.YCL_BATCH = xcTask.YCL_BATCH;
+                    mesTask.PALLET_ID = xcTask.PALLET_ID;
+                    WMSHelper.updateLjMesTask(mesTask);
                 }
             }
         }
 
 
         /// <summary>
-        /// 鑷姩琛ュ厖绌哄伐瑁呭埌鎺ラ┏浣�+        /// 鑷姩琛ョ┖宸ヨ鍒板浐瀹氱┖宸ヨ鍑哄簱绔欏彴
         /// </summary>
         public static void AutoReplenishEmptyPallet() 
         {
-            var logicConfigs = WMSHelper.getLogicConfigByTaskType("3");
-            if (logicConfigs != null && logicConfigs.Count > 0) 
+            var emptyFixedOutLocList = WMSHelper.GetEmptyFixedOutLocList();
+            foreach (var emptyLoc in emptyFixedOutLocList)
             {
-                foreach (var item in logicConfigs)
+                var wmsTask = WMSHelper.GetWmsTaskByEnd(emptyLoc.S_CODE);
+                if (wmsTask == null )
                 {
-                    var jbLoc = LocationHelper.GetLoc(item.S_LKKTJBLOC);
-                    var wmsTask = WMSHelper.GetWmsTaskByEnd(item.S_LKKTJBLOC);
-                    if (wmsTask == null && jbLoc.N_CURRENT_NUM == 0)
+                    LogHelper.Info($"鍥哄畾绌哄伐瑁呭嚭搴撶珯鍙�{emptyLoc.S_CODE}琛ュ厖绌哄伐瑁�, "WMS");
+                    var areaRelevance = Settings.areaRelevanceList.Where(a => a.jbAreaCode == emptyLoc.S_AREA_CODE).First();
+                    if (areaRelevance != null) 
                     {
-                        LogHelper.Info($"闈炵洿杩炴帴椹充綅:{jbLoc.S_CODE},闇�琛ュ厖绌哄伐瑁�, "WMS");
-                        Location startLoc = WMSHelper.getOutStockStartLoc(item.S_AREA_CODE, null);
+                        Location startLoc = WMSHelper.getOutStockStartLoc(areaRelevance.areaCode, null);
                         if (startLoc != null)
                         {
                             var locCntrRels = LocationHelper.GetLocCntr(startLoc.S_CODE);
@@ -188,10 +160,10 @@
                                 S_CODE = WMSHelper.GenerateTaskNo(),
                                 S_START_LOC = startLoc.S_CODE,
                                 S_START_AREA = startLoc.S_AREA_CODE,
-                                S_END_LOC = jbLoc.S_CODE,
-                                S_END_AREA = jbLoc.S_AREA_CODE,
-                                S_TYPE = "绌哄伐瑁呰嚜鍔ㄥ嚭搴撲换鍔�,
-                                S_OP_DEF_NAME = "鑷姩琛ュ厖绌哄伐瑁呭埌鎺ラ┏浣�,
+                                S_END_LOC = emptyLoc.S_CODE,
+                                S_END_AREA = emptyLoc.S_AREA_CODE,
+                                S_TYPE = "绌哄伐瑁呭嚭搴撲换鍔�,
+                                S_OP_DEF_NAME = "鑷姩琛ュ厖绌哄伐瑁呭埌鍥哄畾鍑哄簱绔欏彴",
                                 T_START_TIME = DateTime.Now,
                             };
                             if (WMSHelper.CreateWmsTask(wmsTask))
@@ -205,8 +177,8 @@
                                     S_TYPE = wmsTask.S_TYPE,
                                     S_START_LOC = startLoc.S_CODE,
                                     S_START_AREA = startLoc.S_AREA_CODE,
-                                    S_END_LOC = jbLoc.S_CODE,
-                                    S_END_AREA = jbLoc.S_AREA_CODE,
+                                    S_END_LOC = emptyLoc.S_CODE,
+                                    S_END_AREA = emptyLoc.S_AREA_CODE,
                                     S_SCHEDULE_TYPE = "WCS",
                                     N_PRIORITY = 10,
                                     T_START_TIME = DateTime.Now,
@@ -224,9 +196,9 @@
                                 }
                             }
                         }
-                        else 
+                        else
                         {
-                            WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"闈炵洿杩炴帴椹充綅:{jbLoc.S_CODE}琛ュ厖绌哄伐瑁呭け璐ワ紝鍘熷洜锛氬簱鍖猴細{item.S_AREA_CODE}娌℃湁绌哄伐瑁�);
+                            WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鍥哄畾绌哄伐瑁呭嚭搴撶珯鍙�{emptyLoc.S_CODE}琛ュ厖绌哄伐瑁呭け璐ワ紝鍘熷洜锛氬簱鍖猴細{areaRelevance.areaCode}娌℃湁绌哄伐瑁�);
                         }
                     }
                 }
@@ -260,25 +232,24 @@
             WMSHelper.updateMateral();
         }
 
+
         /// <summary>
         /// 瀹氭椂鏇存柊搴撳瓨淇℃伅  鏇存柊棰戠巼锛�1鍒嗛挓
         /// </summary>
         public static void UpdateInventoryRegularly()
         {
             var db = new SqlHelper<object>().GetInstance();
+            var areaCodeList = Settings.areaRelevanceList.Select(a => a.areaCode).ToList();
             var locations = db.Queryable<Location>()
-                .LeftJoin<LjLotOnhand>((a, b) => a.S_CODE == b.STORAGE_LOCATION)
-                .LeftJoin<LocCntrRel>((a, b, c) => a.S_CODE == c.S_LOC_CODE)
-                .Where((a, b, c) => b.PALLET_ID != c.S_CNTR_CODE)
+                .LeftJoin<LocCntrRel>((a, b) => a.S_CODE == b.S_LOC_CODE)
+                .Where((a,b) => a.N_CURRENT_NUM > 0 && b.S_CNTR_CODE != null && areaCodeList.Contains(a.S_AREA_CODE) )
                 .ToList();
+
+            // 鍒犻櫎鎵�湁搴撳瓨淇℃伅锛岃繘琛岄噸缃�+            db.Deleteable<LjLotOnhand>().ExecuteCommand();
 
             foreach (var loc in locations)
             {
-                var lotOnhand = db.Queryable<LjLotOnhand>().Where(a => a.STORAGE_LOCATION == loc.S_CODE).First();
-                if (lotOnhand != null) { 
-                    db.Deleteable(lotOnhand).ExecuteCommand();
-                }
-
                 var locCntrRels = LocationHelper.GetLocCntr(loc.S_CODE);
                 if (locCntrRels != null && locCntrRels.Count > 0) 
                 {
@@ -289,16 +260,19 @@
                             var material = WMSHelper.GetMaterial(cntrItem.S_ITEM_CODE);
                             LjLotOnhand ljLotOnhand = new LjLotOnhand()
                             {
+                                ID = WMSHelper.GenerateStockRecordNo(),
                                 MATERIAL_CODE = cntrItem.S_ITEM_CODE,
                                 LOT_NAME = cntrItem.S_BATCH_NO,
                                 PALLET_ID = cntrItem.S_CNTR_CODE,
                                 STORAGE_LOCATION = loc.S_CODE,
                                 QC_STATUS = cntrItem.S_ITEM_STATE,
-                                UNIT = material.S_UNIT,
+                                UNIT = material == null ? "":material.S_UNIT,
                                 QTY = cntrItem.F_QTY,
-                                IN_DATE = cntrItem.T_INBOUND_TIME,
+                                IN_DATE = cntrItem.T_INBOUND_TIME.ToString("yyyy-MM-dd"),
+                                CREATION_DATE = DateTime.Now,
+                                WAREHOUSE_TYPE = "2"
                             };
-                            db.Insertable(lotOnhand).ExecuteCommand();
+                            db.Insertable(ljLotOnhand).ExecuteCommand();
                         }
                     });
                 }

--
Gitblit v1.9.1