From acd4e637db14b1041136325e9c8af07bfdbb2def Mon Sep 17 00:00:00 2001 From: bairubing Date: Wed, 15 Jan 2025 10:57:31 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=98=8E=E4=BC=98=E5=8C=96=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E6=9F=A5=E8=AF=A2=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Common/DataValidationService.cs | 172 +- .../Configuration/Database.json | 6 +- .../Vistar.Application/Entity/Obj119.cs | 1 + .../Vistar.Application/Entity/Obj140.cs | 15 +- .../Entity/ScheduledTaskLog.cs | 46 + .../Job/ChangeNoticeEcn/EcnVarianceList.cs | 56 + .../Job/ChangeNoticeEcn/SyncEcnToSap.cs | 70 + .../Job/OaOpenInterface/SyncEcnAttachToOA.cs | 59 + .../SyncProductDesignBomToSap.cs | 164 ++ .../SyncProductDesignMaterialToSap.cs | 167 ++ .../SyncProductDesignProcessRouteToSap.cs | 125 ++ .../SyncProductManagementBomToSap.cs | 156 ++ .../SyncProductManagementMaterialToSap.cs | 166 ++ .../SyncProductManagementProcessRouteToSap.cs | 124 ++ .../SyncProductionMaterialsToSap.cs | 171 ++ .../ProjectManagement/SyncCreateWbsToSap.cs | 58 + .../SyncProjectManagementBomToSap.cs | 66 + .../SyncProjectManagementMaterialToSap.cs | 60 + .../SyncProjectManagementProcessRouteToSap.cs | 63 + .../ProjectManagement/SyncUpdateWbsToSap.cs | 59 + .../PurchasingRequisitionToSap.cs | 57 + .../SolidWorksManage/RefreshManageToKen.cs | 50 + .../Dto/SapPurchasingRequisitionInput.cs | 5 + .../SapService/SapService.cs | 55 +- .../ChangeNoticeEcn/ChangeNoticeEcnService.cs | 109 +- .../Service/Log/Dto/PageTaskLogInput.cs | 28 + .../Service/Log/ScheduledTaskLogService.cs | 63 + .../Dto/ProductManagementInput.cs | 2 +- .../ProductManagementService.cs | 660 +++++-- .../Dto/OaCreateProcessInput.cs | 5 + .../OaOpenInterface/OaOpenInterfaceService.cs | 44 +- .../Dto/ProductDesignLibraryInput.cs | 386 ++-- .../Dto/ProductDesignLibraryOutput.cs | 382 ++-- .../ProductDesignLibraryService.cs | 1590 +++++++++++------ .../ProductionMaterialsManagementService.cs | 393 +++- .../ProjectManagementService.cs | 89 +- .../PurchasingRequisitionService.cs | 29 +- .../SolidWorksManageService.cs | 4 +- .../Util/IsBomAndProcessRouteExistOutput.cs | 19 + .../Vistar.Application/Util/SyncBomData.cs | 123 ++ .../Util/SyncProcessRouteData.cs | 37 + .../Vistar.Application.csproj | 1 - .../Web/src/api/log/scheduledTaskLog.ts | 18 + .../src/views/log/scheduledTaskLog/index.vue | 185 ++ 44 files changed, 4862 insertions(+), 1276 deletions(-) create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Entity/ScheduledTaskLog.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Job/ChangeNoticeEcn/EcnVarianceList.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Job/ChangeNoticeEcn/SyncEcnToSap.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Job/OaOpenInterface/SyncEcnAttachToOA.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Job/ProductDesignLibrary/SyncProductDesignBomToSap.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Job/ProductDesignLibrary/SyncProductDesignMaterialToSap.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Job/ProductDesignLibrary/SyncProductDesignProcessRouteToSap.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Job/ProductManagement/SyncProductManagementBomToSap.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Job/ProductManagement/SyncProductManagementMaterialToSap.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Job/ProductManagement/SyncProductManagementProcessRouteToSap.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Job/ProductionMaterials/SyncProductionMaterialsToSap.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Job/ProjectManagement/SyncCreateWbsToSap.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Job/ProjectManagement/SyncProjectManagementBomToSap.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Job/ProjectManagement/SyncProjectManagementMaterialToSap.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Job/ProjectManagement/SyncProjectManagementProcessRouteToSap.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Job/ProjectManagement/SyncUpdateWbsToSap.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Job/PurchasingRequisition/PurchasingRequisitionToSap.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Job/SolidWorksManage/RefreshManageToKen.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Service/Log/Dto/PageTaskLogInput.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Service/Log/ScheduledTaskLogService.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Util/IsBomAndProcessRouteExistOutput.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Util/SyncBomData.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Util/SyncProcessRouteData.cs create mode 100644 admin.net.pro/Web/src/api/log/scheduledTaskLog.ts create mode 100644 admin.net.pro/Web/src/views/log/scheduledTaskLog/index.vue diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Common/DataValidationService.cs b/admin.net.pro/Admin.NET/Vistar.Application/Common/DataValidationService.cs index c6cdd5f..999d77e 100644 --- a/admin.net.pro/Admin.NET/Vistar.Application/Common/DataValidationService.cs +++ b/admin.net.pro/Admin.NET/Vistar.Application/Common/DataValidationService.cs @@ -5,12 +5,14 @@ // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! using Admin.NET.Core; +using Admin.NET.Core.Service; using DocumentFormat.OpenXml.Bibliography; using DocumentFormat.OpenXml.Drawing.Spreadsheet; using Furion.DependencyInjection; using Furion.DynamicApiController; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Server.IISIntegration; +using Microsoft.Extensions.DependencyInjection; using NewLife; using Qiniu.CDN; using RazorEngine; @@ -38,6 +40,7 @@ public class DataValidationService : IDynamicApiController, ITransient public SqlSugarRepository _obj137Rep; public SqlSugarRepository _objectTypeCheckListRep; public SqlSugarRepository _configurationDataRep; + private readonly IServiceScopeFactory _scopeFactory; public DataValidationService( SqlSugarRepository obj110Rep, SqlSugarRepository obj109Rep, @@ -46,7 +49,8 @@ public class DataValidationService : IDynamicApiController, ITransient SqlSugarRepository obj122Rep, SqlSugarRepository obj137Rep, SqlSugarRepository objectTypeCheckList, - SqlSugarRepository configurationDataRep + SqlSugarRepository configurationDataRep, + IServiceScopeFactory scopeFactory ) { @@ -58,6 +62,7 @@ public class DataValidationService : IDynamicApiController, ITransient _obj137Rep = obj137Rep; _objectTypeCheckListRep = objectTypeCheckList; _configurationDataRep = configurationDataRep; + _scopeFactory = scopeFactory; } /// /// 验证物料是否存在 @@ -68,35 +73,94 @@ public class DataValidationService : IDynamicApiController, ITransient /// public async Task VerificationMaterial(long objId, string materialCode, string recordGuid) { + using var serviceScope = _scopeFactory.CreateScope(); + //var sysEnumService = serviceScope.ServiceProvider.GetRequiredService(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + string verification = "不存在"; - var tasks = new List>(); - switch (objId) + + if (objId==110) { - case 110: - tasks.Add(_obj110Rep.AsQueryable().Where(x => x._System_objNBS == materialCode && x.deleted == false && x.RecordGuid == recordGuid).CountAsync()); - break; - case 109: - tasks.Add(_obj109Rep.AsQueryable().Where(x => x._System_objNBS == materialCode && x.deleted == false && x.RecordGuid == recordGuid).CountAsync()); - break; - case 112: - tasks.Add(_obj112Rep.AsQueryable().Where(x => x._System_objNBS == materialCode && x.deleted == false && x.RecordGuid == recordGuid).CountAsync()); - break; - case 133: - tasks.Add(_obj133Rep.AsQueryable().Where(x => x._System_objNBS == materialCode && x.deleted == false && x.RecordGuid == recordGuid).CountAsync()); - break; - case 122: - tasks.Add(_obj122Rep.AsQueryable().Where(x => x._System_objNBS == materialCode && x.deleted == false && x.RecordGuid == recordGuid).CountAsync()); - break; - case 137: - tasks.Add(_obj137Rep.AsQueryable().Where(x => x._System_objNBS == materialCode && x.deleted == false && x.RecordGuid == recordGuid).CountAsync()); - break; + var data = db.CopyNew().Queryable().Where(x => x._System_objNBS == materialCode && x.deleted == false && x.RecordGuid == recordGuid).Count(); + if (data>0) + { + verification = "存在"; + } } - if (tasks.Count > 0) + + if (objId == 109) { - var result = await Task.WhenAll(tasks); - verification = result.Any(count => count > 0) ? "存在" : "不存在"; + var data = db.CopyNew().Queryable().Where(x => x._System_objNBS == materialCode && x.deleted == false && x.RecordGuid == recordGuid).Count(); + if (data > 0) + { + verification = "存在"; + } } + if (objId == 112) + { + var data = db.CopyNew().Queryable().Where(x => x._System_objNBS == materialCode && x.deleted == false && x.RecordGuid == recordGuid).Count(); + if (data > 0) + { + verification = "存在"; + } + } + + if (objId == 133) + { + var data = db.CopyNew().Queryable().Where(x => x._System_objNBS == materialCode && x.deleted == false && x.RecordGuid == recordGuid).Count(); + if (data > 0) + { + verification = "存在"; + } + } + + if (objId == 137) + { + var data = db.CopyNew().Queryable().Where(x => x._System_objNBS == materialCode && x.deleted == false && x.RecordGuid == recordGuid && x._system_objConfigurationName == "默认").Count(); + if (data > 0) + { + verification = "存在"; + } + } + + if (objId == 122) + { + var data = db.CopyNew().Queryable().Where(x => x._System_objNBS == materialCode && x.deleted == false && x.RecordGuid == recordGuid).Count(); + if (data > 0) + { + verification = "存在"; + } + } + + //var tasks = new List>(); + //switch (objId) + //{ + // case 110: + // tasks.Add(_obj110Rep.AsQueryable().Where(x => x._System_objNBS == materialCode && x.deleted == false && x.RecordGuid == recordGuid).CountAsync()); + // break; + // case 109: + // tasks.Add(_obj109Rep.AsQueryable().Where(x => x._System_objNBS == materialCode && x.deleted == false && x.RecordGuid == recordGuid).CountAsync()); + // break; + // case 112: + // tasks.Add(_obj112Rep.AsQueryable().Where(x => x._System_objNBS == materialCode && x.deleted == false && x.RecordGuid == recordGuid).CountAsync()); + // break; + // case 133: + // tasks.Add(_obj133Rep.AsQueryable().Where(x => x._System_objNBS == materialCode && x.deleted == false && x.RecordGuid == recordGuid).CountAsync()); + // break; + // case 122: + // tasks.Add(_obj122Rep.AsQueryable().Where(x => x._System_objNBS == materialCode && x.deleted == false && x.RecordGuid == recordGuid).CountAsync()); + // break; + // case 137: + // tasks.Add(_obj137Rep.AsQueryable().Where(x => x._System_objNBS == materialCode && x.deleted == false && x.RecordGuid == recordGuid).CountAsync()); + // break; + //} + //if (tasks.Count > 0) + //{ + // var result = await Task.WhenAll(tasks); + // verification = result.Any(count => count > 0) ? "存在" : "不存在"; + //} + return verification; } @@ -107,10 +171,13 @@ public class DataValidationService : IDynamicApiController, ITransient /// public async Task> ChangeModuleMaterial(long idRecord) { + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + var encodingList = new List(); // 获取符合条件的检查列表项 - var checkList = await _objectTypeCheckListRep.AsQueryable() + var checkList = await db.CopyNew().Queryable() .Where(x => x.ParentIdRecord == idRecord && (x.ColumnId == 4638 || x.ColumnId == 6002)) .ToListAsync(); @@ -125,33 +192,33 @@ public class DataValidationService : IDynamicApiController, ITransient switch (objectId) { case 110: - data = await _obj110Rep.AsQueryable() - .Where(x => x.RecordGuid == recordGuid && x.deleted == false) + data = await db.CopyNew().Queryable() + .Where(x => x.RecordGuid == recordGuid && x.deleted == false).OrderByDescending(x=>x.idRecord) .FirstAsync(); break; case 109: - data = await _obj109Rep.AsQueryable() - .Where(x => x.RecordGuid == recordGuid && x.deleted == false) + data = await db.CopyNew().Queryable() + .Where(x => x.RecordGuid == recordGuid && x.deleted == false).OrderByDescending(x => x.idRecord) .FirstAsync(); break; case 112: - data = await _obj112Rep.AsQueryable() - .Where(x => x.RecordGuid == recordGuid && x.deleted == false) + data = await db.CopyNew().Queryable() + .Where(x => x.RecordGuid == recordGuid && x.deleted == false).OrderByDescending(x => x.idRecord) .FirstAsync(); break; case 133: - data = await _obj133Rep.AsQueryable() - .Where(x => x.RecordGuid == recordGuid && x.deleted == false) + data = await db.CopyNew().Queryable() + .Where(x => x.RecordGuid == recordGuid && x.deleted == false).OrderByDescending(x => x.idRecord) .FirstAsync(); break; case 122: - data = await _obj122Rep.AsQueryable() - .Where(x => x.RecordGuid == recordGuid && x.deleted == false) + data = await db.CopyNew().Queryable() + .Where(x => x.RecordGuid == recordGuid && x.deleted == false).OrderByDescending(x => x.idRecord) .FirstAsync(); break; case 137: - data = await _obj137Rep.AsQueryable() - .Where(x => x.RecordGuid == recordGuid && x.deleted == false) + data = await db.CopyNew().Queryable() + .Where(x => x.RecordGuid == recordGuid && x.deleted == false).OrderByDescending(x => x.idRecord) .FirstAsync(); break; default: @@ -177,15 +244,17 @@ public class DataValidationService : IDynamicApiController, ITransient /// public async Task GetUnit(long objid, string ChildGuid) { + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); var unit = ""; if (objid == 137) { - var data = await _obj137Rep.AsQueryable().Where(x => x.RecordGuid == ChildGuid && x.deleted == false).OrderByDescending(x => x.VersionIndex).FirstAsync(); + var data = await db.CopyNew().Queryable().Where(x => x.RecordGuid == ChildGuid && x.deleted == false).OrderByDescending(x => x.VersionIndex).FirstAsync(); unit = data._SWPDM_126_SW___; } if (objid == 112) { - var data = await _obj112Rep.AsQueryable().Where(x => x.RecordGuid == ChildGuid && x.deleted == false).OrderByDescending(x => x.VersionIndex).FirstAsync(); + var data = await db.CopyNew().Queryable().Where(x => x.RecordGuid == ChildGuid && x.deleted == false).OrderByDescending(x => x.VersionIndex).FirstAsync(); unit = data.fld004594; } return unit; @@ -245,11 +314,14 @@ public class DataValidationService : IDynamicApiController, ITransient /// public async Task GetLineNumber(long objId, string recordGuid, int versionIndex, int configId) { + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + int lineNumber = 0; if (objId == 118) { - lineNumber = await _configurationDataRep.AsQueryable().Where(x => x.ParentGuid == recordGuid && x.isDeleted == false && x.ParentVersion == versionIndex && x.ConfigId == configId && x.isSuppressed == false && x.inContext == false).CountAsync(); + lineNumber = await db.CopyNew().Queryable().Where(x => x.ParentGuid == recordGuid && x.isDeleted == false && x.ParentVersion == versionIndex && x.ConfigId == configId && x.isSuppressed == false && x.inContext == false).CountAsync(); } return lineNumber; @@ -281,12 +353,15 @@ public class DataValidationService : IDynamicApiController, ITransient /// public async Task ComparativeVersion(long objId, string recordGuid, int newVersion, int olderVersion) { + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + string contrastResult = ""; if (objId == 137) { - var contrastNewData = await _obj137Rep.AsQueryable().Where(x => x.RecordGuid == recordGuid && x.deleted == false && x.VersionIndex == newVersion).FirstAsync(); - var contrastOlderData = await _obj137Rep.AsQueryable().Where(x => x.RecordGuid == recordGuid && x.deleted == false && x.VersionIndex == olderVersion).FirstAsync(); + var contrastNewData = await db.CopyNew().Queryable().Where(x => x.RecordGuid == recordGuid && x.deleted == false && x.VersionIndex == newVersion).FirstAsync(); + var contrastOlderData = await db.CopyNew().Queryable().Where(x => x.RecordGuid == recordGuid && x.deleted == false && x.VersionIndex == olderVersion).FirstAsync(); if (contrastNewData.revision != contrastOlderData.revision) { contrastResult = "是"; @@ -399,19 +474,6 @@ public class DataValidationService : IDynamicApiController, ITransient return "修改成功"; } - [AllowAnonymous] - public async Task cscscs1() - { - await Task.Delay(20000); - return "测试1执行时间" + DateTime.Now.ToString("HH:dd:ss"); - } - - [AllowAnonymous] - public async Task cscscs2() - { - await Task.Delay(20000); - return "测试2执行时间" + DateTime.Now.ToString("HH:dd:ss"); - } /// /// SAP wbs状态 diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Configuration/Database.json b/admin.net.pro/Admin.NET/Vistar.Application/Configuration/Database.json index 56d97f5..a0bd3e5 100644 --- a/admin.net.pro/Admin.NET/Vistar.Application/Configuration/Database.json +++ b/admin.net.pro/Admin.NET/Vistar.Application/Configuration/Database.json @@ -9,7 +9,8 @@ { //"ConfigId": "1300000000001", // 默认库标识-禁止修改 "DbType": "SqlServer", // MySql、SqlServer、Sqlite、Oracle、PostgreSQL、Dm、Kdbndp、Oscar、MySqlConnector、Access、OpenGauss、QuestDB、HG、ClickHouse、GBase、Odbc、Custom - "ConnectionString": "Data Source=192.168.10.101;Initial Catalog=VistarStarDataManage;User ID=sa;Password=Vistar2024.", // Sqlite 库连接字符串123456 + "ConnectionString": "Data Source=192.168.10.101;Initial Catalog=VistarStarDataManage;User ID=sa;Password=Vistar2024.;MultipleActiveResultSets=true", + //"ConnectionString": "Data Source=192.168.10.74;Initial Catalog=VistarStarDataManage;User ID=sa;Password=Aa123456;MultipleActiveResultSets=true", // Sqlite 库连接字符串123456 //"ConnectionString": "PORT=5432;DATABASE=xxx;HOST=localhost;PASSWORD=xxx;USER ID=xxx", // PostgreSQL 库连接字符串 //"ConnectionString": "Server=localhost;Database=xxx;Uid=xxx;Pwd=xxx;SslMode=None;", // MySql 库连接字符串", //"ConnectionString": "User Id=xxx; Password=xxx; Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)))", // Oracle 库连接字符串 @@ -62,7 +63,8 @@ { "ConfigId": "启威星 1.94.4.74", // 库标识 "DbType": "SqlServer", // 库类型 - "ConnectionString": "Data Source=192.168.10.101;Initial Catalog=SWManage_Vistar;User ID=sa;Password=Vistar2024.", // 库连接字符串ASDzxc123. + "ConnectionString": "Data Source=192.168.10.101;Initial Catalog=SWManage_Vistar;User ID=sa;Password=Vistar2024.;MultipleActiveResultSets=true", + //"ConnectionString": "Data Source=192.168.10.74;Initial Catalog=SWManage_Vistar;User ID=sa;Password=Aa123456;MultipleActiveResultSets=true", // 库连接字符串ASDzxc123. "DbSettings": { "EnableInitDb": false, // 启用库初始化 "EnableDiffLog": false, // 启用库表差异日志 diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Entity/Obj119.cs b/admin.net.pro/Admin.NET/Vistar.Application/Entity/Obj119.cs index ebe31a5..463fe7d 100644 --- a/admin.net.pro/Admin.NET/Vistar.Application/Entity/Obj119.cs +++ b/admin.net.pro/Admin.NET/Vistar.Application/Entity/Obj119.cs @@ -461,5 +461,6 @@ public class Obj119 /// [SugarColumn(ColumnName = "fld006416", ColumnDescription = "", Length = -1)] public string? fld006416 { get; set; } + public string? fld007052 { get; set; } } diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Entity/Obj140.cs b/admin.net.pro/Admin.NET/Vistar.Application/Entity/Obj140.cs index 70cb70f..72ea219 100644 --- a/admin.net.pro/Admin.NET/Vistar.Application/Entity/Obj140.cs +++ b/admin.net.pro/Admin.NET/Vistar.Application/Entity/Obj140.cs @@ -483,5 +483,18 @@ public class Obj140 public string? fld006063_Rec { get; set; } public long ? fld006064 { get; set; } public string? fld006064_Rec { get; set; } - + public string? fld007040 { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "fld007039", ColumnDescription = "")] + public long? fld007039 { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "fld007039_Rec", ColumnDescription = "", Length = -1)] + public string? fld007039_Rec { get; set; } + } diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Entity/ScheduledTaskLog.cs b/admin.net.pro/Admin.NET/Vistar.Application/Entity/ScheduledTaskLog.cs new file mode 100644 index 0000000..f8d7973 --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Entity/ScheduledTaskLog.cs @@ -0,0 +1,46 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Admin.NET.Core; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Vistar.Application.Entity; + +/// +/// 定时任务日志表 +/// +[SugarTable(null, "定时任务日志表")] +[SysTable] +[LogTable] +public class ScheduledTaskLog +{ + public long Id { get; set; } + + /// + /// 日志时间 + /// + public DateTime LogDateTime { get; set; } + + /// + /// 任务名称 + /// + public string? TaskName { get; set; } + + /// + /// 返回结果 + /// + public string? ReturnResult { get; set; } + + /// + /// 操作用时(毫秒) + /// + public long Elapsed { get; set; } +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Job/ChangeNoticeEcn/EcnVarianceList.cs b/admin.net.pro/Admin.NET/Vistar.Application/Job/ChangeNoticeEcn/EcnVarianceList.cs new file mode 100644 index 0000000..fa18b49 --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Job/ChangeNoticeEcn/EcnVarianceList.cs @@ -0,0 +1,56 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Admin.NET.Core; +using Admin.NET.Core.Service; +using Furion.Schedule; +using Microsoft.Extensions.DependencyInjection; +using Newtonsoft.Json; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Vistar.Application.Entity; +using Vistar.Application.Service.ChangeNoticeEcn; + +namespace Vistar.Application.Job.ChangeNoticeEcn; + +[JobDetail("job_EcnVarianceList", Description = "生成ECN差异清单", GroupName = "default", Concurrent = false)] +[PeriodMinutes(3, TriggerId = "trigger_EcnVarianceList", Description = "生成ECN差异清单", RunOnStart = false)] +public class EcnVarianceList : IJob +{ + private readonly IServiceScopeFactory _scopeFactory; + public ChangeNoticeEcnService _changeNoticeEcn; + public EcnVarianceList(IServiceScopeFactory scopeFactory, ChangeNoticeEcnService changeNoticeEcn) + { + _scopeFactory = scopeFactory; + _changeNoticeEcn = changeNoticeEcn; + } + + public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) + { + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("1300000000001").CopyNew(); + + DateTime startTime = DateTime.Now; + var sapOutputs = await _changeNoticeEcn.EcnVarianceList(); + var json = JsonConvert.SerializeObject(sapOutputs); + + string output = json; + var elapsedMilliseconds = (DateTime.Now - startTime).TotalMilliseconds; + + db.CopyNew().Insertable(new + { + TaskName = "生成ECN差异清单", + LogDateTime = DateTime.Now, + ReturnResult = output, + Elapsed = elapsedMilliseconds.ToLong() + }).ExecuteCommand(); + + } +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Job/ChangeNoticeEcn/SyncEcnToSap.cs b/admin.net.pro/Admin.NET/Vistar.Application/Job/ChangeNoticeEcn/SyncEcnToSap.cs new file mode 100644 index 0000000..ae0bee9 --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Job/ChangeNoticeEcn/SyncEcnToSap.cs @@ -0,0 +1,70 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Admin.NET.Core; +using Admin.NET.Core.Service; +using Furion.Schedule; +using Microsoft.Extensions.DependencyInjection; +using Newtonsoft.Json; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Vistar.Application.Entity; +using Vistar.Application.Service.ChangeNoticeEcn; + +namespace Vistar.Application.Job.ChangeNoticeEcn; + +[JobDetail("job_SyncEcnToSap", Description = "Ecn同步到SAP", GroupName = "default", Concurrent = false)] +[PeriodMinutes(5, TriggerId = "trigger_SyncEcnToSap", Description = "Ecn同步到SAP", RunOnStart = false)] +public class SyncEcnToSap : IJob +{ + private readonly IServiceScopeFactory _scopeFactory; + public ChangeNoticeEcnService _changeNoticeEcn; + public SyncEcnToSap(IServiceScopeFactory scopeFactory, ChangeNoticeEcnService changeNoticeEcn) + { + _scopeFactory = scopeFactory; + _changeNoticeEcn = changeNoticeEcn; + } + public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) + { + DateTime startTime = DateTime.Now; + using var serviceScope = _scopeFactory.CreateScope(); + var sysEnumService = serviceScope.ServiceProvider.GetRequiredService(); + var dbMain = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("1300000000001").CopyNew(); + var sapOutputs = await _changeNoticeEcn.TimingSyncToSAP(); + var json = JsonConvert.SerializeObject(sapOutputs); + + string output = json; + if (sapOutputs.Count == 0||sapOutputs==null) + { + output = "未查询到符合条件的记录"; + } + + var elapsedMilliseconds = (DateTime.Now - startTime).TotalMilliseconds; + //dbMain.Insertable(new SysLogOp + //{ + // ControllerName = "定时任务日志", + // DisplayTitle = "Ecn同步到SAP", + // ActionName = "Ecn同步到SAP", + // LogDateTime = DateTime.Now, + // ReturnResult = output, + // Elapsed = elapsedMilliseconds.ToLong(), + // Status = "200", + //}).ExecuteCommand(); + + dbMain.CopyNew().Insertable(new + { + TaskName = "Ecn同步到SAP", + LogDateTime = DateTime.Now, + ReturnResult = output, + Elapsed = elapsedMilliseconds.ToLong() + }).ExecuteCommand(); + } + +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Job/OaOpenInterface/SyncEcnAttachToOA.cs b/admin.net.pro/Admin.NET/Vistar.Application/Job/OaOpenInterface/SyncEcnAttachToOA.cs new file mode 100644 index 0000000..236bb34 --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Job/OaOpenInterface/SyncEcnAttachToOA.cs @@ -0,0 +1,59 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Admin.NET.Core; +using Admin.NET.Core.Service; +using Furion.Schedule; +using Microsoft.Extensions.DependencyInjection; +using Newtonsoft.Json; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Vistar.Application.Entity; +using Vistar.Application.Service.OaOpenInterface; + +namespace Vistar.Application.Job.OaOpenInterface; + +[JobDetail("job_SyncEcnAttachToOA", Description = "同步ECN文件到OA", GroupName = "default", Concurrent = false)] +[PeriodMinutes(10, TriggerId = "trigger_SyncEcnAttachToOAJob", Description = "同步ECN文件到OA", RunOnStart = false)] +public class SyncEcnAttachToOA : IJob +{ + private readonly IServiceScopeFactory _scopeFactory; + public OaOpenInterfaceService _oaOpenInterface; + public SyncEcnAttachToOA(IServiceScopeFactory scopeFactory, OaOpenInterfaceService oaOpenInterface) + { + _scopeFactory = scopeFactory; + _oaOpenInterface = oaOpenInterface; + } + + public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) + { + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("1300000000001").CopyNew(); + + DateTime startTime = DateTime.Now; + var sapOutputs = await _oaOpenInterface.SyncEcnAttach(); + var json = JsonConvert.SerializeObject(sapOutputs); + + string output = json; + var elapsedMilliseconds = (DateTime.Now - startTime).TotalMilliseconds; + if (sapOutputs.Count == 0) + { + output = "未查询到符合条件的记录"; + } + + db.CopyNew().Insertable(new + { + TaskName = "同步ECN文件到OA", + LogDateTime = DateTime.Now, + ReturnResult = output, + Elapsed = elapsedMilliseconds.ToLong() + }).ExecuteCommand(); + } +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Job/ProductDesignLibrary/SyncProductDesignBomToSap.cs b/admin.net.pro/Admin.NET/Vistar.Application/Job/ProductDesignLibrary/SyncProductDesignBomToSap.cs new file mode 100644 index 0000000..011db6e --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Job/ProductDesignLibrary/SyncProductDesignBomToSap.cs @@ -0,0 +1,164 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Admin.NET.Core; +using Admin.NET.Core.Service; +using Furion.Schedule; +using Furion.TimeCrontab; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using OfficeOpenXml.FormulaParsing.Logging; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Vistar.Application.Entity; +using Vistar.Application.Service.ProductDesignLibrary; +using Vistar.Application.Util; + +namespace Vistar.Application.Job.ProductDesignLibrary; + +[JobDetail("job_SyncProductDesignBomToSap", Description = "产品设计库同步bom到SAP", GroupName = "default", Concurrent = false)] +[PeriodMinutes(5, TriggerId = "trigger_SyncProductDesignBomToSapJob", Description = "产品设计库同步bom到SAP", RunOnStart = false)] +public class SyncProductDesignBomToSap : IJob +{ + private readonly IServiceScopeFactory _scopeFactory; + public ProductDesignLibraryService _productDesignLibrary; + public SyncProductDesignBomToSap(IServiceScopeFactory scopeFactory, ProductDesignLibraryService productDesignLibrary) + { + _scopeFactory = scopeFactory; + _productDesignLibrary = productDesignLibrary; + } + public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) + { + DateTime startTime = DateTime.Now; + using var serviceScope = _scopeFactory.CreateScope(); + //var sysEnumService = serviceScope.ServiceProvider.GetRequiredService(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + var syncData = await db.CopyNew().Queryable() + .InnerJoin((x, y) => x.RecordGuid == y.ParentGuid && x.VersionIndex == y.ParentVersion) + //.InnerJoin((x, y, z) => x.fld005679_Rec == z.RecordGuid) + .Where((x, y) => x.CheckedStatus == 0 && x.deleted == false && x.IsLatestVersion == true && (x._SWPDM_1202_SW_____ != "不展开" || x._SWPDM_1202_SW_____ == null) && x.fld005530 == "N" && x.fld005529 == "成功" && (x.fld005534 == "A" || x.fld005534 == "M") && x._system_objConfigurationName == "默认" && !x.SWPDMFileName.Contains("SLDDRW") && y.isDeleted == false && y.ConfigId == 8 && (y.fld005577 != "不包含" || y.fld005577 == null) && y.isSuppressed == false && y.inContext == false && !(y.ParentSwFileType == 1 && y.isAddedFromSW == false)) + .Select((x, y) => new + { + x.idRecord, + x.VersionIndex, + x._System_objNBS, + x.RecordGuid, + x.fld005679_Rec, + x.fld005686, + x.fld005678, + x._SWPDM_1187_SAP___, + x.fld005680, + y.ParentGuid, + y.ParentVersion, + y.ChildGuid, + y.ChildObjID, + y.childVersion, + y.ConfigId, + y.QtyManual, + y.PartNumber, + y.fld005541, + y.fld005542, + y.fld005543, + y.fld005544, + y.fld004940, + y.fld005546, + y.fld005547, + //ecn = z._System_objNBS + }) + .ToListAsync(); + + var syncList = syncData.GroupBy(record => record.RecordGuid) + .Select(group => new SyncBomData + { + Id = group.FirstOrDefault()?.idRecord, + MaterialCode = group.FirstOrDefault()?._System_objNBS, + RecordGuid = group.FirstOrDefault()?.RecordGuid, + SyncVersion = group.FirstOrDefault()?.fld005686, + Bmeng = group.FirstOrDefault()?.fld005678, + Werks = group.FirstOrDefault()?._SWPDM_1187_SAP___, + Datuv = group.FirstOrDefault()?.fld005680, + VersionIndex = group.FirstOrDefault()?.VersionIndex, + //Ecn = group.FirstOrDefault()?.ecn, + ecnGuid = group.FirstOrDefault()?.fld005679_Rec, + Bom = group.Select(g => new BomData + { + PartNumber = g.PartNumber, + ParentGuid = g.ParentGuid, + ChildGuid = g.ChildGuid, + ChildObjID = g.ChildObjID, + ConfigId = g.ConfigId, + childVersion = g.childVersion, + ParentVersion = g.VersionIndex, + QtyManual = g.QtyManual, + SORTF = g.fld005541, + ITISOB = g.fld005542, + ALPGR = g.fld005543, + ALPRF = g.fld005544, + ZDELETE = g.fld004940, + POSTP = g.fld005546, + ZYFMK = g.fld005547 + }).ToList() + }); + List sapOutputs = new List(); + + int batchSize = 20; // 每批的大小 + int totalCount = syncList.ToList().Count; + + for (int i = 0; i < totalCount; i += batchSize) + { + var batch = syncList.Skip(i).Take(batchSize); // 分批获取数据 + + // 处理当前批次的数据 + var tasks = batch.Select(async item => + { + var output = await _productDesignLibrary.SyncBomToSap(item); + return output; + }).ToList(); + + var bomStockInquiryOutput = await Task.WhenAll(tasks); // 等待当前批次的所有任务完成 + + // 合并当前批次的结果 + sapOutputs.AddRange(bomStockInquiryOutput); + + // 如果需要暂停或者处理频率,可以在此处插入适当的延迟。 + // await Task.Delay(1000); // 如果需要等待1秒,可以启用此行代码。 + } + var json = JsonConvert.SerializeObject(sapOutputs); + + //var tasks = syncList.Select(async item => + //{ + // var output = await _productDesignLibrary.SyncBomToSap(item); + // return output; + //}); + + //var bomStockInquiryOutput = await Task.WhenAll(tasks); + //var json = JsonConvert.SerializeObject(bomStockInquiryOutput.ToList()); + + var dbMain = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("1300000000001").CopyNew(); + string output = json; + var elapsedMilliseconds = (DateTime.Now - startTime).TotalMilliseconds; + if (totalCount == 0) + { + output = "未查询到符合条件的记录"; + } + + dbMain.CopyNew().Insertable(new + { + TaskName = "产品设计库同步bom到SAP", + LogDateTime = DateTime.Now, + ReturnResult = output, + Elapsed = elapsedMilliseconds.ToLong() + }).ExecuteCommand(); + + } + +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Job/ProductDesignLibrary/SyncProductDesignMaterialToSap.cs b/admin.net.pro/Admin.NET/Vistar.Application/Job/ProductDesignLibrary/SyncProductDesignMaterialToSap.cs new file mode 100644 index 0000000..2142777 --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Job/ProductDesignLibrary/SyncProductDesignMaterialToSap.cs @@ -0,0 +1,167 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Admin.NET.Core; +using Admin.NET.Core.Service; +using Furion.Schedule; +using Microsoft.Extensions.DependencyInjection; +using Newtonsoft.Json; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Data.OscarClient; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Vistar.Application.Entity; +using Vistar.Application.SapService.Dto; +using Vistar.Application.Util; + +namespace Vistar.Application.Job.ProductDesignLibrary; +[JobDetail("job_SyncProductDesignMaterialToSap", Description = "产品设计库同步物料到SAP", GroupName = "default", Concurrent = false)] +[PeriodMinutes(3, TriggerId = "trigger_SyncProductDesignMaterialToSapJob", Description = "产品设计库同步物料到SAP", RunOnStart = false)] +public class SyncProductDesignMaterialToSap : IJob +{ + private readonly IServiceScopeFactory _scopeFactory; + public SapService.SapService _sapService; + private readonly SysConfigService _sysConfigService; + public SyncProductDesignMaterialToSap(IServiceScopeFactory scopeFactory, SapService.SapService sapService, SysConfigService sysConfigService) + { + _scopeFactory = scopeFactory; + _scopeFactory = scopeFactory; + _sysConfigService = sysConfigService; + _sapService = sapService; + } + public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) + { + DateTime startTime = DateTime.Now; + using var serviceScope = _scopeFactory.CreateScope(); + //var sysEnumService = serviceScope.ServiceProvider.GetRequiredService(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + var input = db.CopyNew().Queryable() + .Where(x => x.CheckedStatus == 0 && x.deleted == false && x.IsLatestVersion == true && (x.fld005530 == "A" || x.fld005530 == "M") && x._system_objConfigurationName == "默认" && !x.SWPDMFileName.Contains("SLDDRW")) + .ToList(); + const string lengthError = "物料描述长度大于40,请检查!"; + var SapOutputList = new List(); + var Requser = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName); + + int batchSize = 20; + int totalCount = input.Count; + + for (int i = 0; i < totalCount; i += batchSize) + { + var batch = input.Skip(i).Take(batchSize); + + var tasks = batch.Select(async item => + { + if (item._SWPDM_1188_SAP___ != null && item._SWPDM_1188_SAP___.Length > 40) + { + db.CopyNew().Updateable() + .SetColumns(it => new Obj137 + { + fld005532 = DateTime.Now, + fld005530 = "N", + fld005531 = lengthError, + fld005529 = "失败" + }) + .Where(it => it.idRecord == item.idRecord) + .ExecuteCommand(); + + return new SapOutput + { + materialCode = item._System_objNBS, + code = "失败", + msg = lengthError, + result = lengthError + }; + } + //获取时间戳精确到毫秒,sap要求每次调用生成不重复guid + string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); + var sapMaterialInput = new SapMaterialInput() + { + Reqkeyid = "", + Businessid = "", + Messageid = "", + Sndprn = "PLM", + Rcvprn = "SAP", + Requser = Requser, + Note1 = "", + Note2 = "", + Note3 = "", + Zwbid = millisecondTimestamp, + Matnr = item._System_objNBS, + Mbrsh = item._SWPDM_1185_SAP___, + Mtart = item._SWPDM_1186_SAP_____, + Maktx = item._SWPDM_1188_SAP___, + Meins = item._SWPDM_126_SW___, + Matkl = item._SWPDM_1203_SAP____, + Bismt = item._SWPDM_64_SW___, + Groes = item._SWPDM_125_SW___, + Normt = item._SWPDM_65_SW___, + Ferth = item._SWPDM_62_SW___, + Zeinr = item._SWPDM_61_SW_____, + Mstae = item._SWPDM_1209_SAP_____, + Raube = "", + Mhdrz = "", + Mhdhb = "", + Werks = item._SWPDM_1187_SAP___, + Beskz = item._SWPDM_1196_SAP_____, + Sobsl = item._SWPDM_1198_SAP_____, + Schgt = item._SWPDM_1197_SAP_____, + Rgekz = item._SWPDM_1199_SAP___, + Zbom = item._SWPDM_1208_SAP___BOM___ + }; + var sapOutput = await _sapService.SapMaterialApi(sapMaterialInput); + string codeVal = sapOutput.code == "S" ? "成功" : "失败"; + string msg = sapOutput.msg; + + if (sapOutput.msg == "") + { + msg = "同步成功"; + } + db.CopyNew().Updateable() + .SetColumns(it => new Obj137 + { + fld005532 = DateTime.Now, + fld005529 = codeVal, + fld005530 = "N", + fld005531 = msg + }) + .Where(it => it.idRecord == item.idRecord) + .ExecuteCommand(); + + return new SapOutput() + { + parameter = sapOutput.parameter, + materialCode = item._System_objNBS, + code = codeVal, + msg = msg, + result = sapOutput.result + }; + + }).ToList(); + var MateriaStockInquiryOutput = await Task.WhenAll(tasks); + + SapOutputList.AddRange(MateriaStockInquiryOutput); + } + var json = JsonConvert.SerializeObject(SapOutputList); + var dbMain = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("1300000000001").CopyNew(); + string output = json; + var elapsedMilliseconds = (DateTime.Now - startTime).TotalMilliseconds; + if (totalCount == 0) + { + output = "未查询到符合条件的记录"; + } + + dbMain.CopyNew().Insertable(new + { + TaskName = "产品设计库同步物料到SAP", + LogDateTime = DateTime.Now, + ReturnResult = output, + Elapsed = elapsedMilliseconds.ToLong() + }).ExecuteCommand(); + } +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Job/ProductDesignLibrary/SyncProductDesignProcessRouteToSap.cs b/admin.net.pro/Admin.NET/Vistar.Application/Job/ProductDesignLibrary/SyncProductDesignProcessRouteToSap.cs new file mode 100644 index 0000000..2f58bae --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Job/ProductDesignLibrary/SyncProductDesignProcessRouteToSap.cs @@ -0,0 +1,125 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Admin.NET.Core; +using Admin.NET.Core.Service; +using Furion.Schedule; +using Microsoft.Extensions.DependencyInjection; +using Newtonsoft.Json; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Vistar.Application.Entity; +using Vistar.Application.Service.ProductDesignLibrary; +using Vistar.Application.Util; + +namespace Vistar.Application.Job.ProductDesignLibrary; + +[JobDetail("job_SyncProductDesignProcessRouteToSap", Description = "产品设计库同步工艺路线到SAP", GroupName = "default", Concurrent = false)] +[PeriodMinutes(5, TriggerId = "trigger_SyncProductDesignProcessRouteToSapJob", Description = "产品设计库同步工艺路线到SAP", RunOnStart = false)] +public class SyncProductDesignProcessRouteToSap : IJob +{ + private readonly IServiceScopeFactory _scopeFactory; + public ProductDesignLibraryService _productDesignLibrary; + public SyncProductDesignProcessRouteToSap(IServiceScopeFactory scopeFactory, ProductDesignLibraryService productDesignLibrary) + { + _scopeFactory = scopeFactory; + _productDesignLibrary = productDesignLibrary; + } + + public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) + { + DateTime startTime = DateTime.Now; + + using var serviceScope = _scopeFactory.CreateScope(); + //var sysEnumService = serviceScope.ServiceProvider.GetRequiredService(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + + var syncPbom = db.CopyNew().Queryable() + .InnerJoin((x, y) => x.RecordGuid == y.ParentGuid && x.VersionIndex == y.ParentVersion) + .Where((x, y) => x.CheckedStatus == 0 && x.deleted == false && x.IsLatestVersion == true && x._system_objConfigurationName == "默认" && !x.SWPDMFileName.Contains("SLDDRW") && (x._SWPDM_1202_SW_____ != "不展开" || x._SWPDM_1202_SW_____ == null) && x.fld005530 == "N" && x.fld005529 == "成功" && (x.fld005537 == "A" || x.fld005537 == "M") && y.ConfigId == 9 && y.isDeleted == false) + .Select((x, y) => new + { + x.idRecord, + x.VersionIndex, + x.RecordGuid, + x._System_objNBS, + x._SWPDM_1187_SAP___, + x.fld005680, + y.ParentGuid, + y.ChildGuid, + y.ChildObjID, + y.PartNumber, + y.Marker, + y.fld005571, + y.fld005572, + y.fld005573, + y.fld005575, + + }).ToList(); + + var syncList = syncPbom.GroupBy(record => record.RecordGuid) + .Select(group => new SyncProcessRouteData + { + idRecord = group.FirstOrDefault()?.idRecord, + _System_objNBS = group.FirstOrDefault()?._System_objNBS, + VersionIndex = group.FirstOrDefault()?.VersionIndex, + Werks= group.FirstOrDefault()?._SWPDM_1187_SAP___, + Datuv = group.FirstOrDefault()?.fld005680, + ProcessRouteList = group.Select(g => new ProcessRouteList + { + ParentGuid = g.ParentGuid, + ChildGuid = g.ChildGuid, + ChildObjID = g.ChildObjID, + PartNumber = g.PartNumber, + VORNR = g.Marker, + VGW01 = g.fld005571, + VGE01 = g.fld005572, + STEUS = g.fld005573, + BMSCH = g.fld005575 + }).ToList() + }); + + List sapOutputs = new List(); + int batchSize = 20; // 每批的大小 + int totalCount = syncList.ToList().Count; + for (int i = 0; i < totalCount; i += batchSize) + { + var batch = syncList.Skip(i).Take(batchSize); // 分批获取数据 + + // 处理当前批次的数据 + var tasks = batch.Select(async item => + { + var output = await _productDesignLibrary.SyncProcessRouteToSap(item); + return output; + }).ToList(); + + var processRouteStockInquiryOutput = await Task.WhenAll(tasks); // 等待当前批次的所有任务完成 + + // 合并当前批次的结果 + sapOutputs.AddRange(processRouteStockInquiryOutput); + } + var json = JsonConvert.SerializeObject(sapOutputs); + var dbMain = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("1300000000001").CopyNew(); + string output = json; + var elapsedMilliseconds = (DateTime.Now - startTime).TotalMilliseconds; + if (totalCount == 0) + { + output = "未查询到符合条件的记录"; + } + + dbMain.CopyNew().Insertable(new + { + TaskName = "产品设计库同步工艺路线到SAP", + LogDateTime = DateTime.Now, + ReturnResult = output, + Elapsed = elapsedMilliseconds.ToLong() + }).ExecuteCommand(); + } +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Job/ProductManagement/SyncProductManagementBomToSap.cs b/admin.net.pro/Admin.NET/Vistar.Application/Job/ProductManagement/SyncProductManagementBomToSap.cs new file mode 100644 index 0000000..6c5c1fa --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Job/ProductManagement/SyncProductManagementBomToSap.cs @@ -0,0 +1,156 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Admin.NET.Core; +using Admin.NET.Core.Service; +using Furion.Schedule; +using Microsoft.Extensions.DependencyInjection; +using Newtonsoft.Json; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Vistar.Application.Entity; +using Vistar.Application.Service.MaterialManagement; +using Vistar.Application.Util; + +namespace Vistar.Application.Job.ProductManagement; + +[JobDetail("job_SyncProductManagementBomToSap", Description = "产品管理同步bom到SAP", GroupName = "default", Concurrent = false)] +[PeriodMinutes(5, TriggerId = "trigger_SyncProductManagementBomToSapJob", Description = "产品管理同步bom到SAP", RunOnStart = false)] + +public class SyncProductManagementBomToSap : IJob +{ + private readonly IServiceScopeFactory _scopeFactory; + public ProductManagementService _productManagement; + public SyncProductManagementBomToSap(IServiceScopeFactory scopeFactory, ProductManagementService productManagement) + { + _scopeFactory = scopeFactory; + _productManagement = productManagement; + } + + public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) + { + DateTime startTime = DateTime.Now; + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + + var syncData = db.CopyNew().Queryable() + .InnerJoin((x, y) => x.RecordGuid == y.ParentGuid && x.VersionIndex == y.ParentVersion) + .Where((x, y) => (x.CheckedStatus == 0 || x.CheckedStatus == 1) && x.fld005324 == "发布" && x.deleted == false && x.IsLatestVersion == true && x.fld004311 == "成功" && x.fld004312 == "N" && (x.fld004316 == "A" || x.fld004316 == "M") && y.ConfigId == 1 && y.isDeleted == false && (y.fld005586 != "不包含" || y.fld005586 == null)) + .Select((x, y) => new { + x.idRecord, + x.VersionIndex, + x._System_objNBS, + x.RecordGuid, + x.fld004944_Rec, + x.fld005288, + x.fld004942, + x.fld004325, + x.fld004945, + y.ParentGuid, + y.ParentVersion, + y.ChildGuid, + y.ChildObjID, + y.childVersion, + y.ConfigId, + y.Quantity, + y.PartNumber, + y.fld004936, + y.fld004937, + y.fld004938, + y.fld004939, + y.fld004940, + y.fld004492, + y.fld004941 + }).ToList(); + + var syncList = syncData.GroupBy(record => record.RecordGuid) + .Select(group => new SyncBomData + { + Id = group.FirstOrDefault()?.idRecord, + MaterialCode = group.FirstOrDefault()?._System_objNBS, + RecordGuid = group.FirstOrDefault()?.RecordGuid, + SyncVersion = group.FirstOrDefault()?.fld005288, + Bmeng = group.FirstOrDefault()?.fld004942 != null ? (int?)(float)group.FirstOrDefault()?.fld004942 : null, + Werks = group.FirstOrDefault()?.fld004325, + Datuv = group.FirstOrDefault()?.fld004945, + VersionIndex = group.FirstOrDefault()?.VersionIndex, + //Ecn = group.FirstOrDefault()?.ecn, + ecnGuid = group.FirstOrDefault()?.fld004944_Rec, + Bom = group.Select(g => new BomData + { + PartNumber = g.PartNumber, + ParentGuid = g.ParentGuid, + ChildGuid = g.ChildGuid, + ChildObjID = g.ChildObjID, + ConfigId = g.ConfigId, + childVersion = g.childVersion, + ParentVersion = g.VersionIndex, + Quantity = g.Quantity, + SORTF = g.fld004936, + ITISOB = g.fld004937, + ALPGR = g.fld004938, + ALPRF = g.fld004939, + ZDELETE = g.fld004940, + POSTP = g.fld004492, + ZYFMK = g.fld004941 + }).ToList() + }); + List sapOutputs = new List(); + + int batchSize = 20; // 每批的大小 + int totalCount = syncList.ToList().Count; + + for (int i = 0; i < totalCount; i += batchSize) + { + var batch = syncList.Skip(i).Take(batchSize); // 分批获取数据 + + // 处理当前批次的数据 + var tasks = batch.Select(async item => + { + var output = await _productManagement.SyncBomToSap(item); + return output; + }).ToList(); + + var bomStockInquiryOutput = await Task.WhenAll(tasks); // 等待当前批次的所有任务完成 + + // 合并当前批次的结果 + sapOutputs.AddRange(bomStockInquiryOutput); + + // 如果需要暂停或者处理频率,可以在此处插入适当的延迟。 + // await Task.Delay(1000); // 如果需要等待1秒,可以启用此行代码。 + } + var json = JsonConvert.SerializeObject(sapOutputs); + + //var tasks = syncList.Select(async item => + //{ + // var output = await _productDesignLibrary.SyncBomToSap(item); + // return output; + //}); + + //var bomStockInquiryOutput = await Task.WhenAll(tasks); + //var json = JsonConvert.SerializeObject(bomStockInquiryOutput.ToList()); + + var dbMain = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("1300000000001").CopyNew(); + string output = json; + var elapsedMilliseconds = (DateTime.Now - startTime).TotalMilliseconds; + if (totalCount == 0) + { + output = "未查询到符合条件的记录"; + } + + dbMain.CopyNew().Insertable(new + { + TaskName = "产品管理同步bom到SAP", + LogDateTime = DateTime.Now, + ReturnResult = output, + Elapsed = elapsedMilliseconds.ToLong() + }).ExecuteCommand(); + } +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Job/ProductManagement/SyncProductManagementMaterialToSap.cs b/admin.net.pro/Admin.NET/Vistar.Application/Job/ProductManagement/SyncProductManagementMaterialToSap.cs new file mode 100644 index 0000000..7790622 --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Job/ProductManagement/SyncProductManagementMaterialToSap.cs @@ -0,0 +1,166 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Admin.NET.Core; +using Admin.NET.Core.Service; +using Furion.Schedule; +using Microsoft.Extensions.DependencyInjection; +using Newtonsoft.Json; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Vistar.Application.Entity; +using Vistar.Application.SapService.Dto; +using Vistar.Application.Util; + +namespace Vistar.Application.Job.ProductManagement; + +[JobDetail("job_SyncProductManagementMaterialToSap", Description = "产品管理同步物料到SAP", GroupName = "default", Concurrent = false)] +[PeriodMinutes(3, TriggerId = "trigger_SyncProductManagementMaterialToSapJob", Description = "产品管理同步物料到SAP", RunOnStart = false)] +public class SyncProductManagementMaterialToSap : IJob +{ + private readonly IServiceScopeFactory _scopeFactory; + public SapService.SapService _sapService; + private readonly SysConfigService _sysConfigService; + public SyncProductManagementMaterialToSap(IServiceScopeFactory scopeFactory, SapService.SapService sapService, SysConfigService sysConfigService) + { + _scopeFactory = scopeFactory; + _sysConfigService = sysConfigService; + _sapService = sapService; + } + public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) + { + DateTime startTime = DateTime.Now; + + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + var input = db.CopyNew().Queryable() + .Where(x => (x.CheckedStatus == 0 || x.CheckedStatus == 1) && x.fld005324 == "发布" && x.deleted == false && x.IsLatestVersion == true && (x.fld004312 == "A" || x.fld004312 == "M")) + .ToList(); + var SapOutputList = new List(); + var Requser = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName); + const string lengthError = "物料描述长度大于40,请检查!"; + int batchSize = 20; // 每批的大小 + int totalCount = input.Count; + for (int i = 0; i < totalCount; i += batchSize) + { + var batch = input.Skip(i).Take(batchSize); // 分批获取数据 + var tasks = batch.Select(async item => + { + if (item.fld004484.Length > 40) + { + db.CopyNew().Updateable() + .SetColumns(it => new Obj110 + { + fld004629 = DateTime.Now, + fld004312 = "N", + fld004313 = lengthError, + fld004311 = "失败" + }) + .Where(it => it.idRecord == item.idRecord) + .ExecuteCommand(); + + return new SapOutput + { + materialCode = item._System_objNBS, + code = "失败", + msg = lengthError, + result = lengthError + }; + } + + //获取时间戳精确到毫秒,sap要求每次调用生成不重复guid + string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); + var sapMaterialInput = new SapMaterialInput() + { + Reqkeyid = "", + Businessid = "", + Messageid = "", + Sndprn = "PLM", + Rcvprn = "SAP", + Requser = Requser, + Note1 = "", + Note2 = "", + Note3 = "", + Zwbid = millisecondTimestamp, + Matnr = item._System_objNBS, + Mbrsh = item.fld004323, + Mtart = item.fld004324, + Maktx = item.fld004484, + Meins = item.fld004861, + Matkl = item.fld004485, + Bismt = item._System_ObjDescription, + Groes = item._System_objNBS, + Normt = item.fld004887, + Ferth = item.fld004882, + Zeinr = item.fld004881, + Mstae = item.fld004699, + Raube = item.fld004877, + Mhdrz = item.fld004876.ToString(), + Mhdhb = item.fld004895.ToString(), + Werks = item.fld004325, + Beskz = item.fld004490, + Sobsl = item.fld004491, + Schgt = item.fld004873, + Rgekz = item.fld004872, + Zbom = item.fld004698 + }; + var sapOutput = await _sapService.SapMaterialApi(sapMaterialInput); + string codeVal = sapOutput.code == "S" ? "成功" : "失败"; + string msg = sapOutput.msg; + + if (sapOutput.msg == "") + { + msg = "同步成功"; + } + + db.CopyNew().Updateable() + .SetColumns(it => new Obj110 + { + fld004629 = DateTime.Now, + fld004311 = codeVal, + fld004312 = "N", + fld004313 = msg + }) + .Where(it => it.idRecord == item.idRecord) + .ExecuteCommand(); + return new SapOutput + { + parameter = sapOutput.parameter, + materialCode = item._System_objNBS, + code = codeVal, + msg = msg, + result = sapOutput.result + }; + }).ToList(); + + var MateriaStockInquiryOutput = await Task.WhenAll(tasks); + + SapOutputList.AddRange(MateriaStockInquiryOutput); + } + + var json = JsonConvert.SerializeObject(SapOutputList); + var dbMain = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("1300000000001").CopyNew(); + string output = json; + var elapsedMilliseconds = (DateTime.Now - startTime).TotalMilliseconds; + if (totalCount == 0) + { + output = "未查询到符合条件的记录"; + } + + dbMain.CopyNew().Insertable(new + { + TaskName = "产品管理同步物料到SAP", + LogDateTime = DateTime.Now, + ReturnResult = output, + Elapsed = elapsedMilliseconds.ToLong() + }).ExecuteCommand(); + + } +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Job/ProductManagement/SyncProductManagementProcessRouteToSap.cs b/admin.net.pro/Admin.NET/Vistar.Application/Job/ProductManagement/SyncProductManagementProcessRouteToSap.cs new file mode 100644 index 0000000..3d445b7 --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Job/ProductManagement/SyncProductManagementProcessRouteToSap.cs @@ -0,0 +1,124 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Admin.NET.Core; +using Admin.NET.Core.Service; +using Furion.Schedule; +using Microsoft.Extensions.DependencyInjection; +using Newtonsoft.Json; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Vistar.Application.Entity; +using Vistar.Application.Service.MaterialManagement; +using Vistar.Application.Util; + +namespace Vistar.Application.Job.ProductManagement; + +[JobDetail("job_SyncProductManagementProcessRouteToSap", Description = "产品管理同步工艺路线到SAP", GroupName = "default", Concurrent = false)] +[PeriodMinutes(5, TriggerId = "trigger_SyncProductManagementProcessRouteToSapJob", Description = "产品管理同步工艺路线到SAP", RunOnStart = false)] +public class SyncProductManagementProcessRouteToSap : IJob +{ + private readonly IServiceScopeFactory _scopeFactory; + public ProductManagementService _productManagement; + public SyncProductManagementProcessRouteToSap(IServiceScopeFactory scopeFactory, ProductManagementService productManagement) + { + _scopeFactory = scopeFactory; + _productManagement = productManagement; + } + + public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) + { + DateTime startTime = DateTime.Now; + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + + var syncPbom = db.CopyNew().Queryable() + .InnerJoin((x, y) => x.RecordGuid == y.ParentGuid && x.VersionIndex == y.ParentVersion) + .Where((x, y) => (x.CheckedStatus == 0 || x.CheckedStatus == 1) && x.fld005324 == "发布" && x.deleted == false && x.IsLatestVersion == true && x.fld004311 == "成功" && x.fld004312 == "N" && (x.fld004320 == "A" || x.fld004320 == "M") && y.ConfigId == 4 && y.isDeleted == false) + .Select((x, y) => new + { + x.idRecord, + x.VersionIndex, + x.RecordGuid, + x._System_objNBS, + x.fld004325,//工厂 + x.fld004945,//有效日期 + y.ParentGuid, + y.ChildGuid, + y.ChildObjID, + y.PartNumber, + y.Marker, + y.fld004994, + y.fld004995, + y.fld004996, + y.fld005296, + + }).ToList(); + + var syncList = syncPbom.GroupBy(record => record.RecordGuid) + .Select(group => new SyncProcessRouteData + { + idRecord = group.FirstOrDefault()?.idRecord, + _System_objNBS = group.FirstOrDefault()?._System_objNBS, + VersionIndex = group.FirstOrDefault()?.VersionIndex, + Werks= group.FirstOrDefault()?.fld004325, + Datuv = group.FirstOrDefault()?.fld004945, + ProcessRouteList = group.Select(g => new ProcessRouteList + { + ParentGuid = g.ParentGuid, + ChildGuid = g.ChildGuid, + ChildObjID = g.ChildObjID, + PartNumber = g.PartNumber, + VORNR = g.Marker, + VGW01 = g.fld004994 !=null ?g.fld004994.ToString():"", + VGE01 = g.fld004995, + STEUS = g.fld004996, + BMSCH = g.fld005296 != null ? g.fld005296.ToString() : "" + }).ToList() + }); + + List sapOutputs = new List(); + int batchSize = 20; // 每批的大小 + int totalCount = syncList.ToList().Count; + for (int i = 0; i < totalCount; i += batchSize) + { + var batch = syncList.Skip(i).Take(batchSize); // 分批获取数据 + + // 处理当前批次的数据 + var tasks = batch.Select(async item => + { + var output = await _productManagement.SyncProcessRouteToSap(item); + return output; + }).ToList(); + + var processRouteStockInquiryOutput = await Task.WhenAll(tasks); // 等待当前批次的所有任务完成 + + // 合并当前批次的结果 + sapOutputs.AddRange(processRouteStockInquiryOutput); + } + var json = JsonConvert.SerializeObject(sapOutputs); + var dbMain = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("1300000000001").CopyNew(); + string output = json; + var elapsedMilliseconds = (DateTime.Now - startTime).TotalMilliseconds; + if (totalCount == 0) + { + output = "未查询到符合条件的记录"; + } + + dbMain.CopyNew().Insertable(new + { + TaskName = "产品管理同步工艺路线到SAP", + LogDateTime = DateTime.Now, + ReturnResult = output, + Elapsed = elapsedMilliseconds.ToLong() + }).ExecuteCommand(); + + } +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Job/ProductionMaterials/SyncProductionMaterialsToSap.cs b/admin.net.pro/Admin.NET/Vistar.Application/Job/ProductionMaterials/SyncProductionMaterialsToSap.cs new file mode 100644 index 0000000..41bd623 --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Job/ProductionMaterials/SyncProductionMaterialsToSap.cs @@ -0,0 +1,171 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Admin.NET.Core; +using Admin.NET.Core.Service; +using DocumentFormat.OpenXml.Drawing; +using Furion.Schedule; +using Microsoft.Extensions.DependencyInjection; +using Newtonsoft.Json; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Data.OscarClient; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Vistar.Application.Entity; +using Vistar.Application.SapService.Dto; +using Vistar.Application.Util; + +namespace Vistar.Application.Job.ProductionMaterials; + +[JobDetail("job_SyncProductionMaterialsToSap", Description = "生产物料同步到SAP", GroupName = "default", Concurrent = false)] +[PeriodMinutes(5, TriggerId = "trigger_SyncProductionMaterialsToSapJob", Description = "生产物料同步到SAP", RunOnStart = false)] +public class SyncProductionMaterialsToSap : IJob +{ + private readonly IServiceScopeFactory _scopeFactory; + public SapService.SapService _sapService; + private readonly SysConfigService _sysConfigService; + public SyncProductionMaterialsToSap(IServiceScopeFactory scopeFactory, SapService.SapService sapService, SysConfigService sysConfigService) + { + _scopeFactory = scopeFactory; + _sysConfigService = sysConfigService; + _sapService=sapService; + } + public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) + { + DateTime startTime = DateTime.Now; + + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + + var input = db.CopyNew().Queryable() + .Where(x => (x.CheckedStatus == 7 || x.CheckedStatus == 8) && x.deleted == false && x.IsLatestVersion == true && (x.fld004607 == "A" || x.fld004607 == "M") && x.fld004973 == "发布") + .ToList(); + const string lengthError = "物料描述长度大于40,请检查!"; + var SapOutputList = new List(); + var Requser = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName); + + int batchSize = 20; // 每批的大小 + int totalCount = input.Count; + for (int i = 0; i < totalCount; i += batchSize) + { + var batch = input.Skip(i).Take(batchSize); // 分批获取数据 + var tasks = batch.Select(async item => + { + if (item.fld004598.Length > 40) + { + db.CopyNew().Updateable() + .SetColumns(it => new Obj112 + { + fld004606 = DateTime.Now, + fld004607 = "N", + fld004605 = lengthError, + fld004604 = "失败" + }) + .Where(it => it.idRecord == item.idRecord) + .ExecuteCommand(); + + return new SapOutput + { + materialCode = item._System_objNBS, + code = "失败", + msg = lengthError, + result = lengthError + }; + } + + //获取时间戳精确到毫秒,sap要求每次调用生成不重复guid + string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); + var sapMaterialInput = new SapMaterialInput() + { + Reqkeyid = "", + Businessid = "", + Messageid = "", + Sndprn = "PLM", + Rcvprn = "SAP", + Requser = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName), + Note1 = "", + Note2 = "", + Note3 = "", + Zwbid = millisecondTimestamp, + Matnr = item._System_objNBS, + Mbrsh = item.fld004595, + Mtart = item.fld004596, + Maktx = item.fld004598, + Meins = item.fld004594, + Matkl = item.fld004599, + Bismt = item._System_ObjDescription, + Groes = item.fld005323, + Normt = item.fld004592, + Ferth = item.fld004593, + Zeinr = item.fld004903, + Mstae = item.fld004696, + Raube = item.fld004904, + Mhdrz = item.fld004905.ToString(), + Mhdhb = item.fld004907.ToString(), + Werks = item.fld004597, + Beskz = item.fld004600, + Sobsl = item.fld004601, + Schgt = item.fld004602, + Rgekz = item.fld004603, + Zbom = item.fld004695 + }; + var sapOutput = await _sapService.SapMaterialApi(sapMaterialInput); + string codeVal = sapOutput.code == "S" ? "成功" : "失败"; + string msg = sapOutput.msg; + + if (sapOutput.msg == "") + { + msg = "同步成功"; + } + db.CopyNew().Updateable() + .SetColumns(it => new Obj112 + { + fld004606 = DateTime.Now, + fld004604 = codeVal, + fld004607 = "N", + fld004605 = msg + }) + .Where(it => it.idRecord == item.idRecord) + .ExecuteCommand(); + + return new SapOutput() + { + parameter = sapOutput.parameter, + materialCode = item._System_objNBS, + code = codeVal, + msg = msg, + result = sapOutput.result + }; + }).ToList(); + + var MateriaStockInquiryOutput = await Task.WhenAll(tasks); + + SapOutputList.AddRange(MateriaStockInquiryOutput); + + } + + var json = JsonConvert.SerializeObject(SapOutputList); + var dbMain = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("1300000000001").CopyNew(); + string output = json; + var elapsedMilliseconds = (DateTime.Now - startTime).TotalMilliseconds; + if (totalCount == 0) + { + output = "未查询到符合条件的记录"; + } + + dbMain.CopyNew().Insertable(new + { + TaskName = "生产物料同步到SAP", + LogDateTime = DateTime.Now, + ReturnResult = output, + Elapsed = elapsedMilliseconds.ToLong() + }).ExecuteCommand(); + + } +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Job/ProjectManagement/SyncCreateWbsToSap.cs b/admin.net.pro/Admin.NET/Vistar.Application/Job/ProjectManagement/SyncCreateWbsToSap.cs new file mode 100644 index 0000000..8940893 --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Job/ProjectManagement/SyncCreateWbsToSap.cs @@ -0,0 +1,58 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Admin.NET.Core; +using Admin.NET.Core.Service; +using DocumentFormat.OpenXml.Drawing; +using Furion.Schedule; +using Microsoft.Extensions.DependencyInjection; +using Newtonsoft.Json; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Vistar.Application.Entity; +using Vistar.Application.Service.ProjectManagement; + +namespace Vistar.Application.Job.ProjectManagement; + +[JobDetail("job_SyncCreateWbsToSap", Description = "创建Wbs到SAP", GroupName = "default", Concurrent = false)] +[PeriodMinutes(30, TriggerId = "trigger_SyncCreateWbsToSapJob", Description = "创建Wbs到SAP", RunOnStart = false)] +public class SyncCreateWbsToSap : IJob +{ + private readonly IServiceScopeFactory _scopeFactory; + public ProjectManagementService _projectManagement; + public SyncCreateWbsToSap(IServiceScopeFactory scopeFactory, ProjectManagementService projectManagement) + { + _scopeFactory = scopeFactory; + _projectManagement = projectManagement; + } + public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) + { + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("1300000000001").CopyNew(); + + DateTime startTime = DateTime.Now; + var sapOutputs = await _projectManagement.WbsInSapCreate(); + var json = JsonConvert.SerializeObject(sapOutputs); + + string output = json; + var elapsedMilliseconds = (DateTime.Now - startTime).TotalMilliseconds; + if (sapOutputs.Count==0) + { + output= "未查询到符合条件的记录"; + } + db.CopyNew().Insertable(new + { + TaskName = "创建Wbs到SAP", + LogDateTime = DateTime.Now, + ReturnResult = output, + Elapsed = elapsedMilliseconds.ToLong() + }).ExecuteCommand(); + } +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Job/ProjectManagement/SyncProjectManagementBomToSap.cs b/admin.net.pro/Admin.NET/Vistar.Application/Job/ProjectManagement/SyncProjectManagementBomToSap.cs new file mode 100644 index 0000000..6eb5ae2 --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Job/ProjectManagement/SyncProjectManagementBomToSap.cs @@ -0,0 +1,66 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Admin.NET.Core; +using Admin.NET.Core.Service; +using Furion.Schedule; +using Microsoft.Extensions.DependencyInjection; +using Newtonsoft.Json; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Vistar.Application.Entity; +using Vistar.Application.Service.ProjectManagement; +using Vistar.Application.Util; + +namespace Vistar.Application.Job.ProjectManagement; + +[JobDetail("job_SyncProjectManagementBomToSap", Description = "项目管理同步Bom到SAP", GroupName = "default", Concurrent = false)] +[PeriodMinutes(5, TriggerId = "trigger_SyncProjectManagementBomToSap", Description = "项目管理同步Bom到SAP", RunOnStart = false)] +public class SyncProjectManagementBomToSap : IJob +{ + private readonly IServiceScopeFactory _scopeFactory; + public ProjectManagementService _projectManagement; + public SyncProjectManagementBomToSap(IServiceScopeFactory scopeFactory, ProjectManagementService projectManagement) + { + _scopeFactory = scopeFactory; + _projectManagement = projectManagement; + } + + public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) + { + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("1300000000001").CopyNew(); + DateTime startTime = DateTime.Now; + + + var sapOutputs = await _projectManagement.TimingSyncToSAPBom(); + var json = JsonConvert.SerializeObject(sapOutputs); + + + string output = json; + if (sapOutputs.Count == 0 || sapOutputs == null) + { + output = "未查询到符合条件的记录"; + } + + var elapsedMilliseconds = (DateTime.Now - startTime).TotalMilliseconds; + + db.CopyNew().Insertable(new + { + TaskName = "项目管理同步Bom到SAP", + LogDateTime = DateTime.Now, + ReturnResult = output, + Elapsed = elapsedMilliseconds.ToLong() + }).ExecuteCommand(); + + + + } +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Job/ProjectManagement/SyncProjectManagementMaterialToSap.cs b/admin.net.pro/Admin.NET/Vistar.Application/Job/ProjectManagement/SyncProjectManagementMaterialToSap.cs new file mode 100644 index 0000000..94d095c --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Job/ProjectManagement/SyncProjectManagementMaterialToSap.cs @@ -0,0 +1,60 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Admin.NET.Core; +using Admin.NET.Core.Service; +using Furion.Schedule; +using Microsoft.Extensions.DependencyInjection; +using Newtonsoft.Json; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Vistar.Application.Entity; +using Vistar.Application.Service.ProjectManagement; + +namespace Vistar.Application.Job.ProjectManagement; + +[JobDetail("job_SyncProjectManagementMaterialToSap", Description = "项目管理同步物料到SAP", GroupName = "default", Concurrent = false)] +[PeriodMinutes(3, TriggerId = "trigger_SyncProjectManagementMaterialToSap", Description = "项目管理同步物料到SAP", RunOnStart = false)] +public class SyncProjectManagementMaterialToSap : IJob +{ + private readonly IServiceScopeFactory _scopeFactory; + public ProjectManagementService _projectManagement; + public SyncProjectManagementMaterialToSap(IServiceScopeFactory scopeFactory, ProjectManagementService projectManagement) + { + _scopeFactory = scopeFactory; + _projectManagement = projectManagement; + } + + public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) + { + using var serviceScope = _scopeFactory.CreateScope(); + var dbMain = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("1300000000001").CopyNew(); + + DateTime startTime = DateTime.Now; + var sapOutputs = await _projectManagement.TimingSyncToSAP(); + var json = JsonConvert.SerializeObject(sapOutputs); + + string output = json; + if (sapOutputs.Count == 0) + { + output = "未查询到符合条件的记录"; + } + + var elapsedMilliseconds = (DateTime.Now - startTime).TotalMilliseconds; + + dbMain.CopyNew().Insertable(new + { + TaskName = "项目管理同步物料到SAP", + LogDateTime = DateTime.Now, + ReturnResult = output, + Elapsed = elapsedMilliseconds.ToLong() + }).ExecuteCommand(); + } +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Job/ProjectManagement/SyncProjectManagementProcessRouteToSap.cs b/admin.net.pro/Admin.NET/Vistar.Application/Job/ProjectManagement/SyncProjectManagementProcessRouteToSap.cs new file mode 100644 index 0000000..6c77db2 --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Job/ProjectManagement/SyncProjectManagementProcessRouteToSap.cs @@ -0,0 +1,63 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Admin.NET.Core; +using Admin.NET.Core.Service; +using Furion.Schedule; +using Microsoft.Extensions.DependencyInjection; +using Newtonsoft.Json; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Vistar.Application.Entity; +using Vistar.Application.Service.ProjectManagement; + +namespace Vistar.Application.Job.ProjectManagement; + +[JobDetail("job_SyncProjectManagementProcessRouteToSap", Description = "项目管理同步工艺路线到SAP", GroupName = "default", Concurrent = false)] +[PeriodMinutes(5, TriggerId = "trigger_SyncProjectManagementProcessRouteToSap", Description = "项目管理同步工艺路线到SAP", RunOnStart = false)] +public class SyncProjectManagementProcessRouteToSap : IJob +{ + private readonly IServiceScopeFactory _scopeFactory; + public ProjectManagementService _projectManagement; + public SyncProjectManagementProcessRouteToSap(IServiceScopeFactory scopeFactory, ProjectManagementService projectManagement) + { + _scopeFactory = scopeFactory; + _projectManagement = projectManagement; + } + + public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) + { + + DateTime startTime = DateTime.Now; + using var serviceScope = _scopeFactory.CreateScope(); + var dbMain = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("1300000000001").CopyNew(); + + + var sapOutputs = await _projectManagement.TimingSyncToSAPProcessRoute(); + var json = JsonConvert.SerializeObject(sapOutputs); + + string output = json; + if (sapOutputs.Count == 0 || sapOutputs == null) + { + output = "未查询到符合条件的记录"; + } + + var elapsedMilliseconds = (DateTime.Now - startTime).TotalMilliseconds; + + dbMain.CopyNew().Insertable(new + { + TaskName = "项目管理同步工艺路线到SAP", + LogDateTime = DateTime.Now, + ReturnResult = output, + Elapsed = elapsedMilliseconds.ToLong() + }).ExecuteCommand(); + + } +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Job/ProjectManagement/SyncUpdateWbsToSap.cs b/admin.net.pro/Admin.NET/Vistar.Application/Job/ProjectManagement/SyncUpdateWbsToSap.cs new file mode 100644 index 0000000..8f7cea7 --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Job/ProjectManagement/SyncUpdateWbsToSap.cs @@ -0,0 +1,59 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Admin.NET.Core; +using Admin.NET.Core.Service; +using Furion.Schedule; +using Microsoft.Extensions.DependencyInjection; +using Newtonsoft.Json; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Vistar.Application.Entity; +using Vistar.Application.Service.ProjectManagement; + +namespace Vistar.Application.Job.ProjectManagement; + +[JobDetail("job_SyncUpdateWbsToSap", Description = "更新Wbs到SAP", GroupName = "default", Concurrent = false)] +[PeriodMinutes(30, TriggerId = "trigger_SyncUpdateWbsJob", Description = "更新Wbs到SAP", RunOnStart = false)] +public class SyncUpdateWbsToSap : IJob +{ + + private readonly IServiceScopeFactory _scopeFactory; + public ProjectManagementService _projectManagement; + public SyncUpdateWbsToSap(IServiceScopeFactory scopeFactory, ProjectManagementService projectManagement) + { + _scopeFactory = scopeFactory; + _projectManagement = projectManagement; + } + public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) + { + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("1300000000001").CopyNew(); + + DateTime startTime = DateTime.Now; + var sapOutputs = await _projectManagement.WbsInSapUpdate(); + var json = JsonConvert.SerializeObject(sapOutputs); + + string output = json; + var elapsedMilliseconds = (DateTime.Now - startTime).TotalMilliseconds; + if (sapOutputs.Count == 0) + { + output = "未查询到符合条件的记录"; + } + + db.CopyNew().Insertable(new + { + TaskName = "更新Wbs到SAP", + LogDateTime = DateTime.Now, + ReturnResult = output, + Elapsed = elapsedMilliseconds.ToLong() + }).ExecuteCommand(); + } +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Job/PurchasingRequisition/PurchasingRequisitionToSap.cs b/admin.net.pro/Admin.NET/Vistar.Application/Job/PurchasingRequisition/PurchasingRequisitionToSap.cs new file mode 100644 index 0000000..54ded18 --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Job/PurchasingRequisition/PurchasingRequisitionToSap.cs @@ -0,0 +1,57 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Admin.NET.Core.Service; +using Furion.Schedule; +using Microsoft.Extensions.DependencyInjection; +using Newtonsoft.Json; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Vistar.Application.Entity; +using Vistar.Application.Service.PurchasingRequisition; + +namespace Vistar.Application.Job.PurchasingRequisition; + +[JobDetail("job_PurchasingRequisitionToSap", Description = "采购申请同步到SAP", GroupName = "default", Concurrent = false)] +[PeriodMinutes(30, TriggerId = "trigger_PurchasingRequisitionToSap", Description = "采购申请同步到SAP", RunOnStart = false)] +public class PurchasingRequisitionToSap : IJob +{ + private readonly IServiceScopeFactory _scopeFactory; + public PurchasingRequisitionService _purchasingRequisition; + public PurchasingRequisitionToSap(IServiceScopeFactory scopeFactory, PurchasingRequisitionService purchasingRequisition) + { + _scopeFactory = scopeFactory; + _purchasingRequisition = purchasingRequisition; + } + + public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) + { + DateTime startTime = DateTime.Now; + var sapOutputs = await _purchasingRequisition.TimingSyncToSAPPurchasingRequisition(); + var json = JsonConvert.SerializeObject(sapOutputs); + using var serviceScope = _scopeFactory.CreateScope(); + var sysEnumService = serviceScope.ServiceProvider.GetRequiredService(); + var dbMain = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("1300000000001").CopyNew(); + string output = json; + var elapsedMilliseconds = (DateTime.Now - startTime).TotalMilliseconds; + if (sapOutputs.Count == 0) + { + output = "未查询到符合条件的记录"; + } + + dbMain.Insertable(new + { + TaskName = "采购申请同步到SAP", + LogDateTime = DateTime.Now, + ReturnResult = output, + Elapsed = elapsedMilliseconds.ToLong() + }).ExecuteCommand(); + } +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Job/SolidWorksManage/RefreshManageToKen.cs b/admin.net.pro/Admin.NET/Vistar.Application/Job/SolidWorksManage/RefreshManageToKen.cs new file mode 100644 index 0000000..7c9377c --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Job/SolidWorksManage/RefreshManageToKen.cs @@ -0,0 +1,50 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Furion.Schedule; +using Microsoft.Extensions.DependencyInjection; +using Newtonsoft.Json; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Vistar.Application.Entity; + +namespace Vistar.Application.Job.SolidWorksManage; + +[JobDetail("job_RefreshManageToKen", Description = "刷新ManageToKen", GroupName = "default", Concurrent = false)] +[PeriodHours(6, TriggerId = "trigger_RefreshManageToKen", Description = "刷新ManageToKen", RunOnStart = false)] +public class RefreshManageToKen : IJob +{ + private readonly IServiceScopeFactory _scopeFactory; + public SolidWorksManageService.SolidWorksManageService _solidWorksManage; + public RefreshManageToKen(IServiceScopeFactory scopeFactory, SolidWorksManageService.SolidWorksManageService solidWorksManage) + { + _scopeFactory = scopeFactory; + _solidWorksManage = solidWorksManage; + } + + public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken) + { + DateTime startTime = DateTime.Now; + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("1300000000001").CopyNew(); + var outputs = await _solidWorksManage.Authenticate(); + var json = JsonConvert.SerializeObject(outputs); + string output = json; + var elapsedMilliseconds = (DateTime.Now - startTime).TotalMilliseconds; + + db.CopyNew().Insertable(new + { + TaskName = "刷新ManageToKen", + LogDateTime = DateTime.Now, + ReturnResult = output, + Elapsed = elapsedMilliseconds.ToLong() + }).ExecuteCommand(); + } +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/SapService/Dto/SapPurchasingRequisitionInput.cs b/admin.net.pro/Admin.NET/Vistar.Application/SapService/Dto/SapPurchasingRequisitionInput.cs index 1e4c321..e8053cb 100644 --- a/admin.net.pro/Admin.NET/Vistar.Application/SapService/Dto/SapPurchasingRequisitionInput.cs +++ b/admin.net.pro/Admin.NET/Vistar.Application/SapService/Dto/SapPurchasingRequisitionInput.cs @@ -184,4 +184,9 @@ public class SapPurchasingRequisitionItem /// public string Loekz { get; set; } + /// + /// 项目描述 + /// + public string Ztext { get; set; } + } diff --git a/admin.net.pro/Admin.NET/Vistar.Application/SapService/SapService.cs b/admin.net.pro/Admin.NET/Vistar.Application/SapService/SapService.cs index 81d2321..89e94c6 100644 --- a/admin.net.pro/Admin.NET/Vistar.Application/SapService/SapService.cs +++ b/admin.net.pro/Admin.NET/Vistar.Application/SapService/SapService.cs @@ -32,6 +32,7 @@ public class SapService : IDynamicApiController, ITransient { _sysConfigService = sysConfigService; } + /// /// SAP同步物料 /// @@ -111,7 +112,12 @@ public class SapService : IDynamicApiController, ITransient content.Headers.ContentType = new MediaTypeHeaderValue("text/xml"); httpClient.DefaultRequestHeaders.Add("Accept-Language", "zh"); // 设置 SAP Web 服务的 URL - var url = "https://vhjqeps4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zmmfm012/100/zmmfm012/zmmfm012"; + + //sap正式地址 + var url = "https://vhjqeps4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zmmfm012/800/zmmfm012/zmmfm012";//正式sap地址 + + //sap测试地址 + //var url = "https://vhjqeds4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zmmfm012/130/zmmfm012/zmmfm012";//测试sap地址 // 发起 POST 请求到 SAP Web 服务 var response = await httpClient.PostAsync(url, content); @@ -223,7 +229,11 @@ public class SapService : IDynamicApiController, ITransient content.Headers.ContentType = new MediaTypeHeaderValue("text/xml"); httpClient.DefaultRequestHeaders.Add("Accept-Language", "zh"); // 设置 SAP Web 服务的 URL - var url = "https://vhjqeps4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zppfm001/100/zppfm001/zppfm001"; + //sap正式地址 + var url = "https://vhjqeps4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zppfm001/800/zppfm001/zppfm001"; + + //sap测试地址 + //var url = "https://vhjqeds4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zppfm001/130/zppfm001/zppfm001"; // 发起 POST 请求到 SAP Web 服务 var response = await httpClient.PostAsync(url, content); @@ -278,6 +288,7 @@ public class SapService : IDynamicApiController, ITransient Console.WriteLine("发生错误: " + ex.Message); var output = new SapOutput() { + parameter= soapEnvelope.ToString(), code = "失败", msg = "发生错误" + ex.Message, result = "发生错误" + ex @@ -397,7 +408,11 @@ public class SapService : IDynamicApiController, ITransient content.Headers.ContentType = new MediaTypeHeaderValue("text/xml"); httpClient.DefaultRequestHeaders.Add("Accept-Language", "zh"); // 设置 SAP Web 服务的 URL - var url = "https://vhjqeps4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zppfm003/100/zppfm003/zppfm003"; + //sap正式地址 + var url = "https://vhjqeps4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zppfm003/800/zppfm003/zppfm003"; + + //sap测试地址 + //var url = "https://vhjqeds4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zppfm003/130/zppfm003/zppfm003"; // 发起 POST 请求到 SAP Web 服务 var response = await httpClient.PostAsync(url, content); @@ -507,7 +522,11 @@ public class SapService : IDynamicApiController, ITransient content.Headers.ContentType = new MediaTypeHeaderValue("text/xml"); httpClient.DefaultRequestHeaders.Add("Accept-Language", "zh"); // 设置 SAP Web 服务的 URL - var url = "https://vhjqeps4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zppfm004/100/zppfm004/zppfm004"; + //sap正式地址 + var url = "https://vhjqeps4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zppfm004/800/zppfm004/zppfm004"; + + //sap测试地址 + //var url = "https://vhjqeds4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zppfm004/130/zppfm004/zppfm004"; // 发起 POST 请求到 SAP Web 服务 var response = await httpClient.PostAsync(url, content); @@ -661,7 +680,12 @@ public class SapService : IDynamicApiController, ITransient content.Headers.ContentType = new MediaTypeHeaderValue("text/xml"); httpClient.DefaultRequestHeaders.Add("Accept-Language", "zh"); // 设置 SAP Web 服务的 URL - var url = "https://vhjqeps4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zmmfm013/100/zmmfm013/zmmfm013"; + //sap正式地址 + var url = "https://vhjqeps4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zmmfm013/800/zmmfm013/zmmfm013"; + + //sap测试地址 + //var url = "https://vhjqeds4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zmmfm013/130/zmmfm013/zmmfm013"; + // 发起 POST 请求到 SAP Web 服务 var response = await httpClient.PostAsync(url, content); @@ -760,7 +784,8 @@ public class SapService : IDynamicApiController, ITransient new XElement("Ekorg", item.Ekorg), new XElement("Zzpspnr", item.Zzpspnr), new XElement("Afnam", item.Afnam), - new XElement("Loekz", item.Loekz) + new XElement("Loekz", item.Loekz), + new XElement("Ztext", item.Ztext) ); itemElements.Add(element); @@ -827,7 +852,11 @@ public class SapService : IDynamicApiController, ITransient content.Headers.ContentType = new MediaTypeHeaderValue("text/xml"); httpClient.DefaultRequestHeaders.Add("Accept-Language", "zh"); // 设置 SAP Web 服务的 URL - var url = "https://vhjqeps4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zppfm005/100/zppfm005/zppfm005"; + //sap正式地址 + var url = "https://vhjqeps4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zppfm005/800/zppfm005/zppfm005"; + + //sap测试地址 + //var url = "https://vhjqeds4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zppfm005/130/zppfm005/zppfm005"; // 发起 POST 请求到 SAP Web 服务 var response = await httpClient.PostAsync(url, content); @@ -970,7 +999,11 @@ public class SapService : IDynamicApiController, ITransient content.Headers.ContentType = new MediaTypeHeaderValue("text/xml"); httpClient.DefaultRequestHeaders.Add("Accept-Language", "zh"); // 设置 SAP Web 服务的 URL - var url = "https://vhjqeps4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zpsfm005/100/zpsfm005/zpsfm005"; + + //sap正式地址 + var url = "https://vhjqeps4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zpsfm005/800/zpsfm005/zpsfm005"; + //sap测试地址 + //var url = "https://vhjqeds4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zpsfm005/130/zpsfm005/zpsfm005"; // 发起 POST 请求到 SAP Web 服务 var response = await httpClient.PostAsync(url, content); @@ -1113,7 +1146,11 @@ public class SapService : IDynamicApiController, ITransient content.Headers.ContentType = new MediaTypeHeaderValue("text/xml"); httpClient.DefaultRequestHeaders.Add("Accept-Language", "zh"); // 设置 SAP Web 服务的 URL - var url = "https://vhjqeps4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zpsfm006/100/zpsfm006/zpsfm006"; + //sap正式地址 + var url = "https://vhjqeps4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zpsfm006/800/zpsfm006/zpsfm006"; + + //sap测试地址 + //var url = "https://vhjqeds4ci.sap.vistar-eq.com:44300/sap/bc/srt/rfc/sap/zpsfm006/130/zpsfm006/zpsfm006"; // 发起 POST 请求到 SAP Web 服务 var response = await httpClient.PostAsync(url, content); diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Service/ChangeNoticeEcn/ChangeNoticeEcnService.cs b/admin.net.pro/Admin.NET/Vistar.Application/Service/ChangeNoticeEcn/ChangeNoticeEcnService.cs index effdeb5..05df01b 100644 --- a/admin.net.pro/Admin.NET/Vistar.Application/Service/ChangeNoticeEcn/ChangeNoticeEcnService.cs +++ b/admin.net.pro/Admin.NET/Vistar.Application/Service/ChangeNoticeEcn/ChangeNoticeEcnService.cs @@ -13,7 +13,10 @@ using Furion.DependencyInjection; using Furion.DynamicApiController; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; using RazorEngine; +using SqlSugar; using System; using System.Collections.Generic; using System.ComponentModel; @@ -46,6 +49,7 @@ public class ChangeNoticeEcnService : IDynamicApiController, ITransient private readonly SysConfigService _sysConfigService; public Common.DataValidationService _dataValidationService; public SapService.SapService _sapService; + private readonly IServiceScopeFactory _scopeFactory; public ChangeNoticeEcnService( SqlSugarRepository obj118Rep, @@ -55,7 +59,8 @@ public class ChangeNoticeEcnService : IDynamicApiController, ITransient SqlSugarRepository processesRequestItemsRep, SysConfigService sysConfigService, DataValidationService dataValidationService, - SapService.SapService sapService + SapService.SapService sapService, + IServiceScopeFactory scopeFactory ) { @@ -67,6 +72,7 @@ public class ChangeNoticeEcnService : IDynamicApiController, ITransient _sysConfigService = sysConfigService; _dataValidationService = dataValidationService; _sapService = sapService; + _scopeFactory = scopeFactory; } /// @@ -218,7 +224,10 @@ public class ChangeNoticeEcnService : IDynamicApiController, ITransient [AllowAnonymous] public async Task> TimingSyncToSAP() { - var input = await _obj118Rep.AsQueryable() + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + + var input = await db.CopyNew().Queryable() .Where(x => x.CheckedStatus == 1 && x._System_CurrentStage == "标准化审核" && x.deleted == false && x.IsLatestVersion == true && x.fld005292 == "A") .ToListAsync(); var SapOutputList = new List(); @@ -253,7 +262,7 @@ public class ChangeNoticeEcnService : IDynamicApiController, ITransient { msg = "同步成功"; } - await _obj118Rep.AsUpdateable() + await db.Updateable() .SetColumns(it => new Obj118 { fld005293 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), @@ -280,11 +289,15 @@ public class ChangeNoticeEcnService : IDynamicApiController, ITransient /// 生成ECN差异清单 /// /// - [AllowAnonymous] + [ApiDescriptionSettings(Name = "EcnVarianceList"), HttpGet] + [DisplayName("生成ECN差异清单")] public async Task EcnVarianceList() { + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + //获取符合条件的变更通知Ecn数据 - var list = await _obj118Rep.AsQueryable() + var list = await db.CopyNew().Queryable() .Where(x => x.CheckedStatus == 1 && x.deleted == false && x.fld006576 == "A" && x._System_CurrentStage == "差异清单对比中" && x.IsLatestVersion == true) .ToListAsync(); @@ -307,7 +320,7 @@ public class ChangeNoticeEcnService : IDynamicApiController, ITransient //最新版本 var ecnVersionIndex = ecnListItem.VersionIndex; //获取条目记录 - var listOfDrawing = await _processesRequestItemsRep.AsQueryable() + var listOfDrawing = await db.CopyNew().Queryable() .Where(x => x.ProcObjId == 118 && x.fld006573 == "A" && x.ProcRecGuid == ecnRecordGuid) .ToListAsync(); foreach (var listOfDrawingItem in listOfDrawing) @@ -316,8 +329,8 @@ public class ChangeNoticeEcnService : IDynamicApiController, ITransient var listOfDrawingRequestItemsId = listOfDrawingItem.RequestItemsId; //获取137表记录 - var recordData = await _obj137Rep.AsQueryable() - .Where(x => x.RecordGuid == listOfDrawingRecordGuid && x.SWPDMConfigurationName == "默认" && x.deleted == false && !string.IsNullOrEmpty(x.fld005686)).OrderByDescending(x => x.idRecord) + var recordData = await db.CopyNew().Queryable() + .Where(x => x.RecordGuid == listOfDrawingRecordGuid && x.SWPDMConfigurationName == "默认" && x.deleted == false && !string.IsNullOrEmpty(x.fld005686)).OrderByDescending(x => x.idRecord) .FirstAsync(); if (recordData == null) { @@ -352,22 +365,22 @@ public class ChangeNoticeEcnService : IDynamicApiController, ITransient EffectiveTo = DateTime.Now.AddYears(100), ChildSwFileType = 1,//记录属于137PDM库的默认1 属性112原材料库默认 0 ParentSwFileType = -1, - ParentObjectID=118, - CreatedUserID=2, - ModifiedUserID=2, - ChildConfigID=8, - isAddedFromSW=true + ParentObjectID = 118, + CreatedUserID = 2, + ModifiedUserID = 2, + ChildConfigID = 8, + isAddedFromSW = true }; - var addParentBom = await _configurationDataRep.AsInsertable(parentBom) - .InsertColumns(x=> new { x.ParentGuid, x.ChildGuid, x.ChildObjID, x.ConfigId, x.childVersion, x.ParentVersion, x.isDeleted, x.Quantity, x.Description, x.OrderIndex, x.PartNumber, x.BOMGuid, x.fld006567, x.CreatedDate, x.ModifiedDate, x.EffectiveFrom, x.EffectiveTo, x.ChildSwFileType, x.ParentSwFileType,x.ParentObjectID, x.CreatedUserID ,x.ModifiedUserID,x.ChildConfigID,x.isAddedFromSW }) - .ExecuteReturnEntityAsync(); + var addParentBom = db.CopyNew().Insertable(parentBom) + .InsertColumns(x => new { x.ParentGuid, x.ChildGuid, x.ChildObjID, x.ConfigId, x.childVersion, x.ParentVersion, x.isDeleted, x.Quantity, x.Description, x.OrderIndex, x.PartNumber, x.BOMGuid, x.fld006567, x.CreatedDate, x.ModifiedDate, x.EffectiveFrom, x.EffectiveTo, x.ChildSwFileType, x.ParentSwFileType, x.ParentObjectID, x.CreatedUserID, x.ModifiedUserID, x.ChildConfigID, x.isAddedFromSW }) + .ExecuteReturnEntity(); //当前版本BOM - var bomList = await _configurationDataRep.AsQueryable().Where(x => x.ParentGuid == recordRecordGuid && x.ParentVersion == recordVersionIndex && x.isDeleted == false && x.ConfigId == 8 && (x.fld005577 != "不包含" || x.fld005577 == null) && x.isSuppressed == false && x.inContext == false).ToListAsync(); + var bomList = await db.CopyNew().Queryable().Where(x => x.ParentGuid == recordRecordGuid && x.ParentVersion == recordVersionIndex && x.isDeleted == false && x.ConfigId == 8 && (x.fld005577 != "不包含" || x.fld005577 == null) && x.isSuppressed == false && x.inContext == false && (!(x.ParentSwFileType == 1 && x.isAddedFromSW == false))).ToListAsync(); //旧版本BOM - var historyBomList = await _configurationDataRep.AsQueryable().Where(x => x.ParentGuid == recordRecordGuid && x.ParentVersion == Convert.ToInt32(fld005686) && x.isDeleted == false && x.ConfigId == 8 && (x.fld005577 != "不包含" || x.fld005577 == null) && x.isSuppressed == false && x.inContext == false).ToListAsync(); + var historyBomList = await db.CopyNew().Queryable().Where(x => x.ParentGuid == recordRecordGuid && x.ParentVersion == Convert.ToInt32(fld005686) && x.isDeleted == false && x.ConfigId == 8 && (x.fld005577 != "不包含" || x.fld005577 == null) && x.isSuppressed == false && x.inContext == false && (!(x.ParentSwFileType == 1 && x.isAddedFromSW == false))).ToListAsync(); //遍历新BOM foreach (var bomListItem in bomList) { @@ -393,7 +406,7 @@ public class ChangeNoticeEcnService : IDynamicApiController, ITransient var versionChange = ""; if (bomListItem.childVersion != bomChange[i].childVersion) { - var contrastResult = await _dataValidationService.ComparativeVersion(bomChange[i].ChildObjID, bomListChildGuid, (int)bomListItem.childVersion,(int)bomChange[i].childVersion); + var contrastResult = await _dataValidationService.ComparativeVersion(bomChange[i].ChildObjID, bomListChildGuid, (int)bomListItem.childVersion, (int)bomChange[i].childVersion); versionChange = contrastResult; } //创建子项 @@ -423,20 +436,20 @@ public class ChangeNoticeEcnService : IDynamicApiController, ITransient CreatedUserID = 2, ModifiedUserID = 2, ChildConfigID = ChildConfigID, - isAddedFromSW=true, - fld006586= versionChange, + isAddedFromSW = true, + fld006586 = versionChange, fld006567 = "子项", fld006581 = recordData._System_objNBS, fld006565 = "修改", fld006564 = bomChange[i].QtyManual.ToString(), fld006566 = bomListQuantity.ToString() - }; + }; - var addChildBomBom = await _configurationDataRep.AsInsertable(childBom).InsertColumns(x => new{ x.ParentGuid, x.ChildGuid, x.ChildObjID, x.ConfigId, x.childVersion, x.ParentVersion, x.isDeleted, x.Quantity, x.Description, x.OrderIndex, x.PartNumber, x.BOMGuid, x.CreatedDate, x.ModifiedDate, x.EffectiveFrom, x.EffectiveTo, x.ChildSwFileType, x.ParentSwFileType, x.ParentObjectID, x.CreatedUserID, x.ModifiedUserID, x.ChildConfigID, x.fld006567, x.fld006581, x.fld006565, x.fld006564, x.fld006566,x.isAddedFromSW,x.fld006586 }).ExecuteReturnEntityAsync(); + var addChildBomBom = db.CopyNew().Insertable(childBom).InsertColumns(x => new { x.ParentGuid, x.ChildGuid, x.ChildObjID, x.ConfigId, x.childVersion, x.ParentVersion, x.isDeleted, x.Quantity, x.Description, x.OrderIndex, x.PartNumber, x.BOMGuid, x.CreatedDate, x.ModifiedDate, x.EffectiveFrom, x.EffectiveTo, x.ChildSwFileType, x.ParentSwFileType, x.ParentObjectID, x.CreatedUserID, x.ModifiedUserID, x.ChildConfigID, x.fld006567, x.fld006581, x.fld006565, x.fld006564, x.fld006566, x.isAddedFromSW, x.fld006586 }).ExecuteReturnEntity(); } - var bomChangeVersion = historyBomList.Where(x => x.ChildGuid == bomListChildGuid && x.QtyManual == bomListQuantity && x.childVersion!= bomListItem.childVersion).ToList(); + var bomChangeVersion = historyBomList.Where(x => x.ChildGuid == bomListChildGuid && x.QtyManual == bomListQuantity && x.childVersion != bomListItem.childVersion).ToList(); for (var i = 0; i < bomChangeVersion.Count; i++) { var versionChange = await _dataValidationService.ComparativeVersion(bomChangeVersion[i].ChildObjID, bomListChildGuid, (int)bomListItem.childVersion, (int)bomChangeVersion[i].childVersion); @@ -481,11 +494,11 @@ public class ChangeNoticeEcnService : IDynamicApiController, ITransient fld006566 = bomListQuantity.ToString() }; - var addChildBomBom = await _configurationDataRep.AsInsertable(childBom).InsertColumns(x => new { x.ParentGuid, x.ChildGuid, x.ChildObjID, x.ConfigId, x.childVersion, x.ParentVersion, x.isDeleted, x.Quantity, x.Description, x.OrderIndex, x.PartNumber, x.BOMGuid, x.CreatedDate, x.ModifiedDate, x.EffectiveFrom, x.EffectiveTo, x.ChildSwFileType, x.ParentSwFileType, x.ParentObjectID, x.CreatedUserID, x.ModifiedUserID, x.ChildConfigID, x.fld006567, x.fld006581, x.fld006565, x.fld006564, x.fld006566, x.isAddedFromSW ,x.fld006586 }).ExecuteReturnEntityAsync(); + var addChildBomBom = db.CopyNew().Insertable(childBom).InsertColumns(x => new { x.ParentGuid, x.ChildGuid, x.ChildObjID, x.ConfigId, x.childVersion, x.ParentVersion, x.isDeleted, x.Quantity, x.Description, x.OrderIndex, x.PartNumber, x.BOMGuid, x.CreatedDate, x.ModifiedDate, x.EffectiveFrom, x.EffectiveTo, x.ChildSwFileType, x.ParentSwFileType, x.ParentObjectID, x.CreatedUserID, x.ModifiedUserID, x.ChildConfigID, x.fld006567, x.fld006581, x.fld006565, x.fld006564, x.fld006566, x.isAddedFromSW, x.fld006586 }).ExecuteReturnEntity(); } - //BOM对比-新增 - var bomAdd = historyBomList.Where(x => x.ChildGuid == bomListChildGuid).ToList(); + //BOM对比-新增 + var bomAdd = historyBomList.Where(x => x.ChildGuid == bomListChildGuid).ToList(); if (bomAdd.Count == 0) { //创建子项 @@ -524,7 +537,7 @@ public class ChangeNoticeEcnService : IDynamicApiController, ITransient fld006566 = bomListQuantity.ToString() }; - var addChildBomBom = await _configurationDataRep.AsInsertable(childBom).InsertColumns(x => new { x.ParentGuid, x.ChildGuid, x.ChildObjID, x.ConfigId, x.childVersion, x.ParentVersion, x.isDeleted, x.Quantity, x.Description, x.OrderIndex, x.PartNumber, x.BOMGuid, x.CreatedDate, x.ModifiedDate, x.EffectiveFrom, x.EffectiveTo, x.ChildSwFileType, x.ParentSwFileType, x.ParentObjectID, x.CreatedUserID, x.ModifiedUserID, x.ChildConfigID, x.fld006567, x.fld006581, x.fld006565, x.fld006564, x.fld006566 ,x.isAddedFromSW }).ExecuteReturnEntityAsync(); + var addChildBomBom = db.CopyNew().Insertable(childBom).InsertColumns(x => new { x.ParentGuid, x.ChildGuid, x.ChildObjID, x.ConfigId, x.childVersion, x.ParentVersion, x.isDeleted, x.Quantity, x.Description, x.OrderIndex, x.PartNumber, x.BOMGuid, x.CreatedDate, x.ModifiedDate, x.EffectiveFrom, x.EffectiveTo, x.ChildSwFileType, x.ParentSwFileType, x.ParentObjectID, x.CreatedUserID, x.ModifiedUserID, x.ChildConfigID, x.fld006567, x.fld006581, x.fld006565, x.fld006564, x.fld006566, x.isAddedFromSW }).ExecuteReturnEntity(); } } @@ -555,7 +568,7 @@ public class ChangeNoticeEcnService : IDynamicApiController, ITransient ParentGuid = ecnRecordGuid, ChildGuid = historyBomChildGuid, ChildObjID = historyBomChildObjID, - ConfigId =14, + ConfigId = 14, childVersion = historyBomListItem.childVersion, ParentVersion = (int)ecnVersionIndex, isDeleted = false, @@ -576,7 +589,7 @@ public class ChangeNoticeEcnService : IDynamicApiController, ITransient CreatedUserID = 2, ModifiedUserID = 2, ChildConfigID = ChildConfigID, - isAddedFromSW=true, + isAddedFromSW = true, fld006567 = "子项", fld006581 = recordData._System_objNBS, @@ -584,32 +597,32 @@ public class ChangeNoticeEcnService : IDynamicApiController, ITransient fld006564 = historyBomQuantity.ToString(), fld006566 = "0" }; - var addChildBomBom = await _configurationDataRep.AsInsertable(childBom).InsertColumns(x => new { x.ParentGuid, x.ChildGuid, x.ChildObjID, x.ConfigId, x.childVersion, x.ParentVersion, x.isDeleted, x.Quantity, x.Description, x.OrderIndex, x.PartNumber, x.BOMGuid, x.CreatedDate, x.ModifiedDate, x.EffectiveFrom, x.EffectiveTo, x.ChildSwFileType, x.ParentSwFileType, x.ParentObjectID, x.CreatedUserID, x.ModifiedUserID, x.ChildConfigID, x.fld006567, x.fld006581, x.fld006565, x.fld006564, x.fld006566,x.isAddedFromSW }).ExecuteReturnEntityAsync(); + var addChildBomBom = db.CopyNew().Insertable(childBom).InsertColumns(x => new { x.ParentGuid, x.ChildGuid, x.ChildObjID, x.ConfigId, x.childVersion, x.ParentVersion, x.isDeleted, x.Quantity, x.Description, x.OrderIndex, x.PartNumber, x.BOMGuid, x.CreatedDate, x.ModifiedDate, x.EffectiveFrom, x.EffectiveTo, x.ChildSwFileType, x.ParentSwFileType, x.ParentObjectID, x.CreatedUserID, x.ModifiedUserID, x.ChildConfigID, x.fld006567, x.fld006581, x.fld006565, x.fld006564, x.fld006566, x.isAddedFromSW }).ExecuteReturnEntity(); } } - await _processesRequestItemsRep.AsUpdateable() - .SetColumns(it => new ProcessesRequestItems - { - fld006574 = itemComparisonResult, - fld006575 = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), - fld006573 = "N" - }) - .Where(it => it.RequestItemsId == listOfDrawingRequestItemsId) - .ExecuteCommandAsync(); + db.CopyNew().Updateable() + .SetColumns(it => new ProcessesRequestItems + { + fld006574 = itemComparisonResult, + fld006575 = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), + fld006573 = "N" + }) + .Where(it => it.RequestItemsId == listOfDrawingRequestItemsId) + .ExecuteCommand(); ecnComparisonResult = ecnComparisonResult + itemComparisonResult; } - await _obj118Rep.AsUpdateable() - .SetColumns(it => new Obj118 - { - fld006577 = ecnComparisonResult, - fld006578 = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), - fld006576 = "N" - }) + db.CopyNew().Updateable() + .SetColumns(it => new Obj118 + { + fld006577 = ecnComparisonResult, + fld006578 = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), + fld006576 = "N" + }) .Where(it => it.idRecord == ecnListItem.idRecord) - .ExecuteCommandAsync(); + .ExecuteCommand(); } return "对比完成,请到前端查看结果"; } diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Service/Log/Dto/PageTaskLogInput.cs b/admin.net.pro/Admin.NET/Vistar.Application/Service/Log/Dto/PageTaskLogInput.cs new file mode 100644 index 0000000..1e10b6c --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Service/Log/Dto/PageTaskLogInput.cs @@ -0,0 +1,28 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Admin.NET.Core; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Vistar.Application.Service.Log.Dto; +public class PageTaskLogInput : BasePageInput +{ + /// + /// 开始时间 + /// + public DateTime? StartTime { get; set; } + + /// + /// 结束时间 + /// + public DateTime? EndTime { get; set; } + + public string TaskName { get; set; } +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Service/Log/ScheduledTaskLogService.cs b/admin.net.pro/Admin.NET/Vistar.Application/Service/Log/ScheduledTaskLogService.cs new file mode 100644 index 0000000..f0af710 --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Service/Log/ScheduledTaskLogService.cs @@ -0,0 +1,63 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Admin.NET.Core; +using Furion.DependencyInjection; +using Furion.DynamicApiController; +using Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Vistar.Application.Entity; +using Vistar.Application.Service.Log.Dto; + +namespace Vistar.Application.Service.Log; + +/// +/// 定时任务日志服务 🧩 +/// +[ApiDescriptionSettings(Order = 360, Description = "定时任务日志服务")] +public class ScheduledTaskLogService : IDynamicApiController, ITransient +{ + private readonly SqlSugarRepository _scheduledTaskLogRep; + + public ScheduledTaskLogService(SqlSugarRepository scheduledTaskLogRep) + { + _scheduledTaskLogRep = scheduledTaskLogRep; + } + + /// + /// 获取操作日志分页列表 🔖 + /// + /// + [SuppressMonitor] + [DisplayName("获取操作日志分页列表")] + public async Task> Page(PageTaskLogInput input) + { + return await _scheduledTaskLogRep.AsQueryable() + .WhereIF(!string.IsNullOrWhiteSpace(input.StartTime.ToString()), u => u.LogDateTime >= input.StartTime) + .WhereIF(!string.IsNullOrWhiteSpace(input.EndTime.ToString()), u => u.LogDateTime <= input.EndTime) + .WhereIF(!string.IsNullOrWhiteSpace(input.TaskName), u => u.TaskName == input.TaskName) + .ToPagedListAsync(input.Page, input.PageSize); + } + + /// + /// 获取日志详情 🔖 + /// + /// + [SuppressMonitor] + [DisplayName("获取日志详情")] + public async Task GetDetail(long id) + { + var data= await _scheduledTaskLogRep.AsQueryable().Where(x => x.Id == id).FirstAsync(); + + return data.ReturnResult; + } + +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Service/MaterialManagement/Dto/ProductManagementInput.cs b/admin.net.pro/Admin.NET/Vistar.Application/Service/MaterialManagement/Dto/ProductManagementInput.cs index 24e4fed..4134330 100644 --- a/admin.net.pro/Admin.NET/Vistar.Application/Service/MaterialManagement/Dto/ProductManagementInput.cs +++ b/admin.net.pro/Admin.NET/Vistar.Application/Service/MaterialManagement/Dto/ProductManagementInput.cs @@ -505,7 +505,7 @@ public class ProductManagementBaseInput /// /// /// - public string? fld004876 { get; set; } + public double? fld004876 { get; set; } /// /// diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Service/MaterialManagement/ProductManagementService.cs b/admin.net.pro/Admin.NET/Vistar.Application/Service/MaterialManagement/ProductManagementService.cs index e95d745..32cf3d4 100644 --- a/admin.net.pro/Admin.NET/Vistar.Application/Service/MaterialManagement/ProductManagementService.cs +++ b/admin.net.pro/Admin.NET/Vistar.Application/Service/MaterialManagement/ProductManagementService.cs @@ -14,6 +14,8 @@ using Vistar.Application.Common; using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; using static Elastic.Clients.Elasticsearch.JoinField; using Qiniu.CDN; +using SqlSugar; +using Microsoft.Extensions.DependencyInjection; namespace Vistar.Application.Service.MaterialManagement; @@ -32,6 +34,7 @@ public class ProductManagementService : IDynamicApiController, ITransient public Common.DataValidationService _dataValidationService; public SqlSugarRepository _obj122Rep; public SqlSugarRepository _obj121Rep; + private readonly IServiceScopeFactory _scopeFactory; public ProductManagementService( SqlSugarRepository obj110Rep, @@ -42,7 +45,8 @@ public class ProductManagementService : IDynamicApiController, ITransient SqlSugarRepository obj118Rep, DataValidationService dataValidationService, SqlSugarRepository obj122Rep, - SqlSugarRepository obj121Rep + SqlSugarRepository obj121Rep, + IServiceScopeFactory scopeFactory ) { @@ -55,6 +59,7 @@ public class ProductManagementService : IDynamicApiController, ITransient _dataValidationService = dataValidationService; _obj122Rep = obj122Rep; _obj121Rep = obj121Rep; + _scopeFactory = scopeFactory; } /// /// 分页查询产品管理 @@ -136,7 +141,7 @@ public class ProductManagementService : IDynamicApiController, ITransient Zeinr = input.fld004881, Mstae = input.fld004699, Raube = input.fld004877, - Mhdrz = input.fld004876, + Mhdrz = input.fld004876.ToString(), Mhdhb = input.fld004895.ToString(), Werks = input.fld004325, Beskz = input.fld004490, @@ -344,16 +349,20 @@ public class ProductManagementService : IDynamicApiController, ITransient [DisplayName("产品管理-批量同步到SAP")] public async Task> BatchSyncToSAP(List input) { + using var serviceScope = _scopeFactory.CreateScope(); + var sysEnumService = serviceScope.ServiceProvider.GetRequiredService(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + const string lengthError = "物料描述长度大于40,请检查!"; const string synchronized = "该物料编码已同步或已停用!"; var SapOutputList = new List(); var Requser = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName); - for (int i = 0; i < input.Count; i++) + + var tasks = input.Select(async item => { - // 验证物料描述长度 - if (input[i].fld004484.Length > 40) + if (item.fld004484.Length > 40) { - await _obj110Rep.AsUpdateable() + db.CopyNew().Updateable() .SetColumns(it => new Obj110 { fld004629 = DateTime.Now, @@ -361,29 +370,29 @@ public class ProductManagementService : IDynamicApiController, ITransient fld004313 = lengthError, fld004311 = "失败" }) - .Where(it => it.idRecord == input[i].idRecord) - .ExecuteCommandAsync().ConfigureAwait(false); + .Where(it => it.idRecord == item.idRecord) + .ExecuteCommand(); - SapOutputList.Add(new SapOutput() + return new SapOutput { - materialCode = input[i]._System_objNBS, + materialCode = item._System_objNBS, code = "失败", msg = lengthError, result = lengthError - }); - continue; + }; } - if (input[i].fld004312 == "N" || input[i].fld004312 == "D" || input[i].fld004312 == null) + + if (item.fld004312 == "N" || item.fld004312 == "D" || item.fld004312 == null) { - SapOutputList.Add(new SapOutput() + return new SapOutput { - materialCode = input[i]._System_objNBS, + materialCode = item._System_objNBS, code = "失败", msg = synchronized, result = synchronized - }); - continue; + }; } + //获取时间戳精确到毫秒,sap要求每次调用生成不重复guid string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); var sapMaterialInput = new SapMaterialInput() @@ -398,27 +407,27 @@ public class ProductManagementService : IDynamicApiController, ITransient Note2 = "", Note3 = "", Zwbid = millisecondTimestamp, - Matnr = input[i]._System_objNBS, - Mbrsh = input[i].fld004323, - Mtart = input[i].fld004324, - Maktx = input[i].fld004484, - Meins = input[i].fld004861, - Matkl = input[i].fld004485, - Bismt = input[i]._System_ObjDescription, - Groes = input[i]._System_objNBS, - Normt = input[i].fld004887, - Ferth = input[i].fld004882, - Zeinr = input[i].fld004881, - Mstae = input[i].fld004699, - Raube = input[i].fld004877, - Mhdrz = input[i].fld004876, - Mhdhb = input[i].fld004895.ToString(), - Werks = input[i].fld004325, - Beskz = input[i].fld004490, - Sobsl = input[i].fld004491, - Schgt = input[i].fld004873, - Rgekz = input[i].fld004872, - Zbom = input[i].fld004698 + Matnr = item._System_objNBS, + Mbrsh = item.fld004323, + Mtart = item.fld004324, + Maktx = item.fld004484, + Meins = item.fld004861, + Matkl = item.fld004485, + Bismt = item._System_ObjDescription, + Groes = item._System_objNBS, + Normt = item.fld004887, + Ferth = item.fld004882, + Zeinr = item.fld004881, + Mstae = item.fld004699, + Raube = item.fld004877, + Mhdrz = item.fld004876.ToString(), + Mhdhb = item.fld004895.ToString(), + Werks = item.fld004325, + Beskz = item.fld004490, + Sobsl = item.fld004491, + Schgt = item.fld004873, + Rgekz = item.fld004872, + Zbom = item.fld004698 }; var sapOutput = await _sapService.SapMaterialApi(sapMaterialInput); string codeVal = sapOutput.code == "S" ? "成功" : "失败"; @@ -428,28 +437,133 @@ public class ProductManagementService : IDynamicApiController, ITransient { msg = "同步成功"; } + await _obj110Rep.AsUpdateable() - .SetColumns(it => new Obj110 - { - fld004629 = DateTime.Now, - fld004311 = codeVal, - fld004312 = "N", - fld004313 = msg - }) - .Where(it => it.idRecord == input[i].idRecord) - .ExecuteCommandAsync(); - var output = new SapOutput() + .SetColumns(it => new Obj110 + { + fld004629 = DateTime.Now, + fld004311 = codeVal, + fld004312 = "N", + fld004313 = msg + }) + .Where(it => it.idRecord == item.idRecord) + .ExecuteCommandAsync(); + return new SapOutput { parameter = sapOutput.parameter, - materialCode = input[0]._System_objNBS, + materialCode = item._System_objNBS, code = codeVal, msg = msg, result = sapOutput.result }; - SapOutputList.Add(output); - } - return SapOutputList; + }); + + var materialOutput = await Task.WhenAll(tasks); + return materialOutput.ToList(); + + //for (int i = 0; i < input.Count; i++) + //{ + // // 验证物料描述长度 + // if (input[i].fld004484.Length > 40) + // { + // await _obj110Rep.AsUpdateable() + // .SetColumns(it => new Obj110 + // { + // fld004629 = DateTime.Now, + // fld004312 = "N", + // fld004313 = lengthError, + // fld004311 = "失败" + // }) + // .Where(it => it.idRecord == input[i].idRecord) + // .ExecuteCommandAsync().ConfigureAwait(false); + + // SapOutputList.Add(new SapOutput() + // { + // materialCode = input[i]._System_objNBS, + // code = "失败", + // msg = lengthError, + // result = lengthError + // }); + // continue; + // } + // if (input[i].fld004312 == "N" || input[i].fld004312 == "D" || input[i].fld004312 == null) + // { + // SapOutputList.Add(new SapOutput() + // { + // materialCode = input[i]._System_objNBS, + // code = "失败", + // msg = synchronized, + // result = synchronized + // }); + // continue; + // } + // //获取时间戳精确到毫秒,sap要求每次调用生成不重复guid + // string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); + // var sapMaterialInput = new SapMaterialInput() + // { + // Reqkeyid = "", + // Businessid = "", + // Messageid = "", + // Sndprn = "PLM", + // Rcvprn = "SAP", + // Requser = Requser, + // Note1 = "", + // Note2 = "", + // Note3 = "", + // Zwbid = millisecondTimestamp, + // Matnr = input[i]._System_objNBS, + // Mbrsh = input[i].fld004323, + // Mtart = input[i].fld004324, + // Maktx = input[i].fld004484, + // Meins = input[i].fld004861, + // Matkl = input[i].fld004485, + // Bismt = input[i]._System_ObjDescription, + // Groes = input[i]._System_objNBS, + // Normt = input[i].fld004887, + // Ferth = input[i].fld004882, + // Zeinr = input[i].fld004881, + // Mstae = input[i].fld004699, + // Raube = input[i].fld004877, + // Mhdrz = input[i].fld004876, + // Mhdhb = input[i].fld004895.ToString(), + // Werks = input[i].fld004325, + // Beskz = input[i].fld004490, + // Sobsl = input[i].fld004491, + // Schgt = input[i].fld004873, + // Rgekz = input[i].fld004872, + // Zbom = input[i].fld004698 + // }; + // var sapOutput = await _sapService.SapMaterialApi(sapMaterialInput); + // string codeVal = sapOutput.code == "S" ? "成功" : "失败"; + // string msg = sapOutput.msg; + + // if (sapOutput.msg == "") + // { + // msg = "同步成功"; + // } + // db.CopyNew().Updateable() + // .SetColumns(it => new Obj110 + // { + // fld004629 = DateTime.Now, + // fld004311 = codeVal, + // fld004312 = "N", + // fld004313 = msg + // }) + // .Where(it => it.idRecord == input[i].idRecord) + // .ExecuteCommand(); + // var output = new SapOutput() + // { + // parameter = sapOutput.parameter, + // materialCode = input[0]._System_objNBS, + // code = codeVal, + // msg = msg, + // result = sapOutput.result + // }; + // SapOutputList.Add(output); + //} + + //return SapOutputList; } /// /// 产品管理-定时同步到SAP @@ -460,22 +574,22 @@ public class ProductManagementService : IDynamicApiController, ITransient [AllowAnonymous] public async Task> TimingSyncToSAP() { - var input = await _obj110Rep.AsQueryable() - .Where(x => (x.CheckedStatus == 0 || x.CheckedStatus == 1) - && x.fld005324 == "发布" - && x.deleted == false - && x.IsLatestVersion == true - && (x.fld004312 == "A" || x.fld004312 == "M")) - .ToListAsync(); + using var serviceScope = _scopeFactory.CreateScope(); + var sysEnumService = serviceScope.ServiceProvider.GetRequiredService(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + + var input = db.Queryable() + .Where(x => (x.CheckedStatus == 0 || x.CheckedStatus == 1) && x.fld005324 == "发布" && x.deleted == false && x.IsLatestVersion == true && (x.fld004312 == "A" || x.fld004312 == "M")) + .ToList(); const string lengthError = "物料描述长度大于40,请检查!"; var SapOutputList = new List(); var Requser = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName); - for (int i = 0; i < input.Count; i++) + + var tasks = input.Select(async item => { - // 验证物料描述长度 - if (input[i].fld004484.Length > 40) + if (item.fld004484.Length > 40) { - await _obj110Rep.AsUpdateable() + db.CopyNew().Updateable() .SetColumns(it => new Obj110 { fld004629 = DateTime.Now, @@ -483,17 +597,16 @@ public class ProductManagementService : IDynamicApiController, ITransient fld004313 = lengthError, fld004311 = "失败" }) - .Where(it => it.idRecord == input[i].idRecord) - .ExecuteCommandAsync().ConfigureAwait(false); + .Where(it => it.idRecord == item.idRecord) + .ExecuteCommand(); - SapOutputList.Add(new SapOutput() + return new SapOutput { - materialCode = input[i]._System_objNBS, + materialCode = item._System_objNBS, code = "失败", msg = lengthError, result = lengthError - }); - continue; + }; } //获取时间戳精确到毫秒,sap要求每次调用生成不重复guid @@ -510,27 +623,27 @@ public class ProductManagementService : IDynamicApiController, ITransient Note2 = "", Note3 = "", Zwbid = millisecondTimestamp, - Matnr = input[i]._System_objNBS, - Mbrsh = input[i].fld004323, - Mtart = input[i].fld004324, - Maktx = input[i].fld004484, - Meins = input[i].fld004861, - Matkl = input[i].fld004485, - Bismt = input[i]._System_ObjDescription, - Groes = input[i]._System_objNBS, - Normt = input[i].fld004887, - Ferth = input[i].fld004882, - Zeinr = input[i].fld004881, - Mstae = input[i].fld004699, - Raube = input[i].fld004877, - Mhdrz = input[i].fld004876.ToString(), - Mhdhb = input[i].fld004895.ToString(), - Werks = input[i].fld004325, - Beskz = input[i].fld004490, - Sobsl = input[i].fld004491, - Schgt = input[i].fld004873, - Rgekz = input[i].fld004872, - Zbom = input[i].fld004698 + Matnr = item._System_objNBS, + Mbrsh = item.fld004323, + Mtart = item.fld004324, + Maktx = item.fld004484, + Meins = item.fld004861, + Matkl = item.fld004485, + Bismt = item._System_ObjDescription, + Groes = item._System_objNBS, + Normt = item.fld004887, + Ferth = item.fld004882, + Zeinr = item.fld004881, + Mstae = item.fld004699, + Raube = item.fld004877, + Mhdrz = item.fld004876.ToString(), + Mhdhb = item.fld004895.ToString(), + Werks = item.fld004325, + Beskz = item.fld004490, + Sobsl = item.fld004491, + Schgt = item.fld004873, + Rgekz = item.fld004872, + Zbom = item.fld004698 }; var sapOutput = await _sapService.SapMaterialApi(sapMaterialInput); string codeVal = sapOutput.code == "S" ? "成功" : "失败"; @@ -540,28 +653,124 @@ public class ProductManagementService : IDynamicApiController, ITransient { msg = "同步成功"; } - await _obj110Rep.AsUpdateable() - .SetColumns(it => new Obj110 - { - fld004629 = DateTime.Now, - fld004311 = codeVal, - fld004312 = "N", - fld004313 = msg - }) - .Where(it => it.idRecord == input[i].idRecord) - .ExecuteCommandAsync(); - var output = new SapOutput() + + db.CopyNew().Updateable() + .SetColumns(it => new Obj110 + { + fld004629 = DateTime.Now, + fld004311 = codeVal, + fld004312 = "N", + fld004313 = msg + }) + .Where(it => it.idRecord == item.idRecord) + .ExecuteCommand(); + return new SapOutput { parameter = sapOutput.parameter, - materialCode = input[0]._System_objNBS, + materialCode = item._System_objNBS, code = codeVal, msg = msg, result = sapOutput.result }; - SapOutputList.Add(output); - } - return SapOutputList; + }); + + var materialOutput = await Task.WhenAll(tasks); + return materialOutput.ToList(); + + + //for (int i = 0; i < input.Count; i++) + //{ + // // 验证物料描述长度 + // if (input[i].fld004484.Length > 40) + // { + // await _obj110Rep.AsUpdateable() + // .SetColumns(it => new Obj110 + // { + // fld004629 = DateTime.Now, + // fld004312 = "N", + // fld004313 = lengthError, + // fld004311 = "失败" + // }) + // .Where(it => it.idRecord == input[i].idRecord) + // .ExecuteCommandAsync().ConfigureAwait(false); + + // SapOutputList.Add(new SapOutput() + // { + // materialCode = input[i]._System_objNBS, + // code = "失败", + // msg = lengthError, + // result = lengthError + // }); + // continue; + // } + + // //获取时间戳精确到毫秒,sap要求每次调用生成不重复guid + // string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); + // var sapMaterialInput = new SapMaterialInput() + // { + // Reqkeyid = "", + // Businessid = "", + // Messageid = "", + // Sndprn = "PLM", + // Rcvprn = "SAP", + // Requser = Requser, + // Note1 = "", + // Note2 = "", + // Note3 = "", + // Zwbid = millisecondTimestamp, + // Matnr = input[i]._System_objNBS, + // Mbrsh = input[i].fld004323, + // Mtart = input[i].fld004324, + // Maktx = input[i].fld004484, + // Meins = input[i].fld004861, + // Matkl = input[i].fld004485, + // Bismt = input[i]._System_ObjDescription, + // Groes = input[i]._System_objNBS, + // Normt = input[i].fld004887, + // Ferth = input[i].fld004882, + // Zeinr = input[i].fld004881, + // Mstae = input[i].fld004699, + // Raube = input[i].fld004877, + // Mhdrz = input[i].fld004876.ToString(), + // Mhdhb = input[i].fld004895.ToString(), + // Werks = input[i].fld004325, + // Beskz = input[i].fld004490, + // Sobsl = input[i].fld004491, + // Schgt = input[i].fld004873, + // Rgekz = input[i].fld004872, + // Zbom = input[i].fld004698 + // }; + // var sapOutput = await _sapService.SapMaterialApi(sapMaterialInput); + // string codeVal = sapOutput.code == "S" ? "成功" : "失败"; + // string msg = sapOutput.msg; + + // if (sapOutput.msg == "") + // { + // msg = "同步成功"; + // } + // await _obj110Rep.AsUpdateable() + // .SetColumns(it => new Obj110 + // { + // fld004629 = DateTime.Now, + // fld004311 = codeVal, + // fld004312 = "N", + // fld004313 = msg + // }) + // .Where(it => it.idRecord == input[i].idRecord) + // .ExecuteCommandAsync(); + // var output = new SapOutput() + // { + // parameter = sapOutput.parameter, + // materialCode = input[0]._System_objNBS, + // code = codeVal, + // msg = msg, + // result = sapOutput.result + // }; + // SapOutputList.Add(output); + //} + + //return SapOutputList; } /// /// 产品管理-定时同步 BOM 到 SAP @@ -575,7 +784,7 @@ public class ProductManagementService : IDynamicApiController, ITransient var sapOutputList = new List(); var sapUserName = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName); // 配置 - var configid = await _configurationsRep.AsQueryable().Where(x => x.ObjectId == 110 && x.ConfigSystemName == "mBOM").FirstAsync(); + var configid = 1; var materialData = await _obj110Rep.AsQueryable() .Where(x => (x.CheckedStatus == 0 || x.CheckedStatus == 1) && x.fld005324 == "发布" && x.deleted == false && x.IsLatestVersion == true && x.fld004311 == "成功" && x.fld004312 == "N" && (x.fld004316 == "A" || x.fld004316 == "M")) @@ -586,14 +795,13 @@ public class ProductManagementService : IDynamicApiController, ITransient foreach (var item in groupedData) { - // 获取版本号 var versionIndex = item.VersionIndex; // 获取 ECN guid var ecnGuid = item.fld004944_Rec; // 查询 BOM var bomData = await _configurationDataRep.AsQueryable() - .Where(x => x.ConfigId == configid.ConfigID && x.ParentGuid == item.RecordGuid && x.isDeleted == false && x.ParentVersion == versionIndex && (x.fld005586 != "不包含" || x.fld005586 == null)).ToListAsync(); + .Where(x => x.ConfigId == configid && x.ParentGuid == item.RecordGuid && x.isDeleted == false && x.ParentVersion == versionIndex && (x.fld005586 != "不包含" || x.fld005586 == null)).ToListAsync(); if (bomData.Count == 0) { continue; @@ -738,6 +946,144 @@ public class ProductManagementService : IDynamicApiController, ITransient } return sapOutputList; } + /// + ///产品管理同步Bom到SAP + /// + /// + /// + public async Task SyncBomToSap(SyncBomData data) + { + var sapUserName = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName); + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + var ecn = db.CopyNew().Queryable().Where(x => x.RecordGuid == data.ecnGuid).OrderByDescending(x => x.idRecord).First(); + if (ecn != null) + { + data.Ecn = ecn._System_objNBS; + } + var itemDataList = new List(); + foreach (var item in data.Bom) + { + var verification = await _dataValidationService.VerificationMaterial(item.ChildObjID, item.PartNumber, item.ChildGuid); + if (verification == "不存在") + { + continue; + } + var itemData = new ItemData + { + POSNR = (data.Bom.IndexOf(item) + 1).ToString(), + IDNRK = item.PartNumber, + MENGE = item.Quantity.ToString(), + SORTF = item.SORTF, + ITISOB = item.ITISOB, + ALPGR = item.ALPGR, + ALPRF = item.ALPRF, + ZDELETE = item.ZDELETE, + POSTP = item.POSTP, + ZYFMK = item.ZYFMK + }; + itemDataList.Add(itemData); + } + if (!string.IsNullOrEmpty(data.SyncVersion)) + { + var BomData = db.CopyNew().Queryable().Where(x => x.ConfigId == 1 && x.ParentGuid == data.RecordGuid && x.isDeleted == false && x.ParentVersion == Convert.ToInt32(data.SyncVersion) && (x.fld005586 != "不包含" || x.fld005586 == null)).ToList(); + foreach (var item in BomData) + { + var itemList = itemDataList.Where(x => x.IDNRK == item.PartNumber).ToList(); + if (itemList.Count == 0) + { + var Verification = await _dataValidationService.VerificationMaterial(item.ChildObjID, item.PartNumber, item.ChildGuid); + if (Verification == "不存在") + { + continue; + } + var itemData = new ItemData() + { + POSNR = "",//组件序号 sun.ToString() + IDNRK = item.PartNumber,//组件物料号 + MENGE = item.Quantity.ToString(),//组件数量 + SORTF = item.fld004936, + ITISOB = item.fld004937, + ALPGR = item.fld004938, + ALPRF = item.fld004939, + ZDELETE = "X", + POSTP = item.fld004492, + ZYFMK = item.fld004941 + }; + itemDataList.Add(itemData); + } + } + } + + // 获取时间戳精确到毫秒,sap 要求每次调用生成不重复 guid + string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); + var isreq = new IS_REQ + { + ReqKeyId = "", + BusinessId = "", + MessageId = "", + SndPrn = "PLM", + RcvPrn = "SAP", + ReqUser = sapUserName, + Note1 = "", + Note2 = "", + Note3 = "", + Zwbid = millisecondTimestamp, + Matnr = data.MaterialCode, + Werks = data.Werks, + Bmeng = data.Bmeng.ToString(), + Aennr = data.Ecn, + Datuv = data.Datuv.ToString(), + ItemList = itemDataList + }; + var apiOutput = await _sapService.SapBomApi(isreq); + string codeVal = apiOutput.code == "S" ? "成功" : "失败"; + + if (codeVal == "成功") + { + db.CopyNew().Updateable() + .SetColumns(it => new Obj110 + { + fld004631 = DateTime.Now, + fld004315 = codeVal, + fld004316 = "N", + fld004317 = apiOutput.msg, + fld005288 = data.VersionIndex.ToString() + }) + .Where(it => it.idRecord == data.Id) + .ExecuteCommand(); + } + else + { + db.CopyNew().Updateable() + .SetColumns(it => new Obj110 + { + fld004631 = DateTime.Now, + fld004315 = codeVal, + fld004316 = "N", + fld004317 = apiOutput.msg + }) + .Where(it => it.idRecord == data.Id) + .ExecuteCommand(); + } + + var msg = apiOutput.msg; + if (string.IsNullOrEmpty(msg)) + { + msg = "同步成功"; + } + + var output = new SapOutput + { + parameter = apiOutput.parameter, + materialCode = data.MaterialCode, + code = codeVal, + msg = msg, + result = apiOutput.result + }; + return output; + } + /// /// 产品管理-获取工艺路线 @@ -972,4 +1318,102 @@ public class ProductManagementService : IDynamicApiController, ITransient return sapOutputList; } + /// + /// 产品管理同步工艺路线到sap + /// + /// + /// + public async Task SyncProcessRouteToSap(SyncProcessRouteData data) + { + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + + var itemDataList = new List(); + foreach (var item in data.ProcessRouteList) + { + var verification = await _dataValidationService.VerificationMaterial(item.ChildObjID, item.PartNumber, item.ChildGuid); + if (verification == "不存在") + { + continue; + } + + //获取工序描述 + var procedureDescription = db.CopyNew().Queryable().Where(x => x.RecordGuid == item.ChildGuid).First(); ; + + //获取工作中心 + var workCenter = db.CopyNew().Queryable().Where(x => x.RecordGuid == procedureDescription.fld005059_Rec).First(); + + var itemData = new SapProcessRouteItemData() + { + VORNR = item.VORNR, + LTXA1 = procedureDescription._System_ObjDescription, + ARBPL = workCenter._System_objNBS, + VGW01 = item.VGW01.ToString(), + VGE01 = item.VGE01, + STEUS = item.STEUS, + BMSCH = item.BMSCH.ToString() + + }; + itemDataList.Add(itemData); + } + + var Datuv = data.Datuv.ToString(); + + if (!string.IsNullOrEmpty(Datuv)) + { + Datuv = data.Datuv.ToDateTime().ToString("yyyy-MM-dd"); + } + + //获取时间戳精确到毫秒,sap要求每次调用生成不重复guid + string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); + + var isreq = new SapProcessRouteIS_REQ() + { + ReqKeyId = "", + BusinessId = "", + MessageId = "", + SndPrn = "PLM", + RcvPrn = "SAP", + ReqUser = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName), + Note1 = "", + Note2 = "", + Note3 = "", + Zwbid = millisecondTimestamp, + Matnr = data._System_objNBS, + Werks = data.Werks, + Datuv = Datuv, + Plnal = "", + + ItemList = itemDataList + }; + + var apiOutput = await _sapService.SapProcessRouteApi(isreq); + string codeVal = apiOutput.code == "S" ? "成功" : "失败"; + + db.CopyNew().Updateable() + .SetColumns(it => new Obj110 + { + fld004632 = DateTime.Now, + fld004319 = codeVal, + fld004320 = "N", + fld004321 = apiOutput.msg + }) + .Where(it => it.idRecord == data.idRecord) + .ExecuteCommand(); + + var msg = apiOutput.msg; + if (apiOutput.msg == "") + { + msg = "同步成功"; + } + var output = new SapOutput() + { + parameter = apiOutput.parameter, + code = codeVal, + msg = msg, + result = apiOutput.result + }; + return output; + } + } diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Service/OaOpenInterface/Dto/OaCreateProcessInput.cs b/admin.net.pro/Admin.NET/Vistar.Application/Service/OaOpenInterface/Dto/OaCreateProcessInput.cs index 7c00290..83629f1 100644 --- a/admin.net.pro/Admin.NET/Vistar.Application/Service/OaOpenInterface/Dto/OaCreateProcessInput.cs +++ b/admin.net.pro/Admin.NET/Vistar.Application/Service/OaOpenInterface/Dto/OaCreateProcessInput.cs @@ -132,4 +132,9 @@ public class OaCreateProcessInput /// 软件问题处理人员 /// public string fld006062 { get; set; } + + /// + /// 上位负责人(OA工号) + /// + public string fld007040 { get; set; } } diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Service/OaOpenInterface/OaOpenInterfaceService.cs b/admin.net.pro/Admin.NET/Vistar.Application/Service/OaOpenInterface/OaOpenInterfaceService.cs index 3ecc33f..4659204 100644 --- a/admin.net.pro/Admin.NET/Vistar.Application/Service/OaOpenInterface/OaOpenInterfaceService.cs +++ b/admin.net.pro/Admin.NET/Vistar.Application/Service/OaOpenInterface/OaOpenInterfaceService.cs @@ -15,8 +15,10 @@ using Furion.DynamicApiController; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.DependencyInjection; using NewLife.Xml; using Newtonsoft.Json; +using SqlSugar; using System; using System.Collections.Generic; using System.ComponentModel; @@ -44,6 +46,7 @@ public class OaOpenInterfaceService : IDynamicApiController, ITransient public SqlSugarRepository _fieldGroupDefaultRep; public SqlSugarRepository _obj81Rep; public SqlSugarRepository _obj118Rep; + private readonly IServiceScopeFactory _scopeFactory; public OaOpenInterfaceService( SqlSugarRepository obj109Rep, @@ -52,7 +55,8 @@ public class OaOpenInterfaceService : IDynamicApiController, ITransient SolidWorksManageService.SolidWorksManageService solidWorksManageService, SqlSugarRepository objectFieldsGroupsRep, SqlSugarRepository fieldGroupDefaultRep, - SqlSugarRepository obj118Rep + SqlSugarRepository obj118Rep, + IServiceScopeFactory scopeFactory ) { @@ -63,6 +67,7 @@ public class OaOpenInterfaceService : IDynamicApiController, ITransient _fieldGroupDefaultRep = fieldGroupDefaultRep; _obj81Rep= obj81Rep; _obj118Rep= obj118Rep; + _scopeFactory = scopeFactory; } /// @@ -223,6 +228,7 @@ public class OaOpenInterfaceService : IDynamicApiController, ITransient fieldList.Add(new Field { key = "fld005852", value = input.fld005852.ToString("yyyy-MM-dd HH:mm:ss") }); fieldList.Add(new Field { key = "fld005853", value = input.fld005853 }); fieldList.Add(new Field { key = "fld005855", value = "OA" }); + fieldList.Add(new Field { key = "fld007040", value = input.fld007040 }); if (!string.IsNullOrWhiteSpace(input.fld005838)) { @@ -278,12 +284,31 @@ public class OaOpenInterfaceService : IDynamicApiController, ITransient var projectData = await _obj140Rep.AsQueryable().Where(x => x._System_objNBS == input._System_objNBS && x.deleted == false).OrderByDescending(x=>x.VersionIndex).FirstAsync(); long? fld005835 = null; string fld005835_Rec = ""; + var responsiblePersonOaData = await _obj81Rep.AsQueryable().Where(x => x.fld004900 == input.fld005836 && x.deleted == false).ToListAsync(); if (responsiblePersonOaData.Count != 0) { fld005835 = 81; fld005835_Rec = responsiblePersonOaData[0].RecordGuid; } + + + long? fld007039 = null; + string fld007039_Rec = ""; + + if (!string.IsNullOrEmpty(input.fld007040)) + { + var responsiblePersonData = await _obj81Rep.AsQueryable().Where(x => x.fld004900 == input.fld007040 && x.deleted == false).ToListAsync(); + + if (responsiblePersonData.Count != 0) + { + fld007039 = 81; + fld007039_Rec = responsiblePersonData[0].RecordGuid; + } + } + + + long? fld005848 = null; string fld005848_Rec = ""; var createPersonOaData = await _obj81Rep.AsQueryable().Where(x => x.fld004900 == input.fld005847 && x.deleted == false).ToListAsync(); @@ -343,6 +368,8 @@ public class OaOpenInterfaceService : IDynamicApiController, ITransient { fld005835 = fld005835, fld005835_Rec= fld005835_Rec, + fld007039 = fld007039, + fld007039_Rec = fld007039_Rec, fld005848 = fld005848, fld005848_Rec = fld005848_Rec, fld005851 = fld005851, @@ -439,7 +466,10 @@ public class OaOpenInterfaceService : IDynamicApiController, ITransient [AllowAnonymous] public async Task> SyncEcnAttach() { - var data=await _obj118Rep.AsQueryable().Where(x=>x.deleted==false&&x.fld006778=="A"&&x._System_CurrentStage=="结束"&&!string.IsNullOrEmpty(x.fld006310_Rec)).ToListAsync(); + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + + var data=await db.CopyNew().Queryable().Where(x=>x.deleted==false&&x.fld006778=="A"&&x._System_CurrentStage=="结束"&&!string.IsNullOrEmpty(x.fld006310_Rec)).ToListAsync(); var groupedData = data.GroupBy(item => item.RecordGuid) .Select(group => group.OrderByDescending(item => item.idRecord).First()) @@ -456,19 +486,20 @@ public class OaOpenInterfaceService : IDynamicApiController, ITransient var manageOutput= await _solidWorksManageService.ExportRelatedFiles(input); if (manageOutput.State=="成功") { - var problemReport= await _obj140Rep.AsQueryable().Where(x=>x.RecordGuid==item.fld006310_Rec&&x.deleted==false).FirstAsync(); + var problemReport= await db.CopyNew().Queryable().Where(x=>x.RecordGuid==item.fld006310_Rec&&x.deleted==false).FirstAsync(); if (problemReport != null) { var oaUploadFileOutput = await OaUploadFile(problemReport._System_objNBS, manageOutput); output.Add(oaUploadFileOutput); - await _obj118Rep.AsUpdateable().SetColumns(it => new Obj118 + db.CopyNew().Updateable() + .SetColumns(it => new Obj118 { fld006778="N", fld006780=DateTime.Now, fld006779= oaUploadFileOutput.message }) .Where(it => it.idRecord == id) - .ExecuteCommandAsync(); + .ExecuteCommand(); } } } @@ -483,7 +514,8 @@ public class OaOpenInterfaceService : IDynamicApiController, ITransient /// public async Task OaUploadFile(string problemNum, ExportRelatedFilesOutput input) { - string url = "http://223.113.253.60:8000/papi/secondev/workflow/uploadFileByReportNo"; + //string url = "http://223.113.253.60:8000/papi/secondev/workflow/uploadFileByReportNo"; + string url = "http://192.168.10.35:8000/papi/secondev/workflow/uploadFileByReportNo"; // 构建请求参数字典 var requestData = new { diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Service/ProductDesignLibrary/Dto/ProductDesignLibraryInput.cs b/admin.net.pro/Admin.NET/Vistar.Application/Service/ProductDesignLibrary/Dto/ProductDesignLibraryInput.cs index 3b5a1a4..1a45b3f 100644 --- a/admin.net.pro/Admin.NET/Vistar.Application/Service/ProductDesignLibrary/Dto/ProductDesignLibraryInput.cs +++ b/admin.net.pro/Admin.NET/Vistar.Application/Service/ProductDesignLibrary/Dto/ProductDesignLibraryInput.cs @@ -27,190 +27,190 @@ public class ProductDesignLibraryInput public bool? IsLatestVersion { get; set; } - public DateTime? CreatedDate { get; set; } + //public DateTime? CreatedDate { get; set; } - public DateTime? VersionCreatedDate { get; set; } + //public DateTime? VersionCreatedDate { get; set; } - public DateTime? dateModified { get; set; } + //public DateTime? dateModified { get; set; } - public long? UserCreatedId { get; set; } + //public long? UserCreatedId { get; set; } - public long? VersionUserCreatedId { get; set; } + //public long? VersionUserCreatedId { get; set; } - public long? UserModifiedId { get; set; } + //public long? UserModifiedId { get; set; } public string? RecordGuid { get; set; } - public bool? isVisibilityNormal { get; set; } + //public bool? isVisibilityNormal { get; set; } public bool? deleted { get; set; } - public string? SubObjectGuid { get; set; } + //public string? SubObjectGuid { get; set; } - public bool? PreviousStatus { get; set; } + //public bool? PreviousStatus { get; set; } public string? revision { get; set; } - public byte[]? Record_image160_160 { get; set; } + //public byte[]? Record_image160_160 { get; set; } - public byte[]? Record_Image320_240 { get; set; } + //public byte[]? Record_Image320_240 { get; set; } - public byte[]? Record_ImageMax { get; set; } + //public byte[]? Record_ImageMax { get; set; } public string? _System_objNBS { get; set; } public string? _System_ObjDescription { get; set; } - public DateTime? _System_Effectivity_Begin { get; set; } + //public DateTime? _System_Effectivity_Begin { get; set; } - public DateTime? _System_Effectivity_End { get; set; } + //public DateTime? _System_Effectivity_End { get; set; } - public string? CheckedOutPc { get; set; } + //public string? CheckedOutPc { get; set; } - public long? StageId { get; set; } + //public long? StageId { get; set; } - public long? ProjectManager { get; set; } + //public long? ProjectManager { get; set; } - public long? ProjectManager_Rec { get; set; } + //public long? ProjectManager_Rec { get; set; } - public bool? EnableNotifications { get; set; } + //public bool? EnableNotifications { get; set; } - public long? GroupObjId { get; set; } + //public long? GroupObjId { get; set; } - public bool? _CheckOutInProgress { get; set; } + //public bool? _CheckOutInProgress { get; set; } - public string? ParentRecordGuid { get; set; } + //public string? ParentRecordGuid { get; set; } - public string? MaterialType { get; set; } + //public string? MaterialType { get; set; } - public bool? _System_NeedSWRebuild { get; set; } + //public bool? _System_NeedSWRebuild { get; set; } - public string? _system_objConfigurationName { get; set; } + //public string? _system_objConfigurationName { get; set; } - public bool? _system_objConfigurationType { get; set; } + //public bool? _system_objConfigurationType { get; set; } - public string? _system_objConfigurationGuid { get; set; } + //public string? _system_objConfigurationGuid { get; set; } - public string ShowBomFromConfiguration { get; set; } + //public string ShowBomFromConfiguration { get; set; } - public string _System_ObjNbsAuto { get; set; } + //public string _System_ObjNbsAuto { get; set; } - public long? PreviousIdRecord { get; set; } + //public long? PreviousIdRecord { get; set; } - public string? _System_DerivedFrom { get; set; } + //public string? _System_DerivedFrom { get; set; } - public bool? _system_objLinkedCompare { get; set; } + //public bool? _system_objLinkedCompare { get; set; } - public string? _System_WebLink { get; set; } + //public string? _System_WebLink { get; set; } - public bool? isReleasedVersion { get; set; } + //public bool? isReleasedVersion { get; set; } - public string? _System_DerivedFrom_RecordGuid { get; set; } + //public string? _System_DerivedFrom_RecordGuid { get; set; } - public long? SWPDMDocumentId { get; set; } + //public long? SWPDMDocumentId { get; set; } - public long? SWPDMConfigurationID { get; set; } + //public long? SWPDMConfigurationID { get; set; } - public string? SWPDMConfigurationName { get; set; } + //public string? SWPDMConfigurationName { get; set; } - public long? SWPDMActiveConfigurationId { get; set; } + //public long? SWPDMActiveConfigurationId { get; set; } - public string? SWPDMActiveConfigurationName { get; set; } + //public string? SWPDMActiveConfigurationName { get; set; } - public string? SWPDMFileName { get; set; } + //public string? SWPDMFileName { get; set; } - public long? SWPDMConfigPersistID { get; set; } + //public long? SWPDMConfigPersistID { get; set; } - public int? SWPDMStatusId { get; set; } + //public int? SWPDMStatusId { get; set; } - public string? SWPDMStatusName { get; set; } + //public string? SWPDMStatusName { get; set; } - public bool? _SWPDM_1179__SW_Detailing_Mode_ { get; set; } + //public bool? _SWPDM_1179__SW_Detailing_Mode_ { get; set; } - public string? _SWPDM_2__SW_Last_Saved_With_ { get; set; } + //public string? _SWPDM_2__SW_Last_Saved_With_ { get; set; } - public string? _SWPDM_111_A___ { get; set; } + //public string? _SWPDM_111_A___ { get; set; } - public string? _SWPDM_1172_BOM_BOM__ { get; set; } + //public string? _SWPDM_1172_BOM_BOM__ { get; set; } - public string? _SWPDM_112_BOM___2 { get; set; } + //public string? _SWPDM_112_BOM___2 { get; set; } - public string? _SWPDM_113_BOM___ { get; set; } + //public string? _SWPDM_113_BOM___ { get; set; } - public string? _SWPDM_115_BOM___ { get; set; } + //public string? _SWPDM_115_BOM___ { get; set; } - public string? _SWPDM_116_BOM___ { get; set; } + //public string? _SWPDM_116_BOM___ { get; set; } - public string? _SWPDM_117_BOM_____ { get; set; } + //public string? _SWPDM_117_BOM_____ { get; set; } - public string? _SWPDM_51_BOM_____ { get; set; } + //public string? _SWPDM_51_BOM_____ { get; set; } - public string? _SWPDM_118_BOM_____ { get; set; } + //public string? _SWPDM_118_BOM_____ { get; set; } - public string? _SWPDM_119_BOM___ { get; set; } + //public string? _SWPDM_119_BOM___ { get; set; } - public string? _SWPDM_114_BOM_____ { get; set; } + //public string? _SWPDM_114_BOM_____ { get; set; } - public string? _SWPDM_120_BOM______ { get; set; } + //public string? _SWPDM_120_BOM______ { get; set; } - public string? _SWPDM_121_BOM___ { get; set; } + //public string? _SWPDM_121_BOM___ { get; set; } - public string? _SWPDM_122_BOW___1 { get; set; } + //public string? _SWPDM_122_BOW___1 { get; set; } - public string? _SWPDM_123_BOW___ { get; set; } + //public string? _SWPDM_123_BOW___ { get; set; } - public string? _SWPDM_84_DWG___ { get; set; } + //public string? _SWPDM_84_DWG___ { get; set; } - public string? _SWPDM_82_DWG___ { get; set; } + //public string? _SWPDM_82_DWG___ { get; set; } - public string? _SWPDM_80_DWG_____ { get; set; } + //public string? _SWPDM_80_DWG_____ { get; set; } - public string? _SWPDM_76_DWG___ { get; set; } + //public string? _SWPDM_76_DWG___ { get; set; } - public string? _SWPDM_77_DWG___ { get; set; } + //public string? _SWPDM_77_DWG___ { get; set; } - public string? _SWPDM_78_DWG___ { get; set; } + //public string? _SWPDM_78_DWG___ { get; set; } - public string? _SWPDM_79_DWG___ { get; set; } + //public string? _SWPDM_79_DWG___ { get; set; } - public string? _SWPDM_83_DWG___ { get; set; } + //public string? _SWPDM_83_DWG___ { get; set; } - public string? _SWPDM_81_DWG___ { get; set; } + //public string? _SWPDM_81_DWG___ { get; set; } - public string? _SWPDM_92_FB___ { get; set; } + //public string? _SWPDM_92_FB___ { get; set; } - public string? _SWPDM_86_FB_____ { get; set; } + //public string? _SWPDM_86_FB_____ { get; set; } - public string? _SWPDM_87_FB_____ { get; set; } + //public string? _SWPDM_87_FB_____ { get; set; } - public string? _SWPDM_88_FB_____ { get; set; } + //public string? _SWPDM_88_FB_____ { get; set; } - public string? _SWPDM_89_FB_____ { get; set; } + //public string? _SWPDM_89_FB_____ { get; set; } - public string? _SWPDM_90_FB______ { get; set; } + //public string? _SWPDM_90_FB______ { get; set; } - public string? _SWPDM_85_FB____ { get; set; } + //public string? _SWPDM_85_FB____ { get; set; } - public string? _SWPDM_91_FB_____ { get; set; } - public string? _SWPDM_94_PDF___ { get; set; } + //public string? _SWPDM_91_FB_____ { get; set; } + //public string? _SWPDM_94_PDF___ { get; set; } - public string? _SWPDM_101_PDF___ { get; set; } + //public string? _SWPDM_101_PDF___ { get; set; } - public string? _SWPDM_95_PDF_____ { get; set; } + //public string? _SWPDM_95_PDF_____ { get; set; } - public string? _SWPDM_96_PDF___ { get; set; } + //public string? _SWPDM_96_PDF___ { get; set; } - public string? _SWPDM_97_PDF___ { get; set; } + //public string? _SWPDM_97_PDF___ { get; set; } - public string? _SWPDM_98_PDF___ { get; set; } + //public string? _SWPDM_98_PDF___ { get; set; } - public string? _SWPDM_93_PDF___ { get; set; } + //public string? _SWPDM_93_PDF___ { get; set; } - public string? _SWPDM_99_PDF___ { get; set; } + //public string? _SWPDM_99_PDF___ { get; set; } - public string? _SWPDM_100_PDF___ { get; set; } + //public string? _SWPDM_100_PDF___ { get; set; } - public string? _SWPDM_1194_q { get; set; } + //public string? _SWPDM_1194_q { get; set; } public string? _SWPDM_1196_SAP_____ { get; set; } @@ -218,28 +218,28 @@ public class ProductDesignLibraryInput public string? _SWPDM_1187_SAP___ { get; set; } - public double? _SWPDM_1190_SAP___ { get; set; } + //public double? _SWPDM_1190_SAP___ { get; set; } - public string? _SWPDM_1191_SAP___ { get; set; } + //public string? _SWPDM_1191_SAP___ { get; set; } public string? _SWPDM_1188_SAP___ { get; set; } public string? _SWPDM_1197_SAP_____ { get; set; } - public string? _SWPDM_1210_SAP_____ { get; set; } + //public string? _SWPDM_1210_SAP_____ { get; set; } - public string? _SWPDM_1189_SAP___ID_____ { get; set; } + //public string? _SWPDM_1189_SAP___ID_____ { get; set; } - public string? _SWPDM_1200_SAP_____ { get; set; } + //public string? _SWPDM_1200_SAP_____ { get; set; } public string? _SWPDM_1208_SAP___BOM___ { get; set; } - public string? _SWPDM_1201_SAP_____ { get; set; } + // public string? _SWPDM_1201_SAP_____ { get; set; } public string? _SWPDM_1198_SAP_____ { get; set; } - public string? _SWPDM_1193_SAP___ { get; set; } + //public string? _SWPDM_1193_SAP___ { get; set; } - public string? _SWPDM_1195_SAP_____ { get; set; } + //public string? _SWPDM_1195_SAP_____ { get; set; } public string? _SWPDM_1186_SAP_____ { get; set; } @@ -249,27 +249,27 @@ public class ProductDesignLibraryInput public string? _SWPDM_1185_SAP___ { get; set; } - public string? _SWPDM_1192_SAP_____ { get; set; } + //public string? _SWPDM_1192_SAP_____ { get; set; } - public string? _SWPDM_1184_SIP_____ { get; set; } + //public string? _SWPDM_1184_SIP_____ { get; set; } - public string? _SWPDM_1183_SIP_____ { get; set; } + //public string? _SWPDM_1183_SIP_____ { get; set; } - public string? _SWPDM_1182_SOP_____ { get; set; } + //public string? _SWPDM_1182_SOP_____ { get; set; } - public string? _SWPDM_1181_SOP_____ { get; set; } + //public string? _SWPDM_1181_SOP_____ { get; set; } - public string? _SWPDM_46_SW___ { get; set; } + //public string? _SWPDM_46_SW___ { get; set; } - public string? _SWPDM_60_SW___ { get; set; } + //public string? _SWPDM_60_SW___ { get; set; } - public string? _SWPDM_124_SW___ { get; set; } + //public string? _SWPDM_124_SW___ { get; set; } - public string? _SWPDM_102_SW___ { get; set; } + //public string? _SWPDM_102_SW___ { get; set; } - public string? _SWPDM_56_SW____ { get; set; } + //public string? _SWPDM_56_SW____ { get; set; } - public string? _SWPDM_57_SW______ { get; set; } + //public string? _SWPDM_57_SW______ { get; set; } public string? _SWPDM_61_SW_____ { get; set; } @@ -279,181 +279,181 @@ public class ProductDesignLibraryInput public string? _SWPDM_126_SW___ { get; set; } - public string? _SWPDM_127_SW_____ { get; set; } + //public string? _SWPDM_127_SW_____ { get; set; } - public string? _SWPDM_1205_SW_______ { get; set; } + //public string? _SWPDM_1205_SW_______ { get; set; } - public string? _SWPDM_47_SW___ { get; set; } + //public string? _SWPDM_47_SW___ { get; set; } - public string? _SWPDM_48_SW_____ { get; set; } + //public string? _SWPDM_48_SW_____ { get; set; } - public string? _SWPDM_54_SW___ { get; set; } + //public string? _SWPDM_54_SW___ { get; set; } - public string? _SWPDM_55_SW_____ { get; set; } + //public string? _SWPDM_55_SW_____ { get; set; } - public string? _SWPDM_66_SW___ { get; set; } + //public string? _SWPDM_66_SW___ { get; set; } - public string? _SWPDM_154_SW_____ { get; set; } + //public string? _SWPDM_154_SW_____ { get; set; } - public string? _SWPDM_63_SW___ { get; set; } + //public string? _SWPDM_63_SW___ { get; set; } public string? _SWPDM_64_SW___ { get; set; } public string? _SWPDM_65_SW___ { get; set; } - public string? _SWPDM_128_SW_____ { get; set; } + //public string? _SWPDM_128_SW_____ { get; set; } - public string? _SWPDM_1206_SW_______ { get; set; } + //public string? _SWPDM_1206_SW_______ { get; set; } - public string? _SWPDM_52_SW___ { get; set; } + //public string? _SWPDM_52_SW___ { get; set; } - public string? _SWPDM_53_SW_____ { get; set; } + //public string? _SWPDM_53_SW_____ { get; set; } - public string? _SWPDM_58_SW___ { get; set; } + //public string? _SWPDM_58_SW___ { get; set; } - public string? _SWPDM_59_SW_____ { get; set; } + //public string? _SWPDM_59_SW_____ { get; set; } - public string? _SWPDM_1178_SW_____ { get; set; } + //public string? _SWPDM_1178_SW_____ { get; set; } - public string? _SWPDM_1202_SW_____ { get; set; } + //public string? _SWPDM_1202_SW_____ { get; set; } - public string? _SWPDM_49_SW___ { get; set; } + //public string? _SWPDM_49_SW___ { get; set; } - public string? _SWPDM_129_SW_____ { get; set; } + //public string? _SWPDM_129_SW_____ { get; set; } - public string? _SWPDM_1207_SW_______ { get; set; } + //public string? _SWPDM_1207_SW_______ { get; set; } - public string? _SWPDM_130_SW___ { get; set; } + //public string? _SWPDM_130_SW___ { get; set; } - public string? _SWPDM_50_SW_____ { get; set; } + //public string? _SWPDM_50_SW_____ { get; set; } - public string? _SWPDM_131_SW_____ { get; set; } + //public string? _SWPDM_131_SW_____ { get; set; } - public string? _SWPDM_155_SW_____ { get; set; } + //public string? _SWPDM_155_SW_____ { get; set; } - public string? _SWPDM_1175_SW_____ { get; set; } + //public string? _SWPDM_1175_SW_____ { get; set; } - public string? _SWPDM_1177_SW_____ { get; set; } + //public string? _SWPDM_1177_SW_____ { get; set; } - public string? _SWPDM_1170_SW___ { get; set; } + //public string? _SWPDM_1170_SW___ { get; set; } - public string? _SWPDM_1171_SW_____ { get; set; } + //public string? _SWPDM_1171_SW_____ { get; set; } - public string? _SWPDM_1173_SW____ { get; set; } + //public string? _SWPDM_1173_SW____ { get; set; } - public string? _SWPDM_132_SW_____ { get; set; } + //public string? _SWPDM_132_SW_____ { get; set; } - public string? _SWPDM_1204_SW_______ { get; set; } + //public string? _SWPDM_1204_SW_______ { get; set; } - public string? _SWPDM_133_SW____ { get; set; } + //public string? _SWPDM_133_SW____ { get; set; } - public string? _SWPDM_67_SW___ { get; set; } + //public string? _SWPDM_67_SW___ { get; set; } - public string? _SWPDM_1174_SW___ { get; set; } + //public string? _SWPDM_1174_SW___ { get; set; } - public string? _SWPDM_1168_TEMP_____ { get; set; } + //public string? _SWPDM_1168_TEMP_____ { get; set; } - public string? _SWPDM_1167_TEMP_____ { get; set; } + //public string? _SWPDM_1167_TEMP_____ { get; set; } - public string? _SWPDM_1166_TEMP_____ { get; set; } + //public string? _SWPDM_1166_TEMP_____ { get; set; } - public string? _SWPDM_1165_TEMP____ { get; set; } + //public string? _SWPDM_1165_TEMP____ { get; set; } - public string? _SWPDM_1164_TEMP_______ { get; set; } + //public string? _SWPDM_1164_TEMP_______ { get; set; } - public string? _SWPDM_1163_TEMP_______ { get; set; } + //public string? _SWPDM_1163_TEMP_______ { get; set; } - public string? _SWPDM_1162_TEMP_____ { get; set; } + //public string? _SWPDM_1162_TEMP_____ { get; set; } - public string? _SWPDM_1161_TEMP_____ { get; set; } + //public string? _SWPDM_1161_TEMP_____ { get; set; } - public string? _SWPDM_1160_TEMP_______ { get; set; } + //public string? _SWPDM_1160_TEMP_______ { get; set; } - public string? _SWPDM_1159_TEMP_______ { get; set; } + //public string? _SWPDM_1159_TEMP_______ { get; set; } - public string? _SWPDM_1176_TEMP_____ { get; set; } + //public string? _SWPDM_1176_TEMP_____ { get; set; } - public string? _SWPDM_1158_TEMP____ { get; set; } + //public string? _SWPDM_1158_TEMP____ { get; set; } - public string? _SWPDM_134_TY___ { get; set; } + //public string? _SWPDM_134_TY___ { get; set; } - public string? _SWPDM_135_TY______ { get; set; } + //public string? _SWPDM_135_TY______ { get; set; } - public string? _SWPDM_136_TY_____ { get; set; } + //public string? _SWPDM_136_TY_____ { get; set; } - public string? _SWPDM_137_TY_____ { get; set; } + //public string? _SWPDM_137_TY_____ { get; set; } - public string? _SWPDM_138_TY_____ { get; set; } + //public string? _SWPDM_138_TY_____ { get; set; } - public string? _SWPDM_139_WD_____ { get; set; } + //public string? _SWPDM_139_WD_____ { get; set; } - public string? _SWPDM_140_WD____ { get; set; } + //public string? _SWPDM_140_WD____ { get; set; } - public string? _SWPDM_141_WD___ { get; set; } + //public string? _SWPDM_141_WD___ { get; set; } - public string? _SWPDM_142_WJJ_____ { get; set; } + //public string? _SWPDM_142_WJJ_____ { get; set; } - public string? _SWPDM_143_WJJ____ { get; set; } + //public string? _SWPDM_143_WJJ____ { get; set; } - public string? _SWPDM_144_WJJ___ { get; set; } + //public string? _SWPDM_144_WJJ___ { get; set; } - public string? _SWPDM_68_XM___ { get; set; } + //public string? _SWPDM_68_XM___ { get; set; } - public string? _SWPDM_69_XM_____ { get; set; } + //public string? _SWPDM_69_XM_____ { get; set; } - public string? _SWPDM_70_XM_____ { get; set; } + //public string? _SWPDM_70_XM_____ { get; set; } - public string? _SWPDM_1169_XM_____ { get; set; } + //public string? _SWPDM_1169_XM_____ { get; set; } - public string? _SWPDM_145_XM_____ { get; set; } + //public string? _SWPDM_145_XM_____ { get; set; } - public string? _SWPDM_146_XM_____ { get; set; } + //public string? _SWPDM_146_XM_____ { get; set; } - public string? _SWPDM_73_XM_____ { get; set; } + //public string? _SWPDM_73_XM_____ { get; set; } - public string? _SWPDM_74_XM_____ { get; set; } + //public string? _SWPDM_74_XM_____ { get; set; } - public string? _SWPDM_71_XM______ { get; set; } + //public string? _SWPDM_71_XM______ { get; set; } - public string? _SWPDM_72_XM____ { get; set; } + //public string? _SWPDM_72_XM____ { get; set; } - public string? _SWPDM_75_XM_____ { get; set; } + //public string? _SWPDM_75_XM_____ { get; set; } - public string? _SWPDM_1155_XM_________ { get; set; } + //public string? _SWPDM_1155_XM_________ { get; set; } - public string? _SWPDM_103___ { get; set; } + //public string? _SWPDM_103___ { get; set; } - public string? _SWPDM_104___ { get; set; } + //public string? _SWPDM_104___ { get; set; } - public string? _SWPDM_147_____ { get; set; } + //public string? _SWPDM_147_____ { get; set; } - public string? _SWPDM_1211_____ { get; set; } + //public string? _SWPDM_1211_____ { get; set; } - public string? _SWPDM_1212_______ { get; set; } + //public string? _SWPDM_1212_______ { get; set; } - public string? _SWPDM_107___ { get; set; } + //public string? _SWPDM_107___ { get; set; } - public string? _SWPDM_148_____ { get; set; } + //public string? _SWPDM_148_____ { get; set; } - public string? _SWPDM_108______ { get; set; } + //public string? _SWPDM_108______ { get; set; } - public string? _SWPDM_149_______ { get; set; } + //public string? _SWPDM_149_______ { get; set; } - public string? _SWPDM_110_______ { get; set; } + //public string? _SWPDM_110_______ { get; set; } - public string? _SWPDM_150________ { get; set; } + //public string? _SWPDM_150________ { get; set; } - public string? _SWPDM_151________ { get; set; } + //public string? _SWPDM_151________ { get; set; } - public string? _SWPDM_152________ { get; set; } + //public string? _SWPDM_152________ { get; set; } - public string? _SWPDM_109______ { get; set; } + //public string? _SWPDM_109______ { get; set; } - public string? _SWPDM_105___ { get; set; } + //public string? _SWPDM_105___ { get; set; } - public string? _SWPDM_106_____ { get; set; } + //public string? _SWPDM_106_____ { get; set; } - public string? _SWPDM_153_____ { get; set; } + //public string? _SWPDM_153_____ { get; set; } public string? fld005529 { get; set; } diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Service/ProductDesignLibrary/Dto/ProductDesignLibraryOutput.cs b/admin.net.pro/Admin.NET/Vistar.Application/Service/ProductDesignLibrary/Dto/ProductDesignLibraryOutput.cs index 1ecfb56..1ae2ea1 100644 --- a/admin.net.pro/Admin.NET/Vistar.Application/Service/ProductDesignLibrary/Dto/ProductDesignLibraryOutput.cs +++ b/admin.net.pro/Admin.NET/Vistar.Application/Service/ProductDesignLibrary/Dto/ProductDesignLibraryOutput.cs @@ -24,186 +24,190 @@ public class ProductDesignLibraryOutput public bool? IsLatestVersion { get; set; } - public DateTime? CreatedDate { get; set; } + //public DateTime? CreatedDate { get; set; } - public DateTime? VersionCreatedDate { get; set; } + //public DateTime? VersionCreatedDate { get; set; } - public DateTime? dateModified { get; set; } + //public DateTime? dateModified { get; set; } - public long? UserCreatedId { get; set; } + //public long? UserCreatedId { get; set; } - public long? VersionUserCreatedId { get; set; } + //public long? VersionUserCreatedId { get; set; } - public long? UserModifiedId { get; set; } + //public long? UserModifiedId { get; set; } public string? RecordGuid { get; set; } - public bool? isVisibilityNormal { get; set; } + //public bool? isVisibilityNormal { get; set; } public bool? deleted { get; set; } - public string? SubObjectGuid { get; set; } + //public string? SubObjectGuid { get; set; } - public bool? PreviousStatus { get; set; } + //public bool? PreviousStatus { get; set; } public string? revision { get; set; } - public byte[]? Record_image160_160 { get; set; } + //public byte[]? Record_image160_160 { get; set; } - public byte[]? Record_Image320_240 { get; set; } + //public byte[]? Record_Image320_240 { get; set; } - public byte[]? Record_ImageMax { get; set; } + //public byte[]? Record_ImageMax { get; set; } public string? _System_objNBS { get; set; } public string? _System_ObjDescription { get; set; } - public DateTime? _System_Effectivity_Begin { get; set; } + //public DateTime? _System_Effectivity_Begin { get; set; } - public DateTime? _System_Effectivity_End { get; set; } + //public DateTime? _System_Effectivity_End { get; set; } - public string? CheckedOutPc { get; set; } + //public string? CheckedOutPc { get; set; } - public long? StageId { get; set; } + //public long? StageId { get; set; } - public long? ProjectManager { get; set; } + //public long? ProjectManager { get; set; } - public long? ProjectManager_Rec { get; set; } + //public long? ProjectManager_Rec { get; set; } - public bool? EnableNotifications { get; set; } + //public bool? EnableNotifications { get; set; } - public long? GroupObjId { get; set; } + //public long? GroupObjId { get; set; } - public bool? _CheckOutInProgress { get; set; } + //public bool? _CheckOutInProgress { get; set; } - public string? ParentRecordGuid { get; set; } + //public string? ParentRecordGuid { get; set; } - public string? MaterialType { get; set; } + //public string? MaterialType { get; set; } - public bool? _System_NeedSWRebuild { get; set; } + //public bool? _System_NeedSWRebuild { get; set; } - public string? _system_objConfigurationName { get; set; } + //public string? _system_objConfigurationName { get; set; } - public bool? _system_objConfigurationType { get; set; } + //public bool? _system_objConfigurationType { get; set; } - public string? _system_objConfigurationGuid { get; set; } + //public string? _system_objConfigurationGuid { get; set; } - public string ShowBomFromConfiguration { get; set; } + //public string ShowBomFromConfiguration { get; set; } - public string _System_ObjNbsAuto { get; set; } + //public string _System_ObjNbsAuto { get; set; } - public long? PreviousIdRecord { get; set; } + //public long? PreviousIdRecord { get; set; } - public string? _System_DerivedFrom { get; set; } + //public string? _System_DerivedFrom { get; set; } - public bool? _system_objLinkedCompare { get; set; } + //public bool? _system_objLinkedCompare { get; set; } - public string? _System_WebLink { get; set; } + //public string? _System_WebLink { get; set; } - public bool? isReleasedVersion { get; set; } + //public bool? isReleasedVersion { get; set; } - public string? _System_DerivedFrom_RecordGuid { get; set; } + //public string? _System_DerivedFrom_RecordGuid { get; set; } - public long? SWPDMDocumentId { get; set; } + //public long? SWPDMDocumentId { get; set; } - public long? SWPDMConfigurationID { get; set; } + //public long? SWPDMConfigurationID { get; set; } - public string? SWPDMConfigurationName { get; set; } + //public string? SWPDMConfigurationName { get; set; } - public long? SWPDMActiveConfigurationId { get; set; } + //public long? SWPDMActiveConfigurationId { get; set; } - public string? SWPDMActiveConfigurationName { get; set; } + //public string? SWPDMActiveConfigurationName { get; set; } - public string? SWPDMFileName { get; set; } + //public string? SWPDMFileName { get; set; } - public long? SWPDMConfigPersistID { get; set; } + //public long? SWPDMConfigPersistID { get; set; } - public int? SWPDMStatusId { get; set; } + //public int? SWPDMStatusId { get; set; } - public string? SWPDMStatusName { get; set; } + //public string? SWPDMStatusName { get; set; } - public bool? _SWPDM_1179__SW_Detailing_Mode_ { get; set; } + //public bool? _SWPDM_1179__SW_Detailing_Mode_ { get; set; } - public string? _SWPDM_2__SW_Last_Saved_With_ { get; set; } + //public string? _SWPDM_2__SW_Last_Saved_With_ { get; set; } - public string? _SWPDM_111_A___ { get; set; } + //public string? _SWPDM_111_A___ { get; set; } - public string? _SWPDM_1172_BOM_BOM__ { get; set; } + //public string? _SWPDM_1172_BOM_BOM__ { get; set; } - public string? _SWPDM_112_BOM___2 { get; set; } + //public string? _SWPDM_112_BOM___2 { get; set; } - public string? _SWPDM_113_BOM___ { get; set; } + //public string? _SWPDM_113_BOM___ { get; set; } - public string? _SWPDM_115_BOM___ { get; set; } + //public string? _SWPDM_115_BOM___ { get; set; } - public string? _SWPDM_116_BOM___ { get; set; } + //public string? _SWPDM_116_BOM___ { get; set; } - public string? _SWPDM_117_BOM_____ { get; set; } + //public string? _SWPDM_117_BOM_____ { get; set; } - public string? _SWPDM_51_BOM_____ { get; set; } + //public string? _SWPDM_51_BOM_____ { get; set; } - public string? _SWPDM_118_BOM_____ { get; set; } + //public string? _SWPDM_118_BOM_____ { get; set; } - public string? _SWPDM_119_BOM___ { get; set; } + //public string? _SWPDM_119_BOM___ { get; set; } - public string? _SWPDM_114_BOM_____ { get; set; } + //public string? _SWPDM_114_BOM_____ { get; set; } - public string? _SWPDM_120_BOM______ { get; set; } + //public string? _SWPDM_120_BOM______ { get; set; } - public string? _SWPDM_121_BOM___ { get; set; } + //public string? _SWPDM_121_BOM___ { get; set; } - public string? _SWPDM_122_BOW___1 { get; set; } + //public string? _SWPDM_122_BOW___1 { get; set; } - public string? _SWPDM_123_BOW___ { get; set; } + //public string? _SWPDM_123_BOW___ { get; set; } - public string? _SWPDM_84_DWG___ { get; set; } + //public string? _SWPDM_84_DWG___ { get; set; } - public string? _SWPDM_82_DWG___ { get; set; } + //public string? _SWPDM_82_DWG___ { get; set; } - public string? _SWPDM_80_DWG_____ { get; set; } + //public string? _SWPDM_80_DWG_____ { get; set; } - public string? _SWPDM_76_DWG___ { get; set; } + //public string? _SWPDM_76_DWG___ { get; set; } - public string? _SWPDM_77_DWG___ { get; set; } + //public string? _SWPDM_77_DWG___ { get; set; } - public string? _SWPDM_78_DWG___ { get; set; } + //public string? _SWPDM_78_DWG___ { get; set; } - public string? _SWPDM_79_DWG___ { get; set; } + //public string? _SWPDM_79_DWG___ { get; set; } - public string? _SWPDM_83_DWG___ { get; set; } + //public string? _SWPDM_83_DWG___ { get; set; } - public string? _SWPDM_81_DWG___ { get; set; } + //public string? _SWPDM_81_DWG___ { get; set; } - public string? _SWPDM_92_FB___ { get; set; } + //public string? _SWPDM_92_FB___ { get; set; } - public string? _SWPDM_86_FB_____ { get; set; } + //public string? _SWPDM_86_FB_____ { get; set; } - public string? _SWPDM_87_FB_____ { get; set; } + //public string? _SWPDM_87_FB_____ { get; set; } - public string? _SWPDM_88_FB_____ { get; set; } + //public string? _SWPDM_88_FB_____ { get; set; } - public string? _SWPDM_89_FB_____ { get; set; } + //public string? _SWPDM_89_FB_____ { get; set; } - public string? _SWPDM_90_FB______ { get; set; } + //public string? _SWPDM_90_FB______ { get; set; } - public string? _SWPDM_85_FB____ { get; set; } + //public string? _SWPDM_85_FB____ { get; set; } - public string? _SWPDM_91_FB_____ { get; set; } - public string? _SWPDM_94_PDF___ { get; set; } + //public string? _SWPDM_91_FB_____ { get; set; } + //public string? _SWPDM_94_PDF___ { get; set; } + //public string? _SWPDM_101_PDF___ { get; set; } - public string? _SWPDM_95_PDF_____ { get; set; } + //public string? _SWPDM_95_PDF_____ { get; set; } - public string? _SWPDM_96_PDF___ { get; set; } + //public string? _SWPDM_96_PDF___ { get; set; } + //public string? _SWPDM_97_PDF___ { get; set; } + //public string? _SWPDM_98_PDF___ { get; set; } - public string? _SWPDM_93_PDF___ { get; set; } + //public string? _SWPDM_93_PDF___ { get; set; } - public string? _SWPDM_99_PDF___ { get; set; } + //public string? _SWPDM_99_PDF___ { get; set; } + //public string? _SWPDM_100_PDF___ { get; set; } - public string? _SWPDM_1194_q { get; set; } + //public string? _SWPDM_1194_q { get; set; } public string? _SWPDM_1196_SAP_____ { get; set; } @@ -211,28 +215,28 @@ public class ProductDesignLibraryOutput public string? _SWPDM_1187_SAP___ { get; set; } - public double? _SWPDM_1190_SAP___ { get; set; } + //public double? _SWPDM_1190_SAP___ { get; set; } - public string? _SWPDM_1191_SAP___ { get; set; } + //public string? _SWPDM_1191_SAP___ { get; set; } public string? _SWPDM_1188_SAP___ { get; set; } public string? _SWPDM_1197_SAP_____ { get; set; } - public string? _SWPDM_1210_SAP_____ { get; set; } + //public string? _SWPDM_1210_SAP_____ { get; set; } - public string? _SWPDM_1189_SAP___ID_____ { get; set; } + //public string? _SWPDM_1189_SAP___ID_____ { get; set; } - public string? _SWPDM_1200_SAP_____ { get; set; } + //public string? _SWPDM_1200_SAP_____ { get; set; } public string? _SWPDM_1208_SAP___BOM___ { get; set; } - public string? _SWPDM_1201_SAP_____ { get; set; } + // public string? _SWPDM_1201_SAP_____ { get; set; } public string? _SWPDM_1198_SAP_____ { get; set; } - public string? _SWPDM_1193_SAP___ { get; set; } + //public string? _SWPDM_1193_SAP___ { get; set; } - public string? _SWPDM_1195_SAP_____ { get; set; } + //public string? _SWPDM_1195_SAP_____ { get; set; } public string? _SWPDM_1186_SAP_____ { get; set; } @@ -242,23 +246,27 @@ public class ProductDesignLibraryOutput public string? _SWPDM_1185_SAP___ { get; set; } - public string? _SWPDM_1192_SAP_____ { get; set; } + //public string? _SWPDM_1192_SAP_____ { get; set; } - public string? _SWPDM_1184_SIP_____ { get; set; } + //public string? _SWPDM_1184_SIP_____ { get; set; } - public string? _SWPDM_1183_SIP_____ { get; set; } + //public string? _SWPDM_1183_SIP_____ { get; set; } - public string? _SWPDM_1182_SOP_____ { get; set; } + //public string? _SWPDM_1182_SOP_____ { get; set; } - public string? _SWPDM_1181_SOP_____ { get; set; } + //public string? _SWPDM_1181_SOP_____ { get; set; } - public string? _SWPDM_46_SW___ { get; set; } + //public string? _SWPDM_46_SW___ { get; set; } - public string? _SWPDM_60_SW___ { get; set; } + //public string? _SWPDM_60_SW___ { get; set; } - public string? _SWPDM_56_SW____ { get; set; } + //public string? _SWPDM_124_SW___ { get; set; } - public string? _SWPDM_57_SW______ { get; set; } + //public string? _SWPDM_102_SW___ { get; set; } + + //public string? _SWPDM_56_SW____ { get; set; } + + //public string? _SWPDM_57_SW______ { get; set; } public string? _SWPDM_61_SW_____ { get; set; } @@ -268,180 +276,181 @@ public class ProductDesignLibraryOutput public string? _SWPDM_126_SW___ { get; set; } - public string? _SWPDM_127_SW_____ { get; set; } + //public string? _SWPDM_127_SW_____ { get; set; } - public string? _SWPDM_1205_SW_______ { get; set; } + //public string? _SWPDM_1205_SW_______ { get; set; } - public string? _SWPDM_47_SW___ { get; set; } + //public string? _SWPDM_47_SW___ { get; set; } - public string? _SWPDM_48_SW_____ { get; set; } + //public string? _SWPDM_48_SW_____ { get; set; } - public string? _SWPDM_54_SW___ { get; set; } + //public string? _SWPDM_54_SW___ { get; set; } - public string? _SWPDM_55_SW_____ { get; set; } + //public string? _SWPDM_55_SW_____ { get; set; } - public string? _SWPDM_66_SW___ { get; set; } + //public string? _SWPDM_66_SW___ { get; set; } - public string? _SWPDM_154_SW_____ { get; set; } + //public string? _SWPDM_154_SW_____ { get; set; } - public string? _SWPDM_63_SW___ { get; set; } + //public string? _SWPDM_63_SW___ { get; set; } public string? _SWPDM_64_SW___ { get; set; } public string? _SWPDM_65_SW___ { get; set; } - public string? _SWPDM_128_SW_____ { get; set; } + //public string? _SWPDM_128_SW_____ { get; set; } - public string? _SWPDM_1206_SW_______ { get; set; } + //public string? _SWPDM_1206_SW_______ { get; set; } - public string? _SWPDM_52_SW___ { get; set; } + //public string? _SWPDM_52_SW___ { get; set; } - public string? _SWPDM_53_SW_____ { get; set; } + //public string? _SWPDM_53_SW_____ { get; set; } - public string? _SWPDM_58_SW___ { get; set; } + //public string? _SWPDM_58_SW___ { get; set; } - public string? _SWPDM_59_SW_____ { get; set; } + //public string? _SWPDM_59_SW_____ { get; set; } - public string? _SWPDM_1178_SW_____ { get; set; } + //public string? _SWPDM_1178_SW_____ { get; set; } - public string? _SWPDM_1202_SW_____ { get; set; } + //public string? _SWPDM_1202_SW_____ { get; set; } + //public string? _SWPDM_49_SW___ { get; set; } - public string? _SWPDM_129_SW_____ { get; set; } + //public string? _SWPDM_129_SW_____ { get; set; } - public string? _SWPDM_1207_SW_______ { get; set; } + //public string? _SWPDM_1207_SW_______ { get; set; } - public string? _SWPDM_130_SW___ { get; set; } + //public string? _SWPDM_130_SW___ { get; set; } - public string? _SWPDM_50_SW_____ { get; set; } + //public string? _SWPDM_50_SW_____ { get; set; } - public string? _SWPDM_131_SW_____ { get; set; } + //public string? _SWPDM_131_SW_____ { get; set; } - public string? _SWPDM_155_SW_____ { get; set; } + //public string? _SWPDM_155_SW_____ { get; set; } - public string? _SWPDM_1175_SW_____ { get; set; } + //public string? _SWPDM_1175_SW_____ { get; set; } - public string? _SWPDM_1177_SW_____ { get; set; } + //public string? _SWPDM_1177_SW_____ { get; set; } - public string? _SWPDM_1170_SW___ { get; set; } + //public string? _SWPDM_1170_SW___ { get; set; } - public string? _SWPDM_1171_SW_____ { get; set; } + //public string? _SWPDM_1171_SW_____ { get; set; } - public string? _SWPDM_1173_SW____ { get; set; } + //public string? _SWPDM_1173_SW____ { get; set; } - public string? _SWPDM_132_SW_____ { get; set; } + //public string? _SWPDM_132_SW_____ { get; set; } - public string? _SWPDM_1204_SW_______ { get; set; } + //public string? _SWPDM_1204_SW_______ { get; set; } - public string? _SWPDM_133_SW____ { get; set; } + //public string? _SWPDM_133_SW____ { get; set; } - public string? _SWPDM_67_SW___ { get; set; } + //public string? _SWPDM_67_SW___ { get; set; } - public string? _SWPDM_1174_SW___ { get; set; } + //public string? _SWPDM_1174_SW___ { get; set; } - public string? _SWPDM_1168_TEMP_____ { get; set; } + //public string? _SWPDM_1168_TEMP_____ { get; set; } - public string? _SWPDM_1167_TEMP_____ { get; set; } + //public string? _SWPDM_1167_TEMP_____ { get; set; } - public string? _SWPDM_1166_TEMP_____ { get; set; } + //public string? _SWPDM_1166_TEMP_____ { get; set; } - public string? _SWPDM_1165_TEMP____ { get; set; } + //public string? _SWPDM_1165_TEMP____ { get; set; } - public string? _SWPDM_1164_TEMP_______ { get; set; } + //public string? _SWPDM_1164_TEMP_______ { get; set; } - public string? _SWPDM_1163_TEMP_______ { get; set; } + //public string? _SWPDM_1163_TEMP_______ { get; set; } - public string? _SWPDM_1162_TEMP_____ { get; set; } + //public string? _SWPDM_1162_TEMP_____ { get; set; } - public string? _SWPDM_1161_TEMP_____ { get; set; } + //public string? _SWPDM_1161_TEMP_____ { get; set; } - public string? _SWPDM_1160_TEMP_______ { get; set; } + //public string? _SWPDM_1160_TEMP_______ { get; set; } - public string? _SWPDM_1159_TEMP_______ { get; set; } + //public string? _SWPDM_1159_TEMP_______ { get; set; } - public string? _SWPDM_1176_TEMP_____ { get; set; } + //public string? _SWPDM_1176_TEMP_____ { get; set; } - public string? _SWPDM_1158_TEMP____ { get; set; } + //public string? _SWPDM_1158_TEMP____ { get; set; } - public string? _SWPDM_134_TY___ { get; set; } + //public string? _SWPDM_134_TY___ { get; set; } - public string? _SWPDM_135_TY______ { get; set; } + //public string? _SWPDM_135_TY______ { get; set; } - public string? _SWPDM_136_TY_____ { get; set; } + //public string? _SWPDM_136_TY_____ { get; set; } - public string? _SWPDM_137_TY_____ { get; set; } + //public string? _SWPDM_137_TY_____ { get; set; } - public string? _SWPDM_138_TY_____ { get; set; } + //public string? _SWPDM_138_TY_____ { get; set; } - public string? _SWPDM_139_WD_____ { get; set; } + //public string? _SWPDM_139_WD_____ { get; set; } - public string? _SWPDM_140_WD____ { get; set; } + //public string? _SWPDM_140_WD____ { get; set; } - public string? _SWPDM_141_WD___ { get; set; } + //public string? _SWPDM_141_WD___ { get; set; } - public string? _SWPDM_142_WJJ_____ { get; set; } + //public string? _SWPDM_142_WJJ_____ { get; set; } - public string? _SWPDM_143_WJJ____ { get; set; } + //public string? _SWPDM_143_WJJ____ { get; set; } - public string? _SWPDM_144_WJJ___ { get; set; } + //public string? _SWPDM_144_WJJ___ { get; set; } - public string? _SWPDM_68_XM___ { get; set; } + //public string? _SWPDM_68_XM___ { get; set; } - public string? _SWPDM_69_XM_____ { get; set; } + //public string? _SWPDM_69_XM_____ { get; set; } - public string? _SWPDM_70_XM_____ { get; set; } + //public string? _SWPDM_70_XM_____ { get; set; } - public string? _SWPDM_1169_XM_____ { get; set; } + //public string? _SWPDM_1169_XM_____ { get; set; } - public string? _SWPDM_145_XM_____ { get; set; } + //public string? _SWPDM_145_XM_____ { get; set; } - public string? _SWPDM_146_XM_____ { get; set; } + //public string? _SWPDM_146_XM_____ { get; set; } - public string? _SWPDM_73_XM_____ { get; set; } + //public string? _SWPDM_73_XM_____ { get; set; } - public string? _SWPDM_74_XM_____ { get; set; } + //public string? _SWPDM_74_XM_____ { get; set; } - public string? _SWPDM_71_XM______ { get; set; } + //public string? _SWPDM_71_XM______ { get; set; } - public string? _SWPDM_72_XM____ { get; set; } + //public string? _SWPDM_72_XM____ { get; set; } - public string? _SWPDM_75_XM_____ { get; set; } + //public string? _SWPDM_75_XM_____ { get; set; } - public string? _SWPDM_1155_XM_________ { get; set; } + //public string? _SWPDM_1155_XM_________ { get; set; } - public string? _SWPDM_103___ { get; set; } + //public string? _SWPDM_103___ { get; set; } - public string? _SWPDM_104___ { get; set; } + //public string? _SWPDM_104___ { get; set; } - public string? _SWPDM_147_____ { get; set; } + //public string? _SWPDM_147_____ { get; set; } - public string? _SWPDM_1211_____ { get; set; } + //public string? _SWPDM_1211_____ { get; set; } - public string? _SWPDM_1212_______ { get; set; } + //public string? _SWPDM_1212_______ { get; set; } - public string? _SWPDM_107___ { get; set; } + //public string? _SWPDM_107___ { get; set; } - public string? _SWPDM_148_____ { get; set; } + //public string? _SWPDM_148_____ { get; set; } - public string? _SWPDM_108______ { get; set; } + //public string? _SWPDM_108______ { get; set; } - public string? _SWPDM_149_______ { get; set; } + //public string? _SWPDM_149_______ { get; set; } - public string? _SWPDM_110_______ { get; set; } + //public string? _SWPDM_110_______ { get; set; } - public string? _SWPDM_150________ { get; set; } + //public string? _SWPDM_150________ { get; set; } - public string? _SWPDM_151________ { get; set; } + //public string? _SWPDM_151________ { get; set; } - public string? _SWPDM_152________ { get; set; } + //public string? _SWPDM_152________ { get; set; } - public string? _SWPDM_109______ { get; set; } + //public string? _SWPDM_109______ { get; set; } - public string? _SWPDM_105___ { get; set; } + //public string? _SWPDM_105___ { get; set; } - public string? _SWPDM_106_____ { get; set; } + //public string? _SWPDM_106_____ { get; set; } - public string? _SWPDM_153_____ { get; set; } + //public string? _SWPDM_153_____ { get; set; } public string? fld005529 { get; set; } @@ -466,6 +475,7 @@ public class ProductDesignLibraryOutput public DateTime? fld005539 { get; set; } public DateTime? fld005540 { get; set; } + public int? fld005678 { get; set; } public int? fld005679 { get; set; } public string? fld005679_Rec { get; set; } diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Service/ProductDesignLibrary/ProductDesignLibraryService.cs b/admin.net.pro/Admin.NET/Vistar.Application/Service/ProductDesignLibrary/ProductDesignLibraryService.cs index 1e3a929..1734838 100644 --- a/admin.net.pro/Admin.NET/Vistar.Application/Service/ProductDesignLibrary/ProductDesignLibraryService.cs +++ b/admin.net.pro/Admin.NET/Vistar.Application/Service/ProductDesignLibrary/ProductDesignLibraryService.cs @@ -12,6 +12,8 @@ using Furion.DynamicApiController; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.DependencyInjection; +using Qiniu.CDN; using SqlSugar; using System; using System.Collections.Generic; @@ -26,6 +28,7 @@ using Vistar.Application.SapService.Dto; using Vistar.Application.Service.ProductDesignLibrary.Dto; using Vistar.Application.SolidWorksManageService.Dto; using Vistar.Application.Util; +using static SKIT.FlurlHttpClient.Wechat.Api.Models.CgibinAccountGetAccountBasicInfoResponse.Types; namespace Vistar.Application.Service.ProductDesignLibrary; /// @@ -45,6 +48,7 @@ public class ProductDesignLibraryService : IDynamicApiController, ITransient public SqlSugarRepository _obj112Rep; public SqlSugarRepository _obj121Rep; public SolidWorksManageService.SolidWorksManageService _solidWorksManageService; + private readonly IServiceScopeFactory _scopeFactory; public ProductDesignLibraryService( SqlSugarRepository obj137Rep, @@ -57,7 +61,8 @@ public class ProductDesignLibraryService : IDynamicApiController, ITransient SqlSugarRepository obj122Rep, SqlSugarRepository obj112Rep, SqlSugarRepository obj121Rep, - SolidWorksManageService.SolidWorksManageService solidWorksManageService + SolidWorksManageService.SolidWorksManageService solidWorksManageService, + IServiceScopeFactory scopeFactory ) { _obj137Rep = obj137Rep; @@ -71,6 +76,7 @@ public class ProductDesignLibraryService : IDynamicApiController, ITransient _obj112Rep = obj112Rep; _obj121Rep = obj121Rep; _solidWorksManageService = solidWorksManageService; + _scopeFactory = scopeFactory; } /// @@ -87,6 +93,7 @@ public class ProductDesignLibraryService : IDynamicApiController, ITransient .WhereIF(!string.IsNullOrWhiteSpace(input._System_objNBS), u => u._System_objNBS.Contains(input._System_objNBS.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input._SWPDM_1188_SAP___), u => u._SWPDM_1188_SAP___.Contains(input._SWPDM_1188_SAP___.Trim())) .Select() + .OrderByDescending(it => it.idRecord) .ToPagedListAsync(input.Page, input.PageSize); return query; } @@ -202,7 +209,7 @@ public class ProductDesignLibraryService : IDynamicApiController, ITransient .Where(x => x.RecordGuid == input.ParentGuid && x.deleted == false && x._system_objConfigurationName == "默认" && !x.SWPDMFileName.Contains("SLDDRW")) .MaxAsync(x => x.VersionIndex); var BomData = await _configurationDataRep.AsQueryable() - .Where(x => x.ConfigId == configid.ConfigID && x.ParentGuid == input.ParentGuid && x.isDeleted == false && x.ParentVersion == parent && (x.fld005577 != "不包含" || x.fld005577 == null) && x.isSuppressed == false && x.inContext == false) + .Where(x => x.ConfigId == configid.ConfigID && x.ParentGuid == input.ParentGuid && x.isDeleted == false && x.ParentVersion == parent && (x.fld005577 != "不包含" || x.fld005577 == null) && x.isSuppressed == false && x.inContext == false && (!(x.ParentSwFileType == 1 && x.isAddedFromSW == false))) .WhereIF(!string.IsNullOrWhiteSpace(input.Description), u => u.Description.Contains(input.Description.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.PartNumber), u => u.PartNumber.Contains(input.PartNumber.Trim())) .Select().ToPagedListAsync(input.Page, input.PageSize); @@ -218,139 +225,179 @@ public class ProductDesignLibraryService : IDynamicApiController, ITransient public async Task SyncToSAPBom(List input) { var ParentData = await _obj137Rep.AsQueryable().Where(x => x.RecordGuid == input[0].ParentGuid && x.deleted == false && x.VersionIndex == input[0].ParentVersion && (x._SWPDM_1202_SW_____ != "不展开" || x._SWPDM_1202_SW_____ == null) && x.fld005530 == "N" && x.fld005529 == "成功" && (x.fld005534 == "A" || x.fld005534 == "M") && x._system_objConfigurationName == "默认" && !x.SWPDMFileName.Contains("SLDDRW")).FirstAsync(); - var EcnData = await _obj118Rep.AsQueryable().Where(x => x.RecordGuid == ParentData.fld005679_Rec && x.deleted == false).OrderByDescending(x => x.VersionIndex).FirstAsync(); - var ecn = ""; - if (EcnData != null) - { - ecn = EcnData._System_objNBS; - } + //var EcnData = await _obj118Rep.AsQueryable().Where(x => x.RecordGuid == ParentData.fld005679_Rec && x.deleted == false).OrderByDescending(x => x.VersionIndex).FirstAsync(); + //var ecn = ""; + //if (EcnData != null) + //{ + // ecn = EcnData._System_objNBS; + //} - var itemDataList = new List(); - - for (int i = 0; i < input.Count; i++) + //var itemDataList = new List(); + var BomDataList = new List(); + foreach (var item in input) { - var Verification = await _dataValidationService.VerificationMaterial(input[i].ChildObjID, input[i].PartNumber, input[i].ChildGuid); - if (Verification == "不存在") + var bomData = new BomData { - continue; - } - //int sun = i + 1; - var itemData = new ItemData() - { - POSNR = "",//组件序号 sun.ToString() - IDNRK = input[i].PartNumber,//组件物料号 - MENGE = Math.Round((decimal)input[i].QtyManual, 3).ToString(),//组件数量 - SORTF = input[i].fld005541, - ITISOB = input[i].fld005542, - ALPGR = input[i].fld005543, - ALPRF = input[i].fld005544, - ZDELETE = input[i].fld005545, - POSTP = input[i].fld005546, - ZYFMK = input[i].fld005547 + PartNumber = item.PartNumber, + ParentGuid = item.ParentGuid, + ChildGuid = item.ChildGuid, + ChildObjID = item.ChildObjID, + ConfigId = item.ConfigId, + childVersion = item.childVersion, + ParentVersion = ParentData.VersionIndex, + QtyManual = item.QtyManual, + SORTF = item.fld005541, + ITISOB = item.fld005542, + ALPGR = item.fld005543, + ALPRF = item.fld005544, + ZDELETE = item.fld004940, + POSTP = item.fld005546, + ZYFMK = item.fld005547 }; - itemDataList.Add(itemData); + BomDataList.Add(bomData); } - if (!string.IsNullOrEmpty(ParentData.fld005686)) + var syncBomData = new SyncBomData { - var configid = await _configurationsRep.AsQueryable().Where(x => x.ObjectId == 137 && x.ConfigSystemName == "SolidWorks").FirstAsync(); - var BomData = await _configurationDataRep.AsQueryable().Where(x => x.ConfigId == configid.ConfigID && x.ParentGuid == input[0].ParentGuid && x.isDeleted == false && x.ParentVersion == Convert.ToInt32(ParentData.fld005686) && (x.fld005577 != "不包含" || x.fld005577 == null) && x.isSuppressed == false && x.inContext == false).ToListAsync(); - for (int i = 0; i < BomData.Count; i++) - { - - var itemList = itemDataList.Where(x => x.IDNRK == BomData[i].PartNumber).ToList(); - if (itemList.Count == 0) - { - var Verification = await _dataValidationService.VerificationMaterial(BomData[i].ChildObjID, BomData[i].PartNumber, BomData[i].ChildGuid); - if (Verification == "不存在") - { - continue; - } - //int sun = i + 1; - var itemData = new ItemData() - { - POSNR = "",//组件序号 sun.ToString() - IDNRK = BomData[i].PartNumber,//组件物料号 - MENGE = Math.Round((decimal)BomData[i].QtyManual, 3).ToString(),//组件数量 - SORTF = BomData[i].fld005541, - ITISOB = BomData[i].fld005542, - ALPGR = BomData[i].fld005543, - ALPRF = BomData[i].fld005544, - ZDELETE = "X", - POSTP = BomData[i].fld005546, - ZYFMK = BomData[i].fld005547 - }; - itemDataList.Add(itemData); - } - - } - } - - //获取时间戳精确到毫秒,sap要求每次调用生成不重复guid - string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); - var fld005678 = ParentData.fld005678 ?? 1; - var isreq = new IS_REQ() - { - ReqKeyId = "", - BusinessId = "", - MessageId = "", - SndPrn = "PLM", - RcvPrn = "SAP", - ReqUser = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName), - Note1 = "", - Note2 = "", - Note3 = "", - Zwbid = millisecondTimestamp, - Matnr = ParentData._System_objNBS,//父物料编码 - Werks = ParentData._SWPDM_1187_SAP___,//工厂 - Bmeng = fld005678.ToString(), - Aennr = ecn, - Datuv = ParentData.fld005680.ToString(), - ItemList = itemDataList - }; - var apiOutput = await _sapService.SapBomApi(isreq); - string codeVal = apiOutput.code == "S" ? "成功" : "失败"; - if (codeVal == "成功") - { - await _obj137Rep.AsUpdateable() - .SetColumns(it => new Obj137 - { - fld005539 = DateTime.Now, - fld005533 = codeVal, - fld005534 = "N", - fld005535 = apiOutput.msg, - fld005686 = input[0].ParentVersion.ToString() - }) - .Where(it => it.idRecord == ParentData.idRecord) - .ExecuteCommandAsync(); - } - else - { - await _obj137Rep.AsUpdateable() - .SetColumns(it => new Obj137 - { - fld005539 = DateTime.Now, - fld005533 = codeVal, - fld005534 = "N", - fld005535 = apiOutput.msg - }) - .Where(it => it.idRecord == ParentData.idRecord) - .ExecuteCommandAsync(); - } - - var msg = apiOutput.msg; - if (apiOutput.msg == "") - { - msg = "同步成功"; - } - var output = new SapOutput() - { - parameter = apiOutput.parameter, - code = codeVal, - msg = msg, - result = apiOutput.result + Id = ParentData.idRecord, + MaterialCode = ParentData._System_objNBS, + RecordGuid = ParentData.RecordGuid, + SyncVersion = ParentData.fld005686, + Bmeng = ParentData.fld005678, + Werks = ParentData._SWPDM_1187_SAP___, + Datuv = ParentData.fld005680, + VersionIndex = ParentData.VersionIndex, + //Ecn = group.FirstOrDefault()?.ecn, + ecnGuid = ParentData.fld005679_Rec, + Bom = BomDataList }; + var output = await SyncBomToSap(syncBomData); return output; + + //for (int i = 0; i < input.Count; i++) + //{ + // var Verification = await _dataValidationService.VerificationMaterial(input[i].ChildObjID, input[i].PartNumber, input[i].ChildGuid); + // if (Verification == "不存在") + // { + // continue; + // } + // //int sun = i + 1; + // var itemData = new ItemData() + // { + // POSNR = "",//组件序号 sun.ToString() + // IDNRK = input[i].PartNumber,//组件物料号 + // MENGE = Math.Round((decimal)input[i].QtyManual, 3).ToString(),//组件数量 + // SORTF = input[i].fld005541, + // ITISOB = input[i].fld005542, + // ALPGR = input[i].fld005543, + // ALPRF = input[i].fld005544, + // ZDELETE = input[i].fld005545, + // POSTP = input[i].fld005546, + // ZYFMK = input[i].fld005547 + // }; + // itemDataList.Add(itemData); + //} + + //if (!string.IsNullOrEmpty(ParentData.fld005686)) + //{ + // var configid = await _configurationsRep.AsQueryable().Where(x => x.ObjectId == 137 && x.ConfigSystemName == "SolidWorks").FirstAsync(); + // var BomData = await _configurationDataRep.AsQueryable().Where(x => x.ConfigId == configid.ConfigID && x.ParentGuid == input[0].ParentGuid && x.isDeleted == false && x.ParentVersion == Convert.ToInt32(ParentData.fld005686) && (x.fld005577 != "不包含" || x.fld005577 == null) && x.isSuppressed == false && x.inContext == false).ToListAsync(); + // for (int i = 0; i < BomData.Count; i++) + // { + + // var itemList = itemDataList.Where(x => x.IDNRK == BomData[i].PartNumber).ToList(); + // if (itemList.Count == 0) + // { + // var Verification = await _dataValidationService.VerificationMaterial(BomData[i].ChildObjID, BomData[i].PartNumber, BomData[i].ChildGuid); + // if (Verification == "不存在") + // { + // continue; + // } + // //int sun = i + 1; + // var itemData = new ItemData() + // { + // POSNR = "",//组件序号 sun.ToString() + // IDNRK = BomData[i].PartNumber,//组件物料号 + // MENGE = Math.Round((decimal)BomData[i].QtyManual, 3).ToString(),//组件数量 + // SORTF = BomData[i].fld005541, + // ITISOB = BomData[i].fld005542, + // ALPGR = BomData[i].fld005543, + // ALPRF = BomData[i].fld005544, + // ZDELETE = "X", + // POSTP = BomData[i].fld005546, + // ZYFMK = BomData[i].fld005547 + // }; + // itemDataList.Add(itemData); + // } + + // } + //} + + ////获取时间戳精确到毫秒,sap要求每次调用生成不重复guid + //string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); + //var fld005678 = ParentData.fld005678 ?? 1; + //var isreq = new IS_REQ() + //{ + // ReqKeyId = "", + // BusinessId = "", + // MessageId = "", + // SndPrn = "PLM", + // RcvPrn = "SAP", + // ReqUser = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName), + // Note1 = "", + // Note2 = "", + // Note3 = "", + // Zwbid = millisecondTimestamp, + // Matnr = ParentData._System_objNBS,//父物料编码 + // Werks = ParentData._SWPDM_1187_SAP___,//工厂 + // Bmeng = fld005678.ToString(), + // Aennr = ecn, + // Datuv = ParentData.fld005680.ToString(), + // ItemList = itemDataList + //}; + //var apiOutput = await _sapService.SapBomApi(isreq); + //string codeVal = apiOutput.code == "S" ? "成功" : "失败"; + //if (codeVal == "成功") + //{ + // await _obj137Rep.AsUpdateable() + // .SetColumns(it => new Obj137 + // { + // fld005539 = DateTime.Now, + // fld005533 = codeVal, + // fld005534 = "N", + // fld005535 = apiOutput.msg, + // fld005686 = input[0].ParentVersion.ToString() + // }) + // .Where(it => it.idRecord == ParentData.idRecord) + // .ExecuteCommandAsync(); + //} + //else + //{ + // await _obj137Rep.AsUpdateable() + // .SetColumns(it => new Obj137 + // { + // fld005539 = DateTime.Now, + // fld005533 = codeVal, + // fld005534 = "N", + // fld005535 = apiOutput.msg + // }) + // .Where(it => it.idRecord == ParentData.idRecord) + // .ExecuteCommandAsync(); + //} + + //var msg = apiOutput.msg; + //if (apiOutput.msg == "") + //{ + // msg = "同步成功"; + //} + //var output = new SapOutput() + //{ + // parameter = apiOutput.parameter, + // code = codeVal, + // msg = msg, + // result = apiOutput.result + //}; + //return output; } /// /// 产品设计库-批量同步到SAP @@ -361,16 +408,20 @@ public class ProductDesignLibraryService : IDynamicApiController, ITransient [DisplayName("产品设计库-批量同步到SAP")] public async Task> BatchSyncToSAP(List input) { + using var serviceScope = _scopeFactory.CreateScope(); + var sysEnumService = serviceScope.ServiceProvider.GetRequiredService(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + const string lengthError = "物料描述长度大于40,请检查!"; const string synchronized = "该物料编码已同步或已停用!"; var SapOutputList = new List(); var Requser = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName); - for (int i = 0; i < input.Count; i++) + + var tasks = input.Select(async item => { - // 验证物料描述长度 - if (input[i]._SWPDM_1188_SAP___.Length > 40) + if (item._SWPDM_1188_SAP___.Length > 40) { - await _obj137Rep.AsUpdateable() + db.CopyNew().Updateable() .SetColumns(it => new Obj137 { fld005532 = DateTime.Now, @@ -378,28 +429,27 @@ public class ProductDesignLibraryService : IDynamicApiController, ITransient fld005531 = lengthError, fld005529 = "失败" }) - .Where(it => it.idRecord == input[i].idRecord) - .ExecuteCommandAsync().ConfigureAwait(false); + .Where(it => it.idRecord == item.idRecord) + .ExecuteCommand(); - SapOutputList.Add(new SapOutput() + return new SapOutput { - materialCode = input[i]._System_objNBS, + materialCode = item._System_objNBS, code = "失败", msg = lengthError, result = lengthError - }); - continue; + }; } - if (input[i].fld005530 == "N" || input[i].fld005530 == "D" || input[i].fld005530 == null) + + if (item.fld005530 == "N" || item.fld005530 == "D" || item.fld005530 == null) { - SapOutputList.Add(new SapOutput() + return new SapOutput { - materialCode = input[i]._System_objNBS, + materialCode = item._System_objNBS, code = "失败", msg = synchronized, result = synchronized - }); - continue; + }; } //获取时间戳精确到毫秒,sap要求每次调用生成不重复guid string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); @@ -415,27 +465,27 @@ public class ProductDesignLibraryService : IDynamicApiController, ITransient Note2 = "", Note3 = "", Zwbid = millisecondTimestamp, - Matnr = input[i]._System_objNBS, - Mbrsh = input[i]._SWPDM_1185_SAP___, - Mtart = input[i]._SWPDM_1186_SAP_____, - Maktx = input[i]._SWPDM_1188_SAP___, - Meins = input[i]._SWPDM_126_SW___, - Matkl = input[i]._SWPDM_1203_SAP____, - Bismt = input[i]._SWPDM_64_SW___, - Groes = input[i]._SWPDM_125_SW___, - Normt = input[i]._SWPDM_65_SW___, - Ferth = input[i]._SWPDM_62_SW___, - Zeinr = input[i]._SWPDM_61_SW_____, - Mstae = input[i]._SWPDM_1209_SAP_____, + Matnr = item._System_objNBS, + Mbrsh = item._SWPDM_1185_SAP___, + Mtart = item._SWPDM_1186_SAP_____, + Maktx = item._SWPDM_1188_SAP___, + Meins = item._SWPDM_126_SW___, + Matkl = item._SWPDM_1203_SAP____, + Bismt = item._SWPDM_64_SW___, + Groes = item._SWPDM_125_SW___, + Normt = item._SWPDM_65_SW___, + Ferth = item._SWPDM_62_SW___, + Zeinr = item._SWPDM_61_SW_____, + Mstae = item._SWPDM_1209_SAP_____, Raube = "", Mhdrz = "", Mhdhb = "", - Werks = input[i]._SWPDM_1187_SAP___, - Beskz = input[i]._SWPDM_1196_SAP_____, - Sobsl = input[i]._SWPDM_1198_SAP_____, - Schgt = input[i]._SWPDM_1197_SAP_____, - Rgekz = input[i]._SWPDM_1199_SAP___, - Zbom = input[i]._SWPDM_1208_SAP___BOM___ + Werks = item._SWPDM_1187_SAP___, + Beskz = item._SWPDM_1196_SAP_____, + Sobsl = item._SWPDM_1198_SAP_____, + Schgt = item._SWPDM_1197_SAP_____, + Rgekz = item._SWPDM_1199_SAP___, + Zbom = item._SWPDM_1208_SAP___BOM___ }; var sapOutput = await _sapService.SapMaterialApi(sapMaterialInput); string codeVal = sapOutput.code == "S" ? "成功" : "失败"; @@ -445,7 +495,8 @@ public class ProductDesignLibraryService : IDynamicApiController, ITransient { msg = "同步成功"; } - await _obj137Rep.AsUpdateable() + + db.CopyNew().Updateable() .SetColumns(it => new Obj137 { fld005532 = DateTime.Now, @@ -453,20 +504,122 @@ public class ProductDesignLibraryService : IDynamicApiController, ITransient fld005530 = "N", fld005531 = msg }) - .Where(it => it.idRecord == input[i].idRecord) - .ExecuteCommandAsync(); - var output = new SapOutput() + .Where(it => it.idRecord == item.idRecord) + .ExecuteCommand(); + + return new SapOutput() { parameter = sapOutput.parameter, - materialCode = input[0]._System_objNBS, + materialCode = item._System_objNBS, code = codeVal, msg = msg, result = sapOutput.result }; - SapOutputList.Add(output); - } - return SapOutputList; + }); + var materialOutput = await Task.WhenAll(tasks); + return materialOutput.ToList(); + //for (int i = 0; i < input.Count; i++) + //{ + // // 验证物料描述长度 + // if (input[i]._SWPDM_1188_SAP___.Length > 40) + // { + // await _obj137Rep.AsUpdateable() + // .SetColumns(it => new Obj137 + // { + // fld005532 = DateTime.Now, + // fld005530 = "N", + // fld005531 = lengthError, + // fld005529 = "失败" + // }) + // .Where(it => it.idRecord == input[i].idRecord) + // .ExecuteCommandAsync().ConfigureAwait(false); + + // SapOutputList.Add(new SapOutput() + // { + // materialCode = input[i]._System_objNBS, + // code = "失败", + // msg = lengthError, + // result = lengthError + // }); + // continue; + // } + // if (input[i].fld005530 == "N" || input[i].fld005530 == "D" || input[i].fld005530 == null) + // { + // SapOutputList.Add(new SapOutput() + // { + // materialCode = input[i]._System_objNBS, + // code = "失败", + // msg = synchronized, + // result = synchronized + // }); + // continue; + // } + // //获取时间戳精确到毫秒,sap要求每次调用生成不重复guid + // string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); + // var sapMaterialInput = new SapMaterialInput() + // { + // Reqkeyid = "", + // Businessid = "", + // Messageid = "", + // Sndprn = "PLM", + // Rcvprn = "SAP", + // Requser = Requser, + // Note1 = "", + // Note2 = "", + // Note3 = "", + // Zwbid = millisecondTimestamp, + // Matnr = input[i]._System_objNBS, + // Mbrsh = input[i]._SWPDM_1185_SAP___, + // Mtart = input[i]._SWPDM_1186_SAP_____, + // Maktx = input[i]._SWPDM_1188_SAP___, + // Meins = input[i]._SWPDM_126_SW___, + // Matkl = input[i]._SWPDM_1203_SAP____, + // Bismt = input[i]._SWPDM_64_SW___, + // Groes = input[i]._SWPDM_125_SW___, + // Normt = input[i]._SWPDM_65_SW___, + // Ferth = input[i]._SWPDM_62_SW___, + // Zeinr = input[i]._SWPDM_61_SW_____, + // Mstae = input[i]._SWPDM_1209_SAP_____, + // Raube = "", + // Mhdrz = "", + // Mhdhb = "", + // Werks = input[i]._SWPDM_1187_SAP___, + // Beskz = input[i]._SWPDM_1196_SAP_____, + // Sobsl = input[i]._SWPDM_1198_SAP_____, + // Schgt = input[i]._SWPDM_1197_SAP_____, + // Rgekz = input[i]._SWPDM_1199_SAP___, + // Zbom = input[i]._SWPDM_1208_SAP___BOM___ + // }; + // var sapOutput = await _sapService.SapMaterialApi(sapMaterialInput); + // string codeVal = sapOutput.code == "S" ? "成功" : "失败"; + // string msg = sapOutput.msg; + + // if (sapOutput.msg == "") + // { + // msg = "同步成功"; + // } + // await _obj137Rep.AsUpdateable() + // .SetColumns(it => new Obj137 + // { + // fld005532 = DateTime.Now, + // fld005529 = codeVal, + // fld005530 = "N", + // fld005531 = msg + // }) + // .Where(it => it.idRecord == input[i].idRecord) + // .ExecuteCommandAsync(); + // var output = new SapOutput() + // { + // parameter = sapOutput.parameter, + // materialCode = input[0]._System_objNBS, + // code = codeVal, + // msg = msg, + // result = sapOutput.result + // }; + // SapOutputList.Add(output); + //} + } /// /// 产品设计库-定时同步到SAP @@ -477,41 +630,38 @@ public class ProductDesignLibraryService : IDynamicApiController, ITransient [AllowAnonymous] public async Task> TimingSyncToSAP() { - var input = await _obj137Rep.AsQueryable() + using var serviceScope = _scopeFactory.CreateScope(); + var sysEnumService = serviceScope.ServiceProvider.GetRequiredService(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + var input = db.CopyNew().Queryable() .Where(x => x.CheckedStatus == 0 && x.deleted == false && x.IsLatestVersion == true && (x.fld005530 == "A" || x.fld005530 == "M") && x._system_objConfigurationName == "默认" && !x.SWPDMFileName.Contains("SLDDRW")) - .ToListAsync(); + .ToList(); const string lengthError = "物料描述长度大于40,请检查!"; var SapOutputList = new List(); var Requser = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName); - for (int i = 0; i < input.Count; i++) + var tasks = input.Select(async item => { - if (!string.IsNullOrEmpty(input[i]._SWPDM_1188_SAP___)) + if (item._SWPDM_1188_SAP___.Length > 40) { - // 验证物料描述长度 - if (input[i]._SWPDM_1188_SAP___.Length > 40) - { - await _obj137Rep.AsUpdateable() - .SetColumns(it => new Obj137 - { - fld005532 = DateTime.Now, - fld005530 = "N", - fld005531 = lengthError, - fld005529 = "失败" - }) - .Where(it => it.idRecord == input[i].idRecord) - .ExecuteCommandAsync().ConfigureAwait(false); - - SapOutputList.Add(new SapOutput() + db.CopyNew().Updateable() + .SetColumns(it => new Obj137 { - materialCode = input[i]._System_objNBS, - code = "失败", - msg = lengthError, - result = lengthError - }); - continue; - } - } + fld005532 = DateTime.Now, + fld005530 = "N", + fld005531 = lengthError, + fld005529 = "失败" + }) + .Where(it => it.idRecord == item.idRecord) + .ExecuteCommand(); + return new SapOutput + { + materialCode = item._System_objNBS, + code = "失败", + msg = lengthError, + result = lengthError + }; + } //获取时间戳精确到毫秒,sap要求每次调用生成不重复guid string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); @@ -527,27 +677,27 @@ public class ProductDesignLibraryService : IDynamicApiController, ITransient Note2 = "", Note3 = "", Zwbid = millisecondTimestamp, - Matnr = input[i]._System_objNBS, - Mbrsh = input[i]._SWPDM_1185_SAP___, - Mtart = input[i]._SWPDM_1186_SAP_____, - Maktx = input[i]._SWPDM_1188_SAP___, - Meins = input[i]._SWPDM_126_SW___, - Matkl = input[i]._SWPDM_1203_SAP____, - Bismt = input[i]._SWPDM_64_SW___, - Groes = input[i]._SWPDM_125_SW___, - Normt = input[i]._SWPDM_65_SW___, - Ferth = input[i]._SWPDM_62_SW___, - Zeinr = input[i]._SWPDM_61_SW_____, - Mstae = input[i]._SWPDM_1209_SAP_____, + Matnr = item._System_objNBS, + Mbrsh = item._SWPDM_1185_SAP___, + Mtart = item._SWPDM_1186_SAP_____, + Maktx = item._SWPDM_1188_SAP___, + Meins = item._SWPDM_126_SW___, + Matkl = item._SWPDM_1203_SAP____, + Bismt = item._SWPDM_64_SW___, + Groes = item._SWPDM_125_SW___, + Normt = item._SWPDM_65_SW___, + Ferth = item._SWPDM_62_SW___, + Zeinr = item._SWPDM_61_SW_____, + Mstae = item._SWPDM_1209_SAP_____, Raube = "", Mhdrz = "", Mhdhb = "", - Werks = input[i]._SWPDM_1187_SAP___, - Beskz = input[i]._SWPDM_1196_SAP_____, - Sobsl = input[i]._SWPDM_1198_SAP_____, - Schgt = input[i]._SWPDM_1197_SAP_____, - Rgekz = input[i]._SWPDM_1199_SAP___, - Zbom = input[i]._SWPDM_1208_SAP___BOM___ + Werks = item._SWPDM_1187_SAP___, + Beskz = item._SWPDM_1196_SAP_____, + Sobsl = item._SWPDM_1198_SAP_____, + Schgt = item._SWPDM_1197_SAP_____, + Rgekz = item._SWPDM_1199_SAP___, + Zbom = item._SWPDM_1208_SAP___BOM___ }; var sapOutput = await _sapService.SapMaterialApi(sapMaterialInput); string codeVal = sapOutput.code == "S" ? "成功" : "失败"; @@ -557,7 +707,8 @@ public class ProductDesignLibraryService : IDynamicApiController, ITransient { msg = "同步成功"; } - await _obj137Rep.AsUpdateable() + + db.CopyNew().Updateable() .SetColumns(it => new Obj137 { fld005532 = DateTime.Now, @@ -565,20 +716,117 @@ public class ProductDesignLibraryService : IDynamicApiController, ITransient fld005530 = "N", fld005531 = msg }) - .Where(it => it.idRecord == input[i].idRecord) - .ExecuteCommandAsync(); - var output = new SapOutput() + .Where(it => it.idRecord == item.idRecord) + .ExecuteCommand(); + + return new SapOutput() { parameter = sapOutput.parameter, - materialCode = input[0]._System_objNBS, + materialCode = item._System_objNBS, code = codeVal, msg = msg, result = sapOutput.result }; - SapOutputList.Add(output); - } - return SapOutputList; + }); + var materialOutput = await Task.WhenAll(tasks); + return materialOutput.ToList(); + //for (int i = 0; i < input.Count; i++) + //{ + // if (!string.IsNullOrEmpty(input[i]._SWPDM_1188_SAP___)) + // { + // // 验证物料描述长度 + // if (input[i]._SWPDM_1188_SAP___.Length > 40) + // { + // await _obj137Rep.AsUpdateable() + // .SetColumns(it => new Obj137 + // { + // fld005532 = DateTime.Now, + // fld005530 = "N", + // fld005531 = lengthError, + // fld005529 = "失败" + // }) + // .Where(it => it.idRecord == input[i].idRecord) + // .ExecuteCommandAsync().ConfigureAwait(false); + + // SapOutputList.Add(new SapOutput() + // { + // materialCode = input[i]._System_objNBS, + // code = "失败", + // msg = lengthError, + // result = lengthError + // }); + // continue; + // } + // } + + + // //获取时间戳精确到毫秒,sap要求每次调用生成不重复guid + // string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); + // var sapMaterialInput = new SapMaterialInput() + // { + // Reqkeyid = "", + // Businessid = "", + // Messageid = "", + // Sndprn = "PLM", + // Rcvprn = "SAP", + // Requser = Requser, + // Note1 = "", + // Note2 = "", + // Note3 = "", + // Zwbid = millisecondTimestamp, + // Matnr = input[i]._System_objNBS, + // Mbrsh = input[i]._SWPDM_1185_SAP___, + // Mtart = input[i]._SWPDM_1186_SAP_____, + // Maktx = input[i]._SWPDM_1188_SAP___, + // Meins = input[i]._SWPDM_126_SW___, + // Matkl = input[i]._SWPDM_1203_SAP____, + // Bismt = input[i]._SWPDM_64_SW___, + // Groes = input[i]._SWPDM_125_SW___, + // Normt = input[i]._SWPDM_65_SW___, + // Ferth = input[i]._SWPDM_62_SW___, + // Zeinr = input[i]._SWPDM_61_SW_____, + // Mstae = input[i]._SWPDM_1209_SAP_____, + // Raube = "", + // Mhdrz = "", + // Mhdhb = "", + // Werks = input[i]._SWPDM_1187_SAP___, + // Beskz = input[i]._SWPDM_1196_SAP_____, + // Sobsl = input[i]._SWPDM_1198_SAP_____, + // Schgt = input[i]._SWPDM_1197_SAP_____, + // Rgekz = input[i]._SWPDM_1199_SAP___, + // Zbom = input[i]._SWPDM_1208_SAP___BOM___ + // }; + // var sapOutput = await _sapService.SapMaterialApi(sapMaterialInput); + // string codeVal = sapOutput.code == "S" ? "成功" : "失败"; + // string msg = sapOutput.msg; + + // if (sapOutput.msg == "") + // { + // msg = "同步成功"; + // } + // await _obj137Rep.AsUpdateable() + // .SetColumns(it => new Obj137 + // { + // fld005532 = DateTime.Now, + // fld005529 = codeVal, + // fld005530 = "N", + // fld005531 = msg + // }) + // .Where(it => it.idRecord == input[i].idRecord) + // .ExecuteCommandAsync(); + // var output = new SapOutput() + // { + // parameter = sapOutput.parameter, + // materialCode = input[0]._System_objNBS, + // code = codeVal, + // msg = msg, + // result = sapOutput.result + // }; + // SapOutputList.Add(output); + //} + + //return SapOutputList; } /// @@ -590,171 +838,279 @@ public class ProductDesignLibraryService : IDynamicApiController, ITransient [AllowAnonymous] public async Task> TimingSyncToSAPBom() { - var sapOutputList = new List(); - var sapUserName = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName); - // 配置 - var configid = await _configurationsRep.AsQueryable().Where(x => x.ObjectId == 137 && x.ConfigSystemName == "SolidWorks").FirstAsync(); + //.Where(x=> SqlFunc.Subqueryable().Where(y => y.RecordGuid == x.RecordGuid).Max(x => x.VersionIndex) == x.VersionIndex) + using var serviceScope = _scopeFactory.CreateScope(); + var sysEnumService = serviceScope.ServiceProvider.GetRequiredService(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + var syncData = db.Queryable() + .InnerJoin((x, y) => x.RecordGuid == y.ParentGuid && x.VersionIndex == y.ParentVersion) + //.InnerJoin((x, y, z) => x.fld005679_Rec == z.RecordGuid) + .Where((x, y) => x.CheckedStatus == 0 && x.deleted == false && x.IsLatestVersion == true && (x._SWPDM_1202_SW_____ != "不展开" || x._SWPDM_1202_SW_____ == null) && x.fld005530 == "N" && x.fld005529 == "成功" && (x.fld005534 == "A" || x.fld005534 == "M") && x._system_objConfigurationName == "默认" && !x.SWPDMFileName.Contains("SLDDRW") && y.isDeleted == false && y.ConfigId == 8 && (y.fld005577 != "不包含" || y.fld005577 == null) && y.isSuppressed == false && y.inContext == false && (!(y.ParentSwFileType == 1 && y.isAddedFromSW == false))) + .Select((x, y) => new + { + x.idRecord, + x.VersionIndex, + x._System_objNBS, + x.RecordGuid, + x.fld005679_Rec, + x.fld005686, + x.fld005678, + x._SWPDM_1187_SAP___, + x.fld005680, + y.ParentGuid, + y.ParentVersion, + y.ChildGuid, + y.ChildObjID, + y.childVersion, + y.ConfigId, + y.QtyManual, + y.PartNumber, + y.fld005541, + y.fld005542, + y.fld005543, + y.fld005544, + y.fld004940, + y.fld005546, + y.fld005547, + //ecn = z._System_objNBS + }) + .ToList(); - var materialData = await _obj137Rep.AsQueryable() - .Where(x => x.CheckedStatus == 0 && x.deleted == false && x.IsLatestVersion == true && (x._SWPDM_1202_SW_____ != "不展开" || x._SWPDM_1202_SW_____ == null) && x.fld005530 == "N" && x.fld005529 == "成功" && (x.fld005534 == "A" || x.fld005534 == "M") && x._system_objConfigurationName == "默认" && !x.SWPDMFileName.Contains("SLDDRW")) - .ToListAsync(); - var groupedData = materialData.GroupBy(item => item.RecordGuid) - .Select(group => group.OrderByDescending(item => item.VersionIndex).First()) - .ToList(); + var syncList = syncData.GroupBy(record => record.RecordGuid) + .Select(group => new SyncBomData + { + Id = group.FirstOrDefault()?.idRecord, + MaterialCode = group.FirstOrDefault()?._System_objNBS, + RecordGuid = group.FirstOrDefault()?.RecordGuid, + SyncVersion = group.FirstOrDefault()?.fld005686, + Bmeng = group.FirstOrDefault()?.fld005678, + Werks = group.FirstOrDefault()?._SWPDM_1187_SAP___, + Datuv = group.FirstOrDefault()?.fld005680, + VersionIndex = group.FirstOrDefault()?.VersionIndex, + //Ecn = group.FirstOrDefault()?.ecn, + ecnGuid = group.FirstOrDefault()?.fld005679_Rec, + Bom = group.Select(g => new BomData + { + PartNumber = g.PartNumber, + ParentGuid = g.ParentGuid, + ChildGuid = g.ChildGuid, + ChildObjID = g.ChildObjID, + ConfigId = g.ConfigId, + childVersion = g.childVersion, + ParentVersion = g.VersionIndex, + QtyManual = g.QtyManual, + SORTF = g.fld005541, + ITISOB = g.fld005542, + ALPGR = g.fld005543, + ALPRF = g.fld005544, + ZDELETE = g.fld004940, + POSTP = g.fld005546, + ZYFMK = g.fld005547 + }).ToList() + }); + List sapOutputs = new List(); - foreach (var item in groupedData) + var tasks = syncList.Select(async item => { - // 获取版本号 - var versionIndex = item.VersionIndex; - // 获取 ECN guid - var ecnGuid = item.fld005679_Rec; - // 查询 BOM - var bomData = await _configurationDataRep.AsQueryable() - .Where(x => x.ConfigId == configid.ConfigID && x.ParentGuid == item.RecordGuid && x.isDeleted == false && x.ParentVersion == versionIndex && (x.fld005577 != "不包含" || x.fld005577 == null) && x.isSuppressed == false && x.inContext == false).ToListAsync(); - if (bomData.Count == 0) - { - continue; - } - // 查询 ECN 编码 - var ecnData = await _obj118Rep.AsQueryable().Where(x => x.RecordGuid == ecnGuid && x.deleted == false).OrderByDescending(x => x.VersionIndex).FirstAsync(); - var ecn = ecnData != null ? ecnData._System_objNBS : ""; + var output = await SyncBomToSap(item); + return output; + }); - var itemDataList = new List(); - foreach (var bomItem in bomData) + var bomStockInquiryOutput = await Task.WhenAll(tasks); + + return bomStockInquiryOutput.ToList(); + } + + /// + /// 同步Bom到Sap + /// + /// + /// + public async Task SyncBomToSap(SyncBomData data) + { + using var serviceScope = _scopeFactory.CreateScope(); + //var sysEnumService = serviceScope.ServiceProvider.GetRequiredService(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74"); + var ecn = db.CopyNew().Queryable().Where(x => x.RecordGuid == data.ecnGuid).OrderByDescending(x => x.idRecord).First(); + if (ecn != null) + { + data.Ecn = ecn._System_objNBS; + } + var itemDataList = new List(); + foreach (var item in data.Bom) + { + + var verification = await _dataValidationService.VerificationMaterial(item.ChildObjID, item.PartNumber, item.ChildGuid); + if (verification == "不存在") { - var verification = await _dataValidationService.VerificationMaterial(bomItem.ChildObjID, bomItem.PartNumber, bomItem.ChildGuid); - if (verification == "不存在") + if (item.ChildObjID == 137) + { + string partNumber = item.PartNumber.Replace("默认 ", "");//过滤BOM表PartNumber字段存在“默认 ” + if (partNumber == item.PartNumber)//判断过滤后,物料编码是否和原料相同,相同的话跳出循环 + { + continue; + } + var data137 = db.CopyNew().Queryable().Where(x => x._System_objNBS == item.ChildGuid && x.deleted == false&& x._system_objConfigurationName == "默认").OrderByDescending(x => x.idRecord).First(); + + if (data137 != null) + { + item.PartNumber = data137._System_objNBS; + } + else + { + continue; + } + } + else { continue; } - - var itemData = new ItemData - { - POSNR = (bomData.IndexOf(bomItem) + 1).ToString(), - IDNRK = bomItem.PartNumber, - MENGE = Math.Round((decimal)bomItem.QtyManual, 3).ToString(), - SORTF = bomItem.fld005541, - ITISOB = bomItem.fld005542, - ALPGR = bomItem.fld005543, - ALPRF = bomItem.fld005544, - ZDELETE = bomItem.fld004940, - POSTP = bomItem.fld005546, - ZYFMK = bomItem.fld005547 - }; - itemDataList.Add(itemData); - } - var ParentData = await _obj137Rep.AsQueryable().Where(x => x.RecordGuid == bomData[0].ParentGuid && x.deleted == false && x.VersionIndex == bomData[0].ParentVersion).FirstAsync(); - - if (!string.IsNullOrEmpty(ParentData.fld005686)) + var itemData = new ItemData { - var configidold = await _configurationsRep.AsQueryable().Where(x => x.ObjectId == 137 && x.ConfigSystemName == "SolidWorks").FirstAsync(); - var BomData = await _configurationDataRep.AsQueryable().Where(x => x.ConfigId == configidold.ConfigID && x.ParentGuid == bomData[0].ParentGuid && x.isDeleted == false && x.ParentVersion == Convert.ToInt32(ParentData.fld005686) && (x.fld005577 != "不包含" || x.fld005577 == null) && x.isSuppressed == false && x.inContext == false).ToListAsync(); - for (int i = 0; i < BomData.Count; i++) - { + POSNR = (data.Bom.IndexOf(item) + 1).ToString(), + IDNRK = item.PartNumber, + MENGE = Math.Round((decimal)item.QtyManual, 3).ToString(), + SORTF = item.SORTF, + ITISOB = item.ITISOB, + ALPGR = item.ALPGR, + ALPRF = item.ALPRF, + ZDELETE = item.ZDELETE, + POSTP = item.POSTP, + ZYFMK = item.ZYFMK + }; + itemDataList.Add(itemData); - var itemList = itemDataList.Where(x => x.IDNRK == BomData[i].PartNumber).ToList(); - if (itemList.Count == 0) + } + + if (!string.IsNullOrEmpty(data.SyncVersion)) + { + //var BomData2 = await _configurationDataRep.AsQueryable().Where(x => x.ConfigId == 8 && x.ParentGuid == data.RecordGuid && x.isDeleted == false && x.ParentVersion == Convert.ToInt32(data.fld005686) && (x.fld005577 != "不包含" || x.fld005577 == null) && x.isSuppressed == false && x.inContext == false).ToListAsync(); + + var BomData = db.CopyNew().Queryable().Where(x => x.ConfigId == 8 && x.ParentGuid == data.RecordGuid && x.isDeleted == false && x.ParentVersion == Convert.ToInt32(data.SyncVersion) && (x.fld005577 != "不包含" || x.fld005577 == null) && x.isSuppressed == false && x.inContext == false && (!(x.ParentSwFileType == 1 && x.isAddedFromSW == false))).ToList(); + + foreach (var item in BomData) + { + var itemList = itemDataList.Where(x => x.IDNRK == item.PartNumber).ToList(); + if (itemList.Count == 0) + { + var Verification = await _dataValidationService.VerificationMaterial(item.ChildObjID, item.PartNumber, item.ChildGuid); + if (Verification == "不存在") { - var Verification = await _dataValidationService.VerificationMaterial(BomData[i].ChildObjID, BomData[i].PartNumber, BomData[i].ChildGuid); - if (Verification == "不存在") + if (item.ChildObjID == 137) + { + string partNumber = item.PartNumber.Replace("默认 ", "");//过滤BOM表PartNumber字段存在“默认 ” + if (partNumber == item.PartNumber)//判断过滤后,物料编码是否和原料相同,相同的话跳出循环 + { + continue; + } + var data137 = db.CopyNew().Queryable().Where(x => x._System_objNBS == partNumber && x.deleted == false).OrderByDescending(x => x.idRecord).First(); + + if (data137 != null) + { + item.PartNumber = data137._System_objNBS; + } + else + { + continue; + } + } + else { continue; } - //int sun = i + 1; - var itemData = new ItemData() - { - POSNR = "",//组件序号 sun.ToString() - IDNRK = BomData[i].PartNumber,//组件物料号 - MENGE = Math.Round((decimal)BomData[i].QtyManual, 3).ToString(),//组件数量 - SORTF = BomData[i].fld005541, - ITISOB = BomData[i].fld005542, - ALPGR = BomData[i].fld005543, - ALPRF = BomData[i].fld005544, - ZDELETE = "X", - POSTP = BomData[i].fld005546, - ZYFMK = BomData[i].fld005547 - }; - itemDataList.Add(itemData); } - + //int sun = i + 1; + var itemData = new ItemData() + { + POSNR = "",//组件序号 sun.ToString() + IDNRK = item.PartNumber,//组件物料号 + MENGE = Math.Round((decimal)item.QtyManual, 3).ToString(),//组件数量 + SORTF = item.fld005541, + ITISOB = item.fld005542, + ALPGR = item.fld005543, + ALPRF = item.fld005544, + ZDELETE = "X", + POSTP = item.fld005546, + ZYFMK = item.fld005547 + }; + itemDataList.Add(itemData); } } - - // 获取时间戳精确到毫秒,sap 要求每次调用生成不重复 guid - string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); - - var fld005678 = item.fld005678 ?? 1; - - var isreq = new IS_REQ - { - ReqKeyId = "", - BusinessId = "", - MessageId = "", - SndPrn = "PLM", - RcvPrn = "SAP", - ReqUser = sapUserName, - Note1 = "", - Note2 = "", - Note3 = "", - Zwbid = millisecondTimestamp, - Matnr = item._System_objNBS, - Werks = item._SWPDM_1187_SAP___, - Bmeng = fld005678.ToString(), - Aennr = ecn, - Datuv = item.fld005680.ToString(), - ItemList = itemDataList - }; - - var apiOutput = await _sapService.SapBomApi(isreq); - string codeVal = apiOutput.code == "S" ? "成功" : "失败"; - - if (codeVal == "成功") - { - await _obj137Rep.AsUpdateable() - .SetColumns(it => new Obj137 - { - fld005539 = DateTime.Now, - fld005533 = codeVal, - fld005534 = "N", - fld005535 = apiOutput.msg, - fld005686 = versionIndex.ToString() - }) - .Where(it => it.idRecord == item.idRecord) - .ExecuteCommandAsync(); - } - else - { - await _obj137Rep.AsUpdateable() - .SetColumns(it => new Obj137 - { - fld005539 = DateTime.Now, - fld005533 = codeVal, - fld005534 = "N", - fld005535 = apiOutput.msg - }) - .Where(it => it.idRecord == item.idRecord) - .ExecuteCommandAsync(); - } - - var msg = apiOutput.msg; - if (string.IsNullOrEmpty(msg)) - { - msg = "同步成功"; - } - - var output = new SapOutput - { - parameter = apiOutput.parameter, - materialCode = item._System_objNBS, - code = codeVal, - msg = msg, - result = apiOutput.result - }; - sapOutputList.Add(output); } - return sapOutputList; + + string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); + + var Bmeng = data.Bmeng ?? 1; + + var sapUserName = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName); + + var isreq = new IS_REQ + { + ReqKeyId = "", + BusinessId = "", + MessageId = "", + SndPrn = "PLM", + RcvPrn = "SAP", + ReqUser = sapUserName, + Note1 = "", + Note2 = "", + Note3 = "", + Zwbid = millisecondTimestamp, + Matnr = data.MaterialCode, + Werks = data.Werks, + Bmeng = Bmeng.ToString(), + Aennr = data.Ecn, + Datuv = data.Datuv.ToString(), + ItemList = itemDataList + }; + + var apiOutput = await _sapService.SapBomApi(isreq); + + string codeVal = apiOutput.code == "S" ? "成功" : "失败"; + + if (codeVal == "成功") + { + db.CopyNew().Updateable().Where(it => it.idRecord == data.Id) + .SetColumns(it => new Obj137 + { + fld005539 = DateTime.Now, + fld005533 = codeVal, + fld005534 = "N", + fld005535 = apiOutput.msg, + fld005686 = data.VersionIndex.ToString() + }).ExecuteCommand(); + + } + else + { + db.CopyNew().Updateable().Where(it => it.idRecord == data.Id) + .SetColumns(it => new Obj137 + { + fld005539 = DateTime.Now, + fld005533 = codeVal, + fld005534 = "N", + fld005535 = apiOutput.msg + }) + .ExecuteCommand(); + } + + var msg = apiOutput.msg; + if (string.IsNullOrEmpty(msg)) + { + msg = "同步成功"; + } + + var output = new SapOutput + { + parameter = apiOutput.parameter, + materialCode = data.MaterialCode, + code = codeVal, + msg = msg, + result = apiOutput.result + }; + return output; } /// @@ -766,7 +1122,6 @@ public class ProductDesignLibraryService : IDynamicApiController, ITransient [DisplayName("获取工艺路线")] public async Task> GetProcessRoute(BomPageProductDesignLibraryInput input) { - var configid = await _configurationsRep.AsQueryable().Where(x => x.ObjectId == 137 && x.ConfigSystemName == "pBOM").FirstAsync(); var parent = await _obj137Rep.AsQueryable() .Where(x => x.RecordGuid == input.ParentGuid @@ -781,7 +1136,7 @@ public class ProductDesignLibraryService : IDynamicApiController, ITransient ) .MaxAsync(x => x.VersionIndex); var BomData = await _configurationDataRep.AsQueryable() - .Where(x => x.ConfigId == configid.ConfigID && x.ParentGuid == input.ParentGuid && x.isDeleted == false && x.ParentVersion == parent) + .Where(x => x.ConfigId == 9 && x.ParentGuid == input.ParentGuid && x.isDeleted == false && x.ParentVersion == parent) .WhereIF(!string.IsNullOrWhiteSpace(input.Description), u => u.Description.Contains(input.Description.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.PartNumber), u => u.PartNumber.Contains(input.PartNumber.Trim())) .Select().ToPagedListAsync(input.Page, input.PageSize); @@ -811,43 +1166,357 @@ public class ProductDesignLibraryService : IDynamicApiController, ITransient && (x.fld005537 == "A" || x.fld005537 == "M") ) .FirstAsync(); + var processRouteList = new List(); + foreach (var item in input) + { + var processRoute = new ProcessRouteList + { + ParentGuid = item.ParentGuid, + ChildGuid = item.ChildGuid, + ChildObjID = item.ChildObjID, + PartNumber = item.PartNumber, + VORNR = item.Marker, + VGW01 = item.fld005571, + VGE01 = item.fld005572, + STEUS = item.fld005573, + BMSCH = item.fld005575 + }; + processRouteList.Add(processRoute); + } + var syncProcessRouteData = new SyncProcessRouteData + { + idRecord = ParentData.idRecord, + _System_objNBS = ParentData._System_objNBS, + VersionIndex = ParentData.VersionIndex, + Werks=ParentData._SWPDM_1187_SAP___, + Datuv = ParentData.fld005680, + ProcessRouteList = processRouteList + }; + + var output = await SyncProcessRouteToSap(syncProcessRouteData); + return output; + //var itemDataList = new List(); + + //for (int i = 0; i < input.Count; i++) + //{ + // var Verification = await _dataValidationService.VerificationMaterial(input[i].ChildObjID, input[i].PartNumber, input[i].ChildGuid); + // if (Verification == "不存在") + // { + // continue; + // } + + // //获取工序描述 + // var procedureDescription = await _obj122Rep.AsQueryable().Where(x => x.RecordGuid == input[i].ChildGuid).ToListAsync(); + // //获取工作中心 + // var workCenter = await _obj121Rep.AsQueryable().Where(x => x.RecordGuid == procedureDescription[0].fld005059_Rec).ToListAsync(); + // //int sun = i + 1; + // var itemData = new SapProcessRouteItemData() + // { + // VORNR = input[i].Marker, + // LTXA1 = procedureDescription[0]._System_ObjDescription, + // ARBPL = workCenter[0]._System_objNBS, + // VGW01 = input[i].fld005571.ToString(), + // VGE01 = input[i].fld005572, + // STEUS = input[i].fld005573, + // BMSCH = input[i].fld005575.ToString() + + // }; + // itemDataList.Add(itemData); + //} + + ////获取时间戳精确到毫秒,sap要求每次调用生成不重复guid + //string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); + + //var Datuv = ParentData.fld005680.ToString(); + //if (!string.IsNullOrEmpty(Datuv)) + //{ + // Datuv = ParentData.fld005680.ToDateTime().ToString("yyyy-MM-dd"); + //} + + //var isreq = new SapProcessRouteIS_REQ() + //{ + // ReqKeyId = "", + // BusinessId = "", + // MessageId = "", + // SndPrn = "PLM", + // RcvPrn = "SAP", + // ReqUser = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName), + // Note1 = "", + // Note2 = "", + // Note3 = "", + // Zwbid = millisecondTimestamp, + // Matnr = ParentData._System_objNBS, + // Werks = ParentData._SWPDM_1187_SAP___, + // Datuv = Datuv, + // Plnal = "", + + // ItemList = itemDataList + //}; + //var apiOutput = await _sapService.SapProcessRouteApi(isreq); + //string codeVal = apiOutput.code == "S" ? "成功" : "失败"; + //await _obj137Rep.AsUpdateable() + // .SetColumns(it => new Obj137 + // { + // fld005540 = DateTime.Now, + // fld005536 = codeVal, + // fld005537 = "N", + // fld005538 = apiOutput.msg + // }) + // .Where(it => it.idRecord == ParentData.idRecord) + // .ExecuteCommandAsync(); + //var msg = apiOutput.msg; + //if (apiOutput.msg == "") + //{ + // msg = "同步成功"; + //} + //var output = new SapOutput() + //{ + // parameter = apiOutput.parameter, + // code = codeVal, + // msg = msg, + // result = apiOutput.result + //}; + //return output; + } + + /// + /// 产品设计库-定时同步工艺路线到SAP + /// + /// + [ApiDescriptionSettings(Name = "TimingSyncToSAPProcessRoute"), HttpGet] + [DisplayName("产品设计库-定时同步工艺路线到SAP")] + [AllowAnonymous] + public async Task> TimingSyncToSAPProcessRoute() + { + using var serviceScope = _scopeFactory.CreateScope(); + var sysEnumService = serviceScope.ServiceProvider.GetRequiredService(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + + var syncPbom = db.Queryable() + .InnerJoin((x, y) => x.RecordGuid == y.ParentGuid && x.VersionIndex == y.ParentVersion) + .Where((x, y) => x.CheckedStatus == 0 && x.deleted == false && x.IsLatestVersion == true && x._system_objConfigurationName == "默认" && !x.SWPDMFileName.Contains("SLDDRW") && (x._SWPDM_1202_SW_____ != "不展开" || x._SWPDM_1202_SW_____ == null) && x.fld005530 == "N" && x.fld005529 == "成功" && (x.fld005537 == "A" || x.fld005537 == "M") && y.ConfigId == 9 && y.isDeleted == false) + .Select((x, y) => new + { + x.idRecord, + x.VersionIndex, + x.RecordGuid, + x._System_objNBS, + x._SWPDM_1187_SAP___, + x.fld005680, + y.ParentGuid, + y.ChildGuid, + y.ChildObjID, + y.PartNumber, + y.Marker, + y.fld005571, + y.fld005572, + y.fld005573, + y.fld005575, + + }).ToList(); + + var syncList = syncPbom.GroupBy(record => record.RecordGuid) + .Select(group => new SyncProcessRouteData + { + idRecord = group.FirstOrDefault()?.idRecord, + _System_objNBS = group.FirstOrDefault()?._System_objNBS, + VersionIndex = group.FirstOrDefault()?.VersionIndex, + Datuv = group.FirstOrDefault()?.fld005680, + ProcessRouteList = group.Select(g => new ProcessRouteList + { + ParentGuid = g.ParentGuid, + ChildGuid = g.ChildGuid, + ChildObjID = g.ChildObjID, + PartNumber = g.PartNumber, + VORNR = g.Marker, + VGW01 = g.fld005571, + VGE01 = g.fld005572, + STEUS = g.fld005573, + BMSCH = g.fld005575 + }).ToList() + }); + + var tasks = syncList.Select(async item => + { + var output = await SyncProcessRouteToSap(item); + return output; + }); + + var bomStockInquiryOutput = await Task.WhenAll(tasks); + + return bomStockInquiryOutput.ToList(); + + + //var sapOutputList = new List(); + //var sapUserName = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName); + //// 配置 + //var configid = await _configurationsRep.AsQueryable().Where(x => x.ObjectId == 137 && x.ConfigSystemName == "pBOM").FirstAsync(); + + // //查询需要同步的产品 + // var materialData = await _obj137Rep.AsQueryable() + // .Where(x => + // x.CheckedStatus == 0 + // && x.deleted == false + // && x.IsLatestVersion == true + // && x._system_objConfigurationName == "默认" + // && !x.SWPDMFileName.Contains("SLDDRW") + // && (x._SWPDM_1202_SW_____ != "不展开" || x._SWPDM_1202_SW_____ == null) + // && x.fld005530 == "N" + // && x.fld005529 == "成功" + // && (x.fld005537 == "A" || x.fld005537 == "M") + // ) + // .ToListAsync(); + // //分组查询最大版本的物料 + // var groupedData = materialData.GroupBy(item => item.RecordGuid) + //.Select(group => group.OrderByDescending(item => item.VersionIndex).First()) + //.ToList(); + + // foreach (var item in groupedData) + // { + // // 获取版本号 + // var versionIndex = item.VersionIndex; + // // 查询 BOM + // var processRouteData = await _configurationDataRep.AsQueryable() + // .Where(x => x.ConfigId == configid.ConfigID && x.ParentGuid == item.RecordGuid && x.isDeleted == false && x.ParentVersion == versionIndex).ToListAsync(); + // if (processRouteData.Count == 0) + // { + // continue; + // } + // var itemDataList = new List(); + + // foreach (var processRouteItem in processRouteData) + // { + // var verification = await _dataValidationService.VerificationMaterial(processRouteItem.ChildObjID, processRouteItem.PartNumber, processRouteItem.ChildGuid); + // if (verification == "不存在") + // { + // continue; + // } + // //获取工序描述 + // var procedureDescription = await _obj122Rep.AsQueryable().Where(x => x.RecordGuid == processRouteItem.ChildGuid).ToListAsync(); + // //获取工作中心 + // var workCenter = await _obj121Rep.AsQueryable().Where(x => x.RecordGuid == procedureDescription[0].fld005059_Rec).ToListAsync(); + // var itemData = new SapProcessRouteItemData() + // { + // VORNR = processRouteItem.Marker, + // LTXA1 = procedureDescription[0]._System_ObjDescription, + // ARBPL = workCenter[0]._System_objNBS, + // VGW01 = processRouteItem.fld005571.ToString(), + // VGE01 = processRouteItem.fld005572, + // STEUS = processRouteItem.fld005573, + // BMSCH = processRouteItem.fld005575.ToString() + + // }; + // itemDataList.Add(itemData); + // } + // //获取时间戳精确到毫秒,sap要求每次调用生成不重复guid + // string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); + + // var Datuv = item.fld005680.ToString(); + + // if (!string.IsNullOrEmpty(Datuv)) + // { + // Datuv = item.fld005680.ToDateTime().ToString("yyyy-MM-dd"); + // } + // var isreq = new SapProcessRouteIS_REQ() + // { + // ReqKeyId = "", + // BusinessId = "", + // MessageId = "", + // SndPrn = "PLM", + // RcvPrn = "SAP", + // ReqUser = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName), + // Note1 = "", + // Note2 = "", + // Note3 = "", + // Zwbid = millisecondTimestamp, + // Matnr = item._System_objNBS, + // Werks = item._SWPDM_1187_SAP___, + // Datuv = Datuv, + // Plnal = "", + + // ItemList = itemDataList + // }; + + // var apiOutput = await _sapService.SapProcessRouteApi(isreq); + // string codeVal = apiOutput.code == "S" ? "成功" : "失败"; + // await _obj137Rep.AsUpdateable() + // .SetColumns(it => new Obj137 + // { + // fld005540 = DateTime.Now, + // fld005536 = codeVal, + // fld005537 = "N", + // fld005538 = apiOutput.msg + // }) + // .Where(it => it.idRecord == item.idRecord) + // .ExecuteCommandAsync(); + // var msg = apiOutput.msg; + // if (apiOutput.msg == "") + // { + // msg = "同步成功"; + // } + // var output = new SapOutput() + // { + // parameter = apiOutput.parameter, + // code = codeVal, + // msg = msg, + // result = apiOutput.result + // }; + + // sapOutputList.Add(output); + // } + // return sapOutputList; + } + + /// + /// 同步工艺路线到Sap + /// + /// + /// + public async Task SyncProcessRouteToSap(SyncProcessRouteData data) + { + using var serviceScope = _scopeFactory.CreateScope(); + //var sysEnumService = serviceScope.ServiceProvider.GetRequiredService(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); var itemDataList = new List(); - for (int i = 0; i < input.Count; i++) + foreach (var item in data.ProcessRouteList) { - var Verification = await _dataValidationService.VerificationMaterial(input[i].ChildObjID, input[i].PartNumber, input[i].ChildGuid); - if (Verification == "不存在") + var verification = await _dataValidationService.VerificationMaterial(item.ChildObjID, item.PartNumber, item.ChildGuid); + if (verification == "不存在") { continue; } //获取工序描述 - var procedureDescription = await _obj122Rep.AsQueryable().Where(x => x.RecordGuid == input[i].ChildGuid).ToListAsync(); + var procedureDescription = db.CopyNew().Queryable().Where(x => x.RecordGuid == item.ChildGuid).First(); ; + //获取工作中心 - var workCenter = await _obj121Rep.AsQueryable().Where(x => x.RecordGuid == procedureDescription[0].fld005059_Rec).ToListAsync(); - //int sun = i + 1; + var workCenter = db.CopyNew().Queryable().Where(x => x.RecordGuid == procedureDescription.fld005059_Rec).First(); + var itemData = new SapProcessRouteItemData() { - VORNR = input[i].Marker, - LTXA1 = procedureDescription[0]._System_ObjDescription, - ARBPL = workCenter[0]._System_objNBS, - VGW01 = input[i].fld005571.ToString(), - VGE01 = input[i].fld005572, - STEUS = input[i].fld005573, - BMSCH = input[i].fld005575.ToString() + VORNR = item.VORNR, + LTXA1 = procedureDescription._System_ObjDescription, + ARBPL = workCenter._System_objNBS, + VGW01 = item.VGW01, + VGE01 = item.VGE01, + STEUS = item.STEUS, + BMSCH = item.BMSCH }; itemDataList.Add(itemData); + } //获取时间戳精确到毫秒,sap要求每次调用生成不重复guid string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); - var Datuv = ParentData.fld005680.ToString(); + var Datuv = data.Datuv.ToString(); + if (!string.IsNullOrEmpty(Datuv)) { - Datuv = ParentData.fld005680.ToDateTime().ToString("yyyy-MM-dd"); + Datuv = data.Datuv.ToDateTime().ToString("yyyy-MM-dd"); } var isreq = new SapProcessRouteIS_REQ() @@ -862,25 +1531,27 @@ public class ProductDesignLibraryService : IDynamicApiController, ITransient Note2 = "", Note3 = "", Zwbid = millisecondTimestamp, - Matnr = ParentData._System_objNBS, - Werks = ParentData._SWPDM_1187_SAP___, + Matnr = data._System_objNBS, + Werks = data.Werks, Datuv = Datuv, Plnal = "", ItemList = itemDataList }; + var apiOutput = await _sapService.SapProcessRouteApi(isreq); string codeVal = apiOutput.code == "S" ? "成功" : "失败"; - await _obj137Rep.AsUpdateable() - .SetColumns(it => new Obj137 - { - fld005540 = DateTime.Now, - fld005536 = codeVal, - fld005537 = "N", - fld005538 = apiOutput.msg - }) - .Where(it => it.idRecord == ParentData.idRecord) - .ExecuteCommandAsync(); + + db.CopyNew().Updateable() + .SetColumns(it => new Obj137 + { + fld005540 = DateTime.Now, + fld005536 = codeVal, + fld005537 = "N", + fld005538 = apiOutput.msg + }) + .Where(it => it.idRecord == data.idRecord) + .ExecuteCommand(); var msg = apiOutput.msg; if (apiOutput.msg == "") { @@ -894,137 +1565,8 @@ public class ProductDesignLibraryService : IDynamicApiController, ITransient result = apiOutput.result }; return output; + } - - /// - /// 产品设计库-定时同步工艺路线到SAP - /// - /// - [ApiDescriptionSettings(Name = "TimingSyncToSAPProcessRoute"), HttpGet] - [DisplayName("产品设计库-定时同步工艺路线到SAP")] - [AllowAnonymous] - public async Task> TimingSyncToSAPProcessRoute() - { - var sapOutputList = new List(); - var sapUserName = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName); - // 配置 - var configid = await _configurationsRep.AsQueryable().Where(x => x.ObjectId == 137 && x.ConfigSystemName == "pBOM").FirstAsync(); - - //查询需要同步的产品 - var materialData = await _obj137Rep.AsQueryable() - .Where(x => - x.CheckedStatus == 0 - && x.deleted == false - && x.IsLatestVersion == true - && x._system_objConfigurationName == "默认" - && !x.SWPDMFileName.Contains("SLDDRW") - && (x._SWPDM_1202_SW_____ != "不展开" || x._SWPDM_1202_SW_____ == null) - && x.fld005530 == "N" - && x.fld005529 == "成功" - && (x.fld005537 == "A" || x.fld005537 == "M") - ) - .ToListAsync(); - //分组查询最大版本的物料 - var groupedData = materialData.GroupBy(item => item.RecordGuid) - .Select(group => group.OrderByDescending(item => item.VersionIndex).First()) - .ToList(); - - foreach (var item in groupedData) - { - // 获取版本号 - var versionIndex = item.VersionIndex; - // 查询 BOM - var processRouteData = await _configurationDataRep.AsQueryable() - .Where(x => x.ConfigId == configid.ConfigID && x.ParentGuid == item.RecordGuid && x.isDeleted == false && x.ParentVersion == versionIndex).ToListAsync(); - if (processRouteData.Count == 0) - { - continue; - } - var itemDataList = new List(); - - foreach (var processRouteItem in processRouteData) - { - var verification = await _dataValidationService.VerificationMaterial(processRouteItem.ChildObjID, processRouteItem.PartNumber, processRouteItem.ChildGuid); - if (verification == "不存在") - { - continue; - } - //获取工序描述 - var procedureDescription = await _obj122Rep.AsQueryable().Where(x => x.RecordGuid == processRouteItem.ChildGuid).ToListAsync(); - //获取工作中心 - var workCenter = await _obj121Rep.AsQueryable().Where(x => x.RecordGuid == procedureDescription[0].fld005059_Rec).ToListAsync(); - var itemData = new SapProcessRouteItemData() - { - VORNR = processRouteItem.Marker, - LTXA1 = procedureDescription[0]._System_ObjDescription, - ARBPL = workCenter[0]._System_objNBS, - VGW01 = processRouteItem.fld005571.ToString(), - VGE01 = processRouteItem.fld005572, - STEUS = processRouteItem.fld005573, - BMSCH = processRouteItem.fld005575.ToString() - - }; - itemDataList.Add(itemData); - } - //获取时间戳精确到毫秒,sap要求每次调用生成不重复guid - string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); - - var Datuv = item.fld005680.ToString(); - - if (!string.IsNullOrEmpty(Datuv)) - { - Datuv = item.fld005680.ToDateTime().ToString("yyyy-MM-dd"); - } - var isreq = new SapProcessRouteIS_REQ() - { - ReqKeyId = "", - BusinessId = "", - MessageId = "", - SndPrn = "PLM", - RcvPrn = "SAP", - ReqUser = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName), - Note1 = "", - Note2 = "", - Note3 = "", - Zwbid = millisecondTimestamp, - Matnr = item._System_objNBS, - Werks = item._SWPDM_1187_SAP___, - Datuv = Datuv, - Plnal = "", - - ItemList = itemDataList - }; - - var apiOutput = await _sapService.SapProcessRouteApi(isreq); - string codeVal = apiOutput.code == "S" ? "成功" : "失败"; - await _obj137Rep.AsUpdateable() - .SetColumns(it => new Obj137 - { - fld005540 = DateTime.Now, - fld005536 = codeVal, - fld005537 = "N", - fld005538 = apiOutput.msg - }) - .Where(it => it.idRecord == item.idRecord) - .ExecuteCommandAsync(); - var msg = apiOutput.msg; - if (apiOutput.msg == "") - { - msg = "同步成功"; - } - var output = new SapOutput() - { - parameter = apiOutput.parameter, - code = codeVal, - msg = msg, - result = apiOutput.result - }; - - sapOutputList.Add(output); - } - return sapOutputList; - } - /// /// 创建排版软件 /// diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Service/ProductionMaterialsManagement/ProductionMaterialsManagementService.cs b/admin.net.pro/Admin.NET/Vistar.Application/Service/ProductionMaterialsManagement/ProductionMaterialsManagementService.cs index 8ddc1ec..8a70e2e 100644 --- a/admin.net.pro/Admin.NET/Vistar.Application/Service/ProductionMaterialsManagement/ProductionMaterialsManagementService.cs +++ b/admin.net.pro/Admin.NET/Vistar.Application/Service/ProductionMaterialsManagement/ProductionMaterialsManagementService.cs @@ -10,6 +10,8 @@ using Furion.DependencyInjection; using Furion.DynamicApiController; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.DependencyInjection; +using SqlSugar; using System; using System.Collections.Generic; using System.ComponentModel; @@ -34,13 +36,15 @@ public class ProductionMaterialsManagementService : IDynamicApiController, ITran public SapService.SapService _sapService; private readonly SqlSugarRepository _configurationsRep; private readonly SqlSugarRepository _configurationDataRep; + private readonly IServiceScopeFactory _scopeFactory; public ProductionMaterialsManagementService( SqlSugarRepository obj112Rep, SysConfigService sysConfigService, SapService.SapService sapService, SqlSugarRepository configurationsRep, - SqlSugarRepository configurationDataRep + SqlSugarRepository configurationDataRep, + IServiceScopeFactory scopeFactory ) { _obj112Rep = obj112Rep; @@ -48,6 +52,7 @@ public class ProductionMaterialsManagementService : IDynamicApiController, ITran _sapService = sapService; _configurationsRep = configurationsRep; _configurationDataRep = configurationDataRep; + _scopeFactory = scopeFactory; } /// /// 分页查询生产物料管理 @@ -175,16 +180,20 @@ public class ProductionMaterialsManagementService : IDynamicApiController, ITran [DisplayName("生产物料管理-批量同步到SAP")] public async Task> BatchSyncToSAP(List input) { + using var serviceScope = _scopeFactory.CreateScope(); + var sysEnumService = serviceScope.ServiceProvider.GetRequiredService(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + const string lengthError = "物料描述长度大于40,请检查!"; const string synchronized = "该项目编号已同步或已停用!"; var SapOutputList = new List(); var Requser = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName); - for (int i = 0; i < input.Count; i++) + + var tasks = input.Select(async item => { - // 验证物料描述长度 - if (input[i].fld004598.Length > 40) + if (item.fld004598.Length > 40) { - await _obj112Rep.AsUpdateable() + db.CopyNew().Updateable() .SetColumns(it => new Obj112 { fld004606 = DateTime.Now, @@ -192,29 +201,29 @@ public class ProductionMaterialsManagementService : IDynamicApiController, ITran fld004605 = lengthError, fld004604 = "失败" }) - .Where(it => it.idRecord == input[i].idRecord) - .ExecuteCommandAsync().ConfigureAwait(false); + .Where(it => it.idRecord == item.idRecord) + .ExecuteCommand(); - SapOutputList.Add(new SapOutput() + return new SapOutput { - materialCode = input[i]._System_objNBS, + materialCode = item._System_objNBS, code = "失败", msg = lengthError, result = lengthError - }); - continue; + }; } - if (input[i].fld004607 == "N" || input[i].fld004607 == "D" || input[i].fld004607 == null) + + if (item.fld004607 == "N" || item.fld004607 == "D" || item.fld004607 == null) { - SapOutputList.Add(new SapOutput() + return new SapOutput { - materialCode = input[i]._System_objNBS, + materialCode = item._System_objNBS, code = "失败", msg = synchronized, result = synchronized - }); - continue; + }; } + //获取时间戳精确到毫秒,sap要求每次调用生成不重复guid string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); var sapMaterialInput = new SapMaterialInput() @@ -229,27 +238,27 @@ public class ProductionMaterialsManagementService : IDynamicApiController, ITran Note2 = "", Note3 = "", Zwbid = millisecondTimestamp, - Matnr = input[i]._System_objNBS, - Mbrsh = input[i].fld004595, - Mtart = input[i].fld004596, - Maktx = input[i].fld004598, - Meins = input[i].fld004594, - Matkl = input[i].fld004599, - Bismt = input[i]._System_ObjDescription, - Groes = input[i].fld005323, - Normt = input[i].fld004592, - Ferth = input[i].fld004593, - Zeinr = input[i].fld004903, - Mstae = input[i].fld004696, - Raube = input[i].fld004904, - Mhdrz = input[i].fld004905.ToString(), - Mhdhb = input[i].fld004907.ToString(), - Werks = input[i].fld004597, - Beskz = input[i].fld004600, - Sobsl = input[i].fld004601, - Schgt = input[i].fld004602, - Rgekz = input[i].fld004603, - Zbom = input[i].fld004695 + Matnr = item._System_objNBS, + Mbrsh = item.fld004595, + Mtart = item.fld004596, + Maktx = item.fld004598, + Meins = item.fld004594, + Matkl = item.fld004599, + Bismt = item._System_ObjDescription, + Groes = item.fld005323, + Normt = item.fld004592, + Ferth = item.fld004593, + Zeinr = item.fld004903, + Mstae = item.fld004696, + Raube = item.fld004904, + Mhdrz = item.fld004905.ToString(), + Mhdhb = item.fld004907.ToString(), + Werks = item.fld004597, + Beskz = item.fld004600, + Sobsl = item.fld004601, + Schgt = item.fld004602, + Rgekz = item.fld004603, + Zbom = item.fld004695 }; var sapOutput = await _sapService.SapMaterialApi(sapMaterialInput); string codeVal = sapOutput.code == "S" ? "成功" : "失败"; @@ -259,27 +268,130 @@ public class ProductionMaterialsManagementService : IDynamicApiController, ITran { msg = "同步成功"; } - await _obj112Rep.AsUpdateable() + db.CopyNew().Updateable() .SetColumns(it => new Obj112 - { - fld004606 = DateTime.Now, - fld004604 = codeVal, - fld004607 = "N", - fld004605 = msg - }) - .Where(it => it.idRecord == input[i].idRecord) - .ExecuteCommandAsync(); - var output = new SapOutput() + { + fld004606 = DateTime.Now, + fld004604 = codeVal, + fld004607 = "N", + fld004605 = msg + }) + .Where(it => it.idRecord == item.idRecord) + .ExecuteCommand(); + + return new SapOutput() { parameter = sapOutput.parameter, - materialCode = input[0]._System_objNBS, + materialCode = item._System_objNBS, code = codeVal, msg = msg, result = sapOutput.result }; - SapOutputList.Add(output); - } - return SapOutputList; + + }); + var materialOutput = await Task.WhenAll(tasks); + return materialOutput.ToList(); + //for (int i = 0; i < input.Count; i++) + //{ + // // 验证物料描述长度 + // if (input[i].fld004598.Length > 40) + // { + // await _obj112Rep.AsUpdateable() + // .SetColumns(it => new Obj112 + // { + // fld004606 = DateTime.Now, + // fld004607 = "N", + // fld004605 = lengthError, + // fld004604 = "失败" + // }) + // .Where(it => it.idRecord == input[i].idRecord) + // .ExecuteCommandAsync().ConfigureAwait(false); + + // SapOutputList.Add(new SapOutput() + // { + // materialCode = input[i]._System_objNBS, + // code = "失败", + // msg = lengthError, + // result = lengthError + // }); + // continue; + // } + // if (input[i].fld004607 == "N" || input[i].fld004607 == "D" || input[i].fld004607 == null) + // { + // SapOutputList.Add(new SapOutput() + // { + // materialCode = input[i]._System_objNBS, + // code = "失败", + // msg = synchronized, + // result = synchronized + // }); + // continue; + // } + // //获取时间戳精确到毫秒,sap要求每次调用生成不重复guid + // string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); + // var sapMaterialInput = new SapMaterialInput() + // { + // Reqkeyid = "", + // Businessid = "", + // Messageid = "", + // Sndprn = "PLM", + // Rcvprn = "SAP", + // Requser = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName), + // Note1 = "", + // Note2 = "", + // Note3 = "", + // Zwbid = millisecondTimestamp, + // Matnr = input[i]._System_objNBS, + // Mbrsh = input[i].fld004595, + // Mtart = input[i].fld004596, + // Maktx = input[i].fld004598, + // Meins = input[i].fld004594, + // Matkl = input[i].fld004599, + // Bismt = input[i]._System_ObjDescription, + // Groes = input[i].fld005323, + // Normt = input[i].fld004592, + // Ferth = input[i].fld004593, + // Zeinr = input[i].fld004903, + // Mstae = input[i].fld004696, + // Raube = input[i].fld004904, + // Mhdrz = input[i].fld004905.ToString(), + // Mhdhb = input[i].fld004907.ToString(), + // Werks = input[i].fld004597, + // Beskz = input[i].fld004600, + // Sobsl = input[i].fld004601, + // Schgt = input[i].fld004602, + // Rgekz = input[i].fld004603, + // Zbom = input[i].fld004695 + // }; + // var sapOutput = await _sapService.SapMaterialApi(sapMaterialInput); + // string codeVal = sapOutput.code == "S" ? "成功" : "失败"; + // string msg = sapOutput.msg; + + // if (sapOutput.msg == "") + // { + // msg = "同步成功"; + // } + // await _obj112Rep.AsUpdateable() + // .SetColumns(it => new Obj112 + // { + // fld004606 = DateTime.Now, + // fld004604 = codeVal, + // fld004607 = "N", + // fld004605 = msg + // }) + // .Where(it => it.idRecord == input[i].idRecord) + // .ExecuteCommandAsync(); + // var output = new SapOutput() + // { + // parameter = sapOutput.parameter, + // materialCode = input[0]._System_objNBS, + // code = codeVal, + // msg = msg, + // result = sapOutput.result + // }; + // SapOutputList.Add(output); + //} + //return SapOutputList; } /// @@ -291,18 +403,22 @@ public class ProductionMaterialsManagementService : IDynamicApiController, ITran [AllowAnonymous] public async Task> TimingSyncToSAP() { - var input = await _obj112Rep.AsQueryable() + using var serviceScope = _scopeFactory.CreateScope(); + var sysEnumService = serviceScope.ServiceProvider.GetRequiredService(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + + var input = db.Queryable() .Where(x => (x.CheckedStatus == 7 || x.CheckedStatus == 8) && x.deleted == false && x.IsLatestVersion == true && (x.fld004607 == "A" || x.fld004607 == "M") && x.fld004973 == "发布") - .ToListAsync(); + .ToList(); const string lengthError = "物料描述长度大于40,请检查!"; var SapOutputList = new List(); var Requser = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName); - for (int i = 0; i < input.Count; i++) + + var tasks = input.Select(async item => { - // 验证物料描述长度 - if (input[i].fld004598.Length > 40) + if (item.fld004598.Length > 40) { - await _obj112Rep.AsUpdateable() + db.CopyNew().Updateable() .SetColumns(it => new Obj112 { fld004606 = DateTime.Now, @@ -310,17 +426,16 @@ public class ProductionMaterialsManagementService : IDynamicApiController, ITran fld004605 = lengthError, fld004604 = "失败" }) - .Where(it => it.idRecord == input[i].idRecord) - .ExecuteCommandAsync().ConfigureAwait(false); + .Where(it => it.idRecord == item.idRecord) + .ExecuteCommand(); - SapOutputList.Add(new SapOutput() + return new SapOutput { - materialCode = input[i]._System_objNBS, + materialCode = item._System_objNBS, code = "失败", msg = lengthError, result = lengthError - }); - continue; + }; } //获取时间戳精确到毫秒,sap要求每次调用生成不重复guid @@ -337,27 +452,27 @@ public class ProductionMaterialsManagementService : IDynamicApiController, ITran Note2 = "", Note3 = "", Zwbid = millisecondTimestamp, - Matnr = input[i]._System_objNBS, - Mbrsh = input[i].fld004595, - Mtart = input[i].fld004596, - Maktx = input[i].fld004598, - Meins = input[i].fld004594, - Matkl = input[i].fld004599, - Bismt = input[i]._System_ObjDescription, - Groes = input[i].fld005323, - Normt = input[i].fld004592, - Ferth = input[i].fld004593, - Zeinr = input[i].fld004903, - Mstae = input[i].fld004696, - Raube = input[i].fld004904, - Mhdrz = input[i].fld004905.ToString(), - Mhdhb = input[i].fld004907.ToString(), - Werks = input[i].fld004597, - Beskz = input[i].fld004600, - Sobsl = input[i].fld004601, - Schgt = input[i].fld004602, - Rgekz = input[i].fld004603, - Zbom = input[i].fld004695 + Matnr = item._System_objNBS, + Mbrsh = item.fld004595, + Mtart = item.fld004596, + Maktx = item.fld004598, + Meins = item.fld004594, + Matkl = item.fld004599, + Bismt = item._System_ObjDescription, + Groes = item.fld005323, + Normt = item.fld004592, + Ferth = item.fld004593, + Zeinr = item.fld004903, + Mstae = item.fld004696, + Raube = item.fld004904, + Mhdrz = item.fld004905.ToString(), + Mhdhb = item.fld004907.ToString(), + Werks = item.fld004597, + Beskz = item.fld004600, + Sobsl = item.fld004601, + Schgt = item.fld004602, + Rgekz = item.fld004603, + Zbom = item.fld004695 }; var sapOutput = await _sapService.SapMaterialApi(sapMaterialInput); string codeVal = sapOutput.code == "S" ? "成功" : "失败"; @@ -367,7 +482,7 @@ public class ProductionMaterialsManagementService : IDynamicApiController, ITran { msg = "同步成功"; } - await _obj112Rep.AsUpdateable() + db.CopyNew().Updateable() .SetColumns(it => new Obj112 { fld004606 = DateTime.Now, @@ -375,20 +490,114 @@ public class ProductionMaterialsManagementService : IDynamicApiController, ITran fld004607 = "N", fld004605 = msg }) - .Where(it => it.idRecord == input[i].idRecord) - .ExecuteCommandAsync(); - var output = new SapOutput() + .Where(it => it.idRecord == item.idRecord) + .ExecuteCommand(); + + return new SapOutput() { parameter = sapOutput.parameter, - materialCode = input[0]._System_objNBS, + materialCode = item._System_objNBS, code = codeVal, msg = msg, result = sapOutput.result }; - SapOutputList.Add(output); - } - return SapOutputList; + }); + var materialOutput = await Task.WhenAll(tasks); + return materialOutput.ToList(); + + //for (int i = 0; i < input.Count; i++) + //{ + // // 验证物料描述长度 + // if (input[i].fld004598.Length > 40) + // { + // await _obj112Rep.AsUpdateable() + // .SetColumns(it => new Obj112 + // { + // fld004606 = DateTime.Now, + // fld004607 = "N", + // fld004605 = lengthError, + // fld004604 = "失败" + // }) + // .Where(it => it.idRecord == input[i].idRecord) + // .ExecuteCommandAsync().ConfigureAwait(false); + + // SapOutputList.Add(new SapOutput() + // { + // materialCode = input[i]._System_objNBS, + // code = "失败", + // msg = lengthError, + // result = lengthError + // }); + // continue; + // } + + // //获取时间戳精确到毫秒,sap要求每次调用生成不重复guid + // string millisecondTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString(); + // var sapMaterialInput = new SapMaterialInput() + // { + // Reqkeyid = "", + // Businessid = "", + // Messageid = "", + // Sndprn = "PLM", + // Rcvprn = "SAP", + // Requser = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName), + // Note1 = "", + // Note2 = "", + // Note3 = "", + // Zwbid = millisecondTimestamp, + // Matnr = input[i]._System_objNBS, + // Mbrsh = input[i].fld004595, + // Mtart = input[i].fld004596, + // Maktx = input[i].fld004598, + // Meins = input[i].fld004594, + // Matkl = input[i].fld004599, + // Bismt = input[i]._System_ObjDescription, + // Groes = input[i].fld005323, + // Normt = input[i].fld004592, + // Ferth = input[i].fld004593, + // Zeinr = input[i].fld004903, + // Mstae = input[i].fld004696, + // Raube = input[i].fld004904, + // Mhdrz = input[i].fld004905.ToString(), + // Mhdhb = input[i].fld004907.ToString(), + // Werks = input[i].fld004597, + // Beskz = input[i].fld004600, + // Sobsl = input[i].fld004601, + // Schgt = input[i].fld004602, + // Rgekz = input[i].fld004603, + // Zbom = input[i].fld004695 + // }; + // var sapOutput = await _sapService.SapMaterialApi(sapMaterialInput); + // string codeVal = sapOutput.code == "S" ? "成功" : "失败"; + // string msg = sapOutput.msg; + + // if (sapOutput.msg == "") + // { + // msg = "同步成功"; + // } + // await _obj112Rep.AsUpdateable() + // .SetColumns(it => new Obj112 + // { + // fld004606 = DateTime.Now, + // fld004604 = codeVal, + // fld004607 = "N", + // fld004605 = msg + // }) + // .Where(it => it.idRecord == input[i].idRecord) + // .ExecuteCommandAsync(); + // var output = new SapOutput() + // { + // parameter = sapOutput.parameter, + // materialCode = input[0]._System_objNBS, + // code = codeVal, + // msg = msg, + // result = sapOutput.result + // }; + // SapOutputList.Add(output); + //} + + //return SapOutputList; } } diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Service/ProjectManagement/ProjectManagementService.cs b/admin.net.pro/Admin.NET/Vistar.Application/Service/ProjectManagement/ProjectManagementService.cs index 8f9a4d9..56c8335 100644 --- a/admin.net.pro/Admin.NET/Vistar.Application/Service/ProjectManagement/ProjectManagementService.cs +++ b/admin.net.pro/Admin.NET/Vistar.Application/Service/ProjectManagement/ProjectManagementService.cs @@ -6,6 +6,7 @@ using Furion.DependencyInjection; using Furion.DynamicApiController; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; using RazorEngine; @@ -423,10 +424,12 @@ public class ProjectManagementService : IDynamicApiController, ITransient /// [ApiDescriptionSettings(Name = "TimingSyncToSAP"), HttpGet] [DisplayName("项目管理-定时同步到SAP")] - [AllowAnonymous] public async Task> TimingSyncToSAP() { - var input = await _obj109Rep.AsQueryable() + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + + var input = await db.CopyNew().Queryable() .Where(x => (x.CheckedStatus == 0 || x.CheckedStatus == 1) && x.deleted == false && x.IsLatestVersion == true && x.fld005040 == "发布" && (x.fld004510 == "A" || x.fld004510 == "M")) .ToListAsync(); const string lengthError = "物料描述长度大于40,请检查!"; @@ -437,7 +440,7 @@ public class ProjectManagementService : IDynamicApiController, ITransient // 验证物料描述长度 if (input[i].fld004502.Length > 40) { - await _obj109Rep.AsUpdateable() + db.CopyNew().Updateable() .SetColumns(it => new Obj109 { fld004508 = DateTime.Now, @@ -446,7 +449,7 @@ public class ProjectManagementService : IDynamicApiController, ITransient fld004509 = "失败" }) .Where(it => it.idRecord == input[i].idRecord) - .ExecuteCommandAsync().ConfigureAwait(false); + .ExecuteCommand(); SapOutputList.Add(new SapOutput() { @@ -502,7 +505,7 @@ public class ProjectManagementService : IDynamicApiController, ITransient { msg = "同步成功"; } - await _obj109Rep.AsUpdateable() + db.CopyNew().Updateable() .SetColumns(it => new Obj109 { fld004508 = DateTime.Now, @@ -511,7 +514,7 @@ public class ProjectManagementService : IDynamicApiController, ITransient fld004507 = msg }) .Where(it => it.idRecord == input[i].idRecord) - .ExecuteCommandAsync(); + .ExecuteCommand(); var output = new SapOutput() { parameter = sapOutput.parameter, @@ -535,12 +538,13 @@ public class ProjectManagementService : IDynamicApiController, ITransient [AllowAnonymous] public async Task> TimingSyncToSAPBom() { + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + var sapOutputList = new List(); var sapUserName = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName); - // 配置 - var configid = await _configurationsRep.AsQueryable().Where(x => x.ObjectId == 109 && x.ConfigSystemName == "mBOM").FirstAsync(); - var materialData = await _obj109Rep.AsQueryable() + var materialData = await db.CopyNew().Queryable() .Where(x => (x.CheckedStatus == 0 || x.CheckedStatus == 1) && x.deleted == false && x.IsLatestVersion == true && x.fld005040 == "发布" && x.fld004510 == "N" && x.fld004509 == "成功" && (x.fld004514 == "A" || x.fld004514 == "M")) .ToListAsync(); var groupedData = materialData.GroupBy(item => item.RecordGuid) @@ -554,14 +558,14 @@ public class ProjectManagementService : IDynamicApiController, ITransient // 获取 ECN guid var ecnGuid = item.fld004947_Rec; // 查询 BOM - var bomData = await _configurationDataRep.AsQueryable() - .Where(x => x.ConfigId == configid.ConfigID && x.ParentGuid == item.RecordGuid && x.isDeleted == false && x.ParentVersion == versionIndex).ToListAsync(); + var bomData = await db.CopyNew().Queryable() + .Where(x => x.ConfigId == 2 && x.ParentGuid == item.RecordGuid && x.isDeleted == false && x.ParentVersion == versionIndex).ToListAsync(); if (bomData.Count == 0) { continue; } // 查询 ECN 编码 - var ecnData = await _obj118Rep.AsQueryable().Where(x => x.RecordGuid == ecnGuid && x.deleted == false).OrderByDescending(x => x.VersionIndex).FirstAsync(); + var ecnData = await db.CopyNew().Queryable().Where(x => x.RecordGuid == ecnGuid && x.deleted == false).OrderByDescending(x => x.VersionIndex).FirstAsync(); var ecn = ecnData != null ? ecnData._System_objNBS : ""; var itemDataList = new List(); @@ -613,7 +617,7 @@ public class ProjectManagementService : IDynamicApiController, ITransient var apiOutput = await _sapService.SapBomApi(isreq); string codeVal = apiOutput.code == "S" ? "成功" : "失败"; - await _obj109Rep.AsUpdateable() + db.CopyNew().Updateable() .SetColumns(it => new Obj109 { fld004513 = DateTime.Now, @@ -622,7 +626,7 @@ public class ProjectManagementService : IDynamicApiController, ITransient fld004512 = apiOutput.msg }) .Where(it => it.idRecord == item.idRecord) - .ExecuteCommandAsync(); + .ExecuteCommand(); var msg = apiOutput.msg; if (string.IsNullOrEmpty(msg)) @@ -761,16 +765,17 @@ public class ProjectManagementService : IDynamicApiController, ITransient /// [ApiDescriptionSettings(Name = "TimingSyncToSAPProcessRoute"), HttpGet] [DisplayName("项目管理-定时同步工艺路线到SAP")] - [AllowAnonymous] public async Task> TimingSyncToSAPProcessRoute() { + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + var sapOutputList = new List(); var sapUserName = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName); // 配置 - var configid = await _configurationsRep.AsQueryable().Where(x => x.ObjectId == 109 && x.ConfigSystemName == "pBOM").FirstAsync(); //查询需要同步的产品 - var materialData = await _obj109Rep.AsQueryable() + var materialData = await db.CopyNew().Queryable() .Where(x => (x.CheckedStatus == 0 || x.CheckedStatus == 1) && x.deleted == false && x.IsLatestVersion == true && x.fld005040 == "发布" && x.fld004510 == "N" && x.fld004509 == "成功" && (x.fld004514 == "A" || x.fld004514 == "M")) .ToListAsync(); //分组查询最大版本的物料 @@ -783,8 +788,8 @@ public class ProjectManagementService : IDynamicApiController, ITransient // 获取版本号 var versionIndex = item.VersionIndex; // 查询 BOM - var processRouteData = await _configurationDataRep.AsQueryable() - .Where(x => x.ConfigId == configid.ConfigID && x.ParentGuid == item.RecordGuid && x.isDeleted == false && x.ParentVersion == versionIndex).ToListAsync(); + var processRouteData = await db.CopyNew().Queryable() + .Where(x => x.ConfigId == 5 && x.ParentGuid == item.RecordGuid && x.isDeleted == false && x.ParentVersion == versionIndex).ToListAsync(); if (processRouteData.Count == 0) { continue; @@ -799,9 +804,9 @@ public class ProjectManagementService : IDynamicApiController, ITransient continue; } //获取工序描述 - var procedureDescription = await _obj122Rep.AsQueryable().Where(x => x.RecordGuid == processRouteItem.ChildGuid).ToListAsync(); + var procedureDescription = await db.CopyNew().Queryable().Where(x => x.RecordGuid == processRouteItem.ChildGuid).ToListAsync(); //获取工作中心 - var workCenter = await _obj121Rep.AsQueryable().Where(x => x.RecordGuid == procedureDescription[0].fld005059_Rec).ToListAsync(); + var workCenter = await db.CopyNew().Queryable().Where(x => x.RecordGuid == procedureDescription[0].fld005059_Rec).ToListAsync(); var itemData = new SapProcessRouteItemData() { VORNR = processRouteItem.Marker, @@ -846,7 +851,7 @@ public class ProjectManagementService : IDynamicApiController, ITransient var apiOutput = await _sapService.SapProcessRouteApi(isreq); string codeVal = apiOutput.code == "S" ? "成功" : "失败"; - await _obj109Rep.AsUpdateable() + db.CopyNew().Updateable() .SetColumns(it => new Obj109 { fld004518 = DateTime.Now, @@ -855,7 +860,7 @@ public class ProjectManagementService : IDynamicApiController, ITransient fld004516 = apiOutput.msg }) .Where(it => it.idRecord == item.idRecord) - .ExecuteCommandAsync(); + .ExecuteCommand(); var msg = apiOutput.msg; if (apiOutput.msg == "") { @@ -881,9 +886,8 @@ public class ProjectManagementService : IDynamicApiController, ITransient public async Task> WbsInSapCreate() { using var serviceScope = _scopeFactory.CreateScope(); - var sysEnumService = serviceScope.ServiceProvider.GetRequiredService(); var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); - var syncData = db.Queryable() + var syncData = await db.CopyNew().Queryable() .InnerJoin((x, y) => x.RecordGuid == y.RecordGuid) .InnerJoin((x, y, z) => y.ChildRecordGuid == z.RecordGuid) .Where((x, y) => x.deleted == false && x.fld006774 == "A" && (x.fld006993 == "" || x.fld006993 == null) && (x.CheckedStatus == 0 || x.CheckedStatus == 1) && y.indentLevel < 4) @@ -908,7 +912,7 @@ public class ProjectManagementService : IDynamicApiController, ITransient System_objNBS109 = x._System_objNBS }) - .ToList(); + .ToListAsync(); var syncList = syncData.GroupBy(record => record.RecordGuid) .Select(group => new { @@ -1157,9 +1161,13 @@ public class ProjectManagementService : IDynamicApiController, ITransient } private async Task UpdateObj109(long idRecord, string msg, string creationState) { + await Task.Delay(0); + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + if (creationState == "创建成功") { - await _obj109Rep.AsUpdateable() + db.CopyNew().Updateable() .SetColumns(it => new Obj109 { fld006775 = DateTime.Now, @@ -1168,28 +1176,32 @@ public class ProjectManagementService : IDynamicApiController, ITransient fld006993 = "成功" }) .Where(it => it.idRecord == idRecord) - .ExecuteCommandAsync(); + .ExecuteCommand(); } if (creationState == "修改成功" || creationState == "创建失败" || creationState == "修改失败") { - await _obj109Rep.AsUpdateable() - .SetColumns(it => new Obj109 + db.CopyNew().Updateable() + .SetColumns(it => new Obj109 { fld006775 = DateTime.Now, fld006774 = "N", fld006776 = msg }) .Where(it => it.idRecord == idRecord) - .ExecuteCommandAsync(); + .ExecuteCommand(); } } private async Task UpdateObj126(long idRecord, string msg, string creationState) { + await Task.Delay(0); + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + if (creationState == "创建成功") { - await _obj126Rep.AsUpdateable() + db.CopyNew().Updateable() .SetColumns(it => new Obj126 { fld006772 = DateTime.Now, @@ -1198,19 +1210,19 @@ public class ProjectManagementService : IDynamicApiController, ITransient fld006990 = creationState }) .Where(it => it.idRecord == idRecord) - .ExecuteCommandAsync(); + .ExecuteCommand(); } if (creationState == "创建失败" || creationState == "修改成功"|| creationState == "修改失败") { - await _obj126Rep.AsUpdateable() - .SetColumns(it => new Obj126 + db.CopyNew().Updateable() + .SetColumns(it => new Obj126 { fld006772 = DateTime.Now, fld006771 = "N", fld006773 = msg }) .Where(it => it.idRecord == idRecord) - .ExecuteCommandAsync(); + .ExecuteCommand(); } } @@ -1221,9 +1233,8 @@ public class ProjectManagementService : IDynamicApiController, ITransient public async Task> WbsInSapUpdate() { using var serviceScope = _scopeFactory.CreateScope(); - var sysEnumService = serviceScope.ServiceProvider.GetRequiredService(); var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); - var syncData = db.Queryable() + var syncData = await db.CopyNew().Queryable() .InnerJoin((x, y) => x.RecordGuid == y.RecordGuid) .InnerJoin((x, y, z) => y.ChildRecordGuid == z.RecordGuid) .Where((x, y) => x.deleted == false && x.fld006774 == "A" && (x.CheckedStatus == 0 || x.CheckedStatus == 1) && x.fld006993 == "成功" && y.indentLevel < 4) //&& (x.fld006776 == "" || x.fld006776 == null) @@ -1251,7 +1262,7 @@ public class ProjectManagementService : IDynamicApiController, ITransient fld006771=z.fld006771 }) - .ToList(); + .ToListAsync(); var syncList = syncData.GroupBy(record => record.RecordGuid) .Select(group => new { diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Service/PurchasingRequisition/PurchasingRequisitionService.cs b/admin.net.pro/Admin.NET/Vistar.Application/Service/PurchasingRequisition/PurchasingRequisitionService.cs index 3fb466a..e20b3b3 100644 --- a/admin.net.pro/Admin.NET/Vistar.Application/Service/PurchasingRequisition/PurchasingRequisitionService.cs +++ b/admin.net.pro/Admin.NET/Vistar.Application/Service/PurchasingRequisition/PurchasingRequisitionService.cs @@ -9,7 +9,10 @@ using Admin.NET.Core.Service; using Furion.DependencyInjection; using Furion.DynamicApiController; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; using NewLife.Xml; +using SqlSugar; using System; using System.Collections.Generic; using System.Linq; @@ -41,6 +44,7 @@ public class PurchasingRequisitionService : IDynamicApiController, ITransient public SqlSugarRepository _obj122Rep; public SqlSugarRepository _obj121Rep; public SqlSugarRepository _obj81Rep; + private readonly IServiceScopeFactory _scopeFactory; public PurchasingRequisitionService( SqlSugarRepository obj119Rep, @@ -53,7 +57,8 @@ public class PurchasingRequisitionService : IDynamicApiController, ITransient SqlSugarRepository obj122Rep, SqlSugarRepository obj121Rep, SqlSugarRepository obj109Rep, - SqlSugarRepository obj81Rep + SqlSugarRepository obj81Rep, + IServiceScopeFactory scopeFactory ) { @@ -68,6 +73,7 @@ public class PurchasingRequisitionService : IDynamicApiController, ITransient _obj121Rep = obj121Rep; _obj109Rep = obj109Rep; _obj81Rep = obj81Rep; + _scopeFactory = scopeFactory; } /// /// 创建研发采购申请 @@ -75,6 +81,9 @@ public class PurchasingRequisitionService : IDynamicApiController, ITransient /// public async Task> TimingSyncToSAPPurchasingRequisition() { + using var serviceScope = _scopeFactory.CreateScope(); + var db = serviceScope.ServiceProvider.GetRequiredService().AsTenant().GetConnectionScope("启威星 1.94.4.74").CopyNew(); + var sapOutputList = new List(); //获取Sap用户名 var sapUserName = await _sysConfigService.GetConfigValueByCode(ConfigConst.SapUserName); @@ -83,7 +92,7 @@ public class PurchasingRequisitionService : IDynamicApiController, ITransient var configid = 10; // 获取符合条件的采购申请单 - var PurchasingRequisitionList = await _obj119Rep.AsQueryable().Where(x => x.fld006416 == "A" && x.deleted == false && x.CheckedStatus == false && x._System_CurrentStage == "结束").ToListAsync(); + var PurchasingRequisitionList = await db.CopyNew().Queryable().Where(x => x.fld006416 == "A" && x.deleted == false && x.CheckedStatus == false && x._System_CurrentStage == "结束").ToListAsync(); foreach (var item in PurchasingRequisitionList) { @@ -110,8 +119,8 @@ public class PurchasingRequisitionService : IDynamicApiController, ITransient }; //查询BOM - var bomData = await _configurationDataRep.AsQueryable().Where(x => x.ConfigId == configid && x.ParentGuid == item.RecordGuid && x.isDeleted == false && x.ParentVersion == item.VersionIndex).ToListAsync(); - var project = await _obj109Rep.AsQueryable().Where(x => x.RecordGuid == item.fld004639_Rec && x.deleted == false).OrderByDescending(x => x.VersionIndex).FirstAsync(); + var bomData = await db.CopyNew().Queryable().Where(x => x.ConfigId == configid && x.ParentGuid == item.RecordGuid && x.isDeleted == false && x.ParentVersion == item.VersionIndex).ToListAsync(); + var project = await db.CopyNew().Queryable().Where(x => x.RecordGuid == item.fld004639_Rec && x.deleted == false).OrderByDescending(x => x.VersionIndex).FirstAsync(); foreach (var bomItem in bomData) { var unit = await _dataValidationService.GetUnit(bomItem.ChildObjID, bomItem.ChildGuid); @@ -133,7 +142,9 @@ public class PurchasingRequisitionService : IDynamicApiController, ITransient Ekorg = bomItem.fld006147, Zzpspnr = project._System_objNBS, Afnam = item.fld006125, - Loekz = bomItem.fld006141 + Loekz = bomItem.fld006141, + Ztext = item.fld007052 + }; itemList.Add(Item); } @@ -148,7 +159,7 @@ public class PurchasingRequisitionService : IDynamicApiController, ITransient } if (item.fld006139 == "I") { - await _obj119Rep.AsUpdateable() + db.CopyNew().Updateable() .SetColumns(it => new Obj119 { fld005934 = DateTime.Now,//同步日期 @@ -158,11 +169,11 @@ public class PurchasingRequisitionService : IDynamicApiController, ITransient fld006138 = sapOutput.banfn//采购申请编号 }) .Where(it => it.idRecord == item.idRecord) - .ExecuteCommandAsync(); + .ExecuteCommand(); } if (item.fld006139 == "U") { - await _obj119Rep.AsUpdateable() + db.CopyNew().Updateable() .SetColumns(it => new Obj119 { fld005934 = DateTime.Now,//同步日期 @@ -171,7 +182,7 @@ public class PurchasingRequisitionService : IDynamicApiController, ITransient fld005935 = msg//同步信息 }) .Where(it => it.idRecord == item.idRecord) - .ExecuteCommandAsync(); + .ExecuteCommand(); } var output = new SapOutput() { diff --git a/admin.net.pro/Admin.NET/Vistar.Application/SolidWorksManageService/SolidWorksManageService.cs b/admin.net.pro/Admin.NET/Vistar.Application/SolidWorksManageService/SolidWorksManageService.cs index ccf4523..2e4db25 100644 --- a/admin.net.pro/Admin.NET/Vistar.Application/SolidWorksManageService/SolidWorksManageService.cs +++ b/admin.net.pro/Admin.NET/Vistar.Application/SolidWorksManageService/SolidWorksManageService.cs @@ -49,8 +49,8 @@ public class SolidWorksManageService : IDynamicApiController, ITransient var SolidWorksManageUserName = await _sysConfigService.GetConfigValueByCode(ConfigConst.SolidWorksManageUserName); var SolidWorksManagePassword = await _sysConfigService.GetConfigValueByCode(ConfigConst.SolidWorksManagePassword); - var SolidWorksManageLicenseId = await _sysConfigService.GetConfigValueByCode(ConfigConst.SolidWorksManageLicenseId); - var SolidWorksManageApiKey = await _sysConfigService.GetConfigValueByCode(ConfigConst.SolidWorksManageApiKey); + var SolidWorksManageLicenseId = "190"; + var SolidWorksManageApiKey = "zesywsWf1dthwXoqd4DJKasEihcuOArxiImrvu8jOUB7oqryVhFAdydL1nPpC5/0gkhIWm6TdPBolBFx+V/FPgcoG370JXnRp/DZ350wi70="; // 构建请求参数字典 var parameter = new Dictionary { diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Util/IsBomAndProcessRouteExistOutput.cs b/admin.net.pro/Admin.NET/Vistar.Application/Util/IsBomAndProcessRouteExistOutput.cs new file mode 100644 index 0000000..ad88501 --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Util/IsBomAndProcessRouteExistOutput.cs @@ -0,0 +1,19 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Vistar.Application.Util; +public class IsBomAndProcessRouteExistOutput +{ + public int objId { get; set; } + public string materialCode { get; set; } + public string isSuccess { get; set; } +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Util/SyncBomData.cs b/admin.net.pro/Admin.NET/Vistar.Application/Util/SyncBomData.cs new file mode 100644 index 0000000..036acfd --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Util/SyncBomData.cs @@ -0,0 +1,123 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Vistar.Application.Util; +public class SyncBomData +{ + /// + /// 主表Id + /// + public long? Id { get; set; } + + /// + /// 物料编码 + /// + public string MaterialCode { get; set; } + + /// + /// guid + /// + public string RecordGuid { get; set; } + + /// + /// Sap同步版本 + /// + public string SyncVersion { get; set; } + + /// + /// 工厂 + /// + public string Werks { get; set; } + + /// + /// 基本数量 + /// + public int? Bmeng { get; set; } + + /// + /// 有效日期 + /// + public DateTime? Datuv { get; set; } + + /// + /// 版本 + /// + public int? VersionIndex { get; set; } + + /// + /// ecn + /// + public string Ecn { get; set; } + + /// + /// ecn Guid + /// + public string ecnGuid { get; set; } + public List Bom { get; set; } +} + +public class BomData +{ + public string PartNumber { get; set; } + public string ParentGuid { get; set; } + public string ChildGuid { get; set; } + public long ChildObjID { get; set; } + public long ConfigId { get; set; } + public int? childVersion { get; set; } + public int? ParentVersion { get; set; } + + /// + /// 手动数量 + /// + public double? QtyManual { get; set; } + + /// + /// 数量 + /// + public double? Quantity { get; set; } + + /// + /// 排序字符串 + /// + public string SORTF { get; set; } + + /// + /// 是否虚拟 + /// + public string ITISOB { get; set; } + + /// + /// 替代组 + /// + public string ALPGR { get; set; } + + /// + /// 优先级 + /// + public string ALPRF { get; set; } + + /// + /// 是否删除 + /// + public string ZDELETE { get; set; } + + /// + /// 行项目类别 + /// + public string POSTP { get; set; } + + /// + /// 研发模块 + /// + public string ZYFMK { get; set; } + +} \ No newline at end of file diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Util/SyncProcessRouteData.cs b/admin.net.pro/Admin.NET/Vistar.Application/Util/SyncProcessRouteData.cs new file mode 100644 index 0000000..e8f68a0 --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Util/SyncProcessRouteData.cs @@ -0,0 +1,37 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Vistar.Application.Util; +public class SyncProcessRouteData +{ + public long? idRecord { get; set; } + public int? VersionIndex { get; set; } + public string _System_objNBS { get; set; } + public string Werks { get; set; } + public DateTime? Datuv { get; set; } + public List ProcessRouteList { get; set; } + +} +public class ProcessRouteList +{ + public string ParentGuid { get; set; } + public string ChildGuid { get; set; } + public long ChildObjID { get; set; } + public string PartNumber { get; set; } + public string VORNR { get; set; } + public string LTXA1 { get; set; } + public string ARBPL { get; set; } + public string VGW01 { get; set; } + public string VGE01 { get; set; } + public string STEUS { get; set; } + public string BMSCH { get; set; } +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Vistar.Application.csproj b/admin.net.pro/Admin.NET/Vistar.Application/Vistar.Application.csproj index 93ec243..a13a6cf 100644 --- a/admin.net.pro/Admin.NET/Vistar.Application/Vistar.Application.csproj +++ b/admin.net.pro/Admin.NET/Vistar.Application/Vistar.Application.csproj @@ -37,7 +37,6 @@ - diff --git a/admin.net.pro/Web/src/api/log/scheduledTaskLog.ts b/admin.net.pro/Web/src/api/log/scheduledTaskLog.ts new file mode 100644 index 0000000..1b2ee11 --- /dev/null +++ b/admin.net.pro/Web/src/api/log/scheduledTaskLog.ts @@ -0,0 +1,18 @@ +import request from '/@/utils/request'; +enum Api { + PageScheduledTaskLog = '/api/scheduledTaskLog/page', + Detail = '/api/scheduledTaskLog/detail', +} + +export const PageScheduledTaskLog = (params?: any) => + request({ + url: Api.PageScheduledTaskLog, + method: 'post', + data: params, + }); + export const Detail = (id?: any) => + request({ + url: Api.Detail+"/"+id, + method: 'Get', + data: id, + }); diff --git a/admin.net.pro/Web/src/views/log/scheduledTaskLog/index.vue b/admin.net.pro/Web/src/views/log/scheduledTaskLog/index.vue new file mode 100644 index 0000000..e1ba12a --- /dev/null +++ b/admin.net.pro/Web/src/views/log/scheduledTaskLog/index.vue @@ -0,0 +1,185 @@ + + + \ No newline at end of file