From 5fe26555029f1a941e5a3418c28499a534138a62 Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期五, 05 七月 2024 17:37:40 +0800
Subject: [PATCH] 物料定时任务

---
 Tiger.Business.MES/iERP/U9C_MES.cs                           |  111 ++++++++++++++++++
 Tiger.Model.Net/Tiger.Model.Net.csproj                       |    2 
 Tiger.Business/BizSettings.json                              |   10 +
 Tiger.IBusiness/MES/iERP/IU9C_MES.cs                         |   18 +++
 Tiger.Model.Net/Entitys/BAS/BAS_ITEM.cs                      |   13 ++
 Tiger.Api/Controllers/Test/TestController.B.cs               |   15 ++
 Tiger.Business.MES/Task/Jobs.U9C_ME_GetItem.cs               |   53 ++++++++
 Tiger.Model.Net/Entitys/BAS/V_BAS_PKG_DTL.cs                 |   93 +++++++++++++++
 Tiger.Model.Net/Entitys/MES/ParameterEntity/U9C_MES_Input.cs |   28 ++++
 9 files changed, 341 insertions(+), 2 deletions(-)

diff --git a/Tiger.Api/Controllers/Test/TestController.B.cs b/Tiger.Api/Controllers/Test/TestController.B.cs
index ee1c2f6..056f4e9 100644
--- a/Tiger.Api/Controllers/Test/TestController.B.cs
+++ b/Tiger.Api/Controllers/Test/TestController.B.cs
@@ -109,5 +109,20 @@
             }
             return Ok(response);
         }
+
+        [HttpPost]
+        public async Task<IActionResult> GetU9CItem([FromBody] ApiAction<GetBasItemInput> action)
+        {
+            ApiAction response = new();
+            try
+            {
+                response = response.GetResponse(await DI.Resolve<IU9C_MES>().GetBasItem(action.Data));
+            }
+            catch (System.Exception ex)
+            {
+                response = response.GetResponse().CatchExceptionWithLog(ex);
+            }
+            return Ok(response);
+        }
     }
 }
