6 changed files with 174 additions and 3 deletions
-
2src/Shentun.ColumnReferencePlugIns/SyncAsbitemPrice/SyncAsbitemPricePlugInsBase.cs
-
20src/Shentun.ColumnReferencePlugIns/SyncAsbitemPrice/SyncAsbitemPricePlugInsDbBase.cs
-
3src/Shentun.Peis.Domain.Shared/Enums/ThirdInterfaceTypeFlag.cs
-
5src/Shentun.Peis.HttpApi.Host/PeisHttpApiHostModule.cs
-
99src/Shentun.Peis.HttpApi.Host/Schedulers/SyncAsbitemPriceInterfaceWorker.cs
-
48test/Shentun.Peis.ColumnReference.Tests/SyncAsbitemPricePlugInsTest.cs
@ -0,0 +1,99 @@ |
|||||
|
using Microsoft.Extensions.Configuration; |
||||
|
using Microsoft.Extensions.Logging; |
||||
|
using Shentun.Peis.ThirdInterfaces; |
||||
|
using Shentun.Utilities; |
||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.IO; |
||||
|
using System.Linq; |
||||
|
|
||||
|
namespace Shentun.Peis.Schedulers |
||||
|
{ |
||||
|
|
||||
|
public interface ISyncAsbitemPriceInterfaceWorker |
||||
|
{ |
||||
|
public void DoWork(Guid interfaceId); |
||||
|
public void DoWork(); |
||||
|
} |
||||
|
public class SyncAsbitemPriceInterfaceWorker : ThirdInterfaceWorkerBase, ISyncAsbitemPriceInterfaceWorker |
||||
|
{ |
||||
|
private static long i; |
||||
|
private static bool _isRunning = false; |
||||
|
private static readonly object lockObject = new object(); |
||||
|
private readonly IConfiguration _configuration; |
||||
|
public SyncAsbitemPriceInterfaceWorker(IConfiguration configuration) |
||||
|
{ |
||||
|
_configuration = configuration; |
||||
|
} |
||||
|
public virtual void DoWork(Guid interfaceId) |
||||
|
{ |
||||
|
if (_isRunning) return; |
||||
|
//lock (lockObject)
|
||||
|
//{
|
||||
|
_isRunning = true; |
||||
|
try |
||||
|
{ |
||||
|
var backJobTypeIds = _configuration.GetSection("BackJobTypeId").Value; |
||||
|
|
||||
|
//Logger.LogInformation("Executed" + GetType().Name + "..!");
|
||||
|
var appServiceHelper = new AppServiceHelper(); |
||||
|
//appServiceHelper.Login();
|
||||
|
var thirdInterfaceDtos = appServiceHelper.CallAppService<object, List<ThirdInterfaceDto>>("api/app/ThirdInterface/GetList", null); |
||||
|
var thirdInterfaceDto = thirdInterfaceDtos.Where(o => o.Id == interfaceId).FirstOrDefault(); |
||||
|
if (thirdInterfaceDto == null) |
||||
|
{ |
||||
|
_isRunning = false; |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
if (!backJobTypeIds.Contains(thirdInterfaceDto.ThirdInterfaceType)) |
||||
|
{ |
||||
|
_isRunning = false; |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
if (thirdInterfaceDto.IsActive != 'Y') |
||||
|
{ |
||||
|
_isRunning = false; |
||||
|
return; |
||||
|
} |
||||
|
var parmValue = thirdInterfaceDto.ParmValue; |
||||
|
if (!string.IsNullOrWhiteSpace(parmValue)) |
||||
|
{ |
||||
|
var configurationBuilder = new ConfigurationBuilder() |
||||
|
.AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue))); |
||||
|
var interfaceConfig = configurationBuilder.Build(); |
||||
|
|
||||
|
var isActive = interfaceConfig.GetSection("Interface").GetSection("Scheduler") |
||||
|
.GetSection("IsActive").Value; |
||||
|
if (isActive != "Y") |
||||
|
{ |
||||
|
_isRunning = false; |
||||
|
return; |
||||
|
} |
||||
|
var assemblyName = interfaceConfig.GetSection("Interface").GetSection("AssemblyName").Value; |
||||
|
var className = interfaceConfig.GetSection("Interface").GetSection("ClassName").Value; |
||||
|
var funName = "DoWork"; |
||||
|
object[] classConstructorArg = new object[] { thirdInterfaceDto.Id }; |
||||
|
ReflectionHelper.Invoke(assemblyName, className, classConstructorArg, funName); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
catch (Exception ex) |
||||
|
{ |
||||
|
_isRunning = false; |
||||
|
Logger.LogError("Executed " + GetType().Name + " Error" + ex.Message); |
||||
|
} |
||||
|
_isRunning = false; |
||||
|
return; |
||||
|
//}
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
public void DoWork() |
||||
|
{ |
||||
|
throw new NotImplementedException(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,48 @@ |
|||||
|
using Shentun.Peis.PlugIns.ImportLisResults; |
||||
|
using Shentun.Peis.PlugIns.SyncAsbitemPrice; |
||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Text; |
||||
|
using System.Threading.Tasks; |
||||
|
using Xunit.Abstractions; |
||||
|
|
||||
|
namespace Shentun.Peis.PlugIns.Tests |
||||
|
{ |
||||
|
public class SyncAsbitemPricePlugInsTest |
||||
|
{ |
||||
|
private readonly ITestOutputHelper _output; |
||||
|
public SyncAsbitemPricePlugInsTest(ITestOutputHelper testOutputHelper) |
||||
|
{ |
||||
|
_output = testOutputHelper; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
[Fact] |
||||
|
public async Task DoWorkAsync() |
||||
|
{ |
||||
|
|
||||
|
var input = new SyncAsbitemPricePlugInsDbBase(new Guid("8742ccb6-ab93-4e4d-aad9-873b69fafd8c")); |
||||
|
await input.DoWork(); |
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
[Fact] |
||||
|
public async Task GetInterfaceAsbitems() |
||||
|
{ |
||||
|
|
||||
|
var input = new SyncAsbitemPricePlugInsDbBase(new Guid("8742ccb6-ab93-4e4d-aad9-873b69fafd8c")); |
||||
|
var list = await input.GetInterfaceAsbitems(); |
||||
|
foreach (var item in list) |
||||
|
{ |
||||
|
_output.WriteLine(item.AsbitemId + "," + item.AsbitemName + "," + item.Price.ToString()); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue