Merge branch 'update/3.178' into feature/WEBBPMNEXT-9188_fixes
# Conflicts: # backend/src/main/java/AppConfig.java # config/patches/default.cli # frontend/package-lock.json # frontend/package.json # frontend/src/ts/modules/app/app.module.ts # packages/ru.cg.webbpm.packages.base.resources/.flattened-pom.xml # packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/NavigateOnGridCellOrRow.html # packages/ru.cg.webbpm.packages.base.resources/META-INF/package-descriptor.xml # packages/ru.cg.webbpm.packages.base.resources/component/buttons/Button.component # packages/ru.cg.webbpm.packages.base.resources/component/buttons/CancelButton.component # packages/ru.cg.webbpm.packages.base.resources/component/buttons/ClearFilterButton.component # packages/ru.cg.webbpm.packages.base.resources/component/buttons/DeleteButton.component # packages/ru.cg.webbpm.packages.base.resources/component/buttons/DownloadButton.component # packages/ru.cg.webbpm.packages.base.resources/component/buttons/ErrorButton.component # packages/ru.cg.webbpm.packages.base.resources/component/buttons/ExecProcessButton.component # packages/ru.cg.webbpm.packages.base.resources/component/buttons/ExecuteSqlButton.component # packages/ru.cg.webbpm.packages.base.resources/component/buttons/FilterButton.component # packages/ru.cg.webbpm.packages.base.resources/component/buttons/NavigationButton.component # packages/ru.cg.webbpm.packages.base.resources/component/buttons/SaveButton.component # packages/ru.cg.webbpm.packages.base.resources/component/buttons/SelectButton.component # packages/ru.cg.webbpm.packages.base.resources/component/buttons/SignButton.component # packages/ru.cg.webbpm.packages.base.resources/component/buttons/StartProcessButton.component # packages/ru.cg.webbpm.packages.base.resources/component/buttons/reporting/EntityGraphReportingButton.component # packages/ru.cg.webbpm.packages.base.resources/component/buttons/reporting/FormReportingButton.component # packages/ru.cg.webbpm.packages.base.resources/component/containers/CollapsiblePanel.component # packages/ru.cg.webbpm.packages.base.resources/component/containers/Dialog.component # packages/ru.cg.webbpm.packages.base.resources/component/containers/DropDown.component # packages/ru.cg.webbpm.packages.base.resources/component/containers/FieldSet.component # packages/ru.cg.webbpm.packages.base.resources/component/containers/FilterGroup.component # packages/ru.cg.webbpm.packages.base.resources/component/containers/Form.component # packages/ru.cg.webbpm.packages.base.resources/component/containers/HBox.component # packages/ru.cg.webbpm.packages.base.resources/component/containers/TabContainer.component # packages/ru.cg.webbpm.packages.base.resources/component/containers/TabItem.component # packages/ru.cg.webbpm.packages.base.resources/component/containers/VBox.component # packages/ru.cg.webbpm.packages.base.resources/component/containers/Window.component # packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/EditableGrid.component # packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/AutocompleteGridColumn.component # packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/CheckBoxGridColumn.component # packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/ComboBoxGridColumn.component # packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/DateTimePickerGridColumn.component # packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/MoneyFieldGridColumn.component # packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/NumberFieldGridColumn.component # packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/OneToManyGridColumn.component # packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/OneToManyGridColumnV2.component # packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/ReadonlyClientGridColumn.component # packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/ReadonlyServerGridColumn.component # packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/StaticComboBoxGridColumn.component # packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/TextAreaGridColumn.component # packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/TextFieldGridColumn.component # packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/TimePickerGridColumn.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/Address.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/Autocomplete.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/CheckBox.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/ComboBox.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/DateTimePicker.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/EditableOneToMany.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/FilePreview.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/FileUpload.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/ManyToMany.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/ManyToManyField.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/MoneyField.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/NumberField.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/OneToMany.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/OneToManyV2.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/RadioButton.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/SignVerification.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/StaticComboBox.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/StaticRadioButton.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/Text.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/TextArea.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/TextField.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/TimePicker.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/TreeField.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/editableonetomany/EditableGrid.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/editableonetomany/Form.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/fileupload/FileUploadField.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterAddress.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterAutocomplete.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterBoolean.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterCheckBox.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterComboBox.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterDateTimePicker.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterNumberField.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterRadioButton.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterStaticComboBox.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterTextArea.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterTextField.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/treefield/LinkField.component # packages/ru.cg.webbpm.packages.base.resources/component/fields/treefield/MultiValueField.component # packages/ru.cg.webbpm.packages.base.resources/component/grids/Grid.component # packages/ru.cg.webbpm.packages.base.resources/component/grids/GridV2.component # packages/ru.cg.webbpm.packages.base.resources/component/grids/GridV2Column.component # packages/ru.cg.webbpm.packages.base.resources/component/grids/GridV2Group.component # packages/ru.cg.webbpm.packages.base.resources/component/grids/PagingGrid.component # packages/ru.cg.webbpm.packages.base.resources/component/grids/TreeGrid.component # packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/ActionController.component # packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/Calendar.component # packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/Chart.component # packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/ChartV2.component # packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/EventCalendar.component # packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/GanttChart.component # packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/HyperLink.component # packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/IFrame.component # packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/InnerHtml.component # packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/MenuGroup.component # packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/MenuItem.component # packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/ValidationController.component # packages/ru.cg.webbpm.packages.base.resources/converters/converters.jar # packages/ru.cg.webbpm.packages.base.resources/metadata/java.metadata # packages/ru.cg.webbpm.packages.base.resources/metadata/typescript.metadata.json # packages/ru.cg.webbpm.packages.base.resources/process-instance/ProcessInstance.component # packages/ru.cg.webbpm.packages.base.resources/process-instance/ProcessInstanceDiagram.component # packages/ru.cg.webbpm.packages.base.resources/process-instance/ProcessInstanceList.component # packages/ru.cg.webbpm.packages.base.resources/user-management/Groups.component # packages/ru.cg.webbpm.packages.base.resources/user-management/GroupsCreate.component # packages/ru.cg.webbpm.packages.base.resources/user-management/GroupsEdit.component # packages/ru.cg.webbpm.packages.base.resources/user-management/OrganizationEdit.component # packages/ru.cg.webbpm.packages.base.resources/user-management/Organizations.component # packages/ru.cg.webbpm.packages.base.resources/user-management/Roles.component # packages/ru.cg.webbpm.packages.base.resources/user-management/RolesEdit.component # packages/ru.cg.webbpm.packages.base.resources/user-management/SecurityFeatures.component # packages/ru.cg.webbpm.packages.base.resources/user-management/StaticRouteNavigationButton.component # packages/ru.cg.webbpm.packages.base.resources/user-management/StaticRouteSelectButton.component # packages/ru.cg.webbpm.packages.base.resources/user-management/UserForm.component # packages/ru.cg.webbpm.packages.base.resources/user-management/Users.component # packages/ru.cg.webbpm.packages.base.resources/user-management/UsersCreate.component # packages/ru.cg.webbpm.packages.base.resources/user-management/UsersEdit.component # pom.xml # resources/src/main/resources/business-model/Журнал взаимодействия.page # resources/src/main/resources/business-model/Информация об организации.page # resources/src/main/resources/business-model/Личный кабинет юр лица.page # resources/src/main/resources/business-model/Процессы/process-instance-list.page # resources/src/main/resources/business-model/Процессы/process-instance.page # resources/src/main/resources/business-model/Управление пользователями/Группы редактирование.page # resources/src/main/resources/business-model/Управление пользователями/Группы создание.page # resources/src/main/resources/business-model/Управление пользователями/Группы.page # resources/src/main/resources/business-model/Управление пользователями/Организации.page # resources/src/main/resources/business-model/Управление пользователями/Организация редактирование(создание).page # resources/src/main/resources/business-model/Управление пользователями/Пользователи редактирование.page # resources/src/main/resources/business-model/Управление пользователями/Пользователи создание.page # resources/src/main/resources/business-model/Управление пользователями/Пользователи.page # resources/src/main/resources/business-model/Управление пользователями/Роли редактирование (создание).page # resources/src/main/resources/business-model/Управление пользователями/Роли.page # resources/src/main/resources/business-model/Управление пользователями/Функции безопасности.page # resources/src/main/resources/overrides/0f470331-dfb0-4f10-b748-c9a7f33d31d9.component.override # resources/src/main/resources/overrides/0f8d0a8b-8014-4367-8ff3-7f049c284978.component.override # resources/src/main/resources/overrides/16071adb-3bdf-4c33-b29b-886876016415.component.override # resources/src/main/resources/overrides/38c2de2f-c5dd-413e-babf-ce54cb4e5279.component.override # resources/src/main/resources/overrides/4e314e88-02d6-4b0e-b7a7-15a36bdeb682.component.override # resources/src/main/resources/overrides/57537dbd-c468-4c2d-99df-924b5ba018d6.component.override # resources/src/main/resources/overrides/5cc0e63d-f697-47a8-a9dc-3170f1a99721.component.override # resources/src/main/resources/overrides/5f9c58f8-9ee1-4df3-b93c-e48534e798db.component.override # resources/src/main/resources/overrides/67605d63-1081-423b-b6b5-727ecfce2ca1.component.override # resources/src/main/resources/overrides/76e91ef4-d2ef-4662-96ad-84c0dae0ecff.component.override # resources/src/main/resources/overrides/7a57e082-99e3-4453-a2df-d5ffafa2c019.component.override # resources/src/main/resources/overrides/8e1d9023-42c0-4960-9c59-02f4f0c2e4dd.component.override # resources/src/main/resources/overrides/a4d442cf-72a8-431e-815a-490959083787.component.override # resources/src/main/resources/overrides/c4b48815-f449-48fe-9ae0-dec9b6f4c53c.component.override # resources/src/main/resources/overrides/ca7390f1-1891-4161-b8ae-ef66de5776b7.component.override # resources/src/main/resources/overrides/ed47cfae-64da-4360-8f61-1087179ad78b.component.override # resources/src/main/resources/overrides/fe225a1a-1c03-485e-a069-18b92ab4f7f7.component.override
This commit is contained in:
commit
90b7c2c122
189 changed files with 11930 additions and 2237 deletions
|
|
@ -99,6 +99,10 @@
|
|||
<groupId>org.springframework.security</groupId>
|
||||
<artifactId>spring-security-config</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.kafka</groupId>
|
||||
<artifactId>spring-kafka</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.cg.webbpm.modules</groupId>
|
||||
<artifactId>inject</artifactId>
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import org.springframework.context.annotation.Configuration;
|
|||
import org.springframework.context.annotation.EnableAspectJAutoProxy;
|
||||
import org.springframework.context.annotation.FilterType;
|
||||
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
|
||||
import org.springframework.retry.annotation.EnableRetry;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
|
||||
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
|
||||
|
|
@ -34,13 +35,14 @@ import org.springframework.web.servlet.config.annotation.EnableWebMvc;
|
|||
"component.addresses",
|
||||
"gen",
|
||||
"ru.cg",
|
||||
"ru.micord"
|
||||
"ru.micord",
|
||||
}, excludeFilters = {
|
||||
@ComponentScan.Filter(type = FilterType.REGEX, pattern = "security.WebSecurityConfig")
|
||||
})
|
||||
@EnableAspectJAutoProxy(proxyTargetClass = true)
|
||||
@EnableWebMvc
|
||||
@EnableScheduling
|
||||
@EnableRetry
|
||||
public class AppConfig {
|
||||
|
||||
@Bean
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
import javax.servlet.MultipartConfigElement;
|
||||
import javax.servlet.ServletContext;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.ServletRegistration;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
|
||||
import org.springframework.web.util.IntrospectorCleanupListener;
|
||||
|
||||
|
|
@ -10,6 +13,13 @@ import org.springframework.web.util.IntrospectorCleanupListener;
|
|||
*/
|
||||
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
|
||||
|
||||
@Value("${ervu.fileupload.max_file_size}")
|
||||
private int maxFileSize;
|
||||
@Value("${ervu.fileupload.max_request_size}")
|
||||
private int maxRequestSize;
|
||||
@Value("${ervu.fileupload.file_size_threshold}")
|
||||
private int fileSizeThreshold;
|
||||
|
||||
public void onStartup(ServletContext servletContext) throws ServletException {
|
||||
super.onStartup(servletContext);
|
||||
servletContext.addListener(new IntrospectorCleanupListener());
|
||||
|
|
@ -28,4 +38,14 @@ public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServlet
|
|||
protected Class<?>[] getServletConfigClasses() {
|
||||
return new Class[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void customizeRegistration(ServletRegistration.Dynamic registration) {
|
||||
MultipartConfigElement multipartConfigElement = new MultipartConfigElement(
|
||||
"/tmp",
|
||||
maxFileSize,
|
||||
maxRequestSize,
|
||||
fileSizeThreshold);
|
||||
registration.setMultipartConfig(multipartConfigElement);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
60
backend/src/main/java/ervu/KafkaProducerConfig.java
Normal file
60
backend/src/main/java/ervu/KafkaProducerConfig.java
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
package ervu;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.kafka.clients.CommonClientConfigs;
|
||||
import org.apache.kafka.clients.producer.ProducerConfig;
|
||||
import org.apache.kafka.common.config.SaslConfigs;
|
||||
import org.apache.kafka.common.serialization.StringSerializer;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.kafka.core.DefaultKafkaProducerFactory;
|
||||
import org.springframework.kafka.core.KafkaTemplate;
|
||||
import org.springframework.kafka.core.ProducerFactory;
|
||||
|
||||
/**
|
||||
* @author Alexandr Shalaginov
|
||||
*/
|
||||
@Configuration
|
||||
public class KafkaProducerConfig {
|
||||
@Value("${kafka.send.url}")
|
||||
private String kafkaUrl;
|
||||
@Value("${kafka.send.security.protocol}")
|
||||
private String securityProtocol;
|
||||
@Value("${kafka.send.login.module:org.apache.kafka.common.security.scram.ScramLoginModule}")
|
||||
private String loginModule;
|
||||
@Value("${kafka.send.username}")
|
||||
private String username;
|
||||
@Value("${kafka.send.password}")
|
||||
private String password;
|
||||
@Value("${kafka.sasl.mechanism}")
|
||||
private String saslMechanism;
|
||||
|
||||
@Bean
|
||||
public ProducerFactory<String, String> producerFactory() {
|
||||
return new DefaultKafkaProducerFactory<>(producerConfigs());
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Map<String, Object> producerConfigs() {
|
||||
Map<String, Object> props = new HashMap<>();
|
||||
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, this.kafkaUrl);
|
||||
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
|
||||
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
|
||||
|
||||
props.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, securityProtocol);
|
||||
props.put(SaslConfigs.SASL_JAAS_CONFIG, loginModule + " required username=\""
|
||||
+ username + "\" password=\"" + password + "\";");
|
||||
props.put(SaslConfigs.SASL_MECHANISM, saslMechanism);
|
||||
|
||||
return props;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public KafkaTemplate<String, String> kafkaTemplate() {
|
||||
return new KafkaTemplate<>(producerFactory());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
package ervu.client.fileupload;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.Authenticator;
|
||||
import java.net.PasswordAuthentication;
|
||||
import java.net.URI;
|
||||
import java.net.http.HttpClient;
|
||||
import java.net.http.HttpRequest;
|
||||
import java.net.http.HttpResponse;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.retry.annotation.Backoff;
|
||||
import org.springframework.retry.annotation.Retryable;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
/**
|
||||
* @author Alexandr Shalaginov
|
||||
*/
|
||||
@Component
|
||||
public class FileUploadWebDavClient {
|
||||
private static final Logger logger = LoggerFactory.getLogger(FileUploadWebDavClient.class);
|
||||
|
||||
@Retryable(value = {IOException.class, InterruptedException.class}, backoff = @Backoff(delay = 500L))
|
||||
public boolean webDavUploadFile(String url, String username, String password, MultipartFile multipartFile) {
|
||||
try {
|
||||
HttpClient httpClient = HttpClient.newBuilder()
|
||||
.authenticator(new Authenticator() {
|
||||
@Override
|
||||
protected PasswordAuthentication getPasswordAuthentication() {
|
||||
return new PasswordAuthentication(username, password.toCharArray());
|
||||
}
|
||||
})
|
||||
.build();
|
||||
|
||||
HttpRequest httpRequest = HttpRequest.newBuilder().uri(URI.create(url))
|
||||
.PUT(HttpRequest.BodyPublishers.ofByteArray(multipartFile.getBytes())).build();
|
||||
|
||||
HttpResponse<String> response = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
|
||||
logger.debug("Response starus code: {}", response.statusCode());
|
||||
return (response.statusCode() >= 200) && (response.statusCode() <= 202);
|
||||
}
|
||||
catch (IOException | InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
package ervu.controller;
|
||||
|
||||
import ervu.service.fileupload.EmployeeInfoFileUploadService;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
/**
|
||||
* @author Alexandr Shalaginov
|
||||
*/
|
||||
@RestController
|
||||
public class EmployeeInfoFileUploadController {
|
||||
private final EmployeeInfoFileUploadService fileUploadService;
|
||||
|
||||
public EmployeeInfoFileUploadController(EmployeeInfoFileUploadService fileUploadService) {
|
||||
this.fileUploadService = fileUploadService;
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/employee/document", method = RequestMethod.POST)
|
||||
public ResponseEntity<?> saveEmployeeInformationFile(@RequestParam("file") MultipartFile multipartFile,
|
||||
@RequestHeader("X-Employee-Info-File-Form-Type") String formType) {
|
||||
if (this.fileUploadService.saveEmployeeInformationFile(multipartFile, formType)) {
|
||||
return ResponseEntity.ok("File successfully uploaded.");
|
||||
}
|
||||
else {
|
||||
return ResponseEntity.internalServerError().body("An error occurred while uploading file.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
package ervu.service.fileupload;
|
||||
|
||||
/**
|
||||
* @author Alexandr Shalaginov
|
||||
*/
|
||||
public enum EmployeeInfoFileFormType {
|
||||
FORM_2("2", "Изменения сведений сотрудников, необходимых для ведения воинского учета"),
|
||||
FORM_9("9", "Сведение о приеме на работу (увольнении), зачислении в образовательное учреждение (отчислении)"),
|
||||
FORM_10("10", "Сообщение о гражданах, не состоящих, но обязанных состоять на воинском учете"),
|
||||
FORM_11("11", "Ежегодное предоставление списка граждан мужского пола, подлежащих постановке на воинский учет в следующем году по достижении 17-летнего возраста"),
|
||||
FORM_12("12", "Ежегодное предоставление списка сотрудников/обучающихся в организации, подлежащих воинскому учету");
|
||||
|
||||
private String filePatternCode;
|
||||
private String filePatternName;
|
||||
|
||||
EmployeeInfoFileFormType(String filePatternCode, String filePatternName) {
|
||||
this.filePatternCode = filePatternCode;
|
||||
this.filePatternName = filePatternName;
|
||||
}
|
||||
|
||||
public String getFilePatternCode() {
|
||||
return filePatternCode;
|
||||
}
|
||||
|
||||
public String getFilePatternName() {
|
||||
return filePatternName;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,106 @@
|
|||
package ervu.service.fileupload;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import ervu.client.fileupload.FileUploadWebDavClient;
|
||||
import ervu.service.fileupload.model.EmployeeInfoKafkaMessage;
|
||||
import org.apache.kafka.clients.producer.ProducerRecord;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.kafka.core.KafkaTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
/**
|
||||
* @author Alexandr Shalaginov
|
||||
*/
|
||||
@Service
|
||||
public class EmployeeInfoFileUploadService {
|
||||
private static final Logger logger = LoggerFactory.getLogger(EmployeeInfoFileUploadService.class);
|
||||
|
||||
private final FileUploadWebDavClient fileWebDavUploadClient;
|
||||
private final EmployeeInfoKafkaMessageService employeeInfoKafkaMessageService;
|
||||
private final KafkaTemplate<String, String> kafkaTemplate;
|
||||
|
||||
@Value("${kafka.send.message.topic.name:employee-files}")
|
||||
private String kafkaTopicName;
|
||||
@Value("${file.webdav.upload.url:http://localhost:5757}")
|
||||
private String url;
|
||||
@Value("${file.webdav.upload.username}")
|
||||
private String username;
|
||||
@Value("${file.webdav.upload.password}")
|
||||
private String password;
|
||||
|
||||
public EmployeeInfoFileUploadService(
|
||||
FileUploadWebDavClient fileWebDavUploadClient,
|
||||
EmployeeInfoKafkaMessageService employeeInfoKafkaMessageService, KafkaTemplate<String, String> kafkaTemplate) {
|
||||
this.fileWebDavUploadClient = fileWebDavUploadClient;
|
||||
this.employeeInfoKafkaMessageService = employeeInfoKafkaMessageService;
|
||||
this.kafkaTemplate = kafkaTemplate;
|
||||
}
|
||||
|
||||
public boolean saveEmployeeInformationFile(MultipartFile multipartFile, String formType) {
|
||||
String fileUploadUrl = this.url + "/" + getNewFilename(multipartFile.getOriginalFilename());
|
||||
String departureDateTime = getDepartureDateTime();
|
||||
|
||||
if (this.fileWebDavUploadClient.webDavUploadFile(fileUploadUrl, username, password, multipartFile)) {
|
||||
String jsonMessage = getJsonKafkaMessage(
|
||||
employeeInfoKafkaMessageService.getKafkaMessage(
|
||||
fileUploadUrl,
|
||||
multipartFile.getOriginalFilename(),
|
||||
EmployeeInfoFileFormType.valueOf(formType),
|
||||
departureDateTime
|
||||
)
|
||||
);
|
||||
return sendMessage(jsonMessage);
|
||||
}
|
||||
else {
|
||||
logger.error("Fail upload file: {}", multipartFile.getOriginalFilename());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean sendMessage(String message) {
|
||||
ProducerRecord<String, String> record = new ProducerRecord<>(this.kafkaTopicName, message);
|
||||
try {
|
||||
this.kafkaTemplate.send(record).get();
|
||||
logger.debug("Success send record: {}", record);
|
||||
return true;
|
||||
}
|
||||
catch (Exception exception) {
|
||||
logger.error("Fail send message.", exception);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private String getNewFilename(String oldFilename) {
|
||||
return UUID.randomUUID() + getFileExtension(oldFilename);
|
||||
}
|
||||
|
||||
private String getFileExtension(String filename) {
|
||||
int lastIndexOf = filename.lastIndexOf(".");
|
||||
if (lastIndexOf == -1) {
|
||||
return "";
|
||||
}
|
||||
return filename.substring(lastIndexOf);
|
||||
}
|
||||
|
||||
private String getJsonKafkaMessage(EmployeeInfoKafkaMessage employeeInfoKafkaMessage) {
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
try {
|
||||
return mapper.writeValueAsString(employeeInfoKafkaMessage);
|
||||
}
|
||||
catch (JsonProcessingException e) {
|
||||
throw new RuntimeException(String.format("Fail get json from: %s", employeeInfoKafkaMessage), e);
|
||||
}
|
||||
}
|
||||
|
||||
private String getDepartureDateTime() {
|
||||
return LocalDateTime.now().format(DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm"));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
package ervu.service.fileupload;
|
||||
|
||||
import ervu.service.fileupload.model.*;
|
||||
import esia.model.MillitaryRegistrationPersonModel;
|
||||
import esia.model.OrganizationModel;
|
||||
import esia.service.UlDataService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author Alexandr Shalaginov
|
||||
*/
|
||||
@Service
|
||||
public class EmployeeInfoKafkaMessageService {
|
||||
private final UlDataService ulDataService;
|
||||
|
||||
public EmployeeInfoKafkaMessageService(UlDataService ulDataService) {
|
||||
this.ulDataService = ulDataService;
|
||||
}
|
||||
|
||||
public EmployeeInfoKafkaMessage getKafkaMessage(String fileNameBase, String fileName,
|
||||
EmployeeInfoFileFormType formType, String departureDateTime) {
|
||||
return new EmployeeInfoKafkaMessage(
|
||||
getOrgInfo(),
|
||||
getSenderInfo(),
|
||||
getFileInfo(
|
||||
fileNameBase,
|
||||
fileName,
|
||||
formType,
|
||||
departureDateTime
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
private OrgInfo getOrgInfo() {
|
||||
OrganizationModel organizationModel = ulDataService.getOrganizationModel();
|
||||
return new OrgInfo(
|
||||
organizationModel.getShortName(),
|
||||
organizationModel.getLeg(),
|
||||
organizationModel.getLegName(),
|
||||
organizationModel.getOgrn(),
|
||||
organizationModel.getInn(),
|
||||
organizationModel.getKpp()
|
||||
);
|
||||
}
|
||||
|
||||
private SenderInfo getSenderInfo() {
|
||||
MillitaryRegistrationPersonModel personModel = ulDataService.getPersonModel();
|
||||
return new SenderInfo(
|
||||
personModel.getLastName(),
|
||||
personModel.getFirstName(),
|
||||
personModel.getMiddleName(),
|
||||
personModel.getBirthday(),
|
||||
personModel.getRoleCode(),
|
||||
personModel.getRoleName(),
|
||||
personModel.getSnils(),
|
||||
personModel.getIdERN(),
|
||||
new PassportInfo(
|
||||
personModel.getPassportSeries(),
|
||||
personModel.getPassportNumber(),
|
||||
personModel.getPassportIssueDate()
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
private FileInfo getFileInfo(String fileNameBase, String fileName,
|
||||
EmployeeInfoFileFormType formType, String departureDateTime) {
|
||||
return new FileInfo(
|
||||
fileNameBase,
|
||||
fileName,
|
||||
formType.getFilePatternCode(),
|
||||
formType.getFilePatternName(),
|
||||
departureDateTime
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
package ervu.service.fileupload.model;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @author Alexandr Shalaginov
|
||||
*/
|
||||
public class EmployeeInfoKafkaMessage {
|
||||
private final OrgInfo orgInfo;
|
||||
private final SenderInfo senderInfo;
|
||||
private final FileInfo fileInfo;
|
||||
|
||||
public EmployeeInfoKafkaMessage(OrgInfo orgInfo, SenderInfo senderInfo, FileInfo fileInfo) {
|
||||
this.orgInfo = orgInfo;
|
||||
this.senderInfo = senderInfo;
|
||||
this.fileInfo = fileInfo;
|
||||
}
|
||||
|
||||
public OrgInfo getOrgInfo() {
|
||||
return orgInfo;
|
||||
}
|
||||
|
||||
public SenderInfo getSenderInfo() {
|
||||
return senderInfo;
|
||||
}
|
||||
|
||||
public FileInfo getFileInfo() {
|
||||
return fileInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
EmployeeInfoKafkaMessage that = (EmployeeInfoKafkaMessage) o;
|
||||
return Objects.equals(orgInfo, that.orgInfo) && Objects.equals(senderInfo,
|
||||
that.senderInfo
|
||||
) && Objects.equals(fileInfo, that.fileInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(orgInfo, senderInfo, fileInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "KafkaMessage{" +
|
||||
"orgInfo=" + orgInfo +
|
||||
", senderInfo=" + senderInfo +
|
||||
", fileInfo=" + fileInfo +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
package ervu.service.fileupload.model;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @author Alexandr Shalaginov
|
||||
*/
|
||||
public class FileInfo {
|
||||
private final String fileNameBase;
|
||||
private final String fileName;
|
||||
private final String filePatternCode;
|
||||
private final String filePatternName;
|
||||
private final String departureDateTime;
|
||||
|
||||
public FileInfo(String fileNameBase, String fileName, String filePatternCode,
|
||||
String filePatternName, String departureDateTime) {
|
||||
this.fileNameBase = fileNameBase;
|
||||
this.fileName = fileName;
|
||||
this.filePatternCode = filePatternCode;
|
||||
this.filePatternName = filePatternName;
|
||||
this.departureDateTime = departureDateTime;
|
||||
}
|
||||
|
||||
public String getFileNameBase() {
|
||||
return fileNameBase;
|
||||
}
|
||||
|
||||
public String getFileName() {
|
||||
return fileName;
|
||||
}
|
||||
|
||||
public String getFilePatternCode() {
|
||||
return filePatternCode;
|
||||
}
|
||||
|
||||
public String getFilePatternName() {
|
||||
return filePatternName;
|
||||
}
|
||||
|
||||
public String getDepartureDateTime() {
|
||||
return departureDateTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
FileInfo fileInfo = (FileInfo) o;
|
||||
return Objects.equals(fileNameBase, fileInfo.fileNameBase) && Objects.equals(
|
||||
fileName, fileInfo.fileName) && Objects.equals(filePatternCode,
|
||||
fileInfo.filePatternCode
|
||||
) && Objects.equals(filePatternName, fileInfo.filePatternName)
|
||||
&& Objects.equals(departureDateTime, fileInfo.departureDateTime);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(fileNameBase, fileName, filePatternCode, filePatternName,
|
||||
departureDateTime
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "FileInfo{" +
|
||||
"fileNameBase='" + fileNameBase + '\'' +
|
||||
", fileName='" + fileName + '\'' +
|
||||
", filePatternCode='" + filePatternCode + '\'' +
|
||||
", filePatternName='" + filePatternName + '\'' +
|
||||
", departureDateTime='" + departureDateTime + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
package ervu.service.fileupload.model;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @author Alexandr Shalaginov
|
||||
*/
|
||||
public class OrgInfo {
|
||||
private final String orgName;
|
||||
private final String orgTypeCode;
|
||||
private final String orgTypeName;
|
||||
private final String ogrn;
|
||||
private final String inn;
|
||||
private final String kpp;
|
||||
|
||||
public OrgInfo(String orgName, String orgTypeCode, String orgTypeName, String ogrn, String inn,
|
||||
String kpp) {
|
||||
this.orgName = orgName;
|
||||
this.orgTypeCode = orgTypeCode;
|
||||
this.orgTypeName = orgTypeName;
|
||||
this.ogrn = ogrn;
|
||||
this.inn = inn;
|
||||
this.kpp = kpp;
|
||||
}
|
||||
|
||||
public String getOrgName() {
|
||||
return orgName;
|
||||
}
|
||||
|
||||
public String getOrgTypeCode() {
|
||||
return orgTypeCode;
|
||||
}
|
||||
|
||||
public String getOrgTypeName() {
|
||||
return orgTypeName;
|
||||
}
|
||||
|
||||
public String getOgrn() {
|
||||
return ogrn;
|
||||
}
|
||||
|
||||
public String getInn() {
|
||||
return inn;
|
||||
}
|
||||
|
||||
public String getKpp() {
|
||||
return kpp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
OrgInfo orgInfo = (OrgInfo) o;
|
||||
return Objects.equals(orgName, orgInfo.orgName) && Objects.equals(orgTypeCode,
|
||||
orgInfo.orgTypeCode
|
||||
) && Objects.equals(orgTypeName, orgInfo.orgTypeName) && Objects.equals(ogrn,
|
||||
orgInfo.ogrn
|
||||
) && Objects.equals(inn, orgInfo.inn) && Objects.equals(kpp, orgInfo.kpp);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(orgName, orgTypeCode, orgTypeName, ogrn, inn, kpp);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "OrgInfo{" +
|
||||
"orgName='" + orgName + '\'' +
|
||||
", orgTypeCode='" + orgTypeCode + '\'' +
|
||||
", orgTypeName='" + orgTypeName + '\'' +
|
||||
", ogrn='" + ogrn + '\'' +
|
||||
", inn='" + inn + '\'' +
|
||||
", kpp='" + kpp + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
package ervu.service.fileupload.model;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @author Alexandr Shalaginov
|
||||
*/
|
||||
public class PassportInfo {
|
||||
private final String series;
|
||||
private final String number;
|
||||
private final String issueDate;
|
||||
|
||||
public PassportInfo(String series, String number, String issueDate) {
|
||||
this.series = series;
|
||||
this.number = number;
|
||||
this.issueDate = issueDate;
|
||||
}
|
||||
|
||||
public String getSeries() {
|
||||
return series;
|
||||
}
|
||||
|
||||
public String getNumber() {
|
||||
return number;
|
||||
}
|
||||
|
||||
public String getIssueDate() {
|
||||
return issueDate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
PassportInfo that = (PassportInfo) o;
|
||||
return Objects.equals(series, that.series) && Objects.equals(number,
|
||||
that.number
|
||||
) && Objects.equals(issueDate, that.issueDate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(series, number, issueDate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "PassportInfo{" +
|
||||
"series='" + series + '\'' +
|
||||
", number='" + number + '\'' +
|
||||
", issueDate='" + issueDate + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,106 @@
|
|||
package ervu.service.fileupload.model;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @author Alexandr Shalaginov
|
||||
*/
|
||||
public class SenderInfo {
|
||||
private final String senderLastName;
|
||||
private final String senderFirstName;
|
||||
private final String senderMiddleName;
|
||||
private final String birthDate;
|
||||
private final String senderRoleCode;
|
||||
private final String senderRoleName;
|
||||
private final String snils;
|
||||
private final String idERN;
|
||||
private final PassportInfo document;
|
||||
|
||||
public SenderInfo(String senderLastName, String senderFirstName, String senderMiddleName,
|
||||
String birthDate, String senderRoleCode, String senderRoleName, String snils, String idERN,
|
||||
PassportInfo document) {
|
||||
this.senderLastName = senderLastName;
|
||||
this.senderFirstName = senderFirstName;
|
||||
this.senderMiddleName = senderMiddleName;
|
||||
this.birthDate = birthDate;
|
||||
this.senderRoleCode = senderRoleCode;
|
||||
this.senderRoleName = senderRoleName;
|
||||
this.snils = snils;
|
||||
this.idERN = idERN;
|
||||
this.document = document;
|
||||
}
|
||||
|
||||
public String getSenderLastName() {
|
||||
return senderLastName;
|
||||
}
|
||||
|
||||
public String getSenderFirstName() {
|
||||
return senderFirstName;
|
||||
}
|
||||
|
||||
public String getSenderMiddleName() {
|
||||
return senderMiddleName;
|
||||
}
|
||||
|
||||
public String getBirthDate() {
|
||||
return birthDate;
|
||||
}
|
||||
|
||||
public String getSenderRoleCode() {
|
||||
return senderRoleCode;
|
||||
}
|
||||
|
||||
public String getSenderRoleName() {
|
||||
return senderRoleName;
|
||||
}
|
||||
|
||||
public String getSnils() {
|
||||
return snils;
|
||||
}
|
||||
|
||||
public String getIdERN() {
|
||||
return idERN;
|
||||
}
|
||||
|
||||
public PassportInfo getDocument() {
|
||||
return document;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
SenderInfo that = (SenderInfo) o;
|
||||
return Objects.equals(senderLastName, that.senderLastName) && Objects.equals(
|
||||
senderFirstName, that.senderFirstName) && Objects.equals(senderMiddleName,
|
||||
that.senderMiddleName
|
||||
) && Objects.equals(birthDate, that.birthDate) && Objects.equals(
|
||||
senderRoleCode, that.senderRoleCode) && Objects.equals(senderRoleName,
|
||||
that.senderRoleName
|
||||
) && Objects.equals(snils, that.snils) && Objects.equals(idERN, that.idERN)
|
||||
&& Objects.equals(document, that.document);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(senderLastName, senderFirstName, senderMiddleName, birthDate,
|
||||
senderRoleCode,
|
||||
senderRoleName, snils, idERN, document
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SenderInfo{" +
|
||||
"senderLastName='" + senderLastName + '\'' +
|
||||
", senderFirstName='" + senderFirstName + '\'' +
|
||||
", senderMiddleName='" + senderMiddleName + '\'' +
|
||||
", birthDate='" + birthDate + '\'' +
|
||||
", senderRoleCode='" + senderRoleCode + '\'' +
|
||||
", senderRoleName='" + senderRoleName + '\'' +
|
||||
", snils='" + snils + '\'' +
|
||||
", idERN='" + idERN + '\'' +
|
||||
", document=" + document +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
31
backend/src/main/java/esia/model/ChiefPersonModel.java
Normal file
31
backend/src/main/java/esia/model/ChiefPersonModel.java
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
package esia.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author Eduard Tihomirov
|
||||
*/
|
||||
public class ChiefPersonModel extends PersonModel {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String position;
|
||||
|
||||
private String brhOid;
|
||||
|
||||
public String getPosition() {
|
||||
return position;
|
||||
}
|
||||
|
||||
public void setPosition(String position) {
|
||||
this.position = position;
|
||||
}
|
||||
|
||||
public String getBrhOid() {
|
||||
return brhOid;
|
||||
}
|
||||
|
||||
public void setBrhOid(String brhOid) {
|
||||
this.brhOid = brhOid;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
package esia.model;
|
||||
|
||||
/**
|
||||
* @author Eduard Tihomirov
|
||||
*/
|
||||
public class MillitaryRegistrationPersonModel extends PersonModel {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String email;
|
||||
|
||||
private String mobileNumber;
|
||||
private String roleCode;
|
||||
private String roleName;
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public String getMobileNumber() {
|
||||
return mobileNumber;
|
||||
}
|
||||
|
||||
public void setMobileNumber(String mobileNumber) {
|
||||
this.mobileNumber = mobileNumber;
|
||||
}
|
||||
|
||||
public String getRoleCode() {
|
||||
return roleCode;
|
||||
}
|
||||
|
||||
public void setRoleCode(String roleCode) {
|
||||
this.roleCode = roleCode;
|
||||
}
|
||||
|
||||
public String getRoleName() {
|
||||
return roleName;
|
||||
}
|
||||
|
||||
public void setRoleName(String roleName) {
|
||||
this.roleName = roleName;
|
||||
}
|
||||
}
|
||||
140
backend/src/main/java/esia/model/OrganizationModel.java
Normal file
140
backend/src/main/java/esia/model/OrganizationModel.java
Normal file
|
|
@ -0,0 +1,140 @@
|
|||
package esia.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author Eduard Tihomirov
|
||||
*/
|
||||
public class OrganizationModel implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String orgOid;
|
||||
|
||||
private String fullName;
|
||||
|
||||
private String shortName;
|
||||
|
||||
private String inn;
|
||||
|
||||
private String ogrn;
|
||||
|
||||
private String leg;
|
||||
private String legName;
|
||||
|
||||
private String kpp;
|
||||
|
||||
private String ulAddress;
|
||||
|
||||
private String actualAddress;
|
||||
|
||||
private String zipCode;
|
||||
|
||||
private String mobile;
|
||||
|
||||
private String email;
|
||||
|
||||
public String getOrgOid() {
|
||||
return orgOid;
|
||||
}
|
||||
|
||||
public void setOrgOid(String orgOid) {
|
||||
this.orgOid = orgOid;
|
||||
}
|
||||
|
||||
public String getFullName() {
|
||||
return fullName;
|
||||
}
|
||||
|
||||
public void setFullName(String fullName) {
|
||||
this.fullName = fullName;
|
||||
}
|
||||
|
||||
public String getShortName() {
|
||||
return shortName;
|
||||
}
|
||||
|
||||
public void setShortName(String shortName) {
|
||||
this.shortName = shortName;
|
||||
}
|
||||
|
||||
public String getInn() {
|
||||
return inn;
|
||||
}
|
||||
|
||||
public void setInn(String inn) {
|
||||
this.inn = inn;
|
||||
}
|
||||
|
||||
public String getOgrn() {
|
||||
return ogrn;
|
||||
}
|
||||
|
||||
public void setOgrn(String ogrn) {
|
||||
this.ogrn = ogrn;
|
||||
}
|
||||
|
||||
public String getLeg() {
|
||||
return leg;
|
||||
}
|
||||
|
||||
public void setLeg(String leg) {
|
||||
this.leg = leg;
|
||||
}
|
||||
|
||||
public String getKpp() {
|
||||
return kpp;
|
||||
}
|
||||
|
||||
public void setKpp(String kpp) {
|
||||
this.kpp = kpp;
|
||||
}
|
||||
|
||||
public String getUlAddress() {
|
||||
return ulAddress;
|
||||
}
|
||||
|
||||
public void setUlAddress(String ulAddress) {
|
||||
this.ulAddress = ulAddress;
|
||||
}
|
||||
|
||||
public String getActualAddress() {
|
||||
return actualAddress;
|
||||
}
|
||||
|
||||
public void setActualAddress(String actualAddress) {
|
||||
this.actualAddress = actualAddress;
|
||||
}
|
||||
|
||||
public String getZipCode() {
|
||||
return zipCode;
|
||||
}
|
||||
|
||||
public void setZipCode(String zipCode) {
|
||||
this.zipCode = zipCode;
|
||||
}
|
||||
|
||||
public String getMobile() {
|
||||
return mobile;
|
||||
}
|
||||
|
||||
public void setMobile(String mobile) {
|
||||
this.mobile = mobile;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public String getLegName() {
|
||||
return legName;
|
||||
}
|
||||
|
||||
public void setLegName(String legName) {
|
||||
this.legName = legName;
|
||||
}
|
||||
}
|
||||
115
backend/src/main/java/esia/model/PersonModel.java
Normal file
115
backend/src/main/java/esia/model/PersonModel.java
Normal file
|
|
@ -0,0 +1,115 @@
|
|||
package esia.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author Eduard Tihomirov
|
||||
*/
|
||||
public class PersonModel implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String prsId;
|
||||
|
||||
private String orgOid;
|
||||
|
||||
private String lastName;
|
||||
|
||||
private String firstName;
|
||||
|
||||
private String middleName;
|
||||
private String birthday;
|
||||
private String snils;
|
||||
private String idERN;
|
||||
private String passportSeries;
|
||||
private String passportNumber;
|
||||
private String passportIssueDate;
|
||||
|
||||
public String getPrsId() {
|
||||
return prsId;
|
||||
}
|
||||
|
||||
public void setPrsId(String prsId) {
|
||||
this.prsId = prsId;
|
||||
}
|
||||
|
||||
public String getOrgOid() {
|
||||
return orgOid;
|
||||
}
|
||||
|
||||
public void setOrgOid(String orgOid) {
|
||||
this.orgOid = orgOid;
|
||||
}
|
||||
|
||||
public String getLastName() {
|
||||
return lastName;
|
||||
}
|
||||
|
||||
public void setLastName(String lastName) {
|
||||
this.lastName = lastName;
|
||||
}
|
||||
|
||||
public String getFirstName() {
|
||||
return firstName;
|
||||
}
|
||||
|
||||
public void setFirstName(String firstName) {
|
||||
this.firstName = firstName;
|
||||
}
|
||||
|
||||
public String getMiddleName() {
|
||||
return middleName;
|
||||
}
|
||||
|
||||
public void setMiddleName(String middleName) {
|
||||
this.middleName = middleName;
|
||||
}
|
||||
|
||||
public String getBirthday() {
|
||||
return birthday;
|
||||
}
|
||||
|
||||
public void setBirthday(String birthday) {
|
||||
this.birthday = birthday;
|
||||
}
|
||||
|
||||
public String getSnils() {
|
||||
return snils;
|
||||
}
|
||||
|
||||
public void setSnils(String snils) {
|
||||
this.snils = snils;
|
||||
}
|
||||
|
||||
public String getIdERN() {
|
||||
return idERN;
|
||||
}
|
||||
|
||||
public void setIdERN(String idERN) {
|
||||
this.idERN = idERN;
|
||||
}
|
||||
|
||||
public String getPassportSeries() {
|
||||
return passportSeries;
|
||||
}
|
||||
|
||||
public void setPassportSeries(String passportSeries) {
|
||||
this.passportSeries = passportSeries;
|
||||
}
|
||||
|
||||
public String getPassportNumber() {
|
||||
return passportNumber;
|
||||
}
|
||||
|
||||
public void setPassportNumber(String passportNumber) {
|
||||
this.passportNumber = passportNumber;
|
||||
}
|
||||
|
||||
public String getPassportIssueDate() {
|
||||
return passportIssueDate;
|
||||
}
|
||||
|
||||
public void setPassportIssueDate(String passportIssueDate) {
|
||||
this.passportIssueDate = passportIssueDate;
|
||||
}
|
||||
}
|
||||
17
backend/src/main/java/esia/service/UlDataService.java
Normal file
17
backend/src/main/java/esia/service/UlDataService.java
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
package esia.service;
|
||||
|
||||
import esia.model.ChiefPersonModel;
|
||||
import esia.model.MillitaryRegistrationPersonModel;
|
||||
import esia.model.OrganizationModel;
|
||||
|
||||
/**
|
||||
* @author Eduard Tihomirov
|
||||
*/
|
||||
public interface UlDataService {
|
||||
|
||||
MillitaryRegistrationPersonModel getPersonModel();
|
||||
|
||||
ChiefPersonModel getChiefPersonModel();
|
||||
|
||||
OrganizationModel getOrganizationModel();
|
||||
}
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
package esia.service.impl;
|
||||
|
||||
import esia.model.ChiefPersonModel;
|
||||
import esia.model.MillitaryRegistrationPersonModel;
|
||||
import esia.model.OrganizationModel;
|
||||
import esia.service.UlDataService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author Alexandr Shalaginov
|
||||
*/
|
||||
// TODO: 22.07.2024 delete this after real realisation of UlDataService
|
||||
@Service
|
||||
public class DummyUlDataServiceImpl implements UlDataService {
|
||||
@Override
|
||||
public MillitaryRegistrationPersonModel getPersonModel() {
|
||||
MillitaryRegistrationPersonModel personModel = new MillitaryRegistrationPersonModel();
|
||||
personModel.setPrsId("PrsId");
|
||||
personModel.setOrgOid("OrgOid");
|
||||
personModel.setLastName("Максимов");
|
||||
personModel.setFirstName("Геннадий");
|
||||
personModel.setMiddleName("Валентинович");
|
||||
personModel.setBirthday("18.11.1966");
|
||||
personModel.setSnils("56114152149");
|
||||
personModel.setIdERN("111666898287");
|
||||
personModel.setPassportSeries("1151");
|
||||
personModel.setPassportNumber("166971");
|
||||
personModel.setPassportIssueDate("13.10.2004");
|
||||
personModel.setEmail("Email");
|
||||
personModel.setMobileNumber("");
|
||||
personModel.setRoleCode("admin_123");
|
||||
personModel.setRoleName("Администратор 123");
|
||||
return personModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChiefPersonModel getChiefPersonModel() {
|
||||
return new ChiefPersonModel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrganizationModel getOrganizationModel() {
|
||||
OrganizationModel organizationModel = new OrganizationModel();
|
||||
organizationModel.setOrgOid("OrgOid");
|
||||
organizationModel.setFullName("FullName");
|
||||
organizationModel.setShortName("Звезда");
|
||||
organizationModel.setInn("123456789012");
|
||||
organizationModel.setOgrn("1234567890123");
|
||||
organizationModel.setLeg("2");
|
||||
organizationModel.setLegName("Общество с ограниченной ответственностью");
|
||||
organizationModel.setKpp("123456789012");
|
||||
organizationModel.setUlAddress("UlAddress");
|
||||
organizationModel.setActualAddress("ActualAddress");
|
||||
organizationModel.setZipCode("ZipCode");
|
||||
organizationModel.setMobile("Mobile");
|
||||
organizationModel.setEmail("Email");
|
||||
return organizationModel;
|
||||
}
|
||||
}
|
||||
|
|
@ -28,3 +28,15 @@ xa-data-source add \
|
|||
/system-property=security.password.regex:add(value="^((?=(.*\\d){1,})(?=.*[a-zа-яё])(?=.*[A-ZА-ЯЁ]).{8,})$")
|
||||
/system-property=fias.enable:add(value=false)
|
||||
/system-property=bpmn.enable:add(value=false)
|
||||
/system-property=file.webdav.upload.url:add(value="https://ervu-webdav.k8s.micord.ru")
|
||||
/system-property=file.webdav.upload.username:add(value="test")
|
||||
/system-property=file.webdav.upload.password:add(value="test")
|
||||
/system-property=kafka.send.message.topic.name:add(value="file-upload-v2")
|
||||
/system-property=kafka.send.url:add(value="http://10.10.31.11:32609")
|
||||
/system-property=kafka.send.security.protocol:add(value="SASL_PLAINTEXT")
|
||||
/system-property=kafka.sasl.mechanism:add(value="SCRAM-SHA-256")
|
||||
/system-property=kafka.send.username:add(value="user1")
|
||||
/system-property=kafka.send.password:add(value="Blfi9d2OFG")
|
||||
/system-property=ervu.fileupload.max_file_size:add(value="5242880")
|
||||
/system-property=ervu.fileupload.max_request_size:add(value="6291456")
|
||||
/system-property=ervu.fileupload.file_size_threshold:add(value="0")
|
||||
|
|
|
|||
|
|
@ -54,6 +54,18 @@
|
|||
<property name="security.password.regex" value="^((?=(.*\d){1,})(?=.*[a-zа-яё])(?=.*[A-ZА-ЯЁ]).{8,})$"/>
|
||||
<property name="fias.enable" value="false"/>
|
||||
<property name="com.arjuna.ats.arjuna.allowMultipleLastResources" value="true"/>
|
||||
<property name="file.webdav.upload.url" value="https://ervu-webdav.k8s.micord.ru"/>
|
||||
<property name="file.webdav.upload.username" value="test"/>
|
||||
<property name="file.webdav.upload.password" value="test"/>
|
||||
<property name="kafka.send.message.topic.name" value="file-upload-v2"/>
|
||||
<property name="kafka.send.url" value="http://10.10.31.11:32609"/>
|
||||
<property name="kafka.send.security.protocol" value="SASL_PLAINTEXT"/>
|
||||
<property name="kafka.sasl.mechanism" value="SCRAM-SHA-256"/>
|
||||
<property name="kafka.send.username" value="user1"/>
|
||||
<property name="kafka.send.password" value="Blfi9d2OFG"/>
|
||||
<property name="ervu.fileupload.max_file_size" value="5242880"/>
|
||||
<property name="ervu.fileupload.max_request_size" value="6291456"/>
|
||||
<property name="ervu.fileupload.file_size_threshold" value="0"/>
|
||||
</system-properties>
|
||||
<management>
|
||||
<audit-log>
|
||||
|
|
|
|||
13
frontend/package-lock.json
generated
13
frontend/package-lock.json
generated
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"name": "ervu_lkrp_ul",
|
||||
"name": "webbpm-frontend",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
|
|
@ -1624,9 +1624,9 @@
|
|||
}
|
||||
},
|
||||
"@webbpm/base-package": {
|
||||
"version": "3.177.0-9188-SNAPSHOT-0801192452",
|
||||
"resolved": "https://repo.micord.ru/repository/npm-all/@webbpm/base-package/-/base-package-3.177.0-9188-SNAPSHOT-0801192452.tgz",
|
||||
"integrity": "sha512-pdq3VNitlvQGWC8yYt7oBxpx8x1hE5AR+HrOaRBmoiDUj8/wmbIADJBisUTaRr0n8Bp4J2+q0a2YtPpIZJX5nQ==",
|
||||
"version": "3.177.0",
|
||||
"resolved": "https://repo.micord.ru/repository/npm-all/@webbpm/base-package/-/base-package-3.177.0.tgz",
|
||||
"integrity": "sha512-YgjHHcIR0m/QHujiU17e4NmGmSRxUg88G609KkTGh8XreTXbpYwRxo+3Vr5ttfjk0ND1NMWt6L2TlTLlaCgpkQ==",
|
||||
"requires": {
|
||||
"tslib": "^1.9.0"
|
||||
}
|
||||
|
|
@ -6980,6 +6980,11 @@
|
|||
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
|
||||
"dev": true
|
||||
},
|
||||
"ng2-file-upload": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://repo.micord.ru/repository/npm-all/ng2-file-upload/-/ng2-file-upload-1.3.0.tgz",
|
||||
"integrity": "sha512-Pudxik6LWYsT8hNiEW7RfjgGWAnvfQywxwJYMdt1snTUe+KnlRc/QqPv3QEQW6plXTanuLkYz/TbqilSfSHOsw=="
|
||||
},
|
||||
"ngx-cookie": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://repo.micord.ru/repository/npm-all/ngx-cookie/-/ngx-cookie-3.0.1.tgz",
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
"@angular/platform-browser-dynamic": "7.2.15",
|
||||
"@angular/router": "7.2.15",
|
||||
"@ng-bootstrap/ng-bootstrap": "4.1.1",
|
||||
"@webbpm/base-package": "3.177.0-9188-SNAPSHOT-0801192452",
|
||||
"@webbpm/base-package": "3.178.0",
|
||||
"ag-grid-angular": "29.0.0-micord.4",
|
||||
"ag-grid-community": "29.0.0-micord.4",
|
||||
"angular-calendar": "0.28.28",
|
||||
|
|
@ -50,6 +50,7 @@
|
|||
"jsgantt-improved": "2.0.10-cg",
|
||||
"moment": "2.17.1",
|
||||
"moment-timezone": "0.5.11",
|
||||
"ng2-file-upload": "1.3.0",
|
||||
"ngx-cookie": "3.0.1",
|
||||
"ngx-international-phone-number": "1.0.6",
|
||||
"ngx-toastr": "10.2.0-cg",
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -69,11 +69,9 @@ body.webbpm.ervu_lkrp_ul {
|
|||
.webbpm.ervu_lkrp_ul a {
|
||||
color: var(--color-link);
|
||||
text-decoration: none;
|
||||
&:hover,
|
||||
&:focus,
|
||||
&:active {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul a:is(:hover, :focus, :active) {
|
||||
color: var(--color-link-hover);
|
||||
}
|
||||
}
|
||||
|
||||
.webbpm.ervu_lkrp_ul .header {
|
||||
|
|
@ -81,33 +79,33 @@ body.webbpm.ervu_lkrp_ul {
|
|||
min-height: var(--h-header);
|
||||
border: 0;
|
||||
background-color: var(--color-bg-main);
|
||||
|
||||
.header-logo {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul .header .header-logo {
|
||||
margin-left: var(--w-screen);
|
||||
a {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul .header .header-logo a {
|
||||
color: var(--white);
|
||||
}
|
||||
.logo a {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul .header .header-logo .logo a {
|
||||
width: 62px;
|
||||
height: 40px;
|
||||
background: url(../img/svg/logo.svg) no-repeat 0 50%;
|
||||
}
|
||||
.main-page {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul .header .header-logo .main-page {
|
||||
font-family: 'InterSB';
|
||||
margin-left: calc(62px + 16px);
|
||||
}
|
||||
.header-menu-left {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul .header .header-logo .header-menu-left {
|
||||
font-family: 'InterL';
|
||||
margin-left: 24px;
|
||||
}
|
||||
}
|
||||
.header-menu {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul .header .header-menu {
|
||||
margin-right: var(--w-screen);
|
||||
|
||||
.logout.show {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul .header .header-menu .logout.show {
|
||||
max-width: max-content;
|
||||
}
|
||||
.user-info {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul .header .header-menu .user-info {
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
color: var(--white);
|
||||
|
|
@ -116,61 +114,54 @@ body.webbpm.ervu_lkrp_ul {
|
|||
border: 0;
|
||||
outline: none;
|
||||
cursor: pointer;
|
||||
|
||||
&.dropdown-toggle::before {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul .header .header-menu .user-info.dropdown-toggle::before {
|
||||
display: inline-block;
|
||||
content: "";
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin-right: 8px;
|
||||
background-image: url(../img/svg/user-wt.svg);
|
||||
}
|
||||
&.dropdown-toggle::after {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul .header .header-menu .user-info.dropdown-toggle::after {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
border: 0;
|
||||
background-image: url(../img/svg/arrow-down-wt.svg);
|
||||
}
|
||||
}
|
||||
.dropdown-menu.show {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul .header .header-menu .dropdown-menu.show {
|
||||
top: var(--h-header) !important;
|
||||
padding: 8px 0;
|
||||
border-radius: 4px;
|
||||
background-color: var(--white);
|
||||
box-shadow: 0 6px 16px 0 rgba(230, 230, 230, 0.11), 0 1px 4px 0 #f3f3f3;
|
||||
|
||||
.user-department {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul .header .header-menu .dropdown-menu.show .user-department {
|
||||
color: var(--color-text-primary);
|
||||
font-family: 'InterB';
|
||||
padding: 8px 16px;
|
||||
}
|
||||
& > button, & > a {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul .header .header-menu .dropdown-menu.show > :is(button, a) {
|
||||
position: relative;
|
||||
display: flex;
|
||||
color: var(--color-text-primary);
|
||||
padding: 8px 16px 8px calc(16px + 32px);
|
||||
|
||||
&:hover,
|
||||
&:focus,
|
||||
&:active {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul .header .header-menu .dropdown-menu.show > :is(button, a):is(:hover, :focus, :active) {
|
||||
color: var(--color-link-hover);
|
||||
}
|
||||
&::before {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul .header .header-menu .dropdown-menu.show > :is(button, a)::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 16px;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
}
|
||||
&.exit::before {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul .header .header-menu .dropdown-menu.show > :is(button, a).exit::before {
|
||||
background-image: url(../img/svg/exit.svg);
|
||||
}
|
||||
&.data::before {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul .header .header-menu .dropdown-menu.show > :is(button, a).data::before {
|
||||
background-image: url(../img/svg/data.svg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.webbpm.ervu_lkrp_ul footer {
|
||||
|
|
@ -182,11 +173,10 @@ body.webbpm.ervu_lkrp_ul {
|
|||
.webbpm.ervu_lkrp_ul .container {
|
||||
padding-top: var(--h-header);
|
||||
bottom: var(--h-footer);
|
||||
|
||||
.container-inside {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul .container-inside {
|
||||
font-family: 'Inter';
|
||||
padding: var(--indent-huge) var(--w-screen);
|
||||
}
|
||||
}
|
||||
|
||||
/*@media ((max-width: 780px) or ((orientation: landscape) and (max-device-width : 1024px))) {*/
|
||||
|
|
@ -215,20 +205,18 @@ body.webbpm.ervu_lkrp_ul {
|
|||
--indent-small: 16px;
|
||||
}
|
||||
|
||||
.webbpm.ervu_lkrp_ul .header .header-logo {
|
||||
.main-page {
|
||||
.webbpm.ervu_lkrp_ul .header .header-logo .main-page {
|
||||
display: none;
|
||||
}
|
||||
.header-menu-left {
|
||||
.webbpm.ervu_lkrp_ul .header .header-logo .header-menu-left {
|
||||
margin-left: 40px;
|
||||
a {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul .header .header-logo .header-menu-left a {
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
max-width: 85px;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*----------------- Login ---------------- */
|
||||
|
|
@ -242,76 +230,72 @@ body.webbpm.ervu_lkrp_ul {
|
|||
border-radius: 8px;
|
||||
background-color: var(--white);
|
||||
box-shadow: var(--bg-shadow);
|
||||
}
|
||||
|
||||
h1, h2 {
|
||||
.webbpm.ervu_lkrp_ul :is(.form-signin, .form-signup, .confirm) :is(h1, h2) {
|
||||
color: var(--color-form);
|
||||
font-family: 'InterB';
|
||||
font-size: var(--size-text-subtitle);
|
||||
text-align: left;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.logo {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul :is(.form-signin, .form-signup, .confirm) .logo {
|
||||
position: relative;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
height: 76px;
|
||||
padding: 0 0 0 128px;
|
||||
margin-bottom: 32px;
|
||||
|
||||
&::after {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul :is(.form-signin, .form-signup, .confirm) .logo::after {
|
||||
position: absolute;
|
||||
content: "";
|
||||
left: 0;
|
||||
width: 112px;
|
||||
height: 72px;
|
||||
background-image: url(../img/svg/form-logo.svg);
|
||||
}
|
||||
}
|
||||
.row {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul :is(.form-signin, .form-signup, .confirm) .row {
|
||||
position: relative;
|
||||
margin-bottom: 0;
|
||||
|
||||
& + .row {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul :is(.form-signin, .form-signup, .confirm) .row + .row {
|
||||
margin-top: 20px;
|
||||
}
|
||||
}
|
||||
input {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul :is(.form-signin, .form-signup, .confirm) input {
|
||||
height: 56px;
|
||||
padding-top: 20px;
|
||||
padding-left: 16px;
|
||||
border: 0;
|
||||
border-radius: 8px;
|
||||
background-color: var(--bg-light);
|
||||
|
||||
&[type="password"] {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul :is(.form-signin, .form-signup, .confirm) input[type="password"] {
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
|
||||
& ~ .input-group-append > .input-group-text {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul :is(.form-signin, .form-signup, .confirm) input[type="password"] ~ .input-group-append > .input-group-text {
|
||||
border: 0;
|
||||
background-color: var(--bg-light);
|
||||
}
|
||||
}
|
||||
& + label {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul :is(.form-signin, .form-signup, .confirm) input + label {
|
||||
position: absolute;
|
||||
top: 16px;
|
||||
left: 16px;
|
||||
pointer-events: none;
|
||||
transition: all 200ms;
|
||||
}
|
||||
&:focus + label,
|
||||
&:not(:placeholder-shown) + label {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul :is(.form-signin, .form-signup, .confirm) input:focus + label,
|
||||
.webbpm.ervu_lkrp_ul :is(.form-signin, .form-signup, .confirm) input:not(:placeholder-shown) + label {
|
||||
top: 4px;
|
||||
font-size: var(--indent-extra-mini);
|
||||
z-index: 20;
|
||||
}
|
||||
}
|
||||
.msg-text {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul :is(.form-signin, .form-signup, .confirm) .msg-text {
|
||||
margin-top: 12px;
|
||||
}
|
||||
.btn-box {
|
||||
}
|
||||
.webbpm.ervu_lkrp_ul :is(.form-signin, .form-signup, .confirm) .btn-box {
|
||||
margin-top: 32px;
|
||||
}
|
||||
}
|
||||
|
||||
.webbpm.ervu_lkrp_ul .form-signin .row.registration > * + *,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
<div [id]="getObjectId()"
|
||||
class="ervu-file-upload"
|
||||
[ngbTooltip]="tooltip | emptyIfNull">
|
||||
<div ng2FileDrop
|
||||
[uploader]="uploader"
|
||||
class="file-drop-zone"
|
||||
*ngIf="(!maxFilesToUpload || uploader.queue.length < maxFilesToUpload) && isDropZoneVisible">
|
||||
<span class="select-file-field-text">{{selectFileFieldText}}</span>
|
||||
<button class="select-file-btn" (click)="openFileChooseDialog()">{{selectFileButtonName}}</button>
|
||||
</div>
|
||||
<!-- input is out of file-drop-zone because after change ngIf condition input doesn't firing events -->
|
||||
<input type="file"
|
||||
class="file-input"
|
||||
ng2FileSelect
|
||||
[uploader]="uploader"
|
||||
[multiple]="!maxFilesToUpload || maxFilesToUpload > 1"
|
||||
[accept]="getExtensions()"
|
||||
hidden>
|
||||
<div class="selected-file-list" *ngIf="isFilesListVisible">
|
||||
<div class="selected-file" *ngFor="let item of uploader.queue">
|
||||
<span class="selected-file-name">{{item?.file?.name}}</span>
|
||||
<span class="selected-file-size" *ngIf="displayFileSize">{{item?.file?.size/1024/1024 | number: '.2'}} MB</span>
|
||||
<button class="selected-file-delete-btn" (click)="removeFile(item)">{{removeFileButtonName}}</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="file-upload-progress" *ngIf="displayProgressBar && isProgressBarVisible">
|
||||
<div class="file-upload-progress-bar"
|
||||
role="progressbar"
|
||||
[ngStyle]="{ 'width': uploader.progress + '%' }"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
export enum EmployeeInfoFileFormType {
|
||||
FORM_2,
|
||||
FORM_9,
|
||||
FORM_10,
|
||||
FORM_11,
|
||||
FORM_12
|
||||
}
|
||||
232
frontend/src/ts/ervu/component/fileupload/ErvuFileUpload.ts
Normal file
232
frontend/src/ts/ervu/component/fileupload/ErvuFileUpload.ts
Normal file
|
|
@ -0,0 +1,232 @@
|
|||
import {
|
||||
InputControl,
|
||||
NotNull,
|
||||
Visible,
|
||||
Event,
|
||||
MessagesService,
|
||||
UnsupportedOperationError
|
||||
} from "@webbpm/base-package";
|
||||
import {ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef} from "@angular/core";
|
||||
import {FileItem, FileUploader} from "ng2-file-upload";
|
||||
import {FileLikeObject} from "ng2-file-upload/file-upload/file-like-object.class";
|
||||
import {EmployeeInfoFileFormType} from "./EmployeeInfoFileFormType";
|
||||
|
||||
@Component({
|
||||
moduleId: module.id,
|
||||
selector: "ervu-file-upload",
|
||||
templateUrl: "./../../../../../src/resources/template/ervu/component/ErvuFileUpload.html",
|
||||
changeDetection: ChangeDetectionStrategy.OnPush
|
||||
})
|
||||
export class ErvuFileUpload extends InputControl {
|
||||
@NotNull("true")
|
||||
public selectFileFieldText: string;
|
||||
@NotNull("true")
|
||||
public selectFileButtonName: string;
|
||||
@NotNull("true")
|
||||
public removeFileButtonName: string;
|
||||
public maxFileSizeMb: number;
|
||||
public extensionFilter: string[] = [];
|
||||
public maxFilesToUpload: number;
|
||||
@NotNull("true")
|
||||
public displayFileSize: boolean = false;
|
||||
@NotNull("true")
|
||||
public displayProgressBar: boolean = false;
|
||||
@NotNull("true")
|
||||
public formType: EmployeeInfoFileFormType;
|
||||
|
||||
@Visible("false")
|
||||
public uploader: FileUploader;
|
||||
@Visible("false")
|
||||
public fileAddedEvent: Event<any> = new Event<any>();
|
||||
@Visible("false")
|
||||
public fileDeletedEvent: Event<any> = new Event<any>();
|
||||
@Visible("false")
|
||||
public fileUploadStartEvent: Event<any> = new Event<any>();
|
||||
@Visible("false")
|
||||
public fileUploadEndEvent: Event<any> = new Event<any>();
|
||||
@Visible("false")
|
||||
public fileUploadFailedEvent: Event<any> = new Event<any>();
|
||||
@Visible("false")
|
||||
public isDropZoneVisible: boolean = true;
|
||||
@Visible("false")
|
||||
public isFilesListVisible: boolean = true;
|
||||
@Visible("false")
|
||||
public isProgressBarVisible: boolean = false;
|
||||
|
||||
private fileInputEl: HTMLInputElement;
|
||||
private url: string = '/backend/employee/document';
|
||||
private messagesService: MessagesService;
|
||||
private isUploadErrorOccurred = false;
|
||||
|
||||
constructor(el: ElementRef, cd: ChangeDetectorRef) {
|
||||
super(el, cd);
|
||||
this.uploader = new FileUploader({url: this.url});
|
||||
}
|
||||
|
||||
initialize() {
|
||||
super.initialize();
|
||||
this.messagesService = this.injector.get(MessagesService);
|
||||
|
||||
this.uploader.setOptions({
|
||||
url: this.url,
|
||||
autoUpload: false,
|
||||
filters: [{
|
||||
name: 'extension',
|
||||
fn: (item: any): boolean => {
|
||||
if (!this.extensionFilter.length) {
|
||||
return true;
|
||||
}
|
||||
const fileExtension = item.name.substring(item.name.lastIndexOf('.') + 1, item.name.length);
|
||||
for (let ext of this.extensionFilter) {
|
||||
if (ext.toUpperCase() === fileExtension.toUpperCase()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}],
|
||||
maxFileSize: this.maxFileSizeMb ? this.maxFileSizeMb * 1024 * 1024 : undefined,
|
||||
queueLimit: this.maxFilesToUpload ? this.maxFilesToUpload : undefined,
|
||||
headers: [{
|
||||
name: "X-Employee-Info-File-Form-Type",
|
||||
value: EmployeeInfoFileFormType[this.formType]
|
||||
}]
|
||||
});
|
||||
|
||||
this.setUploaderMethods();
|
||||
}
|
||||
|
||||
ngAfterViewInit() {
|
||||
super.ngAfterViewInit();
|
||||
this.fileInputEl = this.el.nativeElement.querySelector('.file-input');
|
||||
}
|
||||
|
||||
openFileChooseDialog() {
|
||||
this.fileInputEl.click();
|
||||
}
|
||||
|
||||
@Visible()
|
||||
uploadFiles() {
|
||||
this.uploader.uploadAll();
|
||||
}
|
||||
|
||||
removeFile(item: FileItem) {
|
||||
item.remove();
|
||||
this.fileInputEl.value = null;
|
||||
this.fileDeletedEvent.trigger();
|
||||
this.cd.markForCheck();
|
||||
}
|
||||
|
||||
private setUploaderMethods() {
|
||||
this.uploader.onBeforeUploadItem = (fileItem: FileItem) => {
|
||||
this.fileUploadStartEvent.trigger();
|
||||
this.isDropZoneVisible = false;
|
||||
this.isFilesListVisible = false;
|
||||
this.isProgressBarVisible = true;
|
||||
this.cd.markForCheck();
|
||||
};
|
||||
|
||||
this.uploader.onErrorItem = (item: FileItem,
|
||||
response: string) => {
|
||||
this.fileUploadFailedEvent.trigger();
|
||||
this.uploader.cancelAll();
|
||||
this.messagesService.error(`Не удалось отправить следующие файлы: ${item.file.name},`
|
||||
+ ` ${this.uploader.getNotUploadedItems()
|
||||
.map(notUploadeditem => notUploadeditem.file.name)
|
||||
.join(', ')}.`);
|
||||
this.uploader.clearQueue();
|
||||
this.isDropZoneVisible = true;
|
||||
this.isFilesListVisible = true;
|
||||
this.isProgressBarVisible = false;
|
||||
this.isUploadErrorOccurred = true;
|
||||
this.cd.markForCheck();
|
||||
};
|
||||
|
||||
this.uploader.onCompleteAll = () => {
|
||||
if (!this.isUploadErrorOccurred) {
|
||||
this.uploader.clearQueue();
|
||||
this.fileUploadEndEvent.trigger();
|
||||
this.isProgressBarVisible = false;
|
||||
this.cd.markForCheck();
|
||||
}
|
||||
};
|
||||
|
||||
this.uploader.onAfterAddingFile = (fileItem: FileItem) => {
|
||||
this.fileAddedEvent.trigger();
|
||||
}
|
||||
|
||||
this.uploader.onWhenAddingFileFailed = (item: FileLikeObject, filter: any, options: any) => {
|
||||
switch (filter.name) {
|
||||
case "fileSize":
|
||||
this.messagesService.error(`Размер файла ${item.name} превышает предельно допустимый = ${this.maxFileSizeMb} MB`);
|
||||
break;
|
||||
case "queueLimit":
|
||||
this.messagesService.error(`Не удалось добавить файл ${item.name}. `
|
||||
+ `Достигнуто максимальное количество файлов для загрузки = ${this.maxFilesToUpload}`);
|
||||
break;
|
||||
case "extension":
|
||||
this.messagesService.error(`Файл ${item.name} имеет недопустимое расширение.`);
|
||||
break;
|
||||
default:
|
||||
this.messagesService.error(`Не удалось добавить файл ${item.name}.`);
|
||||
}
|
||||
this.fileInputEl.value = null;
|
||||
this.cd.markForCheck();
|
||||
};
|
||||
}
|
||||
|
||||
@Visible()
|
||||
getExtensions(): string {
|
||||
if (this.extensionFilter) {
|
||||
return this.extensionFilter
|
||||
.map(s => '.' + s)
|
||||
.join(',')
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
subscribeToModelChange() {
|
||||
//empty because there is no ngModel here
|
||||
}
|
||||
|
||||
unsubscribeToModelChange() {
|
||||
//empty because there is no ngModel here
|
||||
}
|
||||
|
||||
@Visible()
|
||||
getPresentationValue(): string {
|
||||
let fileNames: string = '';
|
||||
let fileItems: FileItem[] = this.uploader.queue;
|
||||
if (fileItems) {
|
||||
fileItems.forEach((fileItem) => {
|
||||
fileNames += fileItem.file.name;
|
||||
});
|
||||
}
|
||||
return fileNames;
|
||||
}
|
||||
|
||||
@Visible()
|
||||
getValue(): File[] {
|
||||
return this.uploader.queue.map(fileItem => fileItem._file);
|
||||
}
|
||||
|
||||
getValueAsModel(): any {
|
||||
throw new UnsupportedOperationError("Unsupported operation");
|
||||
}
|
||||
|
||||
setValue(value: any): any {
|
||||
throw new UnsupportedOperationError("Unsupported operation");
|
||||
}
|
||||
|
||||
@Visible()
|
||||
public reset() {
|
||||
//don't use super because there is no ngModel here
|
||||
this.uploader.clearQueue();
|
||||
this.fileInputEl.value = null;
|
||||
this.isDropZoneVisible = true;
|
||||
this.isFilesListVisible = true;
|
||||
this.isProgressBarVisible = false;
|
||||
this.isUploadErrorOccurred = false;
|
||||
this.cd.markForCheck();
|
||||
}
|
||||
}
|
||||
|
|
@ -20,6 +20,8 @@ import {InternationalPhoneNumberModule} from "ngx-international-phone-number";
|
|||
import {AppProgressIndicationComponent} from "./component/app-progress-indication.component";
|
||||
import {AppProgressIndicationService} from "./service/app-progress-indication.service";
|
||||
|
||||
import {FileUploadModule} from "ng2-file-upload";
|
||||
import {ErvuFileUpload} from "../../ervu/component/fileupload/ErvuFileUpload";
|
||||
|
||||
registerLocaleData(localeRu);
|
||||
export const DIRECTIVES = [
|
||||
|
|
@ -28,6 +30,7 @@ export const DIRECTIVES = [
|
|||
forwardRef(() => ApplicationVersionComponent),
|
||||
forwardRef(() => AccessDeniedComponent),
|
||||
forwardRef(() => AppProgressIndicationComponent),
|
||||
forwardRef(() => ErvuFileUpload)
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
|
|
@ -41,7 +44,8 @@ export const DIRECTIVES = [
|
|||
ComponentsModule,
|
||||
AgGridModule,
|
||||
RouterModule,
|
||||
InternationalPhoneNumberModule
|
||||
InternationalPhoneNumberModule,
|
||||
FileUploadModule
|
||||
],
|
||||
declarations: [
|
||||
DIRECTIVES
|
||||
|
|
|
|||
|
|
@ -62,7 +62,8 @@
|
|||
'chartjs-adapter-moment': 'npm:chartjs-adapter-moment/dist/chartjs-adapter-moment.js',
|
||||
'tslib': 'npm:tslib/tslib.js',
|
||||
'ngx-international-phone-number': 'npm:ngx-international-phone-number/ngx-international-phone-number.umd.js',
|
||||
'google-libphonenumber': 'npm:google-libphonenumber/dist/libphonenumber.js'
|
||||
'google-libphonenumber': 'npm:google-libphonenumber/dist/libphonenumber.js',
|
||||
'ng2-file-upload': 'npm:ng2-file-upload/bundles/ng2-file-upload.umd.js'
|
||||
},
|
||||
packages: {
|
||||
'webbpm': { main: 'main', defaultExtension: 'js'},
|
||||
|
|
|
|||
|
|
@ -62,7 +62,8 @@
|
|||
'chartjs-adapter-moment': 'npm:chartjs-adapter-moment/dist/chartjs-adapter-moment.js',
|
||||
'tslib': 'npm:tslib/tslib.js',
|
||||
'ngx-international-phone-number': 'npm:ngx-international-phone-number/ngx-international-phone-number.umd.js',
|
||||
'google-libphonenumber': 'npm:google-libphonenumber/dist/libphonenumber.js'
|
||||
'google-libphonenumber': 'npm:google-libphonenumber/dist/libphonenumber.js',
|
||||
'ng2-file-upload': 'npm:ng2-file-upload/bundles/ng2-file-upload.umd.js'
|
||||
},
|
||||
packages: {
|
||||
'preview': { main: './modules/preview/preview.main', defaultExtension: 'js'},
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>ru.cg.webbpm.packages.base</groupId>
|
||||
<artifactId>resources</artifactId>
|
||||
<version>3.177.0-9188-SNAPSHOT</version>
|
||||
<version>3.178.0</version>
|
||||
<organization>
|
||||
<name>Micord</name>
|
||||
</organization>
|
||||
|
|
@ -28,13 +28,13 @@
|
|||
<jooq.version>3.19.3</jooq.version>
|
||||
<jupiter.version>5.10.2</jupiter.version>
|
||||
<enforcer.manageVersions>true</enforcer.manageVersions>
|
||||
<webbpm-platform.version>3.177.0-9188-SNAPSHOT</webbpm-platform.version>
|
||||
<webbpm-platform.version>3.178.0</webbpm-platform.version>
|
||||
<h2.version>1.4.200</h2.version>
|
||||
<build.timestamp>0801193042</build.timestamp>
|
||||
<build.timestamp>0823160217</build.timestamp>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<junit.platform.version>1.10.0</junit.platform.version>
|
||||
<enforcer.manageExclusions>true</enforcer.manageExclusions>
|
||||
<revision>3.177.0-9188-SNAPSHOT</revision>
|
||||
<revision>3.178.0</revision>
|
||||
<metadata.ts.filename>typescript.metadata.json</metadata.ts.filename>
|
||||
<package.repository.url>https://repo.micord.ru</package.repository.url>
|
||||
<maven.build.timestamp.format>MMddHHmmss</maven.build.timestamp.format>
|
||||
|
|
@ -47,19 +47,19 @@
|
|||
<dependency>
|
||||
<groupId>ru.cg.webbpm.packages.base</groupId>
|
||||
<artifactId>converters</artifactId>
|
||||
<version>3.177.0-9188-SNAPSHOT</version>
|
||||
<version>3.178.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.cg.webbpm.packages.base</groupId>
|
||||
<artifactId>backend</artifactId>
|
||||
<version>3.177.0-9188-SNAPSHOT</version>
|
||||
<version>3.178.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.cg.webbpm.packages.base</groupId>
|
||||
<artifactId>frontend</artifactId>
|
||||
<version>3.177.0-9188-SNAPSHOT</version>
|
||||
<version>3.178.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@
|
|||
<ul>
|
||||
|
||||
<li>Образец внешней ссылки: <code>https://www.wildberries.ru/catalog/${sku}/detail.aspx</code></li>
|
||||
<li>Образец внутренней ссылки: <code>products/ru.cg.webbpm.packages.base:resources:jar:3.177.0-9188-SNAPSHOT</code></li>
|
||||
<li>Образец внутренней ссылки: <code>products/ru.cg.webbpm.packages.base:resources:jar:3.178.0</code></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
|
|
|
|||
|
|
@ -4,17 +4,17 @@
|
|||
<description>Base webbpm package</description>
|
||||
<groupId>ru.cg.webbpm.packages.base</groupId>
|
||||
<artifactId>resources</artifactId>
|
||||
<version>3.177.0-9188-SNAPSHOT</version>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<version>3.178.0</version>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
|
||||
<backendModule>
|
||||
<groupId>ru.cg.webbpm.packages.base</groupId>
|
||||
<artifactId>backend</artifactId>
|
||||
<version>3.177.0-9188-SNAPSHOT</version>
|
||||
<version>3.178.0</version>
|
||||
</backendModule>
|
||||
<frontendModule>
|
||||
<packageName>@webbpm/base-package</packageName>
|
||||
<version>3.177.0-9188-SNAPSHOT-0801192452</version>
|
||||
<version>3.178.0</version>
|
||||
</frontendModule>
|
||||
</packageInfo>
|
||||
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка_отмены.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка_очистки_фильтра.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка_удаления.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка_загрузки.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка_вызова_ошибки.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
<documentation>component/buttons/Кнопка_выполнения_бизнес-процесса.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка_выполнения_SQL.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка_для_фильтрации.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка_навигации.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка_сохранения.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка_выбора.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка_подписи.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка_запуска_бизнес-процесса.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/reporting/Кнопка_печати_из_графа_сущности.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/reporting/Кнопка_печати_отчета_из_формы.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/containers/Сворачиваемая_панель.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/containers/Диалог.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/containers/Контейнер_с_кнопками.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/containers/Группа_полей.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/containers/Набор_фильтров.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/containers/Форма.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/containers/Горизонтальный_контейнер.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/containers/Контейнер_вкладок.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/containers/Вкладка.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/containers/Вертикальный_контейнер.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/containers/Окно.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/editable-grids/EditableGrid.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
<localization>META-INF/components/localization/editable-grids/autocomplete</localization>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
<localization>META-INF/components/localization/editable-grids/check-box</localization>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
<localization>META-INF/components/localization/editable-grids/combo-box</localization>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
<localization>META-INF/components/localization/editable-grids/date-time-picker</localization>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
<localization>META-INF/components/localization/editable-grids/money-field</localization>
|
||||
<internal>true</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
<localization>META-INF/components/localization/editable-grids/number-field</localization>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
<localization>META-INF/components/localization/editable-grids/one-to-many</localization>
|
||||
<internal>true</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
<localization>META-INF/components/localization/editable-grids/one-to-many</localization>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -6,11 +6,11 @@
|
|||
<localization>META-INF/components/localization/editable-grids/read-only</localization>
|
||||
<internal>true</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -5,11 +5,11 @@
|
|||
<category>editable-grids</category>
|
||||
<internal>true</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>Статичный_выпадающий_список_колонки_таблицы.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
<localization>META-INF/components/localization/editable-grids/text-area</localization>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
<localization>META-INF/components/localization/editable-grids/text-field</localization>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
<localization>META-INF/components/localization/editable-grids/time-picker</localization>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/ФИАС.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Поле_ввода_с_подбором_значения.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Флаг.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Выпадающий_список.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Дата.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/EditableOneToMany.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Файл.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Файл.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/ManyToMany.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/ManyToManyField.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Денежное_поле.html</documentation>
|
||||
<internal>true</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Числовое_поле.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/OneToMany.html</documentation>
|
||||
<internal>true</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/OneToMany.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Переключатель.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/SignVerification.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Статичный_выпадающий_список.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Статичный_переключатель.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Текст.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Многострочное_поле.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Текстовое_поле.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Время.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/TreeField.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.177.0-9188-SNAPSHOT</studioVersion>
|
||||
<studioVersion>3.178.0</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.177.0-9188-SNAPSHOT</value>
|
||||
<value>3.178.0</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue