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