feat(esppSync, esppTemplateSync, esppScheduleSync): обновлена логика синхронизации полей. Если объект в БД деактивирован, то с ЕСПП сравниваются только поля isActive и название объекта.
This commit is contained in:
@@ -7,5 +7,25 @@ namespace PARR.EsppSync
|
|||||||
public string TemplateName { get; set; }
|
public string TemplateName { get; set; }
|
||||||
|
|
||||||
public RobotsEnum Robot { get; }
|
public RobotsEnum Robot { get; }
|
||||||
|
|
||||||
|
public bool IsActive { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Облегченная модель для сравнения полей, если IsActive==false
|
||||||
|
/// </summary>
|
||||||
|
public class EsppLightObject : IEsppObject
|
||||||
|
{
|
||||||
|
public EsppLightObject(IEsppObject obj)
|
||||||
|
{
|
||||||
|
TemplateName = obj.TemplateName;
|
||||||
|
IsActive = obj.IsActive;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string TemplateName { get; set; }
|
||||||
|
|
||||||
|
public RobotsEnum Robot { get; }
|
||||||
|
|
||||||
|
public bool IsActive { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,13 @@ namespace PARR.EsppSync
|
|||||||
|
|
||||||
public interface ISyncService<EsppObject> where EsppObject : class, IEsppObject
|
public interface ISyncService<EsppObject> where EsppObject : class, IEsppObject
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="str">Строка из RabbitMQ</param>
|
||||||
|
/// <param name="parser">Делегат парсинга из строки в модель EsppObject</param>
|
||||||
|
/// <param name="converterToEsppObject"> Конвертирует BD Template в модель для сравнения</param>
|
||||||
|
/// <returns></returns>
|
||||||
Task SyncEsppObjectAsync(string str, ParserHandlerDelegate<EsppObject> parser, ConvertDbObjToComparisonObjHandlerDelegate<EsppObject> converterToEsppObject);
|
Task SyncEsppObjectAsync(string str, ParserHandlerDelegate<EsppObject> parser, ConvertDbObjToComparisonObjHandlerDelegate<EsppObject> converterToEsppObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -61,7 +61,24 @@ namespace PARR.EsppSync
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
var dbObjectInEsppObject = converterToEsppObject.Invoke(template);
|
var dbObjectInEsppObject = converterToEsppObject.Invoke(template);
|
||||||
var isChanged = IsChanged(esppObject, dbObjectInEsppObject);
|
|
||||||
|
bool isChanged;
|
||||||
|
|
||||||
|
// если в БД isActive == false, то синхронизировать только по полям из IEsppObject
|
||||||
|
if (dbObjectInEsppObject.IsActive == false)
|
||||||
|
{
|
||||||
|
logger.LogDebug($"Объект деактивирован в ПАРР. Сравниваем только обязательные поля. {esppObject.TemplateName}");
|
||||||
|
var lightDbObj = new EsppLightObject(dbObjectInEsppObject);
|
||||||
|
var lightEsppObject = new EsppLightObject(esppObject);
|
||||||
|
|
||||||
|
isChanged = IsChanged(lightEsppObject, lightDbObj);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
logger.LogDebug($"Объект активирован в ПАРР. Сравниваем все поля. {esppObject.TemplateName}");
|
||||||
|
isChanged = IsChanged(esppObject, dbObjectInEsppObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (isChanged)
|
if (isChanged)
|
||||||
{
|
{
|
||||||
@@ -112,7 +129,8 @@ namespace PARR.EsppSync
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private bool IsChanged(EsppObject esppObj, EsppObject dbObj)
|
//private bool IsChanged(EsppObject esppObj, EsppObject dbObj)
|
||||||
|
private bool IsChanged(object esppObj, object dbObj)
|
||||||
{
|
{
|
||||||
foreach (var prop in dbObj.GetType().GetProperties())
|
foreach (var prop in dbObj.GetType().GetProperties())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -66,7 +66,6 @@ namespace PARR.EsppTemplateSync
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="template"></param>
|
/// <param name="template"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
/// <exception cref="NotImplementedException"></exception>
|
|
||||||
private EsppObjectTemplate ConvertDbObjToEsppObj(Template template)
|
private EsppObjectTemplate ConvertDbObjToEsppObj(Template template)
|
||||||
{
|
{
|
||||||
var templateFromDb = new EsppObjectTemplate
|
var templateFromDb = new EsppObjectTemplate
|
||||||
@@ -95,7 +94,6 @@ namespace PARR.EsppTemplateSync
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="str"></param>
|
/// <param name="str"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
/// <exception cref="NotImplementedException"></exception>
|
|
||||||
private EsppObjectTemplate? ParseStrToEsppObject(string str)
|
private EsppObjectTemplate? ParseStrToEsppObject(string str)
|
||||||
{
|
{
|
||||||
var splittedContent = str.Split(globalSettings.ParsingSeparator);
|
var splittedContent = str.Split(globalSettings.ParsingSeparator);
|
||||||
|
|||||||
Reference in New Issue
Block a user