Commit e16e3fd5 authored by Alina Habibulina's avatar Alina Habibulina

[FIX] добавлена возможность выбрать meaning value в качестве value для reglink

parent 1fe2b612
......@@ -58,7 +58,8 @@ public class UnsecuredProxyService {
@Produces(MediaType.APPLICATION_JSON + "; charset=utf-8")
public Response importToRegistry(@Context HttpServletRequest req, MultipartFormDataInput input, @QueryParam("formcode") String formcode,
@QueryParam("registrycode") String registryCode, @QueryParam("activate") Boolean isActivate,
@QueryParam("action") int action, @QueryParam("defaultValue") String defaultValue, @QueryParam("searchString") String searchString){
@QueryParam("action") int action, @QueryParam("defaultValue") String defaultValue,
@QueryParam("searchString") String searchString, @QueryParam("shouldPasteMeaningValue") Boolean shouldPasteMeaningValue){
String fileName = "";
String result = "";
......@@ -89,7 +90,7 @@ public class UnsecuredProxyService {
LOGGER.info("File " + fileName + "was written!");
result = ImportBean.parseFile(fileName, formcode, registryCode, isActivate, login, password, action, defaultValue, searchString);
result = ImportBean.parseFile(fileName, formcode, registryCode, isActivate, login, password, action, defaultValue, searchString, shouldPasteMeaningValue);
}
} catch (Exception e){
LOGGER.error(e.getMessage());
......
......@@ -39,17 +39,17 @@ public class ImportBean {
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void getFormFieldForRowAsync(final Row row, final FormulaEvaluator evaluator, final Map<String, FormField> formDefinitionMap, final String registryCode, final Boolean isActivate, final String login, final String password, final int action) {
public void getFormFieldForRowAsync(final Row row, final FormulaEvaluator evaluator, final Map<String, FormField> formDefinitionMap, final String registryCode, final Boolean isActivate, final String login, final String password, final int action, final Boolean shouldPasteMeaningValue) {
executor.submit(new Runnable() {
@Override
public void run() {
getFormFieldForRow(row, evaluator, formDefinitionMap, registryCode, login, password, isActivate, action);
getFormFieldForRow(row, evaluator, formDefinitionMap, registryCode, login, password, isActivate, action, shouldPasteMeaningValue);
}
});
}
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public static String parseFile(String filename, String formcode, String registryCode, Boolean isActivate, String login, String password, int action, String defaultValue, String searchString) throws Exception {
public static String parseFile(String filename, String formcode, String registryCode, Boolean isActivate, String login, String password, int action, String defaultValue, String searchString, Boolean shouldPasteMeaningValue) throws Exception {
errors = new ArrayList<>();
LOGGER.info("Start pasrsing file: " + filename);
......@@ -91,7 +91,7 @@ public class ImportBean {
for(Row row : sheetRows){
try {
ImportBean iu = new ImportBean();
iu.getFormFieldForRowAsync(row, evaluator, formDefinitionMap, registryCode, isActivate, login, password, action);
iu.getFormFieldForRowAsync(row, evaluator, formDefinitionMap, registryCode, isActivate, login, password, action, shouldPasteMeaningValue);
} catch (Exception e){
errors.add(row);
......@@ -224,7 +224,7 @@ public class ImportBean {
* @param formFields key - код поля формы, value - FormField c его данными из определения формы
* @return
*/
private static void getFormFieldForRow(Row row, FormulaEvaluator evaluator, Map<String, FormField> formFields, String registryCode, String login, String password, Boolean isActivate, int action){
private static void getFormFieldForRow(Row row, FormulaEvaluator evaluator, Map<String, FormField> formFields, String registryCode, String login, String password, Boolean isActivate, int action, Boolean shouldPasteMeaningValue){
try {
List<FormField> rowFF = new ArrayList<>();
......@@ -273,6 +273,11 @@ public class ImportBean {
} else {
valueFF.setValue(new BigDecimal(cellValue.getNumberValue() + "").toPlainString());
}
try {
if (valueFF.isRegLink()) valueFF.setValue(Integer.parseInt(valueFF.getValue()) + "");
} catch (Exception ingnore){
valueFF.setValue(((int)Double.parseDouble(valueFF.getValue())) + "");
}
break;
case Cell.CELL_TYPE_STRING:
if (cellValue.getStringValue() == null || cellValue.getStringValue().equals("")) {
......@@ -321,6 +326,10 @@ public class ImportBean {
} else if (valueFF.isRegLink()) {
String documentID = getRegLinkObject(valueFF.getRegistryID(), valueFF.getCode(), valueFF.getValue(), action, login, password);
if(shouldPasteMeaningValue){
//если в value нужно вставить значимое содержимое реестра, то вставляем новый value
valueFF.setValue(getMeaningContentForRegLink(documentID, login, password));
}
if(documentID != null) valueFF.setKey(documentID);
}
......@@ -362,6 +371,16 @@ public class ImportBean {
}
/**
* Метод для получения значащего содержимого реестра, для получения корректного value для reglink
* @return
*/
public static String getMeaningContentForRegLink(String documentID, String login, String password) throws Exception{
String meaningContent = HTTPRequestUtils.sendGet(BASE_URL + "rest/api/formPlayer/getDocMeaningContent?documentId=" + documentID, login, password);
return meaningContent;
}
/**
* Метод преобразует поля формы из form definition в Map<Код компонента формы, FormField>
* @param formDefinition
......
......@@ -81,6 +81,8 @@
<label for="search-value">По какому полю в реестре производить поиск (написать для каждой ссылки на реестр : field_id1:registry_search_field, field_id2:registry_search_field, field_id3:registry_search_field</label>
<input type="text" id="search-value" class="uk-input">
<label for="shouldPasteMeaningValue"><input type="checkbox" id="shouldPasteMeaningValue" name="shouldPasteMeaningValue" value="shouldPasteMeaningValue" checked> Заполнять value ссылки на реестр значимым содержимым</label>
<div class="uk-form-label">При импорте ссылок на реестр и объектов Synergy производится поиск по значениям столбца в соответсвующем реестре. Какие действия следует предпринять при нахождении несокльких записей реестра для одного значения?</div>
<div class="uk-form-controls">
<label><input value="2" class="uk-radio" type="radio" name="radio1" checked> Выбрать первое из результатов поисков</label><br>
......
......@@ -40,6 +40,7 @@ $(document).ready(function(){
var action = $('input[name=radio1]:checked').val();
var defaultValue = $('#default-value').val();
var searchString = $('#search-value').val();
var shouldPasteMeaningValue = $('#shouldPasteMeaningValue').is(':checked');
if(!defaultValue){
defaultValue = "none";
......@@ -58,7 +59,8 @@ $(document).ready(function(){
$.ajax({
url: window.location.origin + "/import/api/registry/import_file?formcode=" + formCode + "&registrycode=" + regCode
+ "&activate=" + isActivate + "&action=" + action + "&defaultValue=" + defaultValue + "&searchString=" + searchString,
+ "&activate=" + isActivate + "&action=" + action + "&defaultValue=" + defaultValue + "&searchString=" + searchString
+ "&shouldPasteMeaningValue=" + shouldPasteMeaningValue,
data: fd,
beforeSend: function (xhr) {
xhr.setRequestHeader ("Authorization", "Basic " + btoa(log + ":" + pass));
......
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