diff --git a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetItem.cs b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetItem.cs
new file mode 100644
index 0000000..8bf3073
--- /dev/null
+++ b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetItem.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_MES_GetItem : TigerJobBase, ITigerJob
+    {
+        public string Id { get; set; } = Guid.NewGuid().ToString("N");
+        public string Tag { get; set; } = "U9C_MES_GetItem Interface Job";
+        public string Name { get; set; } = "U9C_MES_GetItem Interface Job";
+
+        public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
+        {
+            Logger.Scheduler.Info(context.Trigger.ConvertToMonitor());
+            try
+            {
+                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)
+                {
+                    GetBasItemInput input = new GetBasItemInput
+                    {
+                        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>().GetBasItem(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/iERP/U9C_MES.cs b/Tiger.Business.MES/iERP/U9C_MES.cs
new file mode 100644
index 0000000..e9d6f40
--- /dev/null
+++ b/Tiger.Business.MES/iERP/U9C_MES.cs
@@ -0,0 +1,111 @@
+锘縰sing Tiger.Model;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq.Expressions;
+using System.Text;
+using System.Threading.Tasks;
+using Rhea.Common;
+using System.Net;
+using System.Linq;
+using Newtonsoft.Json;
+using Tiger.IBusiness;
+using Microsoft.AspNetCore.Http;
+using Tiger.Model.Minsun;
+
+namespace Tiger.Business.MES
+{
+    public partial class U9C_MES : IU9C_MES
+    {
+        /// <summary>
+        /// 浠嶶9C鎷夊彇鐗╂枡鏁版嵁
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        public async Task<ApiAction> GetBasItem(GetBasItemInput input)
+        {
+            var action = new ApiAction();
+            Logger.Scheduler.Info(Biz.L($"鐗╂枡淇℃伅寮�濮嬪悓姝ャ�傘�傘�傛暟鎹鏌ヨ繘琛屼腑銆傘�傘��"));
+            Logger.Scheduler.Info(Biz.L($"{input.triggerDetail}"));
+            DbClient db = Biz.DataSource["YadaU9C"].Client;
+            var list = db.Queryable<dynamic>().AS("mes_ItemMaster").Where("ModifiedOn > @startTime And ModifiedOn < @endTime", new { startTime = input.startTime, endTime = input.endTime }).ToList();
+            List<BAS_ITEM> items = new();
+            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)
+                {
+                    BAS_ITEM basItem = new()
+                    {
+                        ID = di["ID"].ToString(),
+                        ITEM_CODE = di["Code"] == null ? "" : di["Code"].ToString(),
+                        ITEM_NAME = di["Name"] == null ? "" : di["Name"].ToString(),
+                        ITEM_DESC = di["Description"] == null ?"":di["Description"].ToString(),
+                        SPEC = di["SPECS"] == null ? "" : di["SPECS"].ToString(),
+                        ITEM_TYPE = di["CategoryCode"] == null ? "" : di["CategoryCode"].ToString(),
+                        UNIT = di["InventorySecondUOM"] == null ? "" : di["InventorySecondUOM"].ToString(),
+                        PROD_TYPE = di["ProductTypeCode"] == null ? "" : di["ProductTypeCode"].ToString(),
+                        CREATE_TIME = di["CreatedOn"].ToDateTime(),
+                        UPDATE_TIME = di["ModifiedOn"].ToDateTime(),
+                        IS_ACTIVE = "Y",
+                        IS_PROD = ((string)di["Code"]).StartsWith("2") ? "Y" : "N",
+                    };
+                    items.Add(basItem);
+                }
+            }
+
+            Logger.Scheduler.Info(Biz.L($"鐗╂枡淇℃伅瀛樺叆瀹炰綋涓紝鎬绘暟锛歔{items.Count}]"));
+            db = Biz.Db;
+            var LastRun = db.Queryable<SYS_PARAM>().Where(q => q.PRMG_CODE == "Interface_LastRun" && q.PARAM_CODE == "GetItem_LastRun").Single();
+            LastRun.PARAM_VALUE = input.endTime;
+            var dbTran = db.UseTran(() =>
+            {
+                db.Storageable(LastRun, "U9C_MES_GetItem").ExecuteCommand();
+                if (items.Any())
+                {
+                    if (items.Count > 150)
+                    {
+                        db.Utilities.PageEach(items, 1000, pageList =>
+                        {
+                            var y = db.Storageable(pageList, "U9C")
+                                   .WhereColumns(t => new { t.ITEM_CODE, t.GHOST_ROW })
+                                   .ToStorage();
+                            y.BulkCopy();
+                            y.BulkUpdate();
+                        });
+                    }
+                    else
+                    {
+                        var s = db.Storageable(items, "U9C")
+                               .WhereColumns(t => new { t.ITEM_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(Biz.L($"鐗╂枡淇℃伅瀛樺叆鏁版嵁搴擄紝鎬绘暟锛歔{items.Count}]"));
+            return action;
+
+        }
+
+        public Task<ApiAction> GetCustomer(GetCustomerInput input)
+        {
+            throw new NotImplementedException();
+        }
+
+        public Task<ApiAction> GetSupplier(GetSupplierInput input)
+        {
+            throw new NotImplementedException();
+        }
+    }
+}
diff --git a/Tiger.Business/BizSettings.json b/Tiger.Business/BizSettings.json
index edb6e4b..a5653c5 100644
--- a/Tiger.Business/BizSettings.json
+++ b/Tiger.Business/BizSettings.json
@@ -27,6 +27,7 @@
       "DbType": "SqlServer",
       //"ConnectionString": "server=172.18.8.57;uid=sa;pwd=bmsEia9IS4VByWJr;database=SharetronicWmsDb_DGSC;",
       //"ConnectionString": "server=172.16.80.40;uid=sa;pwd=Yada@321654;database=MES;"
+      //"ConnectionString": "server=localhost;uid=sa;pwd=p@ssw0rd;database=MES;"
       //"ConnectionString": "server=(localdb)\\ProjectsV13;uid=sa;pwd=p@ssw0rd;database=MES;",
       "ConnectionString": "server=47.115.28.255;uid=sa;pwd=p@ssw0rd;database=MES;"
       //"DbType": "Sqlite",
@@ -41,6 +42,11 @@
       //"ConnectionString": "server=47.115.28.255;port=3308;database=wms;uid=tiger;pwd=p@ssw0rd@t1ger;charset='utf8';SslMode=None;AllowLoadLocalInfile=true;"
       //"ConnectionString": "server=47.115.28.255;port=3308;database=tigerdb;uid=tiger;pwd=p@ssw0rd@t1ger;charset='utf8';SslMode=None;AllowLoadLocalInfile=true;"
       //"ConnectionString": "server=localhost;port=3306;database=mqdb;uid=benlin;pwd=benlin@123;charset='utf8';SslMode=None;AllowLoadLocalInfile=true;"
+    },
+    "YadaU9C": {
+      "DbType": "SqlServer",
+      "ConnectionString": "server=172.16.80.20;uid=Mes_View;pwd=yd@123456;database=20240703;"
+      //"ConnectionString": "server=172.18.8.55;database=wms;uid=root;pwd=Share@123;charset='utf8';SslMode=None;AllowLoadLocalInfile=true;"
     },
     "Test": {
       //"DbType": "SqlServer",
@@ -87,7 +93,7 @@
   "CurrentProject": "MqBarcode",
   "JuDian": "XCSJ",
   "IsTestServer": false,
-  "IsUseDbCache": false,
+  "IsUseDbCache": true,
   "UploadAddress": "D:\\nginx-1.26.0\\html",
-  "DownloadAddress": "http://47.115.28.255:8800/files"
+  "DownloadAddress": "http://localhost:8800/files"
 }
\ No newline at end of file
diff --git a/Tiger.IBusiness/MES/iERP/IU9C_MES.cs b/Tiger.IBusiness/MES/iERP/IU9C_MES.cs
new file mode 100644
index 0000000..d63f91e
--- /dev/null
+++ b/Tiger.IBusiness/MES/iERP/IU9C_MES.cs
@@ -0,0 +1,18 @@
+锘縰sing Rhea.Common;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tiger.Model;
+
+namespace Tiger.IBusiness
+{
+    public interface IU9C_MES
+    {
+        public Task<ApiAction> GetBasItem(GetBasItemInput input);
+        public Task<ApiAction> GetCustomer(GetCustomerInput input);
+        public Task<ApiAction> GetSupplier(GetSupplierInput input);
+    }
+}
diff --git a/Tiger.Model.Net/Entitys/BAS/BAS_ITEM.cs b/Tiger.Model.Net/Entitys/BAS/BAS_ITEM.cs
index 2333584..111d0ec 100644
--- a/Tiger.Model.Net/Entitys/BAS/BAS_ITEM.cs
+++ b/Tiger.Model.Net/Entitys/BAS/BAS_ITEM.cs
@@ -33,6 +33,10 @@
         /// 鐗╂枡鍚嶇О
         /// </summary>
         public string ITEM_NAME { get; set; }
+        /// <summary>
+        /// 鐗╂枡鎻忚堪
+        /// </summary>
+        public string ITEM_DESC { get; set; }
 
         /// <summary>
         /// 鐗╁搧鍒嗙被浠g爜
@@ -65,6 +69,15 @@
         public string UNIT { get; set; }
 
         /// <summary>
+        /// 浜у搧绫诲瀷
+        /// </summary>
+        public string PROD_TYPE { get; set; }
+        /// <summary>
+        /// 鏄惁鎴愬搧(Y/N)
+        /// </summary>
+        public string IS_PROD { get; set; }
+
+        /// <summary>
         /// 鏄惁鍚敤(Y/N)
         /// </summary>
         public string IS_ACTIVE { get; set; }
diff --git a/Tiger.Model.Net/Entitys/BAS/V_BAS_PKG_DTL.cs b/Tiger.Model.Net/Entitys/BAS/V_BAS_PKG_DTL.cs
new file mode 100644
index 0000000..5159043
--- /dev/null
+++ b/Tiger.Model.Net/Entitys/BAS/V_BAS_PKG_DTL.cs
@@ -0,0 +1,93 @@
+using System;
+using SqlSugar;
+using System.Linq;
+using System.ComponentModel;
+using System.Collections.Generic;
+
+namespace Tiger.Model
+{
+	/// <summary>
+	/// 瀹炰綋锛氬寘瑁呮暟閲忔槑缁�
+	/// </summary>
+	[Description("Primary:ID")]
+	[Serializable]
+	[SugarTable("V_BAS_PKG_DTL")]
+	public class V_BAS_PKG_DTL : DbEntityWithAuth
+	{
+		#region 鏋勯�犲嚱鏁�
+		/// <summary>
+		/// 瀹炰綋锛氬寘瑁呮暟閲忔槑缁�
+		/// </summary>
+		public V_BAS_PKG_DTL() {}
+		#endregion
+
+		#region 鍏叡灞炴��
+		/// <summary>
+		/// 鍖呰瑙勫垯ID
+		/// </summary>
+		public string PKG_RULE_ID { get; set; }
+		/// <summary>
+		/// 鍖呰/杞藉叿缂栫爜
+		/// </summary>
+		public string PKG_CODE { get; set; }
+		/// <summary>
+		/// 鍖呰灞傜骇
+		/// </summary>
+		public int PKG_LEVEL { get; set; }
+		/// <summary>
+		/// 鍖呰鏁伴噺
+		/// </summary>
+		public int PKG_QTY { get; set; }
+        /// <summary>
+        /// 鏍囩妯℃澘缂栫爜
+        /// </summary>
+        public string LABEL_CODE { get; set; }
+        /// <summary>
+        /// 鍖呰/杞藉叿鍚嶇О
+        /// </summary>
+        public string PKG_NAME { get; set; }
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string REMARK { get; set; }
+		#endregion
+
+		#region 铏氭嫙灞炴��
+		/*渚嬪瓙
+		[SugarColumn(IsIgnore = true)]
+		public string FieldName { get; set; }
+		*/
+		#endregion
+
+		#region 澶栭敭灞炴��
+		/*渚嬪瓙
+		//涓�瀵逛竴澶栭敭瀵艰埅
+		[Navigate(NavigateType.OneToOne, nameof(ClassAId))]//涓�瀵逛竴 ClassAId鏄疺_BAS_PKG_DTL绫婚噷闈㈢殑澶栭敭ID瀛楁
+		public ClassA ClassA { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
+		//涓�瀵瑰澶栭敭瀵艰埅
+		[Navigate(NavigateType.OneToMany, nameof(ClassA.V_BAS_PKG_DTLId))]//ClassA琛ㄤ腑鐨刅_BAS_PKG_DTLId
+		public List<ClassA> ClassAList { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
+		//澶氬澶氬閿鑸�
+		[Navigate(typeof(MappingClass), nameof(MappingClass.V_BAS_PKG_DTLId), nameof(MappingClass.ClassAId))]//娉ㄦ剰椤哄簭
+		public List<ClassA> ClassAList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
+		*/
+		#endregion
+
+		#region 鏋氫妇鍙橀噺
+		/*渚嬪瓙
+		public enum FieldNames
+		{
+			[Description("鏋氫妇鎻忚堪0")]
+			Enum0,
+			[Description("鏋氫妇鎻忚堪1")]
+			Enum1,
+		}
+		*/
+		#endregion
+
+		#region 鍏叡鏂规硶
+
+		#endregion
+
+	}//endClass
+}
\ No newline at end of file
diff --git a/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9C_MES_Input.cs b/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9C_MES_Input.cs
new file mode 100644
index 0000000..bc2c59a
--- /dev/null
+++ b/Tiger.Model.Net/Entitys/MES/ParameterEntity/U9C_MES_Input.cs
@@ -0,0 +1,28 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tiger.Model
+{
+    public class U9C_MES_Input
+    {
+        public string startTime { get; set; }
+        public string endTime { get; set; }
+        public string triggerDetail { get; set; }
+    }
+
+    public class GetBasItemInput : U9C_MES_Input
+    {
+        public string isProd { get; set; }
+    }
+
+    public class GetCustomerInput : U9C_MES_Input
+    {
+    }
+
+    public class GetSupplierInput : U9C_MES_Input
+    {
+    }
+}
diff --git a/Tiger.Model.Net/Tiger.Model.Net.csproj b/Tiger.Model.Net/Tiger.Model.Net.csproj
index 52ac319..b148c18 100644
--- a/Tiger.Model.Net/Tiger.Model.Net.csproj
+++ b/Tiger.Model.Net/Tiger.Model.Net.csproj
@@ -82,6 +82,7 @@
     <Compile Include="Entitys\BAS\BAS_LABEL_PV.cs" />
     <Compile Include="Entitys\BAS\BAS_LABEL_TEMP.cs" />
     <Compile Include="Entitys\BAS\BAS_LABEL_VAR.cs" />
+    <Compile Include="Entitys\BAS\V_BAS_PKG_DTL.cs" />
     <Compile Include="Entitys\BAS\BAS_PKG_DTL.cs" />
     <Compile Include="Entitys\BAS\BAS_PKG_RULE.cs" />
     <Compile Include="Entitys\BAS\BAS_PKG_SN.cs" />
@@ -126,6 +127,7 @@
     <Compile Include="Entitys\MES\node.cs" />
     <Compile Include="Entitys\MES\ParameterEntity\SmtLoadingReturn.cs" />
     <Compile Include="Entitys\MES\ParameterEntity\SmtLoadingInput.cs" />
+    <Compile Include="Entitys\MES\ParameterEntity\U9C_MES_Input.cs" />
     <Compile Include="Entitys\MES\R_Wip_Tracking_T.cs" />
     <Compile Include="Entitys\MES\SMT_FEEDER.cs" />
     <Compile Include="Entitys\MES\SMT_FEEDER_TYPE.cs" />

--
Gitblit v1.9.3