private void UpdateSpcObjByPilot(SpcObject spcObject) { var needToChange = false; var loader = new ObjectLoader(_objectsRepository); loader.Load(spcObject.GlobalId, obj => { if (obj == null) { return; } var builder = _objectModifier.Edit(obj); foreach (var spcColumn in spcObject.Columns) { var spcColVal = ValueTextClear(spcColumn.Value); // проверка нужно ли изменять объект foreach (var attrObj in obj.Attributes) { if (attrObj.Key != spcColumn.TypeName) { continue; } if (attrObj.Value.ToString() == spcColVal) { continue; } needToChange = true; if (int.TryParse(spcColVal, out var i)) { builder.SetAttribute(spcColumn.TypeName, i); } else { builder.SetAttribute(spcColumn.TypeName, spcColVal); } } } // получаем pdf файл из Обозревателя var fileFromPilot = obj.Files.FirstOrDefault(f => IsFileExtension(f.Name, ".pdf")); var doc = spcObject.Documents.FirstOrDefault(f => IsFileExtension(f.FileName, SOURCE_DOC_EXT)); if (doc != null && fileFromPilot != null) { var pdfFile = spcObject.PreviewDocument; // md5 в нижнем регистре расчитывается и возвращается пилотом var fileNameMd5 = CalculatorMd5Checksum.Go(pdfFile); if (!string.IsNullOrEmpty(fileNameMd5) && fileFromPilot.Md5 != fileNameMd5) { needToChange = true; builder.CreateFileSnapshot("").AddFile(pdfFile); } } if (needToChange) { _objectModifier.Apply(); } }); }
private void UpdateSpcByPilot(Specification spc) { var loader = new ObjectLoader(_objectsRepository); loader.Load(spc.GlobalId, obj => { var needToChange = false; var builder = _objectModifier.Edit(obj); var spcName = ValueTextClear(spc.Name); var spcDesignation = ValueTextClear(spc.Designation); // проверка нужно ли изменять объект foreach (var attrObj in obj.Attributes) { if (attrObj.Key == "name") { if (attrObj.Value.ToString() != spcName) { builder.SetAttribute(attrObj.Key, spcName); needToChange = true; } } if (attrObj.Key == "mark") { if (attrObj.Value.ToString() != spcDesignation) { builder.SetAttribute(attrObj.Key, spcDesignation); needToChange = true; } } } // получаем xps файл из Обозревателя var fileFromPilot = obj.Files.FirstOrDefault(f => IsFileExtension(f.Name, ".xps")); var xpsFile = spc.PreviewDocument; if (xpsFile != null && fileFromPilot != null) { // md5 в нижнем регистре расчитывается и возвращается пилотом var fileNameMd5 = CalculatorMd5Checksum.Go(xpsFile); if (!string.IsNullOrEmpty(fileNameMd5) && fileFromPilot.Md5 != fileNameMd5) { builder.CreateFileSnapshot("").AddFile(xpsFile); needToChange = true; } } if (needToChange) { _objectModifier.Apply(); } }); }