From 37fc700892a509346d5be0a1af2d3de1fe8d3a9e Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期二, 20 八月 2024 18:38:10 +0800
Subject: [PATCH] 一些更改

---
 Tiger.Business.MES/iERP/U9C_MES.cs                           |  173 +++++++++++++++++++++++-
 Tiger.Business.MES/Task/Jobs.U9C_ME_GetWo.cs                 |    6 
 Tiger.Business.MES/Transaction/CollectNode.cs                |   33 +++-
 Tiger.Business.MES/Transaction/PackingNode.cs                |   31 +++
 Tiger.Business.MES/Transaction/Position.cs                   |    6 
 Tiger.Business/MES/Biz.WorkBatch.cs                          |    2 
 Tiger.IBusiness/MES/iERP/IU9C_MES.cs                         |    1 
 Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustSn.cs             |   53 +++++++
 Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustomer.cs           |   14 +-
 Tiger.Business.MES/Transaction/TestNode.cs                   |   29 +++
 Tiger.Business.MES/Task/Jobs.U9C_ME_GetSupplier.cs           |   53 +++++++
 Tiger.Business.MES/Task/Jobs.U9C_ME_GetItem.cs               |    2 
 Tiger.Model.Net/Entitys/MES/ParameterEntity/U9C_MES_Input.cs |    3 
 13 files changed, 368 insertions(+), 38 deletions(-)

diff --git a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustSn.cs b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustSn.cs
new file mode 100644
index 0000000..b192ab2
--- /dev/null
+++ b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustSn.cs
@@ -0,0 +1,53 @@
+锘縰sing Rhea.Common;
+using Sundial;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using Tiger.IBusiness;
+using Tiger.Model;
+using Tiger.Model.Minsun;
+
+namespace Tiger.Business.MES
+{
+    /// <summary>
+    /// 浠嶶9C鑾峰彇瀹㈡埛鏉$爜淇℃伅
+    /// </summary>
+    public class U9C_ME_GetCustSn : TigerJobBase, ITigerJob
+    {
+        public string Id { get; set; } = Guid.NewGuid().ToString("N");
+        public string Tag { get; set; } = "U9C_ME_GetCustSn Interface Job";
+        public string Name { get; set; } = "U9C_ME_GetCustSn Interface Job";
+
+        public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
+        {
+            Logger.Scheduler.Info(context.Trigger.ConvertToMonitor());
+            try
+            {
+                var _lastRunTime = Biz.SysParam["GetCustBar_LastTime", "Interface_LastRun"].PARAM_VALUE;
+                var LastRunTime = string.IsNullOrEmpty(_lastRunTime) ? DateTime.Now.AddMinutes(-30) : Convert.ToDateTime(_lastRunTime);
+                if ((DateTime.Now - LastRunTime).TotalMinutes > 30)
+                {
+                    GetCustBarcodeInput input = new GetCustBarcodeInput
+                    {
+                        startTime = LastRunTime.ToString("yyyy-MM-dd HH:mm:ss"),
+                        endTime = LastRunTime.AddMinutes(30).ToString("yyyy-MM-dd HH:mm:ss")
+                    };
+                    var result = await DI.Resolve<IU9C_MES>().GetCustBarCode(input);
+                    if (!result.IsSuccessed)
+                    {
+                        Logger.Scheduler.Error($"鑾峰彇瀹㈡埛鏉$爜淇℃伅寮傚父:{result.Message}");
+                    }
+                }
+                //SaveLog(context, "浠嶶9C鑾峰彇瀹㈡埛鏉$爜淇℃伅鎴愬姛");
+            }
+            catch (System.Exception ex)
+            {
+                Logger.Scheduler.Fatal(ex, "鑾峰彇瀹㈡埛鏉$爜淇℃伅寮傚父");
+            }
+            await Task.CompletedTask;
+        }
+    }
+}
diff --git a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustomer.cs b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustomer.cs
index e89efd5..e5776c3 100644
--- a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustomer.cs
+++ b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustomer.cs
@@ -13,7 +13,7 @@
 namespace Tiger.Business.MES
 {
     /// <summary>
-    /// 浠嶶9C鑾峰彇宸ュ崟淇℃伅
+    /// 浠嶶9C鑾峰彇瀹㈡埛淇℃伅
     /// </summary>
     public class U9C_MES_GetCustomer : TigerJobBase, ITigerJob
     {
@@ -27,25 +27,25 @@
             try
             {
                 var _lastRunTime = Biz.SysParam["GetCust_LastRun", "Interface_LastRun"].PARAM_VALUE;
-                var LastRunTime = string.IsNullOrEmpty(_lastRunTime) ? DateTime.Now.AddMinutes(-30) : Convert.ToDateTime(_lastRunTime);
-                if ((DateTime.Now - LastRunTime).TotalMinutes > 30)
+                var LastRunTime = string.IsNullOrEmpty(_lastRunTime) ? DateTime.Now.AddDays(-1) : Convert.ToDateTime(_lastRunTime);
+                if ((DateTime.Now - LastRunTime).TotalDays > 1)
                 {
                     GetCustomerInput input = new GetCustomerInput
                     {
                         startTime = LastRunTime.ToString("yyyy-MM-dd HH:mm:ss"),
-                        endTime = LastRunTime.AddMinutes(30).ToString("yyyy-MM-dd HH:mm:ss")
+                        endTime = LastRunTime.AddDays(1).ToString("yyyy-MM-dd HH:mm:ss")
                     };
                     var result = await DI.Resolve<IU9C_MES>().GetCustomer(input);
                     if (!result.IsSuccessed)
                     {
-                        Logger.Scheduler.Error($"鑾峰彇宸ュ崟淇℃伅寮傚父:{result.Message}");
+                        Logger.Scheduler.Error($"鑾峰彇瀹㈡埛淇℃伅寮傚父:{result.Message}");
                     }
                 }
-                //SaveLog(context, "浠嶶9C鑾峰彇宸ュ崟淇℃伅鎴愬姛");
+                //SaveLog(context, "浠嶶9C鑾峰彇瀹㈡埛淇℃伅鎴愬姛");
             }
             catch (System.Exception ex)
             {
-                Logger.Scheduler.Fatal(ex, "鑾峰彇宸ュ崟淇℃伅寮傚父");
+                Logger.Scheduler.Fatal(ex, "鑾峰彇瀹㈡埛淇℃伅寮傚父");
             }
             await Task.CompletedTask;
         }
diff --git a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetItem.cs b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetItem.cs
index 8bf3073..c67e11f 100644
--- a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetItem.cs
+++ b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetItem.cs
@@ -28,7 +28,7 @@
             {
                 var _lastRunTime = Biz.SysParam["GetItem_LastRun", "Interface_LastRun"].PARAM_VALUE;
                 var LastRunTime = string.IsNullOrEmpty(_lastRunTime) ? DateTime.Now.AddDays(-1) : Convert.ToDateTime(_lastRunTime);
-                if ((DateTime.Now - LastRunTime).TotalMinutes > 30)
+                if ((DateTime.Now - LastRunTime).TotalDays > 1)
                 {
                     GetBasItemInput input = new GetBasItemInput
                     {
diff --git a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetSupplier.cs b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetSupplier.cs
new file mode 100644
index 0000000..eaaf92f
--- /dev/null
+++ b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetSupplier.cs
@@ -0,0 +1,53 @@
+锘縰sing Rhea.Common;
+using Sundial;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using Tiger.IBusiness;
+using Tiger.Model;
+using Tiger.Model.Minsun;
+
+namespace Tiger.Business.MES
+{
+    /// <summary>
+    /// 浠嶶9C鑾峰彇渚涘簲鍟嗕俊鎭�
+    /// </summary>
+    public class U9C_ME_GetSupplier : TigerJobBase, ITigerJob
+    {
+        public string Id { get; set; } = Guid.NewGuid().ToString("N");
+        public string Tag { get; set; } = "U9C_ME_GetSupplier Interface Job";
+        public string Name { get; set; } = "U9C_ME_GetSupplier Interface Job";
+
+        public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
+        {
+            Logger.Scheduler.Info(context.Trigger.ConvertToMonitor());
+            try
+            {
+                var _lastRunTime = Biz.SysParam["Vender_LastTime", "Interface_LastRun"].PARAM_VALUE;
+                var LastRunTime = string.IsNullOrEmpty(_lastRunTime) ? DateTime.Now.AddDays(-1) : Convert.ToDateTime(_lastRunTime);
+                if ((DateTime.Now - LastRunTime).TotalDays > 1)
+                {
+                    GetSupplierInput input = new GetSupplierInput
+                    {
+                        startTime = LastRunTime.ToString("yyyy-MM-dd HH:mm:ss"),
+                        endTime = LastRunTime.AddDays(1).ToString("yyyy-MM-dd HH:mm:ss")
+                    };
+                    var result = await DI.Resolve<IU9C_MES>().GetSupplier(input);
+                    if (!result.IsSuccessed)
+                    {
+                        Logger.Scheduler.Error($"鑾峰彇渚涘簲鍟嗕俊鎭紓甯�:{result.Message}");
+                    }
+                }
+                //SaveLog(context, "浠嶶9C鑾峰彇渚涘簲鍟嗕俊鎭垚鍔�");
+            }
+            catch (System.Exception ex)
+            {
+                Logger.Scheduler.Fatal(ex, "鑾峰彇渚涘簲鍟嗕俊鎭紓甯�");
+            }
+            await Task.CompletedTask;
+        }
+    }
+}
diff --git a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetWo.cs b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetWo.cs
index 457dead..039c404 100644
--- a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetWo.cs
+++ b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetWo.cs
@@ -27,13 +27,13 @@
             try
             {
                 var _lastRunTime = Biz.SysParam["GetWo_LastRun", "Interface_LastRun"].PARAM_VALUE;
-                var LastRunTime = string.IsNullOrEmpty(_lastRunTime) ? DateTime.Now.AddMinutes(-30) : Convert.ToDateTime(_lastRunTime);
-                if ((DateTime.Now - LastRunTime).TotalMinutes > 30)
+                var LastRunTime = string.IsNullOrEmpty(_lastRunTime) ? DateTime.Now.AddMinutes(-60) : Convert.ToDateTime(_lastRunTime);
+                if ((DateTime.Now - LastRunTime).TotalMinutes > 60)
                 {
                     GetWoInput input = new GetWoInput
                     {
                         startTime = LastRunTime.ToString("yyyy-MM-dd HH:mm:ss"),
-                        endTime = LastRunTime.AddMinutes(30).ToString("yyyy-MM-dd HH:mm:ss")
+                        endTime = LastRunTime.AddMinutes(60).ToString("yyyy-MM-dd HH:mm:ss")
                     };
                     var result = await DI.Resolve<IU9C_MES>().GetBasWo(input);
                     if (!result.IsSuccessed)
diff --git a/Tiger.Business.MES/Transaction/CollectNode.cs b/Tiger.Business.MES/Transaction/CollectNode.cs
index 5eeaa41..9e8b6a4 100644
--- a/Tiger.Business.MES/Transaction/CollectNode.cs
+++ b/Tiger.Business.MES/Transaction/CollectNode.cs
@@ -48,9 +48,16 @@
                     {
                         action = NodeSubmit(action, input);
                         //鏇存柊宸ュ簭淇℃伅
-                        var info = WoContext.GetSnOperInfo(input.SN).Data;
-                        info.InputQty = OperInfoDic[CurBatch.Batch.BATCH_NO].InputQty;
-                        action.Data.OperInfo = info;
+                        if (!action.IsSuccessed)
+                        {
+                            var info = WoContext.GetSnOperInfo(input.SN).Data;
+                            info.InputQty = OperInfoDic[CurBatch.Batch.BATCH_NO].InputQty;
+                            action.Data.OperInfo = info;
+                        }
+                        else if (!IsFinishAllSteps)
+                        {
+                            action.Data.OperInfo = SetOperNodeInfo(OperInfoDic[CurBatch.Batch.BATCH_NO]);
+                        }
                     }
                     //褰撳墠宀椾綅鍦ㄥ綋鍓嶅伐鍗曚笉鏄绔欙紝鍒欐煡鎵炬潯鐮佸凡缁戝畾鐨勫伐鍗曞綋浣滃綋鍓嶅伐鍗�
                     else
@@ -85,8 +92,11 @@
                                     }
                                 }
                                 //鏉$爜杩囩珯
-                                action = NodeSubmit(action, input); 
-                                action.Data.OperInfo = SetOperNodeInfo(OperInfoDic[CurBatch.Batch.BATCH_NO]);
+                                action = NodeSubmit(action, input);
+                                if (!IsFinishAllSteps)
+                                {
+                                    action.Data.OperInfo = SetOperNodeInfo(OperInfoDic[CurBatch.Batch.BATCH_NO]);
+                                }
                             }
                         }
                         //鏌ユ壘涓嶅埌鏉$爜宸茬粦瀹氱殑宸ュ崟
@@ -146,9 +156,12 @@
                         //濡傛灉鎵�鏈夊伐姝ラ兘瀹屾垚
                         if (IsFinishAllSteps)
                         {
-                            result = DoIfFinishAllSteps(result);
+                            result = DoIfFinishAllSteps(result); 
                         }
-                        result.Data.OperInfo = OperInfoDic[CurBatch.Batch.BATCH_NO];
+                        else
+                        {
+                            result.Data.OperInfo = OperInfoDic[CurBatch.Batch.BATCH_NO];
+                        }
                         return result;
                     }
                 }
@@ -204,6 +217,10 @@
                         ITEM_CODE = CurBatch.WO.ITEM_CODE,
                         WORK_ORDER = CurBatch.Batch.ORDER_NO,
                         BATCH_NO = CurBatch.Batch.BATCH_NO,
+                        FTY_CODE = CurFactory.FTY_CODE,
+                        WS_CODE = CurWorkshop.WS_CODE,
+                        LINE_CODE = CurLine.LINE_CODE,
+                        POST_CODE = CurPosition.POST_CODE,
                         HOLD_FLAG = "N",
                         REWORK_FLAG = CurBatch.WO.ORDER_TYPE == BIZ_MES_WO.ORDER_TYPEs.Rework.GetValue() ? "Y" : "N",
                         FINISHED_FLAG = "N",
@@ -497,9 +514,11 @@
 
             //淇濆瓨鎴愬姛锛岃繑鍥炶繃绔欐秷鎭�
             OperInfoDic[CurBatch.Batch.BATCH_NO].InputQty += CurWipSNs.Count;
+            action.Data.OperInfo = SetOperNodeInfo(OperInfoDic[CurBatch.Batch.BATCH_NO]);
             action.Data.ShortMsg = new("杩囩珯鎴愬姛", ShortMessage.Types.Success);
             //action.LocaleMsg = new($"宸ュ崟[{CurWipSN.WORK_ORDER}]鐨勬潯鐮乕{CurWipSN.SN}]鍦ㄥ矖浣峓{CurWipSN.POST_CODE}]宸ュ簭[{CurWipSN.NODE_NAME}]杩囩珯鎴愬姛锛岀姸鎬乕{CurWipSN.STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>()}]");
             action.LocaleMsg = new("MES.Transaction.CollectNode.ScanSn.PassSuccess", CurWipSNs.First().WORK_ORDER, CurSN, CurWipSNs.First().POST_CODE, CurWipSNs.First().NODE_NAME,CurWipSNs.First().STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>());
+            
             //閲嶇疆宸ュ簭
             ResetNode();
             return action;
diff --git a/Tiger.Business.MES/Transaction/PackingNode.cs b/Tiger.Business.MES/Transaction/PackingNode.cs
index 0c6de97..b52642c 100644
--- a/Tiger.Business.MES/Transaction/PackingNode.cs
+++ b/Tiger.Business.MES/Transaction/PackingNode.cs
@@ -71,9 +71,16 @@
                         {
                             action = NodeSubmit(action, input);
                             //鏇存柊宸ュ簭淇℃伅
-                            var info = WoContext.GetSnOperInfo(input.SN).Data;
-                            info.InputQty = OperInfoDic[CurBatch.Batch.BATCH_NO].InputQty;
-                            action.Data.OperInfo = info;
+                            if (!action.IsSuccessed)
+                            {
+                                var info = WoContext.GetSnOperInfo(input.SN).Data;
+                                info.InputQty = OperInfoDic[CurBatch.Batch.BATCH_NO].InputQty;
+                                action.Data.OperInfo = info;
+                            }
+                            else if (!IsFinishAllSteps)
+                            {
+                                action.Data.OperInfo = SetOperNodeInfo(OperInfoDic[CurBatch.Batch.BATCH_NO]);
+                            }
                         }
                         //褰撳墠宀椾綅鍦ㄥ綋鍓嶅伐鍗曚笉鏄绔欙紝鍒欐煡鎵炬潯鐮佸凡缁戝畾鐨勫伐鍗曞綋浣滃綋鍓嶅伐鍗�
                         else
@@ -118,7 +125,10 @@
 	                                }
 	                                //鏉$爜杩囩珯
 	                                action = NodeSubmit(action, input);
-                                    action.Data.OperInfo = SetOperNodeInfo(OperInfoDic[CurBatch.Batch.BATCH_NO]);
+                                    if (!IsFinishAllSteps)
+                                    {
+                                        action.Data.OperInfo = SetOperNodeInfo(OperInfoDic[CurBatch.Batch.BATCH_NO]);
+                                    }
                                 }
                             }
                             //鏌ユ壘涓嶅埌鏉$爜宸茬粦瀹氱殑宸ュ崟
@@ -180,7 +190,10 @@
                             {
                                 result = DoIfFinishAllSteps(result);
                             }
-                            result.Data.OperInfo = OperInfoDic[CurBatch.Batch.BATCH_NO];
+                            else
+                            {
+                                result.Data.OperInfo = OperInfoDic[CurBatch.Batch.BATCH_NO];
+                            }
                             return result;
                         }
                     }
@@ -236,7 +249,11 @@
 	                    ITEM_CODE = CurBatch.WO.ITEM_CODE,
 	                    WORK_ORDER = CurBatch.Batch.ORDER_NO,
 	                    BATCH_NO = CurBatch.Batch.BATCH_NO,
-	                    HOLD_FLAG = "N",
+                        FTY_CODE = CurFactory.FTY_CODE,
+                        WS_CODE = CurWorkshop.WS_CODE,
+                        LINE_CODE = CurLine.LINE_CODE,
+                        POST_CODE = CurPosition.POST_CODE,
+                        HOLD_FLAG = "N",
 	                    REWORK_FLAG = CurBatch.WO.ORDER_TYPE == BIZ_MES_WO.ORDER_TYPEs.Rework.GetValue() ? "Y" : "N",
 	                    FINISHED_FLAG = "N",
 	                    INV_FLAG = "N",
@@ -529,9 +546,11 @@
 
             //淇濆瓨鎴愬姛锛岃繑鍥炶繃绔欐秷鎭�
             OperInfoDic[CurBatch.Batch.BATCH_NO].InputQty += CurWipSNs.Count;
+            action.Data.OperInfo = SetOperNodeInfo(OperInfoDic[CurBatch.Batch.BATCH_NO]);
             action.Data.ShortMsg = new("杩囩珯鎴愬姛", ShortMessage.Types.Success);
             //action.LocaleMsg = new($"宸ュ崟[{CurWipSN.WORK_ORDER}]鐨勬潯鐮乕{CurWipSN.SN}]鍦ㄥ矖浣峓{CurWipSN.POST_CODE}]宸ュ簭[{CurWipSN.NODE_NAME}]杩囩珯鎴愬姛锛岀姸鎬乕{CurWipSN.STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>()}]");
             action.LocaleMsg = new("MES.Transaction.CollectNode.ScanSn.PassSuccess", CurWipSNs.First().WORK_ORDER, CurSN, CurWipSNs.First().POST_CODE, CurWipSNs.First().NODE_NAME,CurWipSNs.First().STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>());
+            
             //閲嶇疆宸ュ簭
             ResetNode();
             
diff --git a/Tiger.Business.MES/Transaction/Position.cs b/Tiger.Business.MES/Transaction/Position.cs
index eb431bf..d4b8184 100644
--- a/Tiger.Business.MES/Transaction/Position.cs
+++ b/Tiger.Business.MES/Transaction/Position.cs
@@ -126,7 +126,11 @@
                     WoContext.WoBatchDic.Add(wb.Batch.BATCH_NO, wb);
                 }
                 CurBatch = WoContext.GetBatch(input.OrderNo, CurLine.LINE_CODE);
-                OperInfoDic.Add(CurBatch.Batch.BATCH_NO, new());
+                if (!OperInfoDic.ContainsKey(CurBatch.Batch.BATCH_NO))
+                {
+                    OperInfoDic.Add(CurBatch.Batch.BATCH_NO, new());
+                }
+                
                 action.Data = new { WorkOrder = CurBatch.WO, Bacth = CurBatch.Batch };
             }
             catch (Exception ex)
diff --git a/Tiger.Business.MES/Transaction/TestNode.cs b/Tiger.Business.MES/Transaction/TestNode.cs
index 81213e3..05f1056 100644
--- a/Tiger.Business.MES/Transaction/TestNode.cs
+++ b/Tiger.Business.MES/Transaction/TestNode.cs
@@ -49,9 +49,16 @@
                     {
                         action = NodeSubmit(action, input);
                         //鏇存柊宸ュ簭淇℃伅
-                        var info = WoContext.GetSnOperInfo(input.SN).Data;
-                        info.InputQty = OperInfoDic[CurBatch.Batch.BATCH_NO].InputQty;
-                        action.Data.OperInfo = info;
+                        if (!action.IsSuccessed)
+                        {
+                            var info = WoContext.GetSnOperInfo(input.SN).Data;
+                            info.InputQty = OperInfoDic[CurBatch.Batch.BATCH_NO].InputQty;
+                            action.Data.OperInfo = info;
+                        }
+                        else if (!IsFinishAllSteps)
+                        {
+                            action.Data.OperInfo = SetOperNodeInfo(OperInfoDic[CurBatch.Batch.BATCH_NO]);
+                        }
                     }
                     //褰撳墠宀椾綅鍦ㄥ綋鍓嶅伐鍗曚笉鏄绔欙紝鍒欐煡鎵炬潯鐮佸凡缁戝畾鐨勫伐鍗曞綋浣滃綋鍓嶅伐鍗�
                     else
@@ -87,7 +94,10 @@
                                 }
                                 //鏉$爜杩囩珯
                                 action = NodeSubmit(action, input);
-                                action.Data.OperInfo = SetOperNodeInfo(OperInfoDic[CurBatch.Batch.BATCH_NO]);
+                                if (!IsFinishAllSteps)
+                                {
+                                    action.Data.OperInfo = SetOperNodeInfo(OperInfoDic[CurBatch.Batch.BATCH_NO]);
+                                }
                             }
                         }
                         //鏌ユ壘涓嶅埌鏉$爜宸茬粦瀹氱殑宸ュ崟
@@ -149,7 +159,10 @@
                         {
                             result = DoIfFinishAllSteps(result);
                         }
-                        result.Data.OperInfo = OperInfoDic[CurBatch.Batch.BATCH_NO];
+                        else
+                        {
+                            result.Data.OperInfo = OperInfoDic[CurBatch.Batch.BATCH_NO];
+                        }
                         return result;
                     }
                 }
@@ -204,6 +217,10 @@
                         ITEM_CODE = CurBatch.WO.ITEM_CODE,
                         WORK_ORDER = CurBatch.Batch.ORDER_NO,
                         BATCH_NO = CurBatch.Batch.BATCH_NO,
+                        FTY_CODE = CurFactory.FTY_CODE,
+                        WS_CODE = CurWorkshop.WS_CODE,
+                        LINE_CODE = CurLine.LINE_CODE,
+                        POST_CODE = CurPosition.POST_CODE,
                         HOLD_FLAG = "N",
                         REWORK_FLAG = CurBatch.WO.ORDER_TYPE == BIZ_MES_WO.ORDER_TYPEs.Rework.GetValue() ? "Y" : "N",
                         FINISHED_FLAG = "N",
@@ -497,9 +514,11 @@
 
             //淇濆瓨鎴愬姛锛岃繑鍥炶繃绔欐秷鎭�
             OperInfoDic[CurBatch.Batch.BATCH_NO].InputQty += CurWipSNs.Count;
+            action.Data.OperInfo = SetOperNodeInfo(OperInfoDic[CurBatch.Batch.BATCH_NO]);
             action.Data.ShortMsg = new("杩囩珯鎴愬姛", ShortMessage.Types.Success);
             //action.LocaleMsg = new($"宸ュ崟[{CurWipSN.WORK_ORDER}]鐨勬潯鐮乕{CurWipSN.SN}]鍦ㄥ矖浣峓{CurWipSN.POST_CODE}]宸ュ簭[{CurWipSN.NODE_NAME}]杩囩珯鎴愬姛锛岀姸鎬乕{CurWipSN.STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>()}]");
             action.LocaleMsg = new("MES.Transaction.CollectNode.ScanSn.PassSuccess", CurWipSNs.First().WORK_ORDER, CurSN, CurWipSNs.First().POST_CODE, CurWipSNs.First().NODE_NAME, CurWipSNs.First().STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>());
+            
             //閲嶇疆宸ュ簭
             ResetNode();
             return action;
diff --git a/Tiger.Business.MES/iERP/U9C_MES.cs b/Tiger.Business.MES/iERP/U9C_MES.cs
index 9107075..a422654 100644
--- a/Tiger.Business.MES/iERP/U9C_MES.cs
+++ b/Tiger.Business.MES/iERP/U9C_MES.cs
@@ -65,7 +65,7 @@
             }
             Logger.Scheduler.Info($"鐗╂枡淇℃伅瀛樺叆瀹炰綋涓紝鎬绘暟锛歔{items.Count}]");
             db = Biz.Db;
-            var LastRun = db.Queryable<SYS_PARAM>().Where(q => q.PRMG_CODE == "Interface_LastRun" && q.PARAM_CODE == "GetItem_LastRun").Single();
+            var LastRun = await db.Queryable<SYS_PARAM>().Where(q => q.PRMG_CODE == "Interface_LastRun" && q.PARAM_CODE == "GetItem_LastRun").SingleAsync();
             LastRun.PARAM_VALUE = (input.endTime.ToDateTime() - DateTime.Now).TotalMinutes > 0 ? LastRun.PARAM_VALUE : input.endTime;
             var dbTran = db.UseTran(() =>
             {
@@ -104,7 +104,7 @@
         }
 
         /// <summary>
-        /// 鑾峰彇宸ュ崟淇℃伅
+        /// 鍚屾宸ュ崟淇℃伅
         /// </summary>
         /// <param name="input"></param>
         /// <returns></returns>
@@ -146,7 +146,15 @@
                             SN_PREFIX = di["InBarHead"] == null ? "" : di["InBarHead"].ToString(),
                             CUST_PREFIX = di["OutBarHead"] == null ? "" : di["OutBarHead"].ToString(),
                         };
-                        items.Add(woItem);
+                        if (!Biz.Db.Queryable<BIZ_MES_WO>().Any(x => x.ORDER_NO == woItem.ORDER_NO && (x.STATUS > 0 || x.ROUTE_STATUS > 0)))
+                        {
+                            items.Add(woItem);
+                        }
+                        else
+                        {
+                            var _wo = await Biz.Db.Queryable<BIZ_MES_WO>().Where(x => x.ORDER_NO == woItem.ORDER_NO).FirstAsync();
+                            Logger.Scheduler.Info($"宸ュ崟[{woItem.ORDER_NO}]淇℃伅瀛樺湪骞朵笖鐘舵�佷笉鏄垵濮嬪寲锛屾垨鑰呭伐鑹哄凡缁忛厤缃�傜姸鎬乕{EnumHelper.GetDesc(EnumHelper.GetEnum<BIZ_MES_WO.STATUSs>(_wo.STATUS))}]锛屽伐鑹洪厤缃姸鎬乕{EnumHelper.GetDesc(EnumHelper.GetEnum<BIZ_MES_WO.ROUTE_STATUSs>(_wo.ROUTE_STATUS))}]");
+                        }
                     }
                 }
             }
@@ -191,7 +199,7 @@
         }
 
         /// <summary>
-        /// 鑾峰彇瀹㈡埛淇℃伅
+        /// 鍚屾瀹㈡埛淇℃伅
         /// </summary>
         /// <param name="input"></param>
         /// <returns></returns>
@@ -203,7 +211,7 @@
             Logger.Scheduler.Info($"{input.triggerDetail}");
             DbClient db = Biz.DataSource["YadaU9C"].Client;
             var list = db.Queryable<dynamic>().AS("mes_Customer").Where("ModifiedOn > @startTime And ModifiedOn < @endTime", new { startTime = input.startTime, endTime = input.endTime }).ToList();
-            var orgs = Biz.Db.Queryable<SYS_ORGANIZATION>().ToList();
+            var orgs = await Biz.Db.Queryable<SYS_ORGANIZATION>().ToListAsync();
             List<BAS_CUSTOMER> items = new();
             if (list != null && list.Count > 0)
             {
@@ -270,9 +278,160 @@
             return action;
         }
 
-        public Task<ApiAction> GetSupplier(GetSupplierInput input)
+        /// <summary>
+        /// 鍚屾渚涘簲鍟�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        public async Task<ApiAction> GetSupplier(GetSupplierInput input)
         {
-            throw new NotImplementedException();
+            var action = new ApiAction();
+            Logger.Scheduler.Info($"渚涘簲鍟嗕俊鎭紑濮嬪悓姝ャ�傘�傘�傛暟鎹鏌ヨ繘琛屼腑銆傘�傘��");
+            Logger.Scheduler.Info($"{input.triggerDetail}");
+            DbClient db = Biz.DataSource["YadaU9C"].Client;
+            var list = db.Queryable<dynamic>().AS("mes_Supplier").Where("ModifiedOn > @startTime And ModifiedOn < @endTime", new { startTime = input.startTime, endTime = input.endTime }).ToList();
+            var orgs = await Biz.Db.Queryable<SYS_ORGANIZATION>().ToListAsync();
+            List<BAS_SUPPLIER> items = new();
+            if (list != null && list.Count > 0)
+            {
+                foreach (var item in list)
+                {
+                    var d = item as System.Dynamic.ExpandoObject;
+                    var di = d as IDictionary<string, object>;
+                    di = di?.ToDictionary(x => x.Key, x => x.Value);
+                    if (di != null)
+                    {
+                        var orgId = di["Org"] == null ? "" : di["Org"].ToString();
+                        BAS_SUPPLIER suppItem = new()
+                        {
+                            SUPP_CODE = di["Code"] == null ? "" : di["Code"].ToString(),
+                            SUPP_NAME_CN = di["Name"] == null ? "" : di["Name"].ToString(),
+                            CREATE_TIME = di["CreatedOn"].ToDateTime(),
+                            UPDATE_TIME = di["ModifiedOn"].ToDateTime(),
+                            AUTH_ORG = orgs.Where(x => x.ID == orgId).Select(q => q.ORG_CODE).FirstOrDefault(),
+                        };
+                        items.Add(suppItem);
+                    }
+                }
+            }
+            Logger.Scheduler.Info($"渚涘簲鍟嗕俊鎭瓨鍏ュ疄浣撲腑锛屾�绘暟锛歔{items.Count}]");
+            db = Biz.Db;
+            var LastRun = db.Queryable<SYS_PARAM>().Where(q => q.PRMG_CODE == "Interface_LastRun" && q.PARAM_CODE == "Vender_LastTime").Single();
+            LastRun.PARAM_VALUE = (input.endTime.ToDateTime() - DateTime.Now).TotalMinutes > 0 ? LastRun.PARAM_VALUE : input.endTime;
+            var dbTran = db.UseTran(() =>
+            {
+                db.Storageable(LastRun, "U9C_MES_GetCustomer").ExecuteCommand();
+                if (items.Any())
+                {
+                    if (items.Count > 150)
+                    {
+                        db.Utilities.PageEach(items, 1000, pageList =>
+                        {
+                            var y = db.Storageable(pageList, "U9C")
+                                   .WhereColumns(t => new { t.SUPP_CODE, t.GHOST_ROW })
+                                   .ToStorage();
+                            y.BulkCopy();
+                            y.BulkUpdate();
+                        });
+                    }
+                    else
+                    {
+                        var s = db.Storageable(items, "U9C")
+                               .WhereColumns(t => new { t.SUPP_CODE, t.GHOST_ROW })
+                               .ToStorage();
+                        s.AsInsertable.ExecuteCommand();
+                        s.AsUpdateable.IgnoreColumns(x => x.ID).ExecuteCommand();
+                    }
+                }
+
+            });
+            if (!dbTran.IsSuccess)
+            {
+                action.CatchExceptionWithLog(dbTran.ErrorException, $"鏁版嵁澶勭悊澶辫触");
+                Logger.Scheduler.Error(action.Message);
+            }
+            Logger.Scheduler.Info($"渚涘簲鍟嗕俊鎭瓨鍏ユ暟鎹簱锛屾�绘暟锛歔{items.Count}]");
+            return action;
+        }
+
+        /// <summary>
+        /// 鍚屾瀹㈡埛鏉$爜
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        public async Task<ApiAction> GetCustBarCode(GetCustBarcodeInput input)
+        {
+            var action = new ApiAction();
+            Logger.Scheduler.Info($"瀹㈡埛鏉$爜淇℃伅寮�濮嬪悓姝ャ�傘�傘�傛暟鎹鏌ヨ繘琛屼腑銆傘�傘��");
+            Logger.Scheduler.Info($"{input.triggerDetail}");
+            DbClient db = Biz.DataSource["YadaU9C"].Client;
+            var list = db.Queryable<dynamic>().AS("mes_MoBarCode").Where("ModifiedOn > @startTime And ModifiedOn < @endTime", new { startTime = input.startTime, endTime = input.endTime }).ToList();
+            List<MES_CUST_SN> items = new();
+            if (list != null && list.Count > 0)
+            {
+                foreach (var item in list)
+                {
+                    var d = item as System.Dynamic.ExpandoObject;
+                    var di = d as IDictionary<string, object>;
+                    di = di?.ToDictionary(x => x.Key, x => x.Value);
+                    if (di != null)
+                    {
+                        if (di["MoDoc"] != null)
+                        {
+                            var _MES_WO = await Biz.Db.Queryable<BIZ_MES_WO>().Where(x => x.ORDER_NO == di["MoDoc"].ToString()).FirstAsync();
+                            MES_CUST_SN snItem = new()
+                            {
+                                CUST_CODE = _MES_WO?.CUST_CODE ?? "",
+                                WORK_ORDER = di["MoDoc"].ToString(),
+                                CUST_SN = di["OutBarCode"] == null ? "" : di["OutBarCode"].ToString(),
+                                FLOW_SN = di["InBarCode"] == null ? "" : di["InBarCode"].ToString(),
+                                CREATE_TIME = di["CreatedOn"].ToDateTime(),
+                                UPDATE_TIME = di["ModifiedOn"].ToDateTime(),
+                                AUTH_ORG = _MES_WO?.AUTH_ORG,
+                            };
+                            items.Add(snItem);
+                        }
+                    }
+                }
+            }
+            Logger.Scheduler.Info($"瀹㈡埛鏉$爜淇℃伅瀛樺叆瀹炰綋涓紝鎬绘暟锛歔{items.Count}]");
+            db = Biz.Db;
+            var LastRun = db.Queryable<SYS_PARAM>().Where(q => q.PRMG_CODE == "Interface_LastRun" && q.PARAM_CODE == "GetCustBar_LastTime").Single();
+            LastRun.PARAM_VALUE = (input.endTime.ToDateTime() - DateTime.Now).TotalMinutes > 0 ? LastRun.PARAM_VALUE : input.endTime;
+            var dbTran = db.UseTran(() =>
+            {
+                db.Storageable(LastRun, "U9C_MES_GetCustomer").ExecuteCommand();
+                if (items.Any())
+                {
+                    if (items.Count > 150)
+                    {
+                        db.Utilities.PageEach(items, 1000, pageList =>
+                        {
+                            var y = db.Storageable(pageList, "U9C")
+                                   .WhereColumns(t => new { t.CUST_SN, t.GHOST_ROW })
+                                   .ToStorage();
+                            y.BulkCopy();
+                            y.BulkUpdate();
+                        });
+                    }
+                    else
+                    {
+                        var s = db.Storageable(items, "U9C")
+                               .WhereColumns(t => new { t.CUST_SN, t.GHOST_ROW })
+                               .ToStorage();
+                        s.AsInsertable.ExecuteCommand();
+                        s.AsUpdateable.IgnoreColumns(x => x.ID).ExecuteCommand();
+                    }
+                }
+
+            });
+            if (!dbTran.IsSuccess)
+            {
+                action.CatchExceptionWithLog(dbTran.ErrorException, $"鏁版嵁澶勭悊澶辫触");
+                Logger.Scheduler.Error(action.Message);
+            }
+            Logger.Scheduler.Info($"瀹㈡埛鏉$爜淇℃伅瀛樺叆鏁版嵁搴擄紝鎬绘暟锛歔{items.Count}]");
+            return action;
         }
     }
 }
diff --git a/Tiger.Business/MES/Biz.WorkBatch.cs b/Tiger.Business/MES/Biz.WorkBatch.cs
index a4e0b4e..d3917db 100644
--- a/Tiger.Business/MES/Biz.WorkBatch.cs
+++ b/Tiger.Business/MES/Biz.WorkBatch.cs
@@ -366,7 +366,7 @@
                 foreach (var next in nextNodes)
                 {
                     //鏌ユ壘鏈夋病鏈夊墠缃伐搴忔壘涓嶅埌宸茶壇鍝佽繃绔欑殑鍘嗗彶璁板綍锛岃嫢鏈夊垯涓嶅厑璁哥户缁墽琛�
-                    if (!next.PrepNodeIDs.Any(id => !wipSN.History.Any(h => h.WORK_ORDER == WO.ORDER_NO && h.NODE_ID == id && h.IsFinished)))
+                    if (!next.PrepNodeIDs.Any(id => !wipSN.History.Any(h => h.WORK_ORDER == WO.ORDER_NO && h.NODE_ID == id && h.IsFinished)) || parent.IS_FIRST_NODE == "Y")
                     {
                         var setting = NodeSets.FirstOrDefault(q => q.NODE_ID == next.ID);
                         //鍚庣画宸ュ簭鏄惎鐢ㄧ殑锛屽垯娣诲姞
diff --git a/Tiger.IBusiness/MES/iERP/IU9C_MES.cs b/Tiger.IBusiness/MES/iERP/IU9C_MES.cs
index dd16e69..61b22fb 100644
--- a/Tiger.IBusiness/MES/iERP/IU9C_MES.cs
+++ b/Tiger.IBusiness/MES/iERP/IU9C_MES.cs
@@ -15,5 +15,6 @@
         public Task<ApiAction> GetCustomer(GetCustomerInput input);
         public Task<ApiAction> GetSupplier(GetSupplierInput input);
         public Task<ApiAction> GetBasWo(GetWoInput input);
+        public Task<ApiAction> GetCustBarCode(GetCustBarcodeInput input);
     }
 }
diff --git a/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9C_MES_Input.cs b/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9C_MES_Input.cs
index fb6a61b..9472194 100644
--- a/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9C_MES_Input.cs
+++ b/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9C_MES_Input.cs
@@ -29,4 +29,7 @@
     public class GetWoInput : U9C_MES_Input
     {
     }
+    public class GetCustBarcodeInput : U9C_MES_Input
+    {
+    }
 }

--
Gitblit v1.9.3