Commit ed7802ac authored by Raimbek Egemberdiev's avatar Raimbek Egemberdiev

рефакторинг использование справочников synergy

parent da31b782
package kz.arta.synergy.api.dictionaries;
/**
* @author raimbek
* @since 15.11.2016
*/
public class DictionaryConvertException extends Exception {
public DictionaryConvertException() {
}
public DictionaryConvertException(String message) {
super(message);
}
public DictionaryConvertException(String message, Throwable cause) {
super(message, cause);
}
public DictionaryConvertException(Throwable cause) {
super(cause);
}
}
package kz.arta.synergy.api.dictionaries;
import com.google.common.base.Strings;
import kz.arta.synergy.api.JsonUtils;
import kz.arta.synergy.api.Query;
import kz.arta.synergy.api.QueryContext;
import kz.arta.synergy.api.RestHttpQuery;
import kz.arta.synergy.api.dictionaries.annotations.DictionaryCode;
import kz.arta.synergy.api.dictionaries.annotations.DictionaryColumn;
import kz.arta.synergy.api.dictionaries.pojo.Dictionary;
import kz.arta.synergy.api.dictionaries.pojo.DictionaryItem;
import kz.arta.synergy.api.dictionaries.pojo.DictionaryItemValue;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author raimbek
* @since 15.11.2016
*/
public class DictionaryService {
private final RestHttpQuery restHttpQuery;
private DictionaryService(QueryContext context) {
this.restHttpQuery = new RestHttpQuery(context);
}
public static DictionaryService newInstance(QueryContext context) {
return new DictionaryService(context);
}
public Dictionary getDictionary(String code) throws IOException {
Query query = Query.newInstance()
.url("/rest/api/dictionary/get_by_code")
.queryParam("dictionaryCode", code);
return JsonUtils.read(restHttpQuery.doQuery(query), Dictionary.class);
}
public <T> List<T> getDictionary(Class<T> dictionaryType) throws DictionaryConvertException {
try {
ArrayList<T> dictionaryList = new ArrayList<>();
DictionaryCode dictionaryCodeAnnotation = dictionaryType.getAnnotation(DictionaryCode.class);
if (dictionaryCodeAnnotation == null) {
throw new DictionaryConvertException(
"Dictionary class should be marked tiwh annotation " + DictionaryCode.class.getName()
);
}
Dictionary dictionary = getDictionary(dictionaryCodeAnnotation.value());
Map<String, Field> columnIds = new HashMap<>();
for (Field classField : dictionaryType.getDeclaredFields()) {
DictionaryColumn dictionaryColumnAnnotation = classField.getAnnotation(DictionaryColumn.class);
if (dictionaryColumnAnnotation == null) {
continue;
}
String columnCode = dictionaryColumnAnnotation.value();
if (Strings.isNullOrEmpty(columnCode)) {
columnCode = classField.getName();
}
String columnIdByCode = dictionary.findColumnIdByCode(columnCode);
if (columnIdByCode != null) {
classField.setAccessible(true);
columnIds.put(columnIdByCode, classField);
}
}
for (DictionaryItem dictionaryItem : dictionary.getItems()) {
T dictionaryItemObject = dictionaryType.newInstance();
for (DictionaryItemValue itemValue : dictionaryItem.getValues()) {
if (columnIds.containsKey(itemValue.getColumnID())) {
Field field = columnIds.get(itemValue.getColumnID());
field.set(dictionaryItemObject, itemValue.getValue());
}
}
dictionaryList.add(dictionaryItemObject);
}
return dictionaryList;
} catch (Exception ex) {
throw new DictionaryConvertException(ex);
}
}
}
package kz.arta.synergy.api.dictionaries.annotations;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @author raimbek
* @since 09.11.2016
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface DictionaryCode {
String value();
}
package kz.arta.synergy.api.dictionaries.annotations;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @author raimbek
* @since 09.11.2016
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface DictionaryColumn {
String value() default "";
}
package kz.arta.synergy.api.dictionaries.pojo;
import com.google.common.base.Strings;
import java.util.List;
/**
* @author raimbek
* @since 26.04.2016
*/
public class Dictionary {
private String dictionary_code;
private String dictionaryID;
private List<DictionaryColumn> columns;
private List<DictionaryItem> items;
public Dictionary() {
}
public String getDictionary_code() {
return dictionary_code;
}
public void setDictionary_code(String dictionary_code) {
this.dictionary_code = dictionary_code;
}
public String getDictionaryID() {
return dictionaryID;
}
public void setDictionaryID(String dictionaryID) {
this.dictionaryID = dictionaryID;
}
public List<DictionaryColumn> getColumns() {
return columns;
}
public void setColumns(List<DictionaryColumn> columns) {
this.columns = columns;
}
public List<DictionaryItem> getItems() {
return items;
}
public void setItems(List<DictionaryItem> items) {
this.items = items;
}
public String findColumnIdByCode(String columnCode) {
for (DictionaryColumn column : columns) {
if (!Strings.isNullOrEmpty(column.getCode()) && column.getCode().equals(columnCode)) {
return column.getColumnID();
}
}
return null;
}
public String findItemID(String columnID, String value) {
for (DictionaryItem item : getItems()) {
for (DictionaryItemValue itemValue : item.getValues()) {
if (itemValue.getColumnID().equals(columnID) && itemValue.getValue().equals(value)) {
return item.getItemID();
}
}
}
return null;
}
public String getValue(String itemID, String columnID) {
for (DictionaryItem item : getItems()) {
if (item.getItemID().equals(itemID)) {
for (DictionaryItemValue itemValue : item.getValues()) {
if (itemValue.getColumnID().equals(columnID)) {
return itemValue.getValue();
}
}
break;
}
}
return "";
}
}
package kz.arta.synergy.api.dictionaries.pojo;
/**
* @author raimbek
* @since 26.04.2016
*/
public class DictionaryColumn {
private String columnID;
private String code;
public DictionaryColumn() {
}
public String getColumnID() {
return columnID;
}
public void setColumnID(String columnID) {
this.columnID = columnID;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
package kz.arta.synergy.api.dictionaries.pojo;
import java.util.List;
/**
* @author raimbek
* @since 26.04.2016
*/
public class DictionaryItem {
private String itemID;
private List<DictionaryItemValue> values;
public DictionaryItem() {
}
public String getItemID() {
return itemID;
}
public void setItemID(String itemID) {
this.itemID = itemID;
}
public List<DictionaryItemValue> getValues() {
return values;
}
public void setValues(List<DictionaryItemValue> values) {
this.values = values;
}
}
package kz.arta.synergy.api.dictionaries.pojo;
/**
* @author raimbek
* @since 26.04.2016
*/
public class DictionaryItemValue {
private String columnID;
private String value;
public DictionaryItemValue() {
}
public String getColumnID() {
return columnID;
}
public void setColumnID(String columnID) {
this.columnID = columnID;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
package kz.arta.synergy.api.dictionaries;
import com.google.common.base.Charsets;
import com.google.common.io.Resources;
import kz.arta.synergy.api.JsonUtils;
import kz.arta.synergy.api.dictionaries.pojo.Dictionary;
import kz.arta.synergy.pojo.RatesDict;
import kz.arta.synergy.pojo.TestForm;
import org.mockito.Mockito;
import org.testng.Assert;
import org.testng.annotations.Test;
import java.io.IOException;
import java.net.URL;
import java.util.List;
/**
* @author raimbek
* @since 15.11.2016
*/
public class DictionaryServiceTest {
@Test
public void testGetDictionary() throws Exception {
DictionaryService dictionaryServiceMock = Mockito.mock(DictionaryService.class);
Mockito.when(dictionaryServiceMock.getDictionary("rates")).thenReturn(readDict());
Mockito.when(dictionaryServiceMock.getDictionary(RatesDict.class)).thenCallRealMethod();
List<RatesDict> rates = dictionaryServiceMock.getDictionary(RatesDict.class);
Assert.assertEquals(rates.size(), 22);
for (RatesDict rate : rates) {
Assert.assertTrue(
rate.getYear().equals("2014") ||
rate.getYear().equals("2015") ||
rate.getYear().equals("2016")
);
Assert.assertTrue(rate.getGroup().equals("1") || rate.getGroup().equals("2"));
Assert.assertNull(rate.getFieldWithoutAnnotation());
Assert.assertNull(rate.getFieldWithWrongCodeAnnotation());
}
}
@Test(expectedExceptions = DictionaryConvertException.class)
public void testGetDictionaryWithoutAnnotation() throws Exception {
DictionaryService dictionaryServiceMock = Mockito.mock(DictionaryService.class);
Mockito.when(dictionaryServiceMock.getDictionary(TestForm.class)).thenCallRealMethod();
dictionaryServiceMock.getDictionary(TestForm.class);
}
public Dictionary readDict() throws IOException {
URL url = Resources.getResource("data/dictionary.json");
return JsonUtils.read(Resources.toString(url, Charsets.UTF_8), Dictionary.class);
}
}
\ No newline at end of file
package kz.arta.synergy.pojo;
import kz.arta.synergy.api.dictionaries.annotations.DictionaryCode;
import kz.arta.synergy.api.dictionaries.annotations.DictionaryColumn;
/**
* @author raimbek
* @since 15.11.2016
*/
@DictionaryCode("rates")
public class RatesDict {
@DictionaryColumn
private String year;
@DictionaryColumn
private String group;
@DictionaryColumn
private String categories;
@DictionaryColumn("diapazon")
private String range;
@DictionaryColumn
private String mrp;
@DictionaryColumn
private String rates;
private String fieldWithoutAnnotation;
@DictionaryColumn("not_found_code")
private String fieldWithWrongCodeAnnotation;
public String getYear() {
return year;
}
public void setYear(String year) {
this.year = year;
}
public String getGroup() {
return group;
}
public void setGroup(String group) {
this.group = group;
}
public String getCategories() {
return categories;
}
public void setCategories(String categories) {
this.categories = categories;
}
public String getRange() {
return range;
}
public void setRange(String range) {
this.range = range;
}
public String getMrp() {
return mrp;
}
public void setMrp(String mrp) {
this.mrp = mrp;
}
public String getRates() {
return rates;
}
public void setRates(String rates) {
this.rates = rates;
}
public String getFieldWithoutAnnotation() {
return fieldWithoutAnnotation;
}
public void setFieldWithoutAnnotation(String fieldWithoutAnnotation) {
this.fieldWithoutAnnotation = fieldWithoutAnnotation;
}
public String getFieldWithWrongCodeAnnotation() {
return fieldWithWrongCodeAnnotation;
}
public void setFieldWithWrongCodeAnnotation(String fieldWithWrongCodeAnnotation) {
this.fieldWithWrongCodeAnnotation = fieldWithWrongCodeAnnotation;
}
}
{
"dictionary_code": "rates",
"dictionaryID": "c1d0e500-3e24-4521-9487-f1afef1732cf",
"columns": [
{
"columnID": "6b06a7cc-3d49-444e-a968-c1142dda1398",
"code": "year"
},
{
"columnID": "a2a87d2e-3825-4858-bcc3-a37e81388162",
"code": "group"
},
{
"columnID": "f2d3e41e-1c4c-4a81-acfd-14895068e9ae",
"code": "categories"
},
{
"columnID": "f6dc9e79-a57e-450e-9576-e919699143ec",
"code": "diapazon"
},
{
"columnID": "d3390489-6e7c-404e-b9d6-2e78007bf761",
"code": "mrp"
},
{
"columnID": "c9bf8a9f-cac7-4ca0-988f-4af172f3803f",
"code": "rates"
}
],
"items": [
{
"itemID": "09fb1a56-5d48-469c-aeb2-e37a89f3f5a4",
"values": [
{
"value": "2",
"columnID": "a2a87d2e-3825-4858-bcc3-a37e81388162"
},
{
"value": "1",
"columnID": "f2d3e41e-1c4c-4a81-acfd-14895068e9ae"
},
{
"value": "80",
"columnID": "d3390489-6e7c-404e-b9d6-2e78007bf761"
},
{
"value": "158560",
"columnID": "c9bf8a9f-cac7-4ca0-988f-4af172f3803f"
},
{
"value": "2015",
"columnID": "6b06a7cc-3d49-444e-a968-c1142dda1398"
},
{
"value": "60000 - 150000",
"columnID": "f6dc9e79-a57e-450e-9576-e919699143ec"
}
]
},
{
"itemID": "0b08b7be-cb2b-4525-b406-d86ef118a409",
"values": [
{
"value": "1",
"columnID": "a2a87d2e-3825-4858-bcc3-a37e81388162"
},
{
"value": "7",
"columnID": "f2d3e41e-1c4c-4a81-acfd-14895068e9ae"
},
{
"value": "1515",
"columnID": "d3390489-6e7c-404e-b9d6-2e78007bf761"
},
{
"value": "3213315",
"columnID": "c9bf8a9f-cac7-4ca0-988f-4af172f3803f"
},
{
"value": "2016",
"columnID": "6b06a7cc-3d49-444e-a968-c1142dda1398"
},
{
"value": "",
"columnID": "f6dc9e79-a57e-450e-9576-e919699143ec"
}
]
},
{
"itemID": "1d594501-0806-41ba-8ffb-2026149454ce",
"values": [
{
"value": "1",
"columnID": "a2a87d2e-3825-4858-bcc3-a37e81388162"
},
{
"value": "9",
"columnID": "f2d3e41e-1c4c-4a81-acfd-14895068e9ae"
},
{
"value": "2525",
"columnID": "d3390489-6e7c-404e-b9d6-2e78007bf761"
},
{
"value": "5004550",
"columnID": "c9bf8a9f-cac7-4ca0-988f-4af172f3803f"
},
{
"value": "2015",
"columnID": "6b06a7cc-3d49-444e-a968-c1142dda1398"
},
{
"value": "4740000 - 5550000",
"columnID": "f6dc9e79-a57e-450e-9576-e919699143ec"
}
]
},
{
"itemID": "1ee4bd2c-abe8-459f-b93a-52c2a630c0bf",
"values": [
{
"value": "2",
"columnID": "a2a87d2e-3825-4858-bcc3-a37e81388162"
},
{
"value": "2",
"columnID": "f2d3e41e-1c4c-4a81-acfd-14895068e9ae"
},
{
"value": "160",
"columnID": "d3390489-6e7c-404e-b9d6-2e78007bf761"
},
{
"value": "296320",
"columnID": "c9bf8a9f-cac7-4ca0-988f-4af172f3803f"
},
{
"value": "2014",
"columnID": "6b06a7cc-3d49-444e-a968-c1142dda1398"
},
{
"value": "60000 - 1500000",
"columnID": "f6dc9e79-a57e-450e-9576-e919699143ec"
}
]
},
{
"itemID": "33d8d239-ea71-48d8-8dff-c0d0c8f53e52",
"values": [
{
"value": "2",
"columnID": "a2a87d2e-3825-4858-bcc3-a37e81388162"
},
{
"value": "4",
"columnID": "f2d3e41e-1c4c-4a81-acfd-14895068e9ae"
},
{
"value": "155",
"columnID": "d3390489-6e7c-404e-b9d6-2e78007bf761"
},
{
"value": "307210",
"columnID": "c9bf8a9f-cac7-4ca0-988f-4af172f3803f"
},
{
"value": "2015",
"columnID": "6b06a7cc-3d49-444e-a968-c1142dda1398"
},
{
"value": "690000 - 1500000",
"columnID": "f6dc9e79-a57e-450e-9576-e919699143ec"
}
]
},
{
"itemID": "5c3459df-e10a-4c1d-8d96-190d1a9553bc",
"values": [
{
"value": "2",
"columnID": "a2a87d2e-3825-4858-bcc3-a37e81388162"
},
{
"value": "4",
"columnID": "f2d3e41e-1c4c-4a81-acfd-14895068e9ae"
},
{
"value": "155",
"columnID": "d3390489-6e7c-404e-b9d6-2e78007bf761"
},
{
"value": "328755",
"columnID": "c9bf8a9f-cac7-4ca0-988f-4af172f3803f"
},
{
"value": "2016",
"columnID": "6b06a7cc-3d49-444e-a968-c1142dda1398"
},
{
"value": "",
"columnID": "f6dc9e79-a57e-450e-9576-e919699143ec"
}
]
},
{
"itemID": "6635fdbc-5d8b-4aa2-a9e3-f074f23323a0",
"values": [
{
"value": "1",
"columnID": "a2a87d2e-3825-4858-bcc3-a37e81388162"
},
{
"value": "5",
"columnID": "f2d3e41e-1c4c-4a81-acfd-14895068e9ae"
},
{
"value": "505",
"columnID": "d3390489-6e7c-404e-b9d6-2e78007bf761"
},
{
"value": "1071105",
"columnID": "c9bf8a9f-cac7-4ca0-988f-4af172f3803f"
},
{
"value": "2016",
"columnID": "6b06a7cc-3d49-444e-a968-c1142dda1398"
},
{
"value": "",
"columnID": "f6dc9e79-a57e-450e-9576-e919699143ec"
}
]
},
{
"itemID": "67ddbf45-eedd-42c7-aedf-8a3582785aaf",
"values": [
{
"value": "1",
"columnID": "a2a87d2e-3825-4858-bcc3-a37e81388162"
},
{
"value": "7",
"columnID": "f2d3e41e-1c4c-4a81-acfd-14895068e9ae"
},
{
"value": "1515",
"columnID": "d3390489-6e7c-404e-b9d6-2e78007bf761"
},
{
"value": "3002730",
"columnID": "c9bf8a9f-cac7-4ca0-988f-4af172f3803f"
},
{
"value": "2015",
"columnID": "6b06a7cc-3d49-444e-a968-c1142dda1398"
},
{
"value": "3120000 - 3930000",
"columnID": "f6dc9e79-a57e-450e-9576-e919699143ec"
}
]
},
{
"itemID": "70a18ba0-6595-4488-82ad-e73123b59cb2",
"values": [
{
"value": "2",
"columnID": "a2a87d2e-3825-4858-bcc3-a37e81388162"
},
{
"value": "1",
"columnID": "f2d3e41e-1c4c-4a81-acfd-14895068e9ae"
},
{
"value": "80",
"columnID": "d3390489-6e7c-404e-b9d6-2e78007bf761"
},
{
"value": "169680",
"columnID": "c9bf8a9f-cac7-4ca0-988f-4af172f3803f"
},
{
"value": "2016",
"columnID": "6b06a7cc-3d49-444e-a968-c1142dda1398"
},
{
"value": "",
"columnID": "f6dc9e79-a57e-450e-9576-e919699143ec"
}
]
},
{
"itemID": "8ca4a946-0eff-45e7-8e82-93d8fba07025",
"values": [
{
"value": "1",
"columnID": "a2a87d2e-3825-4858-bcc3-a37e81388162"
},
{
"value": "1",
"columnID": "f2d3e41e-1c4c-4a81-acfd-14895068e9ae"
},
{
"value": "4400",
"columnID": "d3390489-6e7c-404e-b9d6-2e78007bf761"
},
{
"value": "8148800",
"columnID": "c9bf8a9f-cac7-4ca0-988f-4af172f3803f"
},
{
"value": "2014",
"columnID": "6b06a7cc-3d49-444e-a968-c1142dda1398"
},
{
"value": "свыше 1500000",
"columnID": "f6dc9e79-a57e-450e-9576-e919699143ec"
}
]
},
{
"itemID": "9808aa08-06f7-4abe-bc7c-e32e9b098905",
"values": [
{
"value": "2",
"columnID": "a2a87d2e-3825-4858-bcc3-a37e81388162"
},
{
"value": "2",
"columnID": "f2d3e41e-1c4c-4a81-acfd-14895068e9ae"
},
{
"value": "105",
"columnID": "d3390489-6e7c-404e-b9d6-2e78007bf761"
},
{
"value": "222705",
"columnID": "c9bf8a9f-cac7-4ca0-988f-4af172f3803f"
},
{
"value": "2016",
"columnID": "6b06a7cc-3d49-444e-a968-c1142dda1398"
},
{
"value": "",
"columnID": "f6dc9e79-a57e-450e-9576-e919699143ec"
}
]
},
{
"itemID": "a88e01c9-2546-4ebd-88ef-c56a2641a435",
"values": [
{
"value": "1",
"columnID": "a2a87d2e-3825-4858-bcc3-a37e81388162"
},
{
"value": "6",
"columnID": "f2d3e41e-1c4c-4a81-acfd-14895068e9ae"
},
{
"value": "1010",
"columnID": "d3390489-6e7c-404e-b9d6-2e78007bf761"
},
{
"value": "2142210",
"columnID": "c9bf8a9f-cac7-4ca0-988f-4af172f3803f"
},
{
"value": "2016",
"columnID": "6b06a7cc-3d49-444e-a968-c1142dda1398"
},
{
"value": "",
"columnID": "f6dc9e79-a57e-450e-9576-e919699143ec"
}
]
},
{
"itemID": "a8d17894-f367-4f16-9890-b396d29c74d5",
"values": [
{
"value": "1",
"columnID": "a2a87d2e-3825-4858-bcc3-a37e81388162"
},
{
"value": "10",
"columnID": "f2d3e41e-1c4c-4a81-acfd-14895068e9ae"
},
{
"value": "3030",
"columnID": "d3390489-6e7c-404e-b9d6-2e78007bf761"
},
{
"value": "6426630",
"columnID": "c9bf8a9f-cac7-4ca0-988f-4af172f3803f"
},
{
"value": "2016",
"columnID": "6b06a7cc-3d49-444e-a968-c1142dda1398"
},
{
"value": "",
"columnID": "f6dc9e79-a57e-450e-9576-e919699143ec"
}
]
},
{
"itemID": "bee8c039-a989-411b-a595-96184a6f1572",
"values": [
{
"value": "1",
"columnID": "a2a87d2e-3825-4858-bcc3-a37e81388162"
},
{
"value": "9",
"columnID": "f2d3e41e-1c4c-4a81-acfd-14895068e9ae"
},
{
"value": "2525",
"columnID": "d3390489-6e7c-404e-b9d6-2e78007bf761"
},
{
"value": "5355525",
"columnID": "c9bf8a9f-cac7-4ca0-988f-4af172f3803f"
},
{
"value": "2016",
"columnID": "6b06a7cc-3d49-444e-a968-c1142dda1398"
},
{
"value": "",
"columnID": "f6dc9e79-a57e-450e-9576-e919699143ec"
}
]
},
{
"itemID": "dca72e77-328a-4e31-ac33-e3bd045937fc",
"values": [
{
"value": "1",
"columnID": "a2a87d2e-3825-4858-bcc3-a37e81388162"
},
{
"value": "6",
"columnID": "f2d3e41e-1c4c-4a81-acfd-14895068e9ae"
},
{
"value": "1010",
"columnID": "d3390489-6e7c-404e-b9d6-2e78007bf761"
},
{
"value": "2001820",
"columnID": "c9bf8a9f-cac7-4ca0-988f-4af172f3803f"
},
{
"value": "2015",
"columnID": "6b06a7cc-3d49-444e-a968-c1142dda1398"
},
{
"value": "2310000 - 3120000",
"columnID": "f6dc9e79-a57e-450e-9576-e919699143ec"
}
]
},
{
"itemID": "e312ed3f-57b7-45de-9f58-b8c31143283f",
"values": [
{
"value": "2",
"columnID": "a2a87d2e-3825-4858-bcc3-a37e81388162"
},
{
"value": "3",
"columnID": "f2d3e41e-1c4c-4a81-acfd-14895068e9ae"
},
{
"value": "130",
"columnID": "d3390489-6e7c-404e-b9d6-2e78007bf761"
},
{
"value": "257660",
"columnID": "c9bf8a9f-cac7-4ca0-988f-4af172f3803f"
},
{
"value": "2015",
"columnID": "6b06a7cc-3d49-444e-a968-c1142dda1398"
},
{
"value": "420000 - 690000",
"columnID": "f6dc9e79-a57e-450e-9576-e919699143ec"
}
]
},
{
"itemID": "e3c3fc23-e8db-4832-84b2-364ffd99aec8",
"values": [
{
"value": "2",
"columnID": "a2a87d2e-3825-4858-bcc3-a37e81388162"
},
{
"value": "3",
"columnID": "f2d3e41e-1c4c-4a81-acfd-14895068e9ae"
},
{
"value": "130",
"columnID": "d3390489-6e7c-404e-b9d6-2e78007bf761"
},
{
"value": "275730",
"columnID": "c9bf8a9f-cac7-4ca0-988f-4af172f3803f"
},
{
"value": "2016",
"columnID": "6b06a7cc-3d49-444e-a968-c1142dda1398"
},
{
"value": "",
"columnID": "f6dc9e79-a57e-450e-9576-e919699143ec"
}
]
},
{
"itemID": "e8fd9cc7-ec28-4454-95f3-efb21156da1e",
"values": [
{
"value": "2",
"columnID": "a2a87d2e-3825-4858-bcc3-a37e81388162"
},
{
"value": "2",
"columnID": "f2d3e41e-1c4c-4a81-acfd-14895068e9ae"
},
{
"value": "105",
"columnID": "d3390489-6e7c-404e-b9d6-2e78007bf761"
},
{
"value": "208110",
"columnID": "c9bf8a9f-cac7-4ca0-988f-4af172f3803f"
},
{
"value": "2015",
"columnID": "6b06a7cc-3d49-444e-a968-c1142dda1398"
},
{
"value": "150000 - 420000",
"columnID": "f6dc9e79-a57e-450e-9576-e919699143ec"
}
]
},
{
"itemID": "ec42824b-977d-4785-a54d-f661fc1873cd",
"values": [
{
"value": "1",
"columnID": "a2a87d2e-3825-4858-bcc3-a37e81388162"
},
{
"value": "5",
"columnID": "f2d3e41e-1c4c-4a81-acfd-14895068e9ae"
},
{
"value": "505",
"columnID": "d3390489-6e7c-404e-b9d6-2e78007bf761"
},
{
"value": "1000910",
"columnID": "c9bf8a9f-cac7-4ca0-988f-4af172f3803f"
},
{
"value": "2015",
"columnID": "6b06a7cc-3d49-444e-a968-c1142dda1398"
},
{
"value": "1500000 - 2310000",
"columnID": "f6dc9e79-a57e-450e-9576-e919699143ec"
}
]
},
{
"itemID": "eeea3782-1183-4d2e-89f5-df1a31c4dc89",
"values": [
{
"value": "1",
"columnID": "a2a87d2e-3825-4858-bcc3-a37e81388162"
},
{
"value": "8",
"columnID": "f2d3e41e-1c4c-4a81-acfd-14895068e9ae"
},
{
"value": "2020",
"columnID": "d3390489-6e7c-404e-b9d6-2e78007bf761"
},
{
"value": "4284420",
"columnID": "c9bf8a9f-cac7-4ca0-988f-4af172f3803f"
},
{
"value": "2016",
"columnID": "6b06a7cc-3d49-444e-a968-c1142dda1398"
},
{
"value": "",
"columnID": "f6dc9e79-a57e-450e-9576-e919699143ec"
}
]
},
{
"itemID": "f7af9d7c-f9c0-4888-8820-c216fa258bbc",
"values": [
{
"value": "1",
"columnID": "a2a87d2e-3825-4858-bcc3-a37e81388162"
},
{
"value": "8",
"columnID": "f2d3e41e-1c4c-4a81-acfd-14895068e9ae"
},
{
"value": "2020",
"columnID": "d3390489-6e7c-404e-b9d6-2e78007bf761"
},
{
"value": "4003640",
"columnID": "c9bf8a9f-cac7-4ca0-988f-4af172f3803f"
},
{
"value": "2015",
"columnID": "6b06a7cc-3d49-444e-a968-c1142dda1398"
},
{
"value": "3930000 - 4740000",
"columnID": "f6dc9e79-a57e-450e-9576-e919699143ec"
}
]
},
{
"itemID": "f7f6ddf3-5a93-4d5a-94cc-b44b6c451987",
"values": [
{
"value": "1",
"columnID": "a2a87d2e-3825-4858-bcc3-a37e81388162"
},
{
"value": "10",
"columnID": "f2d3e41e-1c4c-4a81-acfd-14895068e9ae"
},
{
"value": "3030",
"columnID": "d3390489-6e7c-404e-b9d6-2e78007bf761"
},
{
"value": "6005460",
"columnID": "c9bf8a9f-cac7-4ca0-988f-4af172f3803f"
},
{
"value": "2015",
"columnID": "6b06a7cc-3d49-444e-a968-c1142dda1398"
},
{
"value": "свыше 5550000",
"columnID": "f6dc9e79-a57e-450e-9576-e919699143ec"
}
]
}
]
}
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